You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@uima.apache.org by re...@apache.org on 2020/01/09 16:07:59 UTC

[uima-uimaj] 01/01: [UIMA-5936] PearSpecifier should be able to store every parametertype that analysisEngines support

This is an automated email from the ASF dual-hosted git repository.

rec pushed a commit to branch feature/UIMA-5936-v2-PearSpecifier-should-be-able-to-store-every-parametertype-that-analysisEngines-support
in repository https://gitbox.apache.org/repos/asf/uima-uimaj.git

commit 2a3e82fdac4f8ee7b065f00b278af72aaa5940cf
Author: Matthias Koch <ma...@averbis.com>
AuthorDate: Thu Jan 9 17:00:37 2020 +0100

    [UIMA-5936] PearSpecifier should be able to store every parametertype that analysisEngines support
    
    - Changed the specifier to store an array of nameValuePairs, so all possible analysisEngine parameters are supported
---
 .../impl/PearAnalysisEngineWrapper.java            | 12 ++++----
 .../org/apache/uima/resource/PearSpecifier.java    | 16 +++++-----
 .../uima/resource/impl/PearSpecifier_impl.java     | 13 ++++-----
 .../src/main/resources/resourceSpecifierSchema.xsd | 11 ++-----
 .../impl/PearAnalysisEngineWrapperTest.java        | 12 ++++----
 .../uima/resource/impl/PearSpecifier_implTest.java | 34 ++++++++++++----------
 .../apache/uima/util/impl/XMLParser_implTest.java  | 14 ++++-----
 .../resources/XmlParserTest/TestPearSpecifier.xml  | 16 ++++++----
 8 files changed, 65 insertions(+), 63 deletions(-)

diff --git a/uimaj-core/src/main/java/org/apache/uima/analysis_engine/impl/PearAnalysisEngineWrapper.java b/uimaj-core/src/main/java/org/apache/uima/analysis_engine/impl/PearAnalysisEngineWrapper.java
index cd6e5f1..c42b8cc 100644
--- a/uimaj-core/src/main/java/org/apache/uima/analysis_engine/impl/PearAnalysisEngineWrapper.java
+++ b/uimaj-core/src/main/java/org/apache/uima/analysis_engine/impl/PearAnalysisEngineWrapper.java
@@ -40,7 +40,6 @@ import org.apache.uima.cas.CAS;
 import org.apache.uima.cas.TypeSystem;
 import org.apache.uima.impl.ChildUimaContext_impl;
 import org.apache.uima.pear.tools.PackageBrowser;
-import org.apache.uima.resource.Parameter;
 import org.apache.uima.resource.PearSpecifier;
 import org.apache.uima.resource.Resource;
 import org.apache.uima.resource.ResourceConfigurationException;
@@ -50,6 +49,7 @@ import org.apache.uima.resource.ResourceProcessException;
 import org.apache.uima.resource.ResourceSpecifier;
 import org.apache.uima.resource.impl.ResourceManager_impl;
 import org.apache.uima.resource.metadata.ConfigurationParameterSettings;
+import org.apache.uima.resource.metadata.NameValuePair;
 import org.apache.uima.resource.metadata.ProcessingResourceMetaData;
 import org.apache.uima.resource.metadata.ResourceMetaData;
 import org.apache.uima.util.InvalidXMLException;
