Search in sources :

Example 6 with DataChannel

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

the class DataContextDecoratedStackIT method testGetParentDataDomain.

@Test
public void testGetParentDataDomain() {
    DataDomain dd = runtime.getDataDomain();
    DataChannel decorator = new DataChannelDecorator(dd);
    DataContext context = (DataContext) runtime.newContext(decorator);
    assertSame(dd, context.getParentDataDomain());
}
Also used : DataChannel(org.apache.cayenne.DataChannel) Test(org.junit.Test)

Example 7 with DataChannel

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

the class DataContextDecoratedStackIT method testCommitDecorated.

@Test
public void testCommitDecorated() {
    DataDomain dd = runtime.getDataDomain();
    DataChannel decorator = new DataChannelDecorator(dd);
    DataContext context = (DataContext) runtime.newContext(decorator);
    Artist a = context.newObject(Artist.class);
    a.setArtistName("XXX");
    context.commitChanges();
    SQLTemplate query = new SQLTemplate(Artist.class, "select #result('count(1)' 'int' 'x') from ARTIST");
    query.setFetchingDataRows(true);
    query.setTemplate(FrontBaseAdapter.class.getName(), "select #result('COUNT(ARTIST_ID)' 'int' 'x') from ARTIST");
    query.setTemplate(OpenBaseAdapter.class.getName(), "select #result('COUNT(ARTIST_ID)' 'int' 'x') from ARTIST");
    Map<?, ?> count = (Map<?, ?>) Cayenne.objectForQuery(context, query);
    assertNotNull(count);
    assertEquals(new Integer(1), count.get("x"));
}
Also used : Artist(org.apache.cayenne.testdo.testmap.Artist) SQLTemplate(org.apache.cayenne.query.SQLTemplate) DataChannel(org.apache.cayenne.DataChannel) FrontBaseAdapter(org.apache.cayenne.dba.frontbase.FrontBaseAdapter) OpenBaseAdapter(org.apache.cayenne.dba.openbase.OpenBaseAdapter) Map(java.util.Map) Test(org.junit.Test)

Example 8 with DataChannel

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

the class DataDomainProviderTest method testGet.

