use of org.apache.cayenne.DataChannelQueryFilter in project cayenne by apache.
the class DataDomainFiltersIT method testOnQuery_Blocking.
@Test
public void testOnQuery_Blocking() {
DataDomain domain = runtime.getDataDomain();
QueryResponse r1 = new ListResponse();
QueryResponse r2 = new ListResponse();
DataChannelQueryFilter f1 = (originatingContext, query, filterChain) -> r1;
DataChannelQueryFilter f2 = (originatingContext, query, filterChain) -> r2;
domain.queryFilters.add(f1);
domain.queryFilters.add(f2);
ObjectSelect<Artist> query = ObjectSelect.query(Artist.class);
QueryResponse response = domain.onQuery(context, query);
assertSame(r2, response);
}
use of org.apache.cayenne.DataChannelQueryFilter in project cayenne by apache.
the class DataDomainFiltersIT method testOnQuery_FilterOrdering.
@Test
public void testOnQuery_FilterOrdering() {
DataDomain domain = runtime.getDataDomain();
List<String> results = new ArrayList<>();
DataChannelQueryFilter f1 = (originatingContext, query, filterChain) -> {
results.add("f1start");
QueryResponse response = filterChain.onQuery(originatingContext, query);
results.add("f1end");
return response;
};
DataChannelQueryFilter f2 = (originatingContext, query, filterChain) -> {
results.add("f2start");
QueryResponse response = filterChain.onQuery(originatingContext, query);
results.add("f2end");
return response;
};
domain.queryFilters.add(f1);
domain.queryFilters.add(f2);
ObjectSelect<Artist> query = ObjectSelect.query(Artist.class);
QueryResponse response = domain.onQuery(context, query);
assertNotNull(response);
assertEquals(4, results.size());
assertEquals("f2start", results.get(0));
assertEquals("f1start", results.get(1));
assertEquals("f1end", results.get(2));
assertEquals("f2end", results.get(3));
}
use of org.apache.cayenne.DataChannelQueryFilter in project cayenne by apache.
the class DataDomainProvider method createAndInitDataDomain.
@SuppressWarnings("deprecation")
protected DataDomain createAndInitDataDomain() throws Exception {
DataChannelDescriptor descriptor = loadDescriptor();
DataDomain dataDomain = createDataDomain(descriptor.getName());
dataDomain.setMaxIdQualifierSize(runtimeProperties.getInt(Constants.SERVER_MAX_ID_QUALIFIER_SIZE_PROPERTY, -1));
dataDomain.setQueryCache(new NestedQueryCache(queryCache));
dataDomain.setEntitySorter(injector.getInstance(EntitySorter.class));
dataDomain.setEventManager(injector.getInstance(EventManager.class));
dataDomain.setDataRowStoreFactory(injector.getInstance(DataRowStoreFactory.class));
dataDomain.initWithProperties(descriptor.getProperties());
for (DataMap dataMap : descriptor.getDataMaps()) {
dataDomain.addDataMap(dataMap);
}
dataDomain.getEntityResolver().applyDBLayerDefaults();
dataDomain.getEntityResolver().setValueObjectTypeRegistry(valueObjectTypeRegistry);
dataDomain.getEntityResolver().setValueComparisionStrategyFactory(valueComparisonStrategyFactory);
for (DataNodeDescriptor nodeDescriptor : descriptor.getNodeDescriptors()) {
addDataNode(dataDomain, nodeDescriptor);
}
// init default node
DataNode defaultNode = null;
if (descriptor.getDefaultNodeName() != null) {
defaultNode = dataDomain.getDataNode(descriptor.getDefaultNodeName());
}
if (defaultNode == null) {
Collection<DataNode> allNodes = dataDomain.getDataNodes();
if (allNodes.size() == 1) {
defaultNode = allNodes.iterator().next();
}
}
if (defaultNode != null) {
logger.info("setting DataNode '" + defaultNode.getName() + "' as default, used by all unlinked DataMaps");
dataDomain.setDefaultNode(defaultNode);
}
// filters are deprecated, used here for backward compatibility
for (DataChannelFilter filter : filters) {
dataDomain.addFilter(filter);
}
for (DataChannelQueryFilter filter : queryFilters) {
dataDomain.addQueryFilter(filter);
}
for (DataChannelSyncFilter filter : syncFilters) {
dataDomain.addSyncFilter(filter);
}
for (Object listener : listeners) {
dataDomain.addListener(listener);
}
return dataDomain;
}
Aggregations