@@ -267,12 +267,12 @@ public class PearAnalysisEngineWrapper extends AnalysisEngineImplBase {
               .getAnalysisEngineMetaData();
       ConfigurationParameterSettings configurationParameterSettings = analysisEngineMetaData
               .getConfigurationParameterSettings();
-      Parameter[] parameters = pearSpec.getParameters();
+      NameValuePair[] pearParameters = pearSpec.getPearParameters();
 
-      if (parameters != null) {
-        for (Parameter parameter : parameters) {
-          configurationParameterSettings.setParameterValue(parameter.getName(),
-                  parameter.getValue());
+      if (pearParameters != null) {
+        for (NameValuePair pearParameter : pearParameters) {
+          configurationParameterSettings.setParameterValue(pearParameter.getName(),
+        		  pearParameter.getValue());
         }
       }
 
diff --git a/uimaj-core/src/main/java/org/apache/uima/resource/PearSpecifier.java b/uimaj-core/src/main/java/org/apache/uima/resource/PearSpecifier.java
index 94002fa..2a13427 100644
--- a/uimaj-core/src/main/java/org/apache/uima/resource/PearSpecifier.java
+++ b/uimaj-core/src/main/java/org/apache/uima/resource/PearSpecifier.java
@@ -19,6 +19,8 @@
 
 package org.apache.uima.resource;
 
+import org.apache.uima.resource.metadata.NameValuePair;
+
 /**
  * A type of <code>ResourceSpecifier</code> that locate an installed pear <code>Resource</code>.
  * 
@@ -41,18 +43,16 @@ public interface PearSpecifier extends ResourceServiceSpecifier {
   public void setPearPath(String aPearPath);
 
   /**
-   * Gets parameters that may be read by the pear resource class when it is initialized.
+   * Gets pearParameters that may be read by the pear resource class when it is initialized.
    * 
-   * @return an array of parameters.  This will never return <code>null</code>.
+   * @return an array of pearParameters.  This will never return <code>null</code>.
    */
-  public Parameter[] getParameters();
+  public NameValuePair[] getPearParameters();
 
   /**
-   * Sets parameters that may be read by the pear resource class when it is initialized.
+   * Sets pearParameters that may be read by the pear resource class when it is initialized.
    * 
-   * @param parameters the Parameters to set.
+   * @param pearParameters the pearParameters to set.
    */
-  public void setParameters(Parameter[] parameters);
-
-
+  public void setPearParameters(NameValuePair[] pearParameters);
 }
diff --git a/uimaj-core/src/main/java/org/apache/uima/resource/impl/PearSpecifier_impl.java b/uimaj-core/src/main/java/org/apache/uima/resource/impl/PearSpecifier_impl.java
index d8bad52..a1bc6b1 100644
--- a/uimaj-core/src/main/java/org/apache/uima/resource/impl/PearSpecifier_impl.java
+++ b/uimaj-core/src/main/java/org/apache/uima/resource/impl/PearSpecifier_impl.java
@@ -18,9 +18,8 @@
  */
 
 package org.apache.uima.resource.impl;
-
-import org.apache.uima.resource.Parameter;
 import org.apache.uima.resource.PearSpecifier;
+import org.apache.uima.resource.metadata.NameValuePair;
 import org.apache.uima.resource.metadata.impl.MetaDataObject_impl;
 import org.apache.uima.resource.metadata.impl.PropertyXmlInfo;
 import org.apache.uima.resource.metadata.impl.XmlizationInfo;
@@ -37,7 +36,7 @@ public class PearSpecifier_impl extends MetaDataObject_impl implements PearSpeci
   /** PEAR path setting */
   private String mPearPath;
 
-  private Parameter[] mParameters;
+  private NameValuePair[] mParameters;
 
   /**
    * Creates a new <code>PearSpecifier_impl</code>.
@@ -48,7 +47,7 @@ public class PearSpecifier_impl extends MetaDataObject_impl implements PearSpeci
   /**
    * @return Returns the Parameters.
    */
-  public Parameter[] getParameters() {
+  public NameValuePair[] getPearParameters() {
     return this.mParameters;
   }
 
@@ -56,8 +55,8 @@ public class PearSpecifier_impl extends MetaDataObject_impl implements PearSpeci
    * @param parameters
    *          The Parameters to set.
    */
-  public void setParameters(Parameter[] parameters) {
-    this.mParameters = parameters;
+  public void setPearParameters(NameValuePair[] pearParameters) {
+    this.mParameters = pearParameters;
   }
 
   /* (non-Javadoc)
@@ -79,5 +78,5 @@ public class PearSpecifier_impl extends MetaDataObject_impl implements PearSpeci
   }
 
   static final private XmlizationInfo XMLIZATION_INFO = new XmlizationInfo("pearSpecifier",
-          new PropertyXmlInfo[] { new PropertyXmlInfo("pearPath"), new PropertyXmlInfo("parameters") });
+          new PropertyXmlInfo[] { new PropertyXmlInfo("pearPath"), new PropertyXmlInfo("pearParameters") });
 }
diff --git a/uimaj-core/src/main/resources/resourceSpecifierSchema.xsd b/uimaj-core/src/main/resources/resourceSpecifierSchema.xsd
index bf01d3f..7cd0df4 100644
--- a/uimaj-core/src/main/resources/resourceSpecifierSchema.xsd
+++ b/uimaj-core/src/main/resources/resourceSpecifierSchema.xsd
@@ -675,19 +675,14 @@
     <complexType>
       <sequence>
         <element name="pearPath" type="string"/>
-        <element name="parameters" minOccurs="0">
+        <element name="pearParameters" minOccurs="0">
           <complexType>
             <sequence>
-              <element name="parameter" minOccurs="0" maxOccurs="unbounded">
-                <complexType>
-                  <attribute name="name" type="string"/>
-                  <attribute name="value" type="string"/>
-                </complexType>
-              </element>
+              <element name="nameValuePair" type="rs:NameValuePairType" minOccurs="0" maxOccurs="unbounded" />
             </sequence>
           </complexType>
         </element>
       </sequence>
     </complexType>
   </element>  
-</schema>
\ No newline at end of file
+</schema>
diff --git a/uimaj-core/src/test/java/org/apache/uima/analysis_engine/impl/PearAnalysisEngineWrapperTest.java b/uimaj-core/src/test/java/org/apache/uima/analysis_engine/impl/PearAnalysisEngineWrapperTest.java
index 0b894d2..ac8334b 100644
--- a/uimaj-core/src/test/java/org/apache/uima/analysis_engine/impl/PearAnalysisEngineWrapperTest.java
+++ b/uimaj-core/src/test/java/org/apache/uima/analysis_engine/impl/PearAnalysisEngineWrapperTest.java
@@ -25,10 +25,10 @@ import java.util.HashMap;
 import org.apache.uima.pear.tools.PackageBrowser;
 import org.apache.uima.pear.tools.PackageInstaller;
 import org.apache.uima.pear.util.FileUtil;
-import org.apache.uima.resource.Parameter;
 import org.apache.uima.resource.PearSpecifier;
-import org.apache.uima.resource.impl.Parameter_impl;
 import org.apache.uima.resource.impl.PearSpecifier_impl;
+import org.apache.uima.resource.metadata.NameValuePair;
+import org.apache.uima.resource.metadata.impl.NameValuePair_impl;
 import org.apache.uima.test.junit_extension.JUnitExtension;
 import org.junit.Assert;
 
@@ -86,13 +86,13 @@ public class PearAnalysisEngineWrapperTest extends TestCase {
 
   private PearSpecifier createPearSpecifierWithParameters() {
 
-    Parameter parameterStringParam = new Parameter_impl();
-    parameterStringParam.setName(PearAnalysisEngineWrapperTest.PARAMETER_NAME);
-    parameterStringParam.setValue(PearAnalysisEngineWrapperTest.PARAMETER_VALUE_OVERRIDE);
+	NameValuePair pearParameterStringParam = new NameValuePair_impl();
+    pearParameterStringParam.setName(PearAnalysisEngineWrapperTest.PARAMETER_NAME);
+    pearParameterStringParam.setValue(PearAnalysisEngineWrapperTest.PARAMETER_VALUE_OVERRIDE);
 
     PearSpecifier_impl pearSpecifier_impl = new PearSpecifier_impl();
     pearSpecifier_impl.setPearPath(this.installedPearPackage.getRootDirectory().toString());
-    pearSpecifier_impl.setParameters(new Parameter[] { parameterStringParam });
+    pearSpecifier_impl.setPearParameters(new NameValuePair[] { pearParameterStringParam });
     return pearSpecifier_impl;
   }
 
diff --git a/uimaj-core/src/test/java/org/apache/uima/resource/impl/PearSpecifier_implTest.java b/uimaj-core/src/test/java/org/apache/uima/resource/impl/PearSpecifier_implTest.java
index cf37520..a5f7729 100644
--- a/uimaj-core/src/test/java/org/apache/uima/resource/impl/PearSpecifier_implTest.java
+++ b/uimaj-core/src/test/java/org/apache/uima/resource/impl/PearSpecifier_implTest.java
@@ -29,6 +29,8 @@ import junit.framework.TestCase;
 import org.apache.uima.UIMAFramework;
 import org.apache.uima.resource.Parameter;
 import org.apache.uima.resource.PearSpecifier;
+import org.apache.uima.resource.metadata.NameValuePair;
+import org.apache.uima.resource.metadata.impl.NameValuePair_impl;
 import org.apache.uima.test.junit_extension.JUnitExtension;
 import org.apache.uima.util.XMLInputSource;
 
@@ -43,14 +45,14 @@ public class PearSpecifier_implTest extends TestCase {
   public void testProducePearResource() throws Exception {
     PearSpecifier specifier = UIMAFramework.getResourceSpecifierFactory().createPearSpecifier();
     specifier.setPearPath("/home/user/uimaApp/installedPears/testpear");
-    Parameter[] parameters = new Parameter[2];
-    parameters[0] = UIMAFramework.getResourceSpecifierFactory().createParameter();
-    parameters[0].setName("param1");
-    parameters[0].setValue("val1");
-    parameters[1] = UIMAFramework.getResourceSpecifierFactory().createParameter();
-    parameters[1].setName("param2");
-    parameters[1].setValue("val2");
-    specifier.setParameters(parameters);  
+    NameValuePair[] pearParameters = new NameValuePair[2];
+    pearParameters[0] = UIMAFramework.getResourceSpecifierFactory().createNameValuePair();
+    pearParameters[0].setName("param1");
+    pearParameters[0].setValue("val1");
+    pearParameters[1] = UIMAFramework.getResourceSpecifierFactory().createNameValuePair();
+    pearParameters[1].setName("param2");
+    pearParameters[1].setValue("val2");
+    specifier.setPearParameters(pearParameters);  
       
     //compare created specifier with available test specifier
     XMLInputSource in = new XMLInputSource(
@@ -58,18 +60,18 @@ public class PearSpecifier_implTest extends TestCase {
     PearSpecifier pearSpec = UIMAFramework.getXMLParser().parsePearSpecifier(in);
     
     Assert.assertEquals(pearSpec.getPearPath(), specifier.getPearPath());
-    Assert.assertEquals(pearSpec.getParameters()[0].getValue(), specifier.getParameters()[0].getValue());
-    Assert.assertEquals(pearSpec.getParameters()[1].getValue(), specifier.getParameters()[1].getValue());   
+    Assert.assertEquals(pearSpec.getPearParameters()[0].getValue(), specifier.getPearParameters()[0].getValue());
+    Assert.assertEquals(pearSpec.getPearParameters()[1].getValue(), specifier.getPearParameters()[1].getValue());   
     
     //compare created specifier with a manually create pear specifier
     PearSpecifier manPearSpec = new PearSpecifier_impl();
     manPearSpec.setPearPath("/home/user/uimaApp/installedPears/testpear");
-    manPearSpec.setParameters(new Parameter[] { new Parameter_impl("param1", "val1"),
-        new Parameter_impl("param2", "val2") });
+    manPearSpec.setPearParameters(new NameValuePair[] { new NameValuePair_impl("param1", "val1"),
+        new NameValuePair_impl("param2", "val2") });
 
     Assert.assertEquals(manPearSpec.getPearPath(), specifier.getPearPath());
-    Assert.assertEquals(manPearSpec.getParameters()[0].getValue(), specifier.getParameters()[0].getValue());
-    Assert.assertEquals(manPearSpec.getParameters()[1].getValue(), specifier.getParameters()[1].getValue());   
+    Assert.assertEquals(manPearSpec.getPearParameters()[0].getValue(), specifier.getPearParameters()[0].getValue());
+    Assert.assertEquals(manPearSpec.getPearParameters()[1].getValue(), specifier.getPearParameters()[1].getValue());   
 
   }
   
@@ -80,8 +82,8 @@ public class PearSpecifier_implTest extends TestCase {
     try {
       PearSpecifier pearSpec = new PearSpecifier_impl();
       pearSpec.setPearPath("/home/user/uimaApp/installedPears/testpear");
-      pearSpec.setParameters(new Parameter[] { new Parameter_impl("param1", "val1"),
-          new Parameter_impl("param2", "val2") });
+      pearSpec.setPearParameters(new NameValuePair[] { new NameValuePair_impl("param1", "val1"),
+          new NameValuePair_impl("param2", "val2") });
 
       StringWriter sw = new StringWriter();
       pearSpec.toXML(sw);
diff --git a/uimaj-core/src/test/java/org/apache/uima/util/impl/XMLParser_implTest.java b/uimaj-core/src/test/java/org/apache/uima/util/impl/XMLParser_implTest.java
index 28641fa..628e803 100644
--- a/uimaj-core/src/test/java/org/apache/uima/util/impl/XMLParser_implTest.java
+++ b/uimaj-core/src/test/java/org/apache/uima/util/impl/XMLParser_implTest.java
@@ -34,6 +34,7 @@ import org.apache.uima.resource.CustomResourceSpecifier;
 import org.apache.uima.resource.Parameter;
 import org.apache.uima.resource.PearSpecifier;
 import org.apache.uima.resource.URISpecifier;
+import org.apache.uima.resource.metadata.NameValuePair;
 import org.apache.uima.test.junit_extension.JUnitExtension;
 import org.apache.uima.util.InvalidXMLException;
 import org.apache.uima.util.XMLInputSource;
@@ -185,12 +186,11 @@ public class XMLParser_implTest extends TestCase {
             JUnitExtension.getFile("XmlParserTest/TestPearSpecifier.xml"));
     PearSpecifier pearSpec = this.mXmlParser.parsePearSpecifier(in);
     assertEquals("/home/user/uimaApp/installedPears/testpear", pearSpec.getPearPath());
-    Parameter[] params = pearSpec.getParameters();
-    assertEquals(2, params.length);
-    assertEquals("param1", params[0].getName());
-    assertEquals("val1", params[0].getValue());
-    assertEquals("param2", params[1].getName());
-    assertEquals("val2", params[1].getValue());  
+    NameValuePair[] pearParams = pearSpec.getPearParameters();
+    assertEquals(2, pearParams.length);
+    assertEquals("param1", pearParams[0].getName());
+    assertEquals("val1", pearParams[0].getValue());
+    assertEquals("param2", pearParams[1].getName());
+    assertEquals("val2", pearParams[1].getValue());  
   }
-
 }
diff --git a/uimaj-core/src/test/resources/XmlParserTest/TestPearSpecifier.xml b/uimaj-core/src/test/resources/XmlParserTest/TestPearSpecifier.xml
index 1672129..9d67a05 100644
--- a/uimaj-core/src/test/resources/XmlParserTest/TestPearSpecifier.xml
+++ b/uimaj-core/src/test/resources/XmlParserTest/TestPearSpecifier.xml
@@ -18,8 +18,14 @@
  -->
 <pearSpecifier xmlns="http://uima.apache.org/resourceSpecifier">
    <pearPath>/home/user/uimaApp/installedPears/testpear</pearPath>
-   <parameters>
-     <parameter name="param1" value="val1"/>
-     <parameter name="param2" value="val2"/>
-   </parameters>  
-</pearSpecifier>
\ No newline at end of file
+   <pearParameters>
+     <nameValuePair>
+     	<name>param1</name>
+     	<value><string>val1</string></value>
+     </nameValuePair>
+     <nameValuePair>
+     	<name>param2</name>
+     	<value><string>val2</string></value>
+     </nameValuePair>
+   </pearParameters>  
+</pearSpecifier>