You are viewing a plain text version of this content. The canonical link for it is here.
Posted to dev@uima.apache.org by "ASF GitHub Bot (Jira)" <de...@uima.apache.org> on 2020/01/29 12:04:00 UTC

[jira] [Work logged] (UIMA-5807) Support PEARs in AnalysisEngineFactory

     [ https://issues.apache.org/jira/browse/UIMA-5807?focusedWorklogId=378747&page=com.atlassian.jira.plugin.system.issuetabpanels:worklog-tabpanel#worklog-378747 ]

ASF GitHub Bot logged work on UIMA-5807:
----------------------------------------

                Author: ASF GitHub Bot
            Created on: 29/Jan/20 12:03
            Start Date: 29/Jan/20 12:03
    Worklog Time Spent: 10m 
      Work Description: reckart commented on pull request #34: [UIMA-5807] Support PEARs in AnalysisEngineFactory
URL: https://github.com/apache/uima-uimafit/pull/34
 
 
   
 
----------------------------------------------------------------
This is an automated message from the Apache Git Service.
To respond to the message, please log on to GitHub and use the
URL above to go to the specific comment.
 
For queries about this service, please contact Infrastructure at:
users@infra.apache.org


Issue Time Tracking
-------------------

            Worklog Id:     (was: 378747)
    Remaining Estimate: 0h
            Time Spent: 10m

> 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: 10m
>  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)