@Test
public void testGet() {
    // create dependencies
    final String testConfigName = "testConfig";
    final DataChannelDescriptor testDescriptor = new DataChannelDescriptor();
    DataMap map1 = new DataMap("map1");
    testDescriptor.getDataMaps().add(map1);
    DataMap map2 = new DataMap("map2");
    testDescriptor.getDataMaps().add(map2);
    DataNodeDescriptor nodeDescriptor1 = new DataNodeDescriptor();
    nodeDescriptor1.setName("node1");
    nodeDescriptor1.getDataMapNames().add("map1");
    nodeDescriptor1.setAdapterType(OracleAdapter.class.getName());
    nodeDescriptor1.setDataSourceFactoryType(MockDataSourceFactory.class.getName());
    nodeDescriptor1.setParameters("jdbc/testDataNode1");
    nodeDescriptor1.setSchemaUpdateStrategyType(ThrowOnPartialOrCreateSchemaStrategy.class.getName());
    testDescriptor.getNodeDescriptors().add(nodeDescriptor1);
    DataNodeDescriptor nodeDescriptor2 = new DataNodeDescriptor();
    nodeDescriptor2.setName("node2");
    nodeDescriptor2.getDataMapNames().add("map2");
    nodeDescriptor2.setParameters("testDataNode2.driver.xml");
    testDescriptor.getNodeDescriptors().add(nodeDescriptor2);
    final DataChannelDescriptorLoader testLoader = new DataChannelDescriptorLoader() {

        @Override
        public ConfigurationTree<DataChannelDescriptor> load(Resource configurationResource) throws ConfigurationException {
            return new ConfigurationTree<>(testDescriptor, null);
        }
    };
    final EventManager eventManager = new MockEventManager();
    final TestListener mockListener = new TestListener();
    Module testModule = binder -> {
        final ClassLoaderManager classLoaderManager = new DefaultClassLoaderManager();
        binder.bind(ClassLoaderManager.class).toInstance(classLoaderManager);
        binder.bind(AdhocObjectFactory.class).to(DefaultAdhocObjectFactory.class);
        ServerModule.contributeProperties(binder);
        ServerModule.contributeAdapterDetectors(binder).add(FirebirdSniffer.class).add(OpenBaseSniffer.class).add(FrontBaseSniffer.class).add(IngresSniffer.class).add(SQLiteSniffer.class).add(DB2Sniffer.class).add(H2Sniffer.class).add(HSQLDBSniffer.class).add(SybaseSniffer.class).add(DerbySniffer.class).add(SQLServerSniffer.class).add(OracleSniffer.class).add(PostgresSniffer.class).add(MySQLSniffer.class);
        ServerModule.contributeDomainFilters(binder);
        ServerModule.contributeDomainListeners(binder).add(mockListener);
        ServerModule.contributeProjectLocations(binder).add(testConfigName);
        // configure extended types
        ServerModule.contributeDefaultTypes(binder);
        ServerModule.contributeUserTypes(binder);
        ServerModule.contributeTypeFactories(binder);
        binder.bind(EventManager.class).toInstance(eventManager);
        binder.bind(EntitySorter.class).toInstance(new AshwoodEntitySorter());
        binder.bind(SchemaUpdateStrategyFactory.class).to(DefaultSchemaUpdateStrategyFactory.class);
        final ResourceLocator locator = new ClassLoaderResourceLocator(classLoaderManager) {

            public Collection<Resource> findResources(String name) {
                // if this is the request we are getting, just let it go through..
                if (name.endsWith("types.xml")) {
                    return super.findResources(name);
                }
                assertEquals(testConfigName, name);
                return Collections.<Resource>singleton(new MockResource());
            }
        };
        binder.bind(ResourceLocator.class).toInstance(locator);
        binder.bind(Key.get(ResourceLocator.class, Constants.SERVER_RESOURCE_LOCATOR)).toInstance(locator);
        binder.bind(ConfigurationNameMapper.class).to(DefaultConfigurationNameMapper.class);
        binder.bind(DataChannelDescriptorMerger.class).to(DefaultDataChannelDescriptorMerger.class);
        binder.bind(DataChannelDescriptorLoader.class).toInstance(testLoader);
        binder.bind(DbAdapterFactory.class).to(DefaultDbAdapterFactory.class);
        binder.bind(RuntimeProperties.class).to(DefaultRuntimeProperties.class);
        binder.bind(BatchTranslatorFactory.class).to(DefaultBatchTranslatorFactory.class);
        binder.bind(SelectTranslatorFactory.class).to(DefaultSelectTranslatorFactory.class);
        binder.bind(DataSourceFactory.class).toInstance(new MockDataSourceFactory());
        binder.bind(JdbcEventLogger.class).to(Slf4jJdbcEventLogger.class);
        binder.bind(QueryCache.class).toInstance(mock(QueryCache.class));
        binder.bind(RowReaderFactory.class).toInstance(mock(RowReaderFactory.class));
        binder.bind(DataNodeFactory.class).to(DefaultDataNodeFactory.class);
        binder.bind(SQLTemplateProcessor.class).toInstance(mock(SQLTemplateProcessor.class));
        binder.bind(EventBridge.class).toProvider(NoopEventBridgeProvider.class);
        binder.bind(DataRowStoreFactory.class).to(DefaultDataRowStoreFactory.class);
        ServerModule.contributeValueObjectTypes(binder);
        binder.bind(ValueObjectTypeRegistry.class).to(DefaultValueObjectTypeRegistry.class);
    };
    Injector injector = DIBootstrap.createInjector(testModule);
    // create and initialize provide instance to test
    DataDomainProvider provider = new DataDomainProvider();
    injector.injectMembers(provider);
    DataChannel channel = provider.get();
    assertNotNull(channel);
    assertTrue(channel instanceof DataDomain);
    DataDomain domain = (DataDomain) channel;
    assertSame(eventManager, domain.getEventManager());
    assertEquals(2, domain.getDataMaps().size());
    assertTrue(domain.getDataMaps().contains(map1));
    assertTrue(domain.getDataMaps().contains(map2));
    assertEquals(2, domain.getDataNodes().size());
    DataNode node1 = domain.getDataNode("node1");
    assertNotNull(node1);
    assertEquals(1, node1.getDataMaps().size());
    assertSame(map1, node1.getDataMaps().iterator().next());
    assertSame(node1, domain.lookupDataNode(map1));
    assertEquals(nodeDescriptor1.getDataSourceFactoryType(), node1.getDataSourceFactory());
    assertNotNull(node1.getDataSource());
    assertNotNull(node1.getSchemaUpdateStrategy());
    assertEquals(nodeDescriptor1.getSchemaUpdateStrategyType(), node1.getSchemaUpdateStrategy().getClass().getName());
    assertNotNull(node1.getAdapter());
    assertEquals(OracleAdapter.class, node1.getAdapter().getClass());
    DataNode node2 = domain.getDataNode("node2");
    assertNotNull(node2);
    assertEquals(1, node2.getDataMaps().size());
    assertSame(map2, node2.getDataMaps().iterator().next());
    assertSame(node2, domain.lookupDataNode(map2));
    assertNull(node2.getDataSourceFactory());
    assertNotNull(node2.getDataSource());
    assertNotNull(node2.getSchemaUpdateStrategy());
    assertEquals(SkipSchemaUpdateStrategy.class.getName(), node2.getSchemaUpdateStrategy().getClass().getName());
    assertNotNull(node2.getAdapter());
    // check that we have mock listener passed correctly
    Persistent mockPersistent = mock(Persistent.class);
    ObjectId mockObjectId = mock(ObjectId.class);
    when(mockObjectId.getEntityName()).thenReturn("mock-entity-name");
    when(mockPersistent.getObjectId()).thenReturn(mockObjectId);
    domain.getEntityResolver().getCallbackRegistry().performCallbacks(LifecycleEvent.POST_LOAD, mockPersistent);
    assertEquals("Should call postLoadCallback() method", 1, TestListener.counter.get());
}
Also used : DataNode(org.apache.cayenne.access.DataNode) RuntimeProperties(org.apache.cayenne.configuration.RuntimeProperties) Injector(org.apache.cayenne.di.Injector) SchemaUpdateStrategyFactory(org.apache.cayenne.access.dbsync.SchemaUpdateStrategyFactory) DerbySniffer(org.apache.cayenne.dba.derby.DerbySniffer) DataRowStoreFactory(org.apache.cayenne.access.DataRowStoreFactory) DefaultClassLoaderManager(org.apache.cayenne.di.spi.DefaultClassLoaderManager) Module(org.apache.cayenne.di.Module) DefaultDataChannelDescriptorMerger(org.apache.cayenne.configuration.DefaultDataChannelDescriptorMerger) MySQLSniffer(org.apache.cayenne.dba.mysql.MySQLSniffer) AdhocObjectFactory(org.apache.cayenne.di.AdhocObjectFactory) DefaultRuntimeProperties(org.apache.cayenne.configuration.DefaultRuntimeProperties) OracleAdapter(org.apache.cayenne.dba.oracle.OracleAdapter) OracleSniffer(org.apache.cayenne.dba.oracle.OracleSniffer) DataDomain(org.apache.cayenne.access.DataDomain) AtomicInteger(java.util.concurrent.atomic.AtomicInteger) ThrowOnPartialOrCreateSchemaStrategy(org.apache.cayenne.access.dbsync.ThrowOnPartialOrCreateSchemaStrategy) RowReaderFactory(org.apache.cayenne.access.jdbc.reader.RowReaderFactory) ValueObjectTypeRegistry(org.apache.cayenne.access.types.ValueObjectTypeRegistry) DefaultDataRowStoreFactory(org.apache.cayenne.access.DefaultDataRowStoreFactory) SQLServerSniffer(org.apache.cayenne.dba.sqlserver.SQLServerSniffer) DIBootstrap(org.apache.cayenne.di.DIBootstrap) EntitySorter(org.apache.cayenne.map.EntitySorter) Key(org.apache.cayenne.di.Key) ResourceLocator(org.apache.cayenne.resource.ResourceLocator) DB2Sniffer(org.apache.cayenne.dba.db2.DB2Sniffer) Collection(java.util.Collection) DefaultBatchTranslatorFactory(org.apache.cayenne.access.translator.batch.DefaultBatchTranslatorFactory) HSQLDBSniffer(org.apache.cayenne.dba.hsqldb.HSQLDBSniffer) FrontBaseSniffer(org.apache.cayenne.dba.frontbase.FrontBaseSniffer) H2Sniffer(org.apache.cayenne.dba.h2.H2Sniffer) Resource(org.apache.cayenne.resource.Resource) SybaseSniffer(org.apache.cayenne.dba.sybase.SybaseSniffer) ConfigurationException(org.apache.cayenne.ConfigurationException) PostLoad(org.apache.cayenne.annotation.PostLoad) SQLiteSniffer(org.apache.cayenne.dba.sqlite.SQLiteSniffer) LifecycleEvent(org.apache.cayenne.map.LifecycleEvent) AshwoodEntitySorter(org.apache.cayenne.ashwood.AshwoodEntitySorter) MockResource(org.apache.cayenne.resource.mock.MockResource) Mockito.mock(org.mockito.Mockito.mock) DataChannelDescriptorMerger(org.apache.cayenne.configuration.DataChannelDescriptorMerger) IngresSniffer(org.apache.cayenne.dba.ingres.IngresSniffer) DefaultSelectTranslatorFactory(org.apache.cayenne.access.translator.select.DefaultSelectTranslatorFactory) DefaultValueObjectTypeRegistry(org.apache.cayenne.access.types.DefaultValueObjectTypeRegistry) PostgresSniffer(org.apache.cayenne.dba.postgres.PostgresSniffer) QueryCache(org.apache.cayenne.cache.QueryCache) ConfigurationNameMapper(org.apache.cayenne.configuration.ConfigurationNameMapper) DataChannelDescriptorLoader(org.apache.cayenne.configuration.DataChannelDescriptorLoader) DefaultConfigurationNameMapper(org.apache.cayenne.configuration.DefaultConfigurationNameMapper) Persistent(org.apache.cayenne.Persistent) OpenBaseSniffer(org.apache.cayenne.dba.openbase.OpenBaseSniffer) DefaultSchemaUpdateStrategyFactory(org.apache.cayenne.access.dbsync.DefaultSchemaUpdateStrategyFactory) Slf4jJdbcEventLogger(org.apache.cayenne.log.Slf4jJdbcEventLogger) ConfigurationTree(org.apache.cayenne.configuration.ConfigurationTree) EventBridge(org.apache.cayenne.event.EventBridge) MockEventManager(org.apache.cayenne.event.MockEventManager) JdbcEventLogger(org.apache.cayenne.log.JdbcEventLogger) SQLTemplateProcessor(org.apache.cayenne.access.jdbc.SQLTemplateProcessor) BatchTranslatorFactory(org.apache.cayenne.access.translator.batch.BatchTranslatorFactory) MockDataSourceFactory(org.apache.cayenne.configuration.mock.MockDataSourceFactory) ClassLoaderResourceLocator(org.apache.cayenne.resource.ClassLoaderResourceLocator) Constants(org.apache.cayenne.configuration.Constants) DefaultAdhocObjectFactory(org.apache.cayenne.di.spi.DefaultAdhocObjectFactory) Test(org.junit.Test) FirebirdSniffer(org.apache.cayenne.dba.firebird.FirebirdSniffer) Mockito.when(org.mockito.Mockito.when) DataChannel(org.apache.cayenne.DataChannel) ClassLoaderManager(org.apache.cayenne.di.ClassLoaderManager) DataNodeDescriptor(org.apache.cayenne.configuration.DataNodeDescriptor) SkipSchemaUpdateStrategy(org.apache.cayenne.access.dbsync.SkipSchemaUpdateStrategy) DataChannelDescriptor(org.apache.cayenne.configuration.DataChannelDescriptor) ObjectId(org.apache.cayenne.ObjectId) EventManager(org.apache.cayenne.event.EventManager) NoopEventBridgeProvider(org.apache.cayenne.event.NoopEventBridgeProvider) Assert(org.junit.Assert) Collections(java.util.Collections) SelectTranslatorFactory(org.apache.cayenne.access.translator.select.SelectTranslatorFactory) DataMap(org.apache.cayenne.map.DataMap) DataChannelDescriptor(org.apache.cayenne.configuration.DataChannelDescriptor) DefaultAdhocObjectFactory(org.apache.cayenne.di.spi.DefaultAdhocObjectFactory) SkipSchemaUpdateStrategy(org.apache.cayenne.access.dbsync.SkipSchemaUpdateStrategy) DataMap(org.apache.cayenne.map.DataMap) DefaultSchemaUpdateStrategyFactory(org.apache.cayenne.access.dbsync.DefaultSchemaUpdateStrategyFactory) Slf4jJdbcEventLogger(org.apache.cayenne.log.Slf4jJdbcEventLogger) Injector(org.apache.cayenne.di.Injector) DataNode(org.apache.cayenne.access.DataNode) DefaultClassLoaderManager(org.apache.cayenne.di.spi.DefaultClassLoaderManager) DefaultBatchTranslatorFactory(org.apache.cayenne.access.translator.batch.DefaultBatchTranslatorFactory) ResourceLocator(org.apache.cayenne.resource.ResourceLocator) ClassLoaderResourceLocator(org.apache.cayenne.resource.ClassLoaderResourceLocator) OracleAdapter(org.apache.cayenne.dba.oracle.OracleAdapter) DerbySniffer(org.apache.cayenne.dba.derby.DerbySniffer) DefaultConfigurationNameMapper(org.apache.cayenne.configuration.DefaultConfigurationNameMapper) DataDomain(org.apache.cayenne.access.DataDomain) ThrowOnPartialOrCreateSchemaStrategy(org.apache.cayenne.access.dbsync.ThrowOnPartialOrCreateSchemaStrategy) DefaultDataChannelDescriptorMerger(org.apache.cayenne.configuration.DefaultDataChannelDescriptorMerger) Resource(org.apache.cayenne.resource.Resource) MockResource(org.apache.cayenne.resource.mock.MockResource) DefaultDataRowStoreFactory(org.apache.cayenne.access.DefaultDataRowStoreFactory) MySQLSniffer(org.apache.cayenne.dba.mysql.MySQLSniffer) DB2Sniffer(org.apache.cayenne.dba.db2.DB2Sniffer) NoopEventBridgeProvider(org.apache.cayenne.event.NoopEventBridgeProvider) DataChannelDescriptorLoader(org.apache.cayenne.configuration.DataChannelDescriptorLoader) Collection(java.util.Collection) Module(org.apache.cayenne.di.Module) IngresSniffer(org.apache.cayenne.dba.ingres.IngresSniffer) MockEventManager(org.apache.cayenne.event.MockEventManager) ConfigurationTree(org.apache.cayenne.configuration.ConfigurationTree) MockResource(org.apache.cayenne.resource.mock.MockResource) MockDataSourceFactory(org.apache.cayenne.configuration.mock.MockDataSourceFactory) DefaultRuntimeProperties(org.apache.cayenne.configuration.DefaultRuntimeProperties) AshwoodEntitySorter(org.apache.cayenne.ashwood.AshwoodEntitySorter) DefaultValueObjectTypeRegistry(org.apache.cayenne.access.types.DefaultValueObjectTypeRegistry) MockEventManager(org.apache.cayenne.event.MockEventManager) EventManager(org.apache.cayenne.event.EventManager) DefaultSelectTranslatorFactory(org.apache.cayenne.access.translator.select.DefaultSelectTranslatorFactory) ObjectId(org.apache.cayenne.ObjectId) DataNodeDescriptor(org.apache.cayenne.configuration.DataNodeDescriptor) Persistent(org.apache.cayenne.Persistent) DataChannel(org.apache.cayenne.DataChannel) OpenBaseSniffer(org.apache.cayenne.dba.openbase.OpenBaseSniffer) DefaultClassLoaderManager(org.apache.cayenne.di.spi.DefaultClassLoaderManager) ClassLoaderManager(org.apache.cayenne.di.ClassLoaderManager) ClassLoaderResourceLocator(org.apache.cayenne.resource.ClassLoaderResourceLocator) OracleSniffer(org.apache.cayenne.dba.oracle.OracleSniffer) HSQLDBSniffer(org.apache.cayenne.dba.hsqldb.HSQLDBSniffer) Test(org.junit.Test)

