Repository: cayenne
Updated Branches:
  refs/heads/master dba3dc4b4 -> 22f6bd256


CAY-2165 Explicit "contribution" API for easier expansion of DI collections and 
maps


Project: http://git-wip-us.apache.org/repos/asf/cayenne/repo
Commit: http://git-wip-us.apache.org/repos/asf/cayenne/commit/850eb19a
Tree: http://git-wip-us.apache.org/repos/asf/cayenne/tree/850eb19a
Diff: http://git-wip-us.apache.org/repos/asf/cayenne/diff/850eb19a

Branch: refs/heads/master
Commit: 850eb19a97ab2e3f862b0e0fd4a3b936bc9a320c
Parents: dba3dc4
Author: Andrus Adamchik <and...@objectstyle.com>
Authored: Sun Dec 11 14:49:30 2016 +0300
Committer: Andrus Adamchik <and...@objectstyle.com>
Committed: Sun Dec 11 14:49:30 2016 +0300

----------------------------------------------------------------------
 .../cayenne/java8/CayenneJava8Module.java       |   4 +-
 .../apache/cayenne/joda/CayenneJodaModule.java  |  20 +-
 .../configuration/server/ServerModule.java      | 233 ++++++++++---------
 .../server/DataDomainProviderTest.java          |   4 +-
 .../server/DefaultDbAdapterFactoryTest.java     |   8 +-
 .../unit/di/server/ServerCaseModule.java        |   4 +-
 .../tools/configuration/ToolsModule.java        |   5 +-
 7 files changed, 144 insertions(+), 134 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/cayenne/blob/850eb19a/cayenne-java8/src/main/java/org/apache/cayenne/java8/CayenneJava8Module.java
----------------------------------------------------------------------
diff --git 
a/cayenne-java8/src/main/java/org/apache/cayenne/java8/CayenneJava8Module.java 
b/cayenne-java8/src/main/java/org/apache/cayenne/java8/CayenneJava8Module.java
index 563c3c0..7a565a6 100644
--- 
a/cayenne-java8/src/main/java/org/apache/cayenne/java8/CayenneJava8Module.java
+++ 
b/cayenne-java8/src/main/java/org/apache/cayenne/java8/CayenneJava8Module.java
@@ -20,6 +20,7 @@
 package org.apache.cayenne.java8;
 
 import org.apache.cayenne.configuration.Constants;
+import org.apache.cayenne.configuration.server.ServerModule;
 import org.apache.cayenne.di.Binder;
 import org.apache.cayenne.di.Module;
 import org.apache.cayenne.java8.access.types.LocalDateTimeType;
