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 2016/08/16 13:51:49 UTC

[12/15] incubator-tamaya git commit: Implemented UI improvements and bugfixes. Fixed some impl details.

Implemented UI improvements and bugfixes.
Fixed some impl details.


Project: http://git-wip-us.apache.org/repos/asf/incubator-tamaya/repo
Commit: http://git-wip-us.apache.org/repos/asf/incubator-tamaya/commit/d86d5279
Tree: http://git-wip-us.apache.org/repos/asf/incubator-tamaya/tree/d86d5279
Diff: http://git-wip-us.apache.org/repos/asf/incubator-tamaya/diff/d86d5279

Branch: refs/heads/master
Commit: d86d52797f73286dd61e1b9335e5edf56a872b91
Parents: 0352ef0
Author: anatole <an...@apache.org>
Authored: Sat Jun 25 01:21:16 2016 +0200
Committer: anatole <an...@apache.org>
Committed: Tue Aug 16 15:51:30 2016 +0200

----------------------------------------------------------------------
 .../org/apache/tamaya/events/ui/EventView.java  |  9 ++-
 modules/model/pom.xml                           |  6 ++
 .../org/apache/tamaya/model/ConfigModel.java    |  6 ++
 .../apache/tamaya/model/ConfigModelManager.java | 46 ++++++++++--
 .../java/org/apache/tamaya/model/Usage.java     | 13 +++-
 .../org/apache/tamaya/model/Validation.java     |  4 +-
 .../ConfiguredInlineModelProviderSpi.java       |  6 +-
 .../ConfiguredPropertiesModelProviderSpi.java   |  6 +-
 .../ConfiguredResourcesModelProviderSpi.java    | 13 ++--
 .../ConfiguredTypeEventsModelPopulator.java     |  6 +-
 .../tamaya/model/spi/AbstractConfigModel.java   | 10 ++-
 .../tamaya/model/spi/ConfigModelReader.java     | 14 ++--
 .../org/apache/tamaya/model/spi/GroupModel.java | 13 +++-
 .../apache/tamaya/model/spi/ParameterModel.java | 35 ++++++---
 .../apache/tamaya/model/spi/SectionModel.java   | 19 +++--
 .../tamaya/model/ConfigModelProviderTest.java   | 17 +++--
 .../tamaya/model/ConfigUsageStatsTest.java      | 17 +++--
 .../apache/tamaya/model/ValidationTests.java    |  5 ++
 .../src/test/resources/examples/configmodel.ini | 14 ++--
 .../test/resources/examples/configmodel.json    | 55 +++++++-------
 .../resources/examples/configmodel.properties   | 78 ++++++++++----------
 .../spisupport/PropertyConverterManager.java    |  2 +-
 .../tamaya/spisupport/PropertyFiltering.java    |  2 +-
 modules/ui/pom.xml                              |  6 ++
 .../ui/internal/ConfiguredMessageProvider.java  |  2 +-
 .../internal/ResourceBundleMessageProvider.java |  2 +-
 .../org/apache/tamaya/ui/views/ConfigView.java  | 27 ++++---
 pom.xml                                         |  6 ++
 28 files changed, 277 insertions(+), 162 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/incubator-tamaya/blob/d86d5279/modules/events/src/main/java/org/apache/tamaya/events/ui/EventView.java
----------------------------------------------------------------------
diff --git a/modules/events/src/main/java/org/apache/tamaya/events/ui/EventView.java b/modules/events/src/main/java/org/apache/tamaya/events/ui/EventView.java
index bee6e7b..2c4dead 100644
--- a/modules/events/src/main/java/org/apache/tamaya/events/ui/EventView.java
+++ b/modules/events/src/main/java/org/apache/tamaya/events/ui/EventView.java
@@ -59,17 +59,22 @@ public class EventView extends VerticalSpacedLayout implements View {
         }
 
         @Override
+        public String getName() {
+            return "view.events.name";
+        }
+
+        @Override
         public String getUrlPattern() {
             return "/events";
         }
 
         @Override
         public String getDisplayName() {
-            return "view.events.name";
+            return getName();
         }
 
         @Override
-        public View createView(){
+        public View createView(Object... params){
             return new EventView();
         }
     }

http://git-wip-us.apache.org/repos/asf/incubator-tamaya/blob/d86d5279/modules/model/pom.xml
----------------------------------------------------------------------
diff --git a/modules/model/pom.xml b/modules/model/pom.xml
index b121c24..c03ba0e 100644
--- a/modules/model/pom.xml
+++ b/modules/model/pom.xml
@@ -94,6 +94,12 @@ under the License.
             <groupId>junit</groupId>
             <artifactId>junit</artifactId>
         </dependency>
+        <dependency>
+            <groupId>org.apache.tamaya.ext</groupId>
+            <artifactId>tamaya-ui</artifactId>
+            <version>${project.version}</version>
+            <optional>true</optional>
+        </dependency>
     </dependencies>
 
     <build>

http://git-wip-us.apache.org/repos/asf/incubator-tamaya/blob/d86d5279/modules/model/src/main/java/org/apache/tamaya/model/ConfigModel.java
----------------------------------------------------------------------
diff --git a/modules/model/src/main/java/org/apache/tamaya/model/ConfigModel.java b/modules/model/src/main/java/org/apache/tamaya/model/ConfigModel.java
index 77c3fb0..88403d1 100644
--- a/modules/model/src/main/java/org/apache/tamaya/model/ConfigModel.java
+++ b/modules/model/src/main/java/org/apache/tamaya/model/ConfigModel.java
@@ -28,6 +28,12 @@ import java.util.Collection;
 public interface ConfigModel {
 
     /**
+     * Access the owner.
+     * @return the owner of this model, never null.
+     */
+    String getOwner();
+
+    /**
      * Get the type of item that is modelled.
      * @return the modelled type, never null.
      */

http://git-wip-us.apache.org/repos/asf/incubator-tamaya/blob/d86d5279/modules/model/src/main/java/org/apache/tamaya/model/ConfigModelManager.java
----------------------------------------------------------------------
diff --git a/modules/model/src/main/java/org/apache/tamaya/model/ConfigModelManager.java b/modules/model/src/main/java/org/apache/tamaya/model/ConfigModelManager.java
index b8ece0c..8a3cbc6 100644
--- a/modules/model/src/main/java/org/apache/tamaya/model/ConfigModelManager.java
+++ b/modules/model/src/main/java/org/apache/tamaya/model/ConfigModelManager.java
@@ -59,12 +59,46 @@ public final class ConfigModelManager {
                 return k2.getName().compareTo(k2.getName());
             }
         });
+        b.append("TYPE    OWNER      NAME                                              MANDATORY   DESCRIPTION\n");
+        b.append("-----------------------------------------------------------------------------------------------------\n");
         for(ConfigModel model:models){
-            b.append(model.getName()).append('(').append(model.getType())
-                    .append("):\n  ").append(
-            model.getDescription()).append("mandatory=").append(model.isRequired());
-            b.append('\n');
+            switch(model.getType()){
+                case Parameter:
+                    b.append("PARAM   ");
+                    break;
+                case Section:
+                    b.append("SECTION ");
+                    break;
+                case Group:
+                    b.append("GROUP   ");
+                    break;
+            }
+            b.append(formatWithFixedLength(model.getOwner(), 10)).append(' ');
+            b.append(formatWithFixedLength(model.getName(), 50));
+            if(model.isRequired()){
+                b.append(formatWithFixedLength("yes", 12));
+            }else{
+                b.append(formatWithFixedLength("no", 12));
+            }
+            if(model.getDescription()!=null){
+                b.append(model.getDescription().replace("\n", "\\\n").replace("\"", "'")).append("\"");
+            }
+            b.append("\n");
+        }
+        return b.toString();
+    }
+
+    private static String formatWithFixedLength(String name, int targetLength) {
+        targetLength = targetLength-1;
+        StringBuilder b = new StringBuilder();
+        if(name.length() > targetLength){
+            name = name.substring(0, targetLength);
+        }
+        b.append(name);
+        for(int i=0;i<(targetLength-name.length());i++){
+            b.append(' ');
         }
+        b.append(' ');
         return b.toString();
     }
 