Example 9 with DataChannel

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

the class ServerRuntimeTest method testGetDataChannel_CustomModule.

@Test
public void testGetDataChannel_CustomModule() {
    final DataChannel channel = new DataChannel() {

        public EntityResolver getEntityResolver() {
            return null;
        }

        public EventManager getEventManager() {
            return null;
        }

        public QueryResponse onQuery(ObjectContext originatingContext, Query query) {
            return null;
        }

        public GraphDiff onSync(ObjectContext originatingContext, GraphDiff changes, int syncType) {
            return null;
        }
    };
    Module module = binder -> binder.bind(DataChannel.class).toInstance(channel);
    ServerRuntime runtime = new ServerRuntime(Collections.singleton(module));
    assertSame(channel, runtime.getChannel());
}
Also used : ObjectContext(org.apache.cayenne.ObjectContext) Arrays(java.util.Arrays) DataContext(org.apache.cayenne.access.DataContext) Collection(java.util.Collection) Constants(org.apache.cayenne.configuration.Constants) Module(org.apache.cayenne.di.Module) Test(org.junit.Test) Mockito.when(org.mockito.Mockito.when) DataChannel(org.apache.cayenne.DataChannel) Query(org.apache.cayenne.query.Query) BaseTransaction(org.apache.cayenne.tx.BaseTransaction) List(java.util.List) ObjectContextFactory(org.apache.cayenne.configuration.ObjectContextFactory) EntityResolver(org.apache.cayenne.map.EntityResolver) EventManager(org.apache.cayenne.event.EventManager) Arrays.asList(java.util.Arrays.asList) GraphDiff(org.apache.cayenne.graph.GraphDiff) QueryResponse(org.apache.cayenne.QueryResponse) TransactionFactory(org.apache.cayenne.tx.TransactionFactory) TransactionalOperation(org.apache.cayenne.tx.TransactionalOperation) Assert(org.junit.Assert) Collections(java.util.Collections) Key(org.apache.cayenne.di.Key) Mockito.mock(org.mockito.Mockito.mock) DataChannel(org.apache.cayenne.DataChannel) Query(org.apache.cayenne.query.Query) GraphDiff(org.apache.cayenne.graph.GraphDiff) ObjectContext(org.apache.cayenne.ObjectContext) Module(org.apache.cayenne.di.Module) Test(org.junit.Test)

