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 2021/05/28 15:15:17 UTC

[brooklyn-server] 05/07: call it `spec_hierarchy` and let it take a list when supplied via catalog

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 66887707c8f0d28e1d42c6c8617a0308365c8899
Author: Alex Heneveld <al...@cloudsoftcorp.com>
AuthorDate: Fri May 28 15:02:02 2021 +0100

    call it `spec_hierarchy` and let it take a list when supplied via catalog
---
 .../CatalogYamlEntityOsgiTypeRegistryTest.java     |  4 ++--
 .../brooklyn/catalog/CatalogYamlEntityTest.java    |  4 ++--
 .../apache/brooklyn/core/mgmt/BrooklynTags.java    | 26 +++++++++++++++-------
 .../core/typereg/AbstractTypePlanTransformer.java  |  8 +++----
 4 files changed, 26 insertions(+), 16 deletions(-)

diff --git a/camp/camp-brooklyn/src/test/java/org/apache/brooklyn/camp/brooklyn/catalog/CatalogYamlEntityOsgiTypeRegistryTest.java b/camp/camp-brooklyn/src/test/java/org/apache/brooklyn/camp/brooklyn/catalog/CatalogYamlEntityOsgiTypeRegistryTest.java
index 101978c..42677df 100644
--- a/camp/camp-brooklyn/src/test/java/org/apache/brooklyn/camp/brooklyn/catalog/CatalogYamlEntityOsgiTypeRegistryTest.java
+++ b/camp/camp-brooklyn/src/test/java/org/apache/brooklyn/camp/brooklyn/catalog/CatalogYamlEntityOsgiTypeRegistryTest.java
@@ -223,8 +223,8 @@ public class CatalogYamlEntityOsgiTypeRegistryTest extends CatalogYamlEntityTest
                 "  id: " + symbolicName,
                 "  version: " + TEST_VERSION,
                 "  tags:",
-                "  - "+ BrooklynTags.YAML_SPEC_HIERARCHY +": ",
-                "           format: " + CampTypePlanTransformer.FORMAT,
+                "  - "+ BrooklynTags.SPEC_HIERARCHY +": ",
+                "         - format: " + CampTypePlanTransformer.FORMAT,
                 "           summary:  Plan for " + symbolicName,
                 "           contents:  | " ,
                 "               line 1" ,
