in uimafit-core/src/main/java/org/apache/uima/fit/factory/AnalysisEngineFactory.java [1299:1376]
public static AnalysisEngineDescription createEngineDescription(
Class<? extends AnalysisComponent> componentClass, TypeSystemDescription typeSystem,
TypePriorities typePriorities, FsIndexCollection indexes, Capability[] capabilities,
ConfigurationParameter[] configurationParameters, Object[] configurationValues,
Map<String, ExternalResourceDescription> externalResources)
throws ResourceInitializationException {
// create the descriptor and set configuration parameters
AnalysisEngineDescription desc = UIMAFramework.getResourceSpecifierFactory()
.createAnalysisEngineDescription();
desc.setFrameworkImplementation(Constants.JAVA_FRAMEWORK_NAME);
desc.setPrimitive(true);
desc.setAnnotatorImplementationName(componentClass.getName());
org.apache.uima.fit.descriptor.OperationalProperties componentAnno = ReflectionUtil
.getInheritableAnnotation(org.apache.uima.fit.descriptor.OperationalProperties.class,
componentClass);
if (componentAnno != null) {
OperationalProperties op = desc.getAnalysisEngineMetaData().getOperationalProperties();
op.setMultipleDeploymentAllowed(componentAnno.multipleDeploymentAllowed());
op.setModifiesCas(componentAnno.modifiesCas());
op.setOutputsNewCASes(componentAnno.outputsNewCases());
} else {
OperationalProperties op = desc.getAnalysisEngineMetaData().getOperationalProperties();
op.setMultipleDeploymentAllowed(MULTIPLE_DEPLOYMENT_ALLOWED_DEFAULT);
op.setModifiesCas(MODIFIES_CAS_DEFAULT);
op.setOutputsNewCASes(OUTPUTS_NEW_CASES_DEFAULT);
}
// Configure resource meta data
AnalysisEngineMetaData meta = desc.getAnalysisEngineMetaData();
ResourceMetaDataFactory.configureResourceMetaData(meta, componentClass);
// set parameters
setParameters(desc, componentClass, configurationParameters, configurationValues);
// set the type system
if (typeSystem != null) {
desc.getAnalysisEngineMetaData().setTypeSystem(typeSystem);
}
if (typePriorities != null) {
desc.getAnalysisEngineMetaData().setTypePriorities(typePriorities);
}
// set indexes from the argument to this call and from the annotation present in the
// component
List<FsIndexCollection> fsIndexes = new ArrayList<>();
if (indexes != null) {
fsIndexes.add(indexes);
}
fsIndexes.add(FsIndexFactory.createFsIndexCollection(componentClass));
FsIndexCollection aggIndexColl = CasCreationUtils.mergeFsIndexes(fsIndexes,
ResourceManagerFactory.newResourceManager());
desc.getAnalysisEngineMetaData().setFsIndexCollection(aggIndexColl);
// set capabilities from the argument to this call or from the annotation present in the
// component if the argument is null
if (capabilities != null) {
desc.getAnalysisEngineMetaData().setCapabilities(capabilities);
} else {
Capability capability = CapabilityFactory.createCapability(componentClass);
if (capability != null) {
desc.getAnalysisEngineMetaData().setCapabilities(new Capability[] { capability });
}
}
// Extract external resource dependencies
desc.setExternalResourceDependencies(createResourceDependencies(componentClass));
// Bind External Resources
if (externalResources != null) {
for (Entry<String, ExternalResourceDescription> e : externalResources.entrySet()) {
bindResourceOnce(desc, e.getKey(), e.getValue());
}
}
return desc;
}