Package org.apache.uima.resource.impl
Class CasManager_impl
java.lang.Object
org.apache.uima.resource.impl.CasManager_impl
- All Implemented Interfaces:
CasOwner
,CasManager
Simple CAS Manager Implementation used in the AnalysisEngine framework. Maintains a pool of 1 CAS
for each requestor.
The ResourceManager points to one instantiation of this class.
An instance of this class might be accessed in parallel on different threads.
-
Constructor Summary
-
Method Summary
Modifier and TypeMethodDescriptionvoid
addMetaData
(ProcessingResourceMetaData aMetaData) Called by components when they initialize.createNewCas
(Properties aPerformanceTuningSettings) Create a new CAS using the CasDefinition stored in this CAS Manager.void
defineCasPool
(String aRequestorContextName, int aMinimumSize, Properties aPerformanceTuningSettings) Defines a CAS pool within this CAS Manager.void
defineCasPool
(UimaContextAdmin aRequestorContext, int aMinimumSize, Properties aPerformanceTuningSettings) Defines the CAS pool required by a particular AnalysisEngine.protected void
finalize()
Gets an empty CAS.Gets the CasDefinition, as defined by merging all of the metadata supplied by callsCasManager.addMetaData(ProcessingResourceMetaData)
.getCasInterface
(CAS cas, Class<? extends AbstractCas> requiredInterface) Gets a specified interface to a CAS.static <T extends AbstractCas>
TgetCasInterfaceStatic
(CAS cas, Class<T> requiredInterface) Gets a specified interface to a CAS.protected int
getCasPoolSize
(String aRequestorContextName, int aMinimumSize) Determines the size to use for a particular CAS Pool.protected void
populateCasToCasPoolAndUimaContextMaps
(CasPool aCasPool, UimaContext aUimaContext) protected void
populateCasToCasPoolMap
(CasPool aCasPool) protected void
registerCasPoolMBean
(String aRequestorContextName, CasPool pool) Registers an MBean for the given CasPool.void
releaseCas
(AbstractCas aCAS) Releases a CAS back to its owner.void
setJmxInfo
(Object aMBeanServer, String aRootMBeanName) Configures this CAS Manager so it can register an MBean for each of its CAS pools.
-
Constructor Details
-
CasManager_impl
-
-
Method Details
-
addMetaData
Description copied from interface:CasManager
Called by components when they initialize.- Specified by:
addMetaData
in interfaceCasManager
- Parameters:
aMetaData
- an object containing metadata for the component, including Type System, Type Priorities, and Index Definitions needed to create the CAS.
-
getCasDefinition
Description copied from interface:CasManager
Gets the CasDefinition, as defined by merging all of the metadata supplied by callsCasManager.addMetaData(ProcessingResourceMetaData)
.- Specified by:
getCasDefinition
in interfaceCasManager
- Returns:
- the merged CasDefinition
- Throws:
ResourceInitializationException
- if metadata could not be merged
-
getCas
Description copied from interface:CasManager
Gets an empty CAS. An AnalysisEngine may only call this method after it has first calledCasManager.defineCasPool(String, int, Properties)
and established a CAS Pool of size > 0. The CAS Manager maintains a separate pool for each AnalysisEngine. This method may block if the CAS pool does not contain any free instances.- Specified by:
getCas
in interfaceCasManager
- Parameters:
aRequestorContextName
- the context name of the AE requesting the CAS (AnalysisEngine.getUimaContextAdmin().getQualifiedContextName()).- Returns:
- an empty CAS
-
releaseCas
Description copied from interface:CasOwner
Releases a CAS back to its owner. After calling this method, the caller should no longer accessaCAS
.- Specified by:
releaseCas
in interfaceCasOwner
- Parameters:
aCAS
- the CAS to release
-
defineCasPool
public void defineCasPool(String aRequestorContextName, int aMinimumSize, Properties aPerformanceTuningSettings) throws ResourceInitializationException Description copied from interface:CasManager
Defines a CAS pool within this CAS Manager. (Note that if this CAS pool is to be used by a CAS Multiplier, thenCasManager.defineCasPool(UimaContextAdmin, int, Properties)
should be used instead.- Specified by:
defineCasPool
in interfaceCasManager
- Parameters:
aRequestorContextName
- name to give to the pool. Must be unique among all pool names in this CAS manager, and care should be taken to assure that this does not match the qualified name of UIMA Contexts passed toCasManager.defineCasPool(UimaContextAdmin, int, Properties)
. This name is later passed to theCasManager.getCas(String)
method, to check out CASes from the pool.aMinimumSize
- the minimum CAS pool size requiredaPerformanceTuningSettings
- settings, including initial CAS heap size, for the AE- Throws:
ResourceInitializationException
- if a CAS could not be created.
-
defineCasPool
public void defineCasPool(UimaContextAdmin aRequestorContext, int aMinimumSize, Properties aPerformanceTuningSettings) throws ResourceInitializationException Description copied from interface:CasManager
Defines the CAS pool required by a particular AnalysisEngine. (The AnalysisEngine must contain a CAS Multiplier if it requires a CAS pool.)- Specified by:
defineCasPool
in interfaceCasManager
- Parameters:
aRequestorContext
- the UimaContext of the AE that will request the CASes (AnalysisEngine.getUimaContextAdmin()).aMinimumSize
- the minimum CAS pool size requiredaPerformanceTuningSettings
- settings, including initial CAS heap size, for the AE- Throws:
ResourceInitializationException
- if a CAS could not be created.
-
createNewCas
public CAS createNewCas(Properties aPerformanceTuningSettings) throws ResourceInitializationException Description copied from interface:CasManager
Create a new CAS using the CasDefinition stored in this CAS Manager. Note that this new CAS will not belong to any pool managed by this CAS Manager. If this method is called multiple times while the CasDefinition is constant, each new CAS will share an identical TypeSystem object.- Specified by:
createNewCas
in interfaceCasManager
- Parameters:
aPerformanceTuningSettings
- settings, including initial CAS heap size, for the AE- Returns:
- a new CAS
- Throws:
ResourceInitializationException
- if the CAS could not be created
-
getCasInterface
Gets a specified interface to a CAS.- Specified by:
getCasInterface
in interfaceCasManager
- Parameters:
cas
- The CASrequiredInterface
- interface to get. Currently must be one of CAS or JCas.- Returns:
- the CAS Interface
-
getCasInterfaceStatic
Gets a specified interface to a CAS.- Type Parameters:
T
- the particular interface- Parameters:
cas
- The CASrequiredInterface
- interface to get. Currently must be one of CAS or JCas.- Returns:
- -
-
setJmxInfo
Description copied from interface:CasManager
Configures this CAS Manager so it can register an MBean for each of its CAS pools.- Specified by:
setJmxInfo
in interfaceCasManager
- Parameters:
aMBeanServer
- the JMX MBean Server to register MBeans with. If null, the platform MBeanServer (Java 1.5+ only) will be used.aRootMBeanName
- unique MBean name for the root component that owns this CAS Manager. The names of the CAS Pool MBeans will be formed by appending,casPoolContextName=[contextName]
to the root component name, where [contextName] is the requestorContextName for the CasPool.
-
getCasToCasPoolMap
-
populateCasToCasPoolMap
-
populateCasToCasPoolAndUimaContextMaps
-
registerCasPoolMBean
Registers an MBean for the given CasPool. Never called unless pool is new- Parameters:
aRequestorContextName
- context name that identifies this CasPoolpool
- the CasPool
-
getCasPoolSize
Determines the size to use for a particular CAS Pool. This can be overridden by subclasses to specify custom pool sizes.- Parameters:
aRequestorContextName
- the context name of the AE that will request the CASes (AnalysisEngine.getUimaContextAdmin().getQualifiedContextName()).aMinimumSize
- the minimum CAS pool size required- Returns:
- the size of the CAS pool to create for the specified AE
-
finalize
-