You are viewing a plain text version of this content. The canonical link for it is here.
Posted to scm@geronimo.apache.org by st...@apache.org on 2018/05/29 20:44:38 UTC

svn commit: r1832481 - /geronimo/components/config/branches/ConfigJSR/impl/src/main/java/org/apache/geronimo/config/ConfigValueImpl.java

Author: struberg
Date: Tue May 29 20:44:38 2018
New Revision: 1832481

URL: http://svn.apache.org/viewvc?rev=1832481&view=rev
Log:
fix isSet and implicit converters for ConfigValue

Modified:
    geronimo/components/config/branches/ConfigJSR/impl/src/main/java/org/apache/geronimo/config/ConfigValueImpl.java

Modified: geronimo/components/config/branches/ConfigJSR/impl/src/main/java/org/apache/geronimo/config/ConfigValueImpl.java
URL: http://svn.apache.org/viewvc/geronimo/components/config/branches/ConfigJSR/impl/src/main/java/org/apache/geronimo/config/ConfigValueImpl.java?rev=1832481&r1=1832480&r2=1832481&view=diff
==============================================================================
--- geronimo/components/config/branches/ConfigJSR/impl/src/main/java/org/apache/geronimo/config/ConfigValueImpl.java (original)
+++ geronimo/components/config/branches/ConfigJSR/impl/src/main/java/org/apache/geronimo/config/ConfigValueImpl.java Tue May 29 20:44:38 2018
@@ -22,6 +22,7 @@ import javax.config.spi.Converter;
 
 import java.util.ArrayList;
 import java.util.Collections;
+import java.util.HashSet;
 import java.util.List;
 import java.util.NoSuchElementException;
 import java.util.Optional;
@@ -119,6 +120,7 @@ public class ConfigValueImpl<T> implemen
             throw new RuntimeException("Empty String or null supplied as string-default value for property "
                     + keyOriginal);
         }
+        value = replaceVariables(value);
 
         if (isList) {
             defaultValue = splitAndConvertListValue(value);
@@ -256,11 +258,21 @@ public class ConfigValueImpl<T> implemen
         }
 
         String valueStr = resolveStringValue();
+
         if ((valueStr == null || valueStr.isEmpty()) && withDefault) {
             return defaultValue;
         }
 
-        T value = convert ? convert(valueStr) : (T) valueStr;
+        T value;
+        if (isList || isSet) {
+            value = splitAndConvertListValue(valueStr);
+            if (isSet) {
+                value = (T) new HashSet((List) value);
+            }
+        }
+        else {
+            value = convert ? convert(valueStr) : (T) valueStr;
+        }
 
         //X will later get added again
         /*X
@@ -326,27 +338,34 @@ public class ConfigValueImpl<T> implemen
 
         if (evaluateVariables && value != null)
         {
-            // recursively resolve any ${varName} in the value
-            int startVar = 0;
-            while ((startVar = value.indexOf("${", startVar)) >= 0)
+            value = replaceVariables(value);
+
+        }
+        return value;
+    }
+
+    private String replaceVariables(String value)
+    {
+        // recursively resolve any ${varName} in the value
+        int startVar = 0;
+        while ((startVar = value.indexOf("${", startVar)) >= 0)
+        {
+            int endVar = value.indexOf("}", startVar);
+            if (endVar <= 0)
             {
-                int endVar = value.indexOf("}", startVar);
-                if (endVar <= 0)
-                {
-                    break;
-                }
-                String varName = value.substring(startVar + 2, endVar);
-                if (varName.isEmpty())
-                {
-                    break;
-                }
-                String variableValue = config.access(varName).evaluateVariables(true).get();
-                if (variableValue != null)
-                {
-                    value = value.replace("${" + varName + "}", variableValue);
-                }
-                startVar++;
+                break;
             }
+            String varName = value.substring(startVar + 2, endVar);
+            if (varName.isEmpty())
+            {
+                break;
+            }
+            String variableValue = config.access(varName).evaluateVariables(true).get();
+            if (variableValue != null)
+            {
+                value = value.replace("${" + varName + "}", variableValue);
+            }
+            startVar++;
         }
         return value;
     }
@@ -370,12 +389,7 @@ public class ConfigValueImpl<T> implemen
             return (T) value;
         }
 
-        Converter converter = config.getConverters().get(configEntryType);
-        if (converter == null) {
-            throw new IllegalStateException("No Converter for type " + configEntryType);
-        }
-
-        return (T) converter.convert(value);
+        return (T) config.convert(value, configEntryType);
     }