[
https://issues.apache.org/jira/browse/UIMA-5807?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=17027589#comment-17027589
]
Peter Klügl commented on UIMA-5807:
-----------------------------------
looks good
> Support PEARs in AnalysisEngineFactory
> --------------------------------------
>
> Key: UIMA-5807
> URL: https://issues.apache.org/jira/browse/UIMA-5807
> Project: UIMA
> Issue Type: Improvement
> Components: uimaFIT
> Reporter: Peter Klügl
> Assignee: Richard Eckart de Castilho
> Priority: Major
> Fix For: 2.6.0uimaFIT, 3.1.0uimaFIT
>
> Time Spent: 20m
> Remaining Estimate: 0h
>
> It is currently a bit cumbersome to use the uimaFIT factories together with
> UIMA PEARs. A possible improvement in this direction could be to support the
> pear wrappers in the AnalysisEngineFactory methods:
>
> {code:java}
> public static AnalysisEngineDescription createEngineDescription(
> List<AnalysisEngineDescription> analysisEngineDescriptions, List<String>
> componentNames,
> TypePriorities typePriorities, SofaMapping[] sofaMappings,
> FlowControllerDescription flowControllerDescription)
> {code}
>
> If another method is added or the given list uses ResourceSpecifier instead
> of AnalysisEngineDescription (and some ifs in the loop), then PEARs would be
> supported.
>
> An exemplary implementation could look like:
>
> {code:java}
> public static AnalysisEngineDescription createEngineDescription(
> List<ResourceSpecifier> resourceSpecifiers, List<String> componentNames,
> TypePriorities typePriorities, SofaMapping[] sofaMappings,
> FlowControllerDescription flowControllerDescription) {
> if (componentNames == null)
> { throw new IllegalArgumentException("Parameter [componentNames] cannot be
> null"); }
> if (resourceSpecifiers == null)
> { throw new IllegalArgumentException("Parameter [analysisEngineDescriptions]
> cannot be null"); }
> if (resourceSpecifiers.size() != componentNames.size())
> { throw new IllegalArgumentException("Number of descriptions [" +
> resourceSpecifiers.size() + "]does not match number of component names [" +
> componentNames.size() + "]."); }
> // create the descriptor and set configuration parameters
> AnalysisEngineDescription desc = new AnalysisEngineDescription_impl();
> desc.setFrameworkImplementation(Constants.JAVA_FRAMEWORK_NAME);
> desc.setPrimitive(false);
> // if any of the aggregated analysis engines does not allow multiple
> // deployment, then the
> // aggregate engine may also not be multiply deployed
> boolean allowMultipleDeploy = true;
> for (ResourceSpecifier d : resourceSpecifiers) {
> // for now only consider AnalysisEngineDescriptions: we implicitly assume
> that all pears have allowMultipleDeploy = true
> if (d instanceof AnalysisEngineDescription)
> { allowMultipleDeploy &= ((AnalysisEngineDescription)
> d).getAnalysisEngineMetaData().getOperationalProperties()
> .isMultipleDeploymentAllowed(); }
> }
> desc.getAnalysisEngineMetaData().getOperationalProperties()
> .setMultipleDeploymentAllowed(allowMultipleDeploy);
> List<String> flowNames = new ArrayList<String>();
> for (int i = 0; i < resourceSpecifiers.size(); i++)
> { ResourceSpecifier aed = resourceSpecifiers.get(i); String componentName =
> componentNames.get(i);
> desc.getDelegateAnalysisEngineSpecifiersWithImports().put(componentName,
> aed); flowNames.add(componentName); }
> if (flowControllerDescription != null)
> { FlowControllerDeclaration flowControllerDeclaration = new
> FlowControllerDeclaration_impl();
> flowControllerDeclaration.setSpecifier(flowControllerDescription);
> desc.setFlowControllerDeclaration(flowControllerDeclaration); }
> FixedFlow fixedFlow = new FixedFlow_impl();
> fixedFlow.setFixedFlow(flowNames.toArray(new String[flowNames.size()]));
> desc.getAnalysisEngineMetaData().setFlowConstraints(fixedFlow);
> if (typePriorities != null)
> { desc.getAnalysisEngineMetaData().setTypePriorities(typePriorities); }
> if (sofaMappings != null)
> { desc.setSofaMappings(sofaMappings); }
> return desc;
> }
> {code}
>
>
>
--
This message was sent by Atlassian Jira
(v8.3.4#803005)