You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@brooklyn.apache.org by al...@apache.org on 2018/01/11 14:54:16 UTC

[3/4] brooklyn-server git commit: allow iconUrl to come from item, match behaviour for name and description

allow iconUrl to come from item, match behaviour for name and description


Project: http://git-wip-us.apache.org/repos/asf/brooklyn-server/repo
Commit: http://git-wip-us.apache.org/repos/asf/brooklyn-server/commit/26b8f4f9
Tree: http://git-wip-us.apache.org/repos/asf/brooklyn-server/tree/26b8f4f9
Diff: http://git-wip-us.apache.org/repos/asf/brooklyn-server/diff/26b8f4f9

Branch: refs/heads/master
Commit: 26b8f4f95bdaf279d5ac387a22cc5030f4362229
Parents: 1b1e785
Author: Alex Heneveld <al...@cloudsoftcorp.com>
Authored: Thu Jan 11 11:45:36 2018 +0000
Committer: Alex Heneveld <al...@cloudsoftcorp.com>
Committed: Thu Jan 11 11:45:36 2018 +0000

----------------------------------------------------------------------
 .../brooklyn/catalog/CatalogYamlPolicyTest.java | 42 +++++++++++++++++++-
 .../catalog/internal/BasicBrooklynCatalog.java  | 14 ++++---
 2 files changed, 50 insertions(+), 6 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/brooklyn-server/blob/26b8f4f9/camp/camp-brooklyn/src/test/java/org/apache/brooklyn/camp/brooklyn/catalog/CatalogYamlPolicyTest.java
----------------------------------------------------------------------
diff --git a/camp/camp-brooklyn/src/test/java/org/apache/brooklyn/camp/brooklyn/catalog/CatalogYamlPolicyTest.java b/camp/camp-brooklyn/src/test/java/org/apache/brooklyn/camp/brooklyn/catalog/CatalogYamlPolicyTest.java
index e1cbbb7..0dffd28 100644
--- a/camp/camp-brooklyn/src/test/java/org/apache/brooklyn/camp/brooklyn/catalog/CatalogYamlPolicyTest.java
+++ b/camp/camp-brooklyn/src/test/java/org/apache/brooklyn/camp/brooklyn/catalog/CatalogYamlPolicyTest.java
@@ -27,6 +27,7 @@ import org.apache.brooklyn.camp.brooklyn.AbstractYamlTest;
 import org.apache.brooklyn.core.config.BasicConfigKey;
 import org.apache.brooklyn.core.test.policy.TestPolicy;
 import org.apache.brooklyn.entity.stock.BasicEntity;
+import org.testng.Assert;
 import org.testng.annotations.Test;
 
 import com.google.common.collect.Iterables;
