You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@uima.apache.org by ea...@apache.org on 2008/03/12 19:34:44 UTC

svn commit: r636443 - in /incubator/uima/uimacpp/trunk/src: framework/annotator_context.cpp framework/taespecifier.cpp framework/taespecifierbuilder.cpp framework/uima/taespecifier.hpp framework/uima/taespecifierbuilder.hpp test/src/test_engine.cpp

Author: eae
Date: Wed Mar 12 11:34:41 2008
New Revision: 636443

URL: http://svn.apache.org/viewvc?rev=636443&view=rev
Log:
UIMA-798 Apply Bhavani's patch

Modified:
    incubator/uima/uimacpp/trunk/src/framework/annotator_context.cpp
    incubator/uima/uimacpp/trunk/src/framework/taespecifier.cpp
    incubator/uima/uimacpp/trunk/src/framework/taespecifierbuilder.cpp
    incubator/uima/uimacpp/trunk/src/framework/uima/taespecifier.hpp
    incubator/uima/uimacpp/trunk/src/framework/uima/taespecifierbuilder.hpp
    incubator/uima/uimacpp/trunk/src/test/src/test_engine.cpp

Modified: incubator/uima/uimacpp/trunk/src/framework/annotator_context.cpp
URL: http://svn.apache.org/viewvc/incubator/uima/uimacpp/trunk/src/framework/annotator_context.cpp?rev=636443&r1=636442&r2=636443&view=diff
==============================================================================
--- incubator/uima/uimacpp/trunk/src/framework/annotator_context.cpp (original)
+++ incubator/uima/uimacpp/trunk/src/framework/annotator_context.cpp Wed Mar 12 11:34:41 2008
@@ -613,7 +613,7 @@
   }
 
   void AnnotatorContext::release(vector<std::string*> & returnValues) const {
-    for (int i=0; i < returnValues.size();i++) {
+    for (size_t i=0; i < returnValues.size();i++) {
       delete returnValues.at(i);
     }
     returnValues.clear();

Modified: incubator/uima/uimacpp/trunk/src/framework/taespecifier.cpp
URL: http://svn.apache.org/viewvc/incubator/uima/uimacpp/trunk/src/framework/taespecifier.cpp?rev=636443&r1=636442&r2=636443&view=diff
==============================================================================
--- incubator/uima/uimacpp/trunk/src/framework/taespecifier.cpp (original)
+++ incubator/uima/uimacpp/trunk/src/framework/taespecifier.cpp Wed Mar 12 11:34:41 2008
@@ -49,6 +49,9 @@
   AnalysisEngineMetaData::~AnalysisEngineMetaData() {
     delete iv_pTypeSystemDesc;
     delete iv_pFlowConstraints;
+    if (iv_pOperationalProperties != 0) {
+      delete iv_pOperationalProperties;
+    }
     size_t i=0;
     for (i=0; i < iv_capabilities.size(); i++) {
       delete iv_capabilities[i];
@@ -1537,14 +1540,19 @@
 
     s.append("</capabilities>");
     
-    //temporarity added here to support AsynchAE
-	//needs to be supported by XMLParser
-	s.append("<operationalProperties>");
-	s.append ("<modifiesCas>true</modifiesCas>");
-	s.append ("<multipleDeploymentAllowed>true</multipleDeploymentAllowed>");
-    s.append("<outputsNewCASes>false</outputsNewCASes>");
-    s.append("</operationalProperties>");
-
+    if (this->getAnalysisEngineMetaData()->getOperationalProperties() != 0) {
+      s.append("<operationalProperties>"); 
+      s.append ("<modifiesCas>");
+      appendBool(this->getAnalysisEngineMetaData()->getOperationalProperties()->getModifiesCas(), s);
+      s.append ("</modifiesCas>");
+      s.append ("<multipleDeploymentAllowed>");
+      appendBool(this->getAnalysisEngineMetaData()->getOperationalProperties()->isMultipleDeploymentAllowed(), s);
+      s.append("</multipleDeploymentAllowed>");
+      s.append("<outputsNewCASes>");
+      appendBool(this->getAnalysisEngineMetaData()->getOperationalProperties()->getOutputsNewCASes(), s);
+      s.append("</outputsNewCASes>");
+      s.append("</operationalProperties>");
+    }
     if (isCasConsumer) {
       s.append("</processingResourceMetaData>");
     } else s.append("</analysisEngineMetaData>");
@@ -1553,4 +1561,5 @@
 
     
 } //namespace
+
 

Modified: incubator/uima/uimacpp/trunk/src/framework/taespecifierbuilder.cpp
URL: http://svn.apache.org/viewvc/incubator/uima/uimacpp/trunk/src/framework/taespecifierbuilder.cpp?rev=636443&r1=636442&r2=636443&view=diff
==============================================================================
--- incubator/uima/uimacpp/trunk/src/framework/taespecifierbuilder.cpp (original)
+++ incubator/uima/uimacpp/trunk/src/framework/taespecifierbuilder.cpp Wed Mar 12 11:34:41 2008
@@ -549,6 +549,8 @@
         buildCapabilities(*aeMetaData, child);
       } else if (childTag.compare(TAG_FLOW) == 0) {
         aeMetaData->setFlowConstraints(buildFlowConstraints(child));
+      } else if (childTag.compare(TAG_OPERATIONAL_PROPERTIES) == 0) {
+        aeMetaData->setOperationalProperties(buildOperationalProperties(child));
       } else {
         /**
         ErrorMessage errMsg = ErrorMessage(UIMA_MSG_ID_EXC_UNKNOWN_CONFIG_XML_TAG);
@@ -1675,6 +1677,49 @@
     return flow;
   }
 
+
+  OperationalProperties * XMLParser::buildOperationalProperties(DOMElement * descElem) {
+    assert(EXISTS(descElem));
+    assert( XMLString::compareString( descElem->getNodeName(), convert(TAG_OPERATIONAL_PROPERTIES) ) == 0);
+    DOMNodeList * children = descElem->getChildNodes();
+    assert(EXISTS(children));
+    assert(children->getLength() > 0);
+
+    OperationalProperties * op = new OperationalProperties();
+
+    size_t i;
+    for (i=0; i < children->getLength(); i++) {
+      if ((children->item(i))->getNodeType() != DOMNode::ELEMENT_NODE) {
+        continue;
+      }
+      DOMElement * child = (DOMElement *) children->item(i);
+      const icu::UnicodeString & childTag = convert(child->getNodeName());
+
+      if (childTag.compare(TAG_MODIFIES_CAS) == 0) {
+        op->setModifiesCas(isTrue(getSpannedText(child)));
+      } else if (childTag.compare(TAG_MULTIPLE_DEPLOY_ALLOWED)==0) {
+        op->setMultipleDeploymentAllowed(isTrue(getSpannedText(child)));
+      } else if (childTag.compare(TAG_OUTPUTS_NEW_CASES)==0) {
+        op->setOutputsNewCASes(isTrue(getSpannedText(child)));
+      } else {
+        /**
+        ErrorMessage errMsg(UIMA_MSG_ID_EXC_UNKNOWN_CONFIG_XML_TAG);
+        errMsg.addParam(childTag);
+        errMsg.addParam(schemaFileName);
+        UIMA_EXC_THROW_NEW(InvalidXMLException,
+                          UIMA_ERR_CONFIG_INVALID_XML_TAG,
+                          errMsg,
+                          UIMA_MSG_ID_EXCON_BUILD_TAE_SPEC,
+                          ErrorInfo::unrecoverable);
+        **/
+      }
+    }
+    return op;
+  }
+
+
+
+
   FixedFlow * XMLParser::buildFixedFlow(DOMElement * descElem) {
     assert(EXISTS(descElem));
     assert( XMLString::compareString(descElem->getNodeName(), convert(TAG_FLOW_FIX)) == 0);
@@ -2415,7 +2460,11 @@
   char const * XMLParser::FS_INDEX_KEY_KIND_BAG="bag";
   char const * XMLParser::FS_INDEX_KEY_KIND_SET="set";
 
-  
+  char const * XMLParser::TAG_OPERATIONAL_PROPERTIES="operationalProperties";
+  char const * XMLParser::TAG_MODIFIES_CAS="modifiesCas";
+  char const * XMLParser::TAG_MULTIPLE_DEPLOY_ALLOWED="multipleDeploymentAllowed";
+  char const * XMLParser::TAG_OUTPUTS_NEW_CASES="outputsNewCASes";
+
 
 
   

Modified: incubator/uima/uimacpp/trunk/src/framework/uima/taespecifier.hpp
URL: http://svn.apache.org/viewvc/incubator/uima/uimacpp/trunk/src/framework/uima/taespecifier.hpp?rev=636443&r1=636442&r2=636443&view=diff
==============================================================================
--- incubator/uima/uimacpp/trunk/src/framework/uima/taespecifier.hpp (original)
+++ incubator/uima/uimacpp/trunk/src/framework/uima/taespecifier.hpp Wed Mar 12 11:34:41 2008
@@ -57,6 +57,40 @@
   UIMA_EXC_CLASSDECLARE(ConfigParamLookupException, ConfigException);
 
 
+  /**
+  * Specifies operational properties of a UIMA component.
+  **/
+  class  UIMA_LINK_IMPORTSPEC OperationalProperties : public MetaDataObject {
+  public:
+
+    OperationalProperties()
+        :iv_modifiesCas(false), iv_multipleDeploymentAllowed(false), 
+                iv_outputsNewCASes(false) {}
+    bool getModifiesCas() const {
+        return iv_modifiesCas;
+    }
+    bool isMultipleDeploymentAllowed() const {
+      return iv_multipleDeploymentAllowed;
+    }
+    bool getOutputsNewCASes() const {
+      return iv_outputsNewCASes;
+    }
+
+    void setModifiesCas(bool val) {
+      iv_modifiesCas = val;
+    }
+    void setMultipleDeploymentAllowed(bool val) {
+      iv_multipleDeploymentAllowed = val;
+    }
+    void setOutputsNewCASes(bool val) {
+      iv_outputsNewCASes = val;
+    }
+  private:
+    bool iv_modifiesCas;
+    bool iv_multipleDeploymentAllowed;
+    bool iv_outputsNewCASes;
+  };
+
 
 
   /**
@@ -332,7 +366,8 @@
         :MetaDataObject(), CONFIG_GROUP_NAME_WHEN_NO_GROUPS("CONFIG_GROUP_NAME_WHEN_NO_GROUPS"),
         CONFIG_GROUP_NAME_COMMON_PARMS("CONFIG_GROUP_NAME_COMMON_PARAMETERS"),
         iv_hasGroups(false), iv_hasDefaultGroup(false), iv_searchStrategy(NONE),
-        iv_pTypeSystemDesc(NULL), iv_pFlowConstraints(NULL), iv_vecpTypePriorities() {}
+        iv_pTypeSystemDesc(NULL), iv_pFlowConstraints(NULL), iv_vecpTypePriorities(),
+        iv_pOperationalProperties(NULL) {}
 
     ~AnalysisEngineMetaData();
 
@@ -594,6 +629,13 @@
       return iv_capabilities;
     }
 
+    void setOperationalProperties(OperationalProperties  * prop) {
+      iv_pOperationalProperties = prop;
+    }
+
+    const OperationalProperties * getOperationalProperties() const {
+       return iv_pOperationalProperties;
+    }
     /**
     * NOTE: This object will assume memory ownership of <code>indexDesc</code>, i.e.
     * it will be deleted when this object's destructor is called !
@@ -804,7 +846,7 @@
     TyVecpFSIndexImportDescriptions iv_fsindexImportDescs;
     TyVecpTypePriorityImportDescriptions iv_typepriorityImportDescs;
 
-
+    OperationalProperties * iv_pOperationalProperties;
   };
 
   /**
@@ -1140,6 +1182,7 @@
 }
 
 #endif
+
 
 
 

Modified: incubator/uima/uimacpp/trunk/src/framework/uima/taespecifierbuilder.hpp
URL: http://svn.apache.org/viewvc/incubator/uima/uimacpp/trunk/src/framework/uima/taespecifierbuilder.hpp?rev=636443&r1=636442&r2=636443&view=diff
==============================================================================
--- incubator/uima/uimacpp/trunk/src/framework/uima/taespecifierbuilder.hpp (original)
+++ incubator/uima/uimacpp/trunk/src/framework/uima/taespecifierbuilder.hpp Wed Mar 12 11:34:41 2008
@@ -186,7 +186,7 @@
     void parseSofaMappings(AnalysisEngineDescription::TyVecpSofaMappings  & sofaMapDesc,
 											InputSource const & crInputSource);
 
-
+    OperationalProperties * buildOperationalProperties(DOMElement * descElem);
   private:
     
     AnalysisEngineMetaData * buildAEMetaData(DOMElement * specElem, icu::UnicodeString const &);
@@ -379,6 +379,11 @@
     static char const * FS_INDEX_KEY_KIND_BAG;
     static char const * FS_INDEX_KEY_KIND_SET;
 
+    static char const * TAG_OPERATIONAL_PROPERTIES;
+    static char const * TAG_MODIFIES_CAS;
+    static char const * TAG_MULTIPLE_DEPLOY_ALLOWED;
+    static char const * TAG_OUTPUTS_NEW_CASES;
+
 	
 
   };
@@ -459,5 +464,6 @@
 }
 
 #endif
+
 
 

Modified: incubator/uima/uimacpp/trunk/src/test/src/test_engine.cpp
URL: http://svn.apache.org/viewvc/incubator/uima/uimacpp/trunk/src/test/src/test_engine.cpp?rev=636443&r1=636442&r2=636443&view=diff
==============================================================================
--- incubator/uima/uimacpp/trunk/src/test/src/test_engine.cpp (original)
+++ incubator/uima/uimacpp/trunk/src/test/src/test_engine.cpp Wed Mar 12 11:34:41 2008
@@ -445,7 +445,6 @@
   }
   failIfNotTrue( pEngine != NULL );
 
-
   for (size_t ui = 0; ui < uiNumOfIterations; ui++) {
     const TCHAR *           cpszInpTerm = 0;
 
@@ -495,6 +494,13 @@
   failIfNotTrue(errInfo.getErrorId() == UIMA_ERR_NONE);
   failIfNotTrue(pEngine != NULL);
 
+
+  //test operational properties settings
+  failIfNotTrue(pEngine->getAnalysisEngineMetaData().getOperationalProperties()->getOutputsNewCASes() == true);
+  failIfNotTrue(pEngine->getAnalysisEngineMetaData().getOperationalProperties()->getModifiesCas() == false);
+  failIfNotTrue(pEngine->getAnalysisEngineMetaData().getOperationalProperties()->isMultipleDeploymentAllowed() == true);
+
+ 
   CAS * cas = pEngine->newCAS();
   cas->setDocumentText(UnicodeString("This is the first sentence. This is the second sentence. This is the third sentence."));
 
@@ -602,6 +608,7 @@
 }
 
 /* <EOF> */
+