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:51:14 UTC
[32/45] git commit: support more catalog type info and yaml via REST
API, and make getPlanYaml available (nullable) on CatalogItem API;
starting to fix CatalogResourceTest of POSTing a YAML
support more catalog type info and yaml via REST API, and make getPlanYaml available (nullable) on CatalogItem API;
starting to fix CatalogResourceTest of POSTing a YAML
Project: http://git-wip-us.apache.org/repos/asf/incubator-brooklyn/repo
Commit: http://git-wip-us.apache.org/repos/asf/incubator-brooklyn/commit/d4d17b72
Tree: http://git-wip-us.apache.org/repos/asf/incubator-brooklyn/tree/d4d17b72
Diff: http://git-wip-us.apache.org/repos/asf/incubator-brooklyn/diff/d4d17b72
Branch: refs/heads/master
Commit: d4d17b720f6a27086615131720e0f4080d6abbec
Parents: f99fb58
Author: Alex Heneveld <al...@cloudsoftcorp.com>
Authored: Thu Jul 3 14:39:45 2014 +0100
Committer: Alex Heneveld <al...@cloudsoftcorp.com>
Committed: Thu Jul 3 14:39:45 2014 +0100
----------------------------------------------------------------------
.../main/java/brooklyn/catalog/CatalogItem.java | 5 ++--
.../catalog/internal/BasicBrooklynCatalog.java | 2 +-
.../catalog/internal/CatalogEntityItemDto.java | 6 -----
.../catalog/internal/CatalogItemDo.java | 13 ++++-----
.../internal/CatalogItemDtoAbstract.java | 7 +++++
.../rest/domain/CatalogEntitySummary.java | 5 +++-
.../rest/domain/CatalogItemSummary.java | 28 ++++++++++++++++++--
.../rest/domain/CatalogPolicySummary.java | 2 +-
.../rest/transform/CatalogTransformer.java | 14 +++++++---
.../rest/resources/CatalogResourceTest.java | 25 ++++++++++-------
10 files changed, 72 insertions(+), 35 deletions(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/incubator-brooklyn/blob/d4d17b72/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 276eba4..7cfbdd6 100644
--- a/api/src/main/java/brooklyn/catalog/CatalogItem.java
+++ b/api/src/main/java/brooklyn/catalog/CatalogItem.java
@@ -36,12 +36,13 @@ public interface CatalogItem<T,SpecT> {
public String getIconUrl();
public String getVersion();
- // FIXME many of the static methods in CatalogItemAbstractDto which create CatalogItems set this as null
- // I (alex) suggest removing the annotation, here, and in subclasses where the method is defined
@Nonnull
public CatalogItemLibraries getLibraries();
public String toXmlString();
+
+ /** return underlying YAML for this item, if known */
+ @Nullable public String getPlanYaml();
}
http://git-wip-us.apache.org/repos/asf/incubator-brooklyn/blob/d4d17b72/core/src/main/java/brooklyn/catalog/internal/BasicBrooklynCatalog.java
----------------------------------------------------------------------
diff --git a/core/src/main/java/brooklyn/catalog/internal/BasicBrooklynCatalog.java b/core/src/main/java/brooklyn/catalog/internal/BasicBrooklynCatalog.java
index 6a4f3d2..f924869 100644
--- a/core/src/main/java/brooklyn/catalog/internal/BasicBrooklynCatalog.java
+++ b/core/src/main/java/brooklyn/catalog/internal/BasicBrooklynCatalog.java
@@ -110,7 +110,7 @@ public class BasicBrooklynCatalog implements BrooklynCatalog {
Class<SpecT> specType = loadedItem.getSpecType();
if (specType==null) return null;
- String yaml = loadedItem.getYaml();
+ String yaml = loadedItem.getPlanYaml();
SpecT spec = null;
if (yaml!=null) {
http://git-wip-us.apache.org/repos/asf/incubator-brooklyn/blob/d4d17b72/core/src/main/java/brooklyn/catalog/internal/CatalogEntityItemDto.java
----------------------------------------------------------------------
diff --git a/core/src/main/java/brooklyn/catalog/internal/CatalogEntityItemDto.java b/core/src/main/java/brooklyn/catalog/internal/CatalogEntityItemDto.java
index 60d6fbe..e130052 100644
--- a/core/src/main/java/brooklyn/catalog/internal/CatalogEntityItemDto.java
+++ b/core/src/main/java/brooklyn/catalog/internal/CatalogEntityItemDto.java
@@ -6,8 +6,6 @@ import brooklyn.entity.proxying.EntitySpec;
public class CatalogEntityItemDto extends CatalogItemDtoAbstract<Entity,EntitySpec<?>> {
- String planYaml;
-
@Override
public CatalogItemType getCatalogItemType() {
return CatalogItemType.ENTITY;
@@ -24,8 +22,4 @@ public class CatalogEntityItemDto extends CatalogItemDtoAbstract<Entity,EntitySp
return (Class)EntitySpec.class;
}
- public String getPlanYaml() {
- return planYaml;
- }
-
}
http://git-wip-us.apache.org/repos/asf/incubator-brooklyn/blob/d4d17b72/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 200db52..d1d8d82 100644
--- a/core/src/main/java/brooklyn/catalog/internal/CatalogItemDo.java
+++ b/core/src/main/java/brooklyn/catalog/internal/CatalogItemDo.java
@@ -75,14 +75,6 @@ public class CatalogItemDo<T,SpecT> implements CatalogItem<T,SpecT> {
return itemDto.getLibraries();
}
- @Nullable
- public String getYaml() {
- if (itemDto instanceof CatalogEntityItemDto) {
- return ((CatalogEntityItemDto)itemDto).getPlanYaml();
- }
- return null;
- }
-
/** @deprecated since 0.7.0 this is the legacy mechanism; still needed for policies and apps, but being phased out.
* new items should use {@link #getYaml()} */
@Deprecated
@@ -117,5 +109,10 @@ public class CatalogItemDo<T,SpecT> implements CatalogItem<T,SpecT> {
public Class<SpecT> getSpecType() {
return itemDto.getSpecType();
}
+
+ @Nullable @Override
+ public String getPlanYaml() {
+ return itemDto.getPlanYaml();
+ }
}
http://git-wip-us.apache.org/repos/asf/incubator-brooklyn/blob/d4d17b72/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 4957474..b9b633d 100644
--- a/core/src/main/java/brooklyn/catalog/internal/CatalogItemDtoAbstract.java
+++ b/core/src/main/java/brooklyn/catalog/internal/CatalogItemDtoAbstract.java
@@ -19,6 +19,8 @@ public abstract class CatalogItemDtoAbstract<T,SpecT> implements CatalogItem<T,S
String version;
CatalogLibrariesDto libraries;
+ String planYaml;
+
/** @deprecated since 0.7.0.
* used for backwards compatibility when deserializing.
* when catalogs are converted to new yaml format, this can be removed. */
@@ -68,6 +70,11 @@ public abstract class CatalogItemDtoAbstract<T,SpecT> implements CatalogItem<T,S
return libraries;
}
+ @Override
+ public String getPlanYaml() {
+ return planYaml;
+ }
+
public static CatalogTemplateItemDto newTemplateFromJava(String javaType, String name) {
return newTemplateFromJava(null, javaType, name, null);
}
http://git-wip-us.apache.org/repos/asf/incubator-brooklyn/blob/d4d17b72/usage/rest-api/src/main/java/brooklyn/rest/domain/CatalogEntitySummary.java
----------------------------------------------------------------------
diff --git a/usage/rest-api/src/main/java/brooklyn/rest/domain/CatalogEntitySummary.java b/usage/rest-api/src/main/java/brooklyn/rest/domain/CatalogEntitySummary.java
index ce8b73b..679064b 100644
--- a/usage/rest-api/src/main/java/brooklyn/rest/domain/CatalogEntitySummary.java
+++ b/usage/rest-api/src/main/java/brooklyn/rest/domain/CatalogEntitySummary.java
@@ -15,7 +15,10 @@ public class CatalogEntitySummary extends CatalogItemSummary {
public CatalogEntitySummary(
@JsonProperty("id") String id,
@JsonProperty("name") String name,
+ @JsonProperty("registeredType") String registeredType,
+ @JsonProperty("javaType") String javaType,
@JsonProperty("type") String type,
+ @JsonProperty("planYaml") String planYaml,
@JsonProperty("description") String description,
@JsonProperty("iconUrl") String iconUrl,
@JsonProperty("config") Set<EntityConfigSummary> config,
@@ -23,7 +26,7 @@ public class CatalogEntitySummary extends CatalogItemSummary {
@JsonProperty("effectors") Set<EffectorSummary> effectors,
@JsonProperty("links") Map<String, URI> links
) {
- super(id, name, type, description, iconUrl, links);
+ super(id, name, registeredType, javaType, type, planYaml, description, iconUrl, links);
this.config = config;
this.sensors = sensors;
this.effectors = effectors;
http://git-wip-us.apache.org/repos/asf/incubator-brooklyn/blob/d4d17b72/usage/rest-api/src/main/java/brooklyn/rest/domain/CatalogItemSummary.java
----------------------------------------------------------------------
diff --git a/usage/rest-api/src/main/java/brooklyn/rest/domain/CatalogItemSummary.java b/usage/rest-api/src/main/java/brooklyn/rest/domain/CatalogItemSummary.java
index 34d87ac..fb66d7f 100644
--- a/usage/rest-api/src/main/java/brooklyn/rest/domain/CatalogItemSummary.java
+++ b/usage/rest-api/src/main/java/brooklyn/rest/domain/CatalogItemSummary.java
@@ -16,26 +16,38 @@ import com.google.common.collect.ImmutableMap;
public class CatalogItemSummary {
private final String id;
+
+ // TODO too many types, see in CatalogItem
private final String type;
+ private final String javaType;
+ private final String registeredType;
+
private final String name;
@JsonSerialize(include=Inclusion.NON_EMPTY)
private final String description;
@JsonSerialize(include=Inclusion.NON_EMPTY)
private final String iconUrl;
+ private final String planYaml;
private final Map<String, URI> links;
public CatalogItemSummary(
@JsonProperty("id") String id,
@JsonProperty("name") String name,
- @JsonProperty("type") String type,
+ @JsonProperty("registeredType") String registeredType,
+ @JsonProperty("javaType") String javaType,
+ @JsonProperty("type") String highLevelType,
+ @JsonProperty("planYaml") String planYaml,
@JsonProperty("description") String description,
@JsonProperty("iconUrl") String iconUrl,
@JsonProperty("links") Map<String, URI> links
) {
this.id = id;
this.name = name;
- this.type = type;
+ this.javaType = javaType;
+ this.registeredType = registeredType;
+ this.type = highLevelType;
+ this.planYaml = planYaml;
this.description = description;
this.iconUrl = iconUrl;
this.links = ImmutableMap.copyOf(links);
@@ -49,6 +61,18 @@ public class CatalogItemSummary {
return type;
}
+ public String getJavaType() {
+ return javaType;
+ }
+
+ public String getRegisteredType() {
+ return registeredType;
+ }
+
+ public String getPlanYaml() {
+ return planYaml;
+ }
+
public String getName() {
return name;
}
http://git-wip-us.apache.org/repos/asf/incubator-brooklyn/blob/d4d17b72/usage/rest-api/src/main/java/brooklyn/rest/domain/CatalogPolicySummary.java
----------------------------------------------------------------------
diff --git a/usage/rest-api/src/main/java/brooklyn/rest/domain/CatalogPolicySummary.java b/usage/rest-api/src/main/java/brooklyn/rest/domain/CatalogPolicySummary.java
index 8f74dce..43ee8f5 100644
--- a/usage/rest-api/src/main/java/brooklyn/rest/domain/CatalogPolicySummary.java
+++ b/usage/rest-api/src/main/java/brooklyn/rest/domain/CatalogPolicySummary.java
@@ -19,7 +19,7 @@ public class CatalogPolicySummary extends CatalogItemSummary {
@JsonProperty("config") Set<PolicyConfigSummary> config,
@JsonProperty("links") Map<String, URI> links
) {
- super(id, name, type, description, iconUrl, links);
+ super(id, name, type, type, type, null, description, iconUrl, links);
// TODO expose config from policies
this.config = config;
}
http://git-wip-us.apache.org/repos/asf/incubator-brooklyn/blob/d4d17b72/usage/rest-server/src/main/java/brooklyn/rest/transform/CatalogTransformer.java
----------------------------------------------------------------------
diff --git a/usage/rest-server/src/main/java/brooklyn/rest/transform/CatalogTransformer.java b/usage/rest-server/src/main/java/brooklyn/rest/transform/CatalogTransformer.java
index 8b05bd9..4d24974 100644
--- a/usage/rest-server/src/main/java/brooklyn/rest/transform/CatalogTransformer.java
+++ b/usage/rest-server/src/main/java/brooklyn/rest/transform/CatalogTransformer.java
@@ -36,8 +36,8 @@ public class CatalogTransformer {
private static final org.slf4j.Logger log = LoggerFactory.getLogger(CatalogTransformer.class);
public static CatalogEntitySummary catalogEntitySummary(BrooklynRestResourceUtils b, CatalogItem<? extends Entity,EntitySpec<?>> item) {
- Class<? extends Entity> clazz = b.getCatalog().loadClass(item);
- EntityDynamicType typeMap = EntityTypes.getDefinedEntityType(clazz);
+ EntitySpec<?> spec = b.getCatalog().createSpec(item);
+ EntityDynamicType typeMap = EntityTypes.getDefinedEntityType(spec.getType());
EntityType type = typeMap.getSnapshot();
Set<EntityConfigSummary> config = Sets.newLinkedHashSet();
@@ -48,14 +48,20 @@ public class CatalogTransformer {
for (Sensor<?> x: type.getSensors()) sensors.add(SensorTransformer.sensorSummaryForCatalog(x));
for (Effector<?> x: type.getEffectors()) effectors.add(EffectorTransformer.effectorSummaryForCatalog(x));
- return new CatalogEntitySummary(item.getId(), item.getName(), item.getJavaType(),
+ return new CatalogEntitySummary(item.getId(), item.getName(),
+ item.getRegisteredTypeName(), item.getJavaType(),
+ item.getRegisteredTypeName()!=null ? item.getRegisteredTypeName() : item.getJavaType(),
+ item.getPlanYaml(),
item.getDescription(), tidyIconLink(b, item, item.getIconUrl()),
config, sensors, effectors,
makeLinks(item));
}
public static CatalogItemSummary catalogItemSummary(BrooklynRestResourceUtils b, CatalogItem<?,?> item) {
- return new CatalogItemSummary(item.getId(), item.getName(), item.getJavaType(),
+ return new CatalogItemSummary(item.getId(), item.getName(),
+ item.getRegisteredTypeName(), item.getJavaType(),
+ item.getRegisteredTypeName()!=null ? item.getRegisteredTypeName() : item.getJavaType(),
+ item.getPlanYaml(),
item.getDescription(), tidyIconLink(b, item, item.getIconUrl()), makeLinks(item));
}
http://git-wip-us.apache.org/repos/asf/incubator-brooklyn/blob/d4d17b72/usage/rest-server/src/test/java/brooklyn/rest/resources/CatalogResourceTest.java
----------------------------------------------------------------------
diff --git a/usage/rest-server/src/test/java/brooklyn/rest/resources/CatalogResourceTest.java b/usage/rest-server/src/test/java/brooklyn/rest/resources/CatalogResourceTest.java
index 2a25dfd..810e6e3 100644
--- a/usage/rest-server/src/test/java/brooklyn/rest/resources/CatalogResourceTest.java
+++ b/usage/rest-server/src/test/java/brooklyn/rest/resources/CatalogResourceTest.java
@@ -44,17 +44,20 @@ public class CatalogResourceTest extends BrooklynRestResourceTest {
addResource(new CatalogResource());
}
- @Test(enabled=false, groups="WIP") // FIXME broken until BasicBrooklynCatalog can parse the yaml
+ @Test(enabled=false, groups="WIP")
public void testRegisterCustomEntity() {
+ String registeredTypeName = "my.catalog.app.id";
String yaml =
+ "name: "+registeredTypeName+"\n"+
+ // TODO name above should be unnecessary when brooklyn.catalog below is working
"brooklyn.catalog:\n"+
- "- id: my.catalog.app.id\n"+
+ "- id: " + registeredTypeName + "\n"+
"- name: My Catalog App\n"+
"- description: My description\n"+
"- icon_url: classpath://path/to/myicon.jpg\n"+
"- version: 0.1.2\n"+
- "- bundles:\n"+
- "- url: http://myurl/my.jar\n"+
+ "- brooklyn.libraries:\n"+
+ " - url: http://myurl/my.jar\n"+
"\n"+
"services:\n"+
"- type: brooklyn.test.entity.TestEntity\n";
@@ -64,13 +67,15 @@ public class CatalogResourceTest extends BrooklynRestResourceTest {
assertEquals(response.getStatus(), Response.Status.CREATED.getStatusCode());
- CatalogEntitySummary entityItem = client().resource("/v1/catalog/entities/my.catalog.app.id")
+ CatalogEntitySummary entityItem = client().resource("/v1/catalog/entities/"+registeredTypeName)
.get(CatalogEntitySummary.class);
- assertEquals(entityItem.getId(), "my.catalog.app.id");
- assertEquals(entityItem.getName(), "My Catalog App");
- assertEquals(entityItem.getDescription(), "My description");
- assertEquals(entityItem.getIconUrl(), "classpath://path/to/myicon.jpg");
- assertEquals(entityItem.getType(), "brooklyn.test.entity.TestEntity");
+ // TODO more checks, when brooklyn.catalog working
+// assertEquals(entityItem.getId(), registeredTypeName);
+// assertEquals(entityItem.getName(), "My Catalog App");
+// assertEquals(entityItem.getDescription(), "My description");
+// assertEquals(entityItem.getIconUrl(), "classpath://path/to/myicon.jpg");
+ assertEquals(entityItem.getRegisteredType(), registeredTypeName);
+ assertEquals(entityItem.getJavaType(), "brooklyn.test.entity.TestEntity");
}
@Test