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/06/05 19:20:20 UTC

svn commit: r1346479 - in /uima/uimaj/trunk/uimaj-core/src: main/java/org/apache/uima/ main/java/org/apache/uima/analysis_engine/impl/ main/java/org/apache/uima/impl/ main/java/org/apache/uima/resource/ main/java/org/apache/uima/resource/impl/ main/jav...

Author: burn
Date: Tue Jun  5 17:20:18 2012
New Revision: 1346479

URL: http://svn.apache.org/viewvc?rev=1346479&view=rev
Log:
[UIMA-2378] No longer take settings from descriptors.  Can now pass the Settings in the additionalParams map (key PARAM_EXTERNAL_OVERRIDE_SETTINGS) on the produceAnalysisEngine call.  Default is to use the  -DUimaExternalOverrides files.  Dropped support for long-deprecated implicit overrides.

Added:
    uima/uimaj/trunk/uimaj-core/src/test/resources/TextAnalysisEngineImplTest/InvalidConfigParams14.xml
Removed:
    uima/uimaj/trunk/uimaj-core/src/main/java/org/apache/uima/resource/metadata/ExternalOverrideSettings.java
    uima/uimaj/trunk/uimaj-core/src/main/java/org/apache/uima/resource/metadata/impl/ExternalOverrideSettings_impl.java
Modified:
    uima/uimaj/trunk/uimaj-core/src/main/java/org/apache/uima/ResourceSpecifierFactory.java
    uima/uimaj/trunk/uimaj-core/src/main/java/org/apache/uima/UimaContextAdmin.java
    uima/uimaj/trunk/uimaj-core/src/main/java/org/apache/uima/analysis_engine/impl/AnalysisEngineDescription_impl.java
    uima/uimaj/trunk/uimaj-core/src/main/java/org/apache/uima/impl/ChildUimaContext_impl.java
    uima/uimaj/trunk/uimaj-core/src/main/java/org/apache/uima/impl/ResourceSpecifierFactory_impl.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/ConfigurationManager.java
    uima/uimaj/trunk/uimaj-core/src/main/java/org/apache/uima/resource/Resource.java
    uima/uimaj/trunk/uimaj-core/src/main/java/org/apache/uima/resource/ResourceConfigurationException.java
    uima/uimaj/trunk/uimaj-core/src/main/java/org/apache/uima/resource/ResourceInitializationException.java
    uima/uimaj/trunk/uimaj-core/src/main/java/org/apache/uima/resource/Resource_ImplBase.java
    uima/uimaj/trunk/uimaj-core/src/main/java/org/apache/uima/resource/impl/ConfigurationManagerImplBase.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/OperationalProperties.java
    uima/uimaj/trunk/uimaj-core/src/main/java/org/apache/uima/resource/metadata/impl/OperationalProperties_impl.java
    uima/uimaj/trunk/uimaj-core/src/main/java/org/apache/uima/resource/metadata/impl/ResourceMetaData_impl.java
    uima/uimaj/trunk/uimaj-core/src/main/java/org/apache/uima/util/Settings.java
    uima/uimaj/trunk/uimaj-core/src/main/java/org/apache/uima/util/impl/Settings_impl.java
    uima/uimaj/trunk/uimaj-core/src/main/resources/org/apache/uima/UIMAException_Messages.properties
    uima/uimaj/trunk/uimaj-core/src/main/resources/org/apache/uima/impl/log_messages.properties
    uima/uimaj/trunk/uimaj-core/src/main/resources/resourceSpecifierSchema.xsd
    uima/uimaj/trunk/uimaj-core/src/test/java/org/apache/uima/analysis_engine/impl/AnalysisEngineDescription_implTest.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/MultiprocessingAnalysisEngine_implTest.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/AnnotatorContextTest/AggregateTaeWithConfigParamOverrides.xml
    uima/uimaj/trunk/uimaj-core/src/test/resources/TextAnalysisEngineImplTest/AggregateTaeWithConfigParamOverrides.xml
    uima/uimaj/trunk/uimaj-core/src/test/resources/TextAnalysisEngineImplTest/AggregateTaeWithConfigParamOverrides2.xml
    uima/uimaj/trunk/uimaj-core/src/test/resources/TextAnalysisEngineImplTest/AggregateWithExternalOverrides.xml
    uima/uimaj/trunk/uimaj-core/src/test/resources/TextAnalysisEngineImplTest/AggregateWithUnknownRemoteComponent.xml
    uima/uimaj/trunk/uimaj-core/src/test/resources/TextAnalysisEngineImplTest/AnnotatorWithExternalOverrides.xml
    uima/uimaj/trunk/uimaj-core/src/test/resources/TextAnalysisEngineImplTest/testExternalOverride.settings
    uima/uimaj/trunk/uimaj-core/src/test/resources/TextAnalysisEngineImplTest/testExternalOverride2.settings

Modified: uima/uimaj/trunk/uimaj-core/src/main/java/org/apache/uima/ResourceSpecifierFactory.java
URL: http://svn.apache.org/viewvc/uima/uimaj/trunk/uimaj-core/src/main/java/org/apache/uima/ResourceSpecifierFactory.java?rev=1346479&r1=1346478&r2=1346479&view=diff
==============================================================================
--- uima/uimaj/trunk/uimaj-core/src/main/java/org/apache/uima/ResourceSpecifierFactory.java (original)
+++ uima/uimaj/trunk/uimaj-core/src/main/java/org/apache/uima/ResourceSpecifierFactory.java Tue Jun  5 17:20:18 2012
@@ -64,7 +64,6 @@ import org.apache.uima.resource.metadata
 import org.apache.uima.resource.metadata.ConfigurationParameter;
 import org.apache.uima.resource.metadata.ConfigurationParameterDeclarations;
 import org.apache.uima.resource.metadata.ConfigurationParameterSettings;
-import org.apache.uima.resource.metadata.ExternalOverrideSettings;
 import org.apache.uima.resource.metadata.ExternalResourceBinding;
 import org.apache.uima.resource.metadata.FeatureDescription;
 import org.apache.uima.resource.metadata.FsIndexCollection;
@@ -475,6 +474,4 @@ public interface ResourceSpecifierFactor
   public OutputQueue createOutputQueue();
 
   public CasProcessorRuntimeEnvParam createEnv();
-
-  public ExternalOverrideSettings createExternalOverrideSettings();
 }

Modified: uima/uimaj/trunk/uimaj-core/src/main/java/org/apache/uima/UimaContextAdmin.java
URL: http://svn.apache.org/viewvc/uima/uimaj/trunk/uimaj-core/src/main/java/org/apache/uima/UimaContextAdmin.java?rev=1346479&r1=1346478&r2=1346479&view=diff
==============================================================================
--- uima/uimaj/trunk/uimaj-core/src/main/java/org/apache/uima/UimaContextAdmin.java (original)
+++ uima/uimaj/trunk/uimaj-core/src/main/java/org/apache/uima/UimaContextAdmin.java Tue Jun  5 17:20:18 2012
@@ -32,6 +32,7 @@ import org.apache.uima.resource.Resource
 import org.apache.uima.resource.Session;
 import org.apache.uima.util.Logger;
 import org.apache.uima.util.ProcessTrace;
+import org.apache.uima.util.Settings;
 
 /**
  * Admin interface to the UIMA Context. Developer code should only use the {@link UimaContext}
@@ -171,11 +172,26 @@ public interface UimaContextAdmin extend
    * @param aCAS the CAS that was returned or released
    */
   public void returnedCAS(AbstractCas aCAS);
+  
   /**
    * Returns a UUID-like unique name of this component.
    * 
    * @return - unique name of this component
    */
   public String getUniqueName();
+  
+  /**
+   * Gets the settings to be used for external parameter overrides
+   *  
+   * @return the Settings object
+   */
+  public Settings getExternalOverrides();
+  
+  /**
+   * Sets the Settings for external parameter overrides
+   * 
+   * @param externalOverrides
+   */
+  public void setExternalOverrides(Settings externalOverrides);
 
 }

Modified: uima/uimaj/trunk/uimaj-core/src/main/java/org/apache/uima/analysis_engine/impl/AnalysisEngineDescription_impl.java
URL: http://svn.apache.org/viewvc/uima/uimaj/trunk/uimaj-core/src/main/java/org/apache/uima/analysis_engine/impl/AnalysisEngineDescription_impl.java?rev=1346479&r1=1346478&r2=1346479&view=diff
==============================================================================
--- uima/uimaj/trunk/uimaj-core/src/main/java/org/apache/uima/analysis_engine/impl/AnalysisEngineDescription_impl.java (original)
+++ uima/uimaj/trunk/uimaj-core/src/main/java/org/apache/uima/analysis_engine/impl/AnalysisEngineDescription_impl.java Tue Jun  5 17:20:18 2012
@@ -61,7 +61,6 @@ import org.apache.uima.resource.metadata
 import org.apache.uima.resource.metadata.impl.PropertyXmlInfo;
 import org.apache.uima.resource.metadata.impl.XmlizationInfo;
 import org.apache.uima.util.InvalidXMLException;
-import org.apache.uima.util.Level;
 import org.apache.uima.util.NameClassPair;
 import org.apache.uima.util.XMLInputSource;
 import org.apache.uima.util.XMLParser;
@@ -82,11 +81,6 @@ public class AnalysisEngineDescription_i
         AnalysisEngineDescription {
 
   /**
-   * resource bundle for log messages
-   */
-  private static final String LOG_RESOURCE_BUNDLE = "org.apache.uima.impl.log_messages";
-
-  /**
    * Name of the "delegateAnalysisEngineSpecifiers" property. Change this if interface changes.
    */
   protected String PROP_DELEGATE_ANALYSIS_ENGINE_SPECIFIERS = "delegateAnalysisEngineSpecifiers";
@@ -361,10 +355,10 @@ public class AnalysisEngineDescription_i
                 ResourceInitializationException.PARAM_OVERRIDE_IN_PRIMITIVE, new Object[] {
                     aParams[i].getName(), getMetaData().getName(), getSourceUrlString() });
       } else if (overrides.length == 0 && !isPrimitive()) {
-        UIMAFramework.getLogger(this.getClass()).logrb(Level.WARNING, this.getClass().getName(),
-                "checkForInvalidParameterOverrides", LOG_RESOURCE_BUNDLE,
-                "UIMA_aggregate_param_no_overrides__WARNING",
-                new Object[] { getMetaData().getName(), aParams[i].getName() });
+        // Were deprecated for many years ... now no longer supported.
+        throw new ResourceInitializationException(
+                ResourceInitializationException.INVALID_PARAM_OVERRIDE_NO_OVERRIDES, new Object[] {
+                    aParams[i].getName(), getMetaData().getName(), getSourceUrlString() });
       }
       for (int j = 0; j < overrides.length; j++) {
         // overrides should be of form delegateKey/paramName

Modified: uima/uimaj/trunk/uimaj-core/src/main/java/org/apache/uima/impl/ChildUimaContext_impl.java
URL: http://svn.apache.org/viewvc/uima/uimaj/trunk/uimaj-core/src/main/java/org/apache/uima/impl/ChildUimaContext_impl.java?rev=1346479&r1=1346478&r2=1346479&view=diff
==============================================================================
--- uima/uimaj/trunk/uimaj-core/src/main/java/org/apache/uima/impl/ChildUimaContext_impl.java (original)
+++ uima/uimaj/trunk/uimaj-core/src/main/java/org/apache/uima/impl/ChildUimaContext_impl.java Tue Jun  5 17:20:18 2012
@@ -80,6 +80,7 @@ public class ChildUimaContext_impl exten
             mQualifiedContextName);
     mSofaMappings = aSofaMappings;
     parentContext = aParentContext;
