You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@uima.apache.org by bu...@apache.org on 2012/03/22 21:30:28 UTC

svn commit: r1304033 - in /uima/uimaj/trunk/uimaj-core/src: main/java/org/apache/uima/ main/java/org/apache/uima/impl/ main/java/org/apache/uima/resource/impl/ main/java/org/apache/uima/resource/metadata/impl/ test/java/org/apache/uima/analysis_engine/...

Author: burn
Date: Thu Mar 22 20:30:27 2012
New Revision: 1304033

URL: http://svn.apache.org/viewvc?rev=1304033&view=rev
Log:
[UIMA-2378] Add getExternalParameterValue to UimaContext so annotators can directly access the external override
settings.  Fix import by name of settings files. Added JUnit tests.

Added:
    uima/uimaj/trunk/uimaj-core/src/test/resources/TextAnalysisEngineImplTest/AggregateWithExternalOverrides.xml   (with props)
    uima/uimaj/trunk/uimaj-core/src/test/resources/TextAnalysisEngineImplTest/testExternalOverrideSettings
Modified:
    uima/uimaj/trunk/uimaj-core/src/main/java/org/apache/uima/UimaContext.java
    uima/uimaj/trunk/uimaj-core/src/main/java/org/apache/uima/impl/UimaContext_ImplBase.java
    uima/uimaj/trunk/uimaj-core/src/main/java/org/apache/uima/resource/impl/ConfigurationManager_impl.java
    uima/uimaj/trunk/uimaj-core/src/main/java/org/apache/uima/resource/metadata/impl/ConfigurationParameter_impl.java
    uima/uimaj/trunk/uimaj-core/src/main/java/org/apache/uima/resource/metadata/impl/ExternalOverrideSettings_impl.java
    uima/uimaj/trunk/uimaj-core/src/main/java/org/apache/uima/resource/metadata/impl/Import_impl.java
    uima/uimaj/trunk/uimaj-core/src/test/java/org/apache/uima/analysis_engine/impl/AnalysisEngine_implTest.java
    uima/uimaj/trunk/uimaj-core/src/test/java/org/apache/uima/analysis_engine/impl/TestAnnotator.java
    uima/uimaj/trunk/uimaj-core/src/test/java/org/apache/uima/analysis_engine/impl/TestAnnotator2.java
    uima/uimaj/trunk/uimaj-core/src/test/resources/TextAnalysisEngineImplTest/AnnotatorWithExternalOverrides.xml
    uima/uimaj/trunk/uimaj-core/src/test/resources/TextAnalysisEngineImplTest/testExternalOverride.settings

