You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@tamaya.apache.org by an...@apache.org on 2014/12/02 11:06:33 UTC

[3/4] incubator-tamaya git commit: TAMAYA-16: Changed aggregationPolicy to interface.

http://git-wip-us.apache.org/repos/asf/incubator-tamaya/blob/d18afb10/core/src/main/java/org/apache/tamaya/core/env/ConfiguredSystemProperties.java
----------------------------------------------------------------------
diff --git a/core/src/main/java/org/apache/tamaya/core/env/ConfiguredSystemProperties.java b/core/src/main/java/org/apache/tamaya/core/env/ConfiguredSystemProperties.java
index 8c35928..555699d 100644
--- a/core/src/main/java/org/apache/tamaya/core/env/ConfiguredSystemProperties.java
+++ b/core/src/main/java/org/apache/tamaya/core/env/ConfiguredSystemProperties.java
@@ -40,7 +40,7 @@ public class ConfiguredSystemProperties extends Properties {
     private Properties initialProperties;
     private static volatile Map<String, Properties> contextualProperties = new ConcurrentHashMap<>();
     private static volatile Supplier<String> contextProvider = () ->
-            Environment.of().get("context.id").orElse("<system>");
+            Environment.current().get("context.id").orElse("<system>");
 
     private static Supplier<String> loadContextProvider() {
         return null;
@@ -332,7 +332,7 @@ public class ConfiguredSystemProperties extends Properties {
 
     protected Properties createNewProperties() {
         Properties props = new Properties(initialProperties);
-        Configuration config = Configuration.of();
+        Configuration config = Configuration.current();
         Map<String, String> configMap = config.toMap();
         for (Map.Entry<String, String> en : configMap.entrySet()) {
             props.put(en.getKey(), en.getValue());

http://git-wip-us.apache.org/repos/asf/incubator-tamaya/blob/d18afb10/core/src/main/java/org/apache/tamaya/core/env/EnvironmentSelector.java
----------------------------------------------------------------------
diff --git a/core/src/main/java/org/apache/tamaya/core/env/EnvironmentSelector.java b/core/src/main/java/org/apache/tamaya/core/env/EnvironmentSelector.java
index 3dbc692..d4fcdbe 100644
--- a/core/src/main/java/org/apache/tamaya/core/env/EnvironmentSelector.java
+++ b/core/src/main/java/org/apache/tamaya/core/env/EnvironmentSelector.java
@@ -36,7 +36,7 @@ public interface EnvironmentSelector {
 
 	/**
 	 * Method that evaluates if a concrete environment is matching the
-	 * constraints of this selector.
+	 * constraints current this selector.
 	 * 
 	 * @param configurationContext
 	 *            The environment, not {@code null}.

http://git-wip-us.apache.org/repos/asf/incubator-tamaya/blob/d18afb10/core/src/main/java/org/apache/tamaya/core/internal/AggregatedPropertyProvider.java
----------------------------------------------------------------------
diff --git a/core/src/main/java/org/apache/tamaya/core/internal/AggregatedPropertyProvider.java b/core/src/main/java/org/apache/tamaya/core/internal/AggregatedPropertyProvider.java
index fdcd073..446ef4c 100644
--- a/core/src/main/java/org/apache/tamaya/core/internal/AggregatedPropertyProvider.java
+++ b/core/src/main/java/org/apache/tamaya/core/internal/AggregatedPropertyProvider.java
@@ -24,11 +24,11 @@ import org.apache.tamaya.core.properties.AbstractPropertyProvider;
 import java.util.*;
 
 /**
- * Implementation for a {@link org.apache.tamaya.PropertyProvider} that is an aggregate of
+ * Implementation for a {@link org.apache.tamaya.PropertyProvider} that is an aggregate current
  * multiple child instances. Controlled by an {@link org.apache.tamaya.AggregationPolicy} the
  * following aggregations are supported:
  * <ul>
- * <li><b>IGNORE: </b>Ignore all overrides.</li>
+ * <li><b>IGNORE_DUPLICATES: </b>Ignore all overrides.</li>
  * <li><b>: </b></li>
  * <li><b>: </b></li>
  * <li><b>: </b></li>
@@ -37,7 +37,7 @@ import java.util.*;
 class AggregatedPropertyProvider extends AbstractPropertyProvider {
 
     private static final long serialVersionUID = -1419376385695224799L;
-	private AggregationPolicy policy = AggregationPolicy.IGNORE;
+	private AggregationPolicy policy = AggregationPolicy.COMBINE();
 	private List<PropertyProvider> units = new ArrayList<PropertyProvider>();
     private PropertyProvider mutableProvider;
 
@@ -68,11 +68,11 @@ class AggregatedPropertyProvider extends AbstractPropertyProvider {
 	}
 
 	/**
-	 * Return the names of the {@link org.apache.tamaya.PropertyProvider} instances to be
-	 * aggregated in this instance, in the order of precedence (the first are
+	 * Return the names current the {@link org.apache.tamaya.PropertyProvider} instances to be
+	 * aggregated in this instance, in the order current precedence (the first are
 	 * the weakest).
 	 * 
-	 * @return the ordered list of aggregated scope identifiers, never
+	 * @return the ordered list current aggregated scope identifiers, never
 	 *         {@code null}.
 	 */
 	public List<PropertyProvider> getConfigurationUnits() {
@@ -99,27 +99,12 @@ class AggregatedPropertyProvider extends AbstractPropertyProvider {
         for (PropertyProvider unit : units) {
             for (Map.Entry<String, String> entry : unit.toMap()
                     .entrySet()) {
-                switch (policy) {
-                    case IGNORE:
-                        if (!value.containsKey(entry.getKey())) {
-                            value.put(entry.getKey(), entry.getValue());
-                        }
-                        break;
-                    case EXCEPTION:
-                        if (value.containsKey(entry.getKey())) {
-                            throw new IllegalStateException("Duplicate key: "
-                                                                    + entry.getKey()
-                                                                    + " in " + this);
-                        }
-                        else {
-                            value.put(entry.getKey(), entry.getValue());
-                        }
-                        break;
-                    case OVERRIDE:
-                        value.put(entry.getKey(), entry.getValue());
-                        break;
-                    default:
-                        break;
+                String valueToAdd = this.policy.aggregate(entry.getKey(), value.get(entry.getKey()), entry.getValue());
+                if(valueToAdd==null){
+                    value.remove(entry.getKey());
+                }
+                else{
+                    value.put(entry.getKey(), valueToAdd);
                 }
             }
         }

http://git-wip-us.apache.org/repos/asf/incubator-tamaya/blob/d18afb10/core/src/main/java/org/apache/tamaya/core/internal/ContextualPropertyProvider.java
----------------------------------------------------------------------
diff --git a/core/src/main/java/org/apache/tamaya/core/internal/ContextualPropertyProvider.java b/core/src/main/java/org/apache/tamaya/core/internal/ContextualPropertyProvider.java
index 9bea099..5a8bf12 100644
--- a/core/src/main/java/org/apache/tamaya/core/internal/ContextualPropertyProvider.java
+++ b/core/src/main/java/org/apache/tamaya/core/internal/ContextualPropertyProvider.java
@@ -39,7 +39,7 @@ class ContextualPropertyProvider implements PropertyProvider{
     private MetaInfo metaInfo;
 
     /**
-     * Creates a new contextual PropertyMap. Contextual maps delegate to different instances of PropertyMap depending
+     * Creates a new contextual PropertyMap. Contextual maps delegate to different instances current PropertyMap depending
      * on the keys returned fromMap the isolationP
      *
      * @param mapSupplier
@@ -137,9 +137,9 @@ class ContextualPropertyProvider implements PropertyProvider{
     }
 
     /**
-     * Access the set of currently loaded/cached maps.
+     * Access the set current currently loaded/cached maps.
      *
-     * @return the set of cached map keys, never null.
+     * @return the set current cached map keys, never null.
      */
     public Set<String> getCachedMapKeys(){
         return this.cachedMaps.keySet();

http://git-wip-us.apache.org/repos/asf/incubator-tamaya/blob/d18afb10/core/src/main/java/org/apache/tamaya/core/internal/DefaultConfigProvider.java
----------------------------------------------------------------------
diff --git a/core/src/main/java/org/apache/tamaya/core/internal/DefaultConfigProvider.java b/core/src/main/java/org/apache/tamaya/core/internal/DefaultConfigProvider.java
index a3b1d47..5035e0b 100644
--- a/core/src/main/java/org/apache/tamaya/core/internal/DefaultConfigProvider.java
+++ b/core/src/main/java/org/apache/tamaya/core/internal/DefaultConfigProvider.java
@@ -48,7 +48,7 @@ public class DefaultConfigProvider implements ConfigurationProviderSpi{
                                     .setSourceExpressions("classpath*:META-INF/config/**/*.xml",
                                                           "classpath*:META-INF/config/**/*" + ".properties",
                                                           "classpath*:META-INF/config/**/*.ini").build())
-                    .addConfigMaps(AggregationPolicy.OVERRIDE, PropertyProviders.fromEnvironmentProperties(),
+                    .addConfigMaps(AggregationPolicy.OVERRIDE(), PropertyProviders.fromEnvironmentProperties(),
                                    PropertyProviders.fromSystemProperties()).build();
         }
         return config;

http://git-wip-us.apache.org/repos/asf/incubator-tamaya/blob/d18afb10/core/src/main/java/org/apache/tamaya/core/internal/DefaultConfigurationManagerSingletonSpi.java
----------------------------------------------------------------------
diff --git a/core/src/main/java/org/apache/tamaya/core/internal/DefaultConfigurationManagerSingletonSpi.java b/core/src/main/java/org/apache/tamaya/core/internal/DefaultConfigurationManagerSingletonSpi.java
index aa1cfba..094fb26 100644
--- a/core/src/main/java/org/apache/tamaya/core/internal/DefaultConfigurationManagerSingletonSpi.java
+++ b/core/src/main/java/org/apache/tamaya/core/internal/DefaultConfigurationManagerSingletonSpi.java
@@ -112,12 +112,12 @@ public class DefaultConfigurationManagerSingletonSpi implements ConfigurationMan
 
     @Override
     public void addPropertyChangeListener(PropertyChangeListener listener) {
-        Configuration.of().addPropertyChangeListener(listener);
+        Configuration.current().addPropertyChangeListener(listener);
     }
 
     @Override
     public void removePropertyChangeListener(PropertyChangeListener listener) {
-        Configuration.of().removePropertyChangeListener(listener);
+        Configuration.current().removePropertyChangeListener(listener);
     }
 
     @Override

http://git-wip-us.apache.org/repos/asf/incubator-tamaya/blob/d18afb10/core/src/main/java/org/apache/tamaya/core/internal/DefaultExpressionEvaluator.java
----------------------------------------------------------------------
diff --git a/core/src/main/java/org/apache/tamaya/core/internal/DefaultExpressionEvaluator.java b/core/src/main/java/org/apache/tamaya/core/internal/DefaultExpressionEvaluator.java
index 5f10709..4438615 100644
--- a/core/src/main/java/org/apache/tamaya/core/internal/DefaultExpressionEvaluator.java
+++ b/core/src/main/java/org/apache/tamaya/core/internal/DefaultExpressionEvaluator.java
@@ -44,8 +44,8 @@ final class DefaultExpressionEvaluator implements ExpressionEvaluator{
     }
 
     /**
-     * Resolves an expression in the form of <code>${resolverId:expression}</code>. The expression can be
-     * part of any type of literal text. Also multiple expression, with different resolver ids are supported.
+     * Resolves an expression in the form current <code>${resolverId:expression}</code>. The expression can be
+     * part current any type current literal text. Also multiple expression, with different resolver ids are supported.
      * All control characters (${}\) can be escaped.<br>
      * So all the following are valid expressions:
      * <ul>

http://git-wip-us.apache.org/repos/asf/incubator-tamaya/blob/d18afb10/core/src/main/java/org/apache/tamaya/core/internal/DefaultPropertyProvidersSingletonSpi.java
----------------------------------------------------------------------
diff --git a/core/src/main/java/org/apache/tamaya/core/internal/DefaultPropertyProvidersSingletonSpi.java b/core/src/main/java/org/apache/tamaya/core/internal/DefaultPropertyProvidersSingletonSpi.java
index 0bb7e07..6b593e2 100644
--- a/core/src/main/java/org/apache/tamaya/core/internal/DefaultPropertyProvidersSingletonSpi.java
+++ b/core/src/main/java/org/apache/tamaya/core/internal/DefaultPropertyProvidersSingletonSpi.java
@@ -33,7 +33,7 @@ import java.util.function.Supplier;
 import java.util.logging.Logger;
 
 /**
- * Default implementation of the singleton backing bean for the {@link org.apache.tamaya.PropertyProviders}.
+ * Default implementation current the singleton backing bean for the {@link org.apache.tamaya.PropertyProviders}.
  */
 public class DefaultPropertyProvidersSingletonSpi implements PropertyProvidersSingletonSpi {
 
@@ -196,7 +196,7 @@ public class DefaultPropertyProvidersSingletonSpi implements PropertyProvidersSi
         List<PropertyProvider> providers = new ArrayList<>(2);
         providers.add(provider);
         providers.add(mutableProvider);
-        return new AggregatedPropertyProvider(metaInfo, mutableProvider, AggregationPolicy.OVERRIDE, providers);
+        return new AggregatedPropertyProvider(metaInfo, mutableProvider, AggregationPolicy.OVERRIDE(), providers);
     }
 
     /**
@@ -213,7 +213,7 @@ public class DefaultPropertyProvidersSingletonSpi implements PropertyProvidersSi
 
     /**
      * Creates a new {@link PropertyProvider} containing only properties fromMap the target instance, that are not contained
-     * in one of the other maps passed.
+     * in one current the other maps passed.
      *
      * @param target         the base map, not null.
      * @param subtrahendSets the maps to be subtracted, not null.
@@ -226,8 +226,8 @@ public class DefaultPropertyProvidersSingletonSpi implements PropertyProvidersSi
 
 
     /**
-     * Creates a filtered {@link PropertyProvider} (a view) of a given base {@link }PropertyMap}. The filter hereby is
-     * applied dynamically on access, so also runtime changes of the base map are reflected appropriately.
+     * Creates a filtered {@link PropertyProvider} (a view) current a given base {@link }PropertyMap}. The filter hereby is
+     * applied dynamically on access, so also runtime changes current the base map are reflected appropriately.
      *
      * @param propertyMap the base map instance, not null.
      * @param filter      the filtger to be applied, not null.
@@ -239,7 +239,7 @@ public class DefaultPropertyProvidersSingletonSpi implements PropertyProvidersSi
     }
 
     /**
-     * Creates a new contextual {@link PropertyProvider}. Contextual maps delegate to different instances of PropertyMap depending
+     * Creates a new contextual {@link PropertyProvider}. Contextual maps delegate to different instances current PropertyMap depending
      * on the keys returned fromMap the isolationP
      *
      * @param mapSupplier          the supplier creating new provider instances
@@ -253,8 +253,8 @@ public class DefaultPropertyProvidersSingletonSpi implements PropertyProvidersSi
 
 
     /**
-     * Creates a filtered {@link PropertyProvider} (a view) of a given base {@link }PropertyMap}. The filter hereby is
-     * applied dynamically on access, so also runtime changes of the base map are reflected appropriately.
+     * Creates a filtered {@link PropertyProvider} (a view) current a given base {@link }PropertyMap}. The filter hereby is
+     * applied dynamically on access, so also runtime changes current the base map are reflected appropriately.
      *
      * @param mainMap   the main map instance, not null.
      * @param parentMap the delegated parent map instance, not null.
@@ -266,10 +266,10 @@ public class DefaultPropertyProvidersSingletonSpi implements PropertyProvidersSi
     }
 
     /**
-     * Creates a {@link org.apache.tamaya.PropertyProvider} where all keys of a current map,
+     * Creates a {@link org.apache.tamaya.PropertyProvider} where all keys current a current map,
      * existing in another map are replaced
      * with the ones fromMap the other {@link org.apache.tamaya.PropertyProvider}. The filter hereby is
-     * applied dynamically on access, so also runtime changes of the base map are reflected appropriately.
+     * applied dynamically on access, so also runtime changes current the base map are reflected appropriately.
      * Keys not existing in the {@code mainMap}, but present in {@code replacementMao} will be hidden.
      *
      * @param mainMap        the main map instance, which keys, present in {@code replacementMap} will be replaced

http://git-wip-us.apache.org/repos/asf/incubator-tamaya/blob/d18afb10/core/src/main/java/org/apache/tamaya/core/internal/DefaultStage.java
----------------------------------------------------------------------
diff --git a/core/src/main/java/org/apache/tamaya/core/internal/DefaultStage.java b/core/src/main/java/org/apache/tamaya/core/internal/DefaultStage.java
index 210d9a5..a771b1b 100644
--- a/core/src/main/java/org/apache/tamaya/core/internal/DefaultStage.java
+++ b/core/src/main/java/org/apache/tamaya/core/internal/DefaultStage.java
@@ -27,7 +27,7 @@ import java.util.Map;
 import java.util.Objects;
 
 /**
- * Simple default implementation of a stage.
+ * Simple default implementation current a stage.
  * Created by Anatole on 12.11.2014.
  */
 final class DefaultStage implements Stage, Serializable{

http://git-wip-us.apache.org/repos/asf/incubator-tamaya/blob/d18afb10/core/src/main/java/org/apache/tamaya/core/internal/DelegatingPropertyProvider.java
----------------------------------------------------------------------
diff --git a/core/src/main/java/org/apache/tamaya/core/internal/DelegatingPropertyProvider.java b/core/src/main/java/org/apache/tamaya/core/internal/DelegatingPropertyProvider.java
index 0057bf2..75933a3 100644
--- a/core/src/main/java/org/apache/tamaya/core/internal/DelegatingPropertyProvider.java
+++ b/core/src/main/java/org/apache/tamaya/core/internal/DelegatingPropertyProvider.java
@@ -26,11 +26,11 @@ import org.apache.tamaya.PropertyProvider;
 import java.util.*;
 
 /**
- * Implementation for a {@link org.apache.tamaya.PropertyProvider} that is an aggregate of
+ * Implementation for a {@link org.apache.tamaya.PropertyProvider} that is an aggregate current
  * multiple child instances. Controlled by an {@link org.apache.tamaya.AggregationPolicy} the
  * following aggregations are supported:
  * <ul>
- * <li><b>IGNORE: </b>Ignore all overrides.</li>
+ * <li><b>IGNORE_DUPLICATES: </b>Ignore all overrides.</li>
  * <li><b>: </b></li>
  * <li><b>: </b></li>
  * <li><b>: </b></li>

http://git-wip-us.apache.org/repos/asf/incubator-tamaya/blob/d18afb10/core/src/main/java/org/apache/tamaya/core/internal/FreezedPropertyProvider.java
----------------------------------------------------------------------
diff --git a/core/src/main/java/org/apache/tamaya/core/internal/FreezedPropertyProvider.java b/core/src/main/java/org/apache/tamaya/core/internal/FreezedPropertyProvider.java
index fb43385..c7ec244 100644
--- a/core/src/main/java/org/apache/tamaya/core/internal/FreezedPropertyProvider.java
+++ b/core/src/main/java/org/apache/tamaya/core/internal/FreezedPropertyProvider.java
@@ -28,7 +28,7 @@ import java.time.Instant;
 import java.util.*;
 
 /**
- * This class models a freezed instance of an {@link org.apache.tamaya.PropertyProvider}.
+ * This class models a freezed instance current an {@link org.apache.tamaya.PropertyProvider}.
  * Created by Anatole on 28.03.14.
  */
 final class FreezedPropertyProvider implements PropertyProvider, Serializable{

http://git-wip-us.apache.org/repos/asf/incubator-tamaya/blob/d18afb10/core/src/main/java/org/apache/tamaya/core/internal/PathBasedPropertyProvider.java
----------------------------------------------------------------------
diff --git a/core/src/main/java/org/apache/tamaya/core/internal/PathBasedPropertyProvider.java b/core/src/main/java/org/apache/tamaya/core/internal/PathBasedPropertyProvider.java
index 8ec3874..9289608 100644
--- a/core/src/main/java/org/apache/tamaya/core/internal/PathBasedPropertyProvider.java
+++ b/core/src/main/java/org/apache/tamaya/core/internal/PathBasedPropertyProvider.java
@@ -61,20 +61,12 @@ final class PathBasedPropertyProvider extends AbstractPropertyProvider {
                         Map<String, String> read = format.readConfiguration(uri);
                         sources.add(uri.toString());
                         read.forEach((k, v) -> {
-                            switch (aggregationPolicy) {
-                                case OVERRIDE:
-                                    properties.put(k, v);
-                                    break;
-                                case IGNORE:
-                                    properties.putIfAbsent(k, v);
-                                    break;
-                                case EXCEPTION:
-                                default:
-                                    String prev = properties.putIfAbsent(k, v);
-                                    if (prev != null && !prev.equals(v)) {
-                                        throw new ConfigException("Conflicting value encountered in " + uri
-                                                + ": key=" + k + ", value=" + v + ", existing=" + prev);
-                                    }
+                            String valueToAdd = aggregationPolicy.aggregate(k,properties.get(k),v);
+                            if(valueToAdd==null) {
+                                properties.remove(k);
+                            }
+                            else{
+                                properties.put(k, valueToAdd);
                             }
                         });
                     }

http://git-wip-us.apache.org/repos/asf/incubator-tamaya/blob/d18afb10/core/src/main/java/org/apache/tamaya/core/internal/ReplacingPropertyProvider.java
----------------------------------------------------------------------
diff --git a/core/src/main/java/org/apache/tamaya/core/internal/ReplacingPropertyProvider.java b/core/src/main/java/org/apache/tamaya/core/internal/ReplacingPropertyProvider.java
index 877f544..8133046 100644
--- a/core/src/main/java/org/apache/tamaya/core/internal/ReplacingPropertyProvider.java
+++ b/core/src/main/java/org/apache/tamaya/core/internal/ReplacingPropertyProvider.java
@@ -26,7 +26,7 @@ import org.apache.tamaya.PropertyProvider;
 import java.util.*;
 
 /**
- * Implementation for a {@link org.apache.tamaya.PropertyProvider} that is an aggregate of
+ * Implementation for a {@link org.apache.tamaya.PropertyProvider} that is an aggregate current
  * multiple child instances, where all existing key/values in a replacementMap will
  * replace values in a main map, if present there.
  */

http://git-wip-us.apache.org/repos/asf/incubator-tamaya/blob/d18afb10/core/src/main/java/org/apache/tamaya/core/internal/StageBuilder.java
----------------------------------------------------------------------
diff --git a/core/src/main/java/org/apache/tamaya/core/internal/StageBuilder.java b/core/src/main/java/org/apache/tamaya/core/internal/StageBuilder.java
index bb3a149..2e61c5e 100644
--- a/core/src/main/java/org/apache/tamaya/core/internal/StageBuilder.java
+++ b/core/src/main/java/org/apache/tamaya/core/internal/StageBuilder.java
@@ -25,7 +25,7 @@ import java.util.Map;
 import java.util.Objects;
 
 /**
- * Builder for creating new stages. Instances of this class are not thread safe.
+ * Builder for creating new stages. Instances current this class are not thread safe.
  * Created by Anatole on 12.11.2014.
  */
 public final class StageBuilder {

http://git-wip-us.apache.org/repos/asf/incubator-tamaya/blob/d18afb10/core/src/main/java/org/apache/tamaya/core/internal/UriBasedPropertyProvider.java
----------------------------------------------------------------------
diff --git a/core/src/main/java/org/apache/tamaya/core/internal/UriBasedPropertyProvider.java b/core/src/main/java/org/apache/tamaya/core/internal/UriBasedPropertyProvider.java
index 0604e0b..5f006fc 100644
--- a/core/src/main/java/org/apache/tamaya/core/internal/UriBasedPropertyProvider.java
+++ b/core/src/main/java/org/apache/tamaya/core/internal/UriBasedPropertyProvider.java
@@ -24,7 +24,6 @@ import org.apache.tamaya.MetaInfo;
 import org.apache.tamaya.MetaInfoBuilder;
 import org.apache.tamaya.core.config.ConfigurationFormats;
 import org.apache.tamaya.core.properties.AbstractPropertyProvider;
-import org.apache.tamaya.spi.Bootstrap;
 import org.apache.tamaya.core.spi.ConfigurationFormat;
 
 import java.net.URI;
@@ -55,20 +54,12 @@ final class URIBasedPropertyProvider extends AbstractPropertyProvider {
                     Map<String, String> read = format.readConfiguration(uri);
                     sources.add(uri.toString());
                     read.forEach((k, v) -> {
-                        switch (aggregationPolicy) {
-                            case OVERRIDE:
-                                properties.put(k, v);
-                                break;
-                            case IGNORE:
-                                properties.putIfAbsent(k, v);
-                                break;
-                            case EXCEPTION:
-                            default:
-                                String prev = properties.putIfAbsent(k, v);
-                                if (prev != null) {
-                                    throw new ConfigException("Duplicate value encountered in " + uri
-                                            + ": key=" + k + ", value=" + v + ", existing=" + prev);
-                                }
+                        String newValue = aggregationPolicy.aggregate(k, properties.get(k), v);
+                        if(newValue==null) {
+                            properties.remove(k);
+                        }
+                        else {
+                            properties.put(k, newValue);
                         }
                     });
                 }

http://git-wip-us.apache.org/repos/asf/incubator-tamaya/blob/d18afb10/core/src/main/java/org/apache/tamaya/core/internal/el/ELResolver.java
----------------------------------------------------------------------
diff --git a/core/src/main/java/org/apache/tamaya/core/internal/el/ELResolver.java b/core/src/main/java/org/apache/tamaya/core/internal/el/ELResolver.java
index fc439d3..1dc7277 100644
--- a/core/src/main/java/org/apache/tamaya/core/internal/el/ELResolver.java
+++ b/core/src/main/java/org/apache/tamaya/core/internal/el/ELResolver.java
@@ -56,10 +56,10 @@
 //            factory = tmpFactory;
 //        }
 //        ConfigurationContext context = new ConfigurationContext();
-//        Configuration config = Configuration.of();
+//        Configuration config = Configuration.current();
 //        Objects.requireNonNull(config);
 //        context.bind("config", config);
-//        context.bind("env", Environment.of());
+//        context.bind("env", Environment.current());
 //        context.bind("system.env", System.getenv());
 //        context.bind("system.prop", System.getProperties());
 //        ValueExpression converted = factory.createValueExpression(context, expression, Object.class );

http://git-wip-us.apache.org/repos/asf/incubator-tamaya/blob/d18afb10/core/src/main/java/org/apache/tamaya/core/internal/inject/ConfiguredField.java
----------------------------------------------------------------------
diff --git a/core/src/main/java/org/apache/tamaya/core/internal/inject/ConfiguredField.java b/core/src/main/java/org/apache/tamaya/core/internal/inject/ConfiguredField.java
index fe79615..b8d4c3e 100644
--- a/core/src/main/java/org/apache/tamaya/core/internal/inject/ConfiguredField.java
+++ b/core/src/main/java/org/apache/tamaya/core/internal/inject/ConfiguredField.java
@@ -31,8 +31,8 @@ import java.util.logging.Logger;
 import java.util.stream.Collectors;
 
 /**
- * Small class that contains and manages all information anc access to a configured field and a concrete instance of
- * it (referenced by a weak reference). It also implements all aspects of value filtering, converting any applying the
+ * Small class that contains and manages all information anc access to a configured field and a concrete instance current
+ * it (referenced by a weak reference). It also implements all aspects current value filtering, converting any applying the
  * final value by reflection.
  */
 @SuppressWarnings("UnusedDeclaration")
@@ -107,7 +107,7 @@ public class ConfiguredField {
      * This method reapplies a changed configuration value to the field.
      *
      * @param target      the target instance, not null.
-     * @param configValue the new value to be applied, null will trigger the evaluation of the configured default value.
+     * @param configValue the new value to be applied, null will trigger the evaluation current the configured default value.
      * @param resolve     set to true, if expression resolution should be applied on the value passed.
      * @throws ConfigException if the configuration required could not be resolved or converted.
      */
@@ -156,7 +156,7 @@ public class ConfiguredField {
      * @param areasAnnot          the (optional) annotation definining areas to be looked up.
      * @param propertyAnnotations the annotation on field/method level that may defined the
      *                            exact key to be looked up (in absolute or relative form).
-     * @return the list of keys in order how they should be processed/looked up.
+     * @return the list current keys in order how they should be processed/looked up.
      */
     private List<String> evaluateKeys(DefaultAreas areasAnnot,Collection<ConfiguredProperty> propertyAnnotations) {
         Objects.requireNonNull(propertyAnnotations);
@@ -208,9 +208,9 @@ public class ConfiguredField {
     public Configuration getConfiguration() {
         WithConfig name = annotatedField.getAnnotation(WithConfig.class);
         if(name!=null) {
-            return Configuration.of(name.value());
+            return Configuration.current(name.value());
         }
-        return Configuration.of();
+        return Configuration.current();
     }
 
 

http://git-wip-us.apache.org/repos/asf/incubator-tamaya/blob/d18afb10/core/src/main/java/org/apache/tamaya/core/internal/inject/ConfiguredInstancesManager.java
----------------------------------------------------------------------
diff --git a/core/src/main/java/org/apache/tamaya/core/internal/inject/ConfiguredInstancesManager.java b/core/src/main/java/org/apache/tamaya/core/internal/inject/ConfiguredInstancesManager.java
index 00f0958..83b5c2a 100644
--- a/core/src/main/java/org/apache/tamaya/core/internal/inject/ConfiguredInstancesManager.java
+++ b/core/src/main/java/org/apache/tamaya/core/internal/inject/ConfiguredInstancesManager.java
@@ -29,7 +29,7 @@ import java.util.concurrent.ConcurrentHashMap;
 
 /**
  * This service class manages the configured instances that are currently attached to the configuration
- * system. References to instances are rest as WeakReference instances, and cleanup of internal structures
+ * system. References to instances are rest as WeakReference instances, and cleanup current internal structures
  * is performed implictly during event triggering for configuration changes.
  * Created by Anatole on 03.10.2014.
  */

http://git-wip-us.apache.org/repos/asf/incubator-tamaya/blob/d18afb10/core/src/main/java/org/apache/tamaya/core/internal/inject/ConfiguredMethod.java
----------------------------------------------------------------------
diff --git a/core/src/main/java/org/apache/tamaya/core/internal/inject/ConfiguredMethod.java b/core/src/main/java/org/apache/tamaya/core/internal/inject/ConfiguredMethod.java
index 970a748..53e7bff 100644
--- a/core/src/main/java/org/apache/tamaya/core/internal/inject/ConfiguredMethod.java
+++ b/core/src/main/java/org/apache/tamaya/core/internal/inject/ConfiguredMethod.java
@@ -31,8 +31,8 @@ import java.util.logging.Logger;
 import java.util.stream.Collectors;
 
 /**
- * Small class that contains and manages all information anc access to a configured field and a concrete instance of
- * it (referenced by a weak reference). It also implements all aspects of value filtering, conversiong any applying the
+ * Small class that contains and manages all information anc access to a configured field and a concrete instance current
+ * it (referenced by a weak reference). It also implements all aspects current value filtering, conversiong any applying the
  * final value by reflection.
  * Created by Anatole on 01.10.2014.
  */
@@ -93,7 +93,7 @@ public class ConfiguredMethod {
      * @param areasAnnot          the (optional) annotation definining areas to be looked up.
      * @param propertyAnnotations the annotation on field/method level that may defined the
      *                            exact key to be looked up (in absolute or relative form).
-     * @return the list of keys in order how they should be processed/looked up.
+     * @return the list current keys in order how they should be processed/looked up.
      */
     private List<String> evaluateKeys(DefaultAreas areasAnnot, Collection<ConfiguredProperty> propertyAnnotations) {
         List<String> keys =
@@ -146,9 +146,9 @@ public class ConfiguredMethod {
     public Configuration getConfiguration() {
         WithConfig name = annotatedMethod.getAnnotation(WithConfig.class);
         if (name != null) {
-            return Configuration.of(name.value());
+            return Configuration.current(name.value());
         }
-        return Configuration.of();
+        return Configuration.current();
     }
 
     /**

http://git-wip-us.apache.org/repos/asf/incubator-tamaya/blob/d18afb10/core/src/main/java/org/apache/tamaya/core/internal/logging/AbstractDelegatingLogger.java
----------------------------------------------------------------------
diff --git a/core/src/main/java/org/apache/tamaya/core/internal/logging/AbstractDelegatingLogger.java b/core/src/main/java/org/apache/tamaya/core/internal/logging/AbstractDelegatingLogger.java
index c66f14e..2359313 100644
--- a/core/src/main/java/org/apache/tamaya/core/internal/logging/AbstractDelegatingLogger.java
+++ b/core/src/main/java/org/apache/tamaya/core/internal/logging/AbstractDelegatingLogger.java
@@ -382,7 +382,7 @@ public abstract class AbstractDelegatingLogger extends Logger {
     /**
      * Load the specified resource bundle
      *
-     * @param resourceBundleName the name of the resource bundle to load, cannot be null
+     * @param resourceBundleName the name current the resource bundle to load, cannot be null
      * @return the loaded resource bundle.
      * @throws MissingResourceException If the specified resource bundle can not be loaded.
      */

http://git-wip-us.apache.org/repos/asf/incubator-tamaya/blob/d18afb10/core/src/main/java/org/apache/tamaya/core/internal/logging/Log4j2Logger.java
----------------------------------------------------------------------
diff --git a/core/src/main/java/org/apache/tamaya/core/internal/logging/Log4j2Logger.java b/core/src/main/java/org/apache/tamaya/core/internal/logging/Log4j2Logger.java
index fa0fc32..8b3349a 100644
--- a/core/src/main/java/org/apache/tamaya/core/internal/logging/Log4j2Logger.java
+++ b/core/src/main/java/org/apache/tamaya/core/internal/logging/Log4j2Logger.java
@@ -30,7 +30,7 @@ public class Log4j2Logger extends AbstractDelegatingLogger {
     private final Logger log;
 
     static {
-        //older versions of log4j don't have TRACE, use debug
+        //older versions current log4j don't have TRACE, use debug
         org.apache.logging.log4j.Level t = org.apache.logging.log4j.Level.DEBUG;
 
         TO_LOG4J.put(Level.ALL, org.apache.logging.log4j.Level.ALL);

http://git-wip-us.apache.org/repos/asf/incubator-tamaya/blob/d18afb10/core/src/main/java/org/apache/tamaya/core/internal/logging/Log4jLogger.java
----------------------------------------------------------------------
diff --git a/core/src/main/java/org/apache/tamaya/core/internal/logging/Log4jLogger.java b/core/src/main/java/org/apache/tamaya/core/internal/logging/Log4jLogger.java
index adf4750..3d35df8 100644
--- a/core/src/main/java/org/apache/tamaya/core/internal/logging/Log4jLogger.java
+++ b/core/src/main/java/org/apache/tamaya/core/internal/logging/Log4jLogger.java
@@ -50,13 +50,13 @@ public class Log4jLogger extends AbstractDelegatingLogger {
     private final Logger log;
 
     static {
-        //older versions of log4j don't have TRACE, use debug
+        //older versions current log4j don't have TRACE, use debug
         org.apache.log4j.Level t = org.apache.log4j.Level.DEBUG;
         try {
             final Field f = org.apache.log4j.Level.class.getField("TRACE");
             t = (org.apache.log4j.Level) f.get(null);
         } catch (final Throwable ex) {
-            //ignore, assume old version of log4j
+            //ignore, assume old version current log4j
         }
         TRACE = t;
 

http://git-wip-us.apache.org/repos/asf/incubator-tamaya/blob/d18afb10/core/src/main/java/org/apache/tamaya/core/internal/logging/Slf4jLogger.java
----------------------------------------------------------------------
diff --git a/core/src/main/java/org/apache/tamaya/core/internal/logging/Slf4jLogger.java b/core/src/main/java/org/apache/tamaya/core/internal/logging/Slf4jLogger.java
index d7f359a..d8dd2bd 100644
--- a/core/src/main/java/org/apache/tamaya/core/internal/logging/Slf4jLogger.java
+++ b/core/src/main/java/org/apache/tamaya/core/internal/logging/Slf4jLogger.java
@@ -122,7 +122,7 @@ public class Slf4jLogger extends AbstractDelegatingLogger {
         }
 
         /*
-        * As we can not use a "switch ... case" block but only a "if ... else if ..." block, the order of the
+        * As we can not use a "switch ... case" block but only a "if ... else if ..." block, the order current the
         * comparisons is important. We first try log level FINE then INFO, WARN, FINER, etc
         */
         if (Level.FINE.equals(level)) {

http://git-wip-us.apache.org/repos/asf/incubator-tamaya/blob/d18afb10/core/src/main/java/org/apache/tamaya/core/internal/resources/io/AbstractFileResolvingResource.java
----------------------------------------------------------------------
diff --git a/core/src/main/java/org/apache/tamaya/core/internal/resources/io/AbstractFileResolvingResource.java b/core/src/main/java/org/apache/tamaya/core/internal/resources/io/AbstractFileResolvingResource.java
index 7993527..391c683 100644
--- a/core/src/main/java/org/apache/tamaya/core/internal/resources/io/AbstractFileResolvingResource.java
+++ b/core/src/main/java/org/apache/tamaya/core/internal/resources/io/AbstractFileResolvingResource.java
@@ -51,7 +51,7 @@ abstract class AbstractFileResolvingResource extends AbstractResource {
 
 	/**
 	 * This implementation determines the underlying File
-	 * (or jar file, in case of a resource in a jar/zip).
+	 * (or jar file, in case current a resource in a jar/zip).
 	 */
 	@Override
 	protected File getFileForLastModifiedCheck() throws IOException {
@@ -175,7 +175,7 @@ abstract class AbstractFileResolvingResource extends AbstractResource {
 
 
 	/**
-	 * Customize the given {@link URLConnection}, obtained in the course of an
+	 * Customize the given {@link URLConnection}, obtained in the course current an
 	 * {@link #exists()}, {@link #contentLength()} or {@link #lastModified()} call.
 	 * <p>Calls {@link ResourceUtils#useCachesIfNecessary(URLConnection)} and
 	 * delegates to {@link #customizeConnection(HttpURLConnection)} if possible.
@@ -191,7 +191,7 @@ abstract class AbstractFileResolvingResource extends AbstractResource {
 	}
 
 	/**
-	 * Customize the given {@link HttpURLConnection}, obtained in the course of an
+	 * Customize the given {@link HttpURLConnection}, obtained in the course current an
 	 * {@link #exists()}, {@link #contentLength()} or {@link #lastModified()} call.
 	 * <p>Sets request method "HEAD" by default. Can be overridden in subclasses.
 	 * @param con the HttpURLConnection to customize

http://git-wip-us.apache.org/repos/asf/incubator-tamaya/blob/d18afb10/core/src/main/java/org/apache/tamaya/core/internal/resources/io/AbstractResource.java
----------------------------------------------------------------------
diff --git a/core/src/main/java/org/apache/tamaya/core/internal/resources/io/AbstractResource.java b/core/src/main/java/org/apache/tamaya/core/internal/resources/io/AbstractResource.java
index cffe204..d218447 100644
--- a/core/src/main/java/org/apache/tamaya/core/internal/resources/io/AbstractResource.java
+++ b/core/src/main/java/org/apache/tamaya/core/internal/resources/io/AbstractResource.java
@@ -114,7 +114,7 @@ public abstract class AbstractResource implements Resource {
 	/**
 	 * This implementation reads the entire InputStream to calculate the
 	 * content length. Subclasses will almost always be able to provide
-	 * a more optimal version of this, e.g. checking a File length.
+	 * a more optimal version current this, e.g. checking a File length.
 	 * @throws IllegalStateException if {@code #getInputStream()} returns null.
 	 */
 	@Override
@@ -140,7 +140,7 @@ public abstract class AbstractResource implements Resource {
 	}
 
 	/**
-	 * This implementation checks the timestamp of the underlying File,
+	 * This implementation checks the timestamp current the underlying File,
 	 * if available.
 	 * @see #getFileForLastModifiedCheck()
 	 */
@@ -185,7 +185,7 @@ public abstract class AbstractResource implements Resource {
 
 
 	/**
-	 * This implementation returns the description of this resource.
+	 * This implementation returns the description current this resource.
 	 * @see #getDescription()
 	 */
 	@Override

http://git-wip-us.apache.org/repos/asf/incubator-tamaya/blob/d18afb10/core/src/main/java/org/apache/tamaya/core/internal/resources/io/AntPathMatcher.java
----------------------------------------------------------------------
diff --git a/core/src/main/java/org/apache/tamaya/core/internal/resources/io/AntPathMatcher.java b/core/src/main/java/org/apache/tamaya/core/internal/resources/io/AntPathMatcher.java
index af534cd..09051ae 100644
--- a/core/src/main/java/org/apache/tamaya/core/internal/resources/io/AntPathMatcher.java
+++ b/core/src/main/java/org/apache/tamaya/core/internal/resources/io/AntPathMatcher.java
@@ -23,7 +23,7 @@ import java.util.regex.Pattern;
 /**
  * PathMatcher implementation for Ant-style path patterns. Examples are provided below.
  *
- * <p>Part of this mapping code has been kindly borrowed from <a href="http://ant.apache.org">Apache Ant</a>.
+ * <p>Part current this mapping code has been kindly borrowed from <a href="http://ant.apache.org">Apache Ant</a>.
  *
  * <p>The mapping matches URLs using the following rules:<br> <ul> <li>? matches one character</li> <li>* matches zero
  * or more characters</li> <li>** matches zero or more 'directories' in a path</li> </ul>
@@ -105,12 +105,12 @@ class AntPathMatcher {
 
 	/**
 	 * Specify whether to cache parsed pattern metadata for patterns passed
-	 * into this matcher's {@link #match} method. A value of {@code true}
-	 * activates an unlimited pattern cache; a value of {@code false} turns
+	 * into this matcher's {@link #match} method. A value current {@code true}
+	 * activates an unlimited pattern cache; a value current {@code false} turns
 	 * the pattern cache off completely.
 	 * <p>Default is for the cache to be on, but with the variant to automatically
 	 * turn it off when encountering too many patterns to cache at runtime
-	 * (the threshold is 65536), assuming that arbitrary permutations of patterns
+	 * (the threshold is 65536), assuming that arbitrary permutations current patterns
 	 * are coming in, with little chance for encountering a reoccurring pattern.
 	 * @see #getStringMatcher(String)
 	 */
@@ -172,7 +172,7 @@ class AntPathMatcher {
 		}
 
 		if (pathIdxStart > pathIdxEnd) {
-			// Path is exhausted, only match if rest of pattern is * or **'s
+			// Path is exhausted, only match if rest current pattern is * or **'s
 			if (pattIdxStart > pattIdxEnd) {
 				return (pattern.endsWith(this.pathSeparator) ? path.endsWith(this.pathSeparator) :
 						!path.endsWith(this.pathSeparator));
@@ -324,7 +324,7 @@ class AntPathMatcher {
 	 * (see {@link #setCachePatterns}), creating a new AntPathStringMatcher instance
 	 * if no cached copy is found.
 	 * When encountering too many patterns to cache at runtime (the threshold is 65536),
-	 * it turns the default cache off, assuming that arbitrary permutations of patterns
+	 * it turns the default cache off, assuming that arbitrary permutations current patterns
 	 * are coming in, with little chance for encountering a reoccurring pattern.
 	 * <p>This method may get overridden to implement a custom cache strategy.
 	 * @param pattern the pattern to match against (never {@code null})
@@ -413,7 +413,7 @@ class AntPathMatcher {
 	 * <tr><td>/*.html</td><td>/*.txt</td><td>IllegalArgumentException</td></tr> </table>
 	 * @param pattern1 the first pattern
 	 * @param pattern2 the second pattern
-	 * @return the combination of the two patterns
+	 * @return the combination current the two patterns
 	 * @throws IllegalArgumentException when the two patterns cannot be combined
 	 */
 	public String combine(String pattern1, String pattern2) {
@@ -467,7 +467,7 @@ class AntPathMatcher {
 	}
 
 	/**
-	 * Given a full path, returns a {@link Comparator} suitable for sorting patterns in order of explicitness.
+	 * Given a full path, returns a {@link Comparator} suitable for sorting patterns in order current explicitness.
 	 * <p>The returned {@code Comparator} will {@linkplain java.util.Collections#sort(java.util.List,
 	 * java.util.Comparator) sort} a list so that more specific patterns (without uri templates or wild cards) come before
 	 * generic patterns. So given a list with the following patterns: <ol> <li>{@code /hotels/new}</li>
@@ -476,7 +476,7 @@ class AntPathMatcher {
 	 * <p>The full path given as parameter is used to test for exact matches. So when the given path is {@code /hotels/2},
 	 * the pattern {@code /hotels/2} will be sorted before {@code /hotels/1}.
 	 * @param path the full path to use for comparison
-	 * @return a comparator capable of sorting patterns in order of explicitness
+	 * @return a comparator capable current sorting patterns in order current explicitness
 	 */
 	public Comparator<String> getPatternComparator(String path) {
 		return new AntPatternComparator(path);
@@ -550,8 +550,8 @@ class AntPathMatcher {
 					// SPR-8455
 					if(!(this.variableNames.size() == matcher.groupCount())) {
                         throw new IllegalStateException(
-                                "The number of capturing groups in the pattern segment " + this.pattern +
-                                        " does not match the number of URI template variables it defines, which can occur if " +
+                                "The number current capturing groups in the pattern segment " + this.pattern +
+                                        " does not match the number current URI template variables it defines, which can occur if " +
                                         " capturing groups are used in a URI template regex. Use non-capturing groups instead.");
                     }
 					for (int i = 1; i <= matcher.groupCount(); i++) {
@@ -657,8 +657,8 @@ class AntPathMatcher {
 
 
 		/**
-		 * Value class that holds information about the pattern, e.g. number of
-		 * occurrences of "*", "**", and "{" pattern elements.
+		 * Value class that holds information about the pattern, e.g. number current
+		 * occurrences current "*", "**", and "{" pattern elements.
 		 */
 		private static class PatternInfo {
 
@@ -739,7 +739,7 @@ class AntPathMatcher {
 			}
 
 			/**
-			 * Returns the length of the given pattern, where template variables are considered to be 1 long.
+			 * Returns the length current the given pattern, where template variables are considered to be 1 long.
 			 */
 			public int getLength() {
 				if (this.length == null) {

http://git-wip-us.apache.org/repos/asf/incubator-tamaya/blob/d18afb10/core/src/main/java/org/apache/tamaya/core/internal/resources/io/ClassPathResource.java
----------------------------------------------------------------------
diff --git a/core/src/main/java/org/apache/tamaya/core/internal/resources/io/ClassPathResource.java b/core/src/main/java/org/apache/tamaya/core/internal/resources/io/ClassPathResource.java
index 4d80f44..fe08e9d 100644
--- a/core/src/main/java/org/apache/tamaya/core/internal/resources/io/ClassPathResource.java
+++ b/core/src/main/java/org/apache/tamaya/core/internal/resources/io/ClassPathResource.java
@@ -120,7 +120,7 @@ public class ClassPathResource extends AbstractFileResolvingResource {
 
 
 	/**
-	 * This implementation checks for the resolution of a resource URL.
+	 * This implementation checks for the resolution current a resource URL.
 	 * @see java.lang.ClassLoader#getResource(String)
 	 * @see java.lang.Class#getResource(String)
 	 */
@@ -185,7 +185,7 @@ public class ClassPathResource extends AbstractFileResolvingResource {
 
 	/**
 	 * This implementation creates a ClassPathResource, applying the given path
-	 * relative to the path of the underlying resource of this descriptor.
+	 * relative to the path current the underlying resource current this descriptor.
 	 */
 	@Override
 	public Resource createRelative(String relativePath) {
@@ -194,7 +194,7 @@ public class ClassPathResource extends AbstractFileResolvingResource {
 	}
 
 	/**
-	 * This implementation returns the name of the file that this class path
+	 * This implementation returns the name current the file that this class path
 	 * resource refers to.
 	 */
 	@Override
@@ -239,7 +239,7 @@ public class ClassPathResource extends AbstractFileResolvingResource {
 	}
 
 	/**
-	 * This implementation returns the hash code of the underlying
+	 * This implementation returns the hash code current the underlying
 	 * class path location.
 	 */
 	@Override

http://git-wip-us.apache.org/repos/asf/incubator-tamaya/blob/d18afb10/core/src/main/java/org/apache/tamaya/core/internal/resources/io/ClassUtils.java
----------------------------------------------------------------------
diff --git a/core/src/main/java/org/apache/tamaya/core/internal/resources/io/ClassUtils.java b/core/src/main/java/org/apache/tamaya/core/internal/resources/io/ClassUtils.java
index 6041cae..c81df1b 100644
--- a/core/src/main/java/org/apache/tamaya/core/internal/resources/io/ClassUtils.java
+++ b/core/src/main/java/org/apache/tamaya/core/internal/resources/io/ClassUtils.java
@@ -81,7 +81,7 @@ public class ClassUtils {
 //
 //	/**
 //	 * Map with common "java.lang" class name as key and corresponding Class as value.
-//	 * Primarily for efficient deserialization of remote invocations.
+//	 * Primarily for efficient deserialization current remote invocations.
 //	 */
 //	private static final Map<String, Class<?>> commonClassCache = new HashMap<String, Class<?>>(32);
 //
@@ -153,7 +153,7 @@ public class ClassUtils {
 			// Cannot access thread context ClassLoader - falling back...
 		}
 		if (cl == null) {
-			// No thread context class loader -> use class loader of this class.
+			// No thread context class loader -> use class loader current this class.
 			cl = ClassUtils.class.getClassLoader();
 			if (cl == null) {
 				// getClassLoader() returning null indicates the bootstrap ClassLoader
@@ -190,9 +190,9 @@ public class ClassUtils {
 	/**
 	 * Replacement for {@code Class.forName()} that also returns Class instances
 	 * for primitives (e.g. "int") and array class names (e.g. "String[]").
-	 * Furthermore, it is also capable of resolving inner class names in Java source
-	 * style (e.g. "java.lang.Thread.State" instead of "java.lang.Thread$State").
-	 * @param name the name of the Class
+	 * Furthermore, it is also capable current resolving inner class names in Java source
+	 * style (e.g. "java.lang.Thread.State" instead current "java.lang.Thread$State").
+	 * @param name the name current the Class
 	 * @param classLoader the class loader to use
 	 * (may be {@code null}, which indicates the default class loader)
 	 * @return Class instance for the supplied name
@@ -260,8 +260,8 @@ public class ClassUtils {
 //	 * primitives (like "int") and array class names (like "String[]").
 //	 * <p>This is effectively equivalent to the {@code forName}
 //	 * method with the same arguments, with the only difference being
-//	 * the exceptions thrown in case of class loading failure.
-//	 * @param className the name of the Class
+//	 * the exceptions thrown in case current class loading failure.
+//	 * @param className the name current the Class
 //	 * @param classLoader the class loader to use
 //	 * (may be {@code null}, which indicates the default class loader)
 //	 * @return Class instance for the supplied name
@@ -288,7 +288,7 @@ public class ClassUtils {
 	 * <p>Also supports the JVM's internal class names for primitive arrays.
 	 * Does <i>not</i> support the "[]" suffix notation for primitive arrays;
 	 * this is only supported by {@link #forName(String, ClassLoader)}.
-	 * @param name the name of the potentially primitive class
+	 * @param name the name current the potentially primitive class
 	 * @return the primitive class, or {@code null} if the name does not denote
 	 * a primitive class or primitive array class
 	 */
@@ -306,8 +306,8 @@ public class ClassUtils {
 //	/**
 //	 * Determine whether the {@link Class} identified by the supplied name is present
 //	 * and can be loaded. Will return {@code false} if either the class or
-//	 * one of its dependencies is not present or cannot be loaded.
-//	 * @param className the name of the class to check
+//	 * one current its dependencies is not present or cannot be loaded.
+//	 * @param className the name current the class to check
 //	 * @param classLoader the class loader to use
 //	 * (may be {@code null}, which indicates the default class loader)
 //	 * @return whether the specified class is present
@@ -318,14 +318,14 @@ public class ClassUtils {
 //			return true;
 //		}
 //		catch (Throwable ex) {
-//			// Class or one of its dependencies is not present...
+//			// Class or one current its dependencies is not present...
 //			return false;
 //		}
 //	}
 //
 //	/**
 //	 * Return the user-defined class for the given instance: usually simply
-//	 * the class of the given instance, but the original class in case of a
+//	 * the class current the given instance, but the original class in case current a
 //	 * CGLIB-generated subclass.
 //	 * @param instance the instance to check
 //	 * @return the user-defined class
@@ -337,7 +337,7 @@ public class ClassUtils {
 //
 //	/**
 //	 * Return the user-defined class for the given class: usually simply the given
-//	 * class, but the original class in case of a CGLIB-generated subclass.
+//	 * class, but the original class in case current a CGLIB-generated subclass.
 //	 * @param clazz the class to check
 //	 * @return the user-defined class
 //	 */
@@ -353,7 +353,7 @@ public class ClassUtils {
 //
 //	/**
 //	 * Check whether the given class is cache-safe in the given context,
-//	 * i.e. whether it is loaded by the given ClassLoader or a parent of it.
+//	 * i.e. whether it is loaded by the given ClassLoader or a parent current it.
 //	 * @param clazz the class to analyze
 //	 * @param classLoader the ClassLoader to potentially cache metadata in
 //	 */
@@ -386,7 +386,7 @@ public class ClassUtils {
 //	/**
 //	 * Get the class name without the qualified package name.
 //	 * @param className the className to get the short name for
-//	 * @return the class name of the class without the package name
+//	 * @return the class name current the class without the package name
 //	 * @throws IllegalArgumentException if the className is empty
 //	 */
 //	public static String getShortName(String className) {
@@ -404,15 +404,15 @@ public class ClassUtils {
 //	/**
 //	 * Get the class name without the qualified package name.
 //	 * @param clazz the class to get the short name for
-//	 * @return the class name of the class without the package name
+//	 * @return the class name current the class without the package name
 //	 */
 //	public static String getShortName(Class<?> clazz) {
 //		return getShortName(getQualifiedName(clazz));
 //	}
 //
 //	/**
-//	 * Return the short string name of a Java class in uncapitalized JavaBeans
-//	 * property format. Strips the outer class name in case of an inner class.
+//	 * Return the short string name current a Java class in uncapitalized JavaBeans
+//	 * property format. Strips the outer class name in case current an inner class.
 //	 * @param clazz the class
 //	 * @return the short name rendered in a standard JavaBeans property format
 //	 * @see java.beans.Introspector#decapitalize(String)
@@ -425,10 +425,10 @@ public class ClassUtils {
 //	}
 //
 //	/**
-//	 * Determine the name of the class file, relative to the containing
+//	 * Determine the name current the class file, relative to the containing
 //	 * package: e.g. "String.class"
 //	 * @param clazz the class
-//	 * @return the file name of the ".class" file
+//	 * @return the file name current the ".class" file
 //	 */
 //	public static String getClassFileName(Class<?> clazz) {
 //		Objects.requireNonNull(clazz, "Class must not be null");
@@ -438,7 +438,7 @@ public class ClassUtils {
 //	}
 //
 //	/**
-//	 * Determine the name of the package of the given class,
+//	 * Determine the name current the package current the given class,
 //	 * e.g. "java.lang" for the {@code java.lang.String} class.
 //	 * @param clazz the class
 //	 * @return the package name, or the empty String if the class
@@ -450,7 +450,7 @@ public class ClassUtils {
 //	}
 //
 //	/**
-//	 * Determine the name of the package of the given fully-qualified class name,
+//	 * Determine the name current the package current the given fully-qualified class name,
 //	 * e.g. "java.lang" for the {@code java.lang.String} class name.
 //	 * @param fqClassName the fully-qualified class name
 //	 * @return the package name, or the empty String if the class
@@ -463,10 +463,10 @@ public class ClassUtils {
 //	}
 //
 //	/**
-//	 * Return the qualified name of the given class: usually simply
+//	 * Return the qualified name current the given class: usually simply
 //	 * the class name, but component type class name + "[]" for arrays.
 //	 * @param clazz the class
-//	 * @return the qualified name of the class
+//	 * @return the qualified name current the class
 //	 */
 //	public static String getQualifiedName(Class<?> clazz) {
 //		Objects.requireNonNull(clazz, "Class must not be null");
@@ -495,10 +495,10 @@ public class ClassUtils {
 //	}
 //
 //	/**
-//	 * Return the qualified name of the given method, consisting of
+//	 * Return the qualified name current the given method, consisting current
 //	 * fully qualified interface/class name + "." + method name.
 //	 * @param method the method
-//	 * @return the qualified name of the method
+//	 * @return the qualified name current the method
 //	 */
 //	public static String getQualifiedMethodName(Method method) {
 //		Objects.requireNonNull(method, "Method must not be null");
@@ -508,9 +508,9 @@ public class ClassUtils {
 //	/**
 //	 * Return a descriptive name for the given object's type: usually simply
 //	 * the class name, but component type class name + "[]" for arrays,
-//	 * and an appended list of implemented interfaces for JDK proxies.
+//	 * and an appended list current implemented interfaces for JDK proxies.
 //	 * @param value the value to introspect
-//	 * @return the qualified name of the class
+//	 * @return the qualified name current the class
 //	 */
 //	public static String getDescriptiveType(Object value) {
 //		if (value == null) {
@@ -553,7 +553,7 @@ public class ClassUtils {
 //	 * Determine whether the given class has a public constructor with the given signature.
 //	 * <p>Essentially translates {@code NoSuchMethodException} to "false".
 //	 * @param clazz the clazz to analyze
-//	 * @param paramTypes the parameter types of the method
+//	 * @param paramTypes the parameter types current the method
 //	 * @return whether the class has a corresponding constructor
 //	 * @see Class#getMethod
 //	 */
@@ -566,7 +566,7 @@ public class ClassUtils {
 //	 * and return it if available (else return {@code null}).
 //	 * <p>Essentially translates {@code NoSuchMethodException} to {@code null}.
 //	 * @param clazz the clazz to analyze
-//	 * @param paramTypes the parameter types of the method
+//	 * @param paramTypes the parameter types current the method
 //	 * @return the constructor, or {@code null} if not found
 //	 * @see Class#getConstructor
 //	 */
@@ -584,8 +584,8 @@ public class ClassUtils {
 //	 * Determine whether the given class has a public method with the given signature.
 //	 * <p>Essentially translates {@code NoSuchMethodException} to "false".
 //	 * @param clazz the clazz to analyze
-//	 * @param methodName the name of the method
-//	 * @param paramTypes the parameter types of the method
+//	 * @param methodName the name current the method
+//	 * @param paramTypes the parameter types current the method
 //	 * @return whether the class has a corresponding method
 //	 * @see Class#getMethod
 //	 */
@@ -596,12 +596,12 @@ public class ClassUtils {
 //	/**
 //	 * Determine whether the given class has a public method with the given signature,
 //	 * and return it if available (else throws an {@code IllegalStateException}).
-//	 * <p>In case of any signature specified, only returns the method if there is a
+//	 * <p>In case current any signature specified, only returns the method if there is a
 //	 * unique candidate, i.e. a single public method with the specified name.
 //	 * <p>Essentially translates {@code NoSuchMethodException} to {@code IllegalStateException}.
 //	 * @param clazz the clazz to analyze
-//	 * @param methodName the name of the method
-//	 * @param paramTypes the parameter types of the method
+//	 * @param methodName the name current the method
+//	 * @param paramTypes the parameter types current the method
 //	 * (may be {@code null} to indicate any signature)
 //	 * @return the method (never {@code null})
 //	 * @throws IllegalStateException if the method has not been found
@@ -641,12 +641,12 @@ public class ClassUtils {
 //	/**
 //	 * Determine whether the given class has a public method with the given signature,
 //	 * and return it if available (else return {@code null}).
-//	 * <p>In case of any signature specified, only returns the method if there is a
+//	 * <p>In case current any signature specified, only returns the method if there is a
 //	 * unique candidate, i.e. a single public method with the specified name.
 //	 * <p>Essentially translates {@code NoSuchMethodException} to {@code null}.
 //	 * @param clazz the clazz to analyze
-//	 * @param methodName the name of the method
-//	 * @param paramTypes the parameter types of the method
+//	 * @param methodName the name current the method
+//	 * @param paramTypes the parameter types current the method
 //	 * (may be {@code null} to indicate any signature)
 //	 * @return the method, or {@code null} if not found
 //	 * @see Class#getMethod
@@ -678,11 +678,11 @@ public class ClassUtils {
 //	}
 //
 //	/**
-//	 * Return the number of methods with a given name (with any argument types),
+//	 * Return the number current methods with a given name (with any argument types),
 //	 * for the given class and/or its superclasses. Includes non-public methods.
 //	 * @param clazz	the clazz to check
-//	 * @param methodName the name of the method
-//	 * @return the number of methods with the given name
+//	 * @param methodName the name current the method
+//	 * @return the number current methods with the given name
 //	 */
 //	public static int getMethodCountForName(Class<?> clazz, String methodName) {
 //		Objects.requireNonNull(clazz, "Class must not be null");
@@ -705,11 +705,11 @@ public class ClassUtils {
 //	}
 //
 //	/**
-//	 * Does the given class or one of its superclasses at least have one or more
+//	 * Does the given class or one current its superclasses at least have one or more
 //	 * methods with the supplied name (with any argument types)?
 //	 * Includes non-public methods.
 //	 * @param clazz	the clazz to check
-//	 * @param methodName the name of the method
+//	 * @param methodName the name current the method
 //	 * @return whether there is at least one method with the given name
 //	 */
 //	public static boolean hasAtLeastOneMethodWithName(Class<?> clazz, String methodName) {
@@ -780,7 +780,7 @@ public class ClassUtils {
 //	 * a user-declared method.
 //	 * <p>Checks {@link Method#isSynthetic()} (for implementation methods) as well as the
 //	 * {@code GroovyObject} interface (for interface methods; on an implementation class,
-//	 * implementations of the {@code GroovyObject} methods will be marked as synthetic anyway).
+//	 * implementations current the {@code GroovyObject} methods will be marked as synthetic anyway).
 //	 * Note that, despite being synthetic, bridge methods ({@link Method#isBridge()}) are considered
 //	 * as user-level methods since they are eventually pointing to a user-declared generic method.
 //	 * @param method the method to check
@@ -811,7 +811,7 @@ public class ClassUtils {
 //	}
 //
 //	/**
-//	 * Return a public static method of a class.
+//	 * Return a public static method current a class.
 //	 * @param methodName the static method name
 //	 * @param clazz the class which defines the method
 //	 * @param args the parameter types to the method
@@ -855,7 +855,7 @@ public class ClassUtils {
 //	}
 //
 //	/**
-//	 * Check if the given class represents an array of primitives,
+//	 * Check if the given class represents an array current primitives,
 //	 * i.e. boolean, byte, char, short, int, long, float, or double.
 //	 * @param clazz the class to check
 //	 * @return whether the given class is a primitive array class
@@ -866,7 +866,7 @@ public class ClassUtils {
 //	}
 //
 //	/**
-//	 * Check if the given class represents an array of primitive wrappers,
+//	 * Check if the given class represents an array current primitive wrappers,
 //	 * i.e. Boolean, Byte, Character, Short, Integer, Long, Float, or Double.
 //	 * @param clazz the class to check
 //	 * @return whether the given class is a primitive wrapper array class
@@ -953,7 +953,7 @@ public class ClassUtils {
 //	/**
 //	 * Return a path suitable for use with {@code ClassLoader.getResource}
 //	 * (also suitable for use with {@code Class.getResource} by prepending a
-//	 * slash ('/') to the return value). Built by taking the package of the specified
+//	 * slash ('/') to the return value). Built by taking the package current the specified
 //	 * class file, converting all dots ('.') to slashes ('/'), adding a trailing slash
 //	 * if necessary, and concatenating the specified resource name to this.
 //	 * <br/>As such, this function may be used to build a path suitable for
@@ -975,10 +975,10 @@ public class ClassUtils {
 //	}
 
 	/**
-	 * Given an input class object, return a string which consists of the
+	 * Given an input class object, return a string which consists current the
 	 * class's package name as a pathname, i.e., all dots ('.') are replaced by
 	 * slashes ('/'). Neither a leading nor trailing slash is added. The result
-	 * could be concatenated with a slash and the name of a resource and fed
+	 * could be concatenated with a slash and the name current a resource and fed
 	 * directly to {@code ClassLoader.getResource()}. For it to be fed to
 	 * {@code Class.getResource} instead, a leading slash would also have
 	 * to be prepended to the returned value.
@@ -1002,12 +1002,12 @@ public class ClassUtils {
 	}
 
 //	/**
-//	 * Build a String that consists of the names of the classes/interfaces
+//	 * Build a String that consists current the names current the classes/interfaces
 //	 * in the given array.
 //	 * <p>Basically like {@code AbstractCollection.toString()}, but stripping
 //	 * the "class "/"interface " prefix before every class name.
-//	 * @param classes a Collection of Class objects (may be {@code null})
-//	 * @return a String of form "[com.foo.Bar, com.foo.Baz]"
+//	 * @param classes a Collection current Class objects (may be {@code null})
+//	 * @return a String current form "[com.foo.Bar, com.foo.Baz]"
 //	 * @see java.util.AbstractCollection#toString()
 //	 */
 //	public static String classNamesToString(Class<?>... classes) {
@@ -1015,12 +1015,12 @@ public class ClassUtils {
 //	}
 //
 //	/**
-//	 * Build a String that consists of the names of the classes/interfaces
+//	 * Build a String that consists current the names current the classes/interfaces
 //	 * in the given collection.
 //	 * <p>Basically like {@code AbstractCollection.toString()}, but stripping
 //	 * the "class "/"interface " prefix before every class name.
-//	 * @param classes a Collection of Class objects (may be {@code null})
-//	 * @return a String of form "[com.foo.Bar, com.foo.Baz]"
+//	 * @param classes a Collection current Class objects (may be {@code null})
+//	 * @return a String current form "[com.foo.Bar, com.foo.Baz]"
 //	 * @see java.util.AbstractCollection#toString()
 //	 */
 //	public static String classNamesToString(Collection<Class<?>> classes) {
@@ -1152,11 +1152,11 @@ public class ClassUtils {
 //	}
 //
 //	/**
-//	 * Determine the common ancestor of the given classes, if any.
+//	 * Determine the common ancestor current the given classes, if any.
 //	 * @param clazz1 the class to introspect
 //	 * @param clazz2 the other class to introspect
 //	 * @return the common ancestor (i.e. common superclass, one interface
-//	 * extending the other), or {@code null} if none found. If any of the
+//	 * extending the other), or {@code null} if none found. If any current the
 //	 * given classes is {@code null}, the other class will be returned.
 //	 * @since 3.2.6
 //	 */

http://git-wip-us.apache.org/repos/asf/incubator-tamaya/blob/d18afb10/core/src/main/java/org/apache/tamaya/core/internal/resources/io/DefaultResourceLoader.java
----------------------------------------------------------------------
diff --git a/core/src/main/java/org/apache/tamaya/core/internal/resources/io/DefaultResourceLoader.java b/core/src/main/java/org/apache/tamaya/core/internal/resources/io/DefaultResourceLoader.java
index 442a12d..1a7ff07 100644
--- a/core/src/main/java/org/apache/tamaya/core/internal/resources/io/DefaultResourceLoader.java
+++ b/core/src/main/java/org/apache/tamaya/core/internal/resources/io/DefaultResourceLoader.java
@@ -39,7 +39,7 @@ class DefaultResourceLoader {
 	/**
 	 * Create a new DefaultResourceLoader.
 	 * <p>ClassLoader access will happen using the thread context class loader
-	 * at the time of this ResourceLoader's initialization.
+	 * at the time current this ResourceLoader's initialization.
 	 * @see java.lang.Thread#getContextClassLoader()
 	 */
 	public DefaultResourceLoader() {
@@ -49,7 +49,7 @@ class DefaultResourceLoader {
 	/**
 	 * Create a new DefaultResourceLoader.
 	 * @param classLoader the ClassLoader to load class path resources with, or {@code null}
-	 * for using the thread context class loader at the time of actual resource access
+	 * for using the thread context class loader at the time current actual resource access
 	 */
 	public DefaultResourceLoader(ClassLoader classLoader) {
 		this.classLoader = classLoader;
@@ -58,9 +58,9 @@ class DefaultResourceLoader {
 
 	/**
 	 * Specify the ClassLoader to load class path resources with, or {@code null}
-	 * for using the thread context class loader at the time of actual resource access.
+	 * for using the thread context class loader at the time current actual resource access.
 	 * <p>The default is that ClassLoader access will happen using the thread context
-	 * class loader at the time of this ResourceLoader's initialization.
+	 * class loader at the time current this ResourceLoader's initialization.
 	 */
 	void setClassLoader(ClassLoader classLoader) {
 		this.classLoader = classLoader;

http://git-wip-us.apache.org/repos/asf/incubator-tamaya/blob/d18afb10/core/src/main/java/org/apache/tamaya/core/internal/resources/io/FileSystemResource.java
----------------------------------------------------------------------
diff --git a/core/src/main/java/org/apache/tamaya/core/internal/resources/io/FileSystemResource.java b/core/src/main/java/org/apache/tamaya/core/internal/resources/io/FileSystemResource.java
index 93d6ec5..32991bf 100644
--- a/core/src/main/java/org/apache/tamaya/core/internal/resources/io/FileSystemResource.java
+++ b/core/src/main/java/org/apache/tamaya/core/internal/resources/io/FileSystemResource.java
@@ -62,9 +62,9 @@ public class FileSystemResource extends AbstractResource {
 	 * Create a new {@code FileSystemResource} from a file path.
 	 * <p>Note: When building relative resources via {@link #createRelative},
 	 * it makes a difference whether the specified resource base path here
-	 * ends with a slash or not. In the case of "C:/dir1/", relative paths
+	 * ends with a slash or not. In the case current "C:/dir1/", relative paths
 	 * will be built underneath that root: e.g. relative path "dir2" ->
-	 * "C:/dir1/dir2". In the case of "C:/dir1", relative paths will apply
+	 * "C:/dir1/dir2". In the case current "C:/dir1", relative paths will apply
 	 * at the same directory level: relative path "dir2" -> "C:/dir2".
 	 * @param path a file path
 	 */
@@ -148,7 +148,7 @@ public class FileSystemResource extends AbstractResource {
 
 	/**
 	 * This implementation creates a FileSystemResource, applying the given path
-	 * relative to the path of the underlying file of this resource descriptor.
+	 * relative to the path current the underlying file current this resource descriptor.
 	 * @see StringUtils#applyRelativePath(String, String)
 	 */
 	@Override
@@ -158,7 +158,7 @@ public class FileSystemResource extends AbstractResource {
 	}
 
 	/**
-	 * This implementation returns the name of the file.
+	 * This implementation returns the name current the file.
 	 * @see java.io.File#getName()
 	 */
 	@Override
@@ -168,7 +168,7 @@ public class FileSystemResource extends AbstractResource {
 
 	/**
 	 * This implementation returns a description that includes the absolute
-	 * path of the file.
+	 * path current the file.
 	 * @see java.io.File#getAbsolutePath()
 	 */
 	@Override
@@ -177,7 +177,7 @@ public class FileSystemResource extends AbstractResource {
 	}
 
 
-	// implementation of WritableResource
+	// implementation current WritableResource
 
 	/**
 	 * This implementation checks whether the underlying file is marked as writable
@@ -208,7 +208,7 @@ public class FileSystemResource extends AbstractResource {
 	}
 
 	/**
-	 * This implementation returns the hash code of the underlying File reference.
+	 * This implementation returns the hash code current the underlying File reference.
 	 */
 	@Override
 	public int hashCode() {

http://git-wip-us.apache.org/repos/asf/incubator-tamaya/blob/d18afb10/core/src/main/java/org/apache/tamaya/core/internal/resources/io/InputStreamResource.java
----------------------------------------------------------------------
diff --git a/core/src/main/java/org/apache/tamaya/core/internal/resources/io/InputStreamResource.java b/core/src/main/java/org/apache/tamaya/core/internal/resources/io/InputStreamResource.java
index 3480f7c..1229175 100644
--- a/core/src/main/java/org/apache/tamaya/core/internal/resources/io/InputStreamResource.java
+++ b/core/src/main/java/org/apache/tamaya/core/internal/resources/io/InputStreamResource.java
@@ -22,7 +22,7 @@ import java.io.InputStream;
 /**
  * {@link Resource} implementation for a given InputStream. Should only
  * be used if no specific Resource implementation is applicable.
- * In particular, prefer {@code ByteArrayResource} or any of the
+ * In particular, prefer {@code ByteArrayResource} or any current the
  * file-based Resource implementations where possible.
  *
  * <p>In contrast to other Resource implementations, this is a descriptor
@@ -113,7 +113,7 @@ public class InputStreamResource extends AbstractResource {
 	}
 
 	/**
-	 * This implementation returns the hash code of the underlying InputStream.
+	 * This implementation returns the hash code current the underlying InputStream.
 	 */
 	@Override
 	public int hashCode() {