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/11/04 15:29:57 UTC

[03/18] git commit: Use explicit property for context catalog id bookkeeping

Use explicit property for context catalog id bookkeeping

Move from using tags to set the context catalog id to explicit properties.


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

Branch: refs/heads/master
Commit: d716e2fa37ffd4444b304ffcacdcf87be29666a2
Parents: 405842d
Author: Svetoslav Neykov <sv...@cloudsoftcorp.com>
Authored: Wed Oct 29 18:27:17 2014 +0200
Committer: Svetoslav Neykov <sv...@cloudsoftcorp.com>
Committed: Wed Oct 29 18:56:21 2014 +0200

----------------------------------------------------------------------
 .../basic/AbstractBrooklynObjectSpec.java       | 10 ++++++++
 .../java/brooklyn/basic/BrooklynObject.java     |  5 ++++
 .../main/java/brooklyn/mementos/Memento.java    |  2 ++
 .../brooklyn/basic/AbstractBrooklynObject.java  | 11 +++++++++
 .../catalog/internal/BasicBrooklynCatalog.java  |  2 +-
 .../catalog/internal/CatalogItemDo.java         |  5 ++++
 .../brooklyn/entity/basic/BrooklynTags.java     |  2 --
 .../entity/proxying/InternalEntityFactory.java  |  4 +++
 .../AbstractBrooklynObjectRebindSupport.java    |  1 +
 .../entity/rebind/RebindManagerImpl.java        | 26 ++++----------------
 .../entity/rebind/dto/AbstractMemento.java      | 13 ++++++++++
 .../entity/rebind/dto/MementosGenerators.java   |  1 +
 .../AbstractBrooklynMementoPersister.java       | 19 +-------------
 .../BrooklynMementoPersisterToMultiFile.java    |  4 +--
 .../BrooklynMementoPersisterToObjectStore.java  |  4 +--
 .../BrooklynAssemblyTemplateInstantiator.java   |  2 +-
 16 files changed, 62 insertions(+), 49 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/incubator-brooklyn/blob/d716e2fa/api/src/main/java/brooklyn/basic/AbstractBrooklynObjectSpec.java
----------------------------------------------------------------------
diff --git a/api/src/main/java/brooklyn/basic/AbstractBrooklynObjectSpec.java b/api/src/main/java/brooklyn/basic/AbstractBrooklynObjectSpec.java
index 0efb0a6..2ef4d67 100644
--- a/api/src/main/java/brooklyn/basic/AbstractBrooklynObjectSpec.java
+++ b/api/src/main/java/brooklyn/basic/AbstractBrooklynObjectSpec.java
@@ -35,6 +35,7 @@ public abstract class AbstractBrooklynObjectSpec<T,K extends AbstractBrooklynObj
     
     private final Class<? extends T> type;
     private String displayName;
+    private String contextCatalogItemId;
     private Set<Object> tags = MutableSet.of();
 
     protected AbstractBrooklynObjectSpec(Class<? extends T> type) {
@@ -59,6 +60,11 @@ public abstract class AbstractBrooklynObjectSpec<T,K extends AbstractBrooklynObj
         return self();
     }
     
