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) {