You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@brooklyn.apache.org by al...@apache.org on 2015/02/18 12:32:10 UTC

[5/9] incubator-brooklyn git commit: Use {location, policy, enricher}.config(), instead of newly deprecated methods

Use {location,policy,enricher}.config(), instead of newly deprecated methods


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

Branch: refs/heads/master
Commit: 73c498525ff2008ca078e430b75dc9fe50e3b732
Parents: 972ab83
Author: Aled Sage <al...@gmail.com>
Authored: Tue Nov 11 16:51:16 2014 +0000
Committer: Aled Sage <al...@gmail.com>
Committed: Wed Feb 18 11:02:35 2015 +0000

----------------------------------------------------------------------
 .../java/brooklyn/entity/basic/Entities.java    |  2 +-
 .../group/AbstractMembershipTrackingPolicy.java |  2 +-
 .../entity/proxying/InternalPolicyFactory.java  |  4 +--
 .../rebind/BasicLocationRebindSupport.java      |  7 +++--
 .../entity/rebind/dto/MementosGenerators.java   |  2 +-
 .../FixedListMachineProvisioningLocation.java   |  3 +-
 .../LocalhostMachineProvisioningLocation.java   |  2 +-
 .../brooklyn/location/basic/MultiLocation.java  |  2 +-
 .../location/basic/SimulatedLocation.java       |  2 +-
 .../location/basic/SshMachineLocation.java      |  7 +++--
 ...bstractCloudMachineProvisioningLocation.java |  2 +-
 .../internal/LocalLocationManager.java          |  3 +-
 .../java/brooklyn/util/task/ssh/SshTasks.java   |  2 +-
 .../enricher/basic/BasicEnricherTest.java       |  4 +--
 .../enricher/basic/EnricherConfigTest.java      |  8 ++---
 ...DynamicClusterWithAvailabilityZonesTest.java |  4 +--
 .../entity/rebind/RebindLocationTest.java       |  2 +-
 .../entity/rebind/RebindPolicyTest.java         |  2 +-
 .../basic/ByonLocationResolverTest.java         | 22 +++++++-------
 .../basic/HostLocationResolverTest.java         |  2 +-
 .../basic/LocalhostLocationResolverTest.java    | 16 +++++-----
 .../location/basic/LocationConfigTest.java      | 32 ++++++++++----------
 .../SingleMachineLocationResolverTest.java      |  2 +-
 .../brooklyn/policy/basic/BasicPolicyTest.java  |  4 +--
 .../brooklyn/policy/basic/PolicyConfigTest.java |  8 ++---
 ...lusterDatabaseExampleAppIntegrationTest.java |  4 +--
 .../jclouds/JcloudsByonLocationResolver.java    |  2 +-
 .../location/jclouds/JcloudsLocation.java       | 31 +++++++++----------
 .../jclouds/JcloudsSshMachineLocation.java      |  4 +--
 .../JcloudsByonLocationResolverAwsLiveTest.java |  4 +--
 .../jclouds/JcloudsLocationResolverTest.java    | 20 ++++++------
 .../location/jclouds/LiveTestEntity.java        |  3 +-
 .../jclouds/RebindJcloudsLocationLiveTest.java  |  4 +--
 .../jclouds/RebindJcloudsLocationTest.java      |  2 +-
 .../policy/autoscaling/AutoScalerPolicy.java    | 14 ++++-----
 .../AutoScalerPolicyReconfigurationTest.java    | 16 +++++-----
 .../software/MachineLifecycleEffectorTasks.java |  2 +-
 .../entity/software/SshEffectorTasks.java       |  2 +-
 .../entity/dns/AbstractGeoDnsServiceTest.java   |  2 +-
 .../camp/brooklyn/LocationsYamlTest.java        |  6 ++--
 .../main/java/brooklyn/cli/CloudExplorer.java   |  2 +-
 .../webcluster/SinusoidalLoadGenerator.java     |  8 ++---
 .../rest/resources/PolicyConfigResource.java    |  7 +++--
 .../rest/transform/LocationTransformer.java     | 22 +++++++++-----
 .../rest/resources/ApplicationResourceTest.java |  6 ++--
 .../rest/util/EntityLocationUtilsTest.java      |  3 +-
 46 files changed, 161 insertions(+), 149 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/incubator-brooklyn/blob/73c49852/core/src/main/java/brooklyn/entity/basic/Entities.java