diff --git a/camp/camp-brooklyn/src/test/java/org/apache/brooklyn/camp/brooklyn/catalog/CatalogYamlEntityTest.java b/camp/camp-brooklyn/src/test/java/org/apache/brooklyn/camp/brooklyn/catalog/CatalogYamlEntityTest.java
index f99eb5c..e499639 100644
--- a/camp/camp-brooklyn/src/test/java/org/apache/brooklyn/camp/brooklyn/catalog/CatalogYamlEntityTest.java
+++ b/camp/camp-brooklyn/src/test/java/org/apache/brooklyn/camp/brooklyn/catalog/CatalogYamlEntityTest.java
@@ -248,8 +248,8 @@ public class CatalogYamlEntityTest extends AbstractYamlTest {
                 "    item:",
                 "      type: " + TestEntity.class.getName(),
                 "    tags:" ,
-                "    - yaml_spec_hierarchy:" ,
-                "        format: camp-test",
+                "    - "+BrooklynTags.SPEC_HIERARCHY+":",
+                "      - format: camp-test",
                 "        summary:  Test Type." ,
                 "        contents: |" ,
                 "            type: " + referencedSymbolicName,
diff --git a/core/src/main/java/org/apache/brooklyn/core/mgmt/BrooklynTags.java b/core/src/main/java/org/apache/brooklyn/core/mgmt/BrooklynTags.java
index 3eefe5d..37f87e4 100644
--- a/core/src/main/java/org/apache/brooklyn/core/mgmt/BrooklynTags.java
+++ b/core/src/main/java/org/apache/brooklyn/core/mgmt/BrooklynTags.java
@@ -43,9 +43,13 @@ public class BrooklynTags {
 
     private static final Logger LOG = LoggerFactory.getLogger(BrooklynTags.class);
 
+    // could deprecate this in favour of spec_hierarchy
     public static final String YAML_SPEC_KIND = "yaml_spec";
-    public static final String YAML_SPEC_HIERARCHY = "yaml_spec_hierarchy"; // TODO rename spec_hierarchy, have spec_source for catalog which gets removed
+
+    public static final String SPEC_HIERARCHY = "spec_hierarchy";
+
     public static final String DEPTH_IN_ANCESTOR = "depth_in_ancestor";
+
     public static final String NOTES_KIND = "notes";
     public static final String OWNER_ENTITY_ID = "owner_entity_id";
     public static final String ICON_URL = "icon_url";
@@ -181,7 +185,7 @@ public class BrooklynTags {
     public static class SpecHierarchyTag implements Serializable, HasKind {
         private static final long serialVersionUID = 3805124696862755492L;
 
-        public static final String KIND = YAML_SPEC_HIERARCHY;
+        public static final String KIND = SPEC_HIERARCHY;
 
         public static class SpecSummary implements Serializable {
             @JsonProperty
@@ -257,7 +261,7 @@ public class BrooklynTags {
             }
 
             public SpecHierarchyTag buildSpecHierarchyTag() {
-                return new SpecHierarchyTag(BrooklynTags.YAML_SPEC_HIERARCHY, MutableList.of(buildSpecSummary()));
+                return new SpecHierarchyTag(SPEC_HIERARCHY, MutableList.of(buildSpecSummary()));
             }
         }
 
@@ -306,14 +310,20 @@ public class BrooklynTags {
         }
 
         public void push(SpecSummary newFirstSpecTag) {
-            // usually the list has a single element here, if
             specList.add(0, newFirstSpecTag);
         }
+        public void push(List<SpecSummary> newFirstSpecs) {
+            if (newFirstSpecs==null || newFirstSpecs.isEmpty()) return;
+            if (newFirstSpecs.size()==1) {
+                push(newFirstSpecs.iterator().next());
+            } else {
+                List<SpecSummary> l = MutableList.copyOf(newFirstSpecs);
+                Collections.reverse(l);
+                l.forEach(this::push);
+            }
+        }
         public void push(SpecHierarchyTag newFirstSpecs) {
-            // usually the list has a single element here, if
-            List<SpecSummary> l = MutableList.copyOf(newFirstSpecs.getSpecList());
-            Collections.reverse(l);
-            l.forEach(this::push);
+            push(newFirstSpecs.getSpecList());
         }
 
         public SpecSummary pop() {
diff --git a/core/src/main/java/org/apache/brooklyn/core/typereg/AbstractTypePlanTransformer.java b/core/src/main/java/org/apache/brooklyn/core/typereg/AbstractTypePlanTransformer.java
index e97ac0f..081957d 100644
--- a/core/src/main/java/org/apache/brooklyn/core/typereg/AbstractTypePlanTransformer.java
+++ b/core/src/main/java/org/apache/brooklyn/core/typereg/AbstractTypePlanTransformer.java
@@ -18,6 +18,7 @@
  */
 package org.apache.brooklyn.core.typereg;
 
+import com.google.common.reflect.TypeToken;
 import java.util.List;
 import java.util.function.Function;
 import java.util.function.Supplier;
@@ -193,11 +194,10 @@ public abstract class AbstractTypePlanTransformer implements BrooklynTypePlanTra
             spec.tag(specTag);
         }
 
-        // TODO rename key as spec_sources
-        SpecSummary source = BrooklynTags.findSingleKeyMapValue(BrooklynTags.YAML_SPEC_HIERARCHY, SpecSummary.class, type.getTags());
-        if (source != null) {
+        List<SpecSummary> sources = BrooklynTags.findSingleKeyMapValue(BrooklynTags.SPEC_HIERARCHY, new TypeToken<List<SpecSummary>>() {}, type.getTags());
+        if (sources != null) {
             specTag.modifyHeadSummary(s -> "Converted for catalog to "+s);
-            specTag.push(source);
+            specTag.push(sources);
         }
 
         if (spec instanceof EntitySpec) {