summaryrefslogtreecommitdiffstats
path: root/common/store.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'common/store.cpp')
-rw-r--r--common/store.cpp13
1 files changed, 10 insertions, 3 deletions
diff --git a/common/store.cpp b/common/store.cpp
index 9550d3e..1c8620b 100644
--- a/common/store.cpp
+++ b/common/store.cpp
@@ -96,14 +96,21 @@ QPair<typename AggregatingResultEmitter<typename DomainType::Ptr>::Ptr, typenam
96 SinkTraceCtx(ctx) << "Listening for new resources."; 96 SinkTraceCtx(ctx) << "Listening for new resources.";
97 resourceQuery.setFlags(Query::LiveQuery); 97 resourceQuery.setFlags(Query::LiveQuery);
98 } 98 }
99 resourceQuery.setFilter(query.getResourceFilter()); 99
100 //Filter resources by available content types (unless the query already specifies a capability filter)
101 auto resourceFilter = query.getResourceFilter();
102 if (!resourceFilter.propertyFilter.contains(ApplicationDomain::SinkResource::Capabilities::name)) {
103 resourceFilter.propertyFilter.insert(ApplicationDomain::SinkResource::Capabilities::name, Query::Comparator{ApplicationDomain::getTypeName<DomainType>(), Query::Comparator::Contains});
104 }
105 resourceQuery.setFilter(resourceFilter);
106
100 auto result = facade->load(resourceQuery, resourceCtx); 107 auto result = facade->load(resourceQuery, resourceCtx);
101 auto emitter = result.second; 108 auto emitter = result.second;
102 emitter->onAdded([query, aggregatingEmitter, resourceCtx](const ApplicationDomain::SinkResource::Ptr &resource) { 109 emitter->onAdded([=](const ApplicationDomain::SinkResource::Ptr &resource) {
103 SinkTraceCtx(resourceCtx) << "Found new resources: " << resource->identifier(); 110 SinkTraceCtx(resourceCtx) << "Found new resources: " << resource->identifier();
104 const auto resourceType = ResourceConfig::getResourceType(resource->identifier()); 111 const auto resourceType = ResourceConfig::getResourceType(resource->identifier());
105 Q_ASSERT(!resourceType.isEmpty()); 112 Q_ASSERT(!resourceType.isEmpty());
106 queryResource<DomainType>(resourceType, resource->identifier(), query, aggregatingEmitter, resourceCtx).exec(); 113 queryResource<DomainType>(resourceType, resource->identifier(), query, aggregatingEmitter, ctx).exec();
107 }); 114 });
108 emitter->onModified([](const ApplicationDomain::SinkResource::Ptr &) { 115 emitter->onModified([](const ApplicationDomain::SinkResource::Ptr &) {
109 }); 116 });