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 2014/07/04 11:50:54 UTC

[12/45] git commit: Adds context element to catalogue entries

Adds context element to catalogue entries


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

Branch: refs/heads/master
Commit: b6d236493d7bdf01654c3ee9e44bcc80f0002208
Parents: 06c10c4
Author: Sam Corbett <sa...@cloudsoftcorp.com>
Authored: Sat Jun 28 17:11:16 2014 +0100
Committer: Sam Corbett <sa...@cloudsoftcorp.com>
Committed: Tue Jul 1 13:37:37 2014 +0100

----------------------------------------------------------------------
 .../main/java/brooklyn/catalog/CatalogItem.java | 11 ++++++--
 .../catalog/internal/CatalogContextDo.java      | 24 ++++++++++++++++
 .../catalog/internal/CatalogContextDto.java     | 20 ++++++++++++++
 .../catalog/internal/CatalogItemDo.java         |  7 ++++-
 .../internal/CatalogItemDtoAbstract.java        | 29 ++++++++++++++++----
 .../catalog/internal/CatalogXmlSerializer.java  | 13 +++++----
 .../catalog/internal/CatalogDtoTest.java        | 11 +++++++-
 7 files changed, 101 insertions(+), 14 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/incubator-brooklyn/blob/b6d23649/api/src/main/java/brooklyn/catalog/CatalogItem.java
----------------------------------------------------------------------
diff --git a/api/src/main/java/brooklyn/catalog/CatalogItem.java b/api/src/main/java/brooklyn/catalog/CatalogItem.java
index f0450d1..ab01496 100644
--- a/api/src/main/java/brooklyn/catalog/CatalogItem.java
+++ b/api/src/main/java/brooklyn/catalog/CatalogItem.java
@@ -1,11 +1,17 @@
 package brooklyn.catalog;
 