@@ -33,8 +34,7 @@ public class CayenneJava8Module implements Module {
 
     @Override
     public void configure(Binder binder) {
-        binder
-                .bindList(Constants.SERVER_DEFAULT_TYPES_LIST)
+        ServerModule.contributeDefaultExtendedTypes(binder)
                 .add(new LocalDateType())
                 .add(new LocalTimeType())
                 .add(new LocalDateTimeType());

http://git-wip-us.apache.org/repos/asf/cayenne/blob/850eb19a/cayenne-joda/src/main/java/org/apache/cayenne/joda/CayenneJodaModule.java
----------------------------------------------------------------------
diff --git 
a/cayenne-joda/src/main/java/org/apache/cayenne/joda/CayenneJodaModule.java 
b/cayenne-joda/src/main/java/org/apache/cayenne/joda/CayenneJodaModule.java
index d37e994..0d88053 100644
--- a/cayenne-joda/src/main/java/org/apache/cayenne/joda/CayenneJodaModule.java
+++ b/cayenne-joda/src/main/java/org/apache/cayenne/joda/CayenneJodaModule.java
@@ -22,6 +22,7 @@ package org.apache.cayenne.joda;
  */
 
 import org.apache.cayenne.configuration.Constants;
+import org.apache.cayenne.configuration.server.ServerModule;
 import org.apache.cayenne.di.Binder;
 import org.apache.cayenne.di.Module;
 import org.apache.cayenne.joda.access.types.DateTimeType;
@@ -32,17 +33,20 @@ import org.apache.cayenne.joda.access.types.LocalTimeType;
 /**
  * Include this module when creating a ServerRuntime in order to add support 
for
  * joda-time ObjAttributes.
- * 
+ *
  * @since 4.0
  */
 public class CayenneJodaModule implements Module {
 
-       public CayenneJodaModule() {
-       }
+    public CayenneJodaModule() {
+    }
 
-       @Override
-       public void configure(Binder binder) {
-               binder.bindList(Constants.SERVER_DEFAULT_TYPES_LIST).add(new 
DateTimeType()).add(new LocalDateType())
-                               .add(new LocalTimeType()).add(new 
LocalDateTimeType());
-       }
+    @Override
+    public void configure(Binder binder) {
+        ServerModule.contributeDefaultExtendedTypes(binder)
+                .add(new DateTimeType())
+                .add(new LocalDateType())
+                .add(new LocalTimeType())
+                .add(new LocalDateTimeType());
+    }
 }

http://git-wip-us.apache.org/repos/asf/cayenne/blob/850eb19a/cayenne-server/src/main/java/org/apache/cayenne/configuration/server/ServerModule.java
----------------------------------------------------------------------
diff --git 
a/cayenne-server/src/main/java/org/apache/cayenne/configuration/server/ServerModule.java
 
b/cayenne-server/src/main/java/org/apache/cayenne/configuration/server/ServerModule.java
index 286edce..5f188de 100644
--- 
a/cayenne-server/src/main/java/org/apache/cayenne/configuration/server/ServerModule.java
+++ 
b/cayenne-server/src/main/java/org/apache/cayenne/configuration/server/ServerModule.java
@@ -31,24 +31,7 @@ import 
org.apache.cayenne.access.translator.batch.BatchTranslatorFactory;
 import 
org.apache.cayenne.access.translator.batch.DefaultBatchTranslatorFactory;
 import 
org.apache.cayenne.access.translator.select.DefaultSelectTranslatorFactory;
 import org.apache.cayenne.access.translator.select.SelectTranslatorFactory;
-import org.apache.cayenne.access.types.BigDecimalType;
-import org.apache.cayenne.access.types.BigIntegerType;
-import org.apache.cayenne.access.types.BooleanType;
-import org.apache.cayenne.access.types.ByteArrayType;
-import org.apache.cayenne.access.types.ByteType;
-import org.apache.cayenne.access.types.CalendarType;
-import org.apache.cayenne.access.types.CharType;
-import org.apache.cayenne.access.types.DateType;
-import org.apache.cayenne.access.types.DoubleType;
-import org.apache.cayenne.access.types.FloatType;
-import org.apache.cayenne.access.types.IntegerType;
-import org.apache.cayenne.access.types.LongType;
-import org.apache.cayenne.access.types.ShortType;
-import org.apache.cayenne.access.types.TimeType;
-import org.apache.cayenne.access.types.TimestampType;
-import org.apache.cayenne.access.types.UUIDType;
-import org.apache.cayenne.access.types.UtilDateType;
-import org.apache.cayenne.access.types.VoidType;
+import org.apache.cayenne.access.types.*;
 import org.apache.cayenne.ashwood.AshwoodEntitySorter;
 import org.apache.cayenne.cache.MapQueryCacheProvider;
 import org.apache.cayenne.cache.QueryCache;
@@ -107,130 +90,152 @@ import java.util.GregorianCalendar;
 
 /**
  * A DI module containing all Cayenne server runtime configuration.
- * 
+ *
  * @since 3.1
  */
 public class ServerModule implements Module {
 
-       private static final int DEFAULT_MAX_ID_QUALIFIER_SIZE = 10000;
-
-       protected String[] configurationLocations;
-
-       /**
-        * Creates a ServerModule with at least one configuration location. For
-        * multi-module projects additional locations can be specified as well.
-        */
-       public ServerModule(String... configurationLocations) {
-
-               if (configurationLocations == null) {
-                       configurationLocations = new String[0];
-               }
-
-               this.configurationLocations = configurationLocations;
-       }
-
-       public void configure(Binder binder) {
-
-               // configure global stack properties
-               
binder.bindMap(Constants.PROPERTIES_MAP).put(Constants.SERVER_MAX_ID_QUALIFIER_SIZE_PROPERTY,
-                               String.valueOf(DEFAULT_MAX_ID_QUALIFIER_SIZE));
-
-               
binder.bind(JdbcEventLogger.class).to(CommonsJdbcEventLogger.class);
-               
binder.bind(ClassLoaderManager.class).to(DefaultClassLoaderManager.class);
-               
binder.bind(AdhocObjectFactory.class).to(DefaultAdhocObjectFactory.class);
-
-               // configure known DbAdapter detectors in reverse order of 
popularity.
-               // Users can
-               // add their own to install custom adapters automatically
-
-               
binder.bindList(Constants.SERVER_ADAPTER_DETECTORS_LIST).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);
-
-               // configure a filter chain with only one TransactionFilter as 
default
-               binder.bindList(Constants.SERVER_DOMAIN_FILTERS_LIST)
+    private static final int DEFAULT_MAX_ID_QUALIFIER_SIZE = 10000;
+
+    protected String[] configurationLocations;
+
+    /**
+     * Provides access to a DI collection builder for default adapter-agnostic 
{@link ExtendedType}'s.
+     *
+     * @param binder DI binder passed to the module during injector startup.
+     * @return ListBuilder for ExtendedTypes.
+     * @since 4.0
+     */
+    public static ListBuilder<ExtendedType> 
contributeDefaultExtendedTypes(Binder binder) {
+        return binder.bindList(Constants.SERVER_DEFAULT_TYPES_LIST);
+    }
+
+    /**
+     * Provides access to a DI collection builder for user-provided {@link 
ExtendedType}'s.
+     *
+     * @param binder DI binder passed to the module during injector startup.
+     * @return ListBuilder for ExtendedTypes.
+     * @since 4.0
+     */
+    public static ListBuilder<ExtendedType> contributeUserExtendedTypes(Binder 
binder) {
+        return binder.bindList(Constants.SERVER_USER_TYPES_LIST);
+    }
+
+    /**
+     * Creates a ServerModule with at least one configuration location. For
+     * multi-module projects additional locations can be specified as well.
+     */
+    public ServerModule(String... configurationLocations) {
+
+        if (configurationLocations == null) {
+            configurationLocations = new String[0];
+        }
+
+        this.configurationLocations = configurationLocations;
+    }
+
+    public void configure(Binder binder) {
+
+        // configure global stack properties
+        
binder.bindMap(Constants.PROPERTIES_MAP).put(Constants.SERVER_MAX_ID_QUALIFIER_SIZE_PROPERTY,
+                String.valueOf(DEFAULT_MAX_ID_QUALIFIER_SIZE));
+
+        binder.bind(JdbcEventLogger.class).to(CommonsJdbcEventLogger.class);
+        
binder.bind(ClassLoaderManager.class).to(DefaultClassLoaderManager.class);
+        
binder.bind(AdhocObjectFactory.class).to(DefaultAdhocObjectFactory.class);
+
+        // configure known DbAdapter detectors in reverse order of popularity.
+        // Users can
+        // add their own to install custom adapters automatically
+
+        
binder.bindList(Constants.SERVER_ADAPTER_DETECTORS_LIST).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);
+
+        // configure a filter chain with only one TransactionFilter as default
+        binder.bindList(Constants.SERVER_DOMAIN_FILTERS_LIST)
                 .add(TransactionFilter.class);
 
-               // configure extended types
-               binder.bindList(Constants.SERVER_DEFAULT_TYPES_LIST).add(new 
VoidType()).add(new BigDecimalType())
-                               .add(new BigIntegerType()).add(new 
BooleanType()).add(new ByteArrayType(false, true))
-                               .add(new ByteType(false)).add(new 
CharType(false, true)).add(new DateType()).add(new DoubleType())
-                               .add(new FloatType()).add(new 
IntegerType()).add(new LongType()).add(new ShortType(false))
-                               .add(new TimeType()).add(new 
TimestampType()).add(new UtilDateType())
-                               .add(new 
CalendarType<GregorianCalendar>(GregorianCalendar.class))
-                               .add(new 
CalendarType<Calendar>(Calendar.class)).add(new UUIDType());
-               binder.bindList(Constants.SERVER_USER_TYPES_LIST);
-               binder.bindList(Constants.SERVER_TYPE_FACTORIES_LIST);
+        // configure extended types
+        contributeDefaultExtendedTypes(binder).add(new VoidType()).add(new 
BigDecimalType())
+                .add(new BigIntegerType()).add(new BooleanType()).add(new 
ByteArrayType(false, true))
+                .add(new ByteType(false)).add(new CharType(false, 
true)).add(new DateType()).add(new DoubleType())
+                .add(new FloatType()).add(new IntegerType()).add(new 
LongType()).add(new ShortType(false))
+                .add(new TimeType()).add(new TimestampType()).add(new 
UtilDateType())
+                .add(new 
CalendarType<GregorianCalendar>(GregorianCalendar.class))
+                .add(new CalendarType<Calendar>(Calendar.class)).add(new 
UUIDType());
+        contributeUserExtendedTypes(binder);
+        binder.bindList(Constants.SERVER_TYPE_FACTORIES_LIST);
 
-               // configure explicit configurations
-               ListBuilder<Object> locationsListBuilder = 
binder.bindList(Constants.SERVER_PROJECT_LOCATIONS_LIST);
-               for (String location : configurationLocations) {
-                       locationsListBuilder.add(location);
-               }
+        // configure explicit configurations
+        ListBuilder<Object> locationsListBuilder = 
binder.bindList(Constants.SERVER_PROJECT_LOCATIONS_LIST);
+        for (String location : configurationLocations) {
+            locationsListBuilder.add(location);
+        }
 
-               
binder.bind(ConfigurationNameMapper.class).to(DefaultConfigurationNameMapper.class);
+        
binder.bind(ConfigurationNameMapper.class).to(DefaultConfigurationNameMapper.class);
 
-               binder.bind(EventManager.class).to(DefaultEventManager.class);
+        binder.bind(EventManager.class).to(DefaultEventManager.class);
 
-               
binder.bind(QueryCache.class).toProvider(MapQueryCacheProvider.class);
+        binder.bind(QueryCache.class).toProvider(MapQueryCacheProvider.class);
 
-               // a service to provide the main stack DataDomain
-               
binder.bind(DataDomain.class).toProvider(DataDomainProvider.class);
+        // a service to provide the main stack DataDomain
+        binder.bind(DataDomain.class).toProvider(DataDomainProvider.class);
 
-               
binder.bind(DataNodeFactory.class).to(DefaultDataNodeFactory.class);
+        binder.bind(DataNodeFactory.class).to(DefaultDataNodeFactory.class);
 
-               // will return DataDomain for request for a DataChannel
-               
binder.bind(DataChannel.class).toProvider(DomainDataChannelProvider.class);
+        // will return DataDomain for request for a DataChannel
+        
binder.bind(DataChannel.class).toProvider(DomainDataChannelProvider.class);
 
-               
binder.bind(ObjectContextFactory.class).to(DataContextFactory.class);
+        binder.bind(ObjectContextFactory.class).to(DataContextFactory.class);
 
-               
binder.bind(TransactionFactory.class).to(DefaultTransactionFactory.class);
+        
binder.bind(TransactionFactory.class).to(DefaultTransactionFactory.class);
 
-               // a service to load project XML descriptors
-               
binder.bind(DataChannelDescriptorLoader.class).to(XMLDataChannelDescriptorLoader.class);
-               
binder.bind(DataChannelDescriptorMerger.class).to(DefaultDataChannelDescriptorMerger.class);
+        // a service to load project XML descriptors
+        
binder.bind(DataChannelDescriptorLoader.class).to(XMLDataChannelDescriptorLoader.class);
+        
binder.bind(DataChannelDescriptorMerger.class).to(DefaultDataChannelDescriptorMerger.class);
 
-               // a service to load DataMap XML descriptors
-               binder.bind(DataMapLoader.class).to(XMLDataMapLoader.class);
+        // a service to load DataMap XML descriptors
+        binder.bind(DataMapLoader.class).to(XMLDataMapLoader.class);
 
-               // a locator of resources, such as XML descriptors
+        // a locator of resources, such as XML descriptors
         
binder.bind(ResourceLocator.class).to(ClassLoaderResourceLocator.class);
         binder.bind(Key.get(ResourceLocator.class, 
Constants.SERVER_RESOURCE_LOCATOR)).to(ClassLoaderResourceLocator.class);
 
-               // a global properties object
-               
binder.bind(RuntimeProperties.class).to(DefaultRuntimeProperties.class);
+        // a global properties object
+        
binder.bind(RuntimeProperties.class).to(DefaultRuntimeProperties.class);
 
-               // a service to load DataSourceFactories. 
DelegatingDataSourceFactory
-               // will attempt to find the actual worker factory dynamically 
on each
-               // call depending on DataNodeDescriptor data and the environment
-               
binder.bind(DataSourceFactory.class).to(DelegatingDataSourceFactory.class);
+        // a service to load DataSourceFactories. DelegatingDataSourceFactory
+        // will attempt to find the actual worker factory dynamically on each
+        // call depending on DataNodeDescriptor data and the environment
+        
binder.bind(DataSourceFactory.class).to(DelegatingDataSourceFactory.class);
 
-               
binder.bind(SchemaUpdateStrategyFactory.class).to(DefaultSchemaUpdateStrategyFactory.class);
+        
binder.bind(SchemaUpdateStrategyFactory.class).to(DefaultSchemaUpdateStrategyFactory.class);
 
-               // a default DBAdapterFactory used to load custom and automatic
-               // DbAdapters
-               
binder.bind(DbAdapterFactory.class).to(DefaultDbAdapterFactory.class);
+        // a default DBAdapterFactory used to load custom and automatic
+        // DbAdapters
+        binder.bind(DbAdapterFactory.class).to(DefaultDbAdapterFactory.class);
 
-               // binding AshwoodEntitySorter without scope, as this is a 
stateful
-               // object and is
-               // configured by the owning domain
-               
binder.bind(EntitySorter.class).to(AshwoodEntitySorter.class).withoutScope();
+        // binding AshwoodEntitySorter without scope, as this is a stateful
+        // object and is
+        // configured by the owning domain
+        
binder.bind(EntitySorter.class).to(AshwoodEntitySorter.class).withoutScope();
 
-               
binder.bind(BatchTranslatorFactory.class).to(DefaultBatchTranslatorFactory.class);
-               
binder.bind(SelectTranslatorFactory.class).to(DefaultSelectTranslatorFactory.class);
+        
binder.bind(BatchTranslatorFactory.class).to(DefaultBatchTranslatorFactory.class);
+        
binder.bind(SelectTranslatorFactory.class).to(DefaultSelectTranslatorFactory.class);
 
-               // a default ObjectMapRetainStrategy used to create objects map 
for
-               // ObjectStore
-               
binder.bind(ObjectMapRetainStrategy.class).to(DefaultObjectMapRetainStrategy.class);
+        // a default ObjectMapRetainStrategy used to create objects map for
+        // ObjectStore
+        
binder.bind(ObjectMapRetainStrategy.class).to(DefaultObjectMapRetainStrategy.class);
 
-               // a default ObjectStoreFactory used to create ObjectStores for 
contexts
-               
binder.bind(ObjectStoreFactory.class).to(DefaultObjectStoreFactory.class);
+        // a default ObjectStoreFactory used to create ObjectStores for 
contexts
+        
binder.bind(ObjectStoreFactory.class).to(DefaultObjectStoreFactory.class);
 
-               
binder.bind(TransactionManager.class).to(DefaultTransactionManager.class);
-               
binder.bind(RowReaderFactory.class).to(DefaultRowReaderFactory.class);
+        
binder.bind(TransactionManager.class).to(DefaultTransactionManager.class);
+        binder.bind(RowReaderFactory.class).to(DefaultRowReaderFactory.class);
 
-               
binder.bind(SQLTemplateProcessor.class).to(VelocitySQLTemplateProcessor.class);
-       }
+        
binder.bind(SQLTemplateProcessor.class).to(VelocitySQLTemplateProcessor.class);
+    }
 }

