use of org.apache.cayenne.access.types.TimeType in project cayenne by apache.
the class ServerModule method configure.
public void configure(Binder binder) {
// configure global stack properties
contributeProperties(binder).put(Constants.SERVER_MAX_ID_QUALIFIER_SIZE_PROPERTY, String.valueOf(DEFAULT_MAX_ID_QUALIFIER_SIZE));
contributeProperties(binder).put(Constants.SERVER_CONTEXTS_SYNC_PROPERTY, String.valueOf(false));
binder.bind(JdbcEventLogger.class).to(Slf4jJdbcEventLogger.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
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).add(MariaDBSniffer.class);
// installing Pk for adapters
binder.bind(PkGeneratorFactoryProvider.class).to(PkGeneratorFactoryProvider.class);
binder.bind(PkGenerator.class).to(JdbcPkGenerator.class);
// set PkGenerators for current Adapters
contributePkGenerators(binder).put(DB2Adapter.class.getName(), DB2PkGenerator.class).put(DerbyAdapter.class.getName(), DerbyPkGenerator.class).put(FrontBaseAdapter.class.getName(), FrontBasePkGenerator.class).put(H2Adapter.class.getName(), H2PkGenerator.class).put(IngresAdapter.class.getName(), IngresPkGenerator.class).put(MySQLAdapter.class.getName(), MySQLPkGenerator.class).put(OpenBaseAdapter.class.getName(), OpenBasePkGenerator.class).put(OracleAdapter.class.getName(), OraclePkGenerator.class).put(Oracle8Adapter.class.getName(), OraclePkGenerator.class).put(PostgresAdapter.class.getName(), PostgresPkGenerator.class).put(SQLServerAdapter.class.getName(), SybasePkGenerator.class).put(SybaseAdapter.class.getName(), SybasePkGenerator.class);
// configure a filter chain with only one TransactionFilter as default
contributeDomainFilters(binder);
contributeDomainQueryFilters(binder);
contributeDomainSyncFilters(binder).add(TransactionFilter.class);
// init listener list
contributeDomainListeners(binder);
// configure extended types
contributeDefaultTypes(binder).add(new VoidType()).add(new BigDecimalType()).add(new BooleanType()).add(new ByteType(false)).add(new CharType(false, true)).add(new DoubleType()).add(new FloatType()).add(new IntegerType()).add(new LongType()).add(new ShortType(false)).add(new ByteArrayType(false, true)).add(new DateType()).add(new TimeType()).add(new TimestampType()).add(new DurationType()).add(new UtilDateType()).add(new CalendarType<>(GregorianCalendar.class)).add(new CalendarType<>(Calendar.class)).add(GeoJsonType.class).add(WktType.class);
contributeUserTypes(binder);
contributeTypeFactories(binder).add(new InternalUnsupportedTypeFactory());
// Custom ValueObjects types contribution
contributeValueObjectTypes(binder).add(BigIntegerValueType.class).add(BigDecimalValueType.class).add(UUIDValueType.class).add(LocalDateValueType.class).add(LocalTimeValueType.class).add(LocalDateTimeValueType.class).add(PeriodValueType.class).add(CharacterValueType.class);
binder.bind(ValueObjectTypeRegistry.class).to(DefaultValueObjectTypeRegistry.class);
binder.bind(ValueComparisonStrategyFactory.class).to(DefaultValueComparisonStrategyFactory.class);
// configure explicit configurations
contributeProjectLocations(binder);
binder.bind(ConfigurationNameMapper.class).to(DefaultConfigurationNameMapper.class);
binder.bind(EventManager.class).toProvider(EventManagerProvider.class);
binder.bind(QueryCache.class).toProvider(MapQueryCacheProvider.class);
binder.bind(EventBridge.class).toProvider(NoopEventBridgeProvider.class);
binder.bind(DataRowStoreFactory.class).to(DefaultDataRowStoreFactory.class);
// a service to provide the main stack DataDomain
binder.bind(DataDomain.class).toProvider(DataDomainProvider.class);
binder.bind(DataNodeFactory.class).to(DefaultDataNodeFactory.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(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 DataMap XML descriptors
binder.bind(DataMapLoader.class).to(XMLDataMapLoader.class);
// 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 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);
// 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();
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 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(SQLTemplateProcessor.class).to(CayenneSQLTemplateProcessor.class);
binder.bind(TemplateContextFactory.class).to(DefaultTemplateContextFactory.class);
binder.bind(HandlerFactory.class).to(DefaultHandlerFactory.class);
binder.bind(DataChannelMetaData.class).to(NoopDataChannelMetaData.class);
binder.bind(XMLReader.class).toProviderInstance(new XMLReaderProvider(false)).withoutScope();
binder.bind(DataDomainFlushActionFactory.class).to(DefaultDataDomainFlushActionFactory.class);
binder.bind(DbRowOpSorter.class).to(DefaultDbRowOpSorter.class);
}
use of org.apache.cayenne.access.types.TimeType in project cayenne by apache.
the class ServerCaseModule method configure.
public void configure(Binder binder) {
// these are the objects injectable in unit tests that subclass from
// ServerCase. Note that ServerRuntimeProvider creates ServerRuntime
// instances complete with their own DI injectors, independent from the
// unit test injector. ServerRuntime injector contents are customized
// inside ServerRuntimeProvider.
binder.bindMap(String.class, UnitDbAdapterProvider.TEST_ADAPTERS_MAP).put(FirebirdAdapter.class.getName(), FirebirdUnitDbAdapter.class.getName()).put(OracleAdapter.class.getName(), OracleUnitDbAdapter.class.getName()).put(DerbyAdapter.class.getName(), DerbyUnitDbAdapter.class.getName()).put(Oracle8Adapter.class.getName(), OracleUnitDbAdapter.class.getName()).put(SybaseAdapter.class.getName(), SybaseUnitDbAdapter.class.getName()).put(MySQLAdapter.class.getName(), MySQLUnitDbAdapter.class.getName()).put(PostgresAdapter.class.getName(), PostgresUnitDbAdapter.class.getName()).put(OpenBaseAdapter.class.getName(), OpenBaseUnitDbAdapter.class.getName()).put(SQLServerAdapter.class.getName(), SQLServerUnitDbAdapter.class.getName()).put(DB2Adapter.class.getName(), DB2UnitDbAdapter.class.getName()).put(HSQLDBAdapter.class.getName(), HSQLDBUnitDbAdapter.class.getName()).put(H2Adapter.class.getName(), H2UnitDbAdapter.class.getName()).put(FrontBaseAdapter.class.getName(), FrontBaseUnitDbAdapter.class.getName()).put(IngresAdapter.class.getName(), IngresUnitDbAdapter.class.getName()).put(SQLiteAdapter.class.getName(), SQLiteUnitDbAdapter.class.getName());
ServerModule.contributeProperties(binder).put(Constants.SERVER_OBJECT_RETAIN_STRATEGY_PROPERTY, "soft");
ServerModule.contributeDomainFilters(binder);
ServerModule.contributeDomainSyncFilters(binder);
ServerModule.contributeDomainQueryFilters(binder);
binder.bind(PkGeneratorFactoryProvider.class).to(PkGeneratorFactoryProvider.class);
binder.bind(PkGenerator.class).to(JdbcPkGenerator.class);
ServerModule.contributePkGenerators(binder).put(DB2Adapter.class.getName(), DB2PkGenerator.class).put(DerbyAdapter.class.getName(), DerbyPkGenerator.class).put(FrontBaseAdapter.class.getName(), FrontBasePkGenerator.class).put(H2Adapter.class.getName(), H2PkGenerator.class).put(IngresAdapter.class.getName(), IngresPkGenerator.class).put(MySQLAdapter.class.getName(), MySQLPkGenerator.class).put(OpenBaseAdapter.class.getName(), OpenBasePkGenerator.class).put(OracleAdapter.class.getName(), OraclePkGenerator.class).put(Oracle8Adapter.class.getName(), OraclePkGenerator.class).put(PostgresAdapter.class.getName(), PostgresPkGenerator.class).put(SQLServerAdapter.class.getName(), SybasePkGenerator.class).put(SybaseAdapter.class.getName(), SybasePkGenerator.class);
// configure extended types
ServerModule.contributeDefaultTypes(binder).add(new VoidType()).add(new BigDecimalType()).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.class)).add(new CalendarType<>(Calendar.class)).add(new DurationType());
ServerModule.contributeUserTypes(binder);
ServerModule.contributeTypeFactories(binder).add(new InternalUnsupportedTypeFactory());
ServerModule.contributeValueObjectTypes(binder).add(BigIntegerValueType.class).add(BigDecimalValueType.class).add(UUIDValueType.class).add(LocalDateValueType.class).add(LocalTimeValueType.class).add(LocalDateTimeValueType.class).add(PeriodValueType.class).add(CharacterValueType.class);
binder.bind(ValueObjectTypeRegistry.class).to(DefaultValueObjectTypeRegistry.class);
binder.bind(ValueComparisonStrategyFactory.class).to(DefaultValueComparisonStrategyFactory.class);
binder.bind(SchemaBuilder.class).to(SchemaBuilder.class);
binder.bind(JdbcEventLogger.class).to(Slf4jJdbcEventLogger.class);
binder.bind(RuntimeProperties.class).to(DefaultRuntimeProperties.class);
binder.bind(ObjectMapRetainStrategy.class).to(DefaultObjectMapRetainStrategy.class);
// singleton objects
binder.bind(UnitTestLifecycleManager.class).toInstance(new ServerCaseLifecycleManager(testScope));
binder.bindMap(TestContainerProvider.class).put("mysql", MysqlContainerProvider.class).put("mariadb", MariaDbContainerProvider.class).put("postgres", PostgresContainerProvider.class).put("sqlserver", SqlServerContainerProvider.class).put("oracle", OracleContainerProvider.class).put("db2", Db2ContainerProvider.class);
binder.bind(DataSourceInfo.class).toProvider(ServerCaseDataSourceInfoProvider.class);
binder.bind(DataSourceFactory.class).to(ServerCaseSharedDataSourceFactory.class);
binder.bind(DbAdapter.class).toProvider(ServerCaseDbAdapterProvider.class);
binder.bind(JdbcAdapter.class).toProvider(ServerCaseDbAdapterProvider.class);
binder.bind(UnitDbAdapter.class).toProvider(UnitDbAdapterProvider.class);
// this factory is a hack that allows to inject to DbAdapters loaded outside of
// server runtime... BatchQueryBuilderFactory is hardcoded and whatever is placed
// in the ServerModule is ignored
binder.bind(BatchTranslatorFactory.class).toProvider(ServerCaseBatchQueryBuilderFactoryProvider.class);
binder.bind(DataChannelInterceptor.class).to(ServerCaseDataChannelInterceptor.class);
binder.bind(SQLTemplateCustomizer.class).toProvider(SQLTemplateCustomizerProvider.class);
binder.bind(ServerCaseDataSourceFactory.class).to(ServerCaseDataSourceFactory.class);
binder.bind(ClassLoaderManager.class).to(DefaultClassLoaderManager.class);
binder.bind(AdhocObjectFactory.class).to(DefaultAdhocObjectFactory.class);
binder.bind(ResourceLocator.class).to(ClassLoaderResourceLocator.class);
binder.bind(Key.get(ResourceLocator.class, Constants.SERVER_RESOURCE_LOCATOR)).to(ClassLoaderResourceLocator.class);
binder.bind(ObjectStoreFactory.class).to(DefaultObjectStoreFactory.class);
binder.bind(DataMapLoader.class).to(XMLDataMapLoader.class);
binder.bind(ConfigurationNameMapper.class).to(DefaultConfigurationNameMapper.class);
binder.bind(HandlerFactory.class).to(DefaultHandlerFactory.class);
binder.bind(DataChannelMetaData.class).to(NoopDataChannelMetaData.class);
binder.bind(XMLReader.class).toProviderInstance(new XMLReaderProvider(false)).withoutScope();
// test-scoped objects
binder.bind(EntityResolver.class).toProvider(ServerCaseEntityResolverProvider.class).in(testScope);
binder.bind(DataNode.class).toProvider(ServerCaseDataNodeProvider.class).in(testScope);
binder.bind(ServerCaseProperties.class).to(ServerCaseProperties.class).in(testScope);
binder.bind(ServerRuntime.class).toProvider(ServerRuntimeProvider.class).in(testScope);
binder.bind(ObjectContext.class).toProvider(ServerCaseObjectContextProvider.class).withoutScope();
binder.bind(DataContext.class).toProvider(ServerCaseDataContextProvider.class).withoutScope();
binder.bind(DBHelper.class).toProvider(FlavoredDBHelperProvider.class).in(testScope);
binder.bind(DBCleaner.class).toProvider(DBCleanerProvider.class).in(testScope);
}
use of org.apache.cayenne.access.types.TimeType in project cayenne by apache.
the class MySQLAdapter method configureExtendedTypes.
/**
* Installs appropriate ExtendedTypes used as converters for passing values
* between JDBC and Java layers.
*/
@Override
protected void configureExtendedTypes(ExtendedTypeMap map) {
super.configureExtendedTypes(map);
// must handle CLOBs as strings, otherwise there
// are problems with NULL clobs that are treated
// as empty strings... somehow this doesn't happen
// for BLOBs (ConnectorJ v. 3.0.9)
CharType charType = new CharType(false, false);
map.registerType(charType);
map.registerType(new ByteArrayType(false, false));
map.registerType(new JsonType(charType, true));
// register non-default types for the dates, see CAY-2691
map.registerType(new DateType(true));
map.registerType(new TimeType(true));
map.registerType(new TimestampType(true));
map.registerType(new UtilDateType(true));
}
Aggregations