# Deprecated API

## Contents

- Deprecated Interfaces
- Deprecated Classes
- Deprecated Fields
- Deprecated Methods
- Deprecated Constructors

- Deprecated Interfaces
  Interface and Description
  org.apache.cayenne.access.DataPortDelegate since 4.0
  org.apache.cayenne.map.EntityListenerFactory since 4.0, as EntityResolver no longer loads listeners from its DataMaps.
  org.apache.cayenne.reflect.Property since 4.0 renamed to PropertyDescriptor.

- Deprecated Classes
  Class and Description
  org.apache.cayenne.configuration.rop.client.ClientLocalRuntime since 4.0, use `ClientRuntimeBuilder.local(Injector)`
  org.apache.cayenne.access.DataPort since 4.0
  org.apache.cayenne.cache.EhCacheQueryCache since 4.0 please use JCacheQueryCache (provided by "cayenne-jcache" module)
  org.apache.cayenne.map.EntityListener since 4.0, as EntityResolver no longer loads listeners from its DataMaps.
  org.apache.cayenne.query.NamedQuery since 4.0 you should use `MappedSelect` or `MappedExec` instead.
  org.apache.cayenne.cache.OSQueryCache since 4.0 as OSCache project is abandoned
  org.apache.cayenne.access.Transaction since 4.0. For manual transaction management use `BaseTransaction` static methods or better - `ServerRuntime.performInTransaction(org.apache.cayenne.tx.TransactionalOperation)` . Also note that since 4.0 an actual Transaction is an interface located in a different package: `Transaction`

- Deprecated Fields
  Field and Description
  org.apache.cayenne.dba.JdbcAdapter.batchQueryBuilderFactory since 4.0 BatchQueryBuilderfactory is attached to the DataNode.
  org.apache.cayenne.configuration.server.ServerModule.configurationLocations
  org.apache.cayenne.query.AbstractQuery.dataMap
  org.apache.cayenne.query.BatchQuery.dataMap
  org.apache.cayenne.query.EJBQLQuery.dataMap
  org.apache.cayenne.query.QueryChain.dataMap
  org.apache.cayenne.map.ObjEntity.entityListeners
  org.apache.cayenne.access.DataRowStore.EVENT_BRIDGE_FACTORY_DEFAULT since 4.0 does nothing.
  org.apache.cayenne.access.DataRowStore.EVENT_BRIDGE_FACTORY_PROPERTY since 4.0 `DataRowStoreFactory` establishes `EventBridge`.
  org.apache.cayenne.map.ObjEntity.excludingDefaultListeners
  org.apache.cayenne.map.ObjEntity.excludingSuperclassListeners
  org.apache.cayenne.map.EntityResolver.indexedByClass
  org.apache.cayenne.query.AbstractQuery.name
  org.apache.cayenne.query.BatchQuery.name
  org.apache.cayenne.query.EJBQLQuery.name
  org.apache.cayenne.query.QueryChain.name
  org.apache.cayenne.access.DataRowStore.notifyingRemoteListeners since 4.0 does nothing. Previously it used to check if need to create `EventBridge`.
  org.apache.cayenne.configuration.rop.client.ClientModule.properties since 4.0 in favour of `ClientRuntimeBuilder`
  org.apache.cayenne.access.DataRowStore.REMOTE_NOTIFICATION_DEFAULT
  org.apache.cayenne.access.DataRowStore.REMOTE_NOTIFICATION_PROPERTY since 4.0 does nothing. Previously it used to check if need to create `EventBridge`.
  org.apache.cayenne.configuration.Constants.ROP_CHANNEL_EVENTS_PROPERTY since 4.0 moved to cayenne-client org.apache.cayenne.configuration.rop.client.ClientConstants.
  org.apache.cayenne.configuration.Constants.ROP_CONTEXT_CHANGE_EVENTS_PROPERTY since 4.0 moved to cayenne-client org.apache.cayenne.configuration.rop.client.ClientConstants.
  org.apache.cayenne.configuration.Constants.ROP_CONTEXT_LIFECYCLE_EVENTS_PROPERTY since 4.0 moved to cayenne-client org.apache.cayenne.configuration.rop.client.ClientConstants.
  org.apache.cayenne.configuration.Constants.ROP_SERVICE_PASSWORD_PROPERTY since 4.0 moved to cayenne-client org.apache.cayenne.configuration.rop.client.ClientConstants.
  org.apache.cayenne.configuration.Constants.ROP_SERVICE_REALM_PROPERTY since 4.0 moved to cayenne-client org.apache.cayenne.configuration.rop.client.ClientConstants.
  org.apache.cayenne.configuration.Constants.ROP_SERVICE_SHARED_SESSION_PROPERTY since 4.0 moved to cayenne-client org.apache.cayenne.configuration.rop.client.ClientConstants.
  org.apache.cayenne.configuration.Constants.ROP_SERVICE_TIMEOUT_PROPERTY since 4.0 moved to cayenne-client org.apache.cayenne.configuration.rop.client.ClientConstants.
  org.apache.cayenne.configuration.Constants.ROP_SERVICE_URL_PROPERTY since 4.0 moved to cayenne-client org.apache.cayenne.configuration.rop.client.ClientConstants.
  org.apache.cayenne.configuration.Constants.ROP_SERVICE_USE_ALPN_PROPERTY since 4.0 moved to cayenne-client org.apache.cayenne.configuration.rop.client.ClientConstants.
  org.apache.cayenne.configuration.Constants.ROP_SERVICE_USERNAME_PROPERTY since 4.0 moved to cayenne-client org.apache.cayenne.configuration.rop.client.ClientConstants.
  org.apache.cayenne.configuration.Constants.SERVER_MAX_QUEUE_WAIT_TIME since 4.0 renamed to `Constants.JDBC_MAX_QUEUE_WAIT_TIME`. Property name is preserved.
  org.apache.cayenne.access.DataRowStore.SNAPSHOT_CACHE_SIZE_PROPERTY since 4.0, use `Constants.SNAPSHOT_CACHE_SIZE_PROPERTY`
  org.apache.cayenne.access.DataRowStore.SNAPSHOT_EXPIRATION_PROPERTY since 4.0, never used actually
  org.apache.cayenne.access.DataContext.transactionFactory since 4.0 used in a method that itself should be deprecated, so this is a temp code
  org.apache.cayenne.access.DataDomain.USING_EXTERNAL_TRANSACTIONS_DEFAULT since 4.0 See `Constants.SERVER_EXTERNAL_TX_PROPERTY`.
  org.apache.cayenne.access.DataDomain.USING_EXTERNAL_TRANSACTIONS_PROPERTY since 4.0 See `Constants.SERVER_EXTERNAL_TX_PROPERTY`.

