[brooklyn-server] 01/02: more object-reference deserialization tweaks

2021-08-13 Thread heneveld
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

commit 361d4cacaf6a9cf7fa90b659a400e1ed56c2dc4f
Author: Alex Heneveld 
AuthorDate: Sat Aug 14 04:38:44 2021 +0100

more object-reference deserialization tweaks
---
 .../core/resolve/jackson/BeanWithTypeUtils.java| 27 -
 ...BrooklynRegisteredTypeJacksonSerialization.java |  5 ++--
 .../jackson/ObjectReferencingSerialization.java| 28 ++
 .../util/core/internal/TypeCoercionsTest.java  | 11 -
 4 files changed, 52 insertions(+), 19 deletions(-)

diff --git 
a/core/src/main/java/org/apache/brooklyn/core/resolve/jackson/BeanWithTypeUtils.java
 
b/core/src/main/java/org/apache/brooklyn/core/resolve/jackson/BeanWithTypeUtils.java
index 896d493..5cc11ef 100644
--- 
a/core/src/main/java/org/apache/brooklyn/core/resolve/jackson/BeanWithTypeUtils.java
+++ 
b/core/src/main/java/org/apache/brooklyn/core/resolve/jackson/BeanWithTypeUtils.java
@@ -125,7 +125,17 @@ public class BeanWithTypeUtils {
  */
 
 public static  T convert(ManagementContext mgmt, Object 
mapOrListToSerializeThenDeserialize, TypeToken type, boolean 
allowRegisteredTypes, BrooklynClassLoadingContext loader, boolean 
allowJavaTypes) throws JsonProcessingException {
-// try with complex types are saved as objects rather than serialized
+try {
+return convertDeeply(mgmt, mapOrListToSerializeThenDeserialize, 
type, allowRegisteredTypes, loader, allowJavaTypes);
+
+} catch (Exception e) {
+return convertShallow(mgmt, mapOrListToSerializeThenDeserialize, 
type, allowRegisteredTypes, loader, allowJavaTypes);
+}
+}
+
+@Beta
+public static  T convertShallow(ManagementContext mgmt, Object 
mapOrListToSerializeThenDeserialize, TypeToken type, boolean 
allowRegisteredTypes, BrooklynClassLoadingContext loader, boolean 
allowJavaTypes) throws JsonProcessingException {
+// try with complex types are saved as objects rather than serialized, 
but won't work if special deserialization is wanted to apply to a map inside a 
complex type
 ObjectMapper mapper = YAMLMapper.builder().build();
 mapper = BeanWithTypeUtils.applyCommonMapperConfig(mapper, mgmt, 
allowRegisteredTypes, loader, allowJavaTypes);
 mapper = new 
ObjectReferencingSerialization().useAndApplytoMapper(mapper);
@@ -135,16 +145,11 @@ public class BeanWithTypeUtils {
 }
 
 @Beta
-public static  T convertExtra(ManagementContext mgmt, Object 
mapOrListToSerializeThenDeserialize, TypeToken type, boolean 
allowRegisteredTypes, BrooklynClassLoadingContext loader, boolean 
allowJavaTypes) throws JsonProcessingException {
-try {
-return convert(mgmt, mapOrListToSerializeThenDeserialize, type, 
allowRegisteredTypes, loader, allowJavaTypes);
-
-} catch (Exception e) {
-// try full serialization - but won't work if things being written 
cannot be deserialized
-ObjectMapper m = newMapper(mgmt, allowRegisteredTypes, loader, 
allowJavaTypes);
-String serialization = 
m.writeValueAsString(mapOrListToSerializeThenDeserialize);
-return m.readValue(serialization, 
BrooklynJacksonType.asJavaType(m, type));
-}
+public static  T convertDeeply(ManagementContext mgmt, Object 
mapOrListToSerializeThenDeserialize, TypeToken type, boolean 
allowRegisteredTypes, BrooklynClassLoadingContext loader, boolean 
allowJavaTypes) throws JsonProcessingException {
+// try full serialization - but won't work if things being written 
cannot be deserialized, eg due to unknown type
+ObjectMapper m = newMapper(mgmt, allowRegisteredTypes, loader, 
allowJavaTypes);
+String serialization = 
m.writeValueAsString(mapOrListToSerializeThenDeserialize);
+return m.readValue(serialization, BrooklynJacksonType.asJavaType(m, 
type));
 }
 
 public static  Maybe tryConvertOrAbsentUsingContext(Maybe 
input, TypeToken type) {
diff --git 
a/core/src/main/java/org/apache/brooklyn/core/resolve/jackson/BrooklynRegisteredTypeJacksonSerialization.java
 
b/core/src/main/java/org/apache/brooklyn/core/resolve/jackson/BrooklynRegisteredTypeJacksonSerialization.java
index b7dbad4..5351716 100644
--- 
a/core/src/main/java/org/apache/brooklyn/core/resolve/jackson/BrooklynRegisteredTypeJacksonSerialization.java
+++ 
b/core/src/main/java/org/apache/brooklyn/core/resolve/jackson/BrooklynRegisteredTypeJacksonSerialization.java
@@ -228,10 +228,11 @@ public class BrooklynRegisteredTypeJacksonSerialization {
 public static ObjectMapper apply(ObjectMapper mapper, ManagementContext 
mgmt, boolean allowRegisteredTypes, BrooklynClassLoadingContext loader, boolean 
allowPojoJavaTypes) {
 // the type resolver is extended to recognise brooklyn registered type 
names
 // and return a 

[brooklyn-server] 02/02: fix occasional race condition on teardown

2021-08-13 Thread heneveld
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

commit 3aca98993e029878efe770fbc06110820ecf68f5
Author: Alex Heneveld 
AuthorDate: Sat Aug 14 05:19:44 2021 +0100

fix occasional race condition on teardown
---
 .../org/apache/brooklyn/core/mgmt/internal/LocalEntityManager.java | 7 ---
 1 file changed, 4 insertions(+), 3 deletions(-)

diff --git 
a/core/src/main/java/org/apache/brooklyn/core/mgmt/internal/LocalEntityManager.java
 
b/core/src/main/java/org/apache/brooklyn/core/mgmt/internal/LocalEntityManager.java
index 8257c48..47936ac 100644
--- 
a/core/src/main/java/org/apache/brooklyn/core/mgmt/internal/LocalEntityManager.java
+++ 
b/core/src/main/java/org/apache/brooklyn/core/mgmt/internal/LocalEntityManager.java
@@ -845,8 +845,9 @@ public class LocalEntityManager implements 
EntityManagerInternal {
  * this is happening? Should abstractEntity.onManagementStopped or 
some such remove the entity
  * from its groups?
  */
-
-if (!getLastManagementTransitionMode(e.getId()).isReadOnly()) {
+
+ManagementTransitionMode lastTM = 
getLastManagementTransitionMode(e.getId());
+if (lastTM!=null && !lastTM.isReadOnly()) {
 e.clearParent();
 for (Group group : e.groups()) {
 if (!Entities.isNoLongerManaged(group)) group.removeMember(e);
@@ -858,7 +859,7 @@ public class LocalEntityManager implements 
EntityManagerInternal {
 }
 }
 } else {
-log.debug("No relations being updated on unmanage of read only 
{}", e);
+log.debug("No relations being updated on unmanage of read only {} 
(mode {})", e, lastTM);
 }
 
 unmanageOwnedLocations(e);


[brooklyn-server] branch master updated (f72e7c2 -> 3aca989)

2021-08-13 Thread heneveld
This is an automated email from the ASF dual-hosted git repository.

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


from f72e7c2  Merge branch 'serializing-with-references'
 new 361d4ca  more object-reference deserialization tweaks
 new 3aca989  fix occasional race condition on teardown

The 2 revisions listed above as "new" are entirely new to this
repository and will be described in separate emails.  The revisions
listed as "add" were already present in the repository and have only
been added to this reference.


Summary of changes:
 .../core/mgmt/internal/LocalEntityManager.java |  7 +++---
 .../core/resolve/jackson/BeanWithTypeUtils.java| 27 -
 ...BrooklynRegisteredTypeJacksonSerialization.java |  5 ++--
 .../jackson/ObjectReferencingSerialization.java| 28 ++
 .../util/core/internal/TypeCoercionsTest.java  | 11 -
 5 files changed, 56 insertions(+), 22 deletions(-)


[brooklyn-server] 03/06: remove exploratory jackson stuff that isn't needed

2021-08-13 Thread heneveld
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

commit 5dd7b3cc6061d632c8f96acf63225024beffe726
Author: Alex Heneveld 
AuthorDate: Sat Aug 14 02:12:37 2021 +0100

remove exploratory jackson stuff that isn't needed
---
 .../jackson/ObjectReferencingSerialization.java|  63 +---
 .../BrooklynMiscJacksonSerializationTest.java  | 114 -
 2 files changed, 3 insertions(+), 174 deletions(-)

diff --git 
a/core/src/main/java/org/apache/brooklyn/core/resolve/jackson/ObjectReferencingSerialization.java
 
b/core/src/main/java/org/apache/brooklyn/core/resolve/jackson/ObjectReferencingSerialization.java
index 27005c1..465380b 100644
--- 
a/core/src/main/java/org/apache/brooklyn/core/resolve/jackson/ObjectReferencingSerialization.java
+++ 
b/core/src/main/java/org/apache/brooklyn/core/resolve/jackson/ObjectReferencingSerialization.java
@@ -2,7 +2,6 @@ package org.apache.brooklyn.core.resolve.jackson;
 
 import com.fasterxml.jackson.core.JsonGenerator;
 import com.fasterxml.jackson.core.JsonParser;
-import com.fasterxml.jackson.core.JsonProcessingException;
 import com.fasterxml.jackson.core.JsonToken;
 import com.fasterxml.jackson.databind.BeanDescription;
 import com.fasterxml.jackson.databind.DeserializationContext;
@@ -20,7 +19,6 @@ import com.fasterxml.jackson.databind.ser.std.StdSerializer;
 import com.google.common.collect.BiMap;
 import com.google.common.collect.HashBiMap;
 import java.io.IOException;
-import java.util.Map;
 import 
org.apache.brooklyn.core.resolve.jackson.BrooklynJacksonSerializationUtils.ConfigurableBeanDeserializerModifier;
 import org.apache.brooklyn.util.text.Identifiers;
 import org.slf4j.Logger;
@@ -28,6 +26,9 @@ import org.slf4j.LoggerFactory;
 
 public class ObjectReferencingSerialization {
 
+// some other explorations of approaches, including object id, are in the 
git history;
+// but this seemed the best as object id was harder to use for all bean 
types
+
 private static final Logger LOG = 
LoggerFactory.getLogger(ObjectReferencingSerialization.class);
 
 public ObjectMapper useMapper(ObjectMapper mapper) {
@@ -37,22 +38,9 @@ public class ObjectReferencingSerialization {
 .addDeserializerWrapper(
 d -> new ObjectReferencingJsonDeserializer(d, 
backingMap)
 ).apply(mapper);
-
-//mapper.registerModule(new SimpleModule()
-//.addSerializer(Object.class, new 
ObjectReferenceSerializer(backingMap))
-//.addDeserializer(Object.class, new 
ObjectReferenceDeserializer(backingMap))
-//);
 return mapper;
 }
 
-
-static class ObjectReference {
-String id;
-public ObjectReference() {}
-public ObjectReference(String id) { this.id = id; }
-}
-
-
 static class ObjectReferenceSerializer extends StdSerializer {
 private final BiMap backingMap;
 
@@ -75,19 +63,6 @@ public class ObjectReferencingSerialization {
 }
 
 gen.writeObjectRef(id);
-
-//serializers.findValueSerializer(Map.class, 
null).serializeWithType(MutableMap.of("@ref", id), gen, serializers,
-//
serializers.findTypeSerializer(serializers.constructType(Object.class)));
-}
-}
-
-static class ObjectReferenceDeserializer extends JsonDeserializer {
-public ObjectReferenceDeserializer(Map backingMap) {
-}
-
-@Override
-public Object deserialize(JsonParser p, DeserializationContext ctxt) 
throws IOException, JsonProcessingException {
-return null;
 }
 }
 
@@ -136,37 +111,5 @@ public class ObjectReferencingSerialization {
 return nestedDeserialize.apply(jp, ctxt);
 }
 }
-//
-//public static class ObjectReferencingDeserializerFactory extends 
BeanDeserializerFactory {
-//protected 
ObjectReferencingDeserializerFactory(DeserializerFactoryConfig config) {
-//super(config);
-//}
-//
-//public static ObjectReferencingDeserializerFactory 
extending(DeserializerFactory factory) {
-//if (factory == null) return new 
ObjectReferencingDeserializerFactory(null);
-//if (factory instanceof ObjectReferencingDeserializerFactory) 
return (ObjectReferencingDeserializerFactory) factory;
-//if (factory instanceof BeanDeserializerFactory) return new 
ObjectReferencingDeserializerFactory( ((BeanDeserializerFactory) 
factory).getFactoryConfig() );
-//throw new IllegalStateException("Cannot extend "+factory);
-//}
-//@Override
-//public ObjectReferencingDeserializerFactory 
withConfig(DeserializerFactoryConfig config) {
-//if (_factoryConfig == config) return this;
-//return new ObjectReferencingDeserializerFactory(config);
-//}
-//
-// 

[brooklyn-server] 06/06: Merge branch 'serializing-with-references'

2021-08-13 Thread heneveld
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

commit f72e7c2ab33ac1bce81b858d9650bfb0af9d77f5
Merge: dce8284 5b70d1b
Author: Alex Heneveld 
AuthorDate: Sat Aug 14 02:54:41 2021 +0100

Merge branch 'serializing-with-references'

 core/pom.xml   |   4 +
 .../core/resolve/jackson/BeanWithTypeUtils.java|  43 +-
 ...BrooklynRegisteredTypeJacksonSerialization.java |  10 ++
 .../jackson/ObjectReferencingSerialization.java| 161 +
 .../jackson/WrappedValuesSerialization.java|  11 +-
 .../brooklyn/util/core/flags/TypeCoercions.java|   8 +-
 .../BrooklynMiscJacksonSerializationTest.java  |  57 +++-
 .../core/resolve/jackson/MapperTestFixture.java|  18 +++
 .../util/core/internal/TypeCoercionsTest.java  |  15 ++
 9 files changed, 316 insertions(+), 11 deletions(-)


[brooklyn-server] 04/06: apply the object-reference serialization mechanism to conversion

2021-08-13 Thread heneveld
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

commit 5b70d1bf5a315cb479031710ac083542e6d233fa
Author: Alex Heneveld 
AuthorDate: Sat Aug 14 02:17:31 2021 +0100

apply the object-reference serialization mechanism to conversion

fixing the failing test, and some tidy up
---
 .../core/resolve/jackson/BeanWithTypeUtils.java| 24 --
 .../jackson/ObjectReferencingSerialization.java| 54 --
 .../BrooklynMiscJacksonSerializationTest.java  | 36 +--
 3 files changed, 92 insertions(+), 22 deletions(-)

diff --git 
a/core/src/main/java/org/apache/brooklyn/core/resolve/jackson/BeanWithTypeUtils.java
 
b/core/src/main/java/org/apache/brooklyn/core/resolve/jackson/BeanWithTypeUtils.java
index cf30094..896d493 100644
--- 
a/core/src/main/java/org/apache/brooklyn/core/resolve/jackson/BeanWithTypeUtils.java
+++ 
b/core/src/main/java/org/apache/brooklyn/core/resolve/jackson/BeanWithTypeUtils.java
@@ -27,6 +27,7 @@ import com.fasterxml.jackson.databind.ObjectMapper;
 import com.fasterxml.jackson.databind.SerializationFeature;
 import com.fasterxml.jackson.databind.json.JsonMapper;
 import com.fasterxml.jackson.dataformat.yaml.YAMLMapper;
+import com.google.common.annotations.Beta;
 import com.google.common.reflect.TypeToken;
 import java.util.*;
 import java.util.Map.Entry;
@@ -124,9 +125,26 @@ public class BeanWithTypeUtils {
  */
 
 public static  T convert(ManagementContext mgmt, Object 
mapOrListToSerializeThenDeserialize, TypeToken type, boolean 
allowRegisteredTypes, BrooklynClassLoadingContext loader, boolean 
allowJavaTypes) throws JsonProcessingException {
-ObjectMapper m = newMapper(mgmt, allowRegisteredTypes, loader, 
allowJavaTypes);
-String serialization = 
m.writeValueAsString(mapOrListToSerializeThenDeserialize);
-return m.readValue(serialization, BrooklynJacksonType.asJavaType(m, 
type));
+// try with complex types are saved as objects rather than serialized
+ObjectMapper mapper = YAMLMapper.builder().build();
+mapper = BeanWithTypeUtils.applyCommonMapperConfig(mapper, mgmt, 
allowRegisteredTypes, loader, allowJavaTypes);
+mapper = new 
ObjectReferencingSerialization().useAndApplytoMapper(mapper);
+
+String serialization = 
mapper.writeValueAsString(mapOrListToSerializeThenDeserialize);
+return mapper.readValue(serialization, 
BrooklynJacksonType.asJavaType(mapper, type));
+}
+
+@Beta
+public static  T convertExtra(ManagementContext mgmt, Object 
mapOrListToSerializeThenDeserialize, TypeToken type, boolean 
allowRegisteredTypes, BrooklynClassLoadingContext loader, boolean 
allowJavaTypes) throws JsonProcessingException {
+try {
+return convert(mgmt, mapOrListToSerializeThenDeserialize, type, 
allowRegisteredTypes, loader, allowJavaTypes);
+
+} catch (Exception e) {
+// try full serialization - but won't work if things being written 
cannot be deserialized
+ObjectMapper m = newMapper(mgmt, allowRegisteredTypes, loader, 
allowJavaTypes);
+String serialization = 
m.writeValueAsString(mapOrListToSerializeThenDeserialize);
+return m.readValue(serialization, 
BrooklynJacksonType.asJavaType(m, type));
+}
 }
 
 public static  Maybe tryConvertOrAbsentUsingContext(Maybe 
input, TypeToken type) {
diff --git 
a/core/src/main/java/org/apache/brooklyn/core/resolve/jackson/ObjectReferencingSerialization.java
 
b/core/src/main/java/org/apache/brooklyn/core/resolve/jackson/ObjectReferencingSerialization.java
index 465380b..28314a3 100644
--- 
a/core/src/main/java/org/apache/brooklyn/core/resolve/jackson/ObjectReferencingSerialization.java
+++ 
b/core/src/main/java/org/apache/brooklyn/core/resolve/jackson/ObjectReferencingSerialization.java
@@ -1,3 +1,21 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements.  See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership.  The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License.  You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied.  See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+ */
 package org.apache.brooklyn.core.resolve.jackson;
 
 import com.fasterxml.jackson.core.JsonGenerator;
@@ -16,10 +34,13 @@ import 
com.fasterxml.jackson.databind.jsontype.TypeSerializer;

[brooklyn-server] 05/06: minor tidies to launcher/viewer and cleanup, for tests

2021-08-13 Thread heneveld
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

commit dce828451d8ef9be78f24d8050eb343039a5ddbd
Author: Alex Heneveld 
AuthorDate: Sat Aug 14 01:49:31 2021 +0100

minor tidies to launcher/viewer and cleanup, for tests
---
 .../main/java/org/apache/brooklyn/launcher/BrooklynLauncher.java   | 1 +
 .../apache/brooklyn/launcher/blueprints/AbstractBlueprintTest.java | 7 +--
 2 files changed, 2 insertions(+), 6 deletions(-)

diff --git 
a/launcher/src/main/java/org/apache/brooklyn/launcher/BrooklynLauncher.java 
b/launcher/src/main/java/org/apache/brooklyn/launcher/BrooklynLauncher.java
index 46cee52..8c1bf5b 100644
--- a/launcher/src/main/java/org/apache/brooklyn/launcher/BrooklynLauncher.java
+++ b/launcher/src/main/java/org/apache/brooklyn/launcher/BrooklynLauncher.java
@@ -421,6 +421,7 @@ public class BrooklynLauncher extends 
BasicLauncher {
 if (webServer != null) {
 try {
 webServer.stop();
+webServer = null;
 } catch (Exception e) {
 LOG.warn("Error stopping web-server; continuing with 
termination", e);
 }
diff --git 
a/launcher/src/test/java/org/apache/brooklyn/launcher/blueprints/AbstractBlueprintTest.java
 
b/launcher/src/test/java/org/apache/brooklyn/launcher/blueprints/AbstractBlueprintTest.java
index 7d6bcc4..0c57f2d 100644
--- 
a/launcher/src/test/java/org/apache/brooklyn/launcher/blueprints/AbstractBlueprintTest.java
+++ 
b/launcher/src/test/java/org/apache/brooklyn/launcher/blueprints/AbstractBlueprintTest.java
@@ -205,12 +205,7 @@ public abstract class AbstractBlueprintTest {
 }
 
 protected void runTest(Reader yaml) throws Exception {
-final Application app = launcher.launchAppYaml(yaml);
-
-assertNoFires(app);
-
-Application newApp = rebind();
-assertNoFires(newApp);
+runTest(launcher.launchAppYaml(yaml), this::assertNoFires);
 }
 
 protected void assertNoFires(final Entity app) {


[brooklyn-server] branch master updated (8906243 -> f72e7c2)

2021-08-13 Thread heneveld
This is an automated email from the ASF dual-hosted git repository.

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


from 8906243  Merge pull request #1215 from ahgittin/more-deprecation
 new dce8284  minor tidies to launcher/viewer and cleanup, for tests
 new a159211  minor tidies to launcher/viewer and cleanup, for tests
 new bc2583d  serialization and deserialization that puts/gets objects to a 
backing map and writes references
 new 5dd7b3c  remove exploratory jackson stuff that isn't needed
 new 5b70d1b  apply the object-reference serialization mechanism to 
conversion
 new f72e7c2  Merge branch 'serializing-with-references'

The 6 revisions listed above as "new" are entirely new to this
repository and will be described in separate emails.  The revisions
listed as "add" were already present in the repository and have only
been added to this reference.


Summary of changes:
 core/pom.xml   |   4 +
 .../core/resolve/jackson/BeanWithTypeUtils.java|  43 +-
 ...BrooklynRegisteredTypeJacksonSerialization.java |  10 ++
 .../jackson/ObjectReferencingSerialization.java| 161 +
 .../jackson/WrappedValuesSerialization.java|  11 +-
 .../brooklyn/util/core/flags/TypeCoercions.java|   8 +-
 .../BrooklynMiscJacksonSerializationTest.java  |  57 +++-
 .../core/resolve/jackson/MapperTestFixture.java|  18 +++
 .../util/core/internal/TypeCoercionsTest.java  |  15 ++
 .../apache/brooklyn/launcher/BrooklynLauncher.java |   1 +
 .../launcher/blueprints/AbstractBlueprintTest.java |   7 +-
 11 files changed, 318 insertions(+), 17 deletions(-)
 create mode 100644 
core/src/main/java/org/apache/brooklyn/core/resolve/jackson/ObjectReferencingSerialization.java


[brooklyn-server] 02/06: serialization and deserialization that puts/gets objects to a backing map and writes references

2021-08-13 Thread heneveld
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

commit bc2583d402b8ac1e9cde1350904e6a73b0646e23
Author: Alex Heneveld 
AuthorDate: Sat Aug 14 01:50:35 2021 +0100

serialization and deserialization that puts/gets objects to a backing map 
and writes references
---
 core/pom.xml   |   4 +
 .../core/resolve/jackson/BeanWithTypeUtils.java|  19 ++-
 ...BrooklynRegisteredTypeJacksonSerialization.java |  10 ++
 .../jackson/ObjectReferencingSerialization.java| 172 +
 .../jackson/WrappedValuesSerialization.java|  11 +-
 .../brooklyn/util/core/flags/TypeCoercions.java|   8 +-
 .../BrooklynMiscJacksonSerializationTest.java  | 165 +++-
 .../core/resolve/jackson/MapperTestFixture.java|  18 +++
 .../util/core/internal/TypeCoercionsTest.java  |  15 ++
 9 files changed, 414 insertions(+), 8 deletions(-)

diff --git a/core/pom.xml b/core/pom.xml
index cd5a2c5..c03c64f 100644
--- a/core/pom.xml
+++ b/core/pom.xml
@@ -164,6 +164,10 @@
 jackson-databind
 
 
+com.fasterxml.jackson.dataformat
+jackson-dataformat-yaml
+
+
 com.fasterxml.jackson.jaxrs
 jackson-jaxrs-json-provider
 
diff --git 
a/core/src/main/java/org/apache/brooklyn/core/resolve/jackson/BeanWithTypeUtils.java
 
b/core/src/main/java/org/apache/brooklyn/core/resolve/jackson/BeanWithTypeUtils.java
index 7c31bf9..cf30094 100644
--- 
a/core/src/main/java/org/apache/brooklyn/core/resolve/jackson/BeanWithTypeUtils.java
+++ 
b/core/src/main/java/org/apache/brooklyn/core/resolve/jackson/BeanWithTypeUtils.java
@@ -18,9 +18,15 @@
  */
 package org.apache.brooklyn.core.resolve.jackson;
 
+import com.fasterxml.jackson.annotation.JsonAutoDetect;
+import com.fasterxml.jackson.annotation.JsonInclude;
+import com.fasterxml.jackson.annotation.PropertyAccessor;
 import com.fasterxml.jackson.core.JsonProcessingException;
+import com.fasterxml.jackson.databind.DeserializationFeature;
 import com.fasterxml.jackson.databind.ObjectMapper;
+import com.fasterxml.jackson.databind.SerializationFeature;
 import com.fasterxml.jackson.databind.json.JsonMapper;
+import com.fasterxml.jackson.dataformat.yaml.YAMLMapper;
 import com.google.common.reflect.TypeToken;
 import java.util.*;
 import java.util.Map.Entry;
@@ -50,8 +56,14 @@ public class BeanWithTypeUtils {
 
 /** also see {@link 
org.apache.brooklyn.util.core.json.BrooklynObjectsJsonMapper#newMapper(ManagementContext)}
 */
 public static ObjectMapper newMapper(ManagementContext mgmt, boolean 
allowRegisteredTypes, BrooklynClassLoadingContext loader, boolean 
allowBasicJavaTypes) {
-JsonMapper mapper = newSimpleMapper();
+return applyCommonMapperConfig(newSimpleMapper(), mgmt, 
allowRegisteredTypes, loader, allowBasicJavaTypes);
+}
+
+public static ObjectMapper newYamlMapper(ManagementContext mgmt, boolean 
allowRegisteredTypes, BrooklynClassLoadingContext loader, boolean 
allowBasicJavaTypes) {
+return applyCommonMapperConfig(newSimpleYamlMapper(), mgmt, 
allowRegisteredTypes, loader, allowBasicJavaTypes);
+}
 
+public static ObjectMapper applyCommonMapperConfig(ObjectMapper mapper, 
ManagementContext mgmt, boolean allowRegisteredTypes, 
BrooklynClassLoadingContext loader, boolean allowBasicJavaTypes) {
 BrooklynRegisteredTypeJacksonSerialization.apply(mapper, mgmt, 
allowRegisteredTypes, loader, allowBasicJavaTypes);
 WrappedValuesSerialization.apply(mapper, mgmt);
 mapper = new ConfigurableBeanDeserializerModifier()
@@ -68,6 +80,11 @@ public class BeanWithTypeUtils {
 return JsonMapper.builder().build();
 }
 
+public static YAMLMapper newSimpleYamlMapper() {
+// for use with json maps (no special type resolution, even the field 
"type" is ignored)
+return YAMLMapper.builder().build();
+}
+
 public static boolean isPureJson(Object o) {
 return isJsonAndOthers(o, oo -> false);
 }
diff --git 
a/core/src/main/java/org/apache/brooklyn/core/resolve/jackson/BrooklynRegisteredTypeJacksonSerialization.java
 
b/core/src/main/java/org/apache/brooklyn/core/resolve/jackson/BrooklynRegisteredTypeJacksonSerialization.java
index e9724c8..b7dbad4 100644
--- 
a/core/src/main/java/org/apache/brooklyn/core/resolve/jackson/BrooklynRegisteredTypeJacksonSerialization.java
+++ 
b/core/src/main/java/org/apache/brooklyn/core/resolve/jackson/BrooklynRegisteredTypeJacksonSerialization.java
@@ -18,9 +18,12 @@
  */
 package org.apache.brooklyn.core.resolve.jackson;
 
+import com.fasterxml.jackson.annotation.JsonAutoDetect;
+import com.fasterxml.jackson.annotation.JsonInclude;
 import com.fasterxml.jackson.annotation.JsonInclude.Include;
 import com.fasterxml.jackson.annotation.JsonTypeInfo;
 import 

[brooklyn-server] 01/06: minor tidies to launcher/viewer and cleanup, for tests

2021-08-13 Thread heneveld
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

commit a15921188eeb08845b9ede54fbc4f94eac4372b8
Author: Alex Heneveld 
AuthorDate: Sat Aug 14 01:49:31 2021 +0100

minor tidies to launcher/viewer and cleanup, for tests
---
 .../main/java/org/apache/brooklyn/launcher/BrooklynLauncher.java   | 1 +
 .../apache/brooklyn/launcher/blueprints/AbstractBlueprintTest.java | 7 +--
 2 files changed, 2 insertions(+), 6 deletions(-)

diff --git 
a/launcher/src/main/java/org/apache/brooklyn/launcher/BrooklynLauncher.java 
b/launcher/src/main/java/org/apache/brooklyn/launcher/BrooklynLauncher.java
index 46cee52..8c1bf5b 100644
--- a/launcher/src/main/java/org/apache/brooklyn/launcher/BrooklynLauncher.java
+++ b/launcher/src/main/java/org/apache/brooklyn/launcher/BrooklynLauncher.java
@@ -421,6 +421,7 @@ public class BrooklynLauncher extends 
BasicLauncher {
 if (webServer != null) {
 try {
 webServer.stop();
+webServer = null;
 } catch (Exception e) {
 LOG.warn("Error stopping web-server; continuing with 
termination", e);
 }
diff --git 
a/launcher/src/test/java/org/apache/brooklyn/launcher/blueprints/AbstractBlueprintTest.java
 
b/launcher/src/test/java/org/apache/brooklyn/launcher/blueprints/AbstractBlueprintTest.java
index 7d6bcc4..0c57f2d 100644
--- 
a/launcher/src/test/java/org/apache/brooklyn/launcher/blueprints/AbstractBlueprintTest.java
+++ 
b/launcher/src/test/java/org/apache/brooklyn/launcher/blueprints/AbstractBlueprintTest.java
@@ -205,12 +205,7 @@ public abstract class AbstractBlueprintTest {
 }
 
 protected void runTest(Reader yaml) throws Exception {
-final Application app = launcher.launchAppYaml(yaml);
-
-assertNoFires(app);
-
-Application newApp = rebind();
-assertNoFires(newApp);
+runTest(launcher.launchAppYaml(yaml), this::assertNoFires);
 }
 
 protected void assertNoFires(final Entity app) {


[brooklyn-server] branch master updated (1ff1ea8 -> 8906243)

2021-08-13 Thread tbouron
This is an automated email from the ASF dual-hosted git repository.

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


from 1ff1ea8  Merge pull request #1220 from 
tbouron/feature/aggregation-deprecation
 new 862a891  more comments on deprecated REST methods
 new 536dae0  Add missing alternative usage for deprecated method
 new 9e954d2  Update deprecated since to use the right version
 new 8906243  Merge pull request #1215 from ahgittin/more-deprecation

The 13152 revisions listed above as "new" are entirely new to this
repository and will be described in separate emails.  The revisions
listed as "add" were already present in the repository and have only
been added to this reference.


Summary of changes:
 .../main/java/org/apache/brooklyn/rest/api/ActivityApi.java  |  3 ++-
 .../main/java/org/apache/brooklyn/rest/api/BundleApi.java| 12 +---
 .../main/java/org/apache/brooklyn/rest/api/CatalogApi.java   | 12 +---
 .../main/java/org/apache/brooklyn/rest/api/LocationApi.java  |  6 +++---
 .../main/java/org/apache/brooklyn/rest/api/LogoutApi.java|  2 +-
 .../org/apache/brooklyn/rest/resources/BundleResource.java   |  2 +-
 6 files changed, 21 insertions(+), 16 deletions(-)