----------------------------------------------------------------------
diff --git a/core/src/main/java/brooklyn/entity/basic/Entities.java b/core/src/main/java/brooklyn/entity/basic/Entities.java
index 68b7912..cdf1a01 100644
--- a/core/src/main/java/brooklyn/entity/basic/Entities.java
+++ b/core/src/main/java/brooklyn/entity/basic/Entities.java
@@ -401,7 +401,7 @@ public class Entities {
     public static void dumpInfo(Location loc, Writer out, String currentIndentation, String tab) throws IOException {
         out.append(currentIndentation+loc.toString()+"\n");
 
-        for (Object entryO : ((LocationInternal)loc).getAllConfigBag().getAllConfig().entrySet()) {
+        for (Object entryO : ((LocationInternal)loc).config().getBag().getAllConfig().entrySet()) {
             Map.Entry entry = (Map.Entry)entryO;
             Object keyO = entry.getKey();
             String key =

http://git-wip-us.apache.org/repos/asf/incubator-brooklyn/blob/73c49852/core/src/main/java/brooklyn/entity/group/AbstractMembershipTrackingPolicy.java
----------------------------------------------------------------------
diff --git a/core/src/main/java/brooklyn/entity/group/AbstractMembershipTrackingPolicy.java b/core/src/main/java/brooklyn/entity/group/AbstractMembershipTrackingPolicy.java
index 22a2917..459f515 100644
--- a/core/src/main/java/brooklyn/entity/group/AbstractMembershipTrackingPolicy.java
+++ b/core/src/main/java/brooklyn/entity/group/AbstractMembershipTrackingPolicy.java
@@ -112,7 +112,7 @@ public abstract class AbstractMembershipTrackingPolicy extends AbstractPolicy {
     public void setGroup(Group group) {
         // relies on doReconfigureConfig to make the actual change
         LOG.warn("Deprecated use of setGroup in "+AbstractMembershipTrackingPolicy.class.getSimpleName()+"; group should be set as config");
-        setConfig(GROUP, group);
+        config().set(GROUP, group);
     }
     
     @Override

http://git-wip-us.apache.org/repos/asf/incubator-brooklyn/blob/73c49852/core/src/main/java/brooklyn/entity/proxying/InternalPolicyFactory.java
----------------------------------------------------------------------
diff --git a/core/src/main/java/brooklyn/entity/proxying/InternalPolicyFactory.java b/core/src/main/java/brooklyn/entity/proxying/InternalPolicyFactory.java
index 618a691..3ef42f7 100644
--- a/core/src/main/java/brooklyn/entity/proxying/InternalPolicyFactory.java
+++ b/core/src/main/java/brooklyn/entity/proxying/InternalPolicyFactory.java
@@ -123,7 +123,7 @@ public class InternalPolicyFactory extends InternalFactory {
             // which the user may have overridden? 
             // Also see InternalLocationFactory for same issue, which this code is based on.
             for (Map.Entry<ConfigKey<?>, Object> entry : spec.getConfig().entrySet()) {
-                ((AbstractPolicy)pol).setConfig((ConfigKey)entry.getKey(), entry.getValue());
+                pol.config().set((ConfigKey)entry.getKey(), entry.getValue());
             }
             ((AbstractPolicy)pol).init();
             
@@ -164,7 +164,7 @@ public class InternalPolicyFactory extends InternalFactory {
             // which the user may have overridden? 
             // Also see InternalLocationFactory for same issue, which this code is based on.
             for (Map.Entry<ConfigKey<?>, Object> entry : spec.getConfig().entrySet()) {
-                ((AbstractEnricher)enricher).setConfig((ConfigKey)entry.getKey(), entry.getValue());
+                enricher.config().set((ConfigKey)entry.getKey(), entry.getValue());
             }
             ((AbstractEnricher)enricher).init();
             

http://git-wip-us.apache.org/repos/asf/incubator-brooklyn/blob/73c49852/core/src/main/java/brooklyn/entity/rebind/BasicLocationRebindSupport.java
----------------------------------------------------------------------
diff --git a/core/src/main/java/brooklyn/entity/rebind/BasicLocationRebindSupport.java b/core/src/main/java/brooklyn/entity/rebind/BasicLocationRebindSupport.java
index fc7947b..23ed373 100644
--- a/core/src/main/java/brooklyn/entity/rebind/BasicLocationRebindSupport.java
+++ b/core/src/main/java/brooklyn/entity/rebind/BasicLocationRebindSupport.java
@@ -31,6 +31,7 @@ import brooklyn.entity.rebind.dto.MementosGenerators;
 import brooklyn.location.Location;
 import brooklyn.location.basic.AbstractLocation;
 import brooklyn.mementos.LocationMemento;
+import brooklyn.util.collections.MutableMap;
 import brooklyn.util.flags.FlagUtils;
 import brooklyn.util.flags.TypeCoercions;
 
@@ -68,9 +69,9 @@ public class BasicLocationRebindSupport extends AbstractBrooklynObjectRebindSupp
         // FIXME Treat config like we do for entities; this code will disappear when locations become entities.
         
         // Note that the flags have been set in the constructor
-        // FIXME Relies on location.getLocalConfigBag being mutable (to modify the location's own config)
+        // FIXME Relies on location.config().getLocalBag() being mutable (to modify the location's own config)
         
-        location.getLocalConfigBag().putAll(memento.getLocationConfig()).markAll(
+        location.config().getLocalBag().putAll(memento.getLocationConfig()).markAll(
                 Sets.difference(memento.getLocationConfig().keySet(), memento.getLocationConfigUnused())).
                 setDescription(memento.getLocationConfigDescription());
 
@@ -93,7 +94,7 @@ public class BasicLocationRebindSupport extends AbstractBrooklynObjectRebindSupp
                     value = TypeCoercions.coerce(entry.getValue(), fieldType);
                 }
                 if (value != null) {
-                    location.getLocalConfigBag().putStringKey(flagName, value);
+                    location.config().addToLocalBag(MutableMap.of(flagName, value));
                     FlagUtils.setFieldFromFlag(location, flagName, value);
                 }
             } catch (NoSuchElementException e) {

http://git-wip-us.apache.org/repos/asf/incubator-brooklyn/blob/73c49852/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 ca1c434..ed2ad0f 100644
--- a/core/src/main/java/brooklyn/entity/rebind/dto/MementosGenerators.java
+++ b/core/src/main/java/brooklyn/entity/rebind/dto/MementosGenerators.java
@@ -252,7 +252,7 @@ public class MementosGenerators {
                 .putAll(FlagUtils.getFieldsWithFlagsExcludingModifiers(location, Modifier.STATIC ^ Modifier.TRANSIENT))
                 .removeAll(nonPersistableFlagNames)
                 .build();
-        ConfigBag persistableConfig = new ConfigBag().copy( ((AbstractLocation)location).getLocalConfigBag() ).removeAll(nonPersistableFlagNames);
+        ConfigBag persistableConfig = new ConfigBag().copy( ((LocationInternal)location).config().getLocalBag() ).removeAll(nonPersistableFlagNames);
 
         builder.copyConfig(persistableConfig);
         builder.locationConfig.putAll(persistableFlags);

http://git-wip-us.apache.org/repos/asf/incubator-brooklyn/blob/73c49852/core/src/main/java/brooklyn/location/basic/FixedListMachineProvisioningLocation.java
----------------------------------------------------------------------
diff --git a/core/src/main/java/brooklyn/location/basic/FixedListMachineProvisioningLocation.java b/core/src/main/java/brooklyn/location/basic/FixedListMachineProvisioningLocation.java
index 97f1117..411d12a 100644
--- a/core/src/main/java/brooklyn/location/basic/FixedListMachineProvisioningLocation.java
+++ b/core/src/main/java/brooklyn/location/basic/FixedListMachineProvisioningLocation.java
@@ -128,11 +128,12 @@ implements MachineProvisioningLocation<T>, Closeable {
         return super.configure(properties);
     }
     
+    @SuppressWarnings("unchecked")
     public FixedListMachineProvisioningLocation<T> newSubLocation(Map<?,?> newFlags) {
         // TODO shouldn't have to copy config bag as it should be inherited (but currently it is not used inherited everywhere; just most places)
         return getManagementContext().getLocationManager().createLocation(LocationSpec.create(getClass())
                 .parent(this)
-                .configure(getLocalConfigBag().getAllConfig())  // FIXME Should this just be inherited?
+                .configure(config().getLocalBag().getAllConfig())  // FIXME Should this just be inherited?
                 .configure(newFlags));
     }
 

http://git-wip-us.apache.org/repos/asf/incubator-brooklyn/blob/73c49852/core/src/main/java/brooklyn/location/basic/LocalhostMachineProvisioningLocation.java
----------------------------------------------------------------------
diff --git a/core/src/main/java/brooklyn/location/basic/LocalhostMachineProvisioningLocation.java b/core/src/main/java/brooklyn/location/basic/LocalhostMachineProvisioningLocation.java
index 051b37e..093f85c 100644
--- a/core/src/main/java/brooklyn/location/basic/LocalhostMachineProvisioningLocation.java
+++ b/core/src/main/java/brooklyn/location/basic/LocalhostMachineProvisioningLocation.java
@@ -179,7 +179,7 @@ public class LocalhostMachineProvisioningLocation extends FixedListMachineProvis
             // TODO should take the plunge and try removing this altogether!
             // (or alternatively switch to copying all ancestor keys)
             for (HasConfigKey<?> k: SshMachineLocation.ALL_SSH_CONFIG_KEYS) {
-                if (hasConfig(k.getConfigKey(), true))
+                if (config().getRaw(k).isPresent())
                     flags2.put(k, getConfig(k));
             }
             

http://git-wip-us.apache.org/repos/asf/incubator-brooklyn/blob/73c49852/core/src/main/java/brooklyn/location/basic/MultiLocation.java
----------------------------------------------------------------------
diff --git a/core/src/main/java/brooklyn/location/basic/MultiLocation.java b/core/src/main/java/brooklyn/location/basic/MultiLocation.java
index 575d292..fed111f 100644
--- a/core/src/main/java/brooklyn/location/basic/MultiLocation.java
+++ b/core/src/main/java/brooklyn/location/basic/MultiLocation.java
@@ -120,7 +120,7 @@ public class MultiLocation<T extends MachineLocation> extends AbstractLocation i
         // TODO shouldn't have to copy config bag as it should be inherited (but currently it is not used inherited everywhere; just most places)
         return getManagementContext().getLocationManager().createLocation(LocationSpec.create(getClass())
                 .parent(this)
-                .configure(getLocalConfigBag().getAllConfig())  // FIXME Should this just be inherited?
+                .configure(config().getLocalBag().getAllConfig())  // FIXME Should this just be inherited?
                 .configure(newFlags));
     }
 

http://git-wip-us.apache.org/repos/asf/incubator-brooklyn/blob/73c49852/core/src/main/java/brooklyn/location/basic/SimulatedLocation.java
----------------------------------------------------------------------
diff --git a/core/src/main/java/brooklyn/location/basic/SimulatedLocation.java b/core/src/main/java/brooklyn/location/basic/SimulatedLocation.java
index 2802351..05d39ce 100644
--- a/core/src/main/java/brooklyn/location/basic/SimulatedLocation.java
+++ b/core/src/main/java/brooklyn/location/basic/SimulatedLocation.java
@@ -68,7 +68,7 @@ public class SimulatedLocation extends AbstractLocation implements MachineProvis
         // TODO shouldn't have to copy config bag as it should be inherited (but currently it is not used inherited everywhere; just most places)
         return getManagementContext().getLocationManager().createLocation(LocationSpec.create(getClass())
                 .parent(this)
-                .configure(getLocalConfigBag().getAllConfig())  // FIXME Should this just be inherited?
+                .configure(config().getLocalBag().getAllConfig())  // FIXME Should this just be inherited?
                 .configure(newFlags));
     }
 

http://git-wip-us.apache.org/repos/asf/incubator-brooklyn/blob/73c49852/core/src/main/java/brooklyn/location/basic/SshMachineLocation.java
----------------------------------------------------------------------
diff --git a/core/src/main/java/brooklyn/location/basic/SshMachineLocation.java b/core/src/main/java/brooklyn/location/basic/SshMachineLocation.java
index 172b58c..51b96c6 100644
--- a/core/src/main/java/brooklyn/location/basic/SshMachineLocation.java
+++ b/core/src/main/java/brooklyn/location/basic/SshMachineLocation.java
@@ -76,6 +76,7 @@ import brooklyn.util.file.ArchiveUtils;
 import brooklyn.util.flags.SetFromFlag;
 import brooklyn.util.flags.TypeCoercions;
 import brooklyn.util.guava.KeyTransformingLoadingCache.KeyTransformingSameTypeLoadingCache;
+import brooklyn.util.guava.Maybe;
 import brooklyn.util.internal.ssh.ShellTool;
 import brooklyn.util.internal.ssh.SshException;
 import brooklyn.util.internal.ssh.SshTool;
@@ -321,7 +322,7 @@ public class SshMachineLocation extends AbstractLocation implements MachineLocat
     private BasicPool<SshTool> buildPool(final Map<String, ?> properties) {
         return BasicPool.<SshTool>builder()
                 .name(getDisplayName()+"@"+address+":"+getPort()+
-                        (hasConfig(SSH_HOST, true) ? "("+getConfig(SSH_HOST)+":"+getConfig(SSH_PORT)+")" : "")+
+                        (config().getRaw(SSH_HOST).isPresent() ? "("+getConfig(SSH_HOST)+":"+getConfig(SSH_PORT)+")" : "")+
                         ":hash"+System.identityHashCode(this))
                 .supplier(new Supplier<SshTool>() {
                         @Override public SshTool get() {
@@ -473,7 +474,7 @@ public class SshMachineLocation extends AbstractLocation implements MachineLocat
 
     public String getUser() {
         if (!truth(user)) {
-            if (hasConfig(SshTool.PROP_USER, false)) {
+            if (config().getLocalRaw(SshTool.PROP_USER).isPresent()) {
                 LOG.warn("User configuration for "+this+" set after deployment; deprecated behaviour may not be supported in future versions");
             }
             return getConfig(SshTool.PROP_USER);
@@ -531,7 +532,7 @@ public class SshMachineLocation extends AbstractLocation implements MachineLocat
                 .configure(SshTool.PROP_HOST, address.getHostName())
                 .putAll(props);
 
-            for (Map.Entry<String,Object> entry: getAllConfigBag().getAllConfig().entrySet()) {
+            for (Map.Entry<String,Object> entry: config().getBag().getAllConfig().entrySet()) {
                 String key = entry.getKey();
                 if (key.startsWith(SshTool.BROOKLYN_CONFIG_KEY_PREFIX)) {
                     key = Strings.removeFromStart(key, SshTool.BROOKLYN_CONFIG_KEY_PREFIX);

http://git-wip-us.apache.org/repos/asf/incubator-brooklyn/blob/73c49852/core/src/main/java/brooklyn/location/cloud/AbstractCloudMachineProvisioningLocation.java
----------------------------------------------------------------------
diff --git a/core/src/main/java/brooklyn/location/cloud/AbstractCloudMachineProvisioningLocation.java b/core/src/main/java/brooklyn/location/cloud/AbstractCloudMachineProvisioningLocation.java
index b743342..9486bd1 100644
--- a/core/src/main/java/brooklyn/location/cloud/AbstractCloudMachineProvisioningLocation.java
+++ b/core/src/main/java/brooklyn/location/cloud/AbstractCloudMachineProvisioningLocation.java
@@ -54,7 +54,7 @@ implements MachineProvisioningLocation<SshMachineLocation>, CloudLocationConfig
         // TODO was previously `return LocationCreationUtils.newSubLocation(newFlags, this)`; need to retest on CloudStack etc
         return getManagementContext().getLocationManager().createLocation(LocationSpec.create(type)
                 .parent(this)
-                .configure(getLocalConfigBag().getAllConfig()) // FIXME Should this just be inherited?
+                .configure(config().getLocalBag().getAllConfig()) // FIXME Should this just be inherited?
                 .configure(newFlags));
     }
     

http://git-wip-us.apache.org/repos/asf/incubator-brooklyn/blob/73c49852/core/src/main/java/brooklyn/management/internal/LocalLocationManager.java
----------------------------------------------------------------------
diff --git a/core/src/main/java/brooklyn/management/internal/LocalLocationManager.java b/core/src/main/java/brooklyn/management/internal/LocalLocationManager.java
index cc44bf8..1fc5096 100644
--- a/core/src/main/java/brooklyn/management/internal/LocalLocationManager.java
+++ b/core/src/main/java/brooklyn/management/internal/LocalLocationManager.java
@@ -412,7 +412,8 @@ public class LocalLocationManager implements LocationManagerInternal {
             ((AbstractLocation)loc).setParent(null, false);
         }
         // clear config to help with GC; i know you're not supposed to, but this seems to help, else config bag is littered with refs to entities etc
-        ((AbstractLocation)loc).getLocalConfigBag().clear();
+        // FIXME relies on config().getLocalBag() returning the underlying bag!
+        ((AbstractLocation)loc).config().getLocalBag().clear();
     }
     
     /**

http://git-wip-us.apache.org/repos/asf/incubator-brooklyn/blob/73c49852/core/src/main/java/brooklyn/util/task/ssh/SshTasks.java
----------------------------------------------------------------------
diff --git a/core/src/main/java/brooklyn/util/task/ssh/SshTasks.java b/core/src/main/java/brooklyn/util/task/ssh/SshTasks.java
index 407d328..8944bb8 100644
--- a/core/src/main/java/brooklyn/util/task/ssh/SshTasks.java
+++ b/core/src/main/java/brooklyn/util/task/ssh/SshTasks.java
@@ -120,7 +120,7 @@ public class SshTasks {
                 allConfig.putAll(mgmt.getConfig().getAllConfig());
         }
         
-        allConfig.putAll(((LocationInternal)location).getAllConfigBag());
+        allConfig.putAll(((LocationInternal)location).config().getBag());
         
         Map<String, Object> result = Maps.newLinkedHashMap();
         for (String keyS : allConfig.getAllConfig().keySet()) {

http://git-wip-us.apache.org/repos/asf/incubator-brooklyn/blob/73c49852/core/src/test/java/brooklyn/enricher/basic/BasicEnricherTest.java
----------------------------------------------------------------------
diff --git a/core/src/test/java/brooklyn/enricher/basic/BasicEnricherTest.java b/core/src/test/java/brooklyn/enricher/basic/BasicEnricherTest.java
index 0f0e831..4e33f6d 100644
--- a/core/src/test/java/brooklyn/enricher/basic/BasicEnricherTest.java
+++ b/core/src/test/java/brooklyn/enricher/basic/BasicEnricherTest.java
@@ -76,8 +76,8 @@ public class BasicEnricherTest extends BrooklynAppUnitTestSupport {
     public void testAddInstance() throws Exception {
         MyEnricher enricher = new MyEnricher();
         enricher.setDisplayName("Bob");
-        enricher.setConfig(MyEnricher.STR_KEY, "aval");
-        enricher.setConfig(MyEnricher.INT_KEY, 2);
+        enricher.config().set(MyEnricher.STR_KEY, "aval");
+        enricher.config().set(MyEnricher.INT_KEY, 2);
         app.addEnricher(enricher);
         
         assertEquals(enricher.getDisplayName(), "Bob");

http://git-wip-us.apache.org/repos/asf/incubator-brooklyn/blob/73c49852/core/src/test/java/brooklyn/enricher/basic/EnricherConfigTest.java
----------------------------------------------------------------------
diff --git a/core/src/test/java/brooklyn/enricher/basic/EnricherConfigTest.java b/core/src/test/java/brooklyn/enricher/basic/EnricherConfigTest.java
index 03677d9..5fbe5ea 100644
--- a/core/src/test/java/brooklyn/enricher/basic/EnricherConfigTest.java
+++ b/core/src/test/java/brooklyn/enricher/basic/EnricherConfigTest.java
@@ -101,8 +101,8 @@ public class EnricherConfigTest extends BrooklynAppUnitTestSupport {
     @Test
     public void testConfigCanBeSetOnEnricher() throws Exception {
         MyEnricher enricher = new MyEnricher();
-        enricher.setConfig(MyEnricher.STR_KEY, "aval");
-        enricher.setConfig(MyEnricher.INT_KEY, 2);
+        enricher.config().set(MyEnricher.STR_KEY, "aval");
+        enricher.config().set(MyEnricher.INT_KEY, 2);
         app.addEnricher(enricher);
         
         assertEquals(enricher.getConfig(MyEnricher.STR_KEY), "aval");
@@ -114,7 +114,7 @@ public class EnricherConfigTest extends BrooklynAppUnitTestSupport {
         MyEnricher enricher = new MyEnricher(MutableMap.builder()
                 .put(MyEnricher.STR_KEY, "aval")
                 .build());
-        enricher.setConfig(MyEnricher.STR_KEY, "diffval");
+        enricher.config().set(MyEnricher.STR_KEY, "diffval");
         app.addEnricher(enricher);
         
         assertEquals(enricher.getConfig(MyEnricher.STR_KEY), "diffval");
@@ -128,7 +128,7 @@ public class EnricherConfigTest extends BrooklynAppUnitTestSupport {
         app.addEnricher(enricher);
         
         try {
-            enricher.setConfig(MyEnricher.STR_KEY,"newval");
+            enricher.config().set(MyEnricher.STR_KEY,"newval");
             fail();
         } catch (UnsupportedOperationException e) {
             // success

http://git-wip-us.apache.org/repos/asf/incubator-brooklyn/blob/73c49852/core/src/test/java/brooklyn/entity/group/DynamicClusterWithAvailabilityZonesTest.java
----------------------------------------------------------------------
diff --git a/core/src/test/java/brooklyn/entity/group/DynamicClusterWithAvailabilityZonesTest.java b/core/src/test/java/brooklyn/entity/group/DynamicClusterWithAvailabilityZonesTest.java
index 6574400..dc16335 100644
--- a/core/src/test/java/brooklyn/entity/group/DynamicClusterWithAvailabilityZonesTest.java
+++ b/core/src/test/java/brooklyn/entity/group/DynamicClusterWithAvailabilityZonesTest.java
@@ -33,13 +33,13 @@ import org.testng.annotations.Test;
 
 import brooklyn.entity.BrooklynAppUnitTestSupport;
 import brooklyn.entity.Entity;
-import brooklyn.entity.basic.EntityLocal;
 import brooklyn.entity.basic.EntityPredicates;
 import brooklyn.entity.group.zoneaware.ProportionalZoneFailureDetector;
 import brooklyn.entity.proxying.EntitySpec;
 import brooklyn.entity.trait.FailingEntity;
 import brooklyn.location.Location;
 import brooklyn.location.LocationSpec;
+import brooklyn.location.basic.LocationInternal;
 import brooklyn.location.basic.SimulatedLocation;
 import brooklyn.location.cloud.AbstractAvailabilityZoneExtension;
 import brooklyn.location.cloud.AvailabilityZoneExtension;
@@ -217,7 +217,7 @@ public class DynamicClusterWithAvailabilityZonesTest extends BrooklynAppUnitTest
         protected SimulatedLocation newSubLocation(Location parent, String displayName) {
             return managementContext.getLocationManager().createLocation(LocationSpec.create(SimulatedLocation.class)
                     .parent(parent)
-                    .configure(parent.getAllConfig(true))
+                    .configure(((LocationInternal)parent).config().getBag().getAllConfig())
                     .displayName(displayName));
         }
     }

http://git-wip-us.apache.org/repos/asf/incubator-brooklyn/blob/73c49852/core/src/test/java/brooklyn/entity/rebind/RebindLocationTest.java
----------------------------------------------------------------------
diff --git a/core/src/test/java/brooklyn/entity/rebind/RebindLocationTest.java b/core/src/test/java/brooklyn/entity/rebind/RebindLocationTest.java
index d81e1ab..7236768 100644
--- a/core/src/test/java/brooklyn/entity/rebind/RebindLocationTest.java
+++ b/core/src/test/java/brooklyn/entity/rebind/RebindLocationTest.java
@@ -241,7 +241,7 @@ public class RebindLocationTest extends RebindTestFixtureWithApp {
         newApp = rebind();
         MyLocation newLoc = (MyLocation) Iterables.get(newApp.getLocations(), 0);
 
-        assertNull(newLoc.getAllConfigBag().getStringKey("id"));
+        assertNull(newLoc.config().getBag().getStringKey("id"));
         assertEquals(newLoc.getId(), origLoc.getId());
     }
     

http://git-wip-us.apache.org/repos/asf/incubator-brooklyn/blob/73c49852/core/src/test/java/brooklyn/entity/rebind/RebindPolicyTest.java
----------------------------------------------------------------------
diff --git a/core/src/test/java/brooklyn/entity/rebind/RebindPolicyTest.java b/core/src/test/java/brooklyn/entity/rebind/RebindPolicyTest.java
index ef27a94..1f073ed 100644
--- a/core/src/test/java/brooklyn/entity/rebind/RebindPolicyTest.java
+++ b/core/src/test/java/brooklyn/entity/rebind/RebindPolicyTest.java
@@ -179,7 +179,7 @@ public class RebindPolicyTest extends RebindTestFixtureWithApp {
     public void testReconfigurePolicyPersistsChange() throws Exception {
         MyPolicyReconfigurable policy = origApp.addPolicy(PolicySpec.create(MyPolicyReconfigurable.class)
                 .configure(MyPolicyReconfigurable.MY_CONFIG, "oldval"));
-        policy.setConfig(MyPolicyReconfigurable.MY_CONFIG, "newval");
+        policy.config().set(MyPolicyReconfigurable.MY_CONFIG, "newval");
         
         newApp = rebind();
         MyPolicyReconfigurable newPolicy = (MyPolicyReconfigurable) Iterables.getOnlyElement(newApp.getPolicies());

http://git-wip-us.apache.org/repos/asf/incubator-brooklyn/blob/73c49852/core/src/test/java/brooklyn/location/basic/ByonLocationResolverTest.java
----------------------------------------------------------------------
diff --git a/core/src/test/java/brooklyn/location/basic/ByonLocationResolverTest.java b/core/src/test/java/brooklyn/location/basic/ByonLocationResolverTest.java
index e0f1dda..2fb85e5 100644
--- a/core/src/test/java/brooklyn/location/basic/ByonLocationResolverTest.java
+++ b/core/src/test/java/brooklyn/location/basic/ByonLocationResolverTest.java
@@ -88,7 +88,7 @@ public class ByonLocationResolverTest {
         brooklynProperties.put("brooklyn.location.byon.publicKeyData", "myPublicKeyData");
         brooklynProperties.put("brooklyn.location.byon.privateKeyPassphrase", "myprivateKeyPassphrase");
 
-        Map<String, Object> conf = resolve("byon(hosts=\"1.1.1.1\")").getAllConfig(true);
+        Map<String, Object> conf = resolve("byon(hosts=\"1.1.1.1\")").config().getBag().getAllConfig();
         
         assertEquals(conf.get("privateKeyFile"), "myprivatekeyfile");
         assertEquals(conf.get("publicKeyFile"), "mypublickeyfile");
@@ -110,7 +110,7 @@ public class ByonLocationResolverTest {
         FixedListMachineProvisioningLocation<SshMachineLocation> loc = resolve("byon(privateKeyFile=myprivatekeyfile,hosts=\"1.1.1.1\")");
         SshMachineLocation machine = loc.obtain();
         
-        assertEquals(machine.getAllConfig(true).get("privateKeyFile"), "myprivatekeyfile");
+        assertEquals(machine.config().getBag().getStringKey("privateKeyFile"), "myprivatekeyfile");
         assertEquals(machine.getAddress(), Networking.getInetAddressWithFixedName("1.1.1.1"));
     }
 
@@ -130,7 +130,7 @@ public class ByonLocationResolverTest {
         // prefer location-generic if nothing else
         brooklynProperties.put("brooklyn.location.privateKeyData", "privateKeyData-inGeneric");
 
-        Map<String, Object> conf = resolve("named:mynamed").getAllConfig(true);
+        Map<String, Object> conf = resolve("named:mynamed").config().getBag().getAllConfig();
         
         assertEquals(conf.get("privateKeyFile"), "privateKeyFile-inNamed");
         assertEquals(conf.get("publicKeyFile"), "publicKeyFile-inProviderSpecific");
@@ -259,21 +259,21 @@ public class ByonLocationResolverTest {
                 new NamedLocationResolver().newLocationFromString(MutableMap.of(), "named:foo", managementContext.getLocationRegistry());
         
         Assert.assertEquals("/tmp/x", ll.getConfig(LocationConfigKeys.PRIVATE_KEY_FILE));
-        Assert.assertTrue(ll.hasConfig(LocationConfigKeys.PRIVATE_KEY_FILE, false));
-        Assert.assertEquals("/tmp/x", ll.getAllConfig(false).get(LocationConfigKeys.PRIVATE_KEY_FILE.getName()));
-        Assert.assertEquals("/tmp/x", ((AbstractLocation)ll).getAllConfigBag().get(LocationConfigKeys.PRIVATE_KEY_FILE));
+        Assert.assertTrue(((LocationInternal)ll).config().getLocalRaw(LocationConfigKeys.PRIVATE_KEY_FILE).isPresent());
+        Assert.assertEquals("/tmp/x", ((LocationInternal)ll).config().getLocalBag().getStringKey(LocationConfigKeys.PRIVATE_KEY_FILE.getName()));
+        Assert.assertEquals("/tmp/x", ((LocationInternal)ll).config().getBag().get(LocationConfigKeys.PRIVATE_KEY_FILE));
 
         SshMachineLocation l = ll.obtain(MutableMap.of());
         
         Assert.assertEquals("/tmp/x", l.getConfig(LocationConfigKeys.PRIVATE_KEY_FILE));
         
-        Assert.assertTrue(l.hasConfig(LocationConfigKeys.PRIVATE_KEY_FILE, true));
-        Assert.assertFalse(l.hasConfig(LocationConfigKeys.PRIVATE_KEY_FILE, false));
+        Assert.assertTrue(l.config().getRaw(LocationConfigKeys.PRIVATE_KEY_FILE).isPresent());
+        Assert.assertTrue(l.config().getLocalRaw(LocationConfigKeys.PRIVATE_KEY_FILE).isAbsent());
 
-        Assert.assertEquals("/tmp/x", l.getAllConfig(true).get(LocationConfigKeys.PRIVATE_KEY_FILE.getName()));
-        Assert.assertEquals("/tmp/x", l.getAllConfig(true).get(LocationConfigKeys.PRIVATE_KEY_FILE.getName()));
+        Assert.assertEquals("/tmp/x", l.config().getBag().getStringKey(LocationConfigKeys.PRIVATE_KEY_FILE.getName()));
+        Assert.assertEquals("/tmp/x", l.config().getBag().getStringKey(LocationConfigKeys.PRIVATE_KEY_FILE.getName()));
 
-        Assert.assertEquals("/tmp/x", l.getAllConfigBag().get(LocationConfigKeys.PRIVATE_KEY_FILE));
+        Assert.assertEquals("/tmp/x", l.config().getBag().get(LocationConfigKeys.PRIVATE_KEY_FILE));
     }
 
     @Test

http://git-wip-us.apache.org/repos/asf/incubator-brooklyn/blob/73c49852/core/src/test/java/brooklyn/location/basic/HostLocationResolverTest.java
----------------------------------------------------------------------
diff --git a/core/src/test/java/brooklyn/location/basic/HostLocationResolverTest.java b/core/src/test/java/brooklyn/location/basic/HostLocationResolverTest.java
index 8ea9df0..51359ef 100644
--- a/core/src/test/java/brooklyn/location/basic/HostLocationResolverTest.java
+++ b/core/src/test/java/brooklyn/location/basic/HostLocationResolverTest.java
@@ -95,7 +95,7 @@ public class HostLocationResolverTest {
         // prefer location-generic if nothing else
         brooklynProperties.put("brooklyn.location.privateKeyData", "privateKeyData-inGeneric");
 
-        Map<String, Object> conf = resolve("named:mynamed").obtain(ImmutableMap.of()).getAllConfig(true);
+        Map<String, Object> conf = resolve("named:mynamed").obtain(ImmutableMap.of()).config().getBag().getAllConfig();
         
         assertEquals(conf.get("privateKeyFile"), "privateKeyFile-inNamed");
         assertEquals(conf.get("privateKeyData"), "privateKeyData-inGeneric");

http://git-wip-us.apache.org/repos/asf/incubator-brooklyn/blob/73c49852/core/src/test/java/brooklyn/location/basic/LocalhostLocationResolverTest.java
----------------------------------------------------------------------
diff --git a/core/src/test/java/brooklyn/location/basic/LocalhostLocationResolverTest.java b/core/src/test/java/brooklyn/location/basic/LocalhostLocationResolverTest.java
index c09e3a7..69d0227 100644
--- a/core/src/test/java/brooklyn/location/basic/LocalhostLocationResolverTest.java
+++ b/core/src/test/java/brooklyn/location/basic/LocalhostLocationResolverTest.java
@@ -65,7 +65,7 @@ public class LocalhostLocationResolverTest {
         brooklynProperties.put("brooklyn.location.localhost.publicKeyData", "myPublicKeyData");
         brooklynProperties.put("brooklyn.location.localhost.privateKeyPassphrase", "myprivateKeyPassphrase");
 
-        Map<String, Object> conf = resolve("localhost").getAllConfig(true);
+        Map<String, Object> conf = resolve("localhost").config().getBag().getAllConfig();
         
         assertEquals(conf.get("privateKeyFile"), "myprivatekeyfile");
         assertEquals(conf.get("publicKeyFile"), "mypublickeyfile");
@@ -82,7 +82,7 @@ public class LocalhostLocationResolverTest {
         brooklynProperties.put("brooklyn.localhost.publicKeyData", "myPublicKeyData");
         brooklynProperties.put("brooklyn.localhost.privateKeyPassphrase", "myprivateKeyPassphrase");
 
-        Map<String, Object> conf = resolve("localhost").getAllConfig(true);
+        Map<String, Object> conf = resolve("localhost").config().getBag().getAllConfig();
         
         assertEquals(conf.get("privateKeyFile"), "myprivatekeyfile");
         assertEquals(conf.get("publicKeyFile"), "mypublickeyfile");
@@ -98,7 +98,7 @@ public class LocalhostLocationResolverTest {
         brooklynProperties.put("brooklyn.localhost.private-key-data", "myprivateKeyData");
         brooklynProperties.put("brooklyn.localhost.public-key-data", "myPublicKeyData");
         brooklynProperties.put("brooklyn.localhost.private-key-passphrase", "myprivateKeyPassphrase");
-        Map<String, Object> conf = resolve("localhost").getAllConfig(true);
+        Map<String, Object> conf = resolve("localhost").config().getBag().getAllConfig();
         
         assertEquals(conf.get("privateKeyFile"), "myprivatekeyfile");
         assertEquals(conf.get("publicKeyFile"), "mypublickeyfile");
@@ -123,7 +123,7 @@ public class LocalhostLocationResolverTest {
         // prefer location-generic if nothing else
         brooklynProperties.put("brooklyn.location.privateKeyData", "privateKeyData-inGeneric");
 
-        Map<String, Object> conf = resolve("named:mynamed").getAllConfig(true);
+        Map<String, Object> conf = resolve("named:mynamed").config().getBag().getAllConfig();
         
         assertEquals(conf.get("privateKeyFile"), "privateKeyFile-inNamed");
         assertEquals(conf.get("publicKeyFile"), "publicKeyFile-inProviderSpecific");
@@ -212,10 +212,10 @@ public class LocalhostLocationResolverTest {
     
     @Test
     public void testResolvesPropertiesInSpec() throws Exception {
-        Location location = resolve("localhost(privateKeyFile=myprivatekeyfile,name=myname)");
+        LocationInternal location = resolve("localhost(privateKeyFile=myprivatekeyfile,name=myname)");
         assertTrue(location instanceof LocalhostMachineProvisioningLocation);
         assertEquals(location.getDisplayName(), "myname");
-        assertEquals(location.getAllConfig(true).get("privateKeyFile"), "myprivatekeyfile");
+        assertEquals(location.config().getBag().getStringKey("privateKeyFile"), "myprivatekeyfile");
     }
     
     @Test
@@ -233,10 +233,10 @@ public class LocalhostLocationResolverTest {
         return (BasicLocationRegistry) managementContext.getLocationRegistry();
     }
     
-    private Location resolve(String val) {
+    private LocationInternal resolve(String val) {
         Location l = managementContext.getLocationRegistry().resolve(val);
         Assert.assertNotNull(l);
-        return l;
+        return (LocationInternal) l;
     }
     
     private void assertThrowsNoSuchElement(String val) {

http://git-wip-us.apache.org/repos/asf/incubator-brooklyn/blob/73c49852/core/src/test/java/brooklyn/location/basic/LocationConfigTest.java
----------------------------------------------------------------------
diff --git a/core/src/test/java/brooklyn/location/basic/LocationConfigTest.java b/core/src/test/java/brooklyn/location/basic/LocationConfigTest.java
index 8a907dc..a7ba743 100644
--- a/core/src/test/java/brooklyn/location/basic/LocationConfigTest.java
+++ b/core/src/test/java/brooklyn/location/basic/LocationConfigTest.java
@@ -56,8 +56,8 @@ public class LocationConfigTest {
                 .configure("mylocation.myconfig", "myval1")
                 .configure("mylocation.myconfigwithflagname", "myval2"));
         
-        assertEquals(loc.getAllConfigBag().getAllConfig(), ImmutableMap.of("mylocation.myconfig", "myval1", "mylocation.myconfigwithflagname", "myval2"));
-        assertEquals(loc.getLocalConfigBag().getAllConfig(), ImmutableMap.of("mylocation.myconfig", "myval1", "mylocation.myconfigwithflagname", "myval2"));
+        assertEquals(loc.config().getBag().getAllConfig(), ImmutableMap.of("mylocation.myconfig", "myval1", "mylocation.myconfigwithflagname", "myval2"));
+        assertEquals(loc.config().getLocalBag().getAllConfig(), ImmutableMap.of("mylocation.myconfig", "myval1", "mylocation.myconfigwithflagname", "myval2"));
         assertEquals(loc.getAllConfig(true), ImmutableMap.of("mylocation.myconfig", "myval1", "mylocation.myconfigwithflagname", "myval2"));
         assertEquals(loc.getAllConfig(false), ImmutableMap.of("mylocation.myconfig", "myval1", "mylocation.myconfigwithflagname", "myval2"));
     }
@@ -69,8 +69,8 @@ public class LocationConfigTest {
         LocationInternal loc = managementContext.getLocationManager().createLocation(LocationSpec.create(MyLocation.class)
                 .configure("myconfigflagname", "myval"));
         
-        assertEquals(loc.getAllConfigBag().getAllConfig(), ImmutableMap.of("mylocation.myconfigwithflagname", "myval", "myconfigflagname", "myval"));
-        assertEquals(loc.getLocalConfigBag().getAllConfig(), ImmutableMap.of("mylocation.myconfigwithflagname", "myval", "myconfigflagname", "myval"));
+        assertEquals(loc.config().getBag().getAllConfig(), ImmutableMap.of("mylocation.myconfigwithflagname", "myval", "myconfigflagname", "myval"));
+        assertEquals(loc.config().getLocalBag().getAllConfig(), ImmutableMap.of("mylocation.myconfigwithflagname", "myval", "myconfigflagname", "myval"));
         assertEquals(loc.getAllConfig(true), ImmutableMap.of("mylocation.myconfigwithflagname", "myval", "myconfigflagname", "myval"));
         assertEquals(loc.getAllConfig(false), ImmutableMap.of("mylocation.myconfigwithflagname", "myval", "myconfigflagname", "myval"));
     }
@@ -80,8 +80,8 @@ public class LocationConfigTest {
         LocationInternal loc = managementContext.getLocationManager().createLocation(LocationSpec.create(MyLocation.class)
                 .configure("notThere", "notThereVal"));
         
-        assertEquals(loc.getAllConfigBag().getAllConfig(), ImmutableMap.of("notThere", "notThereVal"));
-        assertEquals(loc.getLocalConfigBag().getAllConfig(), ImmutableMap.of("notThere", "notThereVal"));
+        assertEquals(loc.config().getBag().getAllConfig(), ImmutableMap.of("notThere", "notThereVal"));
+        assertEquals(loc.config().getLocalBag().getAllConfig(), ImmutableMap.of("notThere", "notThereVal"));
         assertEquals(loc.getAllConfig(true), ImmutableMap.of("notThere", "notThereVal"));
         assertEquals(loc.getAllConfig(false), ImmutableMap.of("notThere", "notThereVal"));
     }
@@ -96,8 +96,8 @@ public class LocationConfigTest {
         LocationInternal child = managementContext.getLocationManager().createLocation(LocationSpec.create(MyChildLocation.class)
                 .parent(loc));
 
-        assertEquals(child.getAllConfigBag().getAllConfig(), ImmutableMap.of("mychildlocation.myconfig", "myval1", "notThere", "notThereVal"));
-        assertEquals(child.getLocalConfigBag().getAllConfig(), ImmutableMap.of());
+        assertEquals(child.config().getBag().getAllConfig(), ImmutableMap.of("mychildlocation.myconfig", "myval1", "notThere", "notThereVal"));
+        assertEquals(child.config().getLocalBag().getAllConfig(), ImmutableMap.of());
         assertEquals(child.getAllConfig(true), ImmutableMap.of("mychildlocation.myconfig", "myval1", "notThere", "notThereVal"));
         assertEquals(child.getAllConfig(false), ImmutableMap.of());
     }
@@ -111,8 +111,8 @@ public class LocationConfigTest {
         LocationInternal child = managementContext.getLocationManager().createLocation(LocationSpec.create(MyChildLocation.class)
                 .parent(loc));
 
-        assertEquals(child.getAllConfigBag().getAllConfig(), ImmutableMap.of("mychildlocation.myconfigwithflagname", "myval"));
-        assertEquals(child.getLocalConfigBag().getAllConfig(), ImmutableMap.of());
+        assertEquals(child.config().getBag().getAllConfig(), ImmutableMap.of("mychildlocation.myconfigwithflagname", "myval"));
+        assertEquals(child.config().getLocalBag().getAllConfig(), ImmutableMap.of());
         assertEquals(child.getAllConfig(true), ImmutableMap.of("mychildlocation.myconfigwithflagname", "myval"));
         assertEquals(child.getAllConfig(false), ImmutableMap.of());
     }
@@ -125,8 +125,8 @@ public class LocationConfigTest {
         LocationInternal child = managementContext.getLocationManager().createLocation(LocationSpec.create(MyChildLocation.class)
                 .parent(loc));
 
-        assertEquals(child.getAllConfigBag().getAllConfig(), ImmutableMap.of("mylocation.myconfig", "myval1"));
-        assertEquals(child.getLocalConfigBag().getAllConfig(), ImmutableMap.of());
+        assertEquals(child.config().getBag().getAllConfig(), ImmutableMap.of("mylocation.myconfig", "myval1"));
+        assertEquals(child.config().getLocalBag().getAllConfig(), ImmutableMap.of());
         assertEquals(child.getAllConfig(true), ImmutableMap.of("mylocation.myconfig", "myval1"));
         assertEquals(child.getAllConfig(false), ImmutableMap.of());
     }
@@ -142,8 +142,8 @@ public class LocationConfigTest {
                 .configure("mychildlocation.myconfigwithflagname", "overrideMyval")
                 .configure("notThere", "overrideNotThereVal"));
 
-        assertEquals(child.getAllConfigBag().getAllConfig(), ImmutableMap.of("mychildlocation.myconfigwithflagname", "overrideMyval", "notThere", "overrideNotThereVal"));
-        assertEquals(child.getLocalConfigBag().getAllConfig(), ImmutableMap.of("mychildlocation.myconfigwithflagname", "overrideMyval", "notThere", "overrideNotThereVal"));
+        assertEquals(child.config().getBag().getAllConfig(), ImmutableMap.of("mychildlocation.myconfigwithflagname", "overrideMyval", "notThere", "overrideNotThereVal"));
+        assertEquals(child.config().getLocalBag().getAllConfig(), ImmutableMap.of("mychildlocation.myconfigwithflagname", "overrideMyval", "notThere", "overrideNotThereVal"));
         assertEquals(child.getAllConfig(true), ImmutableMap.of("mychildlocation.myconfigwithflagname", "overrideMyval", "notThere", "overrideNotThereVal"));
         assertEquals(child.getAllConfig(false), ImmutableMap.of("mychildlocation.myconfigwithflagname", "overrideMyval", "notThere", "overrideNotThereVal"));
     }
@@ -158,8 +158,8 @@ public class LocationConfigTest {
                 .parent(loc)
                 .configure("mychildconfigflagname", "overrideMyval"));
 
-        assertEquals(child.getAllConfigBag().getAllConfig(), ImmutableMap.of("mychildlocation.myconfigwithflagname", "overrideMyval", "mychildconfigflagname", "overrideMyval"));
-        assertEquals(child.getLocalConfigBag().getAllConfig(), ImmutableMap.of("mychildlocation.myconfigwithflagname", "overrideMyval", "mychildconfigflagname", "overrideMyval"));
+        assertEquals(child.config().getBag().getAllConfig(), ImmutableMap.of("mychildlocation.myconfigwithflagname", "overrideMyval", "mychildconfigflagname", "overrideMyval"));
+        assertEquals(child.config().getLocalBag().getAllConfig(), ImmutableMap.of("mychildlocation.myconfigwithflagname", "overrideMyval", "mychildconfigflagname", "overrideMyval"));
         assertEquals(child.getAllConfig(true), ImmutableMap.of("mychildlocation.myconfigwithflagname", "overrideMyval", "mychildconfigflagname", "overrideMyval"));
         assertEquals(child.getAllConfig(false), ImmutableMap.of("mychildlocation.myconfigwithflagname", "overrideMyval", "mychildconfigflagname", "overrideMyval"));
     }

http://git-wip-us.apache.org/repos/asf/incubator-brooklyn/blob/73c49852/core/src/test/java/brooklyn/location/basic/SingleMachineLocationResolverTest.java
----------------------------------------------------------------------
diff --git a/core/src/test/java/brooklyn/location/basic/SingleMachineLocationResolverTest.java b/core/src/test/java/brooklyn/location/basic/SingleMachineLocationResolverTest.java
index 0f62d22..d62971f 100644
--- a/core/src/test/java/brooklyn/location/basic/SingleMachineLocationResolverTest.java
+++ b/core/src/test/java/brooklyn/location/basic/SingleMachineLocationResolverTest.java
@@ -99,7 +99,7 @@ public class SingleMachineLocationResolverTest {
         // prefer location-generic if nothing else
         brooklynProperties.put("brooklyn.location.privateKeyData", "privateKeyData-inGeneric");
 
-        Map<String, Object> conf = resolve("named:mynamed").obtain(ImmutableMap.of()).getAllConfig(true);
+        Map<String, Object> conf = resolve("named:mynamed").obtain(ImmutableMap.of()).config().getBag().getAllConfig();
         
         assertEquals(conf.get("privateKeyFile"), "privateKeyFile-inNamed");
         assertEquals(conf.get("privateKeyData"), "privateKeyData-inGeneric");

http://git-wip-us.apache.org/repos/asf/incubator-brooklyn/blob/73c49852/core/src/test/java/brooklyn/policy/basic/BasicPolicyTest.java
----------------------------------------------------------------------
diff --git a/core/src/test/java/brooklyn/policy/basic/BasicPolicyTest.java b/core/src/test/java/brooklyn/policy/basic/BasicPolicyTest.java
index 9f3ae9e..89872be 100644
--- a/core/src/test/java/brooklyn/policy/basic/BasicPolicyTest.java
+++ b/core/src/test/java/brooklyn/policy/basic/BasicPolicyTest.java
@@ -58,8 +58,8 @@ public class BasicPolicyTest extends BrooklynAppUnitTestSupport {
     public void testAddInstance() throws Exception {
         MyPolicy policy = new MyPolicy();
         policy.setDisplayName("Bob");
-        policy.setConfig(MyPolicy.STR_KEY, "aval");
-        policy.setConfig(MyPolicy.INT_KEY, 2);
+        policy.config().set(MyPolicy.STR_KEY, "aval");
+        policy.config().set(MyPolicy.INT_KEY, 2);
         app.addPolicy(policy);
         
         assertEquals(policy.getDisplayName(), "Bob");

http://git-wip-us.apache.org/repos/asf/incubator-brooklyn/blob/73c49852/core/src/test/java/brooklyn/policy/basic/PolicyConfigTest.java
----------------------------------------------------------------------
diff --git a/core/src/test/java/brooklyn/policy/basic/PolicyConfigTest.java b/core/src/test/java/brooklyn/policy/basic/PolicyConfigTest.java
index 502881b..c601e09 100644
--- a/core/src/test/java/brooklyn/policy/basic/PolicyConfigTest.java
+++ b/core/src/test/java/brooklyn/policy/basic/PolicyConfigTest.java
@@ -108,8 +108,8 @@ public class PolicyConfigTest extends BrooklynAppUnitTestSupport {
     @Test
     public void testConfigCanBeSetOnPolicy() throws Exception {
         MyPolicy policy = new MyPolicy();
-        policy.setConfig(MyPolicy.STR_KEY, "aval");
-        policy.setConfig(MyPolicy.INT_KEY, 2);
+        policy.config().set(MyPolicy.STR_KEY, "aval");
+        policy.config().set(MyPolicy.INT_KEY, 2);
         app.addPolicy(policy);
         
         assertEquals(policy.getConfig(MyPolicy.STR_KEY), "aval");
@@ -121,7 +121,7 @@ public class PolicyConfigTest extends BrooklynAppUnitTestSupport {
         MyPolicy policy = new MyPolicy(MutableMap.builder()
                 .put(MyPolicy.STR_KEY, "aval")
                 .build());
-        policy.setConfig(MyPolicy.STR_KEY, "diffval");
+        policy.config().set(MyPolicy.STR_KEY, "diffval");
         app.addPolicy(policy);
         
         assertEquals(policy.getConfig(MyPolicy.STR_KEY), "diffval");
@@ -135,7 +135,7 @@ public class PolicyConfigTest extends BrooklynAppUnitTestSupport {
         app.addPolicy(policy);
         
         try {
-            policy.setConfig(MyPolicy.STR_KEY,"newval");
+            policy.config().set(MyPolicy.STR_KEY,"newval");
             fail();
         } catch (UnsupportedOperationException e) {
             // success

http://git-wip-us.apache.org/repos/asf/incubator-brooklyn/blob/73c49852/examples/simple-web-cluster/src/test/java/brooklyn/demo/RebindWebClusterDatabaseExampleAppIntegrationTest.java
----------------------------------------------------------------------
diff --git a/examples/simple-web-cluster/src/test/java/brooklyn/demo/RebindWebClusterDatabaseExampleAppIntegrationTest.java b/examples/simple-web-cluster/src/test/java/brooklyn/demo/RebindWebClusterDatabaseExampleAppIntegrationTest.java
index 19edba9..d388193 100644
--- a/examples/simple-web-cluster/src/test/java/brooklyn/demo/RebindWebClusterDatabaseExampleAppIntegrationTest.java
+++ b/examples/simple-web-cluster/src/test/java/brooklyn/demo/RebindWebClusterDatabaseExampleAppIntegrationTest.java
@@ -162,7 +162,7 @@ public class RebindWebClusterDatabaseExampleAppIntegrationTest extends RebindTes
         // expect auto-scaler policy to be there, and to be functional (e.g. can trigger resize)
         AutoScalerPolicy autoScalerPolicy = (AutoScalerPolicy) Iterables.find(webCluster.getPolicies(), Predicates.instanceOf(AutoScalerPolicy.class));
         
-        autoScalerPolicy.setConfig(AutoScalerPolicy.MIN_POOL_SIZE, 3);
+        autoScalerPolicy.config().set(AutoScalerPolicy.MIN_POOL_SIZE, 3);
         EntityTestUtils.assertGroupSizeEqualsEventually(web, 3);
         final Collection<Entity> webMembersAfterGrow = web.getMembers();
         
@@ -190,7 +190,7 @@ public class RebindWebClusterDatabaseExampleAppIntegrationTest extends RebindTes
         EntityTestUtils.assertAttributeChangesEventually(web, HttpLatencyDetector.REQUEST_LATENCY_IN_SECONDS_IN_WINDOW);
 
         // Restore the web-cluster to its original size of 2
-        autoScalerPolicy.setConfig(AutoScalerPolicy.MIN_POOL_SIZE, 2);
+        autoScalerPolicy.config().set(AutoScalerPolicy.MIN_POOL_SIZE, 2);
         EntityTestUtils.assertGroupSizeEqualsEventually(web, 2);
         
         final Entity removedAppserver = Iterables.getOnlyElement(Sets.difference(ImmutableSet.copyOf(webMembersAfterGrow), ImmutableSet.copyOf(web.getMembers())));

http://git-wip-us.apache.org/repos/asf/incubator-brooklyn/blob/73c49852/locations/jclouds/src/main/java/brooklyn/location/jclouds/JcloudsByonLocationResolver.java
----------------------------------------------------------------------
diff --git a/locations/jclouds/src/main/java/brooklyn/location/jclouds/JcloudsByonLocationResolver.java b/locations/jclouds/src/main/java/brooklyn/location/jclouds/JcloudsByonLocationResolver.java
index 674d360..b60ddc9 100644
--- a/locations/jclouds/src/main/java/brooklyn/location/jclouds/JcloudsByonLocationResolver.java
+++ b/locations/jclouds/src/main/java/brooklyn/location/jclouds/JcloudsByonLocationResolver.java
@@ -140,7 +140,7 @@ public class JcloudsByonLocationResolver implements LocationResolver {
                     .putIfNotNull("privateKeyFile", privateKeyFile)
                     .build();
             try {
-                JcloudsSshMachineLocation machine = jcloudsLocation.rebindMachine(jcloudsLocation.getAllConfigBag().putAll(machineFlags));
+                JcloudsSshMachineLocation machine = jcloudsLocation.rebindMachine(jcloudsLocation.config().getBag().putAll(machineFlags));
                 machines.add(machine);
             } catch (NoMachinesAvailableException e) {
                 log.warn("Error rebinding to jclouds machine "+hostIdentifier+" in "+jcloudsLocation, e);

http://git-wip-us.apache.org/repos/asf/incubator-brooklyn/blob/73c49852/locations/jclouds/src/main/java/brooklyn/location/jclouds/JcloudsLocation.java
----------------------------------------------------------------------
diff --git a/locations/jclouds/src/main/java/brooklyn/location/jclouds/JcloudsLocation.java b/locations/jclouds/src/main/java/brooklyn/location/jclouds/JcloudsLocation.java
index 37272d4..0914ebf 100644
--- a/locations/jclouds/src/main/java/brooklyn/location/jclouds/JcloudsLocation.java
+++ b/locations/jclouds/src/main/java/brooklyn/location/jclouds/JcloudsLocation.java
@@ -51,7 +51,6 @@ import java.util.regex.Pattern;
 
 import javax.annotation.Nullable;
 
-import com.google.common.reflect.TypeToken;
 import org.jclouds.abiquo.compute.options.AbiquoTemplateOptions;
 import org.jclouds.cloudstack.compute.options.CloudStackTemplateOptions;
 import org.jclouds.compute.ComputeService;
@@ -173,6 +172,7 @@ import com.google.common.collect.Sets.SetView;
 import com.google.common.io.Files;
 import com.google.common.net.HostAndPort;
 import com.google.common.primitives.Ints;
+import com.google.common.reflect.TypeToken;
 
 /**
  * For provisioning and managing VMs in a particular provider/region, using jclouds.
@@ -224,11 +224,10 @@ public class JcloudsLocation extends AbstractCloudMachineProvisioningLocation im
     public JcloudsLocation configure(Map<?,?> properties) {
         super.configure(properties);
         
-        if (getLocalConfigBag().containsKey("providerLocationId")) {
+        if (config().getLocalBag().containsKey("providerLocationId")) {
             LOG.warn("Using deprecated 'providerLocationId' key in "+this);
-            if (!getLocalConfigBag().containsKey(CLOUD_REGION_ID))
-                // FIXME modifies getLocalConfigBag result, expecting that to set it on actual location
-                getLocalConfigBag().put(CLOUD_REGION_ID, (String)getLocalConfigBag().getStringKey("providerLocationId"));
+            if (!config().getLocalBag().containsKey(CLOUD_REGION_ID))
+                config().addToLocalBag(MutableMap.of(CLOUD_REGION_ID.getName(), (String)config().getLocalBag().getStringKey("providerLocationId")));
         }
         
         if (isDisplayNameAutoGenerated() || !groovyTruth(getDisplayName())) {
@@ -237,7 +236,7 @@ public class JcloudsLocation extends AbstractCloudMachineProvisioningLocation im
                    (groovyTruth(getEndpoint()) ? ":"+getEndpoint() : ""));
         }
         
-        setCreationString(getLocalConfigBag());
+        setCreationString(config().getLocalBag());
         
         if (getConfig(MACHINE_CREATION_SEMAPHORE) == null) {
             Integer maxConcurrent = getConfig(MAX_CONCURRENT_MACHINE_CREATIONS);
@@ -267,7 +266,7 @@ public class JcloudsLocation extends AbstractCloudMachineProvisioningLocation im
         // TODO should be able to use ConfigBag.newInstanceExtending; would require moving stuff around to api etc
         return (JcloudsLocation) getManagementContext().getLocationManager().createLocation(LocationSpec.create(type)
                 .parent(this)
-                .configure(getLocalConfigBag().getAllConfig())  // FIXME Should this just be inherited?
+                .configure(config().getLocalBag().getAllConfig())  // FIXME Should this just be inherited?
                 .configure(MACHINE_CREATION_SEMAPHORE, getMachineCreationSemaphore())
                 .configure(newFlags));
     }
@@ -275,7 +274,7 @@ public class JcloudsLocation extends AbstractCloudMachineProvisioningLocation im
     @Override
     public String toString() {
         Object identity = getIdentity();
-        String configDescription = getLocalConfigBag().getDescription();
+        String configDescription = config().getLocalBag().getDescription();
         if (configDescription!=null && configDescription.startsWith(getClass().getSimpleName()))
             return configDescription;
         return getClass().getSimpleName()+"["+getDisplayName()+":"+(identity != null ? identity : null)+
@@ -286,7 +285,7 @@ public class JcloudsLocation extends AbstractCloudMachineProvisioningLocation im
     public String toVerboseString() {
         return Objects.toStringHelper(this).omitNullValues()
                 .add("id", getId()).add("name", getDisplayName()).add("identity", getIdentity())
-                .add("description", getLocalConfigBag().getDescription()).add("provider", getProvider())
+                .add("description", config().getLocalBag().getDescription()).add("provider", getProvider())
                 .add("region", getRegion()).add("endpoint", getEndpoint())
                 .toString();
     }
@@ -309,7 +308,7 @@ public class JcloudsLocation extends AbstractCloudMachineProvisioningLocation im
     }
 
     public String getEndpoint() {
-        return (String) getAllConfigBag().getWithDeprecation(CLOUD_ENDPOINT, JCLOUDS_KEY_ENDPOINT);
+        return (String) config().getBag().getWithDeprecation(CLOUD_ENDPOINT, JCLOUDS_KEY_ENDPOINT);
     }
 
     public String getUser(ConfigBag config) {
@@ -440,8 +439,8 @@ public class JcloudsLocation extends AbstractCloudMachineProvisioningLocation im
     }
     public ComputeService getComputeService(Map<?,?> flags) {
         ConfigBag conf = (flags==null || flags.isEmpty()) 
-                ? getAllConfigBag()
-                : ConfigBag.newInstanceExtending(getAllConfigBag(), flags);
+                ? config().getBag()
+                : ConfigBag.newInstanceExtending(config().getBag(), flags);
         return getConfig(COMPUTE_SERVICE_REGISTRY).findComputeService(conf, true);
     }
     
@@ -524,7 +523,7 @@ public class JcloudsLocation extends AbstractCloudMachineProvisioningLocation im
      * plus any further properties to specify e.g. images, hardware profiles, accessing user
      * (for initial login, and a user potentially to create for subsequent ie normal access) */
     public JcloudsSshMachineLocation obtain(Map<?,?> flags) throws NoMachinesAvailableException {
-        ConfigBag setup = ConfigBag.newInstanceExtending(getAllConfigBag(), flags);
+        ConfigBag setup = ConfigBag.newInstanceExtending(config().getBag(), flags);
         Integer attempts = setup.get(MACHINE_CREATE_ATTEMPTS);
         List<Exception> exceptions = Lists.newArrayList();
         if (attempts == null || attempts < 1) attempts = 1;
@@ -1530,7 +1529,7 @@ public class JcloudsLocation extends AbstractCloudMachineProvisioningLocation im
         return rebindMachine(MutableMap.of(), metadata);
     }
     public JcloudsSshMachineLocation rebindMachine(Map<?,?> flags, NodeMetadata metadata) throws NoMachinesAvailableException {
-        ConfigBag setup = ConfigBag.newInstanceExtending(getAllConfigBag(), flags);
+        ConfigBag setup = ConfigBag.newInstanceExtending(config().getBag(), flags);
         if (!setup.containsKey("id")) setup.putStringKey("id", metadata.getId());
         setHostnameUpdatingCredentials(setup, metadata);
         return rebindMachine(setup);
@@ -1612,7 +1611,7 @@ public class JcloudsLocation extends AbstractCloudMachineProvisioningLocation im
     }
 
     public JcloudsSshMachineLocation rebindMachine(Map<?,?> flags) throws NoMachinesAvailableException {
-        ConfigBag setup = ConfigBag.newInstanceExtending(getAllConfigBag(), flags);
+        ConfigBag setup = ConfigBag.newInstanceExtending(config().getBag(), flags);
         return rebindMachine(setup);
     }
 
@@ -1812,7 +1811,7 @@ public class JcloudsLocation extends AbstractCloudMachineProvisioningLocation im
     protected void releaseNode(String instanceId) {
         ComputeService computeService = null;
         try {
-            computeService = getConfig(COMPUTE_SERVICE_REGISTRY).findComputeService(getAllConfigBag(), true);
+            computeService = getConfig(COMPUTE_SERVICE_REGISTRY).findComputeService(config().getBag(), true);
             computeService.destroyNode(instanceId);
         } finally {
         /*

http://git-wip-us.apache.org/repos/asf/incubator-brooklyn/blob/73c49852/locations/jclouds/src/main/java/brooklyn/location/jclouds/JcloudsSshMachineLocation.java
----------------------------------------------------------------------
diff --git a/locations/jclouds/src/main/java/brooklyn/location/jclouds/JcloudsSshMachineLocation.java b/locations/jclouds/src/main/java/brooklyn/location/jclouds/JcloudsSshMachineLocation.java
index 56d863e..c715ad5 100644
--- a/locations/jclouds/src/main/java/brooklyn/location/jclouds/JcloudsSshMachineLocation.java
+++ b/locations/jclouds/src/main/java/brooklyn/location/jclouds/JcloudsSshMachineLocation.java
@@ -163,7 +163,7 @@ public class JcloudsSshMachineLocation extends SshMachineLocation implements Has
     /** In most clouds, the public hostname is the only way to ensure VMs in different zones can access each other. */
     @Override
     public String getSubnetHostname() {
-        String publicHostname = jcloudsParent.getPublicHostname(node, Optional.<HostAndPort>absent(), getAllConfigBag());
+        String publicHostname = jcloudsParent.getPublicHostname(node, Optional.<HostAndPort>absent(), config().getBag());
         return publicHostname;
     }
 
@@ -174,7 +174,7 @@ public class JcloudsSshMachineLocation extends SshMachineLocation implements Has
             return privateAddress.get();
         }
 
-        String hostname = jcloudsParent.getPublicHostname(node, Optional.<HostAndPort>absent(), getAllConfigBag());
+        String hostname = jcloudsParent.getPublicHostname(node, Optional.<HostAndPort>absent(), config().getBag());
         if (hostname != null && !Networking.isValidIp4(hostname)) {
             try {
                 return InetAddress.getByName(hostname).getHostAddress();

http://git-wip-us.apache.org/repos/asf/incubator-brooklyn/blob/73c49852/locations/jclouds/src/test/java/brooklyn/location/jclouds/JcloudsByonLocationResolverAwsLiveTest.java
----------------------------------------------------------------------
diff --git a/locations/jclouds/src/test/java/brooklyn/location/jclouds/JcloudsByonLocationResolverAwsLiveTest.java b/locations/jclouds/src/test/java/brooklyn/location/jclouds/JcloudsByonLocationResolverAwsLiveTest.java
index 7e12f5a..ae2ec25 100644
--- a/locations/jclouds/src/test/java/brooklyn/location/jclouds/JcloudsByonLocationResolverAwsLiveTest.java
+++ b/locations/jclouds/src/test/java/brooklyn/location/jclouds/JcloudsByonLocationResolverAwsLiveTest.java
@@ -88,7 +88,7 @@ public class JcloudsByonLocationResolverAwsLiveTest extends AbstractJcloudsLiveT
         assertEquals(machine.getAddress().getHostAddress(), awsVmIp);
         assertEquals(machine.getAddress().getHostName(), awsVmHostname);
         assertEquals(machine.getUser(), awsVmUser);
-        assertEquals(machine.getAllConfig(true).get("anotherprop"), "myval");
+        assertEquals(machine.config().getBag().getStringKey("anotherprop"), "myval");
         
         assertTrue(machine.isSshable());
     }
@@ -158,7 +158,7 @@ public class JcloudsByonLocationResolverAwsLiveTest extends AbstractJcloudsLiveT
         brooklynProperties.put("brooklyn.jclouds.aws-ec2.private-key-passphrase", "privateKeyPassphrase-inProviderSpecific");
         brooklynProperties.put("brooklyn.jclouds.private-key-passphrase", "privateKeyPassphrase-inJcloudsGeneric");
 
-        Map<String, Object> conf = resolve("named:mynamed").obtain().getAllConfig(true);
+        Map<String, Object> conf = resolve("named:mynamed").obtain().config().getBag().getAllConfig();
         
         assertEquals(conf.get("user"), awsVmUser);
         assertEquals(conf.get("privateKeyFile"), "privateKeyFile-inNamed");

http://git-wip-us.apache.org/repos/asf/incubator-brooklyn/blob/73c49852/locations/jclouds/src/test/java/brooklyn/location/jclouds/JcloudsLocationResolverTest.java
----------------------------------------------------------------------
diff --git a/locations/jclouds/src/test/java/brooklyn/location/jclouds/JcloudsLocationResolverTest.java b/locations/jclouds/src/test/java/brooklyn/location/jclouds/JcloudsLocationResolverTest.java
index 6196d59..e31b954 100644
--- a/locations/jclouds/src/test/java/brooklyn/location/jclouds/JcloudsLocationResolverTest.java
+++ b/locations/jclouds/src/test/java/brooklyn/location/jclouds/JcloudsLocationResolverTest.java
@@ -76,7 +76,7 @@ public class JcloudsLocationResolverTest {
         brooklynProperties.put("brooklyn.location.jclouds.aws-ec2.privateKeyData", "myprivateKeyData");
         brooklynProperties.put("brooklyn.location.jclouds.aws-ec2.publicKeyData", "myPublicKeyData");
         brooklynProperties.put("brooklyn.location.jclouds.aws-ec2.privateKeyPassphrase", "myprivateKeyPassphrase");
-        Map<String, Object> conf = resolve("jclouds:aws-ec2").getAllConfig(true);
+        Map<String, Object> conf = resolve("jclouds:aws-ec2").config().getBag().getAllConfig();
 
         assertEquals(conf.get("privateKeyFile"), "myprivatekeyfile");
         assertEquals(conf.get("publicKeyFile"), "mypublickeyfile");
@@ -92,7 +92,7 @@ public class JcloudsLocationResolverTest {
         brooklynProperties.put("brooklyn.location.jclouds.privateKeyData", "myprivateKeyData");
         brooklynProperties.put("brooklyn.location.jclouds.publicKeyData", "myPublicKeyData");
         brooklynProperties.put("brooklyn.location.jclouds.privateKeyPassphrase", "myprivateKeyPassphrase");
-        Map<String, Object> conf = resolve("jclouds:aws-ec2").getAllConfig(true);
+        Map<String, Object> conf = resolve("jclouds:aws-ec2").config().getBag().getAllConfig();
 
         assertEquals(conf.get("privateKeyFile"), "myprivatekeyfile");
         assertEquals(conf.get("publicKeyFile"), "mypublickeyfile");
@@ -109,7 +109,7 @@ public class JcloudsLocationResolverTest {
         brooklynProperties.put("brooklyn.location.jclouds.public-key-data", "myPublicKeyData");
         brooklynProperties.put("brooklyn.location.jclouds.private-key-passphrase", "myprivateKeyPassphrase");
         brooklynProperties.put("brooklyn.location.jclouds.image-id", "myimageid");
-        Map<String, Object> conf = resolve("jclouds:aws-ec2").getAllConfig(true);
+        Map<String, Object> conf = resolve("jclouds:aws-ec2").config().getBag().getAllConfig();
 
         assertEquals(conf.get("privateKeyFile"), "myprivatekeyfile");
         assertEquals(conf.get("publicKeyFile"), "mypublickeyfile");
@@ -148,7 +148,7 @@ public class JcloudsLocationResolverTest {
                 "privateKeyPassphrase-inProviderSpecific");
         brooklynProperties.put("brooklyn.location.jclouds.private-key-passphrase", "privateKeyPassphrase-inJcloudsGeneric");
 
-        Map<String, Object> conf = resolve("named:myaws-ec2").getAllConfig(true);
+        Map<String, Object> conf = resolve("named:myaws-ec2").config().getBag().getAllConfig();
 
         assertEquals(conf.get("privateKeyFile"), "privateKeyFile-inNamed");
         assertEquals(conf.get("publicKeyFile"), "publicKeyFile-inProviderSpecific");
@@ -189,7 +189,7 @@ public class JcloudsLocationResolverTest {
         brooklynProperties.put("brooklyn.location.jclouds.openstack-nova.endpoint", "myendpoint");
         JcloudsLocation loc = resolve("jclouds:openstack-nova");
         // just checking
-        assertEquals(loc.getLocalConfigBag().getStringKey("endpoint"), "myendpoint");
+        assertEquals(loc.config().getLocalBag().getStringKey("endpoint"), "myendpoint");
         assertEquals(loc.getConfig(CloudLocationConfig.CLOUD_ENDPOINT), "myendpoint");
         // this is the one we really care about!:
         assertEquals(loc.getEndpoint(), "myendpoint");
@@ -199,14 +199,14 @@ public class JcloudsLocationResolverTest {
     public void testJcloudsLegacyRandomProperty() {
         brooklynProperties.put("brooklyn.location.jclouds.openstack-nova.foo", "bar");
         JcloudsLocation loc = resolve("jclouds:openstack-nova");
-        assertEquals(loc.getLocalConfigBag().getStringKey("foo"), "bar");
+        assertEquals(loc.config().getLocalBag().getStringKey("foo"), "bar");
     }
 
     @Test
     public void testJcloudsRandomProperty() {
         brooklynProperties.put("brooklyn.location.jclouds.openstack-nova.foo", "bar");
         JcloudsLocation loc = resolve("jclouds:openstack-nova");
-        assertEquals(loc.getLocalConfigBag().getStringKey("foo"), "bar");
+        assertEquals(loc.config().getLocalBag().getStringKey("foo"), "bar");
     }
 
     @Test
@@ -275,9 +275,9 @@ public class JcloudsLocationResolverTest {
         
         JcloudsLocation l = resolve("named:bar");
         assertJcloudsEquals(l, "softlayer", "138124");
-        assertEquals(l.getAllConfig(false).get("prop3"), "3");
-        assertEquals(l.getAllConfig(false).get("prop2"), "2");
-        assertEquals(l.getAllConfig(false).get("prop1"), "1");
+        assertEquals(l.config().getLocalBag().getStringKey("prop3"), "3");
+        assertEquals(l.config().getLocalBag().getStringKey("prop2"), "2");
+        assertEquals(l.config().getLocalBag().getStringKey("prop1"), "1");
     }
 
 

http://git-wip-us.apache.org/repos/asf/incubator-brooklyn/blob/73c49852/locations/jclouds/src/test/java/brooklyn/location/jclouds/LiveTestEntity.java
----------------------------------------------------------------------
diff --git a/locations/jclouds/src/test/java/brooklyn/location/jclouds/LiveTestEntity.java b/locations/jclouds/src/test/java/brooklyn/location/jclouds/LiveTestEntity.java
index feb4aca..837e7a6 100644
--- a/locations/jclouds/src/test/java/brooklyn/location/jclouds/LiveTestEntity.java
+++ b/locations/jclouds/src/test/java/brooklyn/location/jclouds/LiveTestEntity.java
@@ -28,6 +28,7 @@ import brooklyn.entity.proxying.ImplementedBy;
 import brooklyn.location.Location;
 import brooklyn.location.MachineProvisioningLocation;
 import brooklyn.location.NoMachinesAvailableException;
+import brooklyn.location.basic.LocationInternal;
 import brooklyn.test.entity.TestEntity;
 import brooklyn.test.entity.TestEntityImpl;
 
@@ -57,7 +58,7 @@ public interface LiveTestEntity extends TestEntity {
             addLocations(locs);
             provisioningLocation = (JcloudsLocation) Iterables.find(locs, Predicates.instanceOf(JcloudsLocation.class));
             try {
-                obtainedLocation = provisioningLocation.obtain(provisioningLocation.getAllConfig(true));
+                obtainedLocation = provisioningLocation.obtain(((LocationInternal)provisioningLocation).config().getBag().getAllConfig());
             } catch (NoMachinesAvailableException e) {
                 throw Throwables.propagate(e);
             }

http://git-wip-us.apache.org/repos/asf/incubator-brooklyn/blob/73c49852/locations/jclouds/src/test/java/brooklyn/location/jclouds/RebindJcloudsLocationLiveTest.java
----------------------------------------------------------------------
diff --git a/locations/jclouds/src/test/java/brooklyn/location/jclouds/RebindJcloudsLocationLiveTest.java b/locations/jclouds/src/test/java/brooklyn/location/jclouds/RebindJcloudsLocationLiveTest.java
index 14aa1fa..da27ab2 100644
--- a/locations/jclouds/src/test/java/brooklyn/location/jclouds/RebindJcloudsLocationLiveTest.java
+++ b/locations/jclouds/src/test/java/brooklyn/location/jclouds/RebindJcloudsLocationLiveTest.java
@@ -102,7 +102,7 @@ public class RebindJcloudsLocationLiveTest extends AbstractJcloudsLiveTest {
         assertOsDetailEquals(actual.getOsDetails(), expected.getOsDetails());
         assertEquals(actual.getSshHostAndPort(), expected.getSshHostAndPort());
         assertEquals(actual.getPrivateAddress(), expected.getPrivateAddress());
-        assertConfigBagEquals(actual.getAllConfigBag(), expected.getAllConfigBag(), errmsg);
+        assertConfigBagEquals(actual.config().getBag(), expected.config().getBag(), errmsg);
     }
 
     private void assertOsDetailEquals(OsDetails actual, OsDetails expected) {
@@ -125,7 +125,7 @@ public class RebindJcloudsLocationLiveTest extends AbstractJcloudsLiveTest {
         assertEquals(actual.getIdentity(), expected.getIdentity(), errmsg);
         assertEquals(actual.getCredential(), expected.getCredential(), errmsg);
         assertEquals(actual.getHostGeoInfo(), expected.getHostGeoInfo(), errmsg);
-        assertConfigBagEquals(actual.getAllConfigBag(), expected.getAllConfigBag(), errmsg);
+        assertConfigBagEquals(actual.config().getBag(), expected.config().getBag(), errmsg);
     }
 
     private void assertConfigBagEquals(ConfigBag actual, ConfigBag expected, String errmsg) {

http://git-wip-us.apache.org/repos/asf/incubator-brooklyn/blob/73c49852/locations/jclouds/src/test/java/brooklyn/location/jclouds/RebindJcloudsLocationTest.java
----------------------------------------------------------------------
diff --git a/locations/jclouds/src/test/java/brooklyn/location/jclouds/RebindJcloudsLocationTest.java b/locations/jclouds/src/test/java/brooklyn/location/jclouds/RebindJcloudsLocationTest.java
index e779ddb..7ce0ad3 100644
--- a/locations/jclouds/src/test/java/brooklyn/location/jclouds/RebindJcloudsLocationTest.java
+++ b/locations/jclouds/src/test/java/brooklyn/location/jclouds/RebindJcloudsLocationTest.java
@@ -52,7 +52,7 @@ public class RebindJcloudsLocationTest extends RebindTestFixtureWithApp {
         
         JcloudsLocation newLoc = (JcloudsLocation) newManagementContext.getLocationManager().getLocation(origLoc.getId());
         
-        ConfigBag newLocConfig = newLoc.getAllConfigBag();
+        ConfigBag newLocConfig = newLoc.config().getBag();
         ConfigBag config = ConfigBag.newInstanceCopying(newLocConfig);
         
         assertNull(newLocConfig.getStringKey(("id")));

http://git-wip-us.apache.org/repos/asf/incubator-brooklyn/blob/73c49852/policy/src/main/java/brooklyn/policy/autoscaling/AutoScalerPolicy.java
----------------------------------------------------------------------
diff --git a/policy/src/main/java/brooklyn/policy/autoscaling/AutoScalerPolicy.java b/policy/src/main/java/brooklyn/policy/autoscaling/AutoScalerPolicy.java
index a5f0ded..835e9b7 100644
--- a/policy/src/main/java/brooklyn/policy/autoscaling/AutoScalerPolicy.java
+++ b/policy/src/main/java/brooklyn/policy/autoscaling/AutoScalerPolicy.java
@@ -435,12 +435,12 @@ public class AutoScalerPolicy extends AbstractPolicy {
 
     public void setMetricLowerBound(Number val) {
         if (LOG.isInfoEnabled()) LOG.info("{} changing metricLowerBound from {} to {}", new Object[] {this, getMetricLowerBound(), val});
-        setConfig(METRIC_LOWER_BOUND, checkNotNull(val));
+        config().set(METRIC_LOWER_BOUND, checkNotNull(val));
     }
     
     public void setMetricUpperBound(Number val) {
         if (LOG.isInfoEnabled()) LOG.info("{} changing metricUpperBound from {} to {}", new Object[] {this, getMetricUpperBound(), val});
-        setConfig(METRIC_UPPER_BOUND, checkNotNull(val));
+        config().set(METRIC_UPPER_BOUND, checkNotNull(val));
     }
     
     /**
@@ -452,7 +452,7 @@ public class AutoScalerPolicy extends AbstractPolicy {
 
     public void setMinPeriodBetweenExecs(Duration val) {
         if (LOG.isInfoEnabled()) LOG.info("{} changing minPeriodBetweenExecs from {} to {}", new Object[] {this, getMinPeriodBetweenExecs(), val});
-        setConfig(MIN_PERIOD_BETWEEN_EXECS, val);
+        config().set(MIN_PERIOD_BETWEEN_EXECS, val);
     }
 
     /**
@@ -464,7 +464,7 @@ public class AutoScalerPolicy extends AbstractPolicy {
     
     public void setResizeUpStabilizationDelay(Duration val) {
         if (LOG.isInfoEnabled()) LOG.info("{} changing resizeUpStabilizationDelay from {} to {}", new Object[] {this, getResizeUpStabilizationDelay(), val});
-        setConfig(RESIZE_UP_STABILIZATION_DELAY, val);
+        config().set(RESIZE_UP_STABILIZATION_DELAY, val);
     }
     
     /**
@@ -476,17 +476,17 @@ public class AutoScalerPolicy extends AbstractPolicy {
     
     public void setResizeDownStabilizationDelay(Duration val) {
         if (LOG.isInfoEnabled()) LOG.info("{} changing resizeDownStabilizationDelay from {} to {}", new Object[] {this, getResizeDownStabilizationDelay(), val});
-        setConfig(RESIZE_DOWN_STABILIZATION_DELAY, val);
+        config().set(RESIZE_DOWN_STABILIZATION_DELAY, val);
     }
     
     public void setMinPoolSize(int val) {
         if (LOG.isInfoEnabled()) LOG.info("{} changing minPoolSize from {} to {}", new Object[] {this, getMinPoolSize(), val});
-        setConfig(MIN_POOL_SIZE, val);
+        config().set(MIN_POOL_SIZE, val);
     }
     
     public void setMaxPoolSize(int val) {
         if (LOG.isInfoEnabled()) LOG.info("{} changing maxPoolSize from {} to {}", new Object[] {this, getMaxPoolSize(), val});
-        setConfig(MAX_POOL_SIZE, val);
+        config().set(MAX_POOL_SIZE, val);
     }
     
     private AttributeSensor<? extends Number> getMetric() {

http://git-wip-us.apache.org/repos/asf/incubator-brooklyn/blob/73c49852/policy/src/test/java/brooklyn/policy/autoscaling/AutoScalerPolicyReconfigurationTest.java
----------------------------------------------------------------------
diff --git a/policy/src/test/java/brooklyn/policy/autoscaling/AutoScalerPolicyReconfigurationTest.java b/policy/src/test/java/brooklyn/policy/autoscaling/AutoScalerPolicyReconfigurationTest.java
index 6591977..e801803 100644
--- a/policy/src/test/java/brooklyn/policy/autoscaling/AutoScalerPolicyReconfigurationTest.java
+++ b/policy/src/test/java/brooklyn/policy/autoscaling/AutoScalerPolicyReconfigurationTest.java
@@ -65,7 +65,7 @@ public class AutoScalerPolicyReconfigurationTest {
                 .build();
         tc.addPolicy(policy);
 
-        policy.setConfig(AutoScalerPolicy.MIN_POOL_SIZE, 3);
+        policy.config().set(AutoScalerPolicy.MIN_POOL_SIZE, 3);
         
         Asserts.succeedsEventually(ImmutableMap.of("timeout", TIMEOUT_MS), currentSizeAsserter(tc, 3));
     }
@@ -85,7 +85,7 @@ public class AutoScalerPolicyReconfigurationTest {
         Asserts.succeedsEventually(ImmutableMap.of("timeout", TIMEOUT_MS), currentSizeAsserter(tc, 2));
 
         // Decreases to new min-size
-        policy.setConfig(AutoScalerPolicy.MIN_POOL_SIZE, 1);
+        policy.config().set(AutoScalerPolicy.MIN_POOL_SIZE, 1);
         tc.setAttribute(MY_ATTRIBUTE, 0);
         Asserts.succeedsEventually(ImmutableMap.of("timeout", TIMEOUT_MS), currentSizeAsserter(tc, 1));
     }
@@ -100,7 +100,7 @@ public class AutoScalerPolicyReconfigurationTest {
                 .build();
         tc.addPolicy(policy);
 
-        policy.setConfig(AutoScalerPolicy.MAX_POOL_SIZE, 4);
+        policy.config().set(AutoScalerPolicy.MAX_POOL_SIZE, 4);
         
         Asserts.succeedsEventually(ImmutableMap.of("timeout", TIMEOUT_MS), currentSizeAsserter(tc, 4));
     }
@@ -119,7 +119,7 @@ public class AutoScalerPolicyReconfigurationTest {
         tc.setAttribute(MY_ATTRIBUTE, 200);
         Asserts.succeedsEventually(ImmutableMap.of("timeout", TIMEOUT_MS), currentSizeAsserter(tc, 6));
         
-        policy.setConfig(AutoScalerPolicy.MAX_POOL_SIZE, 8);
+        policy.config().set(AutoScalerPolicy.MAX_POOL_SIZE, 8);
         
         // Increases to max-size only
         tc.setAttribute(MY_ATTRIBUTE, 100000);
@@ -135,7 +135,7 @@ public class AutoScalerPolicyReconfigurationTest {
                 .build();
         tc.addPolicy(policy);
 
-        policy.setConfig(AutoScalerPolicy.METRIC_LOWER_BOUND, 51);
+        policy.config().set(AutoScalerPolicy.METRIC_LOWER_BOUND, 51);
 
         tc.setAttribute(MY_ATTRIBUTE, 50);
         Asserts.succeedsEventually(ImmutableMap.of("timeout", TIMEOUT_MS), currentSizeAsserter(tc, 1));
@@ -150,7 +150,7 @@ public class AutoScalerPolicyReconfigurationTest {
                 .build();
         tc.addPolicy(policy);
 
-        policy.setConfig(AutoScalerPolicy.METRIC_UPPER_BOUND, 99);
+        policy.config().set(AutoScalerPolicy.METRIC_UPPER_BOUND, 99);
 
         tc.setAttribute(MY_ATTRIBUTE, 100);
         Asserts.succeedsEventually(ImmutableMap.of("timeout", TIMEOUT_MS), currentSizeAsserter(tc, 2));
@@ -166,7 +166,7 @@ public class AutoScalerPolicyReconfigurationTest {
                 .build();
         tc.addPolicy(policy);
 
-        policy.setConfig(AutoScalerPolicy.RESIZE_UP_STABILIZATION_DELAY, Duration.ZERO);
+        policy.config().set(AutoScalerPolicy.RESIZE_UP_STABILIZATION_DELAY, Duration.ZERO);
 
         tc.setAttribute(MY_ATTRIBUTE, 101);
         Asserts.succeedsEventually(ImmutableMap.of("timeout", TIMEOUT_MS), currentSizeAsserter(tc, 2));
@@ -182,7 +182,7 @@ public class AutoScalerPolicyReconfigurationTest {
                 .build();
         tc.addPolicy(policy);
 
-        policy.setConfig(AutoScalerPolicy.RESIZE_DOWN_STABILIZATION_DELAY, Duration.ZERO);
+        policy.config().set(AutoScalerPolicy.RESIZE_DOWN_STABILIZATION_DELAY, Duration.ZERO);
 
         tc.setAttribute(MY_ATTRIBUTE, 1);
         Asserts.succeedsEventually(ImmutableMap.of("timeout", TIMEOUT_MS), currentSizeAsserter(tc, 1));

http://git-wip-us.apache.org/repos/asf/incubator-brooklyn/blob/73c49852/software/base/src/main/java/brooklyn/entity/software/MachineLifecycleEffectorTasks.java
----------------------------------------------------------------------
diff --git a/software/base/src/main/java/brooklyn/entity/software/MachineLifecycleEffectorTasks.java b/software/base/src/main/java/brooklyn/entity/software/MachineLifecycleEffectorTasks.java
index 378e662..a4b3f5d 100644
--- a/software/base/src/main/java/brooklyn/entity/software/MachineLifecycleEffectorTasks.java
+++ b/software/base/src/main/java/brooklyn/entity/software/MachineLifecycleEffectorTasks.java
@@ -292,7 +292,7 @@ public abstract class MachineLifecycleEffectorTasks {
                         if (log.isDebugEnabled())
                             log.debug("While starting {}, obtained new location instance {}", entity(),
                                     (machine instanceof SshMachineLocation ?
-                                            machine+", details "+((SshMachineLocation)machine).getUser()+":"+Entities.sanitize(((SshMachineLocation)machine).getLocalConfigBag())
+                                            machine+", details "+((SshMachineLocation)machine).getUser()+":"+Entities.sanitize(((SshMachineLocation)machine).config().getLocalBag())
                                             : machine));
                         return machine;
                     }

http://git-wip-us.apache.org/repos/asf/incubator-brooklyn/blob/73c49852/software/base/src/main/java/brooklyn/entity/software/SshEffectorTasks.java
----------------------------------------------------------------------
diff --git a/software/base/src/main/java/brooklyn/entity/software/SshEffectorTasks.java b/software/base/src/main/java/brooklyn/entity/software/SshEffectorTasks.java
index c2b0bb9..7d1474f 100644
--- a/software/base/src/main/java/brooklyn/entity/software/SshEffectorTasks.java
+++ b/software/base/src/main/java/brooklyn/entity/software/SshEffectorTasks.java
@@ -290,7 +290,7 @@ public class SshEffectorTasks {
         allConfig.putAll(globalConfig.getAllConfig());
         
         if (optionalLocation!=null)
-            allConfig.putAll(((LocationInternal)optionalLocation).getAllConfigBag());
+            allConfig.putAll(((LocationInternal)optionalLocation).config().getBag());
         
         allConfig.putAll(((EntityInternal)entity).getAllConfig());
         

http://git-wip-us.apache.org/repos/asf/incubator-brooklyn/blob/73c49852/software/webapp/src/test/java/brooklyn/entity/dns/AbstractGeoDnsServiceTest.java
----------------------------------------------------------------------
diff --git a/software/webapp/src/test/java/brooklyn/entity/dns/AbstractGeoDnsServiceTest.java b/software/webapp/src/test/java/brooklyn/entity/dns/AbstractGeoDnsServiceTest.java
index 8e453ba..0984071 100644
--- a/software/webapp/src/test/java/brooklyn/entity/dns/AbstractGeoDnsServiceTest.java
+++ b/software/webapp/src/test/java/brooklyn/entity/dns/AbstractGeoDnsServiceTest.java
@@ -221,7 +221,7 @@ public class AbstractGeoDnsServiceTest {
             SshMachineLocation l = Machines.findUniqueSshMachineLocation(e.getLocations()).get();
             if (includeAddress)
                 ((EntityInternal)e).setAttribute(Attributes.ADDRESS, l.getAddress().getHostAddress());
-            String h = (String) l.getAllConfigBag().getStringKey("hostname");
+            String h = (String) l.config().getBag().getStringKey("hostname");
             if (h==null) h = l.getAddress().getHostName();
             if (includeHostname)
                 ((EntityInternal)e).setAttribute(Attributes.HOSTNAME, h);

http://git-wip-us.apache.org/repos/asf/incubator-brooklyn/blob/73c49852/usage/camp/src/test/java/io/brooklyn/camp/brooklyn/LocationsYamlTest.java
----------------------------------------------------------------------
diff --git a/usage/camp/src/test/java/io/brooklyn/camp/brooklyn/LocationsYamlTest.java b/usage/camp/src/test/java/io/brooklyn/camp/brooklyn/LocationsYamlTest.java
index dce5d6f..d22b73e 100644
--- a/usage/camp/src/test/java/io/brooklyn/camp/brooklyn/LocationsYamlTest.java
+++ b/usage/camp/src/test/java/io/brooklyn/camp/brooklyn/LocationsYamlTest.java
@@ -113,7 +113,7 @@ public class LocationsYamlTest extends AbstractYamlTest {
         Entity app = createStartWaitAndLogApplication(new StringReader(yaml));
         LocalhostMachineProvisioningLocation loc = (LocalhostMachineProvisioningLocation) Iterables.getOnlyElement(app.getLocations());
         assertEquals(loc.getDisplayName(), "myname");
-        assertEquals(loc.getAllConfig(false).get("myconfkey"), "myconfval");
+        assertEquals(loc.config().getLocalBag().getStringKey("myconfkey"), "myconfval");
     }
 
     @Test
@@ -135,9 +135,9 @@ public class LocationsYamlTest extends AbstractYamlTest {
         LocalhostMachineProvisioningLocation loc1 = (LocalhostMachineProvisioningLocation) locs.get(0);
         LocalhostMachineProvisioningLocation loc2 = (LocalhostMachineProvisioningLocation) locs.get(1);
         assertEquals(loc1.getDisplayName(), "myname1");
-        assertEquals(loc1.getAllConfig(false).get("myconfkey"), "myconfval1");
+        assertEquals(loc1.config().getLocalBag().getStringKey("myconfkey"), "myconfval1");
         assertEquals(loc2.getDisplayName(), "myname2");
-        assertEquals(loc2.getAllConfig(false).get("myconfkey"), "myconfval2");
+        assertEquals(loc2.config().getLocalBag().getStringKey("myconfkey"), "myconfval2");
     }
 
     // TODO Fails because PlanInterpretationContext constructor throws NPE on location's value (using ImmutableMap).