- Deprecated Methods
  Method and Description
  org.apache.cayenne.map.DataMap.addDefaultEntityListener(EntityListener) since 4.0 unused as listeners are no longer tied to a DataMap.
  org.apache.cayenne.map.ObjEntity.addEntityListener(EntityListener) since 4.0 unused, as listeners are no longer mapped in a DataMap.
  org.apache.cayenne.reflect.LifecycleCallbackRegistry.addListener(LifecycleEvent, Class<?>, String)
  org.apache.cayenne.map.EntityResolver.applyObjectLayerDefaults() since 4.0 does nothing. Previously it used to create runtime ObjRelationships, that broke a lot of things.
  org.apache.cayenne.di.Binder.bindList(String) since 4.0, use type-safe methods `Binder.bindList(Class)` or `Binder.bindList(Class, String)`
  org.apache.cayenne.di.Binder.bindMap(String) since 4.0, use use type-safe methods `Binder.bindMap(Class)` or `Binder.bindMap(Class, String)`
  org.apache.cayenne.access.Transaction.bindThreadTransaction(Transaction)
  org.apache.cayenne.configuration.server.ServerRuntimeBuilder.builder() since 4.0.M5 in favor of `ServerRuntime.builder()`
  org.apache.cayenne.configuration.server.ServerRuntimeBuilder.builder(String) since 4.0.M5 in favor of `ServerRuntime.builder(String)`
  org.apache.cayenne.cache.NestedQueryCache.clear() since 4.0
  org.apache.cayenne.cache.QueryCache.clear() since 4.0. Please use implementation specific methods to perform cache management tasks.
  org.apache.cayenne.map.EntityResolver.clearCache() since 4.0 in favor of `EntityResolver.refreshMappingCache()`.
  org.apache.cayenne.remote.RemoteSession.createServerEventBridge() since 4.0. Factory creation should is handled by the client connection.
  org.apache.cayenne.exp.Expression.encodeAsEJBQL(PrintWriter, String) since 4.0 use `Expression.appendAsEJBQL(Appendable, String)`
  org.apache.cayenne.exp.parser.SimpleNode.encodeAsEJBQL(PrintWriter, String) since 4.0 use `SimpleNode.appendAsEJBQL(Appendable, String)`.
  org.apache.cayenne.exp.Expression.encodeAsString(PrintWriter) since 4.0 use `Expression.appendAsString(Appendable)`.
  org.apache.cayenne.exp.parser.SimpleNode.encodeAsString(PrintWriter) since 4.0 use `SimpleNode.appendAsString(Appendable)`.
  org.apache.cayenne.exp.Expression.expWithParameters(Map<String, ?>) since 4.0 use `Expression.params(Map)`
  org.apache.cayenne.exp.Expression.expWithParameters(Map<String, ?>, boolean) since 4.0 use `Expression.params(Map, boolean)` instead.
  org.apache.cayenne.exp.Expression.fromString(String) since 4.0 use `ExpressionFactory.exp(String, Object...)`
  org.apache.cayenne.dba.JdbcAdapter.getBatchQueryBuilderFactory() since 4.0 BatchQueryBuilderfactory is attached to the DataNode.
  org.apache.cayenne.query.CacheableQuery.getCacheGroups() since 4.0, use `CacheableQuery.getCacheGroup()`
  org.apache.cayenne.query.QueryMetadata.getCacheGroups() since 4.0 only single cache group supported, use `QueryMetadata.getCacheGroup()` instead
  org.apache.cayenne.query.QueryMetadataProxy.getCacheGroups()
  org.apache.cayenne.resource.ClassLoaderResourceLocator.getClassLoader() since 4.0 unused, as AdhocObjectFactory.getClassLoader() is used instead.
  org.apache.cayenne.ejbql.parser.JavaCharStream.getColumn()
  org.apache.cayenne.exp.parser.JavaCharStream.getColumn()
  org.apache.cayenne.datasource.DriverDataSource.getConnectionUrl() since 4.0. Connection parameters are immutable and not readable.
  org.apache.cayenne.configuration.CayenneRuntime.getContext() since 3.1 use better named `CayenneRuntime.newContext()` instead.
  org.apache.cayenne.configuration.CayenneRuntime.getContext(DataChannel) since 3.1 use better named `CayenneRuntime.newContext(DataChannel)` instead.
  org.apache.cayenne.query.AbstractQuery.getDataMap()
  org.apache.cayenne.query.BatchQuery.getDataMap()
  org.apache.cayenne.query.EJBQLQuery.getDataMap()
  org.apache.cayenne.query.IndirectQuery.getDataMap()
  org.apache.cayenne.query.Query.getDataMap() since 4.0, `QueryDescriptor.getDataMap()` should be used instead
  org.apache.cayenne.query.QueryChain.getDataMap()
  org.apache.cayenne.query.RefreshQuery.getDataMap()
  org.apache.cayenne.access.DataNode.getDataSourceLocation() since 4.0. This information is irrelevant at the DataNode level
  org.apache.cayenne.cache.EhCacheQueryCache.getDefaultCache() since 4.0 - this method is no longer in use. If you are overriding it, override `EhCacheQueryCache.cacheName(QueryMetadata)` instead.
  org.apache.cayenne.map.DataMap.getDefaultEntityListener(String) since 4.0 unused, as listeners are no longer tied to a DataMap.
  org.apache.cayenne.map.DataMap.getDefaultEntityListeners() since 4.0 unused as listeners are no longer tied to a DataMap.
  org.apache.cayenne.map.ObjEntity.getEntityListener(String) since 4.0 unused, as listeners are no longer mapped in a DataMap.
  org.apache.cayenne.map.ObjEntity.getEntityListeners() since 4.0 unused, as listeners are no longer mapped in a DataMap.
  org.apache.cayenne.map.Embeddable.getJavaClass() since 4.0 this method based on statically defined class loading algorithm is not going to work in environments like OSGi. `AdhocObjectFactory` should be used as it can provide the environment-specific class loading policy.
  org.apache.cayenne.map.ObjEntity.getJavaClass() since 4.0 this method based on statically defined class loading algorithm is not going to work in environments like OSGi. `AdhocObjectFactory` should be used as it can provide the environment-specific class loading policy.
  org.apache.cayenne.util.Util.getJavaClass(String) since 4.0 this method based on statically defined class loading algorithm is not going to work in environments like OSGi. `AdhocObjectFactory` should be used as it can provide the environment-specific class loading policy.
  org.apache.cayenne.ejbql.parser.JavaCharStream.getLine()
  org.apache.cayenne.exp.parser.JavaCharStream.getLine()
  org.apache.cayenne.query.AbstractQuery.getName()
  org.apache.cayenne.query.BatchQuery.getName()
  org.apache.cayenne.query.EJBQLQuery.getName()
  org.apache.cayenne.query.IndirectQuery.getName()
  org.apache.cayenne.query.Query.getName() `QueryDescriptor.getName()` should be used instead
  org.apache.cayenne.query.QueryChain.getName()
  org.apache.cayenne.query.QueryMetadata.getOrginatingQuery() since 4.0, use `QueryMetadata.getOriginatingQuery()`
  org.apache.cayenne.query.QueryMetadataProxy.getOrginatingQuery()
  org.apache.cayenne.datasource.DriverDataSource.getPassword() since 4.0. Connection parameters are immutable and not readable.
  org.apache.cayenne.conn.DataSourceInfo.getPasswordEncoder() since 4.0 as class loading should not happen here.
  org.apache.cayenne.dba.AutoAdapter.getQuotingStrategy(boolean) since 4.0
  org.apache.cayenne.dba.DbAdapter.getQuotingStrategy(boolean) since 4.0 use `DbAdapter.getQuotingStrategy()`.
  org.apache.cayenne.dba.JdbcAdapter.getQuotingStrategy(boolean) since 4.0 use `JdbcAdapter.getQuotingStrategy()`.
  org.apache.cayenne.map.EntityResolver.getResultSets() since 4.0 use `EntityResolver.getResults()`.
  org.apache.cayenne.access.Transaction.getThreadTransaction()
  org.apache.cayenne.datasource.DriverDataSource.getUserName() since 4.0. Connection parameters are immutable and not readable.
  org.apache.cayenne.access.DataDomain.initWithProperties(Map<String, String>) since 4.0 properties are processed by the DI provider.
  org.apache.cayenne.access.jdbc.JDBCResultIterator.isClosingConnection() since 4.0 always returns false. Connection closing is outside the scope of this iterator. See `ConnectionAwareResultIterator` for a replacement.
  org.apache.cayenne.map.ObjEntity.isExcludingDefaultListeners() since 4.0 unused, as listeners are no longer mapped in a DataMap.
  org.apache.cayenne.map.ObjEntity.isExcludingSuperclassListeners() since 4.0 unused, as listeners are no longer mapped in a DataMap.
  org.apache.cayenne.map.EntityResolver.isIndexedByClass() since 4.0. There's no replacement. This property is meaningless and is no longer respected by the code.
  org.apache.cayenne.access.DataRowStore.isNotifyingRemoteListeners()
  org.apache.cayenne.log.JdbcEventLogger.logConnect(String) since 4.0 connection events are logged by the DataSources using their own logger.
  org.apache.cayenne.log.NoopJdbcEventLogger.logConnect(String)
  org.apache.cayenne.log.Slf4jJdbcEventLogger.logConnect(String)
  org.apache.cayenne.log.JdbcEventLogger.logConnect(String, String, String) since 4.0 connection events are logged by the DataSources using their own logger.
  org.apache.cayenne.log.NoopJdbcEventLogger.logConnect(String, String, String)
  org.apache.cayenne.log.Slf4jJdbcEventLogger.logConnect(String, String, String)
  org.apache.cayenne.log.JdbcEventLogger.logConnectFailure(Throwable) since 4.0 connection events are logged by the DataSources using their own logger.
  org.apache.cayenne.log.NoopJdbcEventLogger.logConnectFailure(Throwable)
  org.apache.cayenne.log.Slf4jJdbcEventLogger.logConnectFailure(Throwable)
  org.apache.cayenne.log.JdbcEventLogger.logConnectSuccess() since 4.0 connection events are logged by the DataSources using their own logger.
  org.apache.cayenne.log.NoopJdbcEventLogger.logConnectSuccess()
  org.apache.cayenne.log.Slf4jJdbcEventLogger.logConnectSuccess()
  org.apache.cayenne.log.JdbcEventLogger.logPoolCreated(DataSourceInfo) since 4.0 connection events are logged by the DataSources using their own logger.
  org.apache.cayenne.log.NoopJdbcEventLogger.logPoolCreated(DataSourceInfo)
  org.apache.cayenne.log.Slf4jJdbcEventLogger.logPoolCreated(DataSourceInfo)
  org.apache.cayenne.log.JdbcEventLogger.logQuery(String, List<?>) since 4.0 use `JdbcEventLogger.logQuery(String, ParameterBinding[])`.
  org.apache.cayenne.log.NoopJdbcEventLogger.logQuery(String, List<?>)
  org.apache.cayenne.log.Slf4jJdbcEventLogger.logQuery(String, List<?>) since 4.0 use `#logQuery(String, ParameterBinding[], long)`.
  org.apache.cayenne.log.FormattedSlf4jJdbcEventLogger.logQuery(String, List<DbAttribute>, List<?>, long)
  org.apache.cayenne.log.JdbcEventLogger.logQuery(String, List<DbAttribute>, List<?>, long) since 4.0 use `JdbcEventLogger.logQuery(String, ParameterBinding[])`.
  org.apache.cayenne.log.NoopJdbcEventLogger.logQuery(String, List<DbAttribute>, List<?>, long)
  org.apache.cayenne.log.Slf4jJdbcEventLogger.logQuery(String, List<DbAttribute>, List<?>, long)
  org.apache.cayenne.log.JdbcEventLogger.logQueryParameters(String, List<DbAttribute>, List<Object>, boolean) since 4.0 use `JdbcEventLogger.logQueryParameters(String, ParameterBinding[])`
  org.apache.cayenne.log.NoopJdbcEventLogger.logQueryParameters(String, List<DbAttribute>, List<Object>, boolean)
  org.apache.cayenne.log.Slf4jJdbcEventLogger.logQueryParameters(String, List<DbAttribute>, List<Object>, boolean) since 4.0
  org.apache.cayenne.map.EntityResolver.lookupInheritanceTree(String) since 4.0 use `EntityResolver.getInheritanceTree(String)`.
  org.apache.cayenne.map.EntityResolver.lookupObjEntity(Class<?>) since 4.0, use `EntityResolver.getObjEntity(Class)`.
  org.apache.cayenne.map.EntityResolver.lookupObjEntity(Object)
  org.apache.cayenne.map.EntityResolver.lookupProcedure(Query) since 4.0. Use q.getMetaData(resolver).getProcedure()
  org.apache.cayenne.map.EntityResolver.lookupProcedure(String) since 4.0 use `EntityResolver.getProcedure(String)`.
  org.apache.cayenne.dba.DefaultQuotingStrategy.quoteFullyQualifiedName(DbEntity)
  org.apache.cayenne.dba.QuotingStrategy.quoteFullyQualifiedName(DbEntity) since 4.0 renamed to `QuotingStrategy.quotedFullyQualifiedName(DbEntity)`.
  org.apache.cayenne.dba.DefaultQuotingStrategy.quoteString(String) since 4.0
  org.apache.cayenne.dba.QuotingStrategy.quoteString(String) since 4.0
  org.apache.cayenne.map.DataMap.removeDefaultEntityListener(String) since 4.0 unused as listeners are no longer tied to a DataMap.
  org.apache.cayenne.map.ObjEntity.removeEntityListener(String) since 4.0 unused, as listeners are no longer mapped in a DataMap.
  org.apache.cayenne.dba.JdbcAdapter.setBatchQueryBuilderFactory(BatchTranslatorFactory) since 4.0 BatchQueryBuilderfactory is attached to the DataNode.
  org.apache.cayenne.query.CacheableQuery.setCacheGroups(String...) since 4.0, use `CacheableQuery.setCacheGroup(String)`
  org.apache.cayenne.access.jdbc.JDBCResultIterator.setClosingConnection(boolean) since 4.0 does nothing. Connection closing is outside the scope of this iterator. See `ConnectionAwareResultIterator` for a replacement.
  org.apache.cayenne.datasource.DriverDataSource.setConnectionUrl(String) since 4.0. Connection parameters are immutable.
  org.apache.cayenne.query.AbstractQuery.setDataMap(DataMap)
  org.apache.cayenne.query.BatchQuery.setDataMap(DataMap)
  org.apache.cayenne.query.EJBQLQuery.setDataMap(DataMap)
  org.apache.cayenne.query.IndirectQuery.setDataMap(DataMap)
  org.apache.cayenne.query.QueryChain.setDataMap(DataMap)
  org.apache.cayenne.access.DataNode.setDataSourceLocation(String) since 4.0. This information is irrelevant at the DataNode level
  org.apache.cayenne.map.EntityResolver.setEntityListenerFactory(EntityListenerFactory) since 4.0 this method does nothing, as EntityResolver no longer loads listeners from its DataMaps.
  org.apache.cayenne.map.ObjEntity.setExcludingDefaultListeners(boolean) since 4.0 unused, as listeners are no longer mapped in a DataMap.
  org.apache.cayenne.map.ObjEntity.setExcludingSuperclassListeners(boolean) since 4.0 unused, as listeners are no longer mapped in a DataMap.
  org.apache.cayenne.query.SelectQuery.setFetchingDataRows(boolean) since 4.0, use `SelectQuery.dataRowQuery(Class, Expression)` to create DataRow query instead.
  org.apache.cayenne.map.EntityResolver.setIndexedByClass(boolean) since 4.0. There's no replacement. This property is meaningless.
  org.apache.cayenne.query.AbstractQuery.setName(String)
  org.apache.cayenne.query.EJBQLQuery.setName(String)
  org.apache.cayenne.query.IndirectQuery.setName(String)
  org.apache.cayenne.query.QueryChain.setName(String)
  org.apache.cayenne.access.DataRowStore.setNotifyingRemoteListeners(boolean)
  org.apache.cayenne.datasource.DriverDataSource.setPassword(String) since 4.0. Connection parameters are immutable.
  org.apache.cayenne.access.DataContext.setTransactionFactory(TransactionFactory) since 4.0 avoid using this directly. Transaction management at this level will be eventually removed
  org.apache.cayenne.datasource.DriverDataSource.setUserName(String) since 4.0. Connection parameters are immutable.
  org.apache.cayenne.cache.NestedQueryCache.size() since 4.0
  org.apache.cayenne.cache.QueryCache.size() since 4.0. Please use implementation specific methods to perform cache management tasks.
  org.apache.cayenne.query.BatchQuery.size() since 4.0 use getRows().size().
  org.apache.cayenne.dba.TypesMapping.supportsLength(int) Returns true if supplied type can have a length attribute as a part of column definition.
  org.apache.cayenne.query.CacheableQuery.useLocalCache(String...) since 4.0, use `CacheableQuery.useLocalCache(String)`
  org.apache.cayenne.query.CacheableQuery.useSharedCache(String...) since 4.0, use `CacheableQuery.useSharedCache(String)`

