Repository: incubator-brooklyn Updated Branches: refs/heads/master d08289911 -> 9a1c59a07
Change extension map to a reference Allows persisting of locations with dynamically added extensions Project: http://git-wip-us.apache.org/repos/asf/incubator-brooklyn/repo Commit: http://git-wip-us.apache.org/repos/asf/incubator-brooklyn/commit/c307b7e9 Tree: http://git-wip-us.apache.org/repos/asf/incubator-brooklyn/tree/c307b7e9 Diff: http://git-wip-us.apache.org/repos/asf/incubator-brooklyn/diff/c307b7e9 Branch: refs/heads/master Commit: c307b7e9d63df5d9b0c022419eb0099cca4d2368 Parents: d082899 Author: Andrew Kennedy <[email protected]> Authored: Mon Feb 16 23:35:32 2015 +0000 Committer: Andrew Kennedy <[email protected]> Committed: Wed Apr 1 21:21:05 2015 +0100 ---------------------------------------------------------------------- .../java/brooklyn/location/basic/AbstractLocation.java | 11 ++++++----- 1 file changed, 6 insertions(+), 5 deletions(-) ---------------------------------------------------------------------- http://git-wip-us.apache.org/repos/asf/incubator-brooklyn/blob/c307b7e9/core/src/main/java/brooklyn/location/basic/AbstractLocation.java ---------------------------------------------------------------------- diff --git a/core/src/main/java/brooklyn/location/basic/AbstractLocation.java b/core/src/main/java/brooklyn/location/basic/AbstractLocation.java index a576a60..8696378 100644 --- a/core/src/main/java/brooklyn/location/basic/AbstractLocation.java +++ b/core/src/main/java/brooklyn/location/basic/AbstractLocation.java @@ -110,8 +110,8 @@ public abstract class AbstractLocation extends AbstractBrooklynObject implements private boolean inConstruction; - private final Map<Class<?>, Object> extensions = Maps.newConcurrentMap(); - + private Reference<Map<Class<?>, Object>> extensions = new BasicReference<Map<Class<?>, Object>>(Maps.<Class<?>, Object>newConcurrentMap()); + private final LocationDynamicType locationType; /** @@ -665,13 +665,13 @@ public abstract class AbstractLocation extends AbstractBrooklynObject implements @Override public boolean hasExtension(Class<?> extensionType) { - return extensions.containsKey(checkNotNull(extensionType, "extensionType")); + return extensions.get().containsKey(checkNotNull(extensionType, "extensionType")); } @Override @SuppressWarnings("unchecked") public <T> T getExtension(Class<T> extensionType) { - Object extension = extensions.get(checkNotNull(extensionType, "extensionType")); + Object extension = extensions.get().get(checkNotNull(extensionType, "extensionType")); if (extension == null) { throw new IllegalArgumentException("No extension of type "+extensionType+" registered for location "+this); } @@ -683,8 +683,9 @@ public abstract class AbstractLocation extends AbstractBrooklynObject implements checkNotNull(extensionType, "extensionType"); checkNotNull(extension, "extension"); checkArgument(extensionType.isInstance(extension), "extension %s does not implement %s", extension, extensionType); - extensions.put(extensionType, extension); + extensions.get().put(extensionType, extension); } + @Override public Map<String, String> toMetadataRecord() { ImmutableMap.Builder<String, String> builder = ImmutableMap.builder();
