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;