+import java.util.List;
+
 public interface CatalogItem<T> {
     
     public static enum CatalogItemType {
         TEMPLATE, ENTITY, POLICY, CONFIGURATION
     }
-    
+
+    public static interface CatalogItemContext {
+        List<String> getBundles();
+    }
+
     public CatalogItemType getCatalogItemType();
     public Class<T> getCatalogItemJavaType();
     
@@ -14,7 +20,8 @@ public interface CatalogItem<T> {
     public String getName();
     public String getDescription();
     public String getIconUrl();
-    
+    public CatalogItemContext getContext();
+
     public String toXmlString();
 
 }

http://git-wip-us.apache.org/repos/asf/incubator-brooklyn/blob/b6d23649/core/src/main/java/brooklyn/catalog/internal/CatalogContextDo.java
----------------------------------------------------------------------
diff --git a/core/src/main/java/brooklyn/catalog/internal/CatalogContextDo.java b/core/src/main/java/brooklyn/catalog/internal/CatalogContextDo.java
new file mode 100644
index 0000000..6560b35
--- /dev/null
+++ b/core/src/main/java/brooklyn/catalog/internal/CatalogContextDo.java
@@ -0,0 +1,24 @@
+package brooklyn.catalog.internal;
+
+import java.util.List;
+
+import com.google.common.base.Preconditions;
+
+import brooklyn.catalog.CatalogItem;
+
+public class CatalogContextDo implements CatalogItem.CatalogItemContext {
+
+//    private final CatalogDo catalog;
+    private final CatalogContextDto contextDto;
+
+    public CatalogContextDo(/*CatalogDo catalog,*/ CatalogContextDto contextDto) {
+//        this.catalog = Preconditions.checkNotNull(catalog, "catalog");
+        this.contextDto = Preconditions.checkNotNull(contextDto, "contextDto");
+    }
+
+    @Override
+    public List<String> getBundles() {
+        return contextDto.getBundles();
+    }
+
+}

http://git-wip-us.apache.org/repos/asf/incubator-brooklyn/blob/b6d23649/core/src/main/java/brooklyn/catalog/internal/CatalogContextDto.java
----------------------------------------------------------------------
diff --git a/core/src/main/java/brooklyn/catalog/internal/CatalogContextDto.java b/core/src/main/java/brooklyn/catalog/internal/CatalogContextDto.java
new file mode 100644
index 0000000..ef4fefa
--- /dev/null
+++ b/core/src/main/java/brooklyn/catalog/internal/CatalogContextDto.java
@@ -0,0 +1,20 @@
+package brooklyn.catalog.internal;
+
+import java.util.List;
+import java.util.concurrent.CopyOnWriteArrayList;
+
+import brooklyn.catalog.CatalogItem;
+
+public class CatalogContextDto implements CatalogItem.CatalogItemContext {
+
+    List<String> bundles = new CopyOnWriteArrayList<String>();
+
+    public void addBundle(String url) {
+        bundles.add(url);
+    }
+
+    public List<String> getBundles() {
+        return bundles;
+    }
+
+}

http://git-wip-us.apache.org/repos/asf/incubator-brooklyn/blob/b6d23649/core/src/main/java/brooklyn/catalog/internal/CatalogItemDo.java
----------------------------------------------------------------------
diff --git a/core/src/main/java/brooklyn/catalog/internal/CatalogItemDo.java b/core/src/main/java/brooklyn/catalog/internal/CatalogItemDo.java
index 9b89722..d576c0a 100644
--- a/core/src/main/java/brooklyn/catalog/internal/CatalogItemDo.java
+++ b/core/src/main/java/brooklyn/catalog/internal/CatalogItemDo.java
@@ -55,7 +55,12 @@ public class CatalogItemDo<T> implements CatalogItem<T> {
     public String getIconUrl() {
         return itemDto.getIconUrl();
     }
-    
+
+    @Override
+    public CatalogItemContext getContext() {
+        return itemDto.getContext();
+    }
+
     public Class<T> getJavaClass() {
         if (javaClass==null) loadJavaClass();
         return javaClass;

http://git-wip-us.apache.org/repos/asf/incubator-brooklyn/blob/b6d23649/core/src/main/java/brooklyn/catalog/internal/CatalogItemDtoAbstract.java
----------------------------------------------------------------------
diff --git a/core/src/main/java/brooklyn/catalog/internal/CatalogItemDtoAbstract.java b/core/src/main/java/brooklyn/catalog/internal/CatalogItemDtoAbstract.java
index af74931..ad0fa71 100644
--- a/core/src/main/java/brooklyn/catalog/internal/CatalogItemDtoAbstract.java
+++ b/core/src/main/java/brooklyn/catalog/internal/CatalogItemDtoAbstract.java
@@ -1,5 +1,7 @@
 package brooklyn.catalog.internal;
 
+import javax.annotation.Nullable;
+
 import brooklyn.catalog.CatalogItem;
 
 public abstract class CatalogItemDtoAbstract<T> implements CatalogItem<T> {
@@ -9,6 +11,7 @@ public abstract class CatalogItemDtoAbstract<T> implements CatalogItem<T> {
     String name;
     String description;
     String iconUrl;
+    CatalogItemContext context;
     
     public String getId() {
         if (id!=null) return id;
@@ -30,34 +33,50 @@ public abstract class CatalogItemDtoAbstract<T> implements CatalogItem<T> {
     public String getIconUrl() {
         return iconUrl;
     }
-    
+
+    @Override
+    public CatalogItemContext getContext() {
+        return context;
+    }
+
     public static CatalogTemplateItemDto newTemplate(String type, String name) {
         return newTemplate(null, type, name, null);
     }
     public static CatalogTemplateItemDto newTemplate(String id, String type, String name, String description){
-        return set(new CatalogTemplateItemDto(), id, type, name, description);
+        return newTemplate(id, type, name, description, null);
+    }
+    public static CatalogTemplateItemDto newTemplate(String id, String type, String name, String description, CatalogContextDto context){
+        return set(new CatalogTemplateItemDto(), id, type, name, description, context);
     }
 
     public static CatalogEntityItemDto newEntity(String type, String name) {
         return newEntity(null, type, name, null);
     }
     public static CatalogEntityItemDto newEntity(String id, String type, String name, String description){
-        return set(new CatalogEntityItemDto(), id, type, name, description);
+        return newEntity(id, type, name, description, null);
+    }
+    public static CatalogEntityItemDto newEntity(String id, String type, String name, String description, CatalogContextDto context){
+        return set(new CatalogEntityItemDto(), id, type, name, description, context);
     }
 
     public static CatalogPolicyItemDto newPolicy(String type, String name) {
         return newPolicy(null, type, name, null);
     }
     public static CatalogPolicyItemDto newPolicy(String id, String type, String name, String description){
-        return set(new CatalogPolicyItemDto(), id, type, name, description);
+        return newPolicy(id, type, name, description, null);
+    }
+    public static CatalogPolicyItemDto newPolicy(String id, String type, String name, String description, CatalogContextDto context){
+        return set(new CatalogPolicyItemDto(), id, type, name, description, context);
     }
 
     @SuppressWarnings({ "rawtypes", "unchecked" })
-    private static <T extends CatalogItemDtoAbstract> T set(T target, String id, String type, String name, String description) {
+    private static <T extends CatalogItemDtoAbstract> T set(T target, String id, String type, String name,
+            String description, CatalogContextDto context) {
         target.id = id;
         target.type = type;
         target.name = name;
         target.description = description;
+        target.context = context;
         return target;
     }
 

http://git-wip-us.apache.org/repos/asf/incubator-brooklyn/blob/b6d23649/core/src/main/java/brooklyn/catalog/internal/CatalogXmlSerializer.java
----------------------------------------------------------------------
diff --git a/core/src/main/java/brooklyn/catalog/internal/CatalogXmlSerializer.java b/core/src/main/java/brooklyn/catalog/internal/CatalogXmlSerializer.java
index bf0ea96..9cdbffe 100644
--- a/core/src/main/java/brooklyn/catalog/internal/CatalogXmlSerializer.java
+++ b/core/src/main/java/brooklyn/catalog/internal/CatalogXmlSerializer.java
@@ -8,7 +8,7 @@ import brooklyn.util.xstream.EnumCaseForgivingSingleValueConverter;
 import brooklyn.util.xstream.XmlSerializer;
 
 public class CatalogXmlSerializer extends XmlSerializer<Object> {
-    
+
     public CatalogXmlSerializer() {
         xstream.aliasType("list", List.class);
         xstream.aliasType("map", Map.class);
@@ -21,17 +21,20 @@ public class CatalogXmlSerializer extends XmlSerializer<Object> {
         xstream.addImplicitCollection(CatalogDto.class, "entries", CatalogTemplateItemDto.class);
         xstream.addImplicitCollection(CatalogDto.class, "entries", CatalogEntityItemDto.class);
         xstream.addImplicitCollection(CatalogDto.class, "entries", CatalogPolicyItemDto.class);
-        
+
         xstream.aliasType("template", CatalogTemplateItemDto.class);
         xstream.aliasType("entity", CatalogEntityItemDto.class);
         xstream.aliasType("policy", CatalogPolicyItemDto.class);
-        
+
         xstream.useAttributeFor(CatalogItemDtoAbstract.class, "type");
         xstream.useAttributeFor(CatalogItemDtoAbstract.class, "name");
-        
+
         xstream.useAttributeFor(CatalogClasspathDto.class, "scan");
         xstream.addImplicitCollection(CatalogClasspathDto.class, "entries", "entry", String.class);
         xstream.registerConverter(new EnumCaseForgivingSingleValueConverter(CatalogScanningModes.class));
+
+        xstream.aliasType("context", CatalogContextDto.class);
+        xstream.addImplicitCollection(CatalogContextDto.class, "bundles", "bundle", String.class);
     }
-    
+
 }

http://git-wip-us.apache.org/repos/asf/incubator-brooklyn/blob/b6d23649/core/src/test/java/brooklyn/catalog/internal/CatalogDtoTest.java
----------------------------------------------------------------------
diff --git a/core/src/test/java/brooklyn/catalog/internal/CatalogDtoTest.java b/core/src/test/java/brooklyn/catalog/internal/CatalogDtoTest.java
index db94f46..c8e14ee 100644
--- a/core/src/test/java/brooklyn/catalog/internal/CatalogDtoTest.java
+++ b/core/src/test/java/brooklyn/catalog/internal/CatalogDtoTest.java
@@ -47,7 +47,7 @@ public class CatalogDtoTest {
     }
 
     protected void checkHadoopsExample(CatalogDto root) {
-        Assert.assertEquals(root.catalogs.size(), 4);
+        Assert.assertEquals(root.catalogs.size(), 5);
         CatalogDo loader = new CatalogDo(root).load(managementContext, null);
         
         CatalogItemDo<?> worker = loader.getCache().get("io.brooklyn.mapr.m3.WorkerNode");
@@ -83,6 +83,15 @@ public class CatalogDtoTest {
                 "RECOMMENDED: CDH Hadoop Application with Cloudera Manager"));
         root.addCatalog(cdhCatalog.dto);
 
+        CatalogDo osgiCatalog = new CatalogDo(CatalogDto.newNamedInstance("OSGi",
+                "A catalog whose entries define their context as a list of OSGi bundles"));
+        osgiCatalog.setClasspathScanForEntities(CatalogScanningModes.NONE);
+        CatalogContextDto m3Context = new CatalogContextDto();
+        m3Context.addBundle("file://~/.m2/repository/io/cloudsoft/brooklyn-mapr/1.0.0-SNAPSHOT/brooklyn-mapr.jar");
+        osgiCatalog.addEntry(CatalogItemDtoAbstract.newTemplate("M3App", "io.brooklyn.mapr.M3App", "M3 Application",
+                "Description", m3Context));
+        root.addCatalog(osgiCatalog.dto);
+
         root.addCatalog(CatalogDto.newLinkedInstance("http://cloudsoftcorp.com/amp-brooklyn-catalog.xml"));
         root.addCatalog(CatalogDto.newLinkedInstance("http://microsoot.com/oofice-catalog.xml"));
         return root.dto;