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/25 21:27:24 UTC

svn commit: r499951 - in /incubator/uima/uimaj/trunk/uimaj-core/src/main/java/org/apache/uima: analysis_engine/impl/UimacppAnalysisEngineImpl.java uimacpp/UimacppAnalysisComponent.java

Author: alally
Date: Thu Jan 25 12:27:23 2007
New Revision: 499951

URL: http://svn.apache.org/viewvc?view=rev&rev=499951
Log:
Fixes for C++ support for CasConsumers.

Modified:
    incubator/uima/uimaj/trunk/uimaj-core/src/main/java/org/apache/uima/analysis_engine/impl/UimacppAnalysisEngineImpl.java
    incubator/uima/uimaj/trunk/uimaj-core/src/main/java/org/apache/uima/uimacpp/UimacppAnalysisComponent.java

Modified: incubator/uima/uimaj/trunk/uimaj-core/src/main/java/org/apache/uima/analysis_engine/impl/UimacppAnalysisEngineImpl.java
URL: http://svn.apache.org/viewvc/incubator/uima/uimaj/trunk/uimaj-core/src/main/java/org/apache/uima/analysis_engine/impl/UimacppAnalysisEngineImpl.java?view=diff&rev=499951&r1=499950&r2=499951
==============================================================================
--- incubator/uima/uimaj/trunk/uimaj-core/src/main/java/org/apache/uima/analysis_engine/impl/UimacppAnalysisEngineImpl.java (original)
+++ incubator/uima/uimaj/trunk/uimaj-core/src/main/java/org/apache/uima/analysis_engine/impl/UimacppAnalysisEngineImpl.java Thu Jan 25 12:27:23 2007
@@ -39,10 +39,12 @@
 import org.apache.uima.cas.CAS;
 import org.apache.uima.cas.admin.CASMgr;
 import org.apache.uima.cas.impl.CASImpl;
+import org.apache.uima.collection.CasConsumerDescription;
 import org.apache.uima.impl.UimaContext_ImplBase;
 import org.apache.uima.internal.util.UUIDGenerator;
 import org.apache.uima.jcas.JCas;
 import org.apache.uima.resource.ResourceConfigurationException;
+import org.apache.uima.resource.ResourceCreationSpecifier;
 import org.apache.uima.resource.ResourceInitializationException;
 import org.apache.uima.resource.ResourceSpecifier;
 import org.apache.uima.resource.metadata.FsIndexCollection;
@@ -68,7 +70,7 @@
   /**
    * The AnalysisEngineDescription for this AnlaysisEngine instance.
    */
