You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@uima.apache.org by al...@apache.org on 2007/01/26 22:22:55 UTC
svn commit: r500357 - in
/incubator/uima/uimaj/trunk/uimaj-core/src/main/java/org/apache/uima:
resource/CasManager.java resource/impl/CasManager_impl.java util/CasPool.java
Author: alally
Date: Fri Jan 26 13:22:54 2007
New Revision: 500357
URL: http://svn.apache.org/viewvc?view=rev&rev=500357
Log:
CASes available to CAS Multipliers now have identical TypeSystem
objects as CASes in the CPE CAS Pool.
UIMA-234: https://issues.apache.org/jira/browse/UIMA-234
Modified:
incubator/uima/uimaj/trunk/uimaj-core/src/main/java/org/apache/uima/resource/CasManager.java
incubator/uima/uimaj/trunk/uimaj-core/src/main/java/org/apache/uima/resource/impl/CasManager_impl.java
incubator/uima/uimaj/trunk/uimaj-core/src/main/java/org/apache/uima/util/CasPool.java
Modified: incubator/uima/uimaj/trunk/uimaj-core/src/main/java/org/apache/uima/resource/CasManager.java
URL: http://svn.apache.org/viewvc/incubator/uima/uimaj/trunk/uimaj-core/src/main/java/org/apache/uima/resource/CasManager.java?view=diff&rev=500357&r1=500356&r2=500357
==============================================================================
--- incubator/uima/uimaj/trunk/uimaj-core/src/main/java/org/apache/uima/resource/CasManager.java (original)
+++ incubator/uima/uimaj/trunk/uimaj-core/src/main/java/org/apache/uima/resource/CasManager.java Fri Jan 26 13:22:54 2007
@@ -81,6 +81,19 @@
CAS getCas(String aRequestorContextName);
/**
+ * 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.
+ *
+ * @param aPerformanceTuningSettings
+ * settings, including initial CAS heap size, for the AE
+ * @return a new CAS
+ * @throws ResourceInitializationException if the CAS could not be created
+ */
+ CAS createNewCas(Properties aPerformanceTuningSettings) throws ResourceInitializationException;
+
+ /**
* Gets a specified interface to a CAS.
*
* @param cas
@@ -88,5 +101,5 @@
* @param requiredInterface
* interface to get. Currently must be either CAS or JCas.
*/
- AbstractCas getCasInterface(CAS cas, Class requiredInterface);
+ AbstractCas getCasInterface(CAS cas, Class requiredInterface);
}
Modified: incubator/uima/uimaj/trunk/uimaj-core/src/main/java/org/apache/uima/resource/impl/CasManager_impl.java
URL: http://svn.apache.org/viewvc/incubator/uima/uimaj/trunk/uimaj-core/src/main/java/org/apache/uima/resource/impl/CasManager_impl.java?view=diff&rev=500357&r1=500356&r2=500357
==============================================================================
--- incubator/uima/uimaj/trunk/uimaj-core/src/main/java/org/apache/uima/resource/impl/CasManager_impl.java (original)
+++ incubator/uima/uimaj/trunk/uimaj-core/src/main/java/org/apache/uima/resource/impl/CasManager_impl.java Fri Jan 26 13:22:54 2007
@@ -28,6 +28,7 @@
import org.apache.uima.cas.AbstractCas;
import org.apache.uima.cas.CAS;
import org.apache.uima.cas.CASException;
+import org.apache.uima.cas.TypeSystem;
import org.apache.uima.cas.impl.CASImpl;
import org.apache.uima.jcas.JCas;
import org.apache.uima.resource.CasDefinition;
@@ -35,6 +36,7 @@
import org.apache.uima.resource.ResourceInitializationException;
import org.apache.uima.resource.ResourceManager;
import org.apache.uima.resource.metadata.ProcessingResourceMetaData;
+import org.apache.uima.util.CasCreationUtils;
import org.apache.uima.util.CasPool;
/**
@@ -51,6 +53,8 @@
private Map mCasToCasPoolMap = new HashMap();
private CasDefinition mCasDefinition = null;
+
+ private TypeSystem mCurrentTypeSystem = null;
public CasManager_impl(ResourceManager aResourceManager) {
mResourceManager = aResourceManager;
@@ -64,6 +68,7 @@
public void addMetaData(ProcessingResourceMetaData aMetaData) {
mMetaDataList.add(aMetaData);
mCasDefinition = null; // mark this stale
+ mCurrentTypeSystem = null; //this too
}
/*
@@ -120,7 +125,7 @@
CasPool pool = (CasPool) mRequestorToCasPoolMap.get(aRequestorContextName);
if (pool == null) {
// this requestor hasn't requested a CAS before
- pool = new CasPool(aSize, getCasDefinition(), aPerformanceTuningSettings);
+ pool = new CasPool(aSize, this, aPerformanceTuningSettings);
populateCasToCasPoolMap(pool);
mRequestorToCasPoolMap.put(aRequestorContextName, pool);
} else {
@@ -128,6 +133,21 @@
new Object[] { aRequestorContextName });
}
}
+ }
+
+ /* (non-Javadoc)
+ * @see org.apache.uima.resource.CasManager#createNewCas(java.util.Properties)
+ */
+ public CAS createNewCas(Properties aPerformanceTuningSettings) throws ResourceInitializationException {
+ CAS cas;
+ if (mCurrentTypeSystem != null) {
+ cas = CasCreationUtils.createCas(getCasDefinition(), aPerformanceTuningSettings, mCurrentTypeSystem);
+ } else
+ {
+ cas = CasCreationUtils.createCas(getCasDefinition(), aPerformanceTuningSettings);
+ mCurrentTypeSystem = cas.getTypeSystem();
+ }
+ return cas;
}
/**
Modified: incubator/uima/uimaj/trunk/uimaj-core/src/main/java/org/apache/uima/util/CasPool.java
URL: http://svn.apache.org/viewvc/incubator/uima/uimaj/trunk/uimaj-core/src/main/java/org/apache/uima/util/CasPool.java?view=diff&rev=500357&r1=500356&r2=500357
==============================================================================
--- incubator/uima/uimaj/trunk/uimaj-core/src/main/java/org/apache/uima/util/CasPool.java (original)
+++ incubator/uima/uimaj/trunk/uimaj-core/src/main/java/org/apache/uima/util/CasPool.java Fri Jan 26 13:22:54 2007
@@ -33,6 +33,7 @@
import org.apache.uima.collection.CasConsumerDescription;
import org.apache.uima.collection.CollectionReaderDescription;
import org.apache.uima.resource.CasDefinition;
+import org.apache.uima.resource.CasManager;
import org.apache.uima.resource.ResourceInitializationException;
import org.apache.uima.resource.ResourceManager;
import org.apache.uima.resource.metadata.ProcessingResourceMetaData;
@@ -154,7 +155,8 @@
}
/**
- * Creates a new CasPool
+ * Creates a new CasPool.
+ * TODO: do we need this method AND the one that takes a CasManager?
*
* @param aNumInstances
* the number of CAS instances in the pool
@@ -172,6 +174,25 @@
}
/**
+ * Creates a new CasPool
+ *
+ * @param aNumInstances
+ * the number of CAS instances in the pool
+ * @param aCasManager
+ * CAS Manager that will be used to create the CAS. The CAS Manager
+ * holds the CAS Definition. Also all CASes created from the same
+ * CAS Manager will share identical TypeSystem objects.
+ * @param aPerformanceTuningSettings
+ * Properties object containing framework performance tuning settings using key names
+ * defined on {@link UIMAFramework} interface
+ */
+ public CasPool(int aNumInstances, CasManager aCasManager,
+ Properties aPerformanceTuningSettings) throws ResourceInitializationException {
+ mNumInstances = aNumInstances;
+ fillPool(aCasManager, aPerformanceTuningSettings);
+ }
+
+ /**
* Checks out a CAS from the pool.
*
* @return a CAS instance. Returns <code>null</code> if none are available (in which case the
@@ -277,6 +298,17 @@
}
}
+ private void fillPool(CasManager casManager, Properties performanceTuningSettings)
+ throws ResourceInitializationException {
+ // create additional CASes that share same type system
+ for (int i = 0; i < mNumInstances; i++) {
+ CAS c = casManager.createNewCas(performanceTuningSettings);
+ ((CASImpl) c).setOwner(casManager);
+ mAllInstances.add(c);
+ mFreeInstances.add(c);
+ }
+ }
+
protected Vector getAllInstances() {
return mAllInstances;
}