This is an automated email from the ASF dual-hosted git repository.

heneveld pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/brooklyn-server.git


The following commit(s) were added to refs/heads/master by this push:
     new c241157528 better errors when config bag can't coerce something
c241157528 is described below

commit c241157528d4f1441667524dc9f1731a22f8f65e
Author: Alex Heneveld <[email protected]>
AuthorDate: Fri Sep 15 16:21:51 2023 +0100

    better errors when config bag can't coerce something
---
 .../apache/brooklyn/util/core/config/ConfigBag.java    | 18 +++++++++++++++---
 1 file changed, 15 insertions(+), 3 deletions(-)

diff --git 
a/core/src/main/java/org/apache/brooklyn/util/core/config/ConfigBag.java 
b/core/src/main/java/org/apache/brooklyn/util/core/config/ConfigBag.java
index 0a1502ddd9..0ccbe5cfa4 100644
--- a/core/src/main/java/org/apache/brooklyn/util/core/config/ConfigBag.java
+++ b/core/src/main/java/org/apache/brooklyn/util/core/config/ConfigBag.java
@@ -35,6 +35,7 @@ import org.apache.brooklyn.config.ConfigKey.HasConfigKey;
 import org.apache.brooklyn.core.config.ConfigKeys;
 import org.apache.brooklyn.util.collections.MutableMap;
 import org.apache.brooklyn.util.core.flags.TypeCoercions;
+import org.apache.brooklyn.util.exceptions.Exceptions;
 import org.apache.brooklyn.util.guava.Maybe;
 import org.apache.brooklyn.util.javalang.JavaClassNames;
 import org.slf4j.Logger;
@@ -550,9 +551,20 @@ public class ConfigBag {
 
     /** returns the first non-null value to be the type indicated by the key, 
or the keys default value if no non-null values are supplied */
     public static <T> T coerceFirstNonNullKeyValue(ConfigKey<T> key, Object 
...values) {
-        for (Object o: values)
-            if (o!=null) return TypeCoercions.coerce(o, key.getTypeToken());
-        return TypeCoercions.coerce(key.getDefaultValue(), key.getTypeToken());
+        for (Object o: values) {
+            if (o != null) {
+                try {
+                    return TypeCoercions.coerce(o, key.getTypeToken());
+                } catch (Exception e) {
+                    throw Exceptions.propagate("Error resolving 
"+key.getName()+" value "+o+" as "+key.getTypeToken()+": "+e, e);
+                }
+            }
+        }
+        try {
+            return TypeCoercions.coerce(key.getDefaultValue(), 
key.getTypeToken());
+        } catch (Exception e) {
+            throw Exceptions.propagate("Error resolving "+key.getName()+" 
default value "+key.getDefaultValue()+" as "+key.getTypeToken()+": "+e, e);
+        }
     }
 
     protected Object getStringKey(String key, boolean markUsed) {

Reply via email to