Fixed registration issue with converters.
Improved toString formatting.

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

Branch: refs/heads/master
Commit: 77850ea316369b3d259ffd174cc80bac3c47dedd
Parents: 05b6514
Author: anatole <anat...@apache.org>
Authored: Mon Dec 12 17:06:22 2016 +0100
Committer: anatole <anat...@apache.org>
Committed: Mon Dec 12 17:14:15 2016 +0100

----------------------------------------------------------------------
 buildconfigurations/pom.xml                     |   2 +-
 .../core/internal/DefaultConfiguration.java     |   7 ++
 .../internal/DefaultConfigurationContext.java   | 103 ++++++++-----------
 .../DefaultConfigurationContextBuilder.java     |   4 +-
 .../internal/DefaultConfigurationProvider.java  |   3 +-
 .../core/internal/PropertyConverterManager.java |   2 +-
 .../core/ConfigurationContextBuilderTest.java   |   8 +-
 .../DefaultConfigurationContextBuilderTest.java |   4 +-
 .../internal/PropertyConverterManagerTest.java  |  15 +--
 9 files changed, 72 insertions(+), 76 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/incubator-tamaya/blob/77850ea3/buildconfigurations/pom.xml
----------------------------------------------------------------------
diff --git a/buildconfigurations/pom.xml b/buildconfigurations/pom.xml
index 3973395..c53d8df 100644
--- a/buildconfigurations/pom.xml
+++ b/buildconfigurations/pom.xml
@@ -47,5 +47,5 @@ under the License.
         </url>
       <tag>vote02-tamaya-0.2-incubating</tag>
   </scm>
-    
+
 </project>
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/incubator-tamaya/blob/77850ea3/code/core/src/main/java/org/apache/tamaya/core/internal/DefaultConfiguration.java
----------------------------------------------------------------------
diff --git 
a/code/core/src/main/java/org/apache/tamaya/core/internal/DefaultConfiguration.java
 
b/code/core/src/main/java/org/apache/tamaya/core/internal/DefaultConfiguration.java
index 1b37233..268d825 100644
--- 
a/code/core/src/main/java/org/apache/tamaya/core/internal/DefaultConfiguration.java
+++ 
b/code/core/src/main/java/org/apache/tamaya/core/internal/DefaultConfiguration.java
@@ -222,4 +222,11 @@ public class DefaultConfiguration implements Configuration 
{
     public ConfigurationContext getConfigurationContext() {
         return configurationContext;
     }
+
+    @Override
+    public String toString() {
+        return "Configuration{\n " +
+                configurationContext +
+                '}';
+    }
 }

http://git-wip-us.apache.org/repos/asf/incubator-tamaya/blob/77850ea3/code/core/src/main/java/org/apache/tamaya/core/internal/DefaultConfigurationContext.java
----------------------------------------------------------------------
diff --git 
a/code/core/src/main/java/org/apache/tamaya/core/internal/DefaultConfigurationContext.java
 
