blob: 703b487fe1e11511e78373cf8bea8c4b4b7b2576 [file] [log] [blame]
/*
* Licensed to the Apache Software Foundation (ASF) under one
* or more contributor license agreements. See the NOTICE file
* distributed with this work for additional information
* regarding copyright ownership. The ASF licenses this file
* to you under the Apache License, Version 2.0 (the
* "License"); you may not use this file except in compliance
* with the License. You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing,
* software distributed under the License is distributed on an
* "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
* KIND, either express or implied. See the License for the
* specific language governing permissions and limitations
* under the License.
*/
package org.apache.openjpa.conf;
import java.util.Collection;
import java.util.Map;
import org.apache.openjpa.audit.Auditor;
import org.apache.openjpa.datacache.CacheDistributionPolicy;
import org.apache.openjpa.datacache.DataCache;
import org.apache.openjpa.datacache.DataCacheManager;
import org.apache.openjpa.datacache.DataCacheMode;
import org.apache.openjpa.ee.ManagedRuntime;
import org.apache.openjpa.enhance.RuntimeUnenhancedClassesModes;
import org.apache.openjpa.event.BrokerFactoryEventManager;
import org.apache.openjpa.event.LifecycleEventManager;
import org.apache.openjpa.event.OrphanedKeyAction;
import org.apache.openjpa.event.RemoteCommitEventManager;
import org.apache.openjpa.event.RemoteCommitProvider;
import org.apache.openjpa.instrumentation.InstrumentationManager;
import org.apache.openjpa.kernel.AutoClear;
import org.apache.openjpa.kernel.AutoDetach;
import org.apache.openjpa.kernel.BrokerFactory;
import org.apache.openjpa.kernel.BrokerImpl;
import org.apache.openjpa.kernel.ConnectionRetainModes;
import org.apache.openjpa.kernel.FetchConfiguration;
import org.apache.openjpa.kernel.FinderCache;
import org.apache.openjpa.kernel.InverseManager;
import org.apache.openjpa.kernel.LockManager;
import org.apache.openjpa.kernel.PreparedQueryCache;
import org.apache.openjpa.kernel.QueryFlushModes;
import org.apache.openjpa.kernel.RestoreState;
import org.apache.openjpa.kernel.SavepointManager;
import org.apache.openjpa.kernel.Seq;
import org.apache.openjpa.kernel.exps.AggregateListener;
import org.apache.openjpa.kernel.exps.FilterListener;
import org.apache.openjpa.lib.conf.Configuration;
import org.apache.openjpa.lib.encryption.EncryptionProvider;
import org.apache.openjpa.meta.MetaDataFactory;
import org.apache.openjpa.meta.MetaDataRepository;
import org.apache.openjpa.util.ClassResolver;
import org.apache.openjpa.util.ProxyManager;
import org.apache.openjpa.util.StoreFacadeTypeRegistry;
/**
* Defines the properties necessary to configure runtime properties and
* connect to a data source. There is a 1-1 relation between a configuration
* and a {@link BrokerFactory}.
* All setter methods that take primitive parameters also have wrapper
* setter with the appropriate primitive wrapper. This is so the interface
* can be in accordance with the J2EE Connector Architecture.
*
* @author Marc Prud'hommeaux
* @author Abe White
* @see Configuration
*/
public interface OpenJPAConfiguration
extends Configuration {
/**
* Name of logger for metadata-related messages:
* <code>openjpa.MetaData</code>.
*/
String LOG_METADATA = "openjpa.MetaData";
/**
* Name of logger for enhancement-related messages:
* <code>openjpa.Enhance</code>.
*/
String LOG_ENHANCE = "openjpa.Enhance";
/**
* Name of logger for messages from the runtime system:
* <code>openjpa.Runtime</code>.
*/
String LOG_RUNTIME = "openjpa.Runtime";
/**
* Name of logger for query logging:
* <code>openjpa.Query</code>.
*/
String LOG_QUERY = "openjpa.Query";
/**
* Name of logger for messages from the data cache:
* <code>openjpa.DataCache</code>.
*/
String LOG_DATACACHE = "openjpa.DataCache";
/**
* Name of logger for messages from the development tools:
* <code>openjpa.Tool</code>.
*/
String LOG_TOOL = "openjpa.Tool";
/**
* Option for runtimes that support nontransactional reads.
*/
String OPTION_NONTRANS_READ =
"openjpa.option.NontransactionalRead";
/**
* Option for runtimes that support optimistic transactions.
*/
String OPTION_OPTIMISTIC =
"openjpa.option.Optimistic";
/**
* Option for runtimes that support application identity.
*/
String OPTION_ID_APPLICATION =
"openjpa.option.ApplicationIdentity";
/**
* Option for runtimes that support application identity.
*/
String OPTION_ID_DATASTORE =
"openjpa.option.DatastoreIdentity";
/**
* Option for SQL support.
*/
String OPTION_QUERY_SQL = "openjpa.option.SQL";
/**
* Option for runtimes that support persistent collection fields.
*/
String OPTION_TYPE_COLLECTION =
"openjpa.option.Collection";
/**
* Option for runtimes that support persistent map fields.
*/
String OPTION_TYPE_MAP = "openjpa.option.Map";
/**
* Option for runtimes that support persistent array fields.
*/
String OPTION_TYPE_ARRAY = "openjpa.option.Array";
/**
* Option for runtime that can differentiate between null and empty
* container fields.
*/
String OPTION_NULL_CONTAINER =
"openjpa.option.NullContainer";
/**
* Option for runtimes that support embedded relations to other
* persistence capable objects.
*/
String OPTION_EMBEDDED_RELATION =
"openjpa.option.EmbeddedRelation";
/**
* Option for runtimes that support collections of embedded
* relations to other persistence capable objects.
*/
String OPTION_EMBEDDED_COLLECTION_RELATION =
"openjpa.option.EmbeddedCollectionRelation";
/**
* Option for runtimes that support maps of embedded
* relations to other persistence capable objects.
*/
String OPTION_EMBEDDED_MAP_RELATION =
"openjpa.option.EmbeddedMapRelation";
/**
* Option for runtimes that support incremental flushing.
*/
String OPTION_INC_FLUSH =
"openjpa.option.IncrementalFlush";
/**
* Option for runtimes that the autoassign value strategy.
*/
String OPTION_VALUE_AUTOASSIGN =
"openjpa.option.AutoassignValue";
/**
* Option for runtimes that the increment value strategy.
*/
String OPTION_VALUE_INCREMENT =
"openjpa.option.IncrementValue";
/**
* Option for runtimes that support returning the datastore connection.
*/
String OPTION_DATASTORE_CONNECTION =
"openjpa.option.DataStoreConnection";
/**
* Option for runtimes that support returning the datastore connection
* that is a JDBC Connection.
*/
String OPTION_JDBC_CONNECTION =
"openjpa.option.JDBCConnection";
/**
* Option for enable fire &#064;PostLoad events on merge operations
*/
String OPTION_POSTLOAD_ON_MERGE =
"openjpa.option.PostLoadOnMerge";
/**
* Option to enable TCCL if the result class for select new is not found
* in the entities classloader
*/
String OPTION_USE_TCCL_IN_SELECT_NEW =
"openjpa.option.UseTCCLinSelectNew";
/**
* Return the set of option strings supported by this runtime. This set
* is mutable.
*/
Collection<String> supportedOptions();
/**
* Get a name of the Specification. Specification determines various
* important default behaviors.
*/
String getSpecification();
/**
* Get the Specification. Specification determines various important default
* behaviors.
*
* @since 2.0.0
*/
Specification getSpecificationInstance();
/**
* Set the Specification for this configuration.
* Specification determines various default properties and behavior.
* For example, {@link Compatibility compatibility} options during runtime.
*
* This change will trigger all registered Product Derivations to mutate
* other configuration properties.
*
* @param spec fullname of the specification that possibly encodes major and
* minor version information. For encoding format
* @see Specification
*
* @since 1.1.0
*/
void setSpecification(String spec);
/**
* Set the Specification for this configuration.
* Specification determines various default properties and behavior.
* For example, {@link Compatibility compatibility} options during runtime.
*
* This change will trigger all registered Product Derivations to mutate
* other configuration properties.
*
* @param spec fullname of the specification that possibly encodes major and
* minor version information. For encoding format
* @see Specification
*
* @since 2.0.0
*/
void setSpecification(Specification spec);
/**
* The plugin string for the {@link ClassResolver} to use for custom
* class loading.
*/
String getClassResolver();
/**
* The plugin string for the {@link ClassResolver} to use for custom
* class loading.
*/
void setClassResolver(String classResolver);
/**
* The {@link ClassResolver} to use.
*/
ClassResolver getClassResolverInstance();
/**
* The {@link ClassResolver} to use.
*/
void setClassResolver(ClassResolver classResolver);
/**
* The {@link BrokerFactory} class to use.
*/
String getBrokerFactory();
/**
* The {@link BrokerFactory} class to use.
*/
void setBrokerFactory(String factory);
/**
* The plugin string of the {@link BrokerImpl} extension to create.
*/
String getBrokerImpl();
/**
* The plugin string of the {@link BrokerImpl} extension to create.
*/
void setBrokerImpl(String broker);
/**
* Create a new broker instance with the configured plugin data.
*/
BrokerImpl newBrokerInstance(String user, String pass);
/**
* The {@link DataCache} to use for level-2 data store caching.
*/
String getDataCache();
/**
* The {@link DataCache} to use for level-2 data store caching.
*/
void setDataCache(String dataCache);
/**
* The data cache manager manages this configuration's cache instances.
*/
String getDataCacheManager();
/**
* The data cache manager manages this configuration's cache instances.
*/
void setDataCacheManager(String mgr);
/**
* The data cache manager manages this configuration's cache instances.
* The cache manager is created if it has not been set. Once the cache
* manager has been set/created, all changes to caching configuration
* must proceed through the cache manager.
*
* @since 0.3.0
*/
DataCacheManager getDataCacheManagerInstance();
/**
* The data cache manager manages this configuration's cache instances.
*
* @since 0.3.0
*/
void setDataCacheManager(DataCacheManager manager);
/**
* Default data cache timeout.
*
* @since 0.2.5
*/
int getDataCacheTimeout();
/**
* Default data cache timeout.
*
* @since 0.2.5
*/
void setDataCacheTimeout(int timeout);
/**
* Wrapper for JCA usage of {@link #setDataCacheTimeout(int)}.
*
* @since 0.2.5
*/
void setDataCacheTimeout(Integer timeout);
/**
* Gets whether entity state is to be refreshed from {@link DataCache}.
* The entities are never refreshed from DataCache if lock is being applied
* (e.g. in a pessimistic transaction) and hence this setting only refers
* to behavior when not locking.
* This flag can be used to overwrite RetrieveMode.BYPASS.
* By default, however, this falg is false.
*
* @since 1.2.0
*/
boolean getRefreshFromDataCache();
/**
* Sets whether entity state is to be refreshed from {@link DataCache}.
* The entities are never refreshed from DataCache if lock is being applied
* (e.g. in a pessimistic transaction) and hence this setting only refers
* to behavior when not locking.
*
* @since 1.2.0
*/
void setRefreshFromDataCache(boolean refreshFromDataCache);
/**
* Sets whether entity state is to be refreshed from {@link DataCache}.
* The entities are never refreshed from DataCache if lock is being applied
* (e.g. in a pessimistic transaction) and hence this setting only refers
* to behavior when not locking.
*
* @since 1.2.0
*/
void setRefreshFromDataCache(Boolean refreshFromDataCache);
/**
* The plugin to use for level-2 data store query caching.
*
* @since 0.2.5
*/
String getQueryCache();
/**
* The plugin to use for level-2 data store query caching.
*
* @since 0.2.5
*/
void setQueryCache(String queryCache);
/**
* Return whether to generate dynamic data structures
* where possible for cache and runtime usage.
*
* @since 0.3.3
*/
boolean getDynamicDataStructs();
/**
* Set whether to generate dynamic data structures
* where possible for cache and runtime usage.
*
* @since 0.3.3
*/
void setDynamicDataStructs(boolean dynamic);
/**
* Wrapper for JCA usage of {@link #setDynamicDataStructs(boolean)}.
*/
void setDynamicDataStructs(Boolean dynamic);
/**
* The plugin to use for datastore lock management.
*
* @since 0.3.1
*/
String getLockManager();
/**
* The plugin to use for datastore lock management.
*
* @since 0.3.1
*/
void setLockManager(String lockManager);
/**
* Return a new lock manager instance using the configured plugin settings.
*/
LockManager newLockManagerInstance();
/**
* The plugin to use for managing inverse relations.
*
* @since 0.3.2
*/
String getInverseManager();
/**
* The plugin to use for managing inverse relations.
*
* @since 0.3.2
*/
void setInverseManager(String inverse);
/**
* Return a new inverse manager instance using the configured plugin
* settings.
*
* @since 0.3.2
*/
InverseManager newInverseManagerInstance();
/**
* The plugin to use for savepoint management.
*
* @since 0.3.4
*/
String getSavepointManager();
/**
* The plugin to use for savepoint management.
*
* @since 0.3.4
*/
void setSavepointManager(String savepointManager);
/**
* Return the configured savepoint manager instance.
*/
SavepointManager getSavepointManagerInstance();
/**
* The action to take when an orphaned key is detected.
*
* @since 0.3.2.2
*/
String getOrphanedKeyAction();
/**
* The action to take when an orphaned key is detected.
*
* @since 0.3.2.2
*/
void setOrphanedKeyAction(String action);
/**
* The action to take when an orphaned key is detected.
*
* @since 0.3.2.2
*/
OrphanedKeyAction getOrphanedKeyActionInstance();
/**
* The action to take when an orphaned key is detected.
*
* @since 0.3.2.2
*/
void setOrphanedKeyAction(OrphanedKeyAction action);
/**
* The plugin to use for remote commit notification.
*
* @since 0.2.5
*/
String getRemoteCommitProvider();
/**
* The plugin to use for remote commit notification.
*
* @since 0.2.5
*/
void setRemoteCommitProvider(String remoteCommitProvider);
/**
* Create a remote commit provider from the configured plugin.
*
* @since 0.3.0
*/
RemoteCommitProvider newRemoteCommitProviderInstance();
/**
* The remote event manager that manages this configuration's remote
* event listeners.
*
* @since 0.3.0
*/
RemoteCommitEventManager getRemoteCommitEventManager();
/**
* The remote event manager that manages this configuration's remote
* event listeners.
*
* @since 0.3.0
*/
void setRemoteCommitEventManager(RemoteCommitEventManager manager);
/**
* Specifies the behavior of the transaction model. Possible values are:
* <ul>
* <li><code>local</code>: Perform transaction operations locally.</li>
* <li><code>managed</code>: Use managed environment's global
* transactions.</li>
* </ul>
*
* @since 0.2.5
*/
String getTransactionMode();
/**
* Specifies the behavior of the transaction model. Possible values are:
* <ul>
* <li><code>local</code>: Perform transaction operations locally.</li>
* <li><code>managed</code>: Use managed environment's global
* transactions.</li>
* </ul>
*
* @since 0.2.5
*/
void setTransactionMode(String mode);
/**
* Return whether managed transactions are being used.
*/
boolean isTransactionModeManaged();
/**
* Set whether managed transactions are being used.
*/
void setTransactionModeManaged(boolean managed);
/**
* The plugin string for the {@link ManagedRuntime} to use for managed
* environments.
*/
String getManagedRuntime();
/**
* The plugin string for the {@link ManagedRuntime} to use for managed
* environments.
*/
void setManagedRuntime(String managedRuntime);
/**
* The plugin to use for integrating with a managed runtime.
*/
ManagedRuntime getManagedRuntimeInstance();
/**
* The plugin to use for integrating with a managed runtime.
*/
void setManagedRuntime(ManagedRuntime runtime);
/**
* The plugin string for the {@link ProxyManager} to use for second
* class object proxies.
*/
String getProxyManager();
/**
* The plugin string for the {@link ProxyManager} to use for second
* class object proxies.
*/
void setProxyManager(String proxyManager);
/**
* The {@link ProxyManager} to use.
*/
ProxyManager getProxyManagerInstance();
/**
* The {@link ProxyManager} to use.
*/
void setProxyManager(ProxyManager manager);
/**
* The name mapping to use for this data store.
*/
String getMapping();
/**
* The name mapping to use for this data store.
*/
void setMapping(String mapping);
/**
* A plugin string describing the {@link MetaDataFactory} to use.
*/
String getMetaDataFactory();
/**
* A plugin string describing the {@link MetaDataFactory} to use.
*/
void setMetaDataFactory(String meta);
/**
* Create a new {@link MetaDataFactory} to use with a repository.
*/
MetaDataFactory newMetaDataFactoryInstance();
/**
* A plugin string describing the {@link MetaDataRepository} to use.
*/
String getMetaDataRepository();
/**
* A plugin string describing the {@link MetaDataRepository} to use.
*/
void setMetaDataRepository(String meta);
/**
* The metadata repository of managed class information. If no
* repository has been set, creates one.
*
* @since 0.3.0
*/
MetaDataRepository getMetaDataRepositoryInstance();
/**
* Returns true if a metaDataRepository has been created for this
* configuration.
*
* @since 1.1.0 1.0.1
*/
boolean metaDataRepositoryAvailable();
/**
* Create a new empty metadata repository of the configured type.
*/
MetaDataRepository newMetaDataRepositoryInstance();
/**
* The metadata repository of managed class information.
*
* @since 0.3.0
*/
void setMetaDataRepository(MetaDataRepository mdRepos);
/**
* The user name for the data store connection.
*/
String getConnectionUserName();
/**
* The user name for the data store connection.
*/
void setConnectionUserName(String connectionUserName);
/**
* The password for the data store connection.
*/
String getConnectionPassword();
/**
* The password for the data store connection.
*/
void setConnectionPassword(String connectionPassword);
/**
* The URL for the data store connection.
*/
String getConnectionURL();
/**
* The URL for the data store connection.
*/
void setConnectionURL(String connectionURL);
/**
* Class name of the connection driver.
*/
String getConnectionDriverName();
/**
* Class name of the connection driver.
*/
void setConnectionDriverName(String driverName);
/**
* The name for the data store connection factory.
*/
String getConnectionFactoryName();
/**
* The name for the data store connection factory.
*/
void setConnectionFactoryName(String cfName);
/**
* The connection factory, possibly from JNDI.
*/
Object getConnectionFactory();
/**
* The connection factory.
*/
void setConnectionFactory(Object factory);
/**
* These properties provide any additional information needed to
* establish connections.
*/
String getConnectionProperties();
/**
* These properties provide any additional information needed to
* establish connections.
*/
void setConnectionProperties(String props);
/**
* Configuration properties for the connection factory.
*/
String getConnectionFactoryProperties();
/**
* Configuration properties for the connection factory.
*/
void setConnectionFactoryProperties(String props);
/**
* The mode of the connection factory in use. Available options are:
* <ul>
* <li>local: OpenJPA controls the connections.</li>
* <li>managed: Connections are automatically enlisted in
* the current global transaction by an application server.</li>
* </ul> Defaults to local.
*/
String getConnectionFactoryMode();
/**
* The mode of the connection factory in use. Available options are:
* <ul>
* <li>local: OpenJPA controls the connections.</li>
* <li>managed: Connections are automatically enlisted in
* the current global transaction by an application server.</li>
* </ul> Defaults to local.
*/
void setConnectionFactoryMode(String mode);
/**
* Whether connections are automatically enlisted in global transactions.
*/
boolean isConnectionFactoryModeManaged();
/**
* Whether connections are automatically enlisted in global transactions.
*/
void setConnectionFactoryModeManaged(boolean managed);
/**
* The user name for the non-XA data store connection.
*/
String getConnection2UserName();
/**
* The user name for the non-XA data store connection.
*/
void setConnection2UserName(String connectionUserName);
/**
* The password for the non-XA data store connection.
*/
String getConnection2Password();
/**
* The password for the non-XA data store connection.
*/
void setConnection2Password(String connectionPassword);
/**
* The URL for the non-XA data store connection.
*/
String getConnection2URL();
/**
* The URL for the non-XA data store connection.
*/
void setConnection2URL(String connectionURL);
/**
* Class name of the non-XA connection driver.
*/
String getConnection2DriverName();
/**
* Class name of the non-XA connection driver.
*/
void setConnection2DriverName(String driverName);
/**
* The name for the second data store connection factory.
*/
String getConnectionFactory2Name();
/**
* The name for the second data store connection factory.
*/
void setConnectionFactory2Name(String cf2Name);
/**
* The non-XA connection factory.
*/
Object getConnectionFactory2();
/**
* The non-XA connection factory.
*/
void setConnectionFactory2(Object factory);
/**
* These properties provide any additional information needed to
* establish non-XA connections.
*
* @since 0.3.0
*/
String getConnection2Properties();
/**
* These properties provide any additional information needed to
* establish non-XA connections.
*
* @since 0.3.0
*/
void setConnection2Properties(String props);
/**
* Configuration properties for the non-XA connection factory.
*
* @since 0.2.5
*/
String getConnectionFactory2Properties();
/**
* Configuration properties for the non-XA connection factory.
*
* @since 0.2.5
*/
void setConnectionFactory2Properties(String props);
/**
* Whether to use optimistic transactions by default.
*/
boolean getOptimistic();
/**
* Whether to use optimistic transactions by default.
*/
void setOptimistic(boolean optimistic);
/**
* Wrapper for JCA usage of {@link #setOptimistic(boolean)}.
*/
void setOptimistic(Boolean optimistic);
/**
* Whether to retain state after a transaction by default.
*/
boolean getRetainState();
/**
* Whether to retain state after a transaction by default.
*/
void setRetainState(boolean retainState);
/**
* Wrapper for JCA usage of {@link #setRetainState(boolean)}.
*/
void setRetainState(Boolean retainState);
/**
* Whether instances clear their state when entering a transaction.
*/
String getAutoClear();
/**
* Whether instances clear their state when entering a transaction.
*/
void setAutoClear(String clear);
/**
* Return the {@link AutoClear} constant.
*/
int getAutoClearConstant();
/**
* Whether instances clear their state when entering a transaction.
*/
void setAutoClear(int clear);
/**
* Whether to restore initial state on rollback by default.
*/
String getRestoreState();
/**
* Whether to restore initial state on rollback by default.
*/
void setRestoreState(String restoreState);
/**
* Return the {@link RestoreState} constant.
*/
int getRestoreStateConstant();
/**
* Whether to restore initial state on rollback by default.
*/
void setRestoreState(int restoreState);
/**
* Whether changes in the current transaction are taken into account when
* executing queries and iterating extents.
*/
boolean getIgnoreChanges();
/**
* Whether changes in the current transaction are taken into account when
* executing queries and iterating extents.
*/
void setIgnoreChanges(boolean ignoreChanges);
/**
* Wrapper for JCA usage of {@link #setIgnoreChanges(boolean)}.
*/
void setIgnoreChanges(Boolean ignoreChanges);
/**
* A comma-separated list of events which trigger auto-detachment
* in place of managed states. Possible values are:
* <ul>
* <li><code>commit</code>: When the current transaction commits.</li>
* <li><code>close</code>: When the broker closes.</li>
* <li><code>nontx-read</code>: When instances are read
* non-transactionally.</li>
* </ul>
*/
String getAutoDetach();
/**
* A comma-separated list of events which trigger auto-detachment
* in place of managed states. Possible values are:
* <ul>
* <li><code>commit</code>: When the current transaction commits.</li>
* <li><code>close</code>: When the broker closes.</li>
* <li><code>nontx-read</code>: When instances are read
* non-transactionally.</li>
* </ul>
*/
void setAutoDetach(String detach);
/**
* The {@link AutoDetach} flags.
*/
int getAutoDetachConstant();
/**
* The {@link AutoDetach} flags.
*/
void setAutoDetach(int flags);
/**
* Which field values to include when detaching.
*/
void setDetachState(String detachState);
/**
* Return the instance specified by the detach state plugin.
*/
DetachOptions getDetachStateInstance();
/**
* Return the instance specified by the detach state plugin.
*/
void setDetachState(DetachOptions detachState);
/**
* Whether persistent state is accessible outside a transaction by default.
*/
boolean getNontransactionalRead();
/**
* Whether persistent state is accessible outside a transaction by default.
*/
void setNontransactionalRead(boolean ntRead);
/**
* Wrapper for JCA usage of {@link #setNontransactionalRead(boolean)}.
*/
void setNontransactionalRead(Boolean ntRead);
/**
* Whether persistent state can be modified outside a transaction by
* default.
*/
boolean getNontransactionalWrite();
/**
* Whether persistent state can be modified outside a transaction by
* default.
*/
void setNontransactionalWrite(boolean ntWrite);
/**
* Wrapper for JCA usage of {@link #setNontransactionalWrite(boolean)}.
*/
void setNontransactionalWrite(Boolean ntWrite);
/**
* Whether brokers or their managed objects will be used by multiple
* concurrent threads.
*/
boolean getMultithreaded();
/**
* Whether brokers or their managed objects will be used by multiple
* concurrent threads.
*/
void setMultithreaded(boolean multithreaded);
/**
* Wrapper for JCA usage of {@link #setMultithreaded(boolean)}.
*/
void setMultithreaded(Boolean multithreaded);
/**
* Get the size of the batch that will be pre-selected when accessing
* elements in a query or relationship. Use -1 to prefetch all results.
*/
int getFetchBatchSize();
/**
* Set the size of the batch that will be pre-selected when accessing
* elements in a query or relationship. Use -1 to prefetch all results.
*/
void setFetchBatchSize(int size);
/**
* Wrapper for JCA usage of {@link #setFetchBatchSize(int)}.
*/
void setFetchBatchSize(Integer size);
/**
* The maximum relation depth to traverse when eager fetching. Use
* -1 for no limit.
*/
int getMaxFetchDepth();
/**
* The maximum relation depth to traverse when eager fetching. Use
* -1 for no limit.
*/
void setMaxFetchDepth(int depth);
/**
* Wrapper for JCA usage of {@link #setMaxFetchDepth(int)}.
*/
void setMaxFetchDepth(Integer size);
/**
* Comma-separated list of fetch group names that will be pre-set for
* all new {@link FetchConfiguration}s.
*
* @since 0.2.5
*/
String getFetchGroups();
/**
* Comma-separated list of fetch group names that will be pre-set for
* all new {@link FetchConfiguration}s.
*
* @since 0.2.5
*/
void setFetchGroups(String groups);
/**
* List of fetch group names that will be pre-set for all new
* {@link FetchConfiguration}s.
*/
String[] getFetchGroupsList();
/**
* List of fetch group names that will be pre-set for all new
* {@link FetchConfiguration}s.
*/
void setFetchGroups(String[] names);
/**
* Returns whether or not OpenJPA should automatically flush
* modifications to the data store before executing queries.
*
* @since 0.2.5
*/
String getFlushBeforeQueries();
/**
* Sets whether or not OpenJPA should automatically flush
* modifications to the data store before executing queries.
*
* @since 0.2.5
*/
void setFlushBeforeQueries(String flush);
/**
* Returns one of {@link QueryFlushModes#FLUSH_TRUE},
* {@link QueryFlushModes#FLUSH_FALSE}, or
* {@link QueryFlushModes#FLUSH_WITH_CONNECTION}, as determined
* by parsing the string returned by {@link #getFlushBeforeQueries}.
*
* @since 0.2.5
*/
int getFlushBeforeQueriesConstant();
/**
* Set to one of {@link QueryFlushModes#FLUSH_TRUE},
* {@link QueryFlushModes#FLUSH_FALSE}, or
* {@link QueryFlushModes#FLUSH_WITH_CONNECTION}.
*
* @since 0.2.5
*/
void setFlushBeforeQueries(int flushBeforeQueries);
/**
* The time to wait for an object lock in milliseconds, or -1 for no
* timeout.
*
* @since 0.3.1
*/
int getLockTimeout();
/**
* The time to wait for an object lock in milliseconds, or -1 for no
* timeout.
*
* @since 0.3.1
*/
void setLockTimeout(int timeout);
/**
* Wrapper for JCA usage of {@link #setLockTimeout(int)}.
*
* @since 0.3.1
*/
void setLockTimeout(Integer timeout);
/**
* The time to wait for a query to execute in milliseconds, or -1 for no
* timeout.
*
* @since 2.0.0
*/
int getQueryTimeout();
/**
* The time to wait for a query to execute in milliseconds, or -1 for no
* timeout.
*
* @since 0.3.1
*/
void setQueryTimeout(int timeout);
/**
* The default read lock level to use during non-optimistic transactions.
* Defaults to <code>read</code>.
*
* @since 0.3.1
*/
String getReadLockLevel();
/**
* The default read lock level to use during non-optimistic transactions.
* Defaults to <code>read</code>.
*
* @since 0.3.1
*/
void setReadLockLevel(String level);
/**
* The numeric read lock level.
*
* @since 0.3.1
*/
int getReadLockLevelConstant();
/**
* The numeric read lock level.
*
* @since 0.3.1
*/
void setReadLockLevel(int level);
/**
* The default write lock level to use during non-optimistic transactions.
* Defaults to <code>write</code>.
*
* @since 0.3.1
*/
String getWriteLockLevel();
/**
* The default write lock level to use during non-optimistic transactions.
* Defaults to <code>write</code>.
*
* @since 0.3.1
*/
void setWriteLockLevel(String level);
/**
* The numeric write lock level.
*
* @since 0.3.1
*/
int getWriteLockLevelConstant();
/**
* The numeric write lock level.
*
* @since 0.3.1
*/
void setWriteLockLevel(int level);
/**
* Plugin string for the default system {@link Seq}.
*/
String getSequence();
/**
* Plugin string for the default system {@link Seq}.
*/
void setSequence(String sequence);
/**
* The default system sequence.
*/
Seq getSequenceInstance();
/**
* The default system sequence.
*/
void setSequence(Seq sequence);
/**
* Specifies the behavior of the broker with respect to data store
* connections. Possible values are:
* <ul>
* <li><code>always</code>: Each broker obtains a single connection and
* uses it until the broker is closed.</li>
* <li><code>transaction</code>: A connection is obtained when each
* transaction begins (optimistic or datastore), and is released
* when the transaction completes.</li>
* <li><code>on-demand</code>: Connections are obtained only when needed.
* This is the default mode. It is equivalent to the previous option
* when datastore transactions are used. For optimistic transactions,
* though, it means that a connection will be retained only for
* the duration of the data store commit process.</li>
* </ul>
*
* @since 0.2.5
*/
String getConnectionRetainMode();
/**
* Specifies the behavior of the broker with respect to data store
* connections. Possible values are:
* <ul>
* <li><code>always</code>: Each broker obtains a single connection and
* uses it until the broker is closed.</li>
* <li><code>transaction</code>: A connection is obtained when each
* transaction begins (optimistic or datastore), and is released
* when the transaction completes.</li>
* <li><code>on-demand</code>: Connections are obtained only when needed.
* This is the default mode. It is equivalent to the previous option
* when datastore transactions are used. For optimistic transactions,
* though, it means that a connection will be retained only for
* the duration of the data store commit process.</li>
* </ul>
*
* @since 0.2.5
*/
void setConnectionRetainMode(String mode);
/**
* Return the connection retain mode as one of the following symbolic
* constants:
* <ul>
* <li>{@link ConnectionRetainModes#CONN_RETAIN_ALWAYS}</li>
* <li>{@link ConnectionRetainModes#CONN_RETAIN_TRANS}</li>
* <li>{@link ConnectionRetainModes#CONN_RETAIN_DEMAND}</li>
* </ul>
*/
int getConnectionRetainModeConstant();
/**
* Set the connection retain mode as one of the following symbolic
* constants:
* <ul>
* <li>{@link ConnectionRetainModes#CONN_RETAIN_ALWAYS}</li>
* <li>{@link ConnectionRetainModes#CONN_RETAIN_TRANS}</li>
* <li>{@link ConnectionRetainModes#CONN_RETAIN_DEMAND}</li>
* </ul>
*/
void setConnectionRetainMode(int mode);
/**
* A comma-separted list of the plugin strings of the query
* {@link FilterListener}s to use.
*/
String getFilterListeners();
/**
* A comma-separted list of the plugin strings of the query
* {@link FilterListener}s to use.
*/
void setFilterListeners(String listeners);
/**
* Return the query filter listeners. If none have been set explicitly,
* this method instantiates the listeners from the set plugin list.
*/
FilterListener[] getFilterListenerInstances();
/**
* Set the query filter listeners. Overrides the list of listener classes.
*/
void setFilterListeners(FilterListener[] listeners);
/**
* A comma-separted list of the plugin strings of the query
* {@link AggregateListener}s to use.
*/
String getAggregateListeners();
/**
* A comma-separted list of the plugin strings of the query
* {@link AggregateListener}s to use.
*/
void setAggregateListeners(String listeners);
/**
* Return the query function listeners. If none have been set explicitly,
* this method instantiates the listeners from the set plugin list.
*/
AggregateListener[] getAggregateListenerInstances();
/**
* Set the query function listeners. Overrides the list of listener classes.
*/
void setAggregateListeners(AggregateListener[] listeners);
/**
* Whether to warn and defer registration instead of throwing an
* exception when a registered persistent class cannot be processed.
* Should only be set to true in complex classloader topologies.
* Defaults to <code>false</code>.
*
* @since 0.3.2.3
*/
boolean getRetryClassRegistration();
/**
* Whether to warn and defer registration instead of throwing an
* exception when a registered persistent class cannot be processed.
* Should only be set to true in complex classloader topologies.
* Defaults to <code>false</code>.
*
* @since 0.3.2.3
*/
void setRetryClassRegistration(boolean warn);
/**
* Wrapper for JCA usage of {@link #setRetryClassRegistration(boolean)}.
*
* @since 0.3.2.3
*/
void setRetryClassRegistration(Boolean warn);
/**
* Backwards compatibility options.
*/
String getCompatibility();
/**
* Backwards compatibility options.
*/
void setCompatibility(String compatibility);
/**
* Backwards compatibility options.
*/
Compatibility getCompatibilityInstance ();
/**
* Options for configuring callbacks as a String.
*
* @since 2.0.0
*/
String getCallbackOptions();
/**
* Options for configuring callbacks.
*
* @since 2.0.0
*/
CallbackOptions getCallbackOptionsInstance();
/**
* Options for configuring callbacks set as a comma-separated string value
* pair.
*
* @since 2.0.0
*/
void setCallbackOptions(String options);
/**
* Configuration settings for the query compilation cache to use.
* @see QueryCompilationCacheValue
* @since 0.9.6
*/
String getQueryCompilationCache();
/**
* Configuration settings for the query compilation cache to use.
* @see QueryCompilationCacheValue
* @since 0.9.6
*/
void setQueryCompilationCache(String conf);
/**
* Configuration settings for the query compilation cache to use.
* @see QueryCompilationCacheValue
* @since 0.9.6
*/
Map getQueryCompilationCacheInstance();
/**
* Return the {@link StoreFacadeTypeRegistry} instance associated with this
* configuration.
*/
StoreFacadeTypeRegistry getStoreFacadeTypeRegistry();
/**
* Return the {@link org.apache.openjpa.event.BrokerFactoryEventManager}
* associated with this configuration.
*
* @since 1.0.0
*/
BrokerFactoryEventManager getBrokerFactoryEventManager();
/**
* Specifies how OpenJPA handles unenhanced types. Possible values are:
* <ul>
* <li><code>supported</code>: Runtime optimization of persistent types
* is available. This is the default</li>
* <li><code>unsupported</code>: Runtime optimization of persistent types
* is not available. An exception will be thrown if the system loads with
* persistent types that are not enhanced.</li>
* <li><code>warn</code>: Runtime optimization of persistent types is
* not available, but no exception will be thrown initially. A warning will
* be logged instead. It is likely that the system will fail at a later
* point. This might be suitable for environments with complex classloader
* configurations.</li>
* </ul>
*
* @since 1.0.0
*/
String getRuntimeUnenhancedClasses();
/**
* Specifies how OpenJPA handles unenhanced types.
*
* @see {@link #getRuntimeUnenhancedClasses()}
* @since 1.0.0
*/
void setRuntimeUnenhancedClasses(String mode);
/**
* Return the runtime class optimization setting as one of the
* following symbolic constants:
* <ul>
* <li>{@link RuntimeUnenhancedClassesModes#SUPPORTED}</li>
* <li>{@link RuntimeUnenhancedClassesModes#UNSUPPORTED}</li>
* <li>{@link RuntimeUnenhancedClassesModes#WARN}</li>
* </ul>
*
* @since 1.0.0
*/
int getRuntimeUnenhancedClassesConstant();
/**
* Set the runtime class optimization setting as one of the
* following symbolic constants:
* <ul>
* <li>{@link RuntimeUnenhancedClassesModes#SUPPORTED}</li>
* <li>{@link RuntimeUnenhancedClassesModes#UNSUPPORTED}</li>
* <li>{@link RuntimeUnenhancedClassesModes#WARN}</li>
* </ul>
*
* @since 1.0.0
*/
void setRuntimeUnenhancedClasses(int mode);
/**
* Whether OpenJPA will attempt to dynamically load the enhancement agent.
*/
boolean getDynamicEnhancementAgent();
/**
* Sets whether OpenJPA will attempt to dynamically load the enhancement
* agent.
*/
void setDynamicEnhancementAgent(boolean dynamic);
/**
* A comma-separted list of the plugin strings specifying the
* {@link CacheMarshaller}s to use.
*
* @since 1.1.0
*/
String getCacheMarshallers();
/**
* A comma-separated list of the plugin strings specifying the
* {@link CacheMarshaller}s to use.
*
* @since 1.1.0
*/
void setCacheMarshallers(String marshallers);
/**
* Return the cache marshaller listeners.
*
* @since 1.1.0
*/
Map<String,CacheMarshaller> getCacheMarshallerInstances();
/**
* Affirms if all configured elements are initialized eagerly as opposed
* to lazily on-demand.
*
* @since 1.3.0
*/
boolean isInitializeEagerly();
/**
* Sets whether all configured elements will be initialized eagerly or
* lazily on-demand.
*
* @since 1.3.0
*/
void setInitializeEagerly(boolean flag);
/**
* Return PreparedQueryCache used for caching datastore queries.
*
* @since 2.0.0
*/
PreparedQueryCache getQuerySQLCacheInstance();
/**
* Gets the configuration of QuerySQLCache.
*
* @since 2.0.0
*/
String getQuerySQLCache();
/**
* Sets QuerySQLCache with the given cache.
*
* @since 2.0.0
*/
void setQuerySQLCache(PreparedQueryCache cache);
/**
* Sets QuerySQLCache with the given configuration.
*
* @since 2.0.0
*/
void setQuerySQLCache(String config);
/**
* Get the cache of finder queries.
*
* @since 2.0.0
*/
FinderCache getFinderCacheInstance();
/**
* Get the string configuration of the finder cache.
*
* @since 2.0.0
*/
String getFinderCache();
/**
* Set the finder cache from a string configuration.
*
* @since 2.0.0
*/
void setFinderCache(String cache);
/**
* The bean validation mode to use for managed classes.
* Defaults to <code>AUTO</code>.
*
* @since 2.0.0
*/
String getValidationMode();
/**
* Set the bean validation mode to use for managed classes.
* If not set, defaults to <code>AUTO</code>.
*
* @since 2.0.0
*/
void setValidationMode(String mode);
/**
* The ValidatorFactory provided by the container or application.
* Defaults to <code>null</code>.
*
* @since 2.0.0
*/
Object getValidationFactoryInstance();
/**
* Set the container or application provided ValidatorFactory instance.
* If not set, defaults to <code>null</code>.
*
* @since 2.0.0
*/
void setValidationFactory(Object factory);
/**
* The Validator provided by the container or created by the runtime.
* Defaults to <code>null</code>.
*
* @since 2.0.0
*/
Object getValidatorInstance();
/**
* Set the container or application provided Validator instance.
* If not set, defaults to <code>null</code>.
*
* @since 2.0.0
*/
void setValidatorInstance(Object val);
/**
* Gets the lifecycle event manager instance classname.
*
* @since 2.0.0
*/
String getLifecycleEventManager();
/**
* Gets the lifecycle event manager instance.
*
* @since 2.0.0
*/
LifecycleEventManager getLifecycleEventManagerInstance();
/**
* Sets the lifecycle event manager instance classname.
*
* @since 2.0.0
*/
void setLifecycleEventManager(String eventMgr);
/**
* Gets the validation groups for pre-persist
*
* @since 2.0.0
*/
String getValidationGroupPrePersist();
/**
* Sets the validation groups for pre-persist
*
* @since 2.0.0
*/
void setValidationGroupPrePersist(String vgPrePersist);
/**
* Gets the validation groups for pre-update
*
* @since 2.0.0
*/
String getValidationGroupPreUpdate();
/**
* Sets the validation groups for pre-update
*
* @since 2.0.0
*/
void setValidationGroupPreUpdate(String vgPreUpdate);
/**
* Gets the validation groups for pre-remove
*
* @since 2.0.0
*/
String getValidationGroupPreRemove();
/**
* Sets the validation groups for pre-remove
*
* @since 2.0.0
*/
void setValidationGroupPreRemove(String vgPreRemove);
/**
* Sets the {@link EncryptionProvider}.
*
*/
void setEncryptionProvider(String className);
/**
* Gets the {@link EncryptionProvider}.
*
* @return EncryptionProvider
*/
EncryptionProvider getEncryptionProvider();
/**
* Set the {@link DataCacheMode}
*
* @param mode One of the Sting constants from {@link DataCacheMode}
* @since 2.0.0
*/
void setDataCacheMode(String mode);
/**
* Return the String constant that matches the {@link DataCacheMode}
* @return DataCacheMode
* @since 2.0.0
*/
String getDataCacheMode();
/**
* Gets the policy object that determines distribution of cached instances
* across named partitions of L2 data cache.
*
* @return an implementation of {@link CacheDistributionPolicy}.
* @since 2.0.0
*/
CacheDistributionPolicy getCacheDistributionPolicyInstance();
/**
* Sets the policy object that determines distribution of cached instances
* across named partitions of L2 data cache.
*
* @param policy a non-null implementation of {@link CacheDistributionPolicy}.
* @since 2.0.0
*/
void setCacheDistributionPolicyInstance(CacheDistributionPolicy policy);
/**
* Gets the plug-in string that described the policy to distribute cached instances
* across named partitions of L2 data cache.
*
* @return a plug-in string for {@link CacheDistributionPolicy}.
* @since 2.0.0
*/
String getCacheDistributionPolicy();
/**
* Sets the plug-in string that describes the policy to distribute cached instances
* across named partitions of L2 data cache.
*
* @param a plug-in string for {@link CacheDistributionPolicy}.
* @since 2.0.0
*/
void setCacheDistributionPolicy(String policyPlugin);
/**
* Gets the plug-in string that defines instrumentation providers and what
* they instrument.
* @return a plug-in string for the instrumentation configuration
* @since 2.1.0
*/
String getInstrumentation();
/**
* Sets the plug-in string that defines instrumentation providers and what
* they instrument.
* @param providers a plug-in string for the instrumentation configuration
* @since 2.1.0
*/
void setInstrumentation(String providers);
/**
* Gets an instance of the instrumentation manager. The instrumentation
* provides access to configured instrumentation providers and can be used
* to manage them at runtime.
* @return an instance of the instrumentation manager
* @since 2.1.0
*/
InstrumentationManager getInstrumentationManagerInstance();
/**
* Gets the singular instance of {@link Auditor} associated with this configuration.
*
* @since 2.2.0
*/
Auditor getAuditorInstance();
/**
* Sets the singular instance of {@link Auditor} associated with this configuration.
*
* @since 2.2.0
*/
void setAuditorInstance(Auditor auditor);
/**
* Gets the plug-in string of {@link Auditor} specified in this configuration.
*
* @since 2.2.0
*/
String getAuditor();
/**
* Sets the plug-in string of {@link Auditor} specified in this configuration.
*
* @since 2.2.0
*/
void setAuditor(String s);
/**
* Whether to send &#064;PostLoad events on a merge operation.
* @since 2.2.0
*/
boolean getPostLoadOnMerge();
/**
* Whether to send &#064;PostLoad events on a merge operation.
* @since 2.2.0
*/
void setPostLoadOnMerge(boolean postLoadOnMerge);
/**
* Whether to send &#064;PostLoad events on a merge operation.
* @since 2.2.0
*/
void setPostLoadOnMerge(Boolean postLoadOnMerge);
/**
* Whether to attempt to optimize id class copy operations during the
* enhancement process. Optimization is only applicable for simple id classes
* that have a constructor with the proper construction parameters and
* direct assignments to fields within the id class during construction.
* If the optimization cannot occur, the enhancer will fallback to the
* noraml behavior.
* @since 2.2.0
*/
boolean getOptimizeIdCopy();
/**
* Whether to attempt to optimize id class copy operations during the
* enhancement process. Optimization is only applicable for simple id classes
* that have a constructor with the proper construction parameters and
* direct assignments to fields within the id class during construction.
* If the optimization cannot occur, the enhancer will fallback to the
* normal behavior.
* @since 2.2.0
*/
void setOptimizeIdCopy(boolean optimizeIds);
/**
* Whether to attempt to optimize id class copy operations during the
* enhancement process. Optimization is only applicable for simple id classes
* that have a constructor with the proper construction parameters and
* direct assignments to fields within the id class during construction.
* If the optimization cannot occur, the enhancer will fallback to the
* normal behavior.
* @since 2.2.0
*/
void setOptimizeIdCopy(Boolean optimizeIds);
/**
* Indicates if the {@link Thread#contextClassLoader} should be used
* as fallback if the result class for {@code select new} is not found
* by the classloader of the entity.
*
* @since 2.4.2
*/
boolean getUseTCCLinSelectNew();
/**
* Indicates if the {@link Thread#contextClassLoader} should be used
* as fallback if the result class for {@code select new} is not found
* by the classloader of the entity.
*
* @since 2.4.2
*/
void setUseTCCLinSelectNew(boolean useTcclForSelectNew);
/**
* Indicates if the {@link Thread#contextClassLoader} should be used
* as fallback if the result class for {@code select new} is not found
* by the classloader of the entity.
*
* @since 2.4.2
*/
void setUseTCCLinSelectNew(Boolean useTcclForSelectNew);
String getDatabaseAction();
int getDatabaseActionConstant();
String getScriptsAction();
int getScriptsActionConstant();
String getCreateSource();
int getCreateSourceConstant();
String getDropSource();
int getDropSourceConstant();
String getCreateScriptSource();
String getDropScriptSource();
String getCreateScriptTarget();
String getDropScriptTarget();
String getLoadScriptSource();
Collection<Class<?>> getTypesWithoutEnhancement();
void setTypesWithoutEnhancement(Collection<Class<?>> value);
}