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;