Modified: uima/uimaj/trunk/uimaj-core/src/main/java/org/apache/uima/UimaContext.java
URL: http://svn.apache.org/viewvc/uima/uimaj/trunk/uimaj-core/src/main/java/org/apache/uima/UimaContext.java?rev=1304033&r1=1304032&r2=1304033&view=diff
==============================================================================
--- uima/uimaj/trunk/uimaj-core/src/main/java/org/apache/uima/UimaContext.java (original)
+++ uima/uimaj/trunk/uimaj-core/src/main/java/org/apache/uima/UimaContext.java Thu Mar 22 20:30:27 2012
@@ -115,6 +115,20 @@ public interface UimaContext {
   public String[] getConfigParameterNames();
 
   /**
+   * Retrieves the value for an external parameter defined in the External Override Settings
+   * as specified in the top-level descriptor's operationalProperties section, or via the
+   *  -DUimaExternalOverrides value.
+   * 
+   * @param aParamName
+   *          the name of the parameter to look up
+   * 
+   * @return the value of the parameter with the given name, as a String.
+   *         Returns <code>null</code> if the parameter does not exist.
+   *         Returns an empty string (<code>""</code>) if the parameter was not assigned a value.
+   */
+  public String getExternalParameterValue(String aParamName);
+  
+  /**
    * Gets the <code>Logger</code> to which log output will be sent. UIMA components should use
    * this facility rather than writing to their own log files (or to stdout).
    * 

Modified: uima/uimaj/trunk/uimaj-core/src/main/java/org/apache/uima/impl/UimaContext_ImplBase.java
URL: http://svn.apache.org/viewvc/uima/uimaj/trunk/uimaj-core/src/main/java/org/apache/uima/impl/UimaContext_ImplBase.java?rev=1304033&r1=1304032&r2=1304033&view=diff
==============================================================================
--- uima/uimaj/trunk/uimaj-core/src/main/java/org/apache/uima/impl/UimaContext_ImplBase.java (original)
+++ uima/uimaj/trunk/uimaj-core/src/main/java/org/apache/uima/impl/UimaContext_ImplBase.java Thu Mar 22 20:30:27 2012
@@ -52,6 +52,7 @@ import org.apache.uima.jcas.JCas;
 import org.apache.uima.resource.CasManager;
 import org.apache.uima.resource.ResourceAccessException;
 import org.apache.uima.resource.ResourceInitializationException;
+import org.apache.uima.resource.impl.ConfigurationManager_impl;
 import org.apache.uima.resource.metadata.ConfigurationGroup;
 import org.apache.uima.resource.metadata.ConfigurationParameter;
 import org.apache.uima.util.Level;
@@ -475,6 +476,15 @@ public abstract class UimaContext_ImplBa
   }
 
   /**
+   * Lookup and evaluate an arbitrary (string) parameter from the External Override Settings
+   * Lets annotator configuration bypass the descriptor parameters. 
+   */
+  public String getExternalParameterValue(String name) {
+    ConfigurationManager_impl cfgmgr = (ConfigurationManager_impl) getConfigurationManager();
+    return cfgmgr.getExternalParameter(mQualifiedContextName, name);
+  }
+  
+  /**
    * Changes here should also be made in UimaContext_ImplBase.mapToSofaID (non-Javadoc)
    * 
    * @see org.apache.uima.UimaContext#mapToSofaID(java.lang.String)

Modified: uima/uimaj/trunk/uimaj-core/src/main/java/org/apache/uima/resource/impl/ConfigurationManager_impl.java
URL: http://svn.apache.org/viewvc/uima/uimaj/trunk/uimaj-core/src/main/java/org/apache/uima/resource/impl/ConfigurationManager_impl.java?rev=1304033&r1=1304032&r2=1304033&view=diff
==============================================================================
--- uima/uimaj/trunk/uimaj-core/src/main/java/org/apache/uima/resource/impl/ConfigurationManager_impl.java (original)
+++ uima/uimaj/trunk/uimaj-core/src/main/java/org/apache/uima/resource/impl/ConfigurationManager_impl.java Thu Mar 22 20:30:27 2012
@@ -263,4 +263,8 @@ public class ConfigurationManager_impl e
     return mSettingsMap.get(aContextName);
   }
 
+  public String getExternalParameter(String context, String name) {
+    ExternalOverrideSettings settings = getExternalOverrideSettings(context);
+    return settings == null ? null : settings.resolveExternalName(name);
+  }
 }

Modified: uima/uimaj/trunk/uimaj-core/src/main/java/org/apache/uima/resource/metadata/impl/ConfigurationParameter_impl.java
URL: http://svn.apache.org/viewvc/uima/uimaj/trunk/uimaj-core/src/main/java/org/apache/uima/resource/metadata/impl/ConfigurationParameter_impl.java?rev=1304033&r1=1304032&r2=1304033&view=diff
==============================================================================
--- uima/uimaj/trunk/uimaj-core/src/main/java/org/apache/uima/resource/metadata/impl/ConfigurationParameter_impl.java (original)
+++ uima/uimaj/trunk/uimaj-core/src/main/java/org/apache/uima/resource/metadata/impl/ConfigurationParameter_impl.java Thu Mar 22 20:30:27 2012
@@ -335,8 +335,8 @@ public class ConfigurationParameter_impl
 
   static final private XmlizationInfo XMLIZATION_INFO = new XmlizationInfo(
           "configurationParameter", new PropertyXmlInfo[] { new PropertyXmlInfo("name"),
+              new PropertyXmlInfo("externalOverrideName"),
               new PropertyXmlInfo("description"), new PropertyXmlInfo("type"),
               new PropertyXmlInfo("multiValued"), new PropertyXmlInfo("mandatory"),
-              new PropertyXmlInfo("externalOverrideName"),
               new PropertyXmlInfo("overrides", "overrides", true, "parameter"), });
 }

Modified: uima/uimaj/trunk/uimaj-core/src/main/java/org/apache/uima/resource/metadata/impl/ExternalOverrideSettings_impl.java
URL: http://svn.apache.org/viewvc/uima/uimaj/trunk/uimaj-core/src/main/java/org/apache/uima/resource/metadata/impl/ExternalOverrideSettings_impl.java?rev=1304033&r1=1304032&r2=1304033&view=diff
==============================================================================
--- uima/uimaj/trunk/uimaj-core/src/main/java/org/apache/uima/resource/metadata/impl/ExternalOverrideSettings_impl.java (original)
+++ uima/uimaj/trunk/uimaj-core/src/main/java/org/apache/uima/resource/metadata/impl/ExternalOverrideSettings_impl.java Thu Mar 22 20:30:27 2012
@@ -162,6 +162,7 @@ public class ExternalOverrideSettings_im
         InputStream stream = null;
         for (int i = imports.length - 1; i >= 0; --i) {
           try {
+            ((Import_impl)imports[i]).hasNoSuffix();    // Disable usual append of ".xml"
             URL url = imports[i].findAbsoluteUrl(aResourceManager);
             stream = url.openStream();
             mProperties = new Properties(mProperties);

Modified: uima/uimaj/trunk/uimaj-core/src/main/java/org/apache/uima/resource/metadata/impl/Import_impl.java
URL: http://svn.apache.org/viewvc/uima/uimaj/trunk/uimaj-core/src/main/java/org/apache/uima/resource/metadata/impl/Import_impl.java?rev=1304033&r1=1304032&r2=1304033&view=diff
==============================================================================
--- uima/uimaj/trunk/uimaj-core/src/main/java/org/apache/uima/resource/metadata/impl/Import_impl.java (original)
+++ uima/uimaj/trunk/uimaj-core/src/main/java/org/apache/uima/resource/metadata/impl/Import_impl.java Thu Mar 22 20:30:27 2012
@@ -44,6 +44,8 @@ public class Import_impl extends MetaDat
   private String mName;
 
   private String mLocation;
+  
+  private String byNameSuffix = ".xml";
 
   /*
    * (non-Javadoc)
@@ -82,6 +84,13 @@ public class Import_impl extends MetaDat
   }
 
   /*
+   * Called when importing by name without an implied ".xml" suffix
+   */
+  public void hasNoSuffix() {
+    byNameSuffix = "";
+  }
+  
+  /*
    * (non-Javadoc)
    * 
    * @see org.apache.uima.resource.metadata.Import#findAbsoluteUrl(org.apache.uima.resource.ResourceManager)
@@ -95,7 +104,7 @@ public class Import_impl extends MetaDat
             getLocation(), getSourceUrlString() }, e);
       }
     } else if (getName() != null) {
-      String filename = getName().replace('.', '/') + ".xml";
+      String filename = getName().replace('.', '/') + byNameSuffix;
       URL url;
       try {
         url = aResourceManager.resolveRelativePath(filename);

Modified: uima/uimaj/trunk/uimaj-core/src/test/java/org/apache/uima/analysis_engine/impl/AnalysisEngine_implTest.java
URL: http://svn.apache.org/viewvc/uima/uimaj/trunk/uimaj-core/src/test/java/org/apache/uima/analysis_engine/impl/AnalysisEngine_implTest.java?rev=1304033&r1=1304032&r2=1304033&view=diff
==============================================================================
--- uima/uimaj/trunk/uimaj-core/src/test/java/org/apache/uima/analysis_engine/impl/AnalysisEngine_implTest.java (original)
+++ uima/uimaj/trunk/uimaj-core/src/test/java/org/apache/uima/analysis_engine/impl/AnalysisEngine_implTest.java Thu Mar 22 20:30:27 2012
@@ -301,17 +301,18 @@ public class AnalysisEngine_implTest ext
       ae.destroy();
       
       // try a descriptor with configuration parameter external overrides - should work
-      in = new XMLInputSource(JUnitExtension
-              .getFile("TextAnalysisEngineImplTest/AnnotatorWithExternalOverrides.xml"));
+      // Use an aggregate so the annotator can run tests based on the context.
+      in = new XMLInputSource(JUnitExtension.getFile("TextAnalysisEngineImplTest/AggregateWithExternalOverrides.xml"));
       desc = UIMAFramework.getXMLParser().parseAnalysisEngineDescription(in);
-      ae1 = new PrimitiveAnalysisEngine_impl();
-      ae1.initialize(desc, null);
-      String[] arrayParam = (String[]) ae1.getUimaContext().getConfigParameterValue("StringArrayParam");
+      ae = new AggregateAnalysisEngine_impl();
+      ae.initialize(desc, null);
+      delegate1 = (PrimitiveAnalysisEngine_impl) ae._getASB().getComponentAnalysisEngines().get("ExternalOverrides");
+      String[] arrayParam = (String[]) delegate1.getUimaContext().getConfigParameterValue("StringArrayParam");
       Assert.assertNotNull(arrayParam);
       Assert.assertEquals(5, arrayParam.length);
-      String[] expectedResult = {"prefix_from_import", "-", "suffix_from_inline", "->", "prefix_from_import-suffix_from_inline"};
-      Assert.assertTrue(Arrays.equals(expectedResult, arrayParam));
-      Integer[] intArr = (Integer[]) ae1.getUimaContext().getConfigParameterValue("IntegerArrayParam");
+      String[] expect = { "prefix_from_import", "-", "suffix_from_inline", "->", "prefix_from_import-suffix_from_inline" };
+      Assert.assertTrue(Arrays.equals(expect, arrayParam));
+      Integer[] intArr = (Integer[]) delegate1.getUimaContext().getConfigParameterValue("IntegerArrayParam");
       Assert.assertEquals(4, intArr.length);
       
       ae1.destroy();

Modified: uima/uimaj/trunk/uimaj-core/src/test/java/org/apache/uima/analysis_engine/impl/TestAnnotator.java
URL: http://svn.apache.org/viewvc/uima/uimaj/trunk/uimaj-core/src/test/java/org/apache/uima/analysis_engine/impl/TestAnnotator.java?rev=1304033&r1=1304032&r2=1304033&view=diff
==============================================================================
--- uima/uimaj/trunk/uimaj-core/src/test/java/org/apache/uima/analysis_engine/impl/TestAnnotator.java (original)
+++ uima/uimaj/trunk/uimaj-core/src/test/java/org/apache/uima/analysis_engine/impl/TestAnnotator.java Thu Mar 22 20:30:27 2012
@@ -31,7 +31,7 @@ import org.apache.uima.cas.CAS;
 import org.apache.uima.cas.TypeSystem;
 
 /**
- * Annotator class used for testing
+ * Annotator class used for testing.
  * 
  */
 public class TestAnnotator extends Annotator_ImplBase implements TextAnnotator {

Modified: uima/uimaj/trunk/uimaj-core/src/test/java/org/apache/uima/analysis_engine/impl/TestAnnotator2.java
URL: http://svn.apache.org/viewvc/uima/uimaj/trunk/uimaj-core/src/test/java/org/apache/uima/analysis_engine/impl/TestAnnotator2.java?rev=1304033&r1=1304032&r2=1304033&view=diff
==============================================================================
--- uima/uimaj/trunk/uimaj-core/src/test/java/org/apache/uima/analysis_engine/impl/TestAnnotator2.java (original)
+++ uima/uimaj/trunk/uimaj-core/src/test/java/org/apache/uima/analysis_engine/impl/TestAnnotator2.java Thu Mar 22 20:30:27 2012
@@ -19,53 +19,50 @@
 
 package org.apache.uima.analysis_engine.impl;
 
+import junit.framework.Assert;
+
+import org.apache.uima.UimaContext;
+import org.apache.uima.analysis_component.CasAnnotator_ImplBase;
 import org.apache.uima.analysis_engine.ResultSpecification;
-import org.apache.uima.analysis_engine.annotator.AnnotatorConfigurationException;
 import org.apache.uima.analysis_engine.annotator.AnnotatorContext;
-import org.apache.uima.analysis_engine.annotator.AnnotatorContextException;
-import org.apache.uima.analysis_engine.annotator.AnnotatorInitializationException;
-import org.apache.uima.analysis_engine.annotator.AnnotatorProcessException;
-import org.apache.uima.analysis_engine.annotator.Annotator_ImplBase;
-import org.apache.uima.analysis_engine.annotator.TextAnnotator;
 import org.apache.uima.cas.CAS;
 import org.apache.uima.cas.TypeSystem;
+import org.apache.uima.impl.UimaContext_ImplBase;
+import org.apache.uima.resource.ResourceInitializationException;
 
 /**
  * Annotator class used for testing.
  * 
  */
-public class TestAnnotator2 extends Annotator_ImplBase implements TextAnnotator {
+public class TestAnnotator2 extends CasAnnotator_ImplBase {
   // Process method saves information to these static fields,
   // which are queried by the unit test.
   public static String lastDocument;
 
   public static String stringParamValue;
 
-  public static ResultSpecification lastResultSpec;
-
   public static boolean typeSystemInitCalled;
 
   public static synchronized String getLastDocument() {
     return lastDocument;  
   }
-  
-  public static synchronized ResultSpecification getLastResultSpec() {
-    return lastResultSpec;
-  }
-  
+
   /**
-   * @see org.apache.uima.analysis_engine.annotator.Annotator#initialize(CAS, AnnotatorContext)
+   * @throws ResourceInitializationException 
+   * @see org.apache.uima.analysis_engine.annotator.Annotator#initialize(AnnotatorContext)
    */
-  public void initialize(AnnotatorContext aContext) throws AnnotatorConfigurationException,
-          AnnotatorInitializationException {
+  public void initialize(UimaContext aContext) throws ResourceInitializationException {
     super.initialize(aContext);
     typeSystemInitCalled = false;
-    lastResultSpec = null;
     lastDocument = null;
-    try {
-      stringParamValue = (String) getContext().getConfigParameterValue("StringParam");
-    } catch (AnnotatorContextException e) {
-      throw new AnnotatorInitializationException(e);
+    stringParamValue = (String) aContext.getConfigParameterValue("StringParam");
+    
+    // Check if can get an arbitrary external parameter from the override settings
+    String contextName = ((UimaContext_ImplBase) aContext).getQualifiedContextName();
+    if ("/ExternalOverrides/".equals(contextName)) {
+      String actual = aContext.getExternalParameterValue("test.externalStringArray");
+      String expected = "prefix_from_import,-,suffix_from_inline,->,prefix_from_import-suffix_from_inline";
+      Assert.assertEquals(expected, actual);
     }
   }
 
@@ -76,10 +73,9 @@ public class TestAnnotator2 extends Anno
   /**
    * @see org.apache.uima.analysis_engine.annotator.TextAnnotator#process(CAS,ResultSpecification)
    */
-  public void process(CAS aCAS, ResultSpecification aResultSpec) throws AnnotatorProcessException {
+  public void process(CAS aCAS) {
     // set static fields to contain document text, result spec,
     // and value of StringParam configuration parameter.
     lastDocument = aCAS.getDocumentText();
-    lastResultSpec = aResultSpec;
   }
 }

Added: uima/uimaj/trunk/uimaj-core/src/test/resources/TextAnalysisEngineImplTest/AggregateWithExternalOverrides.xml
URL: http://svn.apache.org/viewvc/uima/uimaj/trunk/uimaj-core/src/test/resources/TextAnalysisEngineImplTest/AggregateWithExternalOverrides.xml?rev=1304033&view=auto
==============================================================================
--- uima/uimaj/trunk/uimaj-core/src/test/resources/TextAnalysisEngineImplTest/AggregateWithExternalOverrides.xml (added)
+++ uima/uimaj/trunk/uimaj-core/src/test/resources/TextAnalysisEngineImplTest/AggregateWithExternalOverrides.xml Thu Mar 22 20:30:27 2012
@@ -0,0 +1,68 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements.  See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership.  The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License.  You may obtain a copy of the License at
+ * 
+ *   http://www.apache.org/licenses/LICENSE-2.0
+ * 
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied.  See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+ -->
+<!-- Descriptor for testing external overrides. -->
+<analysisEngineDescription xmlns="http://uima.apache.org/resourceSpecifier">
+  <frameworkImplementation>org.apache.uima.java</frameworkImplementation>
+  <primitive>false</primitive>
+  <delegateAnalysisEngineSpecifiers>
+    <delegateAnalysisEngine key="ExternalOverrides">
+      <import location="AnnotatorWithExternalOverrides.xml"/>
+    </delegateAnalysisEngine>
+  </delegateAnalysisEngineSpecifiers>
+  <analysisEngineMetaData>
+    <name>Aggregate With External Overrides</name>
+    <description/>
+    <version>1.0</version>
+    <vendor/>
+    <configurationParameters searchStrategy="language_fallback"/>
+    <configurationParameterSettings/>
+    <flowConstraints>
+      <fixedFlow>
+        <node>ExternalOverrides</node>
+      </fixedFlow>
+    </flowConstraints>
+    <fsIndexCollection/>
+    <capabilities>
+      <capability>
+        <inputs/>
+        <outputs/>
+        <languagesSupported/>
+      </capability>
+    </capabilities>
+    <operationalProperties>
+      <modifiesCas>true</modifiesCas>
+      <multipleDeploymentAllowed>true</multipleDeploymentAllowed>
+      <outputsNewCASes>false</outputsNewCASes>
+      <externalOverrideSettings>
+        <settings>
+          inline-suffix    suffix_from_inline
+          inline-value     ${import-prefix}-suffix_from_inline
+          test.externalStringArray = ${import-prefix},-,${inline-suffix},->,${import-value}
+          test.externalIntegerArray : 1 , 22 , 333,4444     
+        </settings>
+        <imports>
+          <import location="testExternalOverride.settings"/>
+          <import name="TextAnalysisEngineImplTest.testExternalOverrideSettings"/>
+        </imports>
+      </externalOverrideSettings>
+    </operationalProperties>
+  </analysisEngineMetaData>
+  <resourceManagerConfiguration/>
+</analysisEngineDescription>

Propchange: uima/uimaj/trunk/uimaj-core/src/test/resources/TextAnalysisEngineImplTest/AggregateWithExternalOverrides.xml
------------------------------------------------------------------------------
    svn:eol-style = native

Modified: uima/uimaj/trunk/uimaj-core/src/test/resources/TextAnalysisEngineImplTest/AnnotatorWithExternalOverrides.xml
URL: http://svn.apache.org/viewvc/uima/uimaj/trunk/uimaj-core/src/test/resources/TextAnalysisEngineImplTest/AnnotatorWithExternalOverrides.xml?rev=1304033&r1=1304032&r2=1304033&view=diff
==============================================================================
--- uima/uimaj/trunk/uimaj-core/src/test/resources/TextAnalysisEngineImplTest/AnnotatorWithExternalOverrides.xml (original)
+++ uima/uimaj/trunk/uimaj-core/src/test/resources/TextAnalysisEngineImplTest/AnnotatorWithExternalOverrides.xml Thu Mar 22 20:30:27 2012
@@ -17,106 +17,131 @@
  * specific language governing permissions and limitations
  * under the License.
  -->
-<!-- Descriptor for testing configuration groups. -->
+<!-- Descriptor for testing external overrides. -->
 <taeDescription xmlns="http://uima.apache.org/resourceSpecifier">
-<frameworkImplementation>org.apache.uima.java</frameworkImplementation>
-<primitive>true</primitive>
-<annotatorImplementationName>org.apache.uima.analysis_engine.impl.TestAnnotator</annotatorImplementationName>
+  <frameworkImplementation>org.apache.uima.java</frameworkImplementation>
+  <primitive>true</primitive>
+  <annotatorImplementationName>org.apache.uima.analysis_engine.impl.TestAnnotator2</annotatorImplementationName>
  
-<analysisEngineMetaData>
-<name>Annotator With Configuration Parameters</name>
-<description>For testing configuration parameters.</description>
-<version>1.0</version>
-<vendor>The Apache Software Foundation</vendor>
+  <analysisEngineMetaData>
+    <name>Annotator With External Overrides</name>
+    <description>For testing configuration parameters.</description>
+    <version>1.0</version>
+    <vendor>The Apache Software Foundation</vendor>
  
-<!-- Configuration Parameter Definitions -->
-<configurationParameters> 
-  <configurationParameter>
-    <name>StringParam</name>
-    <externalOverrideName>inline-value</externalOverrideName>
-    <description/>
-    <type>String</type>
-  <multiValued>false</multiValued><mandatory>false</mandatory></configurationParameter>
-  <configurationParameter>
-    <name>StringArrayParam</name>
-    <externalOverrideName>test.externalStringArray</externalOverrideName>
-    <description/>
-    <type>String</type>
-    <multiValued>true</multiValued>
-  <mandatory>false</mandatory></configurationParameter>  
-  <configurationParameter>
-    <name>IntegerParam</name>
-    <description/>
-    <type>Integer</type>
-  <multiValued>false</multiValued><mandatory>false</mandatory></configurationParameter>
-  <configurationParameter>
-    <name>IntegerArrayParam</name>
-    <externalOverrideName>test.externalIntegerArray</externalOverrideName>
-    <description/>
-    <type>Integer</type>
-    <multiValued>true</multiValued>
-  <mandatory>false</mandatory></configurationParameter>
-  <configurationParameter>
-    <name>FloatParam</name>
-    <description/>
-    <type>Float</type>
-  <multiValued>false</multiValued><mandatory>false</mandatory></configurationParameter>
-  <configurationParameter>
-    <name>FloatArrayParam</name>
-    <description/>
-    <type>Float</type>
-    <multiValued>true</multiValued>
-  <mandatory>false</mandatory></configurationParameter>
-  <configurationParameter>
-    <name>RequiredParam</name>
-    <description/>
-    <type>String</type>
-    <multiValued>false</multiValued>
-    <mandatory>true</mandatory>
-  </configurationParameter>
-</configurationParameters>
-
-
-<!-- Values for the configuration parameters -->
-<configurationParameterSettings>
-  <nameValuePair>
-    <name>StringParam</name>
-    <value><string>myString</string></value>
-  </nameValuePair>
-  <nameValuePair>
-    <name>StringArrayParam</name>
-    <value><array><string>one</string><string>two</string></array></value>
-  </nameValuePair>
-  <nameValuePair>
-    <name>IntegerParam</name>
-    <value><integer>42</integer></value>
-  </nameValuePair>
-  <nameValuePair>
-    <name>IntegerArrayParam</name>
-    <value><array><integer>1</integer><integer>2</integer><integer>3</integer></array></value>
-  </nameValuePair>
-  <nameValuePair>
-    <name>FloatParam</name>
-    <value><float>3.14</float></value>
-  </nameValuePair>
-  <nameValuePair>
-    <name>RequiredParam</name>
-    <value><string>RequiredValue</string></value>
-  </nameValuePair>
-</configurationParameterSettings>
-
-<typeSystemDescription>
-</typeSystemDescription>
-
-<!-- Capabilities: Inputs and Outputs -->
-<capabilities>
-<capability>
-<inputs/>
-<outputs/>
-<languagesSupported/>
-</capability>
-</capabilities>
-
+    <!-- Configuration Parameter Definitions -->
+    <configurationParameters> 
+      <configurationParameter>
+        <name>StringParam</name>
+        <externalOverrideName>inline-value</externalOverrideName>
+        <description/>
+        <type>String</type>
+        <multiValued>false</multiValued>
+        <mandatory>false</mandatory>
+      </configurationParameter>
+      <configurationParameter>
+        <name>StringArrayParam</name>
+        <externalOverrideName>test.externalStringArray</externalOverrideName>
+        <description/>
+        <type>String</type>
+        <multiValued>true</multiValued>
+        <mandatory>false</mandatory>
+      </configurationParameter>  
+      <configurationParameter>
+        <name>IntegerParam</name>
+        <description/>
+        <type>Integer</type>
+        <multiValued>false</multiValued>
+        <mandatory>false</mandatory> 
+      </configurationParameter>
+      <configurationParameter>
+        <name>IntegerArrayParam</name>
+        <externalOverrideName>test.externalIntegerArray</externalOverrideName>
+        <description/>
+        <type>Integer</type>
+        <multiValued>true</multiValued>
+        <mandatory>false</mandatory>
+      </configurationParameter>
+      <configurationParameter>
+        <name>FloatParam</name>
+        <description/>
+        <type>Float</type>
+        <multiValued>false</multiValued>
+        <mandatory>false</mandatory>
+      </configurationParameter>
+      <configurationParameter>
+        <name>FloatArrayParam</name>
+        <description/>
+        <type>Float</type>
+        <multiValued>true</multiValued>
+        <mandatory>false</mandatory>
+      </configurationParameter>
+      <configurationParameter>
+        <name>RequiredParam</name>
+        <description/>
+        <type>String</type>
+        <multiValued>false</multiValued>
+        <mandatory>true</mandatory>
+      </configurationParameter>
+    </configurationParameters>
+
+
+    <!-- Values for the configuration parameters -->
+    <configurationParameterSettings>
+      <nameValuePair>
+        <name>StringParam</name>
+        <value><string>myString</string></value>
+      </nameValuePair>
+      <nameValuePair>
+        <name>StringArrayParam</name>
+        <value>
+          <array>
+            <string>one</string>
+            <string>two</string>
+          </array>
+        </value>
+      </nameValuePair>
+      <nameValuePair>
+        <name>IntegerParam</name>
+        <value>
+          <integer>42</integer>
+        </value>
+      </nameValuePair>
+      <nameValuePair>
+        <name>IntegerArrayParam</name>
+        <value>
+          <array>
+            <integer>1</integer>
+            <integer>2</integer>
+            <integer>3</integer>
+          </array>
+        </value>
+      </nameValuePair>
+      <nameValuePair>
+        <name>FloatParam</name>
+        <value>
+          <float>3.14</float>
+        </value>
+      </nameValuePair>
+      <nameValuePair>
+        <name>RequiredParam</name>
+        <value>
+          <string>RequiredValue</string>
+        </value>
+      </nameValuePair>
+    </configurationParameterSettings>
+
+    <typeSystemDescription>
+    </typeSystemDescription>
+
+    <!-- Capabilities: Inputs and Outputs -->
+    <capabilities>
+      <capability>
+        <inputs/>
+        <outputs/>
+        <languagesSupported/>
+      </capability>
+    </capabilities>
     <operationalProperties>
       <modifiesCas>true</modifiesCas>
       <multipleDeploymentAllowed>true</multipleDeploymentAllowed>
@@ -125,14 +150,12 @@
         <settings>
           inline-suffix    suffix_from_inline
           inline-value     ${import-prefix}-suffix_from_inline
-          test.externalStringArray = ${import-prefix},-,${inline-suffix},->,${import-value}
-          test.externalIntegerArray : 1 , 22 , 333,4444     
         </settings>
         <imports>
           <import location="testExternalOverride.settings"/>
+          <import name="TextAnalysisEngineImplTest.testExternalOverrideSettings"/>
         </imports>
       </externalOverrideSettings>
     </operationalProperties>
-
-</analysisEngineMetaData>
+  </analysisEngineMetaData>
 </taeDescription>

Modified: uima/uimaj/trunk/uimaj-core/src/test/resources/TextAnalysisEngineImplTest/testExternalOverride.settings
URL: http://svn.apache.org/viewvc/uima/uimaj/trunk/uimaj-core/src/test/resources/TextAnalysisEngineImplTest/testExternalOverride.settings?rev=1304033&r1=1304032&r2=1304033&view=diff
==============================================================================
--- uima/uimaj/trunk/uimaj-core/src/test/resources/TextAnalysisEngineImplTest/testExternalOverride.settings (original)
+++ uima/uimaj/trunk/uimaj-core/src/test/resources/TextAnalysisEngineImplTest/testExternalOverride.settings Thu Mar 22 20:30:27 2012
@@ -1,2 +1,2 @@
 import-prefix    prefix_from_import
-import-value     prefix_from_import-${inline-suffix}
+

Added: uima/uimaj/trunk/uimaj-core/src/test/resources/TextAnalysisEngineImplTest/testExternalOverrideSettings
URL: http://svn.apache.org/viewvc/uima/uimaj/trunk/uimaj-core/src/test/resources/TextAnalysisEngineImplTest/testExternalOverrideSettings?rev=1304033&view=auto
==============================================================================
--- uima/uimaj/trunk/uimaj-core/src/test/resources/TextAnalysisEngineImplTest/testExternalOverrideSettings (added)
+++ uima/uimaj/trunk/uimaj-core/src/test/resources/TextAnalysisEngineImplTest/testExternalOverrideSettings Thu Mar 22 20:30:27 2012
@@ -0,0 +1,2 @@
+# Note: since this is imported by name its name cannot contain any periods (.) as they are converted to slash (/)
+import-value     prefix_from_import-${inline-suffix}