- Deprecated Constructors
  Constructor and Description
  org.apache.cayenne.configuration.rop.client.ClientModule(Map<String, String>) since 4.0 in favour of `ClientRuntimeBuilder`
  org.apache.cayenne.configuration.rop.client.ClientRuntime(Map<String, String>, Collection<Module>) since 4.0, use `ClientRuntime.builder()` instead.
  org.apache.cayenne.configuration.rop.client.ClientRuntime(Map<String, String>, Module...) since 4.0, use `ClientRuntime.builder()` instead.
  org.apache.cayenne.access.DataDomain(String, Map<String, String>) since 4.0 unused
  org.apache.cayenne.datasource.DriverDataSource(String, String) since 4.0 as class loading should not happen here. Use { `DriverDataSource(Driver, String, String, String)`.
  org.apache.cayenne.datasource.DriverDataSource(String, String, String, String) since 4.0 as class loading should not happen here. Use `DriverDataSource(Driver, String, String, String)`.
  org.apache.cayenne.exp.Property(String) use factory method Property.create("propertyName", PropertyType.class)
  org.apache.cayenne.query.RefreshQuery() since 4.0, "refresh all" query will drop all cache contents
  org.apache.cayenne.configuration.server.ServerModule(String, String...) since 4.0 use `ServerRuntimeBuilder.addConfig(String)` and/or `ServerModule.contributeProjectLocations(Binder)` to specify locations.
  org.apache.cayenne.configuration.server.ServerRuntime(String[], Module...) since 4.0 use `ServerRuntime.builder()`.
  org.apache.cayenne.configuration.server.ServerRuntime(String, Module...) since 4.0 use `ServerRuntime.builder()`.
  org.apache.cayenne.configuration.server.ServerRuntimeBuilder() since 4.0.M5 in favor of `ServerRuntime.builder()`
  org.apache.cayenne.configuration.server.ServerRuntimeBuilder(String) since 4.0.M5 in favor of `ServerRuntime.builder(String)`

Copyright © 2001–2023 Apache Cayenne. All rights reserved.