@@ -193,10 +227,10 @@ public final class ConfigModelManager {
                         }
                     }
                 }
-                result.add(Validation.ofUndefined(entry.getKey(), ModelTarget.Parameter));
+                result.add(Validation.ofUndefined("<auto>", entry.getKey(), ModelTarget.Parameter));
             }
             for(String area:areas){
-                result.add(Validation.ofUndefined(area, ModelTarget.Section));
+                result.add(Validation.ofUndefined("<auto>", area, ModelTarget.Section));
             }
         }
         return result;

http://git-wip-us.apache.org/repos/asf/incubator-tamaya/blob/d86d5279/modules/model/src/main/java/org/apache/tamaya/model/Usage.java
----------------------------------------------------------------------
diff --git a/modules/model/src/main/java/org/apache/tamaya/model/Usage.java b/modules/model/src/main/java/org/apache/tamaya/model/Usage.java
index aad0ff2..2d84915 100644
--- a/modules/model/src/main/java/org/apache/tamaya/model/Usage.java
+++ b/modules/model/src/main/java/org/apache/tamaya/model/Usage.java
@@ -214,7 +214,7 @@ public final class Usage {
     private AccessDetail getAccessDetails(String accessPoint, String[] trace) {
         AccessDetail details = accessDetails.get(accessPoint);
         if(details==null){
-            details = new AccessDetail(accessPoint, trace);
+            details = new AccessDetail(key, accessPoint, trace);
             accessDetails.put(accessPoint, details);
         }
         return details;
@@ -224,6 +224,7 @@ public final class Usage {
      * Class modelling the access details tracked per detailed item, e.g. per class in the owning package.
      */
     public static final class AccessDetail {
+        private String key;
         private AtomicLong accessCount = new AtomicLong();
         private long lastAccessTS;
         private long firstAccessTS;
@@ -231,7 +232,8 @@ public final class Usage {
         private String accessPoint;
         private Map<Long, String> trackedValues;
 
-        public AccessDetail(String accessPoint, String[] stackTrace){
+        public AccessDetail(String key, String accessPoint, String[] stackTrace){
+            this.key = Objects.requireNonNull(key);
             this.accessPoint = Objects.requireNonNull(accessPoint);
             this.stackTrace = stackTrace.clone();
         }
@@ -259,6 +261,10 @@ public final class Usage {
             return count;
         }
 
+        public String getKey(){
+            return key;
+        }
+
         public long getAccessCount() {
             return accessCount.get();
         }
@@ -292,7 +298,8 @@ public final class Usage {
         @Override
         public String toString() {
             return "AccessDetails{" +
-                    "accessCount=" + accessCount +
+                    "key=" + key +
+                    ", accessCount=" + accessCount +
                     ", lastAccessTS=" + lastAccessTS +
                     ", firstAccessTS=" + firstAccessTS +
                     ", stackTrace=" + Arrays.toString(stackTrace) +

http://git-wip-us.apache.org/repos/asf/incubator-tamaya/blob/d86d5279/modules/model/src/main/java/org/apache/tamaya/model/Validation.java
----------------------------------------------------------------------
diff --git a/modules/model/src/main/java/org/apache/tamaya/model/Validation.java b/modules/model/src/main/java/org/apache/tamaya/model/Validation.java
index 1bcaf9f..d40102c 100644
--- a/modules/model/src/main/java/org/apache/tamaya/model/Validation.java
+++ b/modules/model/src/main/java/org/apache/tamaya/model/Validation.java
@@ -123,8 +123,8 @@ public final class Validation {
      * @param type model type 
      * @return a corresponding configModel item
      */
-    public static Validation ofUndefined(final String key, final ModelTarget type) {
-        return new Validation(new AbstractConfigModel(key, false, "Undefined key: " + key) {
+    public static Validation ofUndefined(final String owner, final String key, final ModelTarget type) {
+        return new Validation(new AbstractConfigModel(owner, key, false, "Undefined key: " + key) {
 
             @Override
             public ModelTarget getType() {

http://git-wip-us.apache.org/repos/asf/incubator-tamaya/blob/d86d5279/modules/model/src/main/java/org/apache/tamaya/model/internal/ConfiguredInlineModelProviderSpi.java
----------------------------------------------------------------------
diff --git a/modules/model/src/main/java/org/apache/tamaya/model/internal/ConfiguredInlineModelProviderSpi.java b/modules/model/src/main/java/org/apache/tamaya/model/internal/ConfiguredInlineModelProviderSpi.java
index 8111491..2e4f379 100644
--- a/modules/model/src/main/java/org/apache/tamaya/model/internal/ConfiguredInlineModelProviderSpi.java
+++ b/modules/model/src/main/java/org/apache/tamaya/model/internal/ConfiguredInlineModelProviderSpi.java
@@ -53,7 +53,11 @@ public class ConfiguredInlineModelProviderSpi implements ModelProviderSpi {
         if (enabled) {
             LOG.info("Reading model configuration from config...");
             Map<String,String> config = ConfigurationProvider.getConfiguration().getProperties();
-            configModels.addAll(ConfigModelReader.loadValidations(config));
+            String owner = config.get("_model.provider");
+            if(owner==null){
+                owner = config.toString();
+            }
+            configModels.addAll(ConfigModelReader.loadValidations(owner, config));
         }
         configModels = Collections.unmodifiableList(configModels);
     }

http://git-wip-us.apache.org/repos/asf/incubator-tamaya/blob/d86d5279/modules/model/src/main/java/org/apache/tamaya/model/internal/ConfiguredPropertiesModelProviderSpi.java
----------------------------------------------------------------------
diff --git a/modules/model/src/main/java/org/apache/tamaya/model/internal/ConfiguredPropertiesModelProviderSpi.java b/modules/model/src/main/java/org/apache/tamaya/model/internal/ConfiguredPropertiesModelProviderSpi.java
index 62158da..57af99c 100644
--- a/modules/model/src/main/java/org/apache/tamaya/model/internal/ConfiguredPropertiesModelProviderSpi.java
+++ b/modules/model/src/main/java/org/apache/tamaya/model/internal/ConfiguredPropertiesModelProviderSpi.java
@@ -129,7 +129,11 @@ public class ConfiguredPropertiesModelProviderSpi implements ModelProviderSpi {
                     Properties props = new Properties();
                     props.load(is);
                     Map<String,String> data = MapPropertySource.getMap(props);
-                    configModels.addAll(ConfigModelReader.loadValidations(
+                    String owner = data.get("_model.owner");
+                    if(owner==null){
+                        owner = config.toString();
+                    }
+                    configModels.addAll(ConfigModelReader.loadValidations(owner,
                             data));
                 } catch (Exception e) {
                     Logger.getLogger(getClass().getName()).log(Level.SEVERE,

http://git-wip-us.apache.org/repos/asf/incubator-tamaya/blob/d86d5279/modules/model/src/main/java/org/apache/tamaya/model/internal/ConfiguredResourcesModelProviderSpi.java
----------------------------------------------------------------------
diff --git a/modules/model/src/main/java/org/apache/tamaya/model/internal/ConfiguredResourcesModelProviderSpi.java b/modules/model/src/main/java/org/apache/tamaya/model/internal/ConfiguredResourcesModelProviderSpi.java
index 7c5836e..85f2ac7 100644
--- a/modules/model/src/main/java/org/apache/tamaya/model/internal/ConfiguredResourcesModelProviderSpi.java
+++ b/modules/model/src/main/java/org/apache/tamaya/model/internal/ConfiguredResourcesModelProviderSpi.java
@@ -21,11 +21,7 @@ package org.apache.tamaya.model.internal;
 import java.io.IOException;
 import java.io.InputStream;
 import java.net.URL;
-import java.util.ArrayList;
-import java.util.Collection;
-import java.util.Collections;
-import java.util.Enumeration;
-import java.util.List;
+import java.util.*;
 import java.util.logging.Level;
 import java.util.logging.Logger;
 
@@ -141,7 +137,12 @@ public class ConfiguredResourcesModelProviderSpi implements ModelProviderSpi {
             for (final URL config : urls) {
                 try (InputStream is = config.openStream()) {
                     final ConfigurationData data = ConfigurationFormats.readConfigurationData(config);
-                    configModels.addAll(ConfigModelReader.loadValidations(data.getCombinedProperties()));
+                    Map<String,String> props = data.getCombinedProperties();
+                    String owner = props.get("_model.provider");
+                    if(owner==null){
+                        owner = config.toString();
+                    }
+                    configModels.addAll(ConfigModelReader.loadValidations(owner, props));
                 } catch (final Exception e) {
                     Logger.getLogger(getClass().getName()).log(Level.SEVERE,
                             "Error loading config model data from " + config, e);

http://git-wip-us.apache.org/repos/asf/incubator-tamaya/blob/d86d5279/modules/model/src/main/java/org/apache/tamaya/model/internal/ConfiguredTypeEventsModelPopulator.java
----------------------------------------------------------------------
diff --git a/modules/model/src/main/java/org/apache/tamaya/model/internal/ConfiguredTypeEventsModelPopulator.java b/modules/model/src/main/java/org/apache/tamaya/model/internal/ConfiguredTypeEventsModelPopulator.java
index 34bb5bd..f6169ad 100644
--- a/modules/model/src/main/java/org/apache/tamaya/model/internal/ConfiguredTypeEventsModelPopulator.java
+++ b/modules/model/src/main/java/org/apache/tamaya/model/internal/ConfiguredTypeEventsModelPopulator.java
@@ -58,7 +58,8 @@ public final class ConfiguredTypeEventsModelPopulator implements ConfigEventList
                 for (String key : keys) {
                     ParameterModel val = ConfigModelManager.getModel(key, ParameterModel.class);
                     if (val == null) {
-                        ConfiguredTypeEventsModelProvider.addConfigModel(new ParameterModel.Builder(key)
+                        ConfiguredTypeEventsModelProvider.addConfigModel(
+                                new ParameterModel.Builder(confType.getName(), key)
                                 .setType(field.getType().getName())
                                 .setDescription("Injected field: " +
                                         field.getAnnotatedField().getDeclaringClass().getName() + '.' + field.toString() +
@@ -72,7 +73,8 @@ public final class ConfiguredTypeEventsModelPopulator implements ConfigEventList
                 for (String key : keys) {
                     ParameterModel val = ConfigModelManager.getModel(key, ParameterModel.class);
                     if (val == null) {
-                        ConfiguredTypeEventsModelProvider.addConfigModel(new ParameterModel.Builder(key)
+                        ConfiguredTypeEventsModelProvider.addConfigModel(
+                                new ParameterModel.Builder(confType.getName(), key)
                                 .setType(method.getParameterTypes()[0].getName())
                                 .setDescription("Injected field: " +
                                         method.getAnnotatedMethod().getDeclaringClass().getName() + '.' + method.toString() +

http://git-wip-us.apache.org/repos/asf/incubator-tamaya/blob/d86d5279/modules/model/src/main/java/org/apache/tamaya/model/spi/AbstractConfigModel.java
----------------------------------------------------------------------
diff --git a/modules/model/src/main/java/org/apache/tamaya/model/spi/AbstractConfigModel.java b/modules/model/src/main/java/org/apache/tamaya/model/spi/AbstractConfigModel.java
index 6c1afb0..9cc746a 100644
--- a/modules/model/src/main/java/org/apache/tamaya/model/spi/AbstractConfigModel.java
+++ b/modules/model/src/main/java/org/apache/tamaya/model/spi/AbstractConfigModel.java
@@ -26,19 +26,25 @@ import java.util.Objects;
  * Default configuration Model for a configuration area.
  */
 public abstract class AbstractConfigModel implements ConfigModel, Comparable<ConfigModel> {
-
+    private final String owner;
     private final String name;
     private final String description;
     private boolean required = false;
 
 
-    protected AbstractConfigModel(String name, boolean required, String description) {
+    protected AbstractConfigModel(String owner, String name, boolean required, String description) {
         this.name = Objects.requireNonNull(name);
+        this.owner = Objects.requireNonNull(owner);
         this.description = description;
         this.required = required;
     }
 
     @Override
+    public String getOwner() {
+        return owner;
+    }
+
+    @Override
     public String getName() {
         return name;
     }

http://git-wip-us.apache.org/repos/asf/incubator-tamaya/blob/d86d5279/modules/model/src/main/java/org/apache/tamaya/model/spi/ConfigModelReader.java
----------------------------------------------------------------------
diff --git a/modules/model/src/main/java/org/apache/tamaya/model/spi/ConfigModelReader.java b/modules/model/src/main/java/org/apache/tamaya/model/spi/ConfigModelReader.java
index b8d95d0..9944132 100644
--- a/modules/model/src/main/java/org/apache/tamaya/model/spi/ConfigModelReader.java
+++ b/modules/model/src/main/java/org/apache/tamaya/model/spi/ConfigModelReader.java
@@ -76,14 +76,14 @@ public final class ConfigModelReader {
             String requiredVal = props.get(baseKey + ".model.required");
             String targetKey = baseKey.substring(1);
             if ("Parameter".equalsIgnoreCase(target)) {
-                result.add(createParameterValidation(targetKey,
+                result.add(createParameterValidation(owner, targetKey,
                         description, type, requiredVal, regEx, validations));
             } else if ("Section".equalsIgnoreCase(target)) {
                 if(transitive){
-                    result.add(createSectionValidation(targetKey+".*",
+                    result.add(createSectionValidation(owner, targetKey+".*",
                             description, requiredVal, validations));
                 } else {
-                    result.add(createSectionValidation(targetKey,
+                    result.add(createSectionValidation(owner, targetKey,
                             description, requiredVal, validations));
                 }
             }
@@ -101,10 +101,10 @@ public final class ConfigModelReader {
      * @param validations the optional custom validations to be performed.
      * @return the new validation for this parameter.
      */
-    private static ConfigModel createParameterValidation(String paramName, String description, String type, String reqVal,
+    private static ConfigModel createParameterValidation(String owner, String paramName, String description, String type, String reqVal,
                                                          String regEx, String validations) {
         boolean required = "true".equalsIgnoreCase(reqVal);
-        ParameterModel.Builder builder = ParameterModel.builder(paramName).setRequired(required)
+        ParameterModel.Builder builder = ParameterModel.builder(owner, paramName).setRequired(required)
                 .setDescription(description).setExpression(regEx).setType(type);
 //        if (validations != null) {
 //            try {
@@ -125,10 +125,10 @@ public final class ConfigModelReader {
      * @param validations the optional custom validations to be performed.
      * @return the new validation for this section.
      */
-    private static ConfigModel createSectionValidation(String sectionName, String description, String reqVal,
+    private static ConfigModel createSectionValidation(String owner, String sectionName, String description, String reqVal,
                                                        String validations) {
         boolean required = "true".equalsIgnoreCase(reqVal);
-        SectionModel.Builder builder = SectionModel.builder(sectionName).setRequired(required)
+        SectionModel.Builder builder = SectionModel.builder(owner, sectionName).setRequired(required)
                 .setDescription(description);
 //        if (validations != null) {
 //            try {

http://git-wip-us.apache.org/repos/asf/incubator-tamaya/blob/d86d5279/modules/model/src/main/java/org/apache/tamaya/model/spi/GroupModel.java
----------------------------------------------------------------------
diff --git a/modules/model/src/main/java/org/apache/tamaya/model/spi/GroupModel.java b/modules/model/src/main/java/org/apache/tamaya/model/spi/GroupModel.java
index b8ead01..0a38dda 100644
--- a/modules/model/src/main/java/org/apache/tamaya/model/spi/GroupModel.java
+++ b/modules/model/src/main/java/org/apache/tamaya/model/spi/GroupModel.java
@@ -35,15 +35,17 @@ import java.util.Objects;
  */
 public class GroupModel implements ConfigModel {
 
+    private final String owner;
     private final String name;
     private boolean required;
     private List<ConfigModel> childModels = new ArrayList<>();
 
-    public GroupModel(String name, ConfigModel... configModels){
-        this(name, Arrays.asList(configModels));
+    public GroupModel(String owner, String name, ConfigModel... configModels){
+        this(owner, name, Arrays.asList(configModels));
     }
 
-    public GroupModel(String name, Collection<ConfigModel> configModels){
+    public GroupModel(String owner, String name, Collection<ConfigModel> configModels){
+        this.owner = Objects.requireNonNull(owner);
         this.name = Objects.requireNonNull(name);
         this.childModels.addAll(configModels);
         this.childModels = Collections.unmodifiableList(childModels);
@@ -56,6 +58,11 @@ public class GroupModel implements ConfigModel {
     }
 
     @Override
+    public String getOwner() {
+        return owner;
+    }
+
+    @Override
     public String getName() {
         return name;
     }

http://git-wip-us.apache.org/repos/asf/incubator-tamaya/blob/d86d5279/modules/model/src/main/java/org/apache/tamaya/model/spi/ParameterModel.java
----------------------------------------------------------------------
diff --git a/modules/model/src/main/java/org/apache/tamaya/model/spi/ParameterModel.java b/modules/model/src/main/java/org/apache/tamaya/model/spi/ParameterModel.java
index dfe5c56..a1faa02 100644
--- a/modules/model/src/main/java/org/apache/tamaya/model/spi/ParameterModel.java
+++ b/modules/model/src/main/java/org/apache/tamaya/model/spi/ParameterModel.java
@@ -44,7 +44,7 @@ public class ParameterModel extends AbstractConfigModel {
      * @param builder the builder, not null.
      */
     protected ParameterModel(Builder builder) {
-        super(builder.name, builder.required, builder.description);
+        super(builder.owner, builder.name, builder.required, builder.description);
         this.regEx = builder.regEx;
         this.type = builder.type;
     }
@@ -97,8 +97,8 @@ public class ParameterModel extends AbstractConfigModel {
      * @param name the fully qualified parameter name.
      * @return a new builder, never null.
      */
-    public static Builder builder(String name) {
-        return new Builder(name);
+    public static Builder builder(String owner, String name) {
+        return new Builder(owner, name);
     }
 
     /**
@@ -108,8 +108,8 @@ public class ParameterModel extends AbstractConfigModel {
      * @param expression an optional regular expression to validate a value.
      * @return the new ConfigModel instance.
      */
-    public static ConfigModel of(String name, boolean required, String expression) {
-        return new Builder(name).setRequired(required).setExpression(expression).build();
+    public static ConfigModel of(String owner, String name, boolean required, String expression) {
+        return new Builder(owner, name).setRequired(required).setExpression(expression).build();
     }
 
     /**
@@ -118,8 +118,8 @@ public class ParameterModel extends AbstractConfigModel {
      * @param required the required flag.
      * @return the new ConfigModel instance.
      */
-    public static ConfigModel of(String name, boolean required) {
-        return new Builder(name).setRequired(required).build();
+    public static ConfigModel of(String owner, String name, boolean required) {
+        return new Builder(owner, name).setRequired(required).build();
     }
 
     /**
@@ -127,8 +127,8 @@ public class ParameterModel extends AbstractConfigModel {
      * @param name the fully qualified parameter name.
      * @return the new ConfigModel instance.
      */
-    public static ConfigModel of(String name) {
-        return new Builder(name).setRequired(false).build();
+    public static ConfigModel of(String owner, String name) {
+        return new Builder(owner, name).setRequired(false).build();
     }
 
 
@@ -138,6 +138,8 @@ public class ParameterModel extends AbstractConfigModel {
     public static class Builder {
         /** The parameter's target type. */
         private Class<?> type;
+        /** The owner. */
+        private String owner;
         /** The fully qualified parameter name. */
         private String name;
         /** The optional validation expression. */
@@ -151,7 +153,8 @@ public class ParameterModel extends AbstractConfigModel {
          * Creates a new Builder.
          * @param name the fully qualified parameter name, not null.
          */
-        public Builder(String name) {
+        public Builder(String owner, String name) {
+            this.owner = Objects.requireNonNull(owner);
             this.name = Objects.requireNonNull(name);
         }
 
@@ -165,7 +168,7 @@ public class ParameterModel extends AbstractConfigModel {
                 this.type = Class.forName(type);
             } catch (ClassNotFoundException e) {
                 try {
-                    this.type = Class.forName("java.lang."+type);
+                    this.type = Class.forName("java.ui.lang."+type);
                 } catch (ClassNotFoundException e2) {
                     Logger.getLogger(getClass().getName()).log(Level.INFO, "Failed to load parameter type: " + type, e2);
                 }
@@ -204,6 +207,16 @@ public class ParameterModel extends AbstractConfigModel {
         }
 
         /**
+         * Sets the owner name.
+         * @param owner the owner name, not null.
+         * @return the Builder for chaining
+         */
+        public Builder setOwner(String owner) {
+            this.owner = Objects.requireNonNull(owner);
+            return this;
+        }
+
+        /**
          * Sets the fully qualified parameter name.
          * @param name the fully qualified parameter name, not null.
          * @return the Builder for chaining

http://git-wip-us.apache.org/repos/asf/incubator-tamaya/blob/d86d5279/modules/model/src/main/java/org/apache/tamaya/model/spi/SectionModel.java
----------------------------------------------------------------------
diff --git a/modules/model/src/main/java/org/apache/tamaya/model/spi/SectionModel.java b/modules/model/src/main/java/org/apache/tamaya/model/spi/SectionModel.java
index 31eaa51..5292bc8 100644
--- a/modules/model/src/main/java/org/apache/tamaya/model/spi/SectionModel.java
+++ b/modules/model/src/main/java/org/apache/tamaya/model/spi/SectionModel.java
@@ -40,8 +40,8 @@ public class SectionModel extends GroupModel {
      * @param name the section name.
      * @return a new builder instance.
      */
-    public static Builder builder(String name){
-        return new Builder(name);
+    public static Builder builder(String owner, String name){
+        return new Builder(owner, name);
     }
 
     /**
@@ -50,8 +50,8 @@ public class SectionModel extends GroupModel {
      * @param required flag, if the section is required to be present.
      * @return the ConfigModel instance
      */
-    public static ConfigModel of(String name, boolean required){
-        return new Builder(name).setRequired(required).build();
+    public static ConfigModel of(String owner, String name, boolean required){
+        return new Builder(owner, name).setRequired(required).build();
     }
 
     /**
@@ -61,8 +61,8 @@ public class SectionModel extends GroupModel {
      * @param configModels additional configModels
      * @return a new builder, never null.
      */
-    public static ConfigModel of(String name, boolean required, ConfigModel... configModels){
-        return new Builder(name).setRequired(required).addValidations(configModels).build();
+    public static ConfigModel of(String owner, String name, boolean required, ConfigModel... configModels){
+        return new Builder(owner, name).setRequired(required).addValidations(configModels).build();
     }
 
     /**
@@ -70,7 +70,7 @@ public class SectionModel extends GroupModel {
      * @param builder the builder, not null.
      */
     protected SectionModel(Builder builder) {
-        super(builder.name, builder.childConfigModels);
+        super(builder.owner, builder.name, builder.childConfigModels);
     }
 
     @Override
@@ -117,6 +117,8 @@ public class SectionModel extends GroupModel {
      * Builder for setting up a AreaConfigModel instance.
      */
     public static class Builder{
+        /** The section owner. */
+        private String owner;
         /** The section name. */
         private String name;
         /** The optional description. */
@@ -130,7 +132,8 @@ public class SectionModel extends GroupModel {
          * Creates a new Builder.
          * @param sectionName the section name, not null.
          */
-        public Builder(String sectionName){
+        public Builder(String owner, String sectionName){
+            this.owner = Objects.requireNonNull(owner);
             this.name = Objects.requireNonNull(sectionName);
         }
 

http://git-wip-us.apache.org/repos/asf/incubator-tamaya/blob/d86d5279/modules/model/src/test/java/org/apache/tamaya/model/ConfigModelProviderTest.java
----------------------------------------------------------------------
diff --git a/modules/model/src/test/java/org/apache/tamaya/model/ConfigModelProviderTest.java b/modules/model/src/test/java/org/apache/tamaya/model/ConfigModelProviderTest.java
index 32c8774..d45376d 100644
--- a/modules/model/src/test/java/org/apache/tamaya/model/ConfigModelProviderTest.java
+++ b/modules/model/src/test/java/org/apache/tamaya/model/ConfigModelProviderTest.java
@@ -48,14 +48,15 @@ public class ConfigModelProviderTest implements ModelProviderSpi {
     private static final class TestConfigModel extends GroupModel {
 
         public TestConfigModel(){
-            super("TestConfig", new SectionModel.Builder("a.test.existing").setRequired(true).build(),
-                    ParameterModel.of("a.test.existing.aParam", true),
-                    ParameterModel.of("a.test.existing.optionalParam"),
-                    ParameterModel.of("a.test.existing.aABCParam", false, "[ABC].*"),
-                    new SectionModel.Builder("a.test.notexisting").setRequired(true).build(),
-                    ParameterModel.of("a.test.notexisting.aParam", true),
-                    ParameterModel.of("a.test.notexisting.optionalParam"),
-                    ParameterModel.of("a.test.existing.aABCParam2", false, "[ABC].*"));
+            super("TestConfigModel", "TestConfig", new SectionModel.Builder("TestConfigModel",
+                    "a.test.existing").setRequired(true).build(),
+                    ParameterModel.of("TestConfigModel", "a.test.existing.aParam", true),
+                    ParameterModel.of("TestConfigModel", "a.test.existing.optionalParam"),
+                    ParameterModel.of("TestConfigModel", "a.test.existing.aABCParam", false, "[ABC].*"),
+                    new SectionModel.Builder("TestConfigModel", "a.test.notexisting").setRequired(true).build(),
+                    ParameterModel.of("TestConfigModel", "a.test.notexisting.aParam", true),
+                    ParameterModel.of("TestConfigModel", "a.test.notexisting.optionalParam"),
+                    ParameterModel.of("TestConfigModel", "a.test.existing.aABCParam2", false, "[ABC].*"));
         }
         @Override
         public String getName() {

http://git-wip-us.apache.org/repos/asf/incubator-tamaya/blob/d86d5279/modules/model/src/test/java/org/apache/tamaya/model/ConfigUsageStatsTest.java
----------------------------------------------------------------------
diff --git a/modules/model/src/test/java/org/apache/tamaya/model/ConfigUsageStatsTest.java b/modules/model/src/test/java/org/apache/tamaya/model/ConfigUsageStatsTest.java
index ef56e73..5059786 100644
--- a/modules/model/src/test/java/org/apache/tamaya/model/ConfigUsageStatsTest.java
+++ b/modules/model/src/test/java/org/apache/tamaya/model/ConfigUsageStatsTest.java
@@ -53,14 +53,15 @@ public class ConfigUsageStatsTest implements ModelProviderSpi {
     private static final class TestConfigModel extends GroupModel {
 
         public TestConfigModel(){
-            super("TestConfig", new SectionModel.Builder("a.test.existing").setRequired(true).build(),
-                    ParameterModel.of("a.test.existing.aParam", true),
-                    ParameterModel.of("a.test.existing.optionalParam"),
-                    ParameterModel.of("a.test.existing.aABCParam", false, "[ABC].*"),
-                    new SectionModel.Builder("a.test.notexisting").setRequired(true).build(),
-                    ParameterModel.of("a.test.notexisting.aParam", true),
-                    ParameterModel.of("a.test.notexisting.optionalParam"),
-                    ParameterModel.of("a.test.existing.aABCParam2", false, "[ABC].*"));
+            super("TestConfigModel", "TestConfig", new SectionModel.Builder("TestConfigModel",
+                    "a.test.existing").setRequired(true).build(),
+                    ParameterModel.of("TestConfigModel", "a.test.existing.aParam", true),
+                    ParameterModel.of("TestConfigModel", "a.test.existing.optionalParam"),
+                    ParameterModel.of("TestConfigModel", "a.test.existing.aABCParam", false, "[ABC].*"),
+                    new SectionModel.Builder("TestConfigModel", "a.test.notexisting").setRequired(true).build(),
+                    ParameterModel.of("TestConfigModel", "a.test.notexisting.aParam", true),
+                    ParameterModel.of("TestConfigModel", "a.test.notexisting.optionalParam"),
+                    ParameterModel.of("TestConfigModel", "a.test.existing.aABCParam2", false, "[ABC].*"));
         }
         @Override
         public String getName() {

http://git-wip-us.apache.org/repos/asf/incubator-tamaya/blob/d86d5279/modules/model/src/test/java/org/apache/tamaya/model/ValidationTests.java
----------------------------------------------------------------------
diff --git a/modules/model/src/test/java/org/apache/tamaya/model/ValidationTests.java b/modules/model/src/test/java/org/apache/tamaya/model/ValidationTests.java
index fcc3024..de4f76f 100644
--- a/modules/model/src/test/java/org/apache/tamaya/model/ValidationTests.java
+++ b/modules/model/src/test/java/org/apache/tamaya/model/ValidationTests.java
@@ -36,6 +36,11 @@ public class ValidationTests {
     }
 
     @Test
+    public void testConfigInfo(){
+        System.err.println(ConfigModelManager.getConfigInfoText());
+    }
+
+    @Test
     public void testAllValidationsInclUndefined(){
         System.err.println("Including UNDEFINED: \n" + ConfigModelManager.validate(true));
     }

http://git-wip-us.apache.org/repos/asf/incubator-tamaya/blob/d86d5279/modules/model/src/test/resources/examples/configmodel.ini
----------------------------------------------------------------------
diff --git a/modules/model/src/test/resources/examples/configmodel.ini b/modules/model/src/test/resources/examples/configmodel.ini
index 0f37807..0e10cc1 100644
--- a/modules/model/src/test/resources/examples/configmodel.ini
+++ b/modules/model/src/test/resources/examples/configmodel.ini
@@ -25,7 +25,7 @@
 # Description of Configuration Sections (minimal, can be extended by other modules).
 # By default its interpreted as a section !
 ####################################################################################
-[{model}a]
+[_a.model]
 class = Section
 params2.type = String
 params2.required = true
@@ -36,18 +36,18 @@ _number.type = Integer
 _number.deprecated = true
 _number.mappedTo = "a.paramInt"
 
-[{model}a.b.c]
+[_a.b.c.model]
 class = Section
 description = Just a test section
 
-[{model}a.b.c.aRequiredSection]
+[_a.b.c.aRequiredSection.model]
 class = Section
 required = true
 description = A section containing required parameters is called a required section.\
          Sections can also explicitly be defined to be required, but without\
          specifying the paramteres to be contained.,
 
-[{model}a.b.c.aRequiredSection.subsection]
+[_a.b.c.aRequiredSection.subsection.model]
 class = Section
 param0.type = String
 param0.description = "a minmally documented String parameter"
@@ -59,14 +59,14 @@ param1.required = true
 intParam.type = Integer
 intParam.description = "an optional parameter (default)"
 
-[{model}a.b.c.aRequiredSection.nonempty-subsection]
+[_a.b.c.aRequiredSection.nonempty-subsection.model]
 class = Section
 required = true
 
-[{model}a.b.c.aRequiredSection.optional-subsection]
+[_a.b.c.aRequiredSection.optional-subsection.model]
 class = Section
 
-[{model}a.b.c.aValidatedSection]
+[_a.b.c.aValidatedSection.model]
 class = Section
 description = "A configModel section."
 configModels = org.apache.tamaya.model.TestValidator?max=3

http://git-wip-us.apache.org/repos/asf/incubator-tamaya/blob/d86d5279/modules/model/src/test/resources/examples/configmodel.json
----------------------------------------------------------------------
diff --git a/modules/model/src/test/resources/examples/configmodel.json b/modules/model/src/test/resources/examples/configmodel.json
index e8da8ef..529f26e 100644
--- a/modules/model/src/test/resources/examples/configmodel.json
+++ b/modules/model/src/test/resources/examples/configmodel.json
@@ -28,16 +28,11 @@
 // Metamodel information
 //##################################################################################
 {
-  "{model}": {
-    "__name": "testmodel",
-    "__provider": "ConfigModel Extension",
-    "__version": "1.0",
-    "__release-date": "2001-01-23",
-    "__author": "Anatole Tresch",
-    // "modelformat": "alternate format reader type"
-    "__comments": "Late afternoon is best. Backup contact is Nancy.",
+  "_model": {
+    "provider": "ConfigModel Extension",
     // reusable parameter definition
-    "MyNumber": {
+  },
+  "_MyNumber.model": {
       "class": "Parameter",
       "type": "Integer",
       "template": true,
@@ -46,63 +41,63 @@
     //##################################################################################
     // Description of Configuration Sections (minimal, can be extended by other modules).
     //##################################################################################
-    "a": {
+    "_a.model": {
       "class": "Section",
       // required, default is parameter!
-      "params2": {
+    },
+    "_a.params2.model": {
         "required": true,
         "description": "a required parameter"
-      },
-      "paramInt": {
+    },
+    "_a.paramInt.model": {
         // references a shared parameter definition.
         "ref": "MyNumber",
         "description": "an optional parameter (default)"
-      },
-      "_number": {
+    },
+    "_a.number.model": {
         "type": "Integer",
         "deprecated": true,
         // references a deprecated parameter, now mapped to 'a.paramInt'.
         "mappedto": "a.paramInt"
-      }
     },
-    "a.b.c": {
+    "_a.b.c.model": {
       "class": "Section",
       "description": "Just a test section."
       // a subsection, directly configured as child element.
-      "aRequiredSection": {
+    },
+    "_a.b.c.aRequiredSection.model": {
         "class": "Section",
         "required": true,
         "description": "A section containing required parameters is called a required section."
-      }
     },
     // a subsection, configured in its own section.
-    "a.b.c.aRequiredSection.subsection": {
-      "class": "Section",
-      "param0": {
+    "_a.b.c.aRequiredSection.subsection.model": {
+      "class": "Section"
+    }
+    "_a.b.c.param0-model": {
         "type": "String",
         "description": "a minimally documented String parameter"
-      },
+    },
       // A minimally defined String parameter
-      "param00": {},
-      "param1": {
+    "_a.b.c.param00": {},
+    "_a.b.c.param1": {
         "type": "String",
         "required": true,
         "description": "a required parameter"
       },
-      "intParam": {
+     "_a.b.c.intParam": {
         "type": "Integer",
         "required": true,
         "description": "an optional parameter (default)"
-      }
     },
-    "a.b.c.aRequiredSection.nonempty-subsection": {
+    "_a.b.c.aRequiredSection.nonempty-subsection.model": {
       "class": "Section",
       "required": true
     },
-    "a.b.c.aRequiredSection.optional-subsection": {
+    "_a.b.c.aRequiredSection.optional-subsection.model": {
       "class": "Section"
     },
-    "a.b.c.aRequiredSection.aValidatedSection": {
+    "_a.b.c.aRequiredSection.aValidatedSection.model": {
       "class": "Section",
       "description": "A validated section.",
       "validations": "org.apache.tamaya.model.validation.MaxItemValidator?max=3"

http://git-wip-us.apache.org/repos/asf/incubator-tamaya/blob/d86d5279/modules/model/src/test/resources/examples/configmodel.properties
----------------------------------------------------------------------
diff --git a/modules/model/src/test/resources/examples/configmodel.properties b/modules/model/src/test/resources/examples/configmodel.properties
index da0a275..b61695b 100644
--- a/modules/model/src/test/resources/examples/configmodel.properties
+++ b/modules/model/src/test/resources/examples/configmodel.properties
@@ -22,12 +22,12 @@
 ####################################################################################
 
 # Metamodel information
-{model}.__provider=ConfigModel Extension
+_model.provider=ConfigModel Extension
 
 # reusable parameter definition, referenceable as MyNumber
-{model}.MyNumber.class=Parameter
-{model}.MyNumber.type=Integer
-{model}.MyNumber.description=a (reusable) number type parameter (optional)
+_MyNumber.model.class=Parameter
+_MyNumber.model.type=Integer
+_MyNumber.model.description=a (reusable) number type parameter (optional)
 
 ####################################################################################
 # Description of Configuration Sections (minimal, can be extended by other modules).
@@ -35,61 +35,61 @@
 ####################################################################################
 
 # a (section)
-{model}.a.class=Section
-{model}.a.params2.class=Parameter
-{model}.a.params2.type=String
-{model}.a.params2.required=true
-{model}.a.params2.description=a required parameter
+_a.model.class=Section
+_a.params2.model.class=Parameter
+_a.params2.model.type=String
+_a.params2.model.required=true
+_a.params2.model.description=a required parameter
 
-{model}.a.paramInt.class=Parameter
-{model}.a.paramInt.type=ref:MyNumber
-{model}.a.paramInt.description=an optional parameter (default)
+_a.paramInt.model.class=Parameter
+_a.paramInt.model.type=ref:MyNumber
+_a.paramInt.model.description=an optional parameter (default)
 
-{model}.a._number.class=Parameter
-{model}.a._number.type=Integer
-{model}.a._number.deprecated=true
-{model}.a._number.mappedTo=a.paramInt
+_a._number.model.class=Parameter
+_a._number.model.type=Integer
+_a._number.model.deprecated=true
+_a._number.model.mappedTo=a.paramInt
 
 # a.b.c (section)
-{model}.a.b.c.class=Section
-{model}.a.b.c.description=Just a test section
+_a.b.c.class=Section
+_a.b.c.description=Just a test section
 
 # a.b.c.aRequiredSection (section)
-{model}.a.b.c.aRequiredSection.class=Section
-{model}.a.b.c.aRequiredSection.required=true
-{model}.a.b.c.aRequiredSection.description=A section containing required parameters is called a required section.\
+_a.b.c.aRequiredSection.model.class=Section
+_a.b.c.aRequiredSection.model.required=true
+_a.b.c.aRequiredSection.model.description=A section containing required parameters is called a required section.\
          Sections can also explicitly be defined to be required, but without\
          specifying the paramteres to be contained.,
 
 # a.b.c.aRequiredSection.subsection (section)
-{model}.a.b.c.aRequiredSection.subsection.class=Section
+_a.b.c.aRequiredSection.model.subsection.class=Section
 
-{model}.a.b.c.aRequiredSection.subsection.param0.class=Parameter
-{model}.a.b.c.aRequiredSection.subsection.param0.type=String
-{model}.a.b.c.aRequiredSection.subsection.param0.description=a minmally documented String parameter
+_a.b.c.aRequiredSection.subsection.param0.model.class=Parameter
+_a.b.c.aRequiredSection.subsection.param0.model.type=String
+_a.b.c.aRequiredSection.subsection.param0.model.description=a minmally documented String parameter
 # A minmal String parameter
-{model}.a.b.c.aRequiredSection.subsection.param00.class=Parameter
-{model}.a.b.c.aRequiredSection.subsection.param00.type=String
+_a.b.c.aRequiredSection.subsection.param00.model.class=Parameter
+_a.b.c.aRequiredSection.subsection.param00.model.type=String
 
 # a.b.c.aRequiredSection.subsection (section)
-{model}.a.b.c.aRequiredSection.subsection.param1.class=Parameter
-{model}.a.b.c.aRequiredSection.subsection.param1.type = String
-{model}.a.b.c.aRequiredSection.subsection.param1.required = true
-{model}.a.b.c.aRequiredSection.subsection.intParam.class=Parameter
-{model}.a.b.c.aRequiredSection.subsection.intParam.type = Integer
-{model}.a.b.c.aRequiredSection.subsection.intParam.description=an optional parameter (default)
+_a.b.c.aRequiredSection.subsection.param1.model.class=Parameter
+_a.b.c.aRequiredSection.subsection.param1.model.type = String
+_a.b.c.aRequiredSection.subsection.param1.model.required = true
+_a.b.c.aRequiredSection.subsection.intParam.model.class=Parameter
+_a.b.c.aRequiredSection.subsection.intParam.model.type = Integer
+_a.b.c.aRequiredSection.subsection.intParam.model.description=an optional parameter (default)
 
 # a.b.c.aRequiredSection.nonempty-subsection (section)
-{model}.a.b.c.aRequiredSection.nonempty-subsection.class=Section
-{model}.a.b.c.aRequiredSection.nonempty-subsection.required=true
+_a.b.c.aRequiredSection.nonempty-subsection.model.class=Section
+_a.b.c.aRequiredSection.nonempty-subsection.model.required=true
 
 # a.b.c.aRequiredSection.optional-subsection (section)
-{model}.a.b.c.aRequiredSection.optional-subsection.class=Section
+_a.b.c.aRequiredSection.optional-subsection.model.class=Section
 
 # a.b.c.aValidatedSection (section)
-{model}.a.b.c.aValidatedSection.class=Section
-{model}.a.b.c.aValidatedSection.description=A validated section.
-{model}.a.b.c.aValidatedSection.configModels=org.apache.tamaya.model.TestValidator
+_a.b.c.aValidatedSection.model.class=Section
+_a.b.c.aValidatedSection.model.description=A validated section.
+_a.b.c.aValidatedSection.model.configModels=org.apache.tamaya.model.TestValidator
 
 
 

http://git-wip-us.apache.org/repos/asf/incubator-tamaya/blob/d86d5279/modules/spi-support/src/main/java/org/apache/tamaya/spisupport/PropertyConverterManager.java
----------------------------------------------------------------------
diff --git a/modules/spi-support/src/main/java/org/apache/tamaya/spisupport/PropertyConverterManager.java b/modules/spi-support/src/main/java/org/apache/tamaya/spisupport/PropertyConverterManager.java
index ff64210..2be6313 100644
--- a/modules/spi-support/src/main/java/org/apache/tamaya/spisupport/PropertyConverterManager.java
+++ b/modules/spi-support/src/main/java/org/apache/tamaya/spisupport/PropertyConverterManager.java
@@ -263,7 +263,7 @@ public class PropertyConverterManager {
         if (converters != null) {
             converterList.addAll(converters);
         }
-        // handling of java.lang wrapper classes
+        // handling of java.ui.lang wrapper classes
         TypeLiteral<T> boxedType = mapBoxedType(targetType);
         if (boxedType != null) {
             try {

http://git-wip-us.apache.org/repos/asf/incubator-tamaya/blob/d86d5279/modules/spi-support/src/main/java/org/apache/tamaya/spisupport/PropertyFiltering.java
----------------------------------------------------------------------
diff --git a/modules/spi-support/src/main/java/org/apache/tamaya/spisupport/PropertyFiltering.java b/modules/spi-support/src/main/java/org/apache/tamaya/spisupport/PropertyFiltering.java
index 7d4d9e1..eef758b 100644
--- a/modules/spi-support/src/main/java/org/apache/tamaya/spisupport/PropertyFiltering.java
+++ b/modules/spi-support/src/main/java/org/apache/tamaya/spisupport/PropertyFiltering.java
@@ -95,7 +95,7 @@ public final class PropertyFiltering{
                     final String k = entry.getKey();
                     final String v = entry.getValue();
 
-                    String newValue = filter.filterProperty(k, new FilterContext(k, inputMap, false));
+                    String newValue = filter.filterProperty(v, new FilterContext(k, inputMap, false));
                     if (newValue != null && !newValue.equals(v)) {
                         changes.incrementAndGet();
                         LOG.finest("Filter - " + k + ": " + v + " -> " + newValue + " by " + filter);

http://git-wip-us.apache.org/repos/asf/incubator-tamaya/blob/d86d5279/modules/ui/pom.xml
----------------------------------------------------------------------
diff --git a/modules/ui/pom.xml b/modules/ui/pom.xml
index 6dd3f89..e5b86f7 100644
--- a/modules/ui/pom.xml
+++ b/modules/ui/pom.xml
@@ -64,6 +64,12 @@ under the License.
             <version>${project.version}</version>
         </dependency>
         <dependency>
+            <groupId>org.apache.tamaya</groupId>
+            <artifactId>tamaya-core</artifactId>
+            <version>${project.version}</version>
+            <scope>test</scope>
+        </dependency>
+        <dependency>
             <groupId>org.apache.tamaya.ext</groupId>
             <artifactId>tamaya-functions</artifactId>
             <version>${project.version}</version>

http://git-wip-us.apache.org/repos/asf/incubator-tamaya/blob/d86d5279/modules/ui/src/main/java/org/apache/tamaya/ui/internal/ConfiguredMessageProvider.java
----------------------------------------------------------------------
diff --git a/modules/ui/src/main/java/org/apache/tamaya/ui/internal/ConfiguredMessageProvider.java b/modules/ui/src/main/java/org/apache/tamaya/ui/internal/ConfiguredMessageProvider.java
index e2a761c..00c0ec7 100644
--- a/modules/ui/src/main/java/org/apache/tamaya/ui/internal/ConfiguredMessageProvider.java
+++ b/modules/ui/src/main/java/org/apache/tamaya/ui/internal/ConfiguredMessageProvider.java
@@ -50,7 +50,7 @@
 //     */
 //    public String getMessage(String bundleID, Locale locale){
 //        try{
-//            ResourceBundle bundle = ResourceBundle.getBundle("ui/lang/tamaya", locale);
+//            ResourceBundle bundle = ResourceBundle.getBundle("ui/ui.lang/tamaya", locale);
 //            return bundle.getString(bundleID);
 //        }
 //        catch(Exception e){

http://git-wip-us.apache.org/repos/asf/incubator-tamaya/blob/d86d5279/modules/ui/src/main/java/org/apache/tamaya/ui/internal/ResourceBundleMessageProvider.java
----------------------------------------------------------------------
diff --git a/modules/ui/src/main/java/org/apache/tamaya/ui/internal/ResourceBundleMessageProvider.java b/modules/ui/src/main/java/org/apache/tamaya/ui/internal/ResourceBundleMessageProvider.java
index c0aa092..193144e 100644
--- a/modules/ui/src/main/java/org/apache/tamaya/ui/internal/ResourceBundleMessageProvider.java
+++ b/modules/ui/src/main/java/org/apache/tamaya/ui/internal/ResourceBundleMessageProvider.java
@@ -53,7 +53,7 @@
 //            baseName = ConfigurationProvider.getConfiguration().get("tamaya.ui.baseName");
 //        }
 //        if(baseName==null || baseName.isEmpty()){
-//            baseName = "ui/lang/tamaya";
+//            baseName = "ui/ui.lang/tamaya";
 //        }
 //        return baseName;
 //    }

http://git-wip-us.apache.org/repos/asf/incubator-tamaya/blob/d86d5279/modules/ui/src/main/java/org/apache/tamaya/ui/views/ConfigView.java
----------------------------------------------------------------------
diff --git a/modules/ui/src/main/java/org/apache/tamaya/ui/views/ConfigView.java b/modules/ui/src/main/java/org/apache/tamaya/ui/views/ConfigView.java
index 8b1fa3b..ea1837c 100644
--- a/modules/ui/src/main/java/org/apache/tamaya/ui/views/ConfigView.java
+++ b/modules/ui/src/main/java/org/apache/tamaya/ui/views/ConfigView.java
@@ -18,18 +18,11 @@
  */
 package org.apache.tamaya.ui.views;
 
+import com.vaadin.data.Property;
 import com.vaadin.navigator.View;
 import com.vaadin.navigator.ViewChangeListener;
 import com.vaadin.shared.ui.label.ContentMode;
-import com.vaadin.ui.Alignment;
-import com.vaadin.ui.Button;
-import com.vaadin.ui.HorizontalLayout;
-import com.vaadin.ui.Label;
-import com.vaadin.ui.TabSheet;
-import com.vaadin.ui.TextArea;
-import com.vaadin.ui.TextField;
-import com.vaadin.ui.Tree;
-import com.vaadin.ui.VerticalLayout;
+import com.vaadin.ui.*;
 import org.apache.tamaya.ConfigurationProvider;
 import org.apache.tamaya.spi.ServiceContextManager;
 import org.apache.tamaya.ui.UIConstants;
@@ -83,6 +76,7 @@ public class ConfigView extends VerticalSpacedLayout implements View {
 
     private TextField keyFilter = new TextField("Key filter");
     private TextField valueFilter = new TextField("Value filter");
+    private CheckBox showMetaEntries = new CheckBox("Show Metadata", false);
     private Tree tree = new Tree("Current Configuration");
 
     public ConfigView() {
@@ -104,7 +98,8 @@ public class ConfigView extends VerticalSpacedLayout implements View {
             }
         });
         filters.setDefaultComponentAlignment(Alignment.BOTTOM_LEFT);
-        filters.addComponents(keyFilter, valueFilter, filterButton);
+        filters.addComponents(keyFilter, valueFilter, filterButton, showMetaEntries);
+        filters.setSpacing(true);
 
         fillTree();
         configLayout.addComponents(filters, tree);
@@ -144,10 +139,14 @@ public class ConfigView extends VerticalSpacedLayout implements View {
         tabPane.addTab(runtimeProps, "Runtime Properties");
         runtimeProps.setSizeFull();
         addComponents(caption, description, tabPane);
-
         caption.addStyleName(UIConstants.LABEL_HUGE);
         description.addStyleName(UIConstants.LABEL_LARGE);
-
+        showMetaEntries.addValueChangeListener(new Property.ValueChangeListener() {
+            @Override
+            public void valueChange(Property.ValueChangeEvent valueChangeEvent) {
+                fillTree();
+            }
+        });
     }
 
     private void fillTree() {
@@ -160,6 +159,7 @@ public class ConfigView extends VerticalSpacedLayout implements View {
             valueFilterExp = null;
         }
         tree.removeAllItems();
+        boolean showMetadata = showMetaEntries.getValue();
         for(Map.Entry<String,String> entry: ConfigurationProvider.getConfiguration().getProperties().entrySet()){
             String key = entry.getKey();
             if(keyFilterExp!=null && !key.matches(keyFilterExp)){
@@ -168,6 +168,9 @@ public class ConfigView extends VerticalSpacedLayout implements View {
             if(valueFilterExp!=null && !entry.getValue().matches(valueFilterExp)){
                 continue;
             }
+            if(!showMetadata && entry.getKey().startsWith("_")){
+                continue;
+            }
             tree.addItem(key);
             tree.setItemCaption(key, getCaption(key, entry.getValue()));
             tree.setChildrenAllowed(key, false);

http://git-wip-us.apache.org/repos/asf/incubator-tamaya/blob/d86d5279/pom.xml
----------------------------------------------------------------------
diff --git a/pom.xml b/pom.xml
index cd280fc..a15d1d6 100644
--- a/pom.xml
+++ b/pom.xml
@@ -268,36 +268,42 @@ under the License.
                 <groupId>org.jboss.arquillian.daemon</groupId>
                 <artifactId>arquillian-daemon-container-managed</artifactId>
                 <version>${arquillian.deamon.version}</version>
+                <scope>test</scope>
             </dependency>
 
             <dependency>
                 <groupId>org.jboss.arquillian.daemon</groupId>
                 <artifactId>arquillian-daemon-container-common</artifactId>
                 <version>${arquillian.deamon.version}</version>
+                <scope>test</scope>
             </dependency>
 
             <dependency>
                 <groupId>org.jboss.arquillian.daemon</groupId>
                 <artifactId>arquillian-daemon-main</artifactId>
                 <version>${arquillian.deamon.version}</version>
+                <scope>test</scope>
             </dependency>
 
             <dependency>
                 <groupId>org.jboss.arquillian.daemon</groupId>
                 <artifactId>arquillian-daemon-protocol-arquillian</artifactId>
                 <version>${arquillian.deamon.version}</version>
+                <scope>test</scope>
             </dependency>
 
             <dependency>
                 <groupId>org.jboss.arquillian.daemon</groupId>
                 <artifactId>arquillian-daemon-protocol-wire</artifactId>
                 <version>${arquillian.deamon.version}</version>
+                <scope>test</scope>
             </dependency>
 
             <dependency>
                 <groupId>org.jboss.arquillian.daemon</groupId>
                 <artifactId>arquillian-daemon-server</artifactId>
                 <version>${arquillian.deamon.version}</version>
+                <scope>test</scope>
             </dependency>
 
             <dependency>