b/code/core/src/main/java/org/apache/tamaya/core/internal/DefaultConfigurationContext.java
index 280793a..c3031f0 100644
--- 
a/code/core/src/main/java/org/apache/tamaya/core/internal/DefaultConfigurationContext.java
+++ 
b/code/core/src/main/java/org/apache/tamaya/core/internal/DefaultConfigurationContext.java
@@ -81,33 +81,10 @@ public class DefaultConfigurationContext implements 
ConfigurationContext {
         propertySources.addAll(builder.propertySources);
         // now sort them according to their ordinal values
         immutablePropertySources = 
Collections.unmodifiableList(propertySources);
-        StringBuilder b= new StringBuilder();
-        b.append("Registered " + immutablePropertySources.size() + " property 
sources: \n");
-        b.append("   NAME [TYPE]\n");
-        b.append("   ---------------------------------------------------\n");
-        for(PropertySource ps: immutablePropertySources){
-            b.append("   ").append(ps.getName()).append("  
[").append(ps.getClass().getSimpleName()).append("],\n");
-        }
-        if(b.length()>0) {
-            b.setLength(b.length() - 2);
-        }
-        LOG.info(b.toString());
-        b.setLength(0);
 
         // as next step we pick up the PropertyFilters pretty much the same way
         List<PropertyFilter> propertyFilters = new 
ArrayList<>(builder.getPropertyFilters());
         immutablePropertyFilters = 
Collections.unmodifiableList(propertyFilters);
-        b.append("Registered " + immutablePropertyFilters.size() + " property 
filters: \n");
-        b.append("   TYPE\n");
-        b.append("   
----------------------------------------------------------\n");
-        for(PropertyFilter pf: immutablePropertyFilters){
-            b.append("   ").append(pf.getClass().getName()).append(",\n");
-        }
-        if(b.length()>0) {
-            b.setLength(b.length() - 2);
-        }
-        LOG.info(b.toString());
-        b.setLength(0);
 
         // Finally add the converters
         for(Map.Entry<TypeLiteral<?>, Collection<PropertyConverter<?>>> 
en:builder.getPropertyConverter().entrySet()) {
@@ -115,21 +92,6 @@ public class DefaultConfigurationContext implements 
ConfigurationContext {
                 this.propertyConverterManager.register(en.getKey(), converter);
             }
         }
-        b.append("Registered " + 
propertyConverterManager.getPropertyConverters().size() + " property 
converters:\n");
-        b.append("   TYPE\n");
-        b.append("   
----------------------------------------------------------\n");
-        for(Map.Entry<TypeLiteral<?>,List<PropertyConverter<?>>> list: 
propertyConverterManager.getPropertyConverters().entrySet()){
-            b.append("   
").append(list.getKey().getRawType().getName()).append(" -> \n");
-            for(PropertyConverter<?> conv:list.getValue()) {
-                b.append("     ").append(conv.toString()).append(",\n");
-            }
-        }
-        if(b.length()>0) {
-            b.setLength(b.length() - 2);
-        }
-        LOG.info(b.toString());
-        b.setLength(0);
-
         propertyValueCombinationPolicy = builder.combinationPolicy;
         if(propertyValueCombinationPolicy==null){
             propertyValueCombinationPolicy = 
ServiceContextManager.getServiceContext().getService(PropertyValueCombinationPolicy.class);
@@ -137,7 +99,6 @@ public class DefaultConfigurationContext implements 
ConfigurationContext {
         if(propertyValueCombinationPolicy==null){
             propertyValueCombinationPolicy = 
PropertyValueCombinationPolicy.DEFAULT_OVERRIDING_COLLECTOR;
         }
-        LOG.info("Using PropertyValueCombinationPolicy: " + 
propertyValueCombinationPolicy);
     }
 
 
@@ -185,34 +146,54 @@ public class DefaultConfigurationContext implements 
ConfigurationContext {
         StringBuilder b = new StringBuilder("ConfigurationContext{\n");
         b.append("  Property Sources\n");
         b.append("  ----------------\n");
-        b.append("  CLASS                         NAME                         
                                         ORDINAL SCANNABLE SIZE\n");
-        for(PropertySource ps:getPropertySources()){
-            b.append("  ");
-            appendFormatted(b, ps.getClass().getSimpleName(), 30);
-            appendFormatted(b, ps.getName(), 70);
-            appendFormatted(b, String.valueOf(ps.getOrdinal()), 8);
-            appendFormatted(b, String.valueOf(ps.isScannable()), 10);
-            if(ps.isScannable()) {
-                appendFormatted(b, String.valueOf(ps.getProperties().size()), 
8);
-            }else{
-                appendFormatted(b, "-", 8);
+        if(immutablePropertySources.isEmpty()){
+            b.append("  No property sources loaded.\n\n");
+        }else {
+            b.append("  CLASS                         NAME                     
                                             ORDINAL SCANNABLE SIZE    STATE    
 ERROR\n\n");
+            for (PropertySource ps : immutablePropertySources) {
+                b.append("  ");
+                appendFormatted(b, ps.getClass().getSimpleName(), 30);
+                appendFormatted(b, ps.getName(), 70);
+                appendFormatted(b, String.valueOf(ps.getOrdinal()), 8);
+                appendFormatted(b, String.valueOf(ps.isScannable()), 10);
+                if (ps.isScannable()) {
+                    appendFormatted(b, 
String.valueOf(ps.getProperties().size()), 8);
+                } else {
+                    appendFormatted(b, "-", 8);
+                }
+                PropertyValue state = ps.get("_state");
+                if(state==null){
+                    appendFormatted(b, "OK", 10);
+                }else {
+                    appendFormatted(b, state.getValue(), 10);
+                    if("ERROR".equals(state.getValue())){
+                        PropertyValue val = ps.get("_exception");
+                        if(val!=null) {
+                            appendFormatted(b, val.getValue(), 30);
+                        }
+                    }
+                }
+                b.append('\n');
             }
-            b.append('\n');
+            b.append("\n");
         }
-        b.append("\n");
         b.append("  Property Filters\n");
         b.append("  ----------------\n");
-        b.append("  CLASS                         INFO\n");
-        for(PropertyFilter filter:getPropertyFilters()){
-            b.append("  ");
-            appendFormatted(b, filter.getClass().getSimpleName(), 30);
-            b.append(removeNewLines(filter.toString()));
-            b.append('\n');
+        if(immutablePropertyFilters.isEmpty()){
+            b.append("  No property filters loaded.\n\n");
+        }else {
+            b.append("  CLASS                         INFO\n\n");
+            for (PropertyFilter filter : getPropertyFilters()) {
+                b.append("  ");
+                appendFormatted(b, filter.getClass().getSimpleName(), 30);
+                b.append(removeNewLines(filter.toString()));
+                b.append('\n');
+            }
+            b.append("\n\n");
         }
-        b.append("\n\n");
         b.append("  Property Converters\n");
         b.append("  -------------------\n");
-        b.append("  CLASS                         TYPE                         
 INFO\n");
+        b.append("  CLASS                         TYPE                         
 INFO\n\n");
         for(Map.Entry<TypeLiteral<?>, List<PropertyConverter<?>>> 
converterEntry:getPropertyConverters().entrySet()){
             for(PropertyConverter converter: converterEntry.getValue()){
                 b.append("  ");
@@ -222,6 +203,8 @@ public class DefaultConfigurationContext implements 
ConfigurationContext {
                 b.append('\n');
             }
         }
+        b.append("\n\n");
+        b.append("  PropertyValueCombinationPolicy: " + 
getPropertyValueCombinationPolicy().getClass().getName()).append('\n');
         b.append('}');
         return b.toString();
     }

http://git-wip-us.apache.org/repos/asf/incubator-tamaya/blob/77850ea3/code/core/src/main/java/org/apache/tamaya/core/internal/DefaultConfigurationContextBuilder.java
----------------------------------------------------------------------
diff --git 
a/code/core/src/main/java/org/apache/tamaya/core/internal/DefaultConfigurationContextBuilder.java
 
b/code/core/src/main/java/org/apache/tamaya/core/internal/DefaultConfigurationContextBuilder.java
index d9ee63b..b3dcc82 100644
--- 
a/code/core/src/main/java/org/apache/tamaya/core/internal/DefaultConfigurationContextBuilder.java
+++ 
b/code/core/src/main/java/org/apache/tamaya/core/internal/DefaultConfigurationContextBuilder.java
@@ -29,6 +29,7 @@ import org.apache.tamaya.spi.PropertySourceProvider;
 import org.apache.tamaya.spi.PropertyValueCombinationPolicy;
 import org.apache.tamaya.spi.ServiceContextManager;
 
+import java.lang.reflect.Type;
 import java.util.ArrayList;
 import java.util.Arrays;
 import java.util.Collection;
@@ -364,7 +365,8 @@ public class DefaultConfigurationContextBuilder implements 
ConfigurationContextB
         Map<TypeLiteral, Collection<PropertyConverter>> result = new 
HashMap<>();
         for (PropertyConverter conv : 
ServiceContextManager.getServiceContext().getServices(
                 PropertyConverter.class)) {
-            TypeLiteral target = 
TypeLiteral.of(TypeLiteral.of(conv.getClass()).getType());
+            Type type = 
TypeLiteral.getGenericInterfaceTypeParameters(conv.getClass(), 
PropertyConverter.class)[0];
+            TypeLiteral target = TypeLiteral.of(type);
             Collection<PropertyConverter> convList = result.get(target);
             if (convList == null) {
                 convList = new ArrayList<>();

http://git-wip-us.apache.org/repos/asf/incubator-tamaya/blob/77850ea3/code/core/src/main/java/org/apache/tamaya/core/internal/DefaultConfigurationProvider.java
----------------------------------------------------------------------
diff --git 
a/code/core/src/main/java/org/apache/tamaya/core/internal/DefaultConfigurationProvider.java
 
b/code/core/src/main/java/org/apache/tamaya/core/internal/DefaultConfigurationProvider.java
index bcc9eae..4b02472 100644
--- 
a/code/core/src/main/java/org/apache/tamaya/core/internal/DefaultConfigurationProvider.java
+++ 
b/code/core/src/main/java/org/apache/tamaya/core/internal/DefaultConfigurationProvider.java
@@ -35,7 +35,8 @@ public class DefaultConfigurationProvider implements 
ConfigurationProviderSpi {
     ConfigurationContext context = new DefaultConfigurationContextBuilder()
             .addDefaultPropertyConverters()
             .addDefaultPropertyFilters()
-            .addDefaultPropertySources().build();
+            .addDefaultPropertySources()
+            .build();
 
     private Configuration config = new DefaultConfiguration(context);
 

http://git-wip-us.apache.org/repos/asf/incubator-tamaya/blob/77850ea3/code/core/src/main/java/org/apache/tamaya/core/internal/PropertyConverterManager.java
----------------------------------------------------------------------
diff --git 
a/code/core/src/main/java/org/apache/tamaya/core/internal/PropertyConverterManager.java
 
b/code/core/src/main/java/org/apache/tamaya/core/internal/PropertyConverterManager.java
index ab35b90..1e9586a 100644
--- 
a/code/core/src/main/java/org/apache/tamaya/core/internal/PropertyConverterManager.java
+++ 
b/code/core/src/main/java/org/apache/tamaya/core/internal/PropertyConverterManager.java
@@ -80,7 +80,7 @@ public class PropertyConverterManager {
      * Constructor.
      */
     public PropertyConverterManager() {
-        this(true);
+        this(false);
     }
 
     public PropertyConverterManager(boolean init) {

http://git-wip-us.apache.org/repos/asf/incubator-tamaya/blob/77850ea3/code/core/src/test/java/org/apache/tamaya/core/ConfigurationContextBuilderTest.java
----------------------------------------------------------------------
diff --git 
a/code/core/src/test/java/org/apache/tamaya/core/ConfigurationContextBuilderTest.java
 
b/code/core/src/test/java/org/apache/tamaya/core/ConfigurationContextBuilderTest.java
index f6f7316..9a1dd6f 100644
--- 
a/code/core/src/test/java/org/apache/tamaya/core/ConfigurationContextBuilderTest.java
+++ 
b/code/core/src/test/java/org/apache/tamaya/core/ConfigurationContextBuilderTest.java
@@ -250,11 +250,11 @@ public class ConfigurationContextBuilderTest {
                 .addPropertyConverters(TypeLiteral.of(String.class), 
converter);
         ConfigurationContext ctx = b.build();
         
assertTrue(ctx.getPropertyConverters(TypeLiteral.of(String.class)).contains(converter));
-        assertEquals(ctx.getPropertyConverters().size(), 19);
+        assertEquals(ctx.getPropertyConverters().size(), 1);
         b = ConfigurationProvider.getConfigurationContextBuilder()
                 .addPropertyConverters(TypeLiteral.of(String.class), 
converter);
         b.addPropertyConverters(TypeLiteral.of(String.class), converter);
-        assertEquals(ctx.getPropertyConverters().size(), 19);
+        assertEquals(ctx.getPropertyConverters().size(), 1);
     }
 
     @Test
@@ -271,12 +271,12 @@ public class ConfigurationContextBuilderTest {
                         Arrays.<PropertyConverter<Object>>asList(new 
PropertyConverter[]{converter}));
         ConfigurationContext ctx = b.build();
         
assertTrue(ctx.getPropertyConverters(TypeLiteral.of(String.class)).contains(converter));
-        assertEquals(ctx.getPropertyConverters().size(), 19);
+        assertEquals(ctx.getPropertyConverters().size(), 1);
         b = ConfigurationProvider.getConfigurationContextBuilder()
                 .addPropertyConverters(TypeLiteral.of(String.class),
                         Arrays.<PropertyConverter<Object>>asList(new 
PropertyConverter[]{converter}));
         b.addPropertyConverters(TypeLiteral.of(String.class), converter);
-        assertEquals(ctx.getPropertyConverters().size(), 19);
+        assertEquals(ctx.getPropertyConverters().size(), 1);
     }
 
     @Test

http://git-wip-us.apache.org/repos/asf/incubator-tamaya/blob/77850ea3/code/core/src/test/java/org/apache/tamaya/core/internal/DefaultConfigurationContextBuilderTest.java
----------------------------------------------------------------------
diff --git 
a/code/core/src/test/java/org/apache/tamaya/core/internal/DefaultConfigurationContextBuilderTest.java
 
b/code/core/src/test/java/org/apache/tamaya/core/internal/DefaultConfigurationContextBuilderTest.java
index 1075fcc..bbb9d14 100644
--- 
a/code/core/src/test/java/org/apache/tamaya/core/internal/DefaultConfigurationContextBuilderTest.java
+++ 
b/code/core/src/test/java/org/apache/tamaya/core/internal/DefaultConfigurationContextBuilderTest.java
@@ -140,11 +140,11 @@ public class DefaultConfigurationContextBuilderTest {
                 .addPropertyConverters(TypeLiteral.of(String.class), 
converter);
         ConfigurationContext ctx = b.build();
         
assertTrue(ctx.getPropertyConverters(TypeLiteral.of(String.class)).contains(converter));
-        assertEquals(ctx.getPropertyConverters().size(), 19);
+        assertEquals(ctx.getPropertyConverters().size(), 1);
         b = new DefaultConfigurationContextBuilder()
                 .addPropertyConverters(TypeLiteral.of(String.class), 
converter);
         b.addPropertyConverters(TypeLiteral.of(String.class), converter);
-        assertEquals(ctx.getPropertyConverters().size(), 19);
+        assertEquals(ctx.getPropertyConverters().size(), 1);
     }
 
     @Test

http://git-wip-us.apache.org/repos/asf/incubator-tamaya/blob/77850ea3/code/core/src/test/java/org/apache/tamaya/core/internal/PropertyConverterManagerTest.java
----------------------------------------------------------------------
diff --git 
a/code/core/src/test/java/org/apache/tamaya/core/internal/PropertyConverterManagerTest.java
 
b/code/core/src/test/java/org/apache/tamaya/core/internal/PropertyConverterManagerTest.java
index ec420f8..09701fb 100644
--- 
a/code/core/src/test/java/org/apache/tamaya/core/internal/PropertyConverterManagerTest.java
+++ 
b/code/core/src/test/java/org/apache/tamaya/core/internal/PropertyConverterManagerTest.java
@@ -79,7 +79,7 @@ public class PropertyConverterManagerTest {
 
     @Test
     public void testDirectSuperclassConverterMapping(){
-        PropertyConverterManager manager = new PropertyConverterManager();
+        PropertyConverterManager manager = new PropertyConverterManager(true);
         List<PropertyConverter<B>> converters = 
List.class.cast(manager.getPropertyConverters(TypeLiteral.of(B.class)));
         assertThat(converters, hasSize(1));
         converters = 
List.class.cast(manager.getPropertyConverters(TypeLiteral.of(B.class)));
@@ -97,15 +97,18 @@ public class PropertyConverterManagerTest {
     public void testMultipleConverterLoad(){
         PropertyConverterManager manager = new PropertyConverterManager();
         List<PropertyConverter<B>> converters = 
List.class.cast(manager.getPropertyConverters(TypeLiteral.of(B.class)));
-        assertThat(converters, hasSize(1));
+        assertThat(converters, hasSize(0));
         manager = new PropertyConverterManager();
         converters = 
List.class.cast(manager.getPropertyConverters(TypeLiteral.of(B.class)));
+        assertThat(converters, hasSize(0));
+        manager.initConverters();
+        converters = 
List.class.cast(manager.getPropertyConverters(TypeLiteral.of(B.class)));
         assertThat(converters, hasSize(1));
     }
 
     @Test
     public void testTransitiveSuperclassConverterMapping(){
-        PropertyConverterManager manager = new PropertyConverterManager();
+        PropertyConverterManager manager = new PropertyConverterManager(true);
         List<PropertyConverter<A>> converters = 
List.class.cast(manager.getPropertyConverters(TypeLiteral.of(A.class)));
         assertThat(converters, hasSize(1));
 
@@ -119,7 +122,7 @@ public class PropertyConverterManagerTest {
 
     @Test
     public void testDirectInterfaceMapping(){
-        PropertyConverterManager manager = new PropertyConverterManager();
+        PropertyConverterManager manager = new PropertyConverterManager(true);
         List<PropertyConverter<Readable>> converters = 
List.class.cast(manager.getPropertyConverters(TypeLiteral.of(Readable.class)));
         assertThat(converters, hasSize(1));
 
@@ -133,7 +136,7 @@ public class PropertyConverterManagerTest {
 
     @Test
     public void testTransitiveInterfaceMapping1(){
-        PropertyConverterManager manager = new PropertyConverterManager();
+        PropertyConverterManager manager = new PropertyConverterManager(true);
         List<PropertyConverter<Runnable>> converters = 
List.class.cast(manager.getPropertyConverters(TypeLiteral.of(Runnable.class)));
         assertThat(converters, hasSize(1));
 
@@ -147,7 +150,7 @@ public class PropertyConverterManagerTest {
 
     @Test
     public void testTransitiveInterfaceMapping2(){
-        PropertyConverterManager manager = new PropertyConverterManager();
+        PropertyConverterManager manager = new PropertyConverterManager(true);
         List<PropertyConverter<AutoCloseable>> converters = 
List.class.cast(manager.getPropertyConverters(TypeLiteral.of(AutoCloseable.class)));
         assertThat(converters, hasSize(1));
 

Reply via email to