Uploaded image for project: 'UIMA'
  1. UIMA
  2. UIMA-5807

Support PEARs in AnalysisEngineFactory

    XMLWordPrintableJSON

Details

    • Improvement
    • Status: Resolved
    • Major
    • Resolution: Fixed
    • None
    • 2.5.0uimaFIT, 3.1.0uimaFIT
    • uimaFIT
    • None

    Description

      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:

       

      public static AnalysisEngineDescription createEngineDescription(
       List<AnalysisEngineDescription> analysisEngineDescriptions, List<String> componentNames,
       TypePriorities typePriorities, SofaMapping[] sofaMappings,
       FlowControllerDescription flowControllerDescription)
       

       

      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:

       

      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;
       }
      

       

       

       

      Attachments

        Activity

          People

            rec Richard Eckart de Castilho
            pkluegl Peter Klügl
            Votes:
            0 Vote for this issue
            Watchers:
            3 Start watching this issue

            Dates

              Created:
              Updated:
              Resolved:

              Time Tracking

                Estimated:
                Original Estimate - Not Specified
                Not Specified
                Remaining:
                Remaining Estimate - 0h
                0h
                Logged:
                Time Spent - 0.5h
                0.5h