Search in sources :

Example 1 with DataChannelSyncFilter

use of org.apache.cayenne.DataChannelSyncFilter in project cayenne by apache.

the class DataDomainFiltersIT method testOnSync_FilterOrdering.

@Test
public void testOnSync_FilterOrdering() {
    DataDomain domain = runtime.getDataDomain();
    List<String> results = new ArrayList<>();
    DataChannelSyncFilter f1 = (originatingContext, changes, syncType, filterChain) -> {
        results.add("f1start");
        GraphDiff response = filterChain.onSync(originatingContext, changes, syncType);
        results.add("f1end");
        return response;
    };
    DataChannelSyncFilter f2 = (originatingContext, changes, syncType, filterChain) -> {
        results.add("f2start");
        GraphDiff response = filterChain.onSync(originatingContext, changes, syncType);
        results.add("f2end");
        return response;
    };
    domain.syncFilters.add(f1);
    domain.syncFilters.add(f2);
    Artist a = context.newObject(Artist.class);
    a.setArtistName("AAA");
    // testing domain.onSync indirectly
    context.commitChanges();
    assertEquals(4, results.size());
    assertEquals("f2start", results.get(0));
    assertEquals("f1start", results.get(1));
    assertEquals("f1end", results.get(2));
    assertEquals("f2end", results.get(3));
}
Also used : ObjectContext(org.apache.cayenne.ObjectContext) DataChannelSyncFilter(org.apache.cayenne.DataChannelSyncFilter) DataChannelSyncFilterChain(org.apache.cayenne.DataChannelSyncFilterChain) ServerCase(org.apache.cayenne.unit.di.server.ServerCase) Assert.assertNotNull(org.junit.Assert.assertNotNull) Test(org.junit.Test) CayenneProjects(org.apache.cayenne.unit.di.server.CayenneProjects) ArrayList(java.util.ArrayList) Query(org.apache.cayenne.query.Query) Artist(org.apache.cayenne.testdo.testmap.Artist) Assert.assertSame(org.junit.Assert.assertSame) DataChannelQueryFilterChain(org.apache.cayenne.DataChannelQueryFilterChain) List(java.util.List) PostPersist(org.apache.cayenne.annotation.PostPersist) Inject(org.apache.cayenne.di.Inject) GraphDiff(org.apache.cayenne.graph.GraphDiff) QueryResponse(org.apache.cayenne.QueryResponse) DataChannelQueryFilter(org.apache.cayenne.DataChannelQueryFilter) ObjectSelect(org.apache.cayenne.query.ObjectSelect) ServerRuntime(org.apache.cayenne.configuration.server.ServerRuntime) UseServerRuntime(org.apache.cayenne.unit.di.server.UseServerRuntime) Assert.assertEquals(org.junit.Assert.assertEquals) ListResponse(org.apache.cayenne.util.ListResponse) Artist(org.apache.cayenne.testdo.testmap.Artist) GraphDiff(org.apache.cayenne.graph.GraphDiff) ArrayList(java.util.ArrayList) DataChannelSyncFilter(org.apache.cayenne.DataChannelSyncFilter) Test(org.junit.Test)

Example 2 with DataChannelSyncFilter

use of org.apache.cayenne.DataChannelSyncFilter 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;
}
Also used : DataChannelDescriptor(org.apache.cayenne.configuration.DataChannelDescriptor) DataDomain(org.apache.cayenne.access.DataDomain) EntitySorter(org.apache.cayenne.map.EntitySorter) DataChannelFilter(org.apache.cayenne.DataChannelFilter) EventManager(org.apache.cayenne.event.EventManager) DataNodeDescriptor(org.apache.cayenne.configuration.DataNodeDescriptor) DataMap(org.apache.cayenne.map.DataMap) NestedQueryCache(org.apache.cayenne.cache.NestedQueryCache) DataNode(org.apache.cayenne.access.DataNode) DataChannelSyncFilter(org.apache.cayenne.DataChannelSyncFilter) DataChannelQueryFilter(org.apache.cayenne.DataChannelQueryFilter) DataRowStoreFactory(org.apache.cayenne.access.DataRowStoreFactory)

Aggregations

DataChannelQueryFilter (org.apache.cayenne.DataChannelQueryFilter)2 DataChannelSyncFilter (org.apache.cayenne.DataChannelSyncFilter)2 ArrayList (java.util.ArrayList)1 List (java.util.List)1 DataChannelFilter (org.apache.cayenne.DataChannelFilter)1 DataChannelQueryFilterChain (org.apache.cayenne.DataChannelQueryFilterChain)1 DataChannelSyncFilterChain (org.apache.cayenne.DataChannelSyncFilterChain)1 ObjectContext (org.apache.cayenne.ObjectContext)1 QueryResponse (org.apache.cayenne.QueryResponse)1 DataDomain (org.apache.cayenne.access.DataDomain)1 DataNode (org.apache.cayenne.access.DataNode)1 DataRowStoreFactory (org.apache.cayenne.access.DataRowStoreFactory)1 PostPersist (org.apache.cayenne.annotation.PostPersist)1 NestedQueryCache (org.apache.cayenne.cache.NestedQueryCache)1 DataChannelDescriptor (org.apache.cayenne.configuration.DataChannelDescriptor)1 DataNodeDescriptor (org.apache.cayenne.configuration.DataNodeDescriptor)1 ServerRuntime (org.apache.cayenne.configuration.server.ServerRuntime)1 Inject (org.apache.cayenne.di.Inject)1 EventManager (org.apache.cayenne.event.EventManager)1 GraphDiff (org.apache.cayenne.graph.GraphDiff)1