Example 10 with DataChannel

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

the class FlavoredDBHelperProvider method get.

public DBHelper get() throws ConfigurationException {
    DataChannel channel = serverRuntimeProvider.get().getChannel();
    DataMap firstMap = channel.getEntityResolver().getDataMaps().iterator().next();
    return new FlavoredDBHelper(dataSourceFactory.getSharedDataSource(), adapter.getQuotingStrategy(), firstMap);
}
Also used : DataChannel(org.apache.cayenne.DataChannel) DataMap(org.apache.cayenne.map.DataMap)

Aggregations

DataChannel (org.apache.cayenne.DataChannel)19 Test (org.junit.Test)13 ObjectContextFactory (org.apache.cayenne.configuration.ObjectContextFactory)8 HashMap (java.util.HashMap)6 ObjectContext (org.apache.cayenne.ObjectContext)5 Module (org.apache.cayenne.di.Module)5 EventManager (org.apache.cayenne.event.EventManager)5 Collection (java.util.Collection)4 Injector (org.apache.cayenne.di.Injector)4 ClientConnection (org.apache.cayenne.remote.ClientConnection)4 Assert (org.junit.Assert)4 Mockito.mock (org.mockito.Mockito.mock)4 Collections (java.util.Collections)3 HttpSession (javax.servlet.http.HttpSession)3 DataContext (org.apache.cayenne.access.DataContext)3 Binder (org.apache.cayenne.di.Binder)3 DIBootstrap (org.apache.cayenne.di.DIBootstrap)3 ClientChannel (org.apache.cayenne.remote.ClientChannel)3 MockClientConnection (org.apache.cayenne.remote.MockClientConnection)3 MockHttpServletRequest (com.mockrunner.mock.web.MockHttpServletRequest)2