+    public K contextCatalogItemId(String val) {
+        contextCatalogItemId = val;
+        return self();
+    }
+    
     public K tag(Object tag) {
         tags.add(tag);
         return self();
@@ -83,6 +89,10 @@ public abstract class AbstractBrooklynObjectSpec<T,K extends AbstractBrooklynObj
     public final String getDisplayName() {
         return displayName;
     }
+    
+    public final String getContextCatalogItemId() {
+        return contextCatalogItemId;
+    }
 
     public final Set<Object> getTags() {
         return ImmutableSet.copyOf(tags);

http://git-wip-us.apache.org/repos/asf/incubator-brooklyn/blob/d716e2fa/api/src/main/java/brooklyn/basic/BrooklynObject.java
----------------------------------------------------------------------
diff --git a/api/src/main/java/brooklyn/basic/BrooklynObject.java b/api/src/main/java/brooklyn/basic/BrooklynObject.java
index 600bcad..a31fbf8 100644
--- a/api/src/main/java/brooklyn/basic/BrooklynObject.java
+++ b/api/src/main/java/brooklyn/basic/BrooklynObject.java
@@ -35,6 +35,11 @@ public interface BrooklynObject extends Identifiable {
      * A display name; recommended to be a concise single-line description.
      */
     String getDisplayName();
+
+    /**
+     * The catalog item ID this object was loaded from.
+     */
+    String getContextCatalogItemId();
     
     /** 
      * Tags are arbitrary objects which can be attached to an entity for subsequent reference.

http://git-wip-us.apache.org/repos/asf/incubator-brooklyn/blob/d716e2fa/api/src/main/java/brooklyn/mementos/Memento.java
----------------------------------------------------------------------
diff --git a/api/src/main/java/brooklyn/mementos/Memento.java b/api/src/main/java/brooklyn/mementos/Memento.java
index be8b629..6ab36b0 100644
--- a/api/src/main/java/brooklyn/mementos/Memento.java
+++ b/api/src/main/java/brooklyn/mementos/Memento.java
@@ -42,6 +42,8 @@ public interface Memento extends Serializable {
     
     public String getType();
     
+    public String getContextCatalogItemId();
+    
     public String getDisplayName();
     
     /**

http://git-wip-us.apache.org/repos/asf/incubator-brooklyn/blob/d716e2fa/core/src/main/java/brooklyn/basic/AbstractBrooklynObject.java
----------------------------------------------------------------------
diff --git a/core/src/main/java/brooklyn/basic/AbstractBrooklynObject.java b/core/src/main/java/brooklyn/basic/AbstractBrooklynObject.java
index a32afaf..8c2608d 100644
--- a/core/src/main/java/brooklyn/basic/AbstractBrooklynObject.java
+++ b/core/src/main/java/brooklyn/basic/AbstractBrooklynObject.java
@@ -48,6 +48,8 @@ public abstract class AbstractBrooklynObject implements BrooklynObjectInternal {
     @SetFromFlag(value = "id")
     private String id = Identifiers.makeRandomId(8);
 
+    private String contextCatalogItemId;
+
     /** subclasses should synchronize on this for all access */
     @SetFromFlag(value = "tags")
     private final Set<Object> tags = Sets.newLinkedHashSet();
@@ -167,6 +169,15 @@ public abstract class AbstractBrooklynObject implements BrooklynObjectInternal {
         return id;
     }
 
+    public void setContextCatalogItemId(String id) {
+        this.contextCatalogItemId = id;
+    }
+
+    @Override
+    public String getContextCatalogItemId() {
+        return contextCatalogItemId;
+    }
+
     protected void onTagsChanged() {
         requestPersist();
     }

http://git-wip-us.apache.org/repos/asf/incubator-brooklyn/blob/d716e2fa/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 18a77f7..a0a8375 100644
--- a/core/src/main/java/brooklyn/catalog/internal/BasicBrooklynCatalog.java
+++ b/core/src/main/java/brooklyn/catalog/internal/BasicBrooklynCatalog.java
@@ -257,7 +257,7 @@ public class BasicBrooklynCatalog implements BrooklynCatalog {
                     break;
                 default: throw new RuntimeException("Only entity & policy catalog items are supported. Unsupported catalog item type " + item.getCatalogItemType());
             }
-            ((AbstractBrooklynObjectSpec<?, ?>)spec).tag(BrooklynTags.newContextCatalogItemIdTag(item.getId()));
+            ((AbstractBrooklynObjectSpec<?, ?>)spec).contextCatalogItemId(item.getId());
             return spec;
         }
 

http://git-wip-us.apache.org/repos/asf/incubator-brooklyn/blob/d716e2fa/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 136a466..178ef90 100644
--- a/core/src/main/java/brooklyn/catalog/internal/CatalogItemDo.java
+++ b/core/src/main/java/brooklyn/catalog/internal/CatalogItemDo.java
@@ -59,6 +59,11 @@ public class CatalogItemDo<T,SpecT> implements CatalogItem<T,SpecT> {
     }
 
     @Override
+    public String getContextCatalogItemId() {
+        return null;
+    }
+
+    @Override
     public String getRegisteredTypeName() {
         return itemDto.getRegisteredTypeName();
     }

http://git-wip-us.apache.org/repos/asf/incubator-brooklyn/blob/d716e2fa/core/src/main/java/brooklyn/entity/basic/BrooklynTags.java
----------------------------------------------------------------------
diff --git a/core/src/main/java/brooklyn/entity/basic/BrooklynTags.java b/core/src/main/java/brooklyn/entity/basic/BrooklynTags.java
index 67b4b42..01ac52e 100644
--- a/core/src/main/java/brooklyn/entity/basic/BrooklynTags.java
+++ b/core/src/main/java/brooklyn/entity/basic/BrooklynTags.java
@@ -29,7 +29,6 @@ import com.google.common.annotations.Beta;
 public class BrooklynTags {
 
     public static final String YAML_SPEC_KIND = "yaml_spec";
-    public static final String CONTEXT_CATALOG_ITEM_ID_KIND = "context_catalog_item_id";
     public static final String NOTES_KIND = "notes";
     
     public static class NamedStringTag implements Serializable {
@@ -54,7 +53,6 @@ public class BrooklynTags {
     }
     
     public static NamedStringTag newYamlSpecTag(String contents) { return new NamedStringTag(YAML_SPEC_KIND, contents); }
-    public static NamedStringTag newContextCatalogItemIdTag(String contents) { return new NamedStringTag(CONTEXT_CATALOG_ITEM_ID_KIND, contents); }
     public static NamedStringTag newNotesTag(String contents) { return new NamedStringTag(NOTES_KIND, contents); }
     
     public static NamedStringTag findFirst(String kind, Iterable<Object> tags) {

http://git-wip-us.apache.org/repos/asf/incubator-brooklyn/blob/d716e2fa/core/src/main/java/brooklyn/entity/proxying/InternalEntityFactory.java
----------------------------------------------------------------------
diff --git a/core/src/main/java/brooklyn/entity/proxying/InternalEntityFactory.java b/core/src/main/java/brooklyn/entity/proxying/InternalEntityFactory.java
index b292827..f4e18cf 100644
--- a/core/src/main/java/brooklyn/entity/proxying/InternalEntityFactory.java
+++ b/core/src/main/java/brooklyn/entity/proxying/InternalEntityFactory.java
@@ -241,6 +241,10 @@ public class InternalEntityFactory extends InternalFactory {
             if (spec.getDisplayName()!=null)
                 ((AbstractEntity)entity).setDisplayName(spec.getDisplayName());
             
+            if (spec.getContextCatalogItemId()!=null) {
+                ((AbstractEntity)entity).setContextCatalogItemId(spec.getContextCatalogItemId());
+            }
+            
             entity.tags().addTags(spec.getTags());
             ((AbstractEntity)entity).configure(MutableMap.copyOf(spec.getFlags()));
             

http://git-wip-us.apache.org/repos/asf/incubator-brooklyn/blob/d716e2fa/core/src/main/java/brooklyn/entity/rebind/AbstractBrooklynObjectRebindSupport.java
----------------------------------------------------------------------
diff --git a/core/src/main/java/brooklyn/entity/rebind/AbstractBrooklynObjectRebindSupport.java b/core/src/main/java/brooklyn/entity/rebind/AbstractBrooklynObjectRebindSupport.java
index 9dc9645..3eb6c96 100644
--- a/core/src/main/java/brooklyn/entity/rebind/AbstractBrooklynObjectRebindSupport.java
+++ b/core/src/main/java/brooklyn/entity/rebind/AbstractBrooklynObjectRebindSupport.java
@@ -48,6 +48,7 @@ public abstract class AbstractBrooklynObjectRebindSupport<T extends Memento> imp
         if (LOG.isTraceEnabled()) LOG.trace("Reconstructing: {}", memento.toVerboseString());
 
         instance.setDisplayName(memento.getDisplayName());
+        instance.setContextCatalogItemId(memento.getContextCatalogItemId());
         addConfig(rebindContext, memento);
         addTags(rebindContext, memento);
         addCustoms(rebindContext, memento);

http://git-wip-us.apache.org/repos/asf/incubator-brooklyn/blob/d716e2fa/core/src/main/java/brooklyn/entity/rebind/RebindManagerImpl.java
----------------------------------------------------------------------
diff --git a/core/src/main/java/brooklyn/entity/rebind/RebindManagerImpl.java b/core/src/main/java/brooklyn/entity/rebind/RebindManagerImpl.java
index 2691a5b..9f620d6 100644
--- a/core/src/main/java/brooklyn/entity/rebind/RebindManagerImpl.java
+++ b/core/src/main/java/brooklyn/entity/rebind/RebindManagerImpl.java
@@ -47,8 +47,6 @@ import brooklyn.entity.Entity;
 import brooklyn.entity.Feed;
 import brooklyn.entity.basic.AbstractApplication;
 import brooklyn.entity.basic.AbstractEntity;
-import brooklyn.entity.basic.BrooklynTags;
-import brooklyn.entity.basic.BrooklynTags.NamedStringTag;
 import brooklyn.entity.basic.ConfigKeys;
 import brooklyn.entity.basic.EntityInternal;
 import brooklyn.entity.proxying.InternalEntityFactory;
@@ -656,7 +654,7 @@ public class RebindManagerImpl implements RebindManager {
                     if (LOG.isDebugEnabled()) LOG.debug("RebindManager instantiating policy {}", policyMemento);
                     
                     try {
-                        Policy policy = newPolicy(policyMemento, getPolicyLoadingContext(policyMemento.getId(), memento, classLoader, rebindContext));
+                        Policy policy = newPolicy(policyMemento, getLoadingContextFromCatalogItemId(policyMemento.getContextCatalogItemId(), classLoader, rebindContext));
                         rebindContext.registerPolicy(policyMemento.getId(), policy);
                     } catch (Exception e) {
                         exceptionHandler.onCreateFailed(BrooklynObjectType.POLICY, policyMemento.getId(), policyMemento.getType(), e);
@@ -924,24 +922,10 @@ public class RebindManagerImpl implements RebindManager {
             if (ptr.getContextCatalogItemId() != null) {
                 return ptr.getContextCatalogItemId();
             }
-            ptr = entityIdToManifest.get(ptr.getParent());
-        }
-        return null;
-    }
-
-    private BrooklynClassLoadingContext getPolicyLoadingContext(String policyId, BrooklynMemento memento, ClassLoader classLoader, RebindContextImpl rebindContext) {
-        PolicyMemento policyMemento = memento.getPolicyMemento(policyId);
-        String contextCatalogItemId = getContextCatalogItemIdFromTags(policyMemento.getTags());
-        return getLoadingContextFromCatalogItemId(contextCatalogItemId, classLoader, rebindContext);
-    }
-
-    private String getContextCatalogItemIdFromTags(Collection<Object> tags) {
-        for (Object obj : tags) {
-            if (obj instanceof NamedStringTag) {
-                NamedStringTag tag = (NamedStringTag) obj;
-                if (BrooklynTags.CONTEXT_CATALOG_ITEM_ID_KIND.equals(tag.getKind())) {
-                    return tag.getContents();
-                }
+            if (ptr.getParent() != null) {
+                ptr = entityIdToManifest.get(ptr.getParent());
+            } else {
+                ptr = null;
             }
         }
         return null;

http://git-wip-us.apache.org/repos/asf/incubator-brooklyn/blob/d716e2fa/core/src/main/java/brooklyn/entity/rebind/dto/AbstractMemento.java
----------------------------------------------------------------------
diff --git a/core/src/main/java/brooklyn/entity/rebind/dto/AbstractMemento.java b/core/src/main/java/brooklyn/entity/rebind/dto/AbstractMemento.java
index 67e35da..c07b991 100644
--- a/core/src/main/java/brooklyn/entity/rebind/dto/AbstractMemento.java
+++ b/core/src/main/java/brooklyn/entity/rebind/dto/AbstractMemento.java
@@ -43,6 +43,7 @@ public abstract class AbstractMemento implements Memento, Serializable {
         protected String type;
         protected Class<?> typeClass;
         protected String displayName;
+        protected String contextCatalogItemId;
         protected Map<String, Object> fields = Maps.newLinkedHashMap();
         protected List<Object> tags = Lists.newArrayList();
 
@@ -56,6 +57,7 @@ public abstract class AbstractMemento implements Memento, Serializable {
             type = other.getType();
             typeClass = other.getTypeClass();
             displayName = other.getDisplayName();
+            contextCatalogItemId = other.getContextCatalogItemId();
             fields.putAll(other.getCustomFields());
             tags.addAll(other.getTags());
             return self();
@@ -75,6 +77,9 @@ public abstract class AbstractMemento implements Memento, Serializable {
         public B displayName(String val) {
             displayName = val; return self();
         }
+        public B contextCatalogItemId(String val) {
+            contextCatalogItemId = val; return self();
+        }
         /**
          * @deprecated since 0.7.0; use config/attributes so generic persistence will work, rather than requiring "custom fields"
          */
@@ -88,6 +93,7 @@ public abstract class AbstractMemento implements Memento, Serializable {
     private String type;
     private String id;
     private String displayName;
+    private String contextCatalogItemId;
     private List<Object> tags;
 
     private transient Class<?> typeClass;
@@ -103,6 +109,7 @@ public abstract class AbstractMemento implements Memento, Serializable {
         type = builder.type;
         typeClass = builder.typeClass;
         displayName = builder.displayName;
+        contextCatalogItemId = builder.contextCatalogItemId;
         setCustomFields(builder.fields);
         tags = toPersistedList(builder.tags);
     }
@@ -141,6 +148,12 @@ public abstract class AbstractMemento implements Memento, Serializable {
         return displayName;
     }
 
+    @Override
+    public String getContextCatalogItemId() {
+        return contextCatalogItemId;
+    }
+
+    @Override
     public List<Object> getTags() {
         return fromPersistedList(tags);
     }

http://git-wip-us.apache.org/repos/asf/incubator-brooklyn/blob/d716e2fa/core/src/main/java/brooklyn/entity/rebind/dto/MementosGenerators.java
----------------------------------------------------------------------
diff --git a/core/src/main/java/brooklyn/entity/rebind/dto/MementosGenerators.java b/core/src/main/java/brooklyn/entity/rebind/dto/MementosGenerators.java
index d5e6724..8888f5c 100644
--- a/core/src/main/java/brooklyn/entity/rebind/dto/MementosGenerators.java
+++ b/core/src/main/java/brooklyn/entity/rebind/dto/MementosGenerators.java
@@ -378,6 +378,7 @@ public class MementosGenerators {
     private static void populateBrooklynObjectMementoBuilder(BrooklynObject instance, AbstractMemento.Builder<?> builder) {
         builder.id = instance.getId();
         builder.displayName = instance.getDisplayName();
+        builder.contextCatalogItemId = instance.getContextCatalogItemId();
         builder.type = instance.getClass().getName();
         builder.typeClass = instance.getClass();
         

http://git-wip-us.apache.org/repos/asf/incubator-brooklyn/blob/d716e2fa/core/src/main/java/brooklyn/entity/rebind/persister/AbstractBrooklynMementoPersister.java
----------------------------------------------------------------------
diff --git a/core/src/main/java/brooklyn/entity/rebind/persister/AbstractBrooklynMementoPersister.java b/core/src/main/java/brooklyn/entity/rebind/persister/AbstractBrooklynMementoPersister.java
index 9758213..d185ab5 100644
--- a/core/src/main/java/brooklyn/entity/rebind/persister/AbstractBrooklynMementoPersister.java
+++ b/core/src/main/java/brooklyn/entity/rebind/persister/AbstractBrooklynMementoPersister.java
@@ -19,11 +19,6 @@
 package brooklyn.entity.rebind.persister;
 
 import static com.google.common.base.Preconditions.checkNotNull;
-
-import java.util.Collection;
-
-import brooklyn.entity.basic.BrooklynTags;
-import brooklyn.entity.basic.BrooklynTags.NamedStringTag;
 import brooklyn.entity.rebind.PersistenceExceptionHandler;
 import brooklyn.entity.rebind.RebindExceptionHandler;
 import brooklyn.entity.rebind.dto.BrooklynMementoManifestImpl;
@@ -56,7 +51,7 @@ public abstract class AbstractBrooklynMementoPersister implements BrooklynMement
     public BrooklynMementoManifest loadMementoManifest(RebindExceptionHandler exceptionHandler) {
         BrooklynMementoManifestImpl.Builder builder = BrooklynMementoManifestImpl.builder();
         for (EntityMemento entity : memento.getEntityMementos().values()) {
-            builder.entity(entity.getId(), entity.getType(), entity.getParent(), getContextCatalogItemId(entity.getTags()));
+            builder.entity(entity.getId(), entity.getType(), entity.getParent(), entity.getContextCatalogItemId());
         }
         for (LocationMemento entity : memento.getLocationMementos().values()) {
             builder.location(entity.getId(), entity.getType());
@@ -73,18 +68,6 @@ public abstract class AbstractBrooklynMementoPersister implements BrooklynMement
         return builder.build();
     }
 
-    private String getContextCatalogItemId(Collection<Object> tags) {
-        for (Object obj : tags) {
-            if (obj instanceof NamedStringTag) {
-                NamedStringTag tag = (NamedStringTag) obj;
-                if (BrooklynTags.CONTEXT_CATALOG_ITEM_ID_KIND.equals(tag.getKind())) {
-                    return tag.getContents();
-                }
-            }
-        }
-        return null;
-    }
-
     @Override public void enableWriteAccess() {}
     @Override public void disableWriteAccess(boolean graceful) {}
     @Override public void stop(boolean graceful) {}

http://git-wip-us.apache.org/repos/asf/incubator-brooklyn/blob/d716e2fa/core/src/main/java/brooklyn/entity/rebind/persister/BrooklynMementoPersisterToMultiFile.java
----------------------------------------------------------------------
diff --git a/core/src/main/java/brooklyn/entity/rebind/persister/BrooklynMementoPersisterToMultiFile.java b/core/src/main/java/brooklyn/entity/rebind/persister/BrooklynMementoPersisterToMultiFile.java
index cdd87b8..7e13d62 100644
--- a/core/src/main/java/brooklyn/entity/rebind/persister/BrooklynMementoPersisterToMultiFile.java
+++ b/core/src/main/java/brooklyn/entity/rebind/persister/BrooklynMementoPersisterToMultiFile.java
@@ -32,8 +32,6 @@ import java.util.concurrent.TimeoutException;
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
 
-import brooklyn.entity.basic.BrooklynTags;
-import brooklyn.entity.basic.BrooklynTags.NamedStringTag;
 import brooklyn.entity.rebind.BrooklynObjectType;
 import brooklyn.entity.rebind.PersistenceExceptionHandler;
 import brooklyn.entity.rebind.RebindExceptionHandler;
@@ -196,7 +194,7 @@ public class BrooklynMementoPersisterToMultiFile implements BrooklynMementoPersi
                     String id = (String) XmlUtil.xpath(contents, "/entity/id");
                     String type = (String) XmlUtil.xpath(contents, "/entity/type");
                     String parentId = (String) XmlUtil.xpath(contents, "/entity/parent");
-                    String contextCatalogItemId = (String) XmlUtil.xpath(contents, "/entity/tags/" + NamedStringTag.class.getName().replace("$", "_-") + "[kind='" + BrooklynTags.CONTEXT_CATALOG_ITEM_ID_KIND + "']/contents");
+                    String contextCatalogItemId = (String) XmlUtil.xpath(contents, "/entity/contextCatalogItemId");
                     builder.entity(id, type, Strings.emptyToNull(parentId), Strings.emptyToNull(contextCatalogItemId));
                 } catch (Exception e) {
                     exceptionHandler.onLoadMementoFailed(BrooklynObjectType.ENTITY, "File "+file, e);

http://git-wip-us.apache.org/repos/asf/incubator-brooklyn/blob/d716e2fa/core/src/main/java/brooklyn/entity/rebind/persister/BrooklynMementoPersisterToObjectStore.java
----------------------------------------------------------------------
diff --git a/core/src/main/java/brooklyn/entity/rebind/persister/BrooklynMementoPersisterToObjectStore.java b/core/src/main/java/brooklyn/entity/rebind/persister/BrooklynMementoPersisterToObjectStore.java
index 09f58b7..cf03958 100644
--- a/core/src/main/java/brooklyn/entity/rebind/persister/BrooklynMementoPersisterToObjectStore.java
+++ b/core/src/main/java/brooklyn/entity/rebind/persister/BrooklynMementoPersisterToObjectStore.java
@@ -37,9 +37,7 @@ import org.slf4j.LoggerFactory;
 
 import brooklyn.config.BrooklynProperties;
 import brooklyn.config.ConfigKey;
-import brooklyn.entity.basic.BrooklynTags;
 import brooklyn.entity.basic.ConfigKeys;
-import brooklyn.entity.basic.BrooklynTags.NamedStringTag;
 import brooklyn.entity.rebind.BrooklynObjectType;
 import brooklyn.entity.rebind.PeriodicDeltaChangeListener;
 import brooklyn.entity.rebind.PersistenceExceptionHandler;
@@ -255,7 +253,7 @@ public class BrooklynMementoPersisterToObjectStore implements BrooklynMementoPer
                         String id = (String) XmlUtil.xpath(contents, "/entity/id");
                         String objType = (String) XmlUtil.xpath(contents, "/entity/type");
                         String parentId = (String) XmlUtil.xpath(contents, "/entity/parent");
-                        String contextCatalogItemId = (String) XmlUtil.xpath(contents, "/entity/tags/" + NamedStringTag.class.getName().replace("$", "_-") + "[kind='" + BrooklynTags.CONTEXT_CATALOG_ITEM_ID_KIND + "']/contents");
+                        String contextCatalogItemId = (String) XmlUtil.xpath(contents, "/entity/contextCatalogItemId");
                         builder.entity(id, objType, Strings.emptyToNull(parentId), Strings.emptyToNull(contextCatalogItemId));
                         break;
                     case LOCATION:

http://git-wip-us.apache.org/repos/asf/incubator-brooklyn/blob/d716e2fa/usage/camp/src/main/java/io/brooklyn/camp/brooklyn/spi/creation/BrooklynAssemblyTemplateInstantiator.java
----------------------------------------------------------------------
diff --git a/usage/camp/src/main/java/io/brooklyn/camp/brooklyn/spi/creation/BrooklynAssemblyTemplateInstantiator.java b/usage/camp/src/main/java/io/brooklyn/camp/brooklyn/spi/creation/BrooklynAssemblyTemplateInstantiator.java
index 1d05811..346b19c 100644
--- a/usage/camp/src/main/java/io/brooklyn/camp/brooklyn/spi/creation/BrooklynAssemblyTemplateInstantiator.java
+++ b/usage/camp/src/main/java/io/brooklyn/camp/brooklyn/spi/creation/BrooklynAssemblyTemplateInstantiator.java
@@ -203,7 +203,7 @@ public class BrooklynAssemblyTemplateInstantiator implements AssemblyTemplateSpe
             } else {
                 //TODO migrate to catalog.createSpec
                 spec = resolveCatalogYamlReferenceSpec(mgmt, item, encounteredCatalogTypes);
-                spec.tag(BrooklynTags.newContextCatalogItemIdTag(item.getId()));
+                spec.contextCatalogItemId(item.getId());
                 entityResolver.populateSpec(spec);
             }
         }