+    mExternalOverrides = aParentContext.getExternalOverrides();
   }
 
   /*

Modified: uima/uimaj/trunk/uimaj-core/src/main/java/org/apache/uima/impl/ResourceSpecifierFactory_impl.java
URL: http://svn.apache.org/viewvc/uima/uimaj/trunk/uimaj-core/src/main/java/org/apache/uima/impl/ResourceSpecifierFactory_impl.java?rev=1346479&r1=1346478&r2=1346479&view=diff
==============================================================================
--- uima/uimaj/trunk/uimaj-core/src/main/java/org/apache/uima/impl/ResourceSpecifierFactory_impl.java (original)
+++ uima/uimaj/trunk/uimaj-core/src/main/java/org/apache/uima/impl/ResourceSpecifierFactory_impl.java Tue Jun  5 17:20:18 2012
@@ -73,7 +73,6 @@ import org.apache.uima.resource.metadata
 import org.apache.uima.resource.metadata.ConfigurationParameter;
 import org.apache.uima.resource.metadata.ConfigurationParameterDeclarations;
 import org.apache.uima.resource.metadata.ConfigurationParameterSettings;
-import org.apache.uima.resource.metadata.ExternalOverrideSettings;
 import org.apache.uima.resource.metadata.ExternalResourceBinding;
 import org.apache.uima.resource.metadata.FeatureDescription;
 import org.apache.uima.resource.metadata.FsIndexCollection;
@@ -542,8 +541,4 @@ public class ResourceSpecifierFactory_im
 
   }
 
-  public ExternalOverrideSettings createExternalOverrideSettings() {
-    return (ExternalOverrideSettings) createObject(ExternalOverrideSettings.class);
-  }
-
 }

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=1346479&r1=1346478&r2=1346479&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 Tue Jun  5 17:20:18 2012
@@ -53,10 +53,10 @@ import org.apache.uima.resource.CasManag
 import org.apache.uima.resource.ResourceAccessException;
 import org.apache.uima.resource.ResourceConfigurationException;
 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;
+import org.apache.uima.util.Settings;
 import org.apache.uima.util.UriUtils;
 
 /**
@@ -121,6 +121,8 @@ public abstract class UimaContext_ImplBa
   protected AnalysisEngineManagementImpl mMBean = new AnalysisEngineManagementImpl();
 
   private String uniqueIdentifier = "";
+  
+  protected Settings mExternalOverrides;
 
   /*  Default constructor. Its main purpose is to create a UUID-like
    *  unique name for this component.
@@ -180,7 +182,7 @@ public abstract class UimaContext_ImplBa
   }
 
   /**
-   * @see org.apache.uima.analysis_engine.annotator.AnnotatorContext#getConfigParameterValue(String)
+   * @see org.apache.uima.analysis_engine.annotator.AnnotatorContext#getConfigParameterValue(java.lang.String)
    */
   public Object getConfigParameterValue(String aName) {
     return getConfigurationManager().getConfigParameterValue(makeQualifiedName(aName));
@@ -198,7 +200,7 @@ public abstract class UimaContext_ImplBa
   /**
    * Locates Resource URL's using the ResourceManager.
    * 
-   * @see org.apache.uima.analysis_engine.annotator.AnnotatorContext#getResourceURL(String)
+   * @see org.apache.uima.analysis_engine.annotator.AnnotatorContext#getResourceURL(java.lang.String)
    */
   public URL getResourceURL(String aKey) throws ResourceAccessException {
     URL result = getResourceManager().getResourceURL(makeQualifiedName(aKey));
@@ -264,7 +266,7 @@ public abstract class UimaContext_ImplBa
   /**
    * Acquires Resource InputStreams using the ResourceManager.
    * 
-   * @see org.apache.uima.analysis_engine.annotator.AnnotatorContext#getResourceAsStream(String)
+   * @see org.apache.uima.analysis_engine.annotator.AnnotatorContext#getResourceAsStream(java.lang.String)
    */
   public InputStream getResourceAsStream(String aKey) throws ResourceAccessException {
     InputStream result = getResourceManager().getResourceAsStream(makeQualifiedName(aKey));
@@ -295,7 +297,7 @@ public abstract class UimaContext_ImplBa
   /**
    * Acquires a Resource object using the ResourceManager.
    * 
-   * @see org.apache.uima.analysis_engine.annotator.AnnotatorContext#getResourceObject(String)
+   * @see org.apache.uima.analysis_engine.annotator.AnnotatorContext#getResourceObject(java.lang.String)
    */
   public Object getResourceObject(String aKey) throws ResourceAccessException {
     return getResourceManager().getResource(makeQualifiedName(aKey));
@@ -366,14 +368,14 @@ public abstract class UimaContext_ImplBa
   }
   
   /* (non-Javadoc)
-   * @see org.apache.uima.UimaContext#getResourceURI(String, String[])
+   * @see org.apache.uima.UimaContext#getResourceURI(java.lang.String, java.lang.String[])
    */
   public URI getResourceURI(String aKey, String[] aParams) throws ResourceAccessException {
     return getResourceURIfromURL(getResourceURL(aKey, aParams));
   } 
 
   /* (non-Javadoc)
-   * @see org.apache.uima.UimaContext#getResourceFilePath(String, String[])
+   * @see org.apache.uima.UimaContext#getResourceFilePath(java.lang.String, java.lang.String[])
    */
   public String getResourceFilePath(String aKey, String[] aParams) throws ResourceAccessException {
     URI resourceUri = getResourceURI(aKey, aParams);
@@ -482,8 +484,25 @@ public abstract class UimaContext_ImplBa
    * @throws ResourceConfigurationException 
    */
   public String getExternalParameterValue(String name) throws ResourceConfigurationException {
-    ConfigurationManager_impl cfgmgr = (ConfigurationManager_impl) getConfigurationManager();
-    return cfgmgr.getExternalParameter(mQualifiedContextName, name);
+    return mExternalOverrides == null ? null : mExternalOverrides.lookUp(name);
+  }
+
+  /**
+   * (non-Javadoc)
+   * 
+   * @see org.apache.uima.UimaContextAdmin#getExternalOverrides()
+   */
+  public Settings getExternalOverrides() {
+    return mExternalOverrides;
+  }
+
+  /**
+   * (non-Javadoc)
+   * 
+   * @see org.apache.uima.UimaContextAdmin#setExternalOverrides(org.apache.uima.util.Settings)
+   */
+  public void setExternalOverrides(Settings externalOverrides) {
+    mExternalOverrides = externalOverrides; 
   }
   
   /**

Modified: uima/uimaj/trunk/uimaj-core/src/main/java/org/apache/uima/resource/ConfigurationManager.java
URL: http://svn.apache.org/viewvc/uima/uimaj/trunk/uimaj-core/src/main/java/org/apache/uima/resource/ConfigurationManager.java?rev=1346479&r1=1346478&r2=1346479&view=diff
==============================================================================
--- uima/uimaj/trunk/uimaj-core/src/main/java/org/apache/uima/resource/ConfigurationManager.java (original)
+++ uima/uimaj/trunk/uimaj-core/src/main/java/org/apache/uima/resource/ConfigurationManager.java Tue Jun  5 17:20:18 2012
@@ -22,6 +22,7 @@ package org.apache.uima.resource;
 import org.apache.uima.resource.metadata.ConfigurationParameterDeclarations;
 import org.apache.uima.resource.metadata.ConfigurationParameterSettings;
 import org.apache.uima.resource.metadata.ResourceMetaData;
+import org.apache.uima.util.Settings;
 
 /**
  * Manages the configuration parameters of all components within a possibly aggregate
@@ -48,7 +49,7 @@ public interface ConfigurationManager {
    * @throws ResourceConfigurationException
    *           if the configuration settings are invalid
    */
-  public void createContext(String aContextName, ResourceMetaData aResourceMetaData)
+  public void createContext(String aContextName, ResourceMetaData aResourceMetaData, Settings externalSettings)
           throws ResourceConfigurationException;
 
   /**

Modified: uima/uimaj/trunk/uimaj-core/src/main/java/org/apache/uima/resource/Resource.java
URL: http://svn.apache.org/viewvc/uima/uimaj/trunk/uimaj-core/src/main/java/org/apache/uima/resource/Resource.java?rev=1346479&r1=1346478&r2=1346479&view=diff
==============================================================================
--- uima/uimaj/trunk/uimaj-core/src/main/java/org/apache/uima/resource/Resource.java (original)
+++ uima/uimaj/trunk/uimaj-core/src/main/java/org/apache/uima/resource/Resource.java Tue Jun  5 17:20:18 2012
@@ -151,6 +151,16 @@ public interface Resource {
    * {@link #initialize(ResourceSpecifier,Map)} method.
    */
   public static final String PARAM_CONFIG_PARAM_SETTINGS = "CONFIG_PARAM_SETTINGS";
+  
+  /**
+   * Key for the initialization parameter whose value is a {@link org.apache.uima.util.Settings}
+   * object that holds the external override settings.  This will replace any prior settings.  
+   * If omitted the value in the parent UIMA Context is inherited.  If there is no parent (i.e. at 
+   * the root or top-level context) then the files in the system property UimaExternalOverrides are used.
+   * This value is used as a key in the <code>aAdditionalParams</code> Map that is passed to the
+   * {@link #initialize(ResourceSpecifier,Map)} method.
+   */
+  public static final String PARAM_EXTERNAL_OVERRIDE_SETTINGS = "EXTERNAL_OVERRIDE_SETTINGS";
 
   /**
    * Key for the initialization parameter whose value is a {@link java.util.Properties} object that

Modified: uima/uimaj/trunk/uimaj-core/src/main/java/org/apache/uima/resource/ResourceConfigurationException.java
URL: http://svn.apache.org/viewvc/uima/uimaj/trunk/uimaj-core/src/main/java/org/apache/uima/resource/ResourceConfigurationException.java?rev=1346479&r1=1346478&r2=1346479&view=diff
==============================================================================
--- uima/uimaj/trunk/uimaj-core/src/main/java/org/apache/uima/resource/ResourceConfigurationException.java (original)
+++ uima/uimaj/trunk/uimaj-core/src/main/java/org/apache/uima/resource/ResourceConfigurationException.java Tue Jun  5 17:20:18 2012
@@ -81,22 +81,22 @@ public class ResourceConfigurationExcept
   public static final String CONFIG_SETTING_ABSENT = "config_setting_absent";
 
   /**
-   * Message key for a standard UIMA exception message: "Could not load properties file "{0}"."
-   */
-  public static final String PROPERTIES_FILE_NOT_FOUND = "properties_file_not_found";
-
-  /**
    * Message key for a standard UIMA exception message: Invalid value for parameter "{0}" in
    * component "{1}" -- directory "{2}" does not exist.
    */
   public static final String DIRECTORY_NOT_FOUND = "directory_not_found";
   
   /**
-   * Message key for a standard UIMA exception message: An external override references the undefined variable "{0}"
+   * Message key for a standard UIMA exception message: External override variable "{0}" references the undefined variable "{1}"
    */
   public static final String EXTERNAL_OVERRIDE_INVALID = "external_override_invalid";
 
   /**
+   * Message key for a standard UIMA exception message: Error loading external overrides from "{0}"
+   */
+  public static final String EXTERNAL_OVERRIDE_ERROR = "external_override_error";
+  
+  /**
    * Creates a new exception with a null message.
    */
   public ResourceConfigurationException() {

Modified: uima/uimaj/trunk/uimaj-core/src/main/java/org/apache/uima/resource/ResourceInitializationException.java
URL: http://svn.apache.org/viewvc/uima/uimaj/trunk/uimaj-core/src/main/java/org/apache/uima/resource/ResourceInitializationException.java?rev=1346479&r1=1346478&r2=1346479&view=diff
==============================================================================
--- uima/uimaj/trunk/uimaj-core/src/main/java/org/apache/uima/resource/ResourceInitializationException.java (original)
+++ uima/uimaj/trunk/uimaj-core/src/main/java/org/apache/uima/resource/ResourceInitializationException.java Tue Jun  5 17:20:18 2012
@@ -249,6 +249,13 @@ public class ResourceInitializationExcep
   public static final String PARAM_OVERRIDE_IN_PRIMITIVE = "param_override_in_primitive";
 
   /**
+   * Message key for a standard UIMA exception message: Configuration parameter "{0}" in aggregate
+   * Analysis Engine "{1}" does not declare any overrides.  Implicit overrides are no longer supported. 
+   * (Descriptor: {2})
+   */
+  public static final String INVALID_PARAM_OVERRIDE_NO_OVERRIDES = "invalid_param_override_no_overrides";
+
+  /**
    * Message key for a standard UIMA exception message: Invalid configuration parameter override
    * syntax "{0}" in parameter "{1}" of Analysis Engine "{2}". Overrides must be of the form
    * "&lt;delegateKey>/&lt;paramName>"

Modified: uima/uimaj/trunk/uimaj-core/src/main/java/org/apache/uima/resource/Resource_ImplBase.java
URL: http://svn.apache.org/viewvc/uima/uimaj/trunk/uimaj-core/src/main/java/org/apache/uima/resource/Resource_ImplBase.java?rev=1346479&r1=1346478&r2=1346479&view=diff
==============================================================================
--- uima/uimaj/trunk/uimaj-core/src/main/java/org/apache/uima/resource/Resource_ImplBase.java (original)
+++ uima/uimaj/trunk/uimaj-core/src/main/java/org/apache/uima/resource/Resource_ImplBase.java Tue Jun  5 17:20:18 2012
@@ -25,12 +25,12 @@ import org.apache.uima.UIMAFramework;
 import org.apache.uima.UIMA_IllegalStateException;
 import org.apache.uima.UimaContext;
 import org.apache.uima.UimaContextAdmin;
-import org.apache.uima.analysis_engine.metadata.AnalysisEngineMetaData;
-import org.apache.uima.resource.impl.ConfigurationManager_impl;
 import org.apache.uima.resource.metadata.ResourceManagerConfiguration;
 import org.apache.uima.resource.metadata.ResourceMetaData;
 import org.apache.uima.util.InvalidXMLException;
 import org.apache.uima.util.Logger;
+import org.apache.uima.util.Settings;
+import org.apache.uima.util.impl.Settings_impl;
 
 /**
  * Implementation base class for {@link org.apache.uima.resource.Resource}s. Provides access to
@@ -132,23 +132,30 @@ public abstract class Resource_ImplBase 
       // store Resource metadata so it can be retrieved via getMetaData() method
       setMetaData(metadata);
       
-      // If an Analysis Engine load the external override settings in the shared configuration manager
-      if (metadata instanceof AnalysisEngineMetaData
-              && mUimaContextAdmin.getConfigurationManager() instanceof ConfigurationManager_impl) {
-        ConfigurationManager_impl cfgmgr = (ConfigurationManager_impl) mUimaContextAdmin.getConfigurationManager();
-        try {
-          cfgmgr.setupExternalOverrideSettings(mUimaContextAdmin.getQualifiedContextName(), metadata,
-                  getResourceManager());
-        } catch (ResourceConfigurationException e) {
-          throw new ResourceInitializationException(ResourceInitializationException.ERROR_INITIALIZING_FROM_DESCRIPTOR,
-                  new Object[] { name, metadata.getSourceUrlString() }, e);
+      // Check if a Settings object for the external overrides has been provided in the additional
+      // parameters map.  If not and not already set from the parent UimaContext then create one 
+      // (for the root context) from the system defaults
+      Settings externalOverrides = aAdditionalParams == null ? null : 
+                    (Settings) aAdditionalParams.get(Resource.PARAM_EXTERNAL_OVERRIDE_SETTINGS);
+      if (externalOverrides != null) {
+        mUimaContextAdmin.setExternalOverrides(externalOverrides);
+      } else {
+        if (mUimaContextAdmin.getExternalOverrides() == null) {
+          externalOverrides = new Settings_impl();
+          try {
+            externalOverrides.loadSystemDefaults();
+          } catch (ResourceConfigurationException e) {
+            throw new ResourceInitializationException(ResourceInitializationException.ERROR_INITIALIZING_FROM_DESCRIPTOR,
+                    new Object[] { name, metadata.getSourceUrlString() }, e);
+          }
+          mUimaContextAdmin.setExternalOverrides(externalOverrides);
         }
       }
 
       // initialize configuration
       try {
         mUimaContextAdmin.getConfigurationManager().createContext(
-                mUimaContextAdmin.getQualifiedContextName(), getMetaData());
+                mUimaContextAdmin.getQualifiedContextName(), getMetaData(), mUimaContextAdmin.getExternalOverrides());
         mUimaContextAdmin.getConfigurationManager().setSession(mUimaContextAdmin.getSession());
       } catch (ResourceConfigurationException e) {
         throw new ResourceInitializationException(

Modified: uima/uimaj/trunk/uimaj-core/src/main/java/org/apache/uima/resource/impl/ConfigurationManagerImplBase.java
URL: http://svn.apache.org/viewvc/uima/uimaj/trunk/uimaj-core/src/main/java/org/apache/uima/resource/impl/ConfigurationManagerImplBase.java?rev=1346479&r1=1346478&r2=1346479&view=diff
==============================================================================
--- uima/uimaj/trunk/uimaj-core/src/main/java/org/apache/uima/resource/impl/ConfigurationManagerImplBase.java (original)
+++ uima/uimaj/trunk/uimaj-core/src/main/java/org/apache/uima/resource/impl/ConfigurationManagerImplBase.java Tue Jun  5 17:20:18 2012
@@ -40,6 +40,7 @@ import org.apache.uima.resource.metadata
 import org.apache.uima.resource.metadata.NameValuePair;
 import org.apache.uima.resource.metadata.OperationalProperties;
 import org.apache.uima.resource.metadata.ResourceMetaData;
+import org.apache.uima.util.Settings;
 
 /**
  * Convenience base class for Configuration Manager implementations. Subclasses just need to
@@ -102,7 +103,7 @@ public abstract class ConfigurationManag
    * @see org.apache.uima.resource.ConfigurationManager#createContext(java.lang.String,
    *      org.apache.uima.resource.metadata.ResourceMetaData)
    */
-  public void createContext(String aContextName, ResourceMetaData aResourceMetaData)
+  public void createContext(String aContextName, ResourceMetaData aResourceMetaData, Settings externalOverrides)
           throws ResourceConfigurationException {
     // first internally validate settings in the ResourceMetaData (catches data type problems,
     // settings for undefined parameters, etc.)
@@ -113,14 +114,13 @@ public abstract class ConfigurationManag
     // provide access to the parameter values
     ConfigurationParameterDeclarations paramDecls = aResourceMetaData
             .getConfigurationParameterDeclarations();
-    String parentContext = computeParentContextName(aContextName);
     ConfigurationParameterSettings settings = aResourceMetaData.getConfigurationParameterSettings();
 
     // parameters in no group
     ConfigurationParameter[] paramsInNoGroup = paramDecls.getConfigurationParameters();
     if (paramsInNoGroup.length > 0) // no groups declared
     {
-      declareParameters(null, paramsInNoGroup, settings, aContextName, parentContext);
+      declareParameters(null, paramsInNoGroup, settings, aContextName, externalOverrides);
     }
 
     // parameter groups
@@ -133,12 +133,12 @@ public abstract class ConfigurationManag
             // common params
             ConfigurationParameter[] commonParams = paramDecls.getCommonParameters();
             if (commonParams != null) {
-              declareParameters(names[j], commonParams, settings, aContextName, parentContext);
+              declareParameters(names[j], commonParams, settings, aContextName, externalOverrides);
             }
             // params in group
             ConfigurationParameter[] params = groups[i].getConfigurationParameters();
             if (params != null) {
-              declareParameters(names[j], params, settings, aContextName, parentContext);
+              declareParameters(names[j], params, settings, aContextName, externalOverrides);
             }
           }
         }
@@ -339,47 +339,23 @@ public abstract class ConfigurationManag
    *          settings for parameters
    * @param aContextName
    *          name of context containing this parameter
-   * @param aParentContextName
-   *          name of parent context, null if none
+   * @param aExternalOverrides
+   *          settings for parameters with external overrides 
    * @throws ResourceConfigurationException 
    */
   protected void declareParameters(String aGroupName, ConfigurationParameter[] aParams,
-          ConfigurationParameterSettings aSettings, String aContextName, String aParentContextName)
+          ConfigurationParameterSettings aSettings, String aContextName, Settings aExternalOverrides)
           throws ResourceConfigurationException {
     // iterate over config. param _declarations_
     if (aParams != null) {
       for (int i = 0; i < aParams.length; i++) {
         ConfigurationParameter param = aParams[i];
         String qname = makeQualifiedName(aContextName, param.getName(), aGroupName);
-        // look up in link map; if an entry is found it indicates this parameter was
-        // explicitly overridden by an aggregate parameter (in which case we don't enter a value)
-        String overriddenBy = getLink(qname);
-        if (overriddenBy == null) {
-          // no explicit override. Check for implicit override (a parameter with same
-          // name declared in parent aggregate with no explicit overrides)
-          // Note: any type mismatch will generate an error later
-          String nameInParentContext = makeQualifiedName(aParentContextName, param.getName(), aGroupName);
-          if (lookup(nameInParentContext) != null && !mExplicitlyOverridingParameters.contains(nameInParentContext)) {
-            // create a link (but collapse multiple links)
-            // String parentLink = getLink(nameInParentContext);
-            // overriddenBy = parentLink != null ? parentLink : nameInParentContext;
-            // mLinkMap.put(qname, overriddenBy);
-            mLinkMap.put(qname, nameInParentContext);
-          }
-        }
         // if this parameter explicitly overrides others, enter those parameter links in the map
-        // String overrideTarget = (overriddenBy != null) ? overriddenBy : qname;
         String[] overrides = param.getOverrides();
         for (int j = 0; j < overrides.length; j++) {
-          // mLinkMap.put(makeQualifiedName(aContextName, overrides[j], aGroupName),
-          // overrideTarget);
           mLinkMap.put(makeQualifiedName(aContextName, overrides[j], aGroupName), qname);
         }
-        if (overrides.length > 0) {
-          // record this as an explcitily overriding parameter (so implicit override does not take
-          // place)
-          mExplicitlyOverridingParameters.add(qname);
-        }
       }
     }
   }

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=1346479&r1=1346478&r2=1346479&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 Tue Jun  5 17:20:18 2012
@@ -25,18 +25,13 @@ import java.util.Arrays;
 import java.util.Collections;
 import java.util.HashMap;
 import java.util.Map;
-import java.util.concurrent.ConcurrentHashMap;
 
 import org.apache.uima.UIMAFramework;
-import org.apache.uima.analysis_engine.metadata.AnalysisEngineMetaData;
 import org.apache.uima.resource.ResourceConfigurationException;
-import org.apache.uima.resource.ResourceManager;
 import org.apache.uima.resource.metadata.ConfigurationParameter;
 import org.apache.uima.resource.metadata.ConfigurationParameterSettings;
-import org.apache.uima.resource.metadata.ExternalOverrideSettings;
-import org.apache.uima.resource.metadata.ResourceMetaData;
-import org.apache.uima.resource.metadata.impl.ExternalOverrideSettings_impl;
 import org.apache.uima.util.Level;
+import org.apache.uima.util.Settings;
 
 /**
  * Basic standalone Configuration Manager implmentation.
@@ -55,11 +50,6 @@ public class ConfigurationManager_impl e
    */
   private Map<String, Object> mSharedParamMap = Collections.synchronizedMap(new HashMap<String, Object>());
 
-  /**
-   * Map of External Overrides when have multiple top-level engines, e.g. under CPE
-   */
-  private Map<String,ExternalOverrideSettings_impl> mSettingsMap = new ConcurrentHashMap<String, ExternalOverrideSettings_impl>();
-  
   /*
    * (non-Javadoc)
    * 
@@ -68,13 +58,11 @@ public class ConfigurationManager_impl e
    * org.apache.uima.resource.metadata.ConfigurationParameterSettings, java.lang.String, java.lang.String)
    */
   protected void declareParameters(String aGroupName, ConfigurationParameter[] aParams,
-          ConfigurationParameterSettings aSettings, String aContextName, String aParentContextName)
+          ConfigurationParameterSettings aSettings, String aContextName, Settings aExternalOverrides)
           throws ResourceConfigurationException {
-    super.declareParameters(aGroupName, aParams, aSettings, aContextName, aParentContextName);
+    super.declareParameters(aGroupName, aParams, aSettings, aContextName, aExternalOverrides);
     // iterate over config. param _declarations_ and build mSharedParamNap
     if (aParams != null) {
-
-      ExternalOverrideSettings settings = mSettingsMap.get(aContextName);
       for (int i = 0; i < aParams.length; i++) {
         String qname = makeQualifiedName(aContextName, aParams[i].getName(), aGroupName);
         String from = "";
@@ -85,8 +73,8 @@ public class ConfigurationManager_impl e
         // even over an external name in the aggregate.
         Object paramValue = aSettings.getParameterValue(aGroupName, aParams[i].getName());
         String extName = aParams[i].getExternalOverrideName();
-        if (extName != null && settings != null) {
-          String propValue = settings.resolveExternalName(extName);
+        if (extName != null && aExternalOverrides != null) {
+          String propValue = aExternalOverrides.lookUp(extName);
           if (propValue != null) {
             Object result = createParam(propValue, aParams[i].getType(), aParams[i].isMultiValued());
             if (result == null) {
@@ -236,56 +224,5 @@ public class ConfigurationManager_impl e
     // If change in i is odd then ended with an unescaped \ 
     return ((line.length() - i) % 2 != 0);
   }
-  
-  /**
-   * If the first Analysis Engine load the External Override Settings
-   * May start with the root context "/" or may get multiple top-level contexts (e.g. from CPE)
-   * 
-   * @param contextName for this engine, "/" or "/name/" or "/name/name/..."
-   * @param metadata
-   * @param resourceManager
-   * @throws ResourceConfigurationException
-   */
-  public void setupExternalOverrideSettings(String contextName, ResourceMetaData metadata,
-          ResourceManager resourceManager) throws ResourceConfigurationException {
-    ExternalOverrideSettings_impl parentOverrides = null;
-    // Remove last section of the context, e.g. from "/toplevel/secondlevel/thirdlevel/" or "/"
-    int i = contextName.substring(0, contextName.length()-1).lastIndexOf('/');
-    if (i >= 0) {
-      String parentContext = contextName.substring(0, i + 1);  // keep final '/'
-      parentOverrides = mSettingsMap.get(parentContext);
-    }
 
-    // See if descriptor has any settings
-    ExternalOverrideSettings_impl eos = (ExternalOverrideSettings_impl) ((AnalysisEngineMetaData)metadata).getOperationalProperties().getExternalOverrideSettings();
-    if (eos == null) {
-      // If no settings inherit the parent's settings, unless this is the top-level descriptor
-      if (parentOverrides != null) {
-        mSettingsMap.put(contextName, parentOverrides);  // Child has same list as parent
-        return;
-      } else {                                           // Create required top-level one
-        eos = new ExternalOverrideSettings_impl();  // Simpler than using the factory
-      }
-    }
-    // Link this back to the next higher set of external overrides
-    eos.setParentOverrides(parentOverrides);
-    
-    // Resolve imports
-    eos.resolveImports(resourceManager);
-    mSettingsMap.put(contextName, eos);
-  }
-
-  /**
-   * Convenience method for direct access to string variables
-   * 
-   * @param context - UIMA Context
-   * @param name    - variable to look up
-   * @return        - value of variable OR an exception message if definition is invalid
-   * @throws ResourceConfigurationException 
-   */
-  public String getExternalParameter(String context, String name) throws ResourceConfigurationException {
-    ExternalOverrideSettings settings = mSettingsMap.get(context);
-    String value = settings == null ? null : settings.resolveExternalName(name);
-    return value == null ? null : escape(value);
-  }
 }

Modified: uima/uimaj/trunk/uimaj-core/src/main/java/org/apache/uima/resource/metadata/OperationalProperties.java
URL: http://svn.apache.org/viewvc/uima/uimaj/trunk/uimaj-core/src/main/java/org/apache/uima/resource/metadata/OperationalProperties.java?rev=1346479&r1=1346478&r2=1346479&view=diff
==============================================================================
--- uima/uimaj/trunk/uimaj-core/src/main/java/org/apache/uima/resource/metadata/OperationalProperties.java (original)
+++ uima/uimaj/trunk/uimaj-core/src/main/java/org/apache/uima/resource/metadata/OperationalProperties.java Tue Jun  5 17:20:18 2012
@@ -81,7 +81,4 @@ public interface OperationalProperties {
    */
   public void setOutputsNewCASes(boolean aOutputsNewCASes);
   
-  public void setExternalOverrideSettings(ExternalOverrideSettings aExternalOverrideSettings);
-
-  public ExternalOverrideSettings getExternalOverrideSettings();
 }

Modified: uima/uimaj/trunk/uimaj-core/src/main/java/org/apache/uima/resource/metadata/impl/OperationalProperties_impl.java
URL: http://svn.apache.org/viewvc/uima/uimaj/trunk/uimaj-core/src/main/java/org/apache/uima/resource/metadata/impl/OperationalProperties_impl.java?rev=1346479&r1=1346478&r2=1346479&view=diff
==============================================================================
--- uima/uimaj/trunk/uimaj-core/src/main/java/org/apache/uima/resource/metadata/impl/OperationalProperties_impl.java (original)
+++ uima/uimaj/trunk/uimaj-core/src/main/java/org/apache/uima/resource/metadata/impl/OperationalProperties_impl.java Tue Jun  5 17:20:18 2012
@@ -19,7 +19,6 @@
 
 package org.apache.uima.resource.metadata.impl;
 
-import org.apache.uima.resource.metadata.ExternalOverrideSettings;
 import org.apache.uima.resource.metadata.OperationalProperties;
 import org.apache.uima.util.InvalidXMLException;
 import org.apache.uima.util.XMLParser;
@@ -38,8 +37,6 @@ public class OperationalProperties_impl 
 
   private boolean mOutputsNewCASes;
   
-  private ExternalOverrideSettings  mExternalOverrideSettings;
-
   /*
    * (non-Javadoc)
    * 
@@ -85,14 +82,6 @@ public class OperationalProperties_impl 
     mOutputsNewCASes = aOutputsNewCASes;
   }
 
-  public void setExternalOverrideSettings(ExternalOverrideSettings aExternalOverrideSettings) {
-    mExternalOverrideSettings = aExternalOverrideSettings;
-  }
-
-  public ExternalOverrideSettings getExternalOverrideSettings() {
-    return mExternalOverrideSettings;
-  }
-
   protected XmlizationInfo getXmlizationInfo() {
     return XMLIZATION_INFO;
   }
@@ -100,8 +89,7 @@ public class OperationalProperties_impl 
   static final private XmlizationInfo XMLIZATION_INFO = new XmlizationInfo("operationalProperties",
           new PropertyXmlInfo[] { new PropertyXmlInfo("modifiesCas"),
               new PropertyXmlInfo("multipleDeploymentAllowed"),
-              new PropertyXmlInfo("outputsNewCASes"),
-              new PropertyXmlInfo("externalOverrideSettings", null)});
+              new PropertyXmlInfo("outputsNewCASes")});
 
   /* (non-Javadoc)
    * @see org.apache.uima.resource.metadata.impl.MetaDataObject_impl#buildFromXMLElement(org.w3c.dom.Element, org.apache.uima.util.XMLParser, org.apache.uima.util.XMLParser.ParsingOptions)

Modified: uima/uimaj/trunk/uimaj-core/src/main/java/org/apache/uima/resource/metadata/impl/ResourceMetaData_impl.java
URL: http://svn.apache.org/viewvc/uima/uimaj/trunk/uimaj-core/src/main/java/org/apache/uima/resource/metadata/impl/ResourceMetaData_impl.java?rev=1346479&r1=1346478&r2=1346479&view=diff
==============================================================================
--- uima/uimaj/trunk/uimaj-core/src/main/java/org/apache/uima/resource/metadata/impl/ResourceMetaData_impl.java (original)
+++ uima/uimaj/trunk/uimaj-core/src/main/java/org/apache/uima/resource/metadata/impl/ResourceMetaData_impl.java Tue Jun  5 17:20:18 2012
@@ -305,7 +305,7 @@ public class ResourceMetaData_impl exten
           NameValuePair aNVP) throws ResourceConfigurationException {
     String paramName = aParam.getName();
     String paramType = aParam.getType();
-    Class valClass = aNVP.getValue().getClass();
+    Class<?> valClass = aNVP.getValue().getClass();
 
     if (aParam.isMultiValued()) // value must be an array
     {
@@ -336,7 +336,7 @@ public class ResourceMetaData_impl exten
    * 
    * @return expected Java class for parameter values of this type
    */
-  protected Class getClassForParameterType(String paramType) {
+  protected Class<?> getClassForParameterType(String paramType) {
     if (ConfigurationParameter.TYPE_STRING.equals(paramType)) {
       return String.class;
     } else if (ConfigurationParameter.TYPE_BOOLEAN.equals(paramType)) {

Modified: uima/uimaj/trunk/uimaj-core/src/main/java/org/apache/uima/util/Settings.java
URL: http://svn.apache.org/viewvc/uima/uimaj/trunk/uimaj-core/src/main/java/org/apache/uima/util/Settings.java?rev=1346479&r1=1346478&r2=1346479&view=diff
==============================================================================
--- uima/uimaj/trunk/uimaj-core/src/main/java/org/apache/uima/util/Settings.java (original)
+++ uima/uimaj/trunk/uimaj-core/src/main/java/org/apache/uima/util/Settings.java Tue Jun  5 17:20:18 2012
@@ -37,6 +37,15 @@ public interface Settings {
   public void load(InputStream in) throws IOException;
 
   /**
+   * Load properties from the comma-separated list of files specified in the system property 
+   *   UimaExternalOverrides
+   * Files are loaded in order --- so in descending priority.
+   * 
+   * @throws ResourceConfigurationException 
+   */
+  public void loadSystemDefaults() throws ResourceConfigurationException;
+  
+  /**
    * Look up the value for a property.
    * Perform one substitution pass on ${key} substrings replacing them with the value for key.
    * Recursively evaluate the value to be substituted.  NOTE: infinite loops not detected!
@@ -47,7 +56,7 @@ public interface Settings {
    * 
    * @param name - name to look up
    * @return     - value of property
-   * @throws ResourceConfigurationException
+   * @throws ResourceConfigurationException if the value references an undefined property
    */
   public String lookUp(String name) throws ResourceConfigurationException;
 

Modified: uima/uimaj/trunk/uimaj-core/src/main/java/org/apache/uima/util/impl/Settings_impl.java
URL: http://svn.apache.org/viewvc/uima/uimaj/trunk/uimaj-core/src/main/java/org/apache/uima/util/impl/Settings_impl.java?rev=1346479&r1=1346478&r2=1346479&view=diff
==============================================================================
--- uima/uimaj/trunk/uimaj-core/src/main/java/org/apache/uima/util/impl/Settings_impl.java (original)
+++ uima/uimaj/trunk/uimaj-core/src/main/java/org/apache/uima/util/impl/Settings_impl.java Tue Jun  5 17:20:18 2012
@@ -1,6 +1,7 @@
 package org.apache.uima.util.impl;
 
 import java.io.BufferedReader;
+import java.io.FileInputStream;
 import java.io.IOException;
 import java.io.InputStream;
 import java.io.InputStreamReader;
@@ -37,8 +38,6 @@ public class Settings_impl implements Se
 
   private Map<String, String> map;
   
-  private Settings_impl parent = null;
-  
   /*
    * Regex that matches ${...}
    * non-greedy so stops on first '}' -- hence key cannot contain '}'
@@ -46,11 +45,6 @@ public class Settings_impl implements Se
   private Pattern evalPattern = Pattern.compile("\\$\\{.*?\\}");
 
   public Settings_impl() {
-    this(null);
-  }
-
-  public Settings_impl(Settings_impl parent) {
-    this.parent = parent;
     map = new HashMap<String, String>();
   }
 
@@ -94,14 +88,38 @@ public class Settings_impl implements Se
       } else {
         if (!value.equals(map.get(name))) {
           // Key {0} already in use ... ignoring value "{1}"
-          UIMAFramework.getLogger(this.getClass()).logrb(Level.WARNING, this.getClass().getName(), "load",
-                  LOG_RESOURCE_BUNDLE, "UIMA_external_override_ignored__WARNING", new Object[] { name, value });
+          UIMAFramework.getLogger(this.getClass()).logrb(Level.CONFIG, this.getClass().getName(), "load",
+                  LOG_RESOURCE_BUNDLE, "UIMA_external_override_ignored__CONFIG", new Object[] { name, value });
         }
       }
     }
   }
 
   /**
+   * Load the files specified in the system property UimaExternalOverrides
+   *
+   * @throws IOException
+   * @throws ResourceConfigurationException 
+   */
+  
+  public void loadSystemDefaults() throws ResourceConfigurationException {
+    String fnames = System.getProperty("UimaExternalOverrides");
+    if (fnames != null) {
+      for (String fname : fnames.split(",")) {
+        UIMAFramework.getLogger(this.getClass()).logrb(Level.CONFIG, this.getClass().getName(), "loadSystemDefaults",
+                LOG_RESOURCE_BUNDLE, "UIMA_external_overrides_load__CONFIG",
+                new Object[] { fname });
+        try {
+          load(new FileInputStream(fname));
+        } catch (IOException e) {
+          throw new ResourceConfigurationException(ResourceConfigurationException.EXTERNAL_OVERRIDE_ERROR,
+                  new Object[] { fname }, e);
+        }
+      }
+    }
+  }
+  
+  /**
    * Look up the value for a property.
    * Perform one substitution pass on ${key} substrings. If key is undefined throw an exception.
    * Recursively evaluate the value to be substituted.  NOTE: infinite loops not detected!
@@ -117,7 +135,7 @@ public class Settings_impl implements Se
    */
   public String lookUp(String name) throws ResourceConfigurationException {
     String value;
-    if ((value = get(name)) == null) {
+    if ((value = map.get(name)) == null) {
       return null;
     }
     Matcher matcher = evalPattern.matcher(value);
@@ -147,22 +165,6 @@ public class Settings_impl implements Se
       return result.toString();
     }
   }
-
-  /*
-   * Get the raw value for a key by search the linked list of settings, starting 
-   * at the end of the list, i.e. the top-level settings.
-   */
-  private String get(String name) {
-    String value;
-    // Only if parent (and parent's parent etc.) doesn't have an entry do we check our entries.
-    if (parent != null) {
-      value = parent.get(name);
-      if (value != null) {
-        return value;
-      }
-    }
-    return map.get(name);
-  }
   
   /*
    * Create a string representing an array from one or more logical lines

Modified: uima/uimaj/trunk/uimaj-core/src/main/resources/org/apache/uima/UIMAException_Messages.properties
URL: http://svn.apache.org/viewvc/uima/uimaj/trunk/uimaj-core/src/main/resources/org/apache/uima/UIMAException_Messages.properties?rev=1346479&r1=1346478&r2=1346479&view=diff
==============================================================================
--- uima/uimaj/trunk/uimaj-core/src/main/resources/org/apache/uima/UIMAException_Messages.properties (original)
+++ uima/uimaj/trunk/uimaj-core/src/main/resources/org/apache/uima/UIMAException_Messages.properties Tue Jun  5 17:20:18 2012
@@ -119,13 +119,13 @@ config_setting_absent = Configuration se
 
 resource_not_found = Configuration setting for parameter "{0}" is absent.
 
-properties_file_not_found = Could not load properties file "{0}".
-
 directory_not_found = Invalid value for parameter "{0}" in component "{1}" -- \
 	 directory "{2}" does not exist.
 
 external_override_invalid = External override variable "{0}" references the undefined variable "{1}"
 
+external_override_error = Error loading external overrides from "{0}"
+
 #--------------------------------
 #ResourceProcessException
 #--------------------------------
@@ -287,6 +287,9 @@ duplicate_index_name = Two different CAS
 param_override_in_primitive =  Configuration parameter "{0}" in primitive Analysis Engine "{1}" \
 	declares an override.  Parameter overrides are allowed only in aggregate Analysis Engines. (Descriptor: {2})
 
+invalid_param_override_no_overrides =  Configuration parameter "{0}" in aggregate Analysis Engine "{1}" \
+	does not declare any overrides.  Implicit overrides are no longer supported. (Descriptor: {2})
+
 invalid_param_override_syntax = Invalid configuration parameter override syntax "{0}" in \
 	parameter "{1}" of Analysis Engine "{2}".  Overrides must be of the form "<delegateKey>/<paramName>". (Descriptor: {3})
 

Modified: uima/uimaj/trunk/uimaj-core/src/main/resources/org/apache/uima/impl/log_messages.properties
URL: http://svn.apache.org/viewvc/uima/uimaj/trunk/uimaj-core/src/main/resources/org/apache/uima/impl/log_messages.properties?rev=1346479&r1=1346478&r2=1346479&view=diff
==============================================================================
--- uima/uimaj/trunk/uimaj-core/src/main/resources/org/apache/uima/impl/log_messages.properties (original)
+++ uima/uimaj/trunk/uimaj-core/src/main/resources/org/apache/uima/impl/log_messages.properties Tue Jun  5 17:20:18 2012
@@ -72,12 +72,9 @@ UIMA_trying_resource_class__CONFIG = try
 UIMA_unmanaged_resource__WARNING = The unmanaged resource {0} was accessed.\
         This feature is deprecated, and support may be removed in future versions.
 
-UIMA_aggregate_param_no_overrides__WARNING = The aggregate text analysis engine "{0}" has declared the parameter {1}, but has not declared any overrides.\
-  This usage is deprecated.
+UIMA_external_overrides_load__CONFIG = Loading external overrides from file "{0}"
 
-UIMA_external_overrides_load__CONFIG = Loading external overrides from {0} "{1}"
-
-UIMA_external_override_ignored__WARNING = Key "{0}" already in use ... ignoring value "{1}"
+UIMA_external_override_ignored__CONFIG = Key "{0}" already in use ... ignoring value "{1}"
 
 UIMA_parameter_set__CONFIG = Parameter "{0}" in context {1} = "{2}" {3}
 

Modified: uima/uimaj/trunk/uimaj-core/src/main/resources/resourceSpecifierSchema.xsd
URL: http://svn.apache.org/viewvc/uima/uimaj/trunk/uimaj-core/src/main/resources/resourceSpecifierSchema.xsd?rev=1346479&r1=1346478&r2=1346479&view=diff
==============================================================================
--- uima/uimaj/trunk/uimaj-core/src/main/resources/resourceSpecifierSchema.xsd (original)
+++ uima/uimaj/trunk/uimaj-core/src/main/resources/resourceSpecifierSchema.xsd Tue Jun  5 17:20:18 2012
@@ -215,7 +215,7 @@
 						<sequence>
 							<element name="parameter" type="string" minOccurs="0" maxOccurs="unbounded" />
 	  					</sequence>
-						<!-- Use of tag "param" is deprectated but permitted for backwards compatibility -->
+						<!-- Use of tag "param" is deprecated but permitted for backwards compatibility -->
 						<sequence>
 							<element name="param" type="string" minOccurs="0" maxOccurs="unbounded" />
 	  					</sequence>
@@ -500,7 +500,6 @@
 			<element name="modifiesCas" minOccurs="0" type="boolean"/>
 			<element name="multipleDeploymentAllowed" minOccurs="0" type="boolean"/>
 			<element name="outputsNewCASes" minOccurs="0" type="boolean"/>
-			<element name="externalOverrideSettings" minOccurs="0" type="rs:ExternalOverrideSettingsType"/>
 		</sequence>
 	</complexType>
 	
@@ -579,13 +578,6 @@
 			</element>
 		</sequence>
 	</complexType>
-        
-	<complexType name="ExternalOverrideSettingsType">
-		<all>
-			<element name="imports" type="rs:ImportSequenceType" minOccurs="0" />
-			<element name="settings" type="string" minOccurs="0" />
-		</all>
-	</complexType>
 
 <!-- Top Level Element Definitions for Collection Processing Component Specifiers -->
 

Modified: uima/uimaj/trunk/uimaj-core/src/test/java/org/apache/uima/analysis_engine/impl/AnalysisEngineDescription_implTest.java
URL: http://svn.apache.org/viewvc/uima/uimaj/trunk/uimaj-core/src/test/java/org/apache/uima/analysis_engine/impl/AnalysisEngineDescription_implTest.java?rev=1346479&r1=1346478&r2=1346479&view=diff
==============================================================================
--- uima/uimaj/trunk/uimaj-core/src/test/java/org/apache/uima/analysis_engine/impl/AnalysisEngineDescription_implTest.java (original)
+++ uima/uimaj/trunk/uimaj-core/src/test/java/org/apache/uima/analysis_engine/impl/AnalysisEngineDescription_implTest.java Tue Jun  5 17:20:18 2012
@@ -53,16 +53,13 @@ import org.apache.uima.resource.metadata
 import org.apache.uima.resource.metadata.ConfigurationGroup;
 import org.apache.uima.resource.metadata.ConfigurationParameter;
 import org.apache.uima.resource.metadata.ConfigurationParameterSettings;
-import org.apache.uima.resource.metadata.ExternalOverrideSettings;
 import org.apache.uima.resource.metadata.ExternalResourceBinding;
-import org.apache.uima.resource.metadata.FeatureDescription;
 import org.apache.uima.resource.metadata.FsIndexDescription;
 import org.apache.uima.resource.metadata.FsIndexKeyDescription;
 import org.apache.uima.resource.metadata.MetaDataObject;
 import org.apache.uima.resource.metadata.NameValuePair;
 import org.apache.uima.resource.metadata.OperationalProperties;
 import org.apache.uima.resource.metadata.ResourceManagerConfiguration;
-import org.apache.uima.resource.metadata.ResourceMetaData;
 import org.apache.uima.resource.metadata.TypeDescription;
 import org.apache.uima.resource.metadata.TypePriorities;
 import org.apache.uima.resource.metadata.TypePriorityList;
@@ -116,7 +113,7 @@ public class AnalysisEngineDescription_i
       
       TypeSystemDescription typeSystem = new TypeSystemDescription_impl();
       TypeDescription type1 = typeSystem.addType("Fake", "<b>Fake</b> Type", "Annotation");
-      FeatureDescription feature1 = type1.addFeature("TestFeature", "For Testing Only",
+      type1.addFeature("TestFeature", "For Testing Only",
               CAS.TYPE_NAME_STRING);
       TypeDescription enumType = typeSystem.addType("EnumType", "Test Enumerated Type",
               "uima.cas.String");
@@ -368,7 +365,7 @@ public class AnalysisEngineDescription_i
     Map<String, MetaDataObject> delegateMap = testAgg.getDelegateAnalysisEngineSpecifiersWithImports();
     Import_impl delegateImport = new Import_impl();
     delegateImport.setLocation(JUnitExtension.getFile(
-            "TextAnalysisEngineImplTest/TestPrimitiveTae1.xml").toURL().toString());
+            "TextAnalysisEngineImplTest/TestPrimitiveTae1.xml").toURI().toURL().toString());
     delegateMap.put("key", delegateImport);
 
     // test that import is resolved
@@ -560,37 +557,4 @@ public class AnalysisEngineDescription_i
     Assert.assertFalse(ex.getMessage().startsWith("EXCEPTION MESSAGE LOCALIZATION FAILED"));
   }
   
-  public void testClone() throws Exception {
-    try {
-      XMLInputSource in = new XMLInputSource(JUnitExtension
-              .getFile("TextAnalysisEngineImplTest/AnnotatorWithExternalOverrides.xml"));
-      AnalysisEngineDescription desc = UIMAFramework.getXMLParser().parseAnalysisEngineDescription(in);
-      AnalysisEngineDescription descClone = (AnalysisEngineDescription) desc.clone();
-      assertEquals(desc.getImplementationName(), descClone.getImplementationName());
-      
-      ResourceMetaData metadata = desc.getMetaData();
-      ExternalOverrideSettings eos = ((AnalysisEngineMetaData)metadata).getOperationalProperties().getExternalOverrideSettings();
-      String descSettings = eos.getSettings();
-
-      ResourceMetaData metadataClone = descClone.getMetaData();
-      ExternalOverrideSettings eosClone = ((AnalysisEngineMetaData)metadataClone).getOperationalProperties().getExternalOverrideSettings();
-      String descSettingsClone = eosClone.getSettings();
-      assertEquals(descSettings, descSettingsClone);
-  
-      // Check that imports can be found and settings can be loaded 
-      ResourceManager resMgr = UIMAFramework.newDefaultResourceManager();
-      eos.resolveImports(resMgr);
-      eosClone.resolveImports(resMgr);
-      
-      // Check that a nested inline expression can depend of an imported value
-      String val1 = eosClone.resolveExternalName("import-value");
-      String val2 = eosClone.resolveExternalName("inline-value");
-      assertNotNull(val1);
-      assertEquals(val1, val2);
-      
-    } catch (Exception e) {
-      JUnitExtension.handleException(e);
-    }
-  }
-
 }

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=1346479&r1=1346478&r2=1346479&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 Tue Jun  5 17:20:18 2012
@@ -20,6 +20,7 @@
 package org.apache.uima.analysis_engine.impl;
 
 import java.io.File;
+import java.io.FileInputStream;
 import java.io.FileOutputStream;
 import java.io.IOException;
 import java.util.Arrays;
@@ -56,6 +57,7 @@ import org.apache.uima.cas.Type;
 import org.apache.uima.cas.TypeSystem;
 import org.apache.uima.cas.admin.FSIndexComparator;
 import org.apache.uima.cas.text.AnnotationFS;
+import org.apache.uima.resource.Resource;
 import org.apache.uima.resource.ResourceInitializationException;
 import org.apache.uima.resource.ResourceManager;
 import org.apache.uima.resource.impl.URISpecifier_impl;
@@ -82,8 +84,10 @@ import org.apache.uima.resource.metadata
 import org.apache.uima.test.junit_extension.JUnitExtension;
 import org.apache.uima.util.InvalidXMLException;
 import org.apache.uima.util.Level;
+import org.apache.uima.util.Settings;
 import org.apache.uima.util.XMLInputSource;
 import org.apache.uima.util.impl.ProcessTrace_impl;
+import org.apache.uima.util.impl.Settings_impl;
 
 /**
  * Tests the TextAnalysisEngine_impl class.
@@ -158,7 +162,7 @@ public class AnalysisEngine_implTest ext
       Assert.assertTrue(result);
 
       // try some descriptors that are invalid due to config. param problems
-      for (int i = 1; i <= 13; i++) {
+      for (int i = 1; i <= 14; i++) {
         _testInvalidDescriptor(JUnitExtension
                 .getFile("TextAnalysisEngineImplTest/InvalidConfigParams" + i + ".xml"));
       }
@@ -187,11 +191,10 @@ public class AnalysisEngine_implTest ext
               "StringParam");
       Assert.assertEquals("en", strVal3);
 
-      Assert.assertEquals("en", strVal2);
       Integer intVal1 = (Integer) delegate1.getUimaContext().getConfigParameterValue("en",
               "IntegerParam");
       Assert.assertEquals(100, intVal1.intValue());
-      Integer intVal2 = (Integer) delegate1.getUimaContext().getConfigParameterValue("en",
+      Integer intVal2 = (Integer) delegate2.getUimaContext().getConfigParameterValue("en",
               "IntegerParam");
       Assert.assertEquals(100, intVal2.intValue());
       Integer intVal3 = (Integer) flowController.getUimaContext().getConfigParameterValue("en",
@@ -252,6 +255,14 @@ public class AnalysisEngine_implTest ext
 
       ae.destroy();
       
+   // anotherdescriptor with configuration parameter overrides (this time no groups)
+      in = new XMLInputSource(JUnitExtension
+              .getFile("TextAnalysisEngineImplTest/AggregateTaeWithConfigParamOverrides2.xml"));
+
+      desc = UIMAFramework.getXMLParser().parseAnalysisEngineDescription(in);
+      ae = new AggregateAnalysisEngine_impl();
+      ae.initialize(desc, Collections.EMPTY_MAP);
+      
       // test an aggregate TAE containing a CAS Consumer
       in = new XMLInputSource(JUnitExtension
               .getFile("TextAnalysisEngineImplTest/AggregateTaeWithCasConsumer.xml"));
@@ -299,23 +310,41 @@ public class AnalysisEngine_implTest ext
       Assert.assertEquals("AggregateParam3b", ann2_groupBParamBC);
 
       ae.destroy();
-      
-      // try a descriptor with configuration parameter external overrides - should work
-      // Use an aggregate so the annotator can run tests based on the context.
-      in = new XMLInputSource(JUnitExtension.getFile("TextAnalysisEngineImplTest/AggregateWithExternalOverrides.xml"));
+
+      // descriptor with configuration parameter external overrides
+      // implicitly load settings values from the system property UimaExternalSettings
+      String resDir = "src/test/resources/TextAnalysisEngineImplTest/";
+      System.setProperty("UimaExternalOverrides", resDir+"testExternalOverride.settings,"+resDir+"testExternalOverride2.settings");
+      in = new XMLInputSource(JUnitExtension.getFile("TextAnalysisEngineImplTest/AnnotatorWithExternalOverrides.xml"));
       desc = UIMAFramework.getXMLParser().parseAnalysisEngineDescription(in);
-      ae = new AggregateAnalysisEngine_impl();
-      ae.initialize(desc, null);
-      delegate1 = (PrimitiveAnalysisEngine_impl) ae._getASB().getComponentAnalysisEngines().get("ExternalOverrides");
-      String[] arrayParam = (String[]) delegate1.getUimaContext().getConfigParameterValue("StringArrayParam");
+      ae1 = new PrimitiveAnalysisEngine_impl();
+      ae1.initialize(desc, null);
+      String[] arrayParam = (String[]) ae1.getUimaContext().getConfigParameterValue("StringArrayParam");
       Assert.assertNotNull(arrayParam);
       Assert.assertEquals(5, arrayParam.length);
-      String[] expect = { "prefix_from_import", "-", "suffix_from_inline", "->", "prefix_from_import-suffix_from_inline" };
+      String[] expect = { "Prefix", "-", "Suffix", "->", "Prefix-Suffix" };
       Assert.assertTrue(Arrays.equals(expect, arrayParam));
-      Integer[] intArr = (Integer[]) delegate1.getUimaContext().getConfigParameterValue("IntegerArrayParam");
+      Integer[] intArr = (Integer[]) ae1.getUimaContext().getConfigParameterValue("IntegerArrayParam");
       Assert.assertEquals(4, intArr.length);
-      Float[] floats = (Float[]) delegate1.getUimaContext().getConfigParameterValue("FloatArrayParam");
+      Float[] floats = (Float[]) ae1.getUimaContext().getConfigParameterValue("FloatArrayParam");
       Assert.assertTrue(floats != null && floats.length == 0);       // Should be an empty array
+      System.clearProperty("UimaExternalOverrides");
+      
+      ae1.destroy();
+      
+      // aggregate with delegate with configuration parameter external overrides
+      // use aggregate so the annotator can run tests based on the context.
+      // load settings explicitly, ignoring system property
+      System.setProperty("UimaExternalOverrides", "missing file");  // Will fail if used
+      in = new XMLInputSource(JUnitExtension.getFile("TextAnalysisEngineImplTest/AggregateWithExternalOverrides.xml"));
+      desc = UIMAFramework.getXMLParser().parseAnalysisEngineDescription(in);
+      ae = new AggregateAnalysisEngine_impl();
+      Map<String,Object> additionalParams = new HashMap<String,Object>();
+      Settings extSettings = new Settings_impl();
+      extSettings.load(new FileInputStream(new File(resDir,"testExternalOverride2.settings")));
+      additionalParams.put(Resource.PARAM_EXTERNAL_OVERRIDE_SETTINGS, extSettings);
+      ae.initialize(desc, additionalParams);
+      System.clearProperty("UimaExternalOverrides");
       
       ae1.destroy();
       
@@ -542,6 +571,7 @@ public class AnalysisEngine_implTest ext
       p2.setName("StringParam");
       p2.setDescription("parameter with String data type");
       p2.setType(ConfigurationParameter.TYPE_STRING);
+      p2.setOverrides(new String[] {"Test/StringParam"});
       aggDesc.getMetaData().getConfigurationParameterDeclarations().setConfigurationParameters(
               new ConfigurationParameter[] { p2 });
       aggDesc.getMetaData().getConfigurationParameterSettings().setParameterSettings(
@@ -558,43 +588,7 @@ public class AnalysisEngine_implTest ext
 
       // test again
       assertEquals("Test4", TestAnnotator.stringParamValue);
-
-      // reconfigure WITHOUT setting that parameter
-      aggAe.reconfigure();
-      // test again
-      assertEquals("Test4", TestAnnotator.stringParamValue);
-
-      // test aggregate TAE that does NOT override parameter
-      primitiveDesc.getMetaData().getConfigurationParameterSettings().setParameterSettings(
-              new NameValuePair[] { new NameValuePair_impl("StringParam", "Test1") });
-      AnalysisEngineDescription aggDesc2 = new AnalysisEngineDescription_impl();
-      aggDesc2.setFrameworkImplementation(Constants.JAVA_FRAMEWORK_NAME);
-      aggDesc2.setPrimitive(false);
-      aggDesc2.getMetaData().setName("Test Aggregate TAE");
-      aggDesc2.getDelegateAnalysisEngineSpecifiersWithImports().put("Test", primitiveDesc);
-      FixedFlow_impl flow2 = new FixedFlow_impl();
-      flow2.setFixedFlow(new String[] { "Test" });
-      aggDesc2.getAnalysisEngineMetaData().setFlowConstraints(flow2);
-      ConfigurationParameter p3 = new ConfigurationParameter_impl();
-      p3.setName("IntParam");
-      p3.setDescription("parameter with Integer data type");
-      p3.setType(ConfigurationParameter.TYPE_INTEGER);
-      aggDesc2.getMetaData().getConfigurationParameterDeclarations().setConfigurationParameters(
-              new ConfigurationParameter[] { p3 });
-      aggDesc2.getMetaData().getConfigurationParameterSettings().setParameterSettings(
-              new NameValuePair[] { new NameValuePair_impl("IntParam", Integer.valueOf(42)) });
-      // instantiate TextAnalysisEngine
-      AggregateAnalysisEngine_impl aggAe2 = new AggregateAnalysisEngine_impl();
-      aggAe2.initialize(aggDesc2, null);
-
-      // call process - this should generate an event with a resource name equal
-      // to the value of StringParam
-      assertEquals("Test1", TestAnnotator.stringParamValue);
-      // reconfigure
-      aggAe2.setConfigParameterValue("IntParam", Integer.valueOf(0));
-      aggAe2.reconfigure();
-      // test again - should not have changed
-      assertEquals("Test1", TestAnnotator.stringParamValue);
+      
     } catch (Exception e) {
       JUnitExtension.handleException(e);
     }

Modified: uima/uimaj/trunk/uimaj-core/src/test/java/org/apache/uima/analysis_engine/impl/MultiprocessingAnalysisEngine_implTest.java
URL: http://svn.apache.org/viewvc/uima/uimaj/trunk/uimaj-core/src/test/java/org/apache/uima/analysis_engine/impl/MultiprocessingAnalysisEngine_implTest.java?rev=1346479&r1=1346478&r2=1346479&view=diff
==============================================================================
--- uima/uimaj/trunk/uimaj-core/src/test/java/org/apache/uima/analysis_engine/impl/MultiprocessingAnalysisEngine_implTest.java (original)
+++ uima/uimaj/trunk/uimaj-core/src/test/java/org/apache/uima/analysis_engine/impl/MultiprocessingAnalysisEngine_implTest.java Tue Jun  5 17:20:18 2012
@@ -370,6 +370,7 @@ public class MultiprocessingAnalysisEngi
       p2.setName("StringParam");
       p2.setDescription("parameter with String data type");
       p2.setType(ConfigurationParameter.TYPE_STRING);
+      p2.setOverrides(new String[] {"Test/StringParam"});
       aggDesc.getMetaData().getConfigurationParameterDeclarations().setConfigurationParameters(
               new ConfigurationParameter[] { p2 });
       aggDesc.getMetaData().getConfigurationParameterSettings().setParameterSettings(

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=1346479&r1=1346478&r2=1346479&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 Tue Jun  5 17:20:18 2012
@@ -67,11 +67,11 @@ public class TestAnnotator2 extends CasA
     if ("/ExternalOverrides/".equals(contextName)) {
       String actual = null;
       try {
-        actual = aContext.getExternalParameterValue("test.externalStringArray");
+        actual = aContext.getExternalParameterValue("test.externalFloatArray");
       } catch (ResourceConfigurationException e) {
         Assert.fail(e.getMessage());
       }
-      String expected = "[prefix_from_import,-,suffix_from_inline,->,prefix_from_import-suffix_from_inline]";
+      String expected = "[]";
       Assert.assertEquals(expected, actual);
       
       // Test a stand-alone settings object

Modified: uima/uimaj/trunk/uimaj-core/src/test/resources/AnnotatorContextTest/AggregateTaeWithConfigParamOverrides.xml
URL: http://svn.apache.org/viewvc/uima/uimaj/trunk/uimaj-core/src/test/resources/AnnotatorContextTest/AggregateTaeWithConfigParamOverrides.xml?rev=1346479&r1=1346478&r2=1346479&view=diff
==============================================================================
--- uima/uimaj/trunk/uimaj-core/src/test/resources/AnnotatorContextTest/AggregateTaeWithConfigParamOverrides.xml (original)
+++ uima/uimaj/trunk/uimaj-core/src/test/resources/AnnotatorContextTest/AggregateTaeWithConfigParamOverrides.xml Tue Jun  5 17:20:18 2012
@@ -48,6 +48,9 @@
     <name>StringParam</name>
     <description/>
     <type>String</type>
+    <overrides>
+      <parameter>Annotator1/StringParam</parameter>
+    </overrides>
   </configurationParameter>
 </configurationGroup>
 

Modified: uima/uimaj/trunk/uimaj-core/src/test/resources/TextAnalysisEngineImplTest/AggregateTaeWithConfigParamOverrides.xml
URL: http://svn.apache.org/viewvc/uima/uimaj/trunk/uimaj-core/src/test/resources/TextAnalysisEngineImplTest/AggregateTaeWithConfigParamOverrides.xml?rev=1346479&r1=1346478&r2=1346479&view=diff
==============================================================================
--- uima/uimaj/trunk/uimaj-core/src/test/resources/TextAnalysisEngineImplTest/AggregateTaeWithConfigParamOverrides.xml (original)
+++ uima/uimaj/trunk/uimaj-core/src/test/resources/TextAnalysisEngineImplTest/AggregateTaeWithConfigParamOverrides.xml Tue Jun  5 17:20:18 2012
@@ -58,12 +58,17 @@
     </overrides>
   </configurationParameter>
   
-  <!-- Implicit override -->
+  <!-- Array overrides (was testing deprecated Implicit override) -->
   <configurationParameter>
     <name>StringArrayParam</name>
     <description/>
     <type>String</type>
     <multiValued>true</multiValued>
+    <overrides>
+      <parameter>Annotator1/StringArrayParam</parameter>
+      <parameter>Annotator2/StringArrayParam</parameter>
+      <parameter>MyFlowController/StringArrayParam</parameter>
+    </overrides>
   </configurationParameter>
 
   <!-- Override multiple params -->

Modified: uima/uimaj/trunk/uimaj-core/src/test/resources/TextAnalysisEngineImplTest/AggregateTaeWithConfigParamOverrides2.xml
URL: http://svn.apache.org/viewvc/uima/uimaj/trunk/uimaj-core/src/test/resources/TextAnalysisEngineImplTest/AggregateTaeWithConfigParamOverrides2.xml?rev=1346479&r1=1346478&r2=1346479&view=diff
==============================================================================
--- uima/uimaj/trunk/uimaj-core/src/test/resources/TextAnalysisEngineImplTest/AggregateTaeWithConfigParamOverrides2.xml (original)
+++ uima/uimaj/trunk/uimaj-core/src/test/resources/TextAnalysisEngineImplTest/AggregateTaeWithConfigParamOverrides2.xml Tue Jun  5 17:20:18 2012
@@ -56,12 +56,17 @@
     </overrides>
   </configurationParameter>
   
-  <!-- Implicit override -->
+  <!-- Array overrides (was testing deprecated Implicit override) -->
   <configurationParameter>
     <name>StringArrayParam</name>
     <description/>
     <type>String</type>
     <multiValued>true</multiValued>
+    <overrides>
+      <parameter>Annotator1/StringArrayParam</parameter>
+      <parameter>Annotator2/StringArrayParam</parameter>
+      <parameter>MyFlowController/StringArrayParam</parameter>
+    </overrides>
   </configurationParameter>
 
   <!-- Override multiple params -->

Modified: 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=1346479&r1=1346478&r2=1346479&view=diff
==============================================================================
--- uima/uimaj/trunk/uimaj-core/src/test/resources/TextAnalysisEngineImplTest/AggregateWithExternalOverrides.xml (original)
+++ uima/uimaj/trunk/uimaj-core/src/test/resources/TextAnalysisEngineImplTest/AggregateWithExternalOverrides.xml Tue Jun  5 17:20:18 2012
@@ -50,17 +50,6 @@
       <modifiesCas>true</modifiesCas>
       <multipleDeploymentAllowed>true</multipleDeploymentAllowed>
       <outputsNewCASes>false</outputsNewCASes>
-      <externalOverrideSettings>
-        <settings>
-          inline-suffix    suffix_from_inline
-          test.externalStringArray = [${import-prefix},\-,${inline-suffix},->,${import-value}]
-          test.externalIntegerArray : [1 , 22 , 3\33,4444]     
-        </settings>
-        <imports>
-          <import location="testExternalOverride.settings"/>
-          <import name="TextAnalysisEngineImplTest.testExternalOverride2"/>
-        </imports>
-      </externalOverrideSettings>
     </operationalProperties>
   </analysisEngineMetaData>
   <resourceManagerConfiguration/>

Modified: uima/uimaj/trunk/uimaj-core/src/test/resources/TextAnalysisEngineImplTest/AggregateWithUnknownRemoteComponent.xml
URL: http://svn.apache.org/viewvc/uima/uimaj/trunk/uimaj-core/src/test/resources/TextAnalysisEngineImplTest/AggregateWithUnknownRemoteComponent.xml?rev=1346479&r1=1346478&r2=1346479&view=diff
==============================================================================
--- uima/uimaj/trunk/uimaj-core/src/test/resources/TextAnalysisEngineImplTest/AggregateWithUnknownRemoteComponent.xml (original)
+++ uima/uimaj/trunk/uimaj-core/src/test/resources/TextAnalysisEngineImplTest/AggregateWithUnknownRemoteComponent.xml Tue Jun  5 17:20:18 2012
@@ -61,12 +61,15 @@
     </overrides>
   </configurationParameter>
   
-  <!-- Implicit override -->
+  <!-- Another Explicit override (was testing deprecated Implicit override) -->
   <configurationParameter>
     <name>StringArrayParam</name>
     <description/>
     <type>String</type>
     <multiValued>true</multiValued>
+    <overrides>
+      <parameter>Annotator1/StringArrayParam</parameter>
+    </overrides>
   </configurationParameter>
 
   <!-- Override multiple params -->

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=1346479&r1=1346478&r2=1346479&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 Tue Jun  5 17:20:18 2012
@@ -147,16 +147,6 @@
       <modifiesCas>true</modifiesCas>
       <multipleDeploymentAllowed>true</multipleDeploymentAllowed>
       <outputsNewCASes>false</outputsNewCASes>
-      <externalOverrideSettings>
-        <settings>
-          inline-suffix    suffix_from_inline
-          inline-value     ${import-prefix}-suffix_from_inline
-        </settings>
-        <imports>
-          <import location="testExternalOverride.settings"/>
-          <import name="TextAnalysisEngineImplTest.testExternalOverride2"/>
-        </imports>
-      </externalOverrideSettings>
     </operationalProperties>
   </analysisEngineMetaData>
 </taeDescription>

Added: uima/uimaj/trunk/uimaj-core/src/test/resources/TextAnalysisEngineImplTest/InvalidConfigParams14.xml
URL: http://svn.apache.org/viewvc/uima/uimaj/trunk/uimaj-core/src/test/resources/TextAnalysisEngineImplTest/InvalidConfigParams14.xml?rev=1346479&view=auto
==============================================================================
--- uima/uimaj/trunk/uimaj-core/src/test/resources/TextAnalysisEngineImplTest/InvalidConfigParams14.xml (added)
+++ uima/uimaj/trunk/uimaj-core/src/test/resources/TextAnalysisEngineImplTest/InvalidConfigParams14.xml Tue Jun  5 17:20:18 2012
@@ -0,0 +1,73 @@
+<?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 configuration groups. -->
+
+<taeDescription xmlns="http://uima.apache.org/resourceSpecifier">
+<frameworkImplementation>org.apache.uima.java</frameworkImplementation>
+<primitive>false</primitive>
+
+<delegateAnalysisEngineSpecifiers>
+<delegateAnalysisEngine key="Annotator1">
+<import location="AnnotatorWithConfigurationParameters.xml"/>
+</delegateAnalysisEngine>
+
+<delegateAnalysisEngine key="Annotator2">
+<import location="AnnotatorWithConfigurationParameters.xml"/>
+</delegateAnalysisEngine>
+</delegateAnalysisEngineSpecifiers> 
+
+<analysisEngineMetaData>
+<name>Aggregate TAE with Invalid Configuration Parameters</name>
+<description>For testing configuration parameters.</description><version>1.0</version>
+<vendor>The Apache Software Foundation</vendor>
+
+<!-- Configuration Parameter Definitions -->
+<configurationParameters> 
+
+  <!-- ERROR - No overrides -->
+  <configurationParameter>
+    <name>AggregateParam</name>
+    <description/>
+    <type>String</type>
+    <overrides>
+    </overrides>
+  </configurationParameter>
+</configurationParameters>
+  
+
+<flowConstraints>
+  <fixedFlow>
+    <node>Annotator1</node>
+    <node>Annotator2</node>
+  </fixedFlow>
+</flowConstraints>
+
+<!-- Capabilities: Inputs and Outputs -->
+<capabilities>
+<capability>
+<inputs/>
+<outputs/>
+<languagesSupported/>
+</capability>
+</capabilities>
+
+</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=1346479&r1=1346478&r2=1346479&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 Tue Jun  5 17:20:18 2012
@@ -1,2 +1,5 @@
-import-prefix    prefix_from_import
+prefix    Prefix
+suffix    Suffix
+test.externalStringArray = [${prefix},\-,${suffix},->,${prefix-suffix}]
+test.externalIntegerArray : [1 , 22 , 3\33,4444]  
 

Modified: uima/uimaj/trunk/uimaj-core/src/test/resources/TextAnalysisEngineImplTest/testExternalOverride2.settings
URL: http://svn.apache.org/viewvc/uima/uimaj/trunk/uimaj-core/src/test/resources/TextAnalysisEngineImplTest/testExternalOverride2.settings?rev=1346479&r1=1346478&r2=1346479&view=diff
==============================================================================
--- uima/uimaj/trunk/uimaj-core/src/test/resources/TextAnalysisEngineImplTest/testExternalOverride2.settings (original)
+++ uima/uimaj/trunk/uimaj-core/src/test/resources/TextAnalysisEngineImplTest/testExternalOverride2.settings Tue Jun  5 17:20:18 2012
@@ -1,6 +1,5 @@
-# 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}
+prefix-suffix     Prefix-${suffix}
 # The following key should have already been set by an earlier import
-inline-suffix = should be ignored
+suffix = should be ignored
 # Empty array
 test.externalFloatArray =  []