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/03/21 17:09:11 UTC

svn commit: r520929 - in /incubator/uima/uimaj/trunk/uimaj-core/src/main: java/org/apache/uima/ java/org/apache/uima/resource/ java/org/apache/uima/resource/impl/ resources/org/apache/uima/

Author: alally
Date: Wed Mar 21 09:09:10 2007
New Revision: 520929

URL: http://svn.apache.org/viewvc?view=rev&rev=520929
Log:
Added ResourceManager.setCasManager
UIMA-353: https://issues.apache.org/jira/browse/UIMA-353

Modified:
    incubator/uima/uimaj/trunk/uimaj-core/src/main/java/org/apache/uima/UIMA_IllegalStateException.java
    incubator/uima/uimaj/trunk/uimaj-core/src/main/java/org/apache/uima/resource/ResourceManager.java
    incubator/uima/uimaj/trunk/uimaj-core/src/main/java/org/apache/uima/resource/impl/ResourceManager_impl.java
    incubator/uima/uimaj/trunk/uimaj-core/src/main/resources/org/apache/uima/UIMAException_Messages.properties

Modified: incubator/uima/uimaj/trunk/uimaj-core/src/main/java/org/apache/uima/UIMA_IllegalStateException.java
URL: http://svn.apache.org/viewvc/incubator/uima/uimaj/trunk/uimaj-core/src/main/java/org/apache/uima/UIMA_IllegalStateException.java?view=diff&rev=520929&r1=520928&r2=520929
==============================================================================
--- incubator/uima/uimaj/trunk/uimaj-core/src/main/java/org/apache/uima/UIMA_IllegalStateException.java (original)
+++ incubator/uima/uimaj/trunk/uimaj-core/src/main/java/org/apache/uima/UIMA_IllegalStateException.java Wed Mar 21 09:09:10 2007
@@ -74,6 +74,14 @@
   public static final String NO_NEXT_CAS = "no_next_cas";
 
   /**
+   * Message key for a standard UIMA exception message: ResourceManager.setCasManager was called
+   * after the CAS Manager had already been set.  You can only call setCasManager once, and you
+   * cannot have previously called ResourceManager.getCasManager or initialized any
+   * AnalysisEngines that use this ResouceManager.
+   */
+  public static final String CANNOT_SET_CAS_MANAGER = "cannot_set_cas_manager";
+  
+  /**
    * Creates a new exception with a null message.
    */
   public UIMA_IllegalStateException() {

Modified: incubator/uima/uimaj/trunk/uimaj-core/src/main/java/org/apache/uima/resource/ResourceManager.java
URL: http://svn.apache.org/viewvc/incubator/uima/uimaj/trunk/uimaj-core/src/main/java/org/apache/uima/resource/ResourceManager.java?view=diff&rev=520929&r1=520928&r2=520929
==============================================================================
--- incubator/uima/uimaj/trunk/uimaj-core/src/main/java/org/apache/uima/resource/ResourceManager.java (original)
+++ incubator/uima/uimaj/trunk/uimaj-core/src/main/java/org/apache/uima/resource/ResourceManager.java Wed Mar 21 09:09:10 2007
@@ -280,4 +280,20 @@
    * Gets the CasManager, which manages the creation and pooling of CASes.
    */
   public CasManager getCasManager();
+
+  /**
+   * Sets the CasManager, which manages the creation and pooling of CASes.
+   * This method does not normally need to be called by an application.  It allows
+   * a custom CAS Manager implementation to be substituted for the default one,
+   * which may be useful when embedding UIMA in other middleware where a different
+   * CAS Manager implementation may be desired.
+   * <p>
+   * This method can only be called once, and must be called before creating any 
+   * AnalysisEngines that use this ResourceManager.  An Exception will be thrown if this 
+   * method is called twice or is called after {@link #getCasManager()} has already been called 
+   * (which happens during AE initialization).
+   * 
+   * @param aCasManager CAS Manager instance to plug in
+   */
+  public void setCasManager(CasManager aCasManager);
 }

Modified: incubator/uima/uimaj/trunk/uimaj-core/src/main/java/org/apache/uima/resource/impl/ResourceManager_impl.java
URL: http://svn.apache.org/viewvc/incubator/uima/uimaj/trunk/uimaj-core/src/main/java/org/apache/uima/resource/impl/ResourceManager_impl.java?view=diff&rev=520929&r1=520928&r2=520929
==============================================================================
--- incubator/uima/uimaj/trunk/uimaj-core/src/main/java/org/apache/uima/resource/impl/ResourceManager_impl.java (original)
+++ incubator/uima/uimaj/trunk/uimaj-core/src/main/java/org/apache/uima/resource/impl/ResourceManager_impl.java Wed Mar 21 09:09:10 2007
@@ -29,6 +29,8 @@
 import java.util.Map;
 
 import org.apache.uima.UIMAFramework;
+import org.apache.uima.UIMARuntimeException;
+import org.apache.uima.UIMA_IllegalStateException;
 import org.apache.uima.internal.util.UIMAClassLoader;
 import org.apache.uima.resource.CasManager;
 import org.apache.uima.resource.DataResource;
@@ -99,7 +101,7 @@
   private UIMAClassLoader uimaCL = null;
 
   /** CasManager - manages creation and pooling of CASes. */
-  private CasManager mCasManager = new CasManager_impl(this);
+  private CasManager mCasManager = null;
 
   /**
    * Creates a new <code>ResourceManager_impl</code>.
@@ -607,7 +609,29 @@
    * @see org.apache.uima.resource.ResourceManager#getCasManager()
    */
   public CasManager getCasManager() {
-    return mCasManager;
+    synchronized(this) {
+      if (mCasManager == null) {
+        mCasManager = new CasManager_impl(this);
+      }
+      return mCasManager;
+    }
+  }
+  
+  
+
+  /* (non-Javadoc)
+   * @see org.apache.uima.resource.ResourceManager#setCasManager(org.apache.uima.resource.CasManager)
+   */
+  public void setCasManager(CasManager aCasManager) {
+    synchronized(this) {
+      if (mCasManager == null) {
+        mCasManager = aCasManager;
+      }
+      else {
+        throw new UIMA_IllegalStateException(
+                UIMA_IllegalStateException.CANNOT_SET_CAS_MANAGER, new Object[0]);
+      }
+    }
   }
 
   static class ResourceRegistration {

Modified: incubator/uima/uimaj/trunk/uimaj-core/src/main/resources/org/apache/uima/UIMAException_Messages.properties
URL: http://svn.apache.org/viewvc/incubator/uima/uimaj/trunk/uimaj-core/src/main/resources/org/apache/uima/UIMAException_Messages.properties?view=diff&rev=520929&r1=520928&r2=520929
==============================================================================
--- incubator/uima/uimaj/trunk/uimaj-core/src/main/resources/org/apache/uima/UIMAException_Messages.properties (original)
+++ incubator/uima/uimaj/trunk/uimaj-core/src/main/resources/org/apache/uima/UIMAException_Messages.properties Wed Mar 21 09:09:10 2007
@@ -63,6 +63,10 @@
            
 no_next_cas = CasIterator.next was called when there were no more CASes remaining to be read.
 
+cannot_set_cas_manager = ResourceManager.setCasManager was called after the CAS Manager had already been set. \
+   You can only call setCasManager once, and you cannot have previously called ResourceManager.getCasManager \
+   or initialized any AnalysisEngines that use this ResouceManager.
+
 #-----------------------------
 #UIMA_IllegalArgumentException
 #-----------------------------