http://git-wip-us.apache.org/repos/asf/cayenne/blob/850eb19a/cayenne-server/src/test/java/org/apache/cayenne/configuration/server/DataDomainProviderTest.java
----------------------------------------------------------------------
diff --git 
a/cayenne-server/src/test/java/org/apache/cayenne/configuration/server/DataDomainProviderTest.java
 
b/cayenne-server/src/test/java/org/apache/cayenne/configuration/server/DataDomainProviderTest.java
index b8f4f7e..aa85465 100644
--- 
a/cayenne-server/src/test/java/org/apache/cayenne/configuration/server/DataDomainProviderTest.java
+++ 
b/cayenne-server/src/test/java/org/apache/cayenne/configuration/server/DataDomainProviderTest.java
@@ -152,8 +152,8 @@ public class DataDomainProviderTest {
                                
binder.bindList(Constants.SERVER_PROJECT_LOCATIONS_LIST).add(testConfigName);
 
                                // configure extended types
-                               
binder.bindList(Constants.SERVER_DEFAULT_TYPES_LIST);
-                               
binder.bindList(Constants.SERVER_USER_TYPES_LIST);
+                               
ServerModule.contributeDefaultExtendedTypes(binder);
+                               
ServerModule.contributeUserExtendedTypes(binder);
                                
binder.bindList(Constants.SERVER_TYPE_FACTORIES_LIST);
 
                                
binder.bind(EventManager.class).toInstance(eventManager);

http://git-wip-us.apache.org/repos/asf/cayenne/blob/850eb19a/cayenne-server/src/test/java/org/apache/cayenne/configuration/server/DefaultDbAdapterFactoryTest.java
----------------------------------------------------------------------
diff --git 
a/cayenne-server/src/test/java/org/apache/cayenne/configuration/server/DefaultDbAdapterFactoryTest.java
 
b/cayenne-server/src/test/java/org/apache/cayenne/configuration/server/DefaultDbAdapterFactoryTest.java
index e3621d7..d2f8dc3 100644
--- 
a/cayenne-server/src/test/java/org/apache/cayenne/configuration/server/DefaultDbAdapterFactoryTest.java
+++ 
b/cayenne-server/src/test/java/org/apache/cayenne/configuration/server/DefaultDbAdapterFactoryTest.java
@@ -108,8 +108,8 @@ public class DefaultDbAdapterFactoryTest {
 
             public void configure(Binder binder) {
                 binder.bindMap(Constants.PROPERTIES_MAP);
-                binder.bindList(Constants.SERVER_DEFAULT_TYPES_LIST);
-                binder.bindList(Constants.SERVER_USER_TYPES_LIST);
+                ServerModule.contributeDefaultExtendedTypes(binder);
+                ServerModule.contributeUserExtendedTypes(binder);
                 binder.bindList(Constants.SERVER_TYPE_FACTORIES_LIST);
 
                 
binder.bind(JdbcEventLogger.class).to(CommonsJdbcEventLogger.class);
@@ -145,8 +145,8 @@ public class DefaultDbAdapterFactoryTest {
 
             public void configure(Binder binder) {
                 binder.bindMap(Constants.PROPERTIES_MAP);
-                binder.bindList(Constants.SERVER_DEFAULT_TYPES_LIST);
-                binder.bindList(Constants.SERVER_USER_TYPES_LIST);
+                ServerModule.contributeDefaultExtendedTypes(binder);
+                ServerModule.contributeUserExtendedTypes(binder);
                 binder.bindList(Constants.SERVER_TYPE_FACTORIES_LIST);
 
                 
binder.bind(JdbcEventLogger.class).to(CommonsJdbcEventLogger.class);

http://git-wip-us.apache.org/repos/asf/cayenne/blob/850eb19a/cayenne-server/src/test/java/org/apache/cayenne/unit/di/server/ServerCaseModule.java
----------------------------------------------------------------------
diff --git 
a/cayenne-server/src/test/java/org/apache/cayenne/unit/di/server/ServerCaseModule.java
 
b/cayenne-server/src/test/java/org/apache/cayenne/unit/di/server/ServerCaseModule.java
index abe2a2e..c4475dd 100644
--- 
a/cayenne-server/src/test/java/org/apache/cayenne/unit/di/server/ServerCaseModule.java
+++ 
b/cayenne-server/src/test/java/org/apache/cayenne/unit/di/server/ServerCaseModule.java
@@ -52,6 +52,7 @@ import org.apache.cayenne.configuration.ObjectStoreFactory;
 import org.apache.cayenne.configuration.RuntimeProperties;
 import org.apache.cayenne.configuration.XMLDataMapLoader;
 import org.apache.cayenne.configuration.server.DataSourceFactory;
+import org.apache.cayenne.configuration.server.ServerModule;
 import org.apache.cayenne.configuration.server.ServerRuntime;
 import org.apache.cayenne.conn.DataSourceInfo;
 import org.apache.cayenne.dba.DbAdapter;
@@ -157,8 +158,7 @@ public class ServerCaseModule implements Module {
         binder.bindMap(Constants.PROPERTIES_MAP);
         
         // configure extended types
-        binder
-                .bindList(Constants.SERVER_DEFAULT_TYPES_LIST)
+        ServerModule.contributeDefaultExtendedTypes(binder)
                 .add(new VoidType())
                 .add(new BigDecimalType())
                 .add(new BigIntegerType())

http://git-wip-us.apache.org/repos/asf/cayenne/blob/850eb19a/cayenne-tools/src/main/java/org/apache/cayenne/tools/configuration/ToolsModule.java
----------------------------------------------------------------------
diff --git 
a/cayenne-tools/src/main/java/org/apache/cayenne/tools/configuration/ToolsModule.java
 
b/cayenne-tools/src/main/java/org/apache/cayenne/tools/configuration/ToolsModule.java
index b800ea2..ef8b048 100644
--- 
a/cayenne-tools/src/main/java/org/apache/cayenne/tools/configuration/ToolsModule.java
+++ 
b/cayenne-tools/src/main/java/org/apache/cayenne/tools/configuration/ToolsModule.java
@@ -26,6 +26,7 @@ import org.apache.cayenne.configuration.RuntimeProperties;
 import org.apache.cayenne.configuration.server.DataSourceFactory;
 import org.apache.cayenne.configuration.server.DbAdapterFactory;
 import org.apache.cayenne.configuration.server.DefaultDbAdapterFactory;
+import org.apache.cayenne.configuration.server.ServerModule;
 import org.apache.cayenne.dba.db2.DB2Sniffer;
 import org.apache.cayenne.dba.derby.DerbySniffer;
 import org.apache.cayenne.dba.firebird.FirebirdSniffer;
@@ -79,8 +80,8 @@ public class ToolsModule implements Module {
         // configure empty global stack properties
         binder.bindMap(Constants.PROPERTIES_MAP);
 
-        binder.bindList(Constants.SERVER_DEFAULT_TYPES_LIST);
-        binder.bindList(Constants.SERVER_USER_TYPES_LIST);
+        ServerModule.contributeDefaultExtendedTypes(binder);
+        ServerModule.contributeUserExtendedTypes(binder);
         binder.bindList(Constants.SERVER_TYPE_FACTORIES_LIST);
 
         
binder.bind(ClassLoaderManager.class).to(DefaultClassLoaderManager.class);

Reply via email to