@@ -43,6 +44,28 @@ public class CatalogYamlPolicyTest extends AbstractYamlTest {
 
         RegisteredType item = mgmt().getTypeRegistry().get(symbolicName, TEST_VERSION);
         assertEquals(item.getSymbolicName(), symbolicName);
+        Assert.assertNotNull(item.getDisplayName());
+        Assert.assertNotNull(item.getIconUrl());
+        Assert.assertNotNull(item.getDescription());
+        assertEquals(countCatalogPolicies(), 1);
+
+        deleteCatalogEntity(symbolicName);
+    }
+
+    @Test
+    public void testAddCatalogItemDetailsFromItemNotMetadata() throws Exception {
+        assertEquals(countCatalogPolicies(), 0);
+
+        String symbolicName = "my.catalog.policy.id.load";
+        addCatalogPolicyDetailsFromItemNotMetadata(symbolicName, POLICY_TYPE);
+
+        RegisteredType item = mgmt().getTypeRegistry().get(symbolicName, TEST_VERSION);
+        assertEquals(item.getSymbolicName(), symbolicName);
+        Assert.assertNotNull(item.getDisplayName());
+        Assert.assertNotNull(item.getDescription());
+        // prior to 2018-01 the above could come from either but icon for policy could only come from metadata;
+        // fixed by the other change made in the same commit as this test and comment
+        Assert.assertNotNull(item.getIconUrl());
         assertEquals(countCatalogPolicies(), 1);
 
         deleteCatalogEntity(symbolicName);
@@ -146,8 +169,25 @@ public class CatalogYamlPolicyTest extends AbstractYamlTest {
             "  itemType: policy",
             "  name: My Catalog Policy",
             "  description: My description",
-            "  icon_url: classpath://path/to/myicon.jpg",
+            "  iconUrl: classpath://path/to/myicon.jpg",
+            "  item:",
+            "    type: " + policyType,
+            "    brooklyn.config:",
+            "      config1: config1",
+            "      config2: config2");
+    }
+
+    private void addCatalogPolicyDetailsFromItemNotMetadata(String symbolicName, String policyType) {
+        // name, description, and icon can be set in the item _or_ in metadata
+        addCatalogItems(
+            "brooklyn.catalog:",
+            "  id: " + symbolicName,
+            "  version: " + TEST_VERSION,
+            "  itemType: policy",
             "  item:",
+            "    name: My Catalog Policy",
+            "    description: My description",
+            "    iconUrl: classpath://path/to/myicon.jpg",
             "    type: " + policyType,
             "    brooklyn.config:",
             "      config1: config1",

http://git-wip-us.apache.org/repos/asf/brooklyn-server/blob/26b8f4f9/core/src/main/java/org/apache/brooklyn/core/catalog/internal/BasicBrooklynCatalog.java
----------------------------------------------------------------------
diff --git a/core/src/main/java/org/apache/brooklyn/core/catalog/internal/BasicBrooklynCatalog.java b/core/src/main/java/org/apache/brooklyn/core/catalog/internal/BasicBrooklynCatalog.java
index 2b6d169..6ab68c2 100644
--- a/core/src/main/java/org/apache/brooklyn/core/catalog/internal/BasicBrooklynCatalog.java
+++ b/core/src/main/java/org/apache/brooklyn/core/catalog/internal/BasicBrooklynCatalog.java
@@ -907,7 +907,8 @@ public class BasicBrooklynCatalog implements BrooklynCatalog {
         description = setFromItemIfUnset(description, itemAsMap, "description");
 
         // icon.url is discouraged (using '.'), but kept for legacy compatibility; should deprecate this
-        final String catalogIconUrl = getFirstAs(catalogMetadata, String.class, "iconUrl", "icon_url", "icon.url").orNull();
+        String catalogIconUrl = getFirstAs(catalogMetadata, String.class, "iconUrl", "icon_url", "icon.url").orNull();
+        catalogIconUrl = setFromItemIfUnset(catalogIconUrl, itemAsMap, "iconUrl", "icon_url", "icon.url");
 
         final String deprecated = getFirstAs(catalogMetadata, String.class, "deprecated").orNull();
         final Boolean catalogDeprecated = Boolean.valueOf(deprecated);
@@ -1088,12 +1089,15 @@ public class BasicBrooklynCatalog implements BrooklynCatalog {
         throw new UserFacingException("Expected "+JavaClassNames.superSimpleClassName(type)+" for "+description+", not "+JavaClassNames.superSimpleClassName(x));
     }
 
-    private String setFromItemIfUnset(String oldValue, Map<?,?> item, String fieldAttr) {
+    private String setFromItemIfUnset(String oldValue, Map<?,?> item, String ...fieldAttrs) {
         if (Strings.isNonBlank(oldValue)) return oldValue;
         if (item!=null) {
-            Object newValue = item.get(fieldAttr);
-            if (newValue instanceof String && Strings.isNonBlank((String)newValue)) 
-                return (String)newValue;
+            for (String fieldAttr: fieldAttrs) {
+                Object newValue = item.get(fieldAttr);
+                if (newValue instanceof String && Strings.isNonBlank((String)newValue)) { 
+                    return (String)newValue;
+                }
+            }
         }
         return oldValue;
     }