-  private AnalysisEngineDescription mDescription;
+  private ResourceCreationSpecifier mDescription;
 
   /**
    * For a primitive AnalysisEngine only, the Annotator instance that contains the analysis logic.
@@ -95,18 +97,25 @@
    */
   public boolean initialize(ResourceSpecifier aSpecifier, Map aAdditionalParams)
           throws ResourceInitializationException {
-    // aSpecifier must be a AnalysisEngineDescription
-    if (!(aSpecifier instanceof AnalysisEngineDescription)) {
-      return false;
-    }
+      // AnalysisEngine can be build from any ResourceCreationSpecifier-
+      // CasConsumer descriptors as well as AnalysisEngine descriptors.
+      if (!(aSpecifier instanceof ResourceCreationSpecifier)) {
+        return false;
+      }
+      
+      // aSpecifier must be a AnalysisEngineDescription or a CasConsumerDescription
+      if (!(aSpecifier instanceof AnalysisEngineDescription)  
+        && !(aSpecifier instanceof CasConsumerDescription) ) {
+          return false;
+      }
 
-    mDescription = (AnalysisEngineDescription) aSpecifier;
+      mDescription = (ResourceCreationSpecifier) aSpecifier;
 
-    // also framework implementation must start with org.apache.uima.cpp
-    final String fwImpl = mDescription.getFrameworkImplementation();
-    if (!fwImpl.startsWith(Constants.CPP_FRAMEWORK_NAME)) {
-      return false;
-    }
+     // also framework implementation must start with org.apache.uima.cpp
+     final String fwImpl = mDescription.getFrameworkImplementation();
+     if (!fwImpl.startsWith(Constants.CPP_FRAMEWORK_NAME)) {
+          return false;
+     }
 
     // Aggregate TAF AEs mostly act like primitives (because the flow
     // control is all handled
@@ -115,26 +124,25 @@
     // and fs indexes are formed by merging everything declared in the
     // individual
     // components' descriptors
-    if (!mDescription.isPrimitive()) {
-      mergeDelegateAnalysisEngineMetaData();
+    if (mDescription instanceof AnalysisEngineDescription  && 
+    		 (! ((AnalysisEngineDescription)mDescription).isPrimitive())) { 
+      mergeDelegateAnalysisEngineMetaData();      
     }
 
+    ProcessingResourceMetaData md = (ProcessingResourceMetaData) mDescription.getMetaData();
     // resolve imports
     try {
-      mDescription.getAnalysisEngineMetaData().resolveImports();
+      md.resolveImports();
     } catch (InvalidXMLException e1) {
       throw new ResourceInitializationException(e1);
     }
 
     super.initialize(aSpecifier, aAdditionalParams);
 
-    ProcessingResourceMetaData md = (ProcessingResourceMetaData) mDescription.getMetaData();
-
     getLogger().logrb(Level.CONFIG, CLASS_NAME.getName(), "initialize", LOG_RESOURCE_BUNDLE,
             "UIMA_analysis_engine_init_begin__CONFIG", md.getName());
 
-    // AnalysisEngineMetaData md = mDescription.getAnalysisEngineMetaData();
-
+  
     // Normalize language codes. Need to do this since a wide variety of
     // spellings are acceptable according to ISO.
     normalizeIsoLangCodes(md);
@@ -167,7 +175,7 @@
     // declares any input or output sofas in its capabilities)
     mSofaAware = getAnalysisEngineMetaData().isSofaAware();
 
-    initializeAnalysisComponent(mDescription);
+    initializeAnalysisComponent();
 
     resetResultSpecificationToDefault();
 
@@ -180,8 +188,7 @@
   public void setResultSpecification(ResultSpecification aResultSpec) {
     if (aResultSpec == null) {
       resetResultSpecificationToDefault();
-    } else if (mAnnotator != null) {
-      //note have to check for null to handle "verification mode" where annotator is not instantiated
+    } else {
       mAnnotator.setResultSpecification(aResultSpec);
     }
   }
@@ -307,7 +314,7 @@
    * @throws ResourceInitializationException
    *           if an initialization failure occurs
    */
-  protected void initializeAnalysisComponent(AnalysisEngineDescription aDescription)
+  protected void initializeAnalysisComponent()
           throws ResourceInitializationException {
     // create Annotator Context and set Logger
     UimaContextAdmin uimaContext = getUimaContextAdmin();
@@ -315,7 +322,7 @@
     mAnnotatorContext = new AnnotatorContext_impl(uimaContext);
 
     if (!mVerificationMode) {
-      mAnnotator = new UimacppAnalysisComponent(aDescription, this);
+      mAnnotator = new UimacppAnalysisComponent(mDescription, this);
 
       getUimaContextAdmin().defineCasPool(mAnnotator.getCasInstancesRequired(),
               getPerformanceTuningSettings(), mSofaAware);
@@ -334,14 +341,14 @@
   protected void mergeDelegateAnalysisEngineMetaData() throws ResourceInitializationException {
     // do the merge
     TypeSystemDescription aggTypeSystem = CasCreationUtils.mergeDelegateAnalysisEngineTypeSystems(
-            mDescription, getResourceManager());
+            (AnalysisEngineDescription) mDescription, getResourceManager());
     TypePriorities aggTypePriorities = CasCreationUtils.mergeDelegateAnalysisEngineTypePriorities(
-            mDescription, getResourceManager());
+            (AnalysisEngineDescription) mDescription, getResourceManager());
     FsIndexCollection aggIndexColl = CasCreationUtils
-            .mergeDelegateAnalysisEngineFsIndexCollections(mDescription, getResourceManager());
+            .mergeDelegateAnalysisEngineFsIndexCollections((AnalysisEngineDescription)mDescription, getResourceManager());
 
     // assign results of merge to this aggregate AE's metadata
-    AnalysisEngineMetaData aggregateMD = mDescription.getAnalysisEngineMetaData();
+    ProcessingResourceMetaData aggregateMD = (ProcessingResourceMetaData) mDescription.getMetaData();
     aggregateMD.setTypeSystem(aggTypeSystem);
     aggregateMD.setTypePriorities(aggTypePriorities);
     aggregateMD.setFsIndexCollection(aggIndexColl);
@@ -434,7 +441,7 @@
    */
   protected Map _getComponentCasProcessorSpecifierMap() {
     try {
-      return mDescription.getDelegateAnalysisEngineSpecifiers();
+      return ((AnalysisEngineDescription)mDescription).getDelegateAnalysisEngineSpecifiers();
     } catch (InvalidXMLException e) {
       // this should not happen, because we resolve delegates during
       // initialization

Modified: incubator/uima/uimaj/trunk/uimaj-core/src/main/java/org/apache/uima/uimacpp/UimacppAnalysisComponent.java
URL: http://svn.apache.org/viewvc/incubator/uima/uimaj/trunk/uimaj-core/src/main/java/org/apache/uima/uimacpp/UimacppAnalysisComponent.java?view=diff&rev=499951&r1=499950&r2=499951
==============================================================================
--- incubator/uima/uimaj/trunk/uimaj-core/src/main/java/org/apache/uima/uimacpp/UimacppAnalysisComponent.java (original)
+++ incubator/uima/uimaj/trunk/uimaj-core/src/main/java/org/apache/uima/uimacpp/UimacppAnalysisComponent.java Thu Jan 25 12:27:23 2007
@@ -42,9 +42,12 @@
 import org.apache.uima.cas.admin.CASMgr;
 import org.apache.uima.cas.impl.CASMgrSerializer;
 import org.apache.uima.cas.impl.Serialization;
+import org.apache.uima.collection.CasConsumerDescription;
+import org.apache.uima.resource.ResourceCreationSpecifier;
 import org.apache.uima.resource.ResourceInitializationException;
 import org.apache.uima.resource.ResourceProcessException;
 import org.apache.uima.resource.metadata.ConfigurationParameterSettings;
+import org.apache.uima.resource.metadata.ProcessingResourceMetaData;
 import org.apache.uima.util.Level;
 import org.apache.uima.util.Logger;
 import org.apache.uima.util.ProcessTrace;
@@ -55,8 +58,8 @@
   private UimacppEngine engine;
 
   private AnalysisEngineImplBase ae;
-
-  private AnalysisEngineDescription aeDescription;
+ 
+  private ResourceCreationSpecifier resourceDescription;
 
   private Logger log;
 
@@ -74,17 +77,17 @@
    */
   private static final Class CLASS_NAME = UimacppAnalysisComponent.class;
 
-  public UimacppAnalysisComponent(AnalysisEngineDescription aeDescription, AnalysisEngineImplBase ae) {
-    super();
-    this.ae = ae;
-    this.aeDescription = aeDescription;
-    // TAF won't except the new <fsIndexCollection> element, but actuall it doesn't need it,
-    // because the index definitions are transmitted with the serialized CAS. So we can
-    // just null it out.
-    this.aeDescription.getAnalysisEngineMetaData().setFsIndexCollection(null);
-    this.tsReinit = true;
-    // System.out.println("Data path: " + dataPath);
-  }
+  public UimacppAnalysisComponent(ResourceCreationSpecifier aeDescription, AnalysisEngineImplBase ae) {
+	    super();
+	    this.ae = ae;
+	    this.resourceDescription = aeDescription;
+	    // TAF won't except the new <fsIndexCollection> element, but actuall it doesn't need it,
+	    // because the index definitions are transmitted with the serialized CAS. So we can
+	    // just null it out.
+	    ((ProcessingResourceMetaData)this.resourceDescription.getMetaData()).setFsIndexCollection(null);
+	    this.tsReinit = true;
+	    // System.out.println("Data path: " + dataPath);
+	  }
 
   /**
    * @throws ResourceInitializationException
@@ -97,9 +100,11 @@
       // update the sofa mappings in the AE descriptor with the mappings
       // specified in the context if the AE descriptor is for an aggregate
       // Ae and contains sofa mappings
-      if (!aeDescription.isPrimitive()) {
+      if (resourceDescription instanceof AnalysisEngineDescription && 
+    	   ! ((AnalysisEngineDescription) resourceDescription).isPrimitive()) {
         ComponentInfo compInfo = ((UimaContextAdmin) context).getComponentInfo();
-        SofaMapping[] aggSofaMapping = aeDescription.getSofaMappings();
+        SofaMapping[] aggSofaMapping = ((AnalysisEngineDescription)resourceDescription).getSofaMappings();
+        
         if (aggSofaMapping != null && aggSofaMapping.length > 0) {
           for (int i = 0; i < aggSofaMapping.length; i++) {
             String absoluteSofaName = compInfo
@@ -114,7 +119,7 @@
                 .getResourceManager().getDataPath());
 
         StringWriter strWriter = new StringWriter();
-        aeDescription.toXML(strWriter);
+        resourceDescription.toXML(strWriter);
         strWriter.close();
         engine = UimacppEngine.createJTafTAE(strWriter.getBuffer().toString());
       }
@@ -122,18 +127,18 @@
       logJTafException(e);
       throw new ResourceInitializationException(
               ResourceInitializationException.ERROR_INITIALIZING_FROM_DESCRIPTOR, new Object[] {
-                  aeDescription.getAnalysisEngineMetaData().getName(),
-                  aeDescription.getSourceUrlString() }, e);
+                  resourceDescription.getMetaData().getName(),
+                  resourceDescription.getSourceUrlString() }, e);
     } catch (SAXException e) {
       throw new ResourceInitializationException(
               ResourceInitializationException.ERROR_INITIALIZING_FROM_DESCRIPTOR, new Object[] {
-                  aeDescription.getAnalysisEngineMetaData().getName(),
-                  aeDescription.getSourceUrlString() }, e);
+                  resourceDescription.getMetaData().getName(),
+                  resourceDescription.getSourceUrlString() }, e);
     } catch (IOException e) {
       throw new ResourceInitializationException(
               ResourceInitializationException.ERROR_INITIALIZING_FROM_DESCRIPTOR, new Object[] {
-                  aeDescription.getAnalysisEngineMetaData().getName(),
-                  aeDescription.getSourceUrlString() }, e);
+                  resourceDescription.getMetaData().getName(),
+                  resourceDescription.getSourceUrlString() }, e);
     }
   }
 
@@ -156,7 +161,7 @@
     // get new config. settings
     ConfigurationParameterSettings settings = ae.getUimaContextAdmin().getConfigurationManager()
             .getCurrentConfigParameterSettings(ae.getUimaContextAdmin().getQualifiedContextName());
-    aeDescription.getAnalysisEngineMetaData().setConfigurationParameterSettings(settings);
+    resourceDescription.getMetaData().setConfigurationParameterSettings(settings);
   }
 
   /**
@@ -169,7 +174,7 @@
                 .getResourceManager().getDataPath());
 
         StringWriter strWriter = new StringWriter();
-        aeDescription.toXML(strWriter);
+        resourceDescription.toXML(strWriter);
         strWriter.close();
         engine = UimacppEngine.createJTafTAE(strWriter.getBuffer().toString());
         this.tsReinit = true;