You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@brooklyn.apache.org by he...@apache.org on 2022/12/02 20:33:01 UTC
[brooklyn-server] branch master updated: forgive entity/adjunct references in JSON deserialization (sensor conversion)
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 712d17fd37 forgive entity/adjunct references in JSON deserialization (sensor conversion)
712d17fd37 is described below
commit 712d17fd373643448c601d259758a6e16a0c82a2
Author: Alex Heneveld <al...@cloudsoft.io>
AuthorDate: Fri Dec 2 20:32:37 2022 +0000
forgive entity/adjunct references in JSON deserialization (sensor conversion)
---
.../core/resolve/jackson/CommonTypesSerialization.java | 16 +++++++++++++++-
1 file changed, 15 insertions(+), 1 deletion(-)
diff --git a/core/src/main/java/org/apache/brooklyn/core/resolve/jackson/CommonTypesSerialization.java b/core/src/main/java/org/apache/brooklyn/core/resolve/jackson/CommonTypesSerialization.java
index feeb811be4..c5d091b007 100644
--- a/core/src/main/java/org/apache/brooklyn/core/resolve/jackson/CommonTypesSerialization.java
+++ b/core/src/main/java/org/apache/brooklyn/core/resolve/jackson/CommonTypesSerialization.java
@@ -233,6 +233,10 @@ public class CommonTypesSerialization {
public T convertSpecialMapToObject(Map value, JsonParser p, DeserializationContext ctxt) throws IOException {
return ObjectAsStringSerializerAndDeserializer.this.convertSpecialMapToObject(value, p, ctxt);
}
+
+ public T convertStringToObject(String value, JsonParser p, DeserializationContext ctxt) throws IOException {
+ return ObjectAsStringSerializerAndDeserializer.this.convertStringToObject(value, p, ctxt);
+ }
}
}
@@ -379,7 +383,7 @@ public class CommonTypesSerialization {
@Override
protected BrooklynObject newEmptyInstance() {
/* context buries the contextual types when called via createContextual, because we are a delegate; and has cleared it by the time it gets here */
- if (knownConcreteType !=null) {
+ if (knownConcreteType != null) {
return BrooklynObjectSerialization.this.newEmptyInstance((Class<BrooklynObject>) knownConcreteType.getRawClass());
}
return super.newEmptyInstance();
@@ -428,6 +432,16 @@ public class CommonTypesSerialization {
throw new IllegalStateException("Entity instances and other Brooklyn objects should be supplied as unique IDs; they cannot be instantiated from YAML. If a spec is desired, the type should be known or use $brooklyn:entitySpec.");
}
+
+ @Override public BrooklynObject convertStringToObject(String value, JsonParser p, DeserializationContext ctxt) throws IOException {
+ try {
+ return super.convertStringToObject(value, p, ctxt);
+ } catch (Exception e) {
+ Exceptions.propagateIfFatal(e);
+ LOG.warn("Reference to BrooklynObject "+value+" which is no longer available; replacing with 'null'");
+ return null;
+ }
+ }
}
}