You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@brooklyn.apache.org by dr...@apache.org on 2017/06/12 14:13:45 UTC

[1/3] brooklyn-server git commit: Fix BrooklynYamlTypeInstantiatorTest.testLoadPolicySpecWithBrooklynConfig

Repository: brooklyn-server
Updated Branches:
  refs/heads/master 68babc6f2 -> ed25e5e39


Fix BrooklynYamlTypeInstantiatorTest.testLoadPolicySpecWithBrooklynConfig

Previously it relied on ServiceRestarter to have a constructor that 
took a Map or ConfigBag. Now we check if the type implements
Configurable, to handle no-arg constructors as well.

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

Branch: refs/heads/master
Commit: 260c80f95e6a62c5526d81b1f0db0cc3352d3434
Parents: 0fac0d6
Author: Aled Sage <al...@gmail.com>
Authored: Sun Jun 11 15:52:29 2017 +0100
Committer: Aled Sage <al...@gmail.com>
Committed: Sun Jun 11 16:06:46 2017 +0100

----------------------------------------------------------------------
 .../brooklyn/spi/creation/BrooklynYamlTypeInstantiator.java | 9 +++++++++
 1 file changed, 9 insertions(+)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/brooklyn-server/blob/260c80f9/camp/camp-brooklyn/src/main/java/org/apache/brooklyn/camp/brooklyn/spi/creation/BrooklynYamlTypeInstantiator.java
----------------------------------------------------------------------
diff --git a/camp/camp-brooklyn/src/main/java/org/apache/brooklyn/camp/brooklyn/spi/creation/BrooklynYamlTypeInstantiator.java b/camp/camp-brooklyn/src/main/java/org/apache/brooklyn/camp/brooklyn/spi/creation/BrooklynYamlTypeInstantiator.java
index 5852139..aa1dfe9 100644
--- a/camp/camp-brooklyn/src/main/java/org/apache/brooklyn/camp/brooklyn/spi/creation/BrooklynYamlTypeInstantiator.java
+++ b/camp/camp-brooklyn/src/main/java/org/apache/brooklyn/camp/brooklyn/spi/creation/BrooklynYamlTypeInstantiator.java
@@ -24,7 +24,9 @@ import javax.annotation.Nonnull;
 import javax.annotation.Nullable;
 
 import org.apache.brooklyn.api.mgmt.classloading.BrooklynClassLoadingContext;
+import org.apache.brooklyn.api.objs.Configurable;
 import org.apache.brooklyn.camp.brooklyn.BrooklynCampReservedKeys;
+import org.apache.brooklyn.core.objs.BrooklynObjectInternal.ConfigurationSupportInternal;
 import org.apache.brooklyn.util.collections.MutableMap;
 import org.apache.brooklyn.util.core.config.ConfigBag;
 import org.apache.brooklyn.util.exceptions.Exceptions;
@@ -141,6 +143,13 @@ public abstract class BrooklynYamlTypeInstantiator {
                 result = Reflections.invokeConstructorFromArgs(type);
                 if (result.isPresent()) 
                     return result.get();
+            } else if (Configurable.class.isAssignableFrom(type)) {
+                result = Reflections.invokeConstructorFromArgs(type);
+                if (result.isPresent()) {
+                    ConfigurationSupportInternal configSupport = (ConfigurationSupportInternal) ((Configurable)result.get()).config();
+                    configSupport.putAll(cfg);
+                    return result.get();
+                }
             }
             
             throw new IllegalStateException("No known mechanism for constructing type "+type+" in "+factory.contextForLogging);


[2/3] brooklyn-server git commit: Use PolicySpec instead of policy constructor

Posted by dr...@apache.org.
Use PolicySpec instead of policy constructor


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

Branch: refs/heads/master
Commit: 0fac0d6c99c560bacb3c1a3dac6316be66b412f9
Parents: 78f41f8
Author: Aled Sage <al...@gmail.com>
Authored: Sun Jun 11 11:28:37 2017 +0100
Committer: Aled Sage <al...@gmail.com>
Committed: Sun Jun 11 16:06:46 2017 +0100

----------------------------------------------------------------------
 .../group/AbstractMembershipTrackingPolicy.java |  4 -
 .../core/entity/PolicyRegistrationTest.java     | 39 ++++++----
 .../core/policy/basic/BasicPolicyTest.java      | 20 +++++
 .../core/policy/basic/PolicyConfigTest.java     | 68 +++++++++--------
 .../policy/basic/PolicySubscriptionTest.java    |  9 ++-
 .../core/policy/basic/PolicyTypeTest.java       | 16 ++--
 .../brooklyn/core/test/policy/TestPolicy.java   |  5 --
 .../group/MembershipTrackingPolicyTest.java     | 14 +---
 .../policy/autoscaling/AutoScalerPolicy.java    | 11 ++-
 .../brooklyn/policy/ha/ServiceReplacer.java     | 20 +----
 .../brooklyn/policy/ha/ServiceRestarter.java    | 23 +-----
 .../autoscaling/AutoScalerPolicyMetricTest.java | 79 +++++++++++++-------
 .../AutoScalerPolicyReconfigurationTest.java    | 61 ++++++++-------
 .../autoscaling/AutoScalerPolicyTest.java       | 52 +++++--------
 .../brooklyn/policy/ha/ServiceReplacerTest.java | 14 ++--
 .../policy/ha/ServiceRestarterTest.java         | 15 ++--
 .../testing/mocks/RestMockSimplePolicy.java     |  7 --
 .../util/BrooklynRestResourceUtilsTest.java     |  6 +-
 18 files changed, 230 insertions(+), 233 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/brooklyn-server/blob/0fac0d6c/core/src/main/java/org/apache/brooklyn/entity/group/AbstractMembershipTrackingPolicy.java
----------------------------------------------------------------------
diff --git a/core/src/main/java/org/apache/brooklyn/entity/group/AbstractMembershipTrackingPolicy.java b/core/src/main/java/org/apache/brooklyn/entity/group/AbstractMembershipTrackingPolicy.java
index 021c336..d60ec84 100644
--- a/core/src/main/java/org/apache/brooklyn/entity/group/AbstractMembershipTrackingPolicy.java
+++ b/core/src/main/java/org/apache/brooklyn/entity/group/AbstractMembershipTrackingPolicy.java
@@ -68,10 +68,6 @@ public abstract class AbstractMembershipTrackingPolicy extends AbstractPolicy {
 
     private ConcurrentMap<String,Map<Sensor<Object>, Object>> entitySensorCache = new ConcurrentHashMap<String, Map<Sensor<Object>, Object>>();
     
-    public AbstractMembershipTrackingPolicy(Map<?,?> flags) {
-        super(flags);
-    }
-    
     public AbstractMembershipTrackingPolicy() {
         super();
     }

http://git-wip-us.apache.org/repos/asf/brooklyn-server/blob/0fac0d6c/core/src/test/java/org/apache/brooklyn/core/entity/PolicyRegistrationTest.java
----------------------------------------------------------------------
diff --git a/core/src/test/java/org/apache/brooklyn/core/entity/PolicyRegistrationTest.java b/core/src/test/java/org/apache/brooklyn/core/entity/PolicyRegistrationTest.java
index a46335b..59d126f 100644
--- a/core/src/test/java/org/apache/brooklyn/core/entity/PolicyRegistrationTest.java
+++ b/core/src/test/java/org/apache/brooklyn/core/entity/PolicyRegistrationTest.java
@@ -32,6 +32,7 @@ import org.apache.brooklyn.api.policy.PolicySpec;
 import org.apache.brooklyn.api.sensor.EnricherSpec;
 import org.apache.brooklyn.api.sensor.SensorEvent;
 import org.apache.brooklyn.api.sensor.SensorEventListener;
+import org.apache.brooklyn.core.enricher.AbstractEnricher;
 import org.apache.brooklyn.core.entity.lifecycle.PolicyDescriptor;
 import org.apache.brooklyn.core.policy.AbstractPolicy;
 import org.apache.brooklyn.core.test.BrooklynAppUnitTestSupport;
@@ -51,8 +52,6 @@ public class PolicyRegistrationTest extends BrooklynAppUnitTestSupport {
     private static final int TIMEOUT_MS = 10*1000;
     
     private TestEntity entity;
-    private Policy policy1;
-    private Policy policy2;
 
     private List<PolicyDescriptor> added;
     private List<PolicyDescriptor> removed;
@@ -61,9 +60,7 @@ public class PolicyRegistrationTest extends BrooklynAppUnitTestSupport {
     @Override
     public void setUp() throws Exception {
         super.setUp();
-        entity = app.createAndManageChild(EntitySpec.create(TestEntity.class));
-        policy1 = new AbstractPolicy() {};
-        policy2 = new AbstractPolicy() {};
+        entity = app.createAndManageChild(EntitySpec.create(TestEntity.class).impl(TestEntityNoEnrichersImpl.class));
         
         added = Lists.newCopyOnWriteArrayList();
         removed = Lists.newCopyOnWriteArrayList();
@@ -84,14 +81,21 @@ public class PolicyRegistrationTest extends BrooklynAppUnitTestSupport {
     }
 
     @Test(expectedExceptions = { UnsupportedOperationException.class })
+    @SuppressWarnings("deprecation")
     public void testGetPoliciesReturnsImmutableCollection() {
-        entity.getPolicies().add(policy1);
+        entity.getPolicies().add(new MyPolicy());
+        fail();
+    }
+
+    @Test(expectedExceptions = { UnsupportedOperationException.class })
+    public void testPoliciesAsListReturnsImmutableCollection() {
+        entity.policies().asList().add(new MyPolicy());
         fail();
     }
 
     @Test(expectedExceptions = { UnsupportedOperationException.class })
     public void testPoliciesIteratorReturnsImmutable() {
-        entity.policies().add(policy1);
+        entity.policies().add(PolicySpec.create(MyPolicy.class));
         Iterator<Policy> iterator = entity.policies().iterator();
         iterator.next();
         iterator.remove();
@@ -100,11 +104,11 @@ public class PolicyRegistrationTest extends BrooklynAppUnitTestSupport {
 
     @Test
     public void testAddAndRemovePolicies() {
-        entity.policies().add(policy1);
+        MyPolicy policy1 = entity.policies().add(PolicySpec.create(MyPolicy.class));
         assertEquals(ImmutableList.copyOf(entity.policies()), ImmutableList.of(policy1));
         assertEqualsEventually(added, ImmutableList.of(new PolicyDescriptor(policy1)));
         
-        entity.policies().add(policy2);
+        MyPolicy policy2 = entity.policies().add(PolicySpec.create(MyPolicy.class));
         assertEquals(ImmutableList.copyOf(entity.policies()), ImmutableList.of(policy1, policy2));
         assertEqualsEventually(added, ImmutableList.of(new PolicyDescriptor(policy1), new PolicyDescriptor(policy2)));
         
@@ -119,7 +123,7 @@ public class PolicyRegistrationTest extends BrooklynAppUnitTestSupport {
 
     @Test
     public void testAddPolicySpec() {
-        EntitySpecTest.MyPolicy policy = entity.policies().add(PolicySpec.create(EntitySpecTest.MyPolicy.class));
+        MyPolicy policy = entity.policies().add(PolicySpec.create(MyPolicy.class));
         assertNotNull(policy);
         assertEquals(ImmutableList.copyOf(entity.policies()), ImmutableList.of(policy));
         assertEqualsEventually(added, ImmutableList.of(new PolicyDescriptor(policy)));
@@ -127,16 +131,15 @@ public class PolicyRegistrationTest extends BrooklynAppUnitTestSupport {
     
     @Test
     public void testAddEnricherSpec() {
-        TestEntity entity2 = app.createAndManageChild(EntitySpec.create(TestEntity.class, TestEntityNoEnrichersImpl.class));
-        EntitySpecTest.MyEnricher enricher = entity2.enrichers().add(EnricherSpec.create(EntitySpecTest.MyEnricher.class));
+        MyEnricher enricher = entity.enrichers().add(EnricherSpec.create(MyEnricher.class));
         assertNotNull(enricher);
-        assertEquals(ImmutableList.copyOf(entity2.enrichers()), ImmutableList.of(enricher));
+        assertEquals(ImmutableList.copyOf(entity.enrichers()), ImmutableList.of(enricher));
     }
 
     @Test
     public void testRemoveAllPolicies() {
-        entity.policies().add(policy1);
-        entity.policies().add(policy2);
+        MyPolicy policy1 = entity.policies().add(PolicySpec.create(MyPolicy.class));
+        MyPolicy policy2 = entity.policies().add(PolicySpec.create(MyPolicy.class));
         entity.policies().removeAllPolicies();
         
         assertEquals(ImmutableList.copyOf(entity.policies()), ImmutableList.of());
@@ -158,4 +161,10 @@ public class PolicyRegistrationTest extends BrooklynAppUnitTestSupport {
                     assertEquals(actual.size(), expected.size(), "actual="+actual);
                 }});
     }
+    
+    public static class MyPolicy extends AbstractPolicy {
+    }
+    
+    public static class MyEnricher extends AbstractEnricher {
+    }
 }

http://git-wip-us.apache.org/repos/asf/brooklyn-server/blob/0fac0d6c/core/src/test/java/org/apache/brooklyn/core/policy/basic/BasicPolicyTest.java
----------------------------------------------------------------------
diff --git a/core/src/test/java/org/apache/brooklyn/core/policy/basic/BasicPolicyTest.java b/core/src/test/java/org/apache/brooklyn/core/policy/basic/BasicPolicyTest.java
index db97c10..020b274 100644
--- a/core/src/test/java/org/apache/brooklyn/core/policy/basic/BasicPolicyTest.java
+++ b/core/src/test/java/org/apache/brooklyn/core/policy/basic/BasicPolicyTest.java
@@ -19,18 +19,23 @@
 package org.apache.brooklyn.core.policy.basic;
 
 import static org.testng.Assert.assertEquals;
+import static org.testng.Assert.assertTrue;
 
 import java.util.Map;
 
 import org.apache.brooklyn.api.policy.PolicySpec;
 import org.apache.brooklyn.config.ConfigKey;
 import org.apache.brooklyn.core.config.BasicConfigKey;
+import org.apache.brooklyn.core.config.ConfigKeys;
 import org.apache.brooklyn.core.policy.AbstractPolicy;
 import org.apache.brooklyn.core.test.BrooklynAppUnitTestSupport;
 import org.apache.brooklyn.util.collections.MutableSet;
 import org.apache.brooklyn.util.core.flags.SetFromFlag;
 import org.testng.annotations.Test;
 
+import com.google.common.base.Predicates;
+import com.google.common.collect.Iterables;
+
 /**
  * Test that policy can be created and accessed, by construction and by spec
  */
@@ -44,6 +49,9 @@ public class BasicPolicyTest extends BrooklynAppUnitTestSupport {
         public static final ConfigKey<String> STR_KEY = new BasicConfigKey<String>(String.class, "akey", "a key");
         public static final ConfigKey<Integer> INT_KEY_WITH_DEFAULT = new BasicConfigKey<Integer>(Integer.class, "ckey", "c key", 1);
         public static final ConfigKey<String> STR_KEY_WITH_DEFAULT = new BasicConfigKey<String>(String.class, "strKey", "str key", "str key default");
+        public static final ConfigKey<String> RECONFIGURABLE_KEY = ConfigKeys.builder(String.class, "reconfigurableKey")
+                .reconfigurable(true)
+                .build();
         
         MyPolicy(Map<?,?> flags) {
             super(flags);
@@ -52,6 +60,16 @@ public class BasicPolicyTest extends BrooklynAppUnitTestSupport {
         public MyPolicy() {
             super();
         }
+        
+        @Override
+        protected <T> void doReconfigureConfig(ConfigKey<T> key, T val) {
+            if (key.equals(RECONFIGURABLE_KEY)) {
+                // allowed
+            } else {
+                super.doReconfigureConfig(key, val);
+            }
+        }
+
     }
     
     @Test
@@ -60,7 +78,9 @@ public class BasicPolicyTest extends BrooklynAppUnitTestSupport {
         policy.setDisplayName("Bob");
         policy.config().set(MyPolicy.STR_KEY, "aval");
         policy.config().set(MyPolicy.INT_KEY, 2);
+        
         app.policies().add(policy);
+        assertTrue(Iterables.tryFind(app.policies(), Predicates.equalTo(policy)).isPresent());
         
         assertEquals(policy.getDisplayName(), "Bob");
         assertEquals(policy.getConfig(MyPolicy.STR_KEY), "aval");

http://git-wip-us.apache.org/repos/asf/brooklyn-server/blob/0fac0d6c/core/src/test/java/org/apache/brooklyn/core/policy/basic/PolicyConfigTest.java
----------------------------------------------------------------------
diff --git a/core/src/test/java/org/apache/brooklyn/core/policy/basic/PolicyConfigTest.java b/core/src/test/java/org/apache/brooklyn/core/policy/basic/PolicyConfigTest.java
index a3ee3e4..784c076 100644
--- a/core/src/test/java/org/apache/brooklyn/core/policy/basic/PolicyConfigTest.java
+++ b/core/src/test/java/org/apache/brooklyn/core/policy/basic/PolicyConfigTest.java
@@ -25,6 +25,7 @@ import static org.testng.Assert.fail;
 import java.util.concurrent.Callable;
 import java.util.concurrent.CountDownLatch;
 
+import org.apache.brooklyn.api.policy.PolicySpec;
 import org.apache.brooklyn.core.config.BasicConfigKey;
 import org.apache.brooklyn.core.policy.basic.BasicPolicyTest.MyPolicy;
 import org.apache.brooklyn.core.sensor.DependentConfiguration;
@@ -86,26 +87,28 @@ public class PolicyConfigTest extends BrooklynAppUnitTestSupport {
     
     @Test
     public void testConfigSetToGroovyTruthFalseIsAvailable() throws Exception {
-        MyPolicy policy = new MyPolicy(MutableMap.builder()
-                .put(MyPolicy.INT_KEY_WITH_DEFAULT, 0)
-                .build());
-        app.policies().add(policy);
+        MyPolicy policy = app.policies().add(PolicySpec.create(MyPolicy.class)
+                .configure(MyPolicy.INT_KEY_WITH_DEFAULT, 0));
+        MyPolicy policy2 = app.policies().add(PolicySpec.create(MyPolicy.class)
+                .configure(MyPolicy.INT_KEY_WITH_DEFAULT.getName(), 0));
         
         assertEquals(policy.getConfig(MyPolicy.INT_KEY_WITH_DEFAULT), (Integer)0);
+        assertEquals(policy2.getConfig(MyPolicy.INT_KEY_WITH_DEFAULT), (Integer)0);
     }
     
     @Test
     public void testConfigSetToNullIsAvailable() throws Exception {
-        MyPolicy policy = new MyPolicy(MutableMap.builder()
-                .put(MyPolicy.STR_KEY_WITH_DEFAULT, null)
-                .build());
-        app.policies().add(policy);
+        MyPolicy policy = app.policies().add(PolicySpec.create(MyPolicy.class)
+                .configure(MyPolicy.STR_KEY_WITH_DEFAULT, (String)null));
+        MyPolicy policy2 = app.policies().add(PolicySpec.create(MyPolicy.class)
+                .configure(MyPolicy.STR_KEY_WITH_DEFAULT.getName(), null));
         
         assertEquals(policy.getConfig(MyPolicy.STR_KEY_WITH_DEFAULT), null);
+        assertEquals(policy2.getConfig(MyPolicy.STR_KEY_WITH_DEFAULT), null);
     }
     
     @Test
-    public void testConfigCanBeSetOnPolicy() throws Exception {
+    public void testConfigCanBeSetOnPolicyBeforeAddedToEntity() throws Exception {
         MyPolicy policy = new MyPolicy();
         policy.config().set(MyPolicy.STR_KEY, "aval");
         policy.config().set(MyPolicy.INT_KEY, 2);
@@ -128,13 +131,11 @@ public class PolicyConfigTest extends BrooklynAppUnitTestSupport {
 
     @Test
     public void testConfigCannotBeSetAfterApplicationIsStarted() throws Exception {
-        MyPolicy policy = new MyPolicy(MutableMap.builder()
-                .put(MyPolicy.STR_KEY, "origval")
-                .build());
-        app.policies().add(policy);
+        MyPolicy policy = app.policies().add(PolicySpec.create(MyPolicy.class)
+                .configure(MyPolicy.STR_KEY, "origval"));
         
         try {
-            policy.config().set(MyPolicy.STR_KEY,"newval");
+            policy.config().set(MyPolicy.STR_KEY, "newval");
             fail();
         } catch (UnsupportedOperationException e) {
             // success
@@ -144,30 +145,34 @@ public class PolicyConfigTest extends BrooklynAppUnitTestSupport {
     }
     
     @Test
+    public void testConfigSetterForReconfigurableKey() throws Exception {
+        MyPolicy policy = app.policies().add(PolicySpec.create(MyPolicy.class)
+                .configure(MyPolicy.RECONFIGURABLE_KEY, "origval"));
+        policy.config().set(MyPolicy.RECONFIGURABLE_KEY, "diffval");
+        
+        assertEquals(policy.getConfig(MyPolicy.RECONFIGURABLE_KEY), "diffval");
+    }
+
+    @Test
     public void testConfigReturnsDefaultValueIfNotSet() throws Exception {
-        MyPolicy policy = new MyPolicy();
-        app.policies().add(policy);
+        MyPolicy policy = app.policies().add(PolicySpec.create(MyPolicy.class));
         
         assertEquals(policy.getConfig(MyPolicy.STR_KEY_WITH_DEFAULT), "str key default");
     }
     
-    // FIXME Should we support this now?
-    @Test(enabled=false)
+    @Test
     public void testGetFutureConfigWhenReady() throws Exception {
-        MyPolicy policy = new MyPolicy(MutableMap.builder()
-                .put(TestEntity.CONF_NAME, DependentConfiguration.whenDone(Callables.returning("aval")))
-                .build());
-        app.policies().add(policy);
+        MyPolicy policy = app.policies().add(PolicySpec.create(MyPolicy.class)
+                .configure(TestEntity.CONF_NAME, DependentConfiguration.whenDone(Callables.returning("aval"))));
         
-        assertEquals(policy.getConfig(TestEntity.CONF_NAME), "aval");
+        assertEquals(policy.config().get(TestEntity.CONF_NAME), "aval");
     }
     
-    // FIXME Should we support this now?
-    @Test(enabled=false)
+    @Test
     public void testGetFutureConfigBlocksUntilReady() throws Exception {
         final CountDownLatch latch = new CountDownLatch(1);
-        MyPolicy policy = new MyPolicy(MutableMap.builder()
-                .put(TestEntity.CONF_NAME, DependentConfiguration.whenDone(new Callable<String>() {
+        MyPolicy policy = app.policies().add(PolicySpec.create(MyPolicy.class)
+                .configure(TestEntity.CONF_NAME, DependentConfiguration.whenDone(new Callable<String>() {
                         @Override
                         public String call() {
                             try {
@@ -175,15 +180,14 @@ public class PolicyConfigTest extends BrooklynAppUnitTestSupport {
                             } catch (InterruptedException e) {
                                 throw Exceptions.propagate(e);
                             }
-                        }}))
-                .build());
-        app.policies().add(policy);
+                        }})));
         
         Thread t = new Thread(new Runnable() {
                 @Override
                 public void run() {
                     try {
-                        Thread.sleep(10+EARLY_RETURN_GRACE); latch.countDown();
+                        Thread.sleep(10+EARLY_RETURN_GRACE);
+                        latch.countDown();
                     } catch (InterruptedException e) {
                         throw Exceptions.propagate(e);
                     }
@@ -191,7 +195,7 @@ public class PolicyConfigTest extends BrooklynAppUnitTestSupport {
         try {
             long starttime = System.currentTimeMillis();
             t.start();
-            assertEquals(policy.getConfig(TestEntity.CONF_NAME), "aval");
+            assertEquals(policy.config().get(TestEntity.CONF_NAME), "aval");
             long endtime = System.currentTimeMillis();
             
             assertTrue((endtime - starttime) >= 10, "starttime="+starttime+"; endtime="+endtime);

http://git-wip-us.apache.org/repos/asf/brooklyn-server/blob/0fac0d6c/core/src/test/java/org/apache/brooklyn/core/policy/basic/PolicySubscriptionTest.java
----------------------------------------------------------------------
diff --git a/core/src/test/java/org/apache/brooklyn/core/policy/basic/PolicySubscriptionTest.java b/core/src/test/java/org/apache/brooklyn/core/policy/basic/PolicySubscriptionTest.java
index fbe6105..0f3310e 100644
--- a/core/src/test/java/org/apache/brooklyn/core/policy/basic/PolicySubscriptionTest.java
+++ b/core/src/test/java/org/apache/brooklyn/core/policy/basic/PolicySubscriptionTest.java
@@ -22,6 +22,7 @@ import static org.testng.Assert.assertEquals;
 
 import org.apache.brooklyn.api.entity.EntitySpec;
 import org.apache.brooklyn.api.mgmt.SubscriptionHandle;
+import org.apache.brooklyn.api.policy.PolicySpec;
 import org.apache.brooklyn.core.entity.RecordingSensorEventListener;
 import org.apache.brooklyn.core.location.SimulatedLocation;
 import org.apache.brooklyn.core.policy.AbstractPolicy;
@@ -44,7 +45,7 @@ public class PolicySubscriptionTest extends BrooklynAppUnitTestSupport {
     private SimulatedLocation loc;
     private TestEntity entity;
     private TestEntity otherEntity;
-    private AbstractPolicy policy;
+    private MyPolicy policy;
     private RecordingSensorEventListener<Object> listener;
     
     @BeforeMethod(alwaysRun=true)
@@ -55,8 +56,7 @@ public class PolicySubscriptionTest extends BrooklynAppUnitTestSupport {
         entity = app.createAndManageChild(EntitySpec.create(TestEntity.class));
         otherEntity = app.createAndManageChild(EntitySpec.create(TestEntity.class));
         listener = new RecordingSensorEventListener<>();
-        policy = new AbstractPolicy() {};
-        entity.policies().add(policy);
+        policy = entity.policies().add(PolicySpec.create(MyPolicy.class));
         app.start(ImmutableList.of(loc));
     }
 
@@ -150,4 +150,7 @@ public class PolicySubscriptionTest extends BrooklynAppUnitTestSupport {
                 assertEquals(listener.getEvents(), ImmutableList.of());
             }});
     }
+    
+    public static class MyPolicy extends AbstractPolicy {
+    }
 }

http://git-wip-us.apache.org/repos/asf/brooklyn-server/blob/0fac0d6c/core/src/test/java/org/apache/brooklyn/core/policy/basic/PolicyTypeTest.java
----------------------------------------------------------------------
diff --git a/core/src/test/java/org/apache/brooklyn/core/policy/basic/PolicyTypeTest.java b/core/src/test/java/org/apache/brooklyn/core/policy/basic/PolicyTypeTest.java
index 4a5fccd..1785548 100644
--- a/core/src/test/java/org/apache/brooklyn/core/policy/basic/PolicyTypeTest.java
+++ b/core/src/test/java/org/apache/brooklyn/core/policy/basic/PolicyTypeTest.java
@@ -20,28 +20,26 @@ package org.apache.brooklyn.core.policy.basic;
 
 import static org.testng.Assert.assertEquals;
 
+import org.apache.brooklyn.api.policy.PolicySpec;
 import org.apache.brooklyn.api.policy.PolicyType;
 import org.apache.brooklyn.core.config.BasicConfigKey;
 import org.apache.brooklyn.core.policy.AbstractPolicy;
-import org.testng.annotations.AfterMethod;
+import org.apache.brooklyn.core.test.BrooklynAppUnitTestSupport;
 import org.testng.annotations.BeforeMethod;
 import org.testng.annotations.Test;
 
 import com.google.common.collect.ImmutableSet;
 
-public class PolicyTypeTest {
+public class PolicyTypeTest extends BrooklynAppUnitTestSupport {
     private MyPolicy policy;
     
     @BeforeMethod(alwaysRun=true)
-    public void setUpTestEntity() throws Exception{
-        policy = new MyPolicy();
+    @Override
+    public void setUp() throws Exception{
+        super.setUp();
+        policy = app.policies().add(PolicySpec.create(MyPolicy.class));
     }
 
-    @AfterMethod(alwaysRun=true)
-    public void tearDown() throws Exception {
-        // nothing to tear down; no management context not started
-    }
-    
     @Test
     public void testGetConfig() throws Exception {
         PolicyType policyType = policy.getPolicyType();

http://git-wip-us.apache.org/repos/asf/brooklyn-server/blob/0fac0d6c/core/src/test/java/org/apache/brooklyn/core/test/policy/TestPolicy.java
----------------------------------------------------------------------
diff --git a/core/src/test/java/org/apache/brooklyn/core/test/policy/TestPolicy.java b/core/src/test/java/org/apache/brooklyn/core/test/policy/TestPolicy.java
index baa3d47..520baa1 100644
--- a/core/src/test/java/org/apache/brooklyn/core/test/policy/TestPolicy.java
+++ b/core/src/test/java/org/apache/brooklyn/core/test/policy/TestPolicy.java
@@ -43,13 +43,8 @@ public class TestPolicy extends AbstractPolicy {
         .build();
     
     public TestPolicy() {
-        this(Collections.emptyMap());
     }
     
-    public TestPolicy(Map<?, ?> properties) {
-        super(properties);
-    }
-
     public Map<?, ?> getLeftoverProperties() {
         return Collections.unmodifiableMap(leftoverProperties);
     }

http://git-wip-us.apache.org/repos/asf/brooklyn-server/blob/0fac0d6c/core/src/test/java/org/apache/brooklyn/entity/group/MembershipTrackingPolicyTest.java
----------------------------------------------------------------------
diff --git a/core/src/test/java/org/apache/brooklyn/entity/group/MembershipTrackingPolicyTest.java b/core/src/test/java/org/apache/brooklyn/entity/group/MembershipTrackingPolicyTest.java
index 497a7f9..58e4c71 100644
--- a/core/src/test/java/org/apache/brooklyn/entity/group/MembershipTrackingPolicyTest.java
+++ b/core/src/test/java/org/apache/brooklyn/entity/group/MembershipTrackingPolicyTest.java
@@ -149,9 +149,9 @@ public class MembershipTrackingPolicyTest extends BrooklynAppUnitTestSupport {
     
     @Test
     public void testDeprecatedSetGroupWorks() throws Exception {
-        RecordingMembershipTrackingPolicy policy2 = new RecordingMembershipTrackingPolicy(MutableMap.of("sensorsToTrack", ImmutableSet.of(TestEntity.NAME)));
-        group.policies().add(policy2);
-        policy2.setGroup(group);
+        RecordingMembershipTrackingPolicy policy2 = group.policies().add(PolicySpec.create(RecordingMembershipTrackingPolicy.class)
+                .configure(RecordingMembershipTrackingPolicy.GROUP, group)
+                .configure("sensorsToTrack", ImmutableSet.of(TestEntity.NAME)));
 
         TestEntity e1 = createAndManageChildOf(group);
         e1.sensors().set(TestEntity.NAME, "myname");
@@ -255,14 +255,8 @@ public class MembershipTrackingPolicyTest extends BrooklynAppUnitTestSupport {
     public static class RecordingMembershipTrackingPolicy extends AbstractMembershipTrackingPolicy {
         final List<Record> records = new CopyOnWriteArrayList<Record>();
 
-        public RecordingMembershipTrackingPolicy() {
-            super();
-        }
+        public RecordingMembershipTrackingPolicy() {}
         
-        public RecordingMembershipTrackingPolicy(MutableMap<String, ?> flags) {
-            super(flags);
-        }
-
         @Override protected void onEntityChange(Entity member) {
             records.add(Record.newChanged(member));
         }

http://git-wip-us.apache.org/repos/asf/brooklyn-server/blob/0fac0d6c/policy/src/main/java/org/apache/brooklyn/policy/autoscaling/AutoScalerPolicy.java
----------------------------------------------------------------------
diff --git a/policy/src/main/java/org/apache/brooklyn/policy/autoscaling/AutoScalerPolicy.java b/policy/src/main/java/org/apache/brooklyn/policy/autoscaling/AutoScalerPolicy.java
index 9b48e76..a3760da 100644
--- a/policy/src/main/java/org/apache/brooklyn/policy/autoscaling/AutoScalerPolicy.java
+++ b/policy/src/main/java/org/apache/brooklyn/policy/autoscaling/AutoScalerPolicy.java
@@ -187,6 +187,10 @@ public class AutoScalerPolicy extends AbstractPolicy {
         public Builder maxReachedNotificationDelay(Duration val) {
             this.maxReachedNotificationDelay = val; return this;
         }
+        /**
+         * @deprecated since 0.12.0; use {@link #buildSpec()}, or use {@link PolicySpec} directly
+         */
+        @Deprecated
         public AutoScalerPolicy build() {
             return new AutoScalerPolicy(toFlags());
         }
@@ -455,13 +459,16 @@ public class AutoScalerPolicy extends AbstractPolicy {
     };
 
     public AutoScalerPolicy() {
-        this(MutableMap.<String,Object>of());
     }
     
+    /**
+     * @deprecated since 0.12.0; use {@link PolicySpec}
+     */
+    @Deprecated
     public AutoScalerPolicy(Map<String,?> props) {
         super(props);
     }
-
+    
     @Override
     public void init() {
         doInit();

http://git-wip-us.apache.org/repos/asf/brooklyn-server/blob/0fac0d6c/policy/src/main/java/org/apache/brooklyn/policy/ha/ServiceReplacer.java
----------------------------------------------------------------------
diff --git a/policy/src/main/java/org/apache/brooklyn/policy/ha/ServiceReplacer.java b/policy/src/main/java/org/apache/brooklyn/policy/ha/ServiceReplacer.java
index 9d71b78..9173895 100644
--- a/policy/src/main/java/org/apache/brooklyn/policy/ha/ServiceReplacer.java
+++ b/policy/src/main/java/org/apache/brooklyn/policy/ha/ServiceReplacer.java
@@ -23,11 +23,8 @@ import static com.google.common.base.Preconditions.checkNotNull;
 
 import java.util.Iterator;
 import java.util.List;
-import java.util.Map;
 import java.util.concurrent.TimeUnit;
 
-import org.slf4j.Logger;
-import org.slf4j.LoggerFactory;
 import org.apache.brooklyn.api.catalog.Catalog;
 import org.apache.brooklyn.api.entity.Entity;
 import org.apache.brooklyn.api.entity.EntityLocal;
@@ -47,9 +44,10 @@ import org.apache.brooklyn.core.sensor.BasicNotificationSensor;
 import org.apache.brooklyn.entity.group.StopFailedRuntimeException;
 import org.apache.brooklyn.policy.ha.HASensors.FailureDescriptor;
 import org.apache.brooklyn.util.collections.MutableMap;
-import org.apache.brooklyn.util.core.config.ConfigBag;
 import org.apache.brooklyn.util.core.flags.SetFromFlag;
 import org.apache.brooklyn.util.exceptions.Exceptions;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
 
 import com.google.common.base.Ticker;
 import com.google.common.collect.Lists;
@@ -97,22 +95,8 @@ public class ServiceReplacer extends AbstractPolicy {
     protected final List<Long> consecutiveReplacementFailureTimes = Lists.newCopyOnWriteArrayList();
     
     public ServiceReplacer() {
-        this(new ConfigBag());
-    }
-    
-    public ServiceReplacer(Map<String,?> flags) {
-        this(new ConfigBag().putAll(flags));
-    }
-    
-    public ServiceReplacer(ConfigBag configBag) {
-        // TODO hierarchy should use ConfigBag, and not change flags
-        super(configBag.getAllConfigMutable());
     }
     
-    public ServiceReplacer(Sensor<?> failureSensorToMonitor) {
-        this(new ConfigBag().configure(FAILURE_SENSOR_TO_MONITOR, failureSensorToMonitor));
-    }
-
     @Override
     public void setEntity(final EntityLocal entity) {
         checkArgument(entity instanceof MemberReplaceable, "ServiceReplacer must take a MemberReplaceable, not %s", entity);

http://git-wip-us.apache.org/repos/asf/brooklyn-server/blob/0fac0d6c/policy/src/main/java/org/apache/brooklyn/policy/ha/ServiceRestarter.java
----------------------------------------------------------------------
diff --git a/policy/src/main/java/org/apache/brooklyn/policy/ha/ServiceRestarter.java b/policy/src/main/java/org/apache/brooklyn/policy/ha/ServiceRestarter.java
index 4df27e7..03cae2e 100644
--- a/policy/src/main/java/org/apache/brooklyn/policy/ha/ServiceRestarter.java
+++ b/policy/src/main/java/org/apache/brooklyn/policy/ha/ServiceRestarter.java
@@ -18,11 +18,8 @@
  */
 package org.apache.brooklyn.policy.ha;
 
-import java.util.Map;
 import java.util.concurrent.atomic.AtomicReference;
 
-import org.slf4j.Logger;
-import org.slf4j.LoggerFactory;
 import org.apache.brooklyn.api.catalog.Catalog;
 import org.apache.brooklyn.api.entity.EntityLocal;
 import org.apache.brooklyn.api.sensor.Sensor;
@@ -39,11 +36,12 @@ import org.apache.brooklyn.core.policy.AbstractPolicy;
 import org.apache.brooklyn.core.sensor.BasicNotificationSensor;
 import org.apache.brooklyn.policy.ha.HASensors.FailureDescriptor;
 import org.apache.brooklyn.util.collections.MutableMap;
-import org.apache.brooklyn.util.core.config.ConfigBag;
 import org.apache.brooklyn.util.core.flags.SetFromFlag;
 import org.apache.brooklyn.util.javalang.JavaClassNames;
 import org.apache.brooklyn.util.time.Duration;
 import org.apache.brooklyn.util.time.Time;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
 
 import com.google.common.base.Preconditions;
 
@@ -80,23 +78,10 @@ public class ServiceRestarter extends AbstractPolicy {
     protected final AtomicReference<Long> lastFailureTime = new AtomicReference<Long>();
 
     public ServiceRestarter() {
-        this(new ConfigBag());
-    }
-    
-    public ServiceRestarter(Map<String,?> flags) {
-        this(new ConfigBag().putAll(flags));
-    }
-    
-    public ServiceRestarter(ConfigBag configBag) {
-        // TODO hierarchy should use ConfigBag, and not change flags
-        super(configBag.getAllConfigMutable());
-        uniqueTag = JavaClassNames.simpleClassName(getClass())+":"+getConfig(FAILURE_SENSOR_TO_MONITOR).getName();
+        super();
+        if (uniqueTag == null) uniqueTag = JavaClassNames.simpleClassName(getClass())+":"+getConfig(FAILURE_SENSOR_TO_MONITOR).getName();
     }
     
-    public ServiceRestarter(Sensor<?> failureSensorToMonitor) {
-        this(new ConfigBag().configure(FAILURE_SENSOR_TO_MONITOR, failureSensorToMonitor));
-    }
-
     @Override
     public void setEntity(final EntityLocal entity) {
         Preconditions.checkArgument(entity instanceof Startable, "Restarter must take a Startable, not "+entity);

http://git-wip-us.apache.org/repos/asf/brooklyn-server/blob/0fac0d6c/policy/src/test/java/org/apache/brooklyn/policy/autoscaling/AutoScalerPolicyMetricTest.java
----------------------------------------------------------------------
diff --git a/policy/src/test/java/org/apache/brooklyn/policy/autoscaling/AutoScalerPolicyMetricTest.java b/policy/src/test/java/org/apache/brooklyn/policy/autoscaling/AutoScalerPolicyMetricTest.java
index a5f1601..867b4ed 100644
--- a/policy/src/test/java/org/apache/brooklyn/policy/autoscaling/AutoScalerPolicyMetricTest.java
+++ b/policy/src/test/java/org/apache/brooklyn/policy/autoscaling/AutoScalerPolicyMetricTest.java
@@ -69,8 +69,11 @@ public class AutoScalerPolicyMetricTest {
     public void testIncrementsSizeIffUpperBoundExceeded() {
         tc.resize(1);
         
-        AutoScalerPolicy policy = new AutoScalerPolicy.Builder().metric(MY_ATTRIBUTE).metricLowerBound(50).metricUpperBound(100).build();
-        tc.policies().add(policy);
+        tc.policies().add(AutoScalerPolicy.builder()
+                .metric(MY_ATTRIBUTE)
+                .metricLowerBound(50)
+                .metricUpperBound(100)
+                .buildSpec());
 
         tc.sensors().set(MY_ATTRIBUTE, 100);
         Asserts.succeedsContinually(ImmutableMap.of("timeout", SHORT_WAIT_MS), currentSizeAsserter(tc, 1));
@@ -83,8 +86,11 @@ public class AutoScalerPolicyMetricTest {
     public void testDecrementsSizeIffLowerBoundExceeded() {
         tc.resize(2);
         
-        AutoScalerPolicy policy = new AutoScalerPolicy.Builder().metric(MY_ATTRIBUTE).metricLowerBound(50).metricUpperBound(100).build();
-        tc.policies().add(policy);
+        tc.policies().add(AutoScalerPolicy.builder()
+                .metric(MY_ATTRIBUTE)
+                .metricLowerBound(50)
+                .metricUpperBound(100)
+                .buildSpec());
 
         tc.sensors().set(MY_ATTRIBUTE, 50);
         Asserts.succeedsContinually(ImmutableMap.of("timeout", SHORT_WAIT_MS), currentSizeAsserter(tc, 2));
@@ -97,8 +103,11 @@ public class AutoScalerPolicyMetricTest {
     public void testIncrementsSizeInProportionToMetric() {
         tc.resize(5);
         
-        AutoScalerPolicy policy = new AutoScalerPolicy.Builder().metric(MY_ATTRIBUTE).metricLowerBound(50).metricUpperBound(100).build();
-        tc.policies().add(policy);
+        tc.policies().add(AutoScalerPolicy.builder()
+                .metric(MY_ATTRIBUTE)
+                .metricLowerBound(50)
+                .metricUpperBound(100)
+                .buildSpec());
         
         // workload 200 so requires doubling size to 10 to handle: (200*5)/100 = 10
         tc.sensors().set(MY_ATTRIBUTE, 200);
@@ -113,8 +122,11 @@ public class AutoScalerPolicyMetricTest {
     public void testDecrementsSizeInProportionToMetric() {
         tc.resize(5);
         
-        AutoScalerPolicy policy = new AutoScalerPolicy.Builder().metric(MY_ATTRIBUTE).metricLowerBound(50).metricUpperBound(100).build();
-        tc.policies().add(policy);
+        tc.policies().add(AutoScalerPolicy.builder()
+                .metric(MY_ATTRIBUTE)
+                .metricLowerBound(50)
+                .metricUpperBound(100)
+                .buildSpec());
         
         // workload can be handled by 4 servers, within its valid range: (49*5)/50 = 4.9
         tc.sensors().set(MY_ATTRIBUTE, 49);
@@ -132,11 +144,12 @@ public class AutoScalerPolicyMetricTest {
     public void testObeysMinAndMaxSize() {
         tc.resize(4);
         
-        AutoScalerPolicy policy = new AutoScalerPolicy.Builder().metric(MY_ATTRIBUTE)
-                .metricLowerBound(50).metricUpperBound(100)
+        AutoScalerPolicy policy = tc.policies().add(AutoScalerPolicy.builder()
+                .metric(MY_ATTRIBUTE)
+                .metricLowerBound(50)
+                .metricUpperBound(100)
                 .minPoolSize(2).maxPoolSize(6)
-                .build();
-        tc.policies().add(policy);
+                .buildSpec());
 
         // Decreases to min-size only
         tc.sensors().set(MY_ATTRIBUTE, 0);
@@ -159,12 +172,13 @@ public class AutoScalerPolicyMetricTest {
                     maxReachedEvents.add(event.getValue());
                 }});
         
-        AutoScalerPolicy policy = new AutoScalerPolicy.Builder().metric(MY_ATTRIBUTE)
-                .metricLowerBound(50).metricUpperBound(100)
+        tc.policies().add(AutoScalerPolicy.builder()
+                .metric(MY_ATTRIBUTE)
+                .metricLowerBound(50)
+                .metricUpperBound(100)
                 .maxPoolSize(6)
                 .maxSizeReachedSensor(maxSizeReachedSensor)
-                .build();
-        tc.policies().add(policy);
+                .buildSpec());
 
         // workload can be handled by 6 servers, so no need to notify: 6 <= (100*6)/50
         tc.sensors().set(MY_ATTRIBUTE, 600);
@@ -196,8 +210,11 @@ public class AutoScalerPolicyMetricTest {
     public void testDestructionState() {
         tc.resize(1);
         
-        AutoScalerPolicy policy = new AutoScalerPolicy.Builder().metric(MY_ATTRIBUTE).metricLowerBound(50).metricUpperBound(100).build();
-        tc.policies().add(policy);
+        AutoScalerPolicy policy = tc.policies().add(AutoScalerPolicy.builder()
+                .metric(MY_ATTRIBUTE)
+                .metricLowerBound(50)
+                .metricUpperBound(100)
+                .buildSpec());
 
         policy.destroy();
         assertTrue(policy.isDestroyed());
@@ -212,8 +229,11 @@ public class AutoScalerPolicyMetricTest {
     
     @Test
     public void testSuspendState() {
-        AutoScalerPolicy policy = new AutoScalerPolicy.Builder().metric(MY_ATTRIBUTE).metricLowerBound(50).metricUpperBound(100).build();
-        tc.policies().add(policy);
+        AutoScalerPolicy policy = tc.policies().add(AutoScalerPolicy.builder()
+                .metric(MY_ATTRIBUTE)
+                .metricLowerBound(50)
+                .metricUpperBound(100)
+                .buildSpec());
         
         policy.suspend();
         assertFalse(policy.isRunning());
@@ -228,8 +248,11 @@ public class AutoScalerPolicyMetricTest {
     public void testPostSuspendActions() {
         tc.resize(1);
         
-        AutoScalerPolicy policy = new AutoScalerPolicy.Builder().metric(MY_ATTRIBUTE).metricLowerBound(50).metricUpperBound(100).build();
-        tc.policies().add(policy);
+        AutoScalerPolicy policy = tc.policies().add(AutoScalerPolicy.builder()
+                .metric(MY_ATTRIBUTE)
+                .metricLowerBound(50)
+                .metricUpperBound(100)
+                .buildSpec());
 
         policy.suspend();
         
@@ -241,8 +264,11 @@ public class AutoScalerPolicyMetricTest {
     public void testPostResumeActions() {
         tc.resize(1);
         
-        AutoScalerPolicy policy = new AutoScalerPolicy.Builder().metric(MY_ATTRIBUTE).metricLowerBound(50).metricUpperBound(100).build();
-        tc.policies().add(policy);
+        AutoScalerPolicy policy = tc.policies().add(AutoScalerPolicy.builder()
+                .metric(MY_ATTRIBUTE)
+                .metricLowerBound(50)
+                .metricUpperBound(100)
+                .buildSpec());
         
         policy.suspend();
         policy.resume();
@@ -256,13 +282,12 @@ public class AutoScalerPolicyMetricTest {
         
         tc.resize(1);
         
-        AutoScalerPolicy policy = new AutoScalerPolicy.Builder()
+        tc.policies().add(AutoScalerPolicy.builder()
                 .metric(TestEntity.SEQUENCE)
                 .entityWithMetric(entityWithMetric)
                 .metricLowerBound(50)
                 .metricUpperBound(100)
-                .build();
-        tc.policies().add(policy);
+                .buildSpec());
 
         // First confirm that tc is not being listened to for this entity
         tc.sensors().set(TestEntity.SEQUENCE, 101);

http://git-wip-us.apache.org/repos/asf/brooklyn-server/blob/0fac0d6c/policy/src/test/java/org/apache/brooklyn/policy/autoscaling/AutoScalerPolicyReconfigurationTest.java
----------------------------------------------------------------------
diff --git a/policy/src/test/java/org/apache/brooklyn/policy/autoscaling/AutoScalerPolicyReconfigurationTest.java b/policy/src/test/java/org/apache/brooklyn/policy/autoscaling/AutoScalerPolicyReconfigurationTest.java
index 1e4fb97..571cabd 100644
--- a/policy/src/test/java/org/apache/brooklyn/policy/autoscaling/AutoScalerPolicyReconfigurationTest.java
+++ b/policy/src/test/java/org/apache/brooklyn/policy/autoscaling/AutoScalerPolicyReconfigurationTest.java
@@ -58,11 +58,12 @@ public class AutoScalerPolicyReconfigurationTest {
     public void testIncreaseMinPoolSizeCausesImmediateGrowth() {
         tc.resize(2);
         
-        AutoScalerPolicy policy = new AutoScalerPolicy.Builder().metric(MY_ATTRIBUTE)
-                .metricLowerBound(50).metricUpperBound(100)
+        AutoScalerPolicy policy = tc.policies().add(AutoScalerPolicy.builder()
+                .metric(MY_ATTRIBUTE)
+                .metricLowerBound(50)
+                .metricUpperBound(100)
                 .minPoolSize(2)
-                .build();
-        tc.policies().add(policy);
+                .buildSpec());
 
         policy.config().set(AutoScalerPolicy.MIN_POOL_SIZE, 3);
         
@@ -73,11 +74,10 @@ public class AutoScalerPolicyReconfigurationTest {
     public void testDecreaseMinPoolSizeAllowsSubsequentShrink() {
         tc.resize(4);
         
-        AutoScalerPolicy policy = new AutoScalerPolicy.Builder().metric(MY_ATTRIBUTE)
+        AutoScalerPolicy policy = tc.policies().add(AutoScalerPolicy.builder().metric(MY_ATTRIBUTE)
                 .metricLowerBound(50).metricUpperBound(100)
                 .minPoolSize(2)
-                .build();
-        tc.policies().add(policy);
+                .buildSpec());
         
         // 25*4 = 100 -> 2 nodes at 50 each
         tc.sensors().set(MY_ATTRIBUTE, 25);
@@ -93,11 +93,10 @@ public class AutoScalerPolicyReconfigurationTest {
     public void testDecreaseMaxPoolSizeCausesImmediateShrink() {
         tc.resize(6);
         
-        AutoScalerPolicy policy = new AutoScalerPolicy.Builder().metric(MY_ATTRIBUTE)
+        AutoScalerPolicy policy = tc.policies().add(AutoScalerPolicy.builder().metric(MY_ATTRIBUTE)
                 .metricLowerBound(50).metricUpperBound(100)
                 .maxPoolSize(6)
-                .build();
-        tc.policies().add(policy);
+                .buildSpec());
 
         policy.config().set(AutoScalerPolicy.MAX_POOL_SIZE, 4);
         
@@ -108,11 +107,11 @@ public class AutoScalerPolicyReconfigurationTest {
     public void testIncreaseMaxPoolSizeAllowsSubsequentGrowth() {
         tc.resize(3);
         
-        AutoScalerPolicy policy = new AutoScalerPolicy.Builder().metric(MY_ATTRIBUTE)
+        AutoScalerPolicy policy = tc.policies().add(AutoScalerPolicy.builder()
+                .metric(MY_ATTRIBUTE)
                 .metricLowerBound(50).metricUpperBound(100)
                 .maxPoolSize(6)
-                .build();
-        tc.policies().add(policy);
+                .buildSpec());
 
         // 200*3 = 600 -> 6 nodes at 100 each
         tc.sensors().set(MY_ATTRIBUTE, 200);
@@ -129,10 +128,11 @@ public class AutoScalerPolicyReconfigurationTest {
     public void testReconfigureMetricLowerBound() {
         tc.resize(2);
         
-        AutoScalerPolicy policy = new AutoScalerPolicy.Builder().metric(MY_ATTRIBUTE)
-                .metricLowerBound(50).metricUpperBound(100)
-                .build();
-        tc.policies().add(policy);
+        AutoScalerPolicy policy = tc.policies().add(AutoScalerPolicy.builder()
+                .metric(MY_ATTRIBUTE)
+                .metricLowerBound(50)
+                .metricUpperBound(100)
+                .buildSpec());
 
         policy.config().set(AutoScalerPolicy.METRIC_LOWER_BOUND, 51);
 
@@ -144,10 +144,11 @@ public class AutoScalerPolicyReconfigurationTest {
     public void testReconfigureMetricUpperBound() {
         tc.resize(1);
         
-        AutoScalerPolicy policy = new AutoScalerPolicy.Builder().metric(MY_ATTRIBUTE)
-                .metricLowerBound(50).metricUpperBound(100)
-                .build();
-        tc.policies().add(policy);
+        AutoScalerPolicy policy = tc.policies().add(AutoScalerPolicy.builder()
+                .metric(MY_ATTRIBUTE)
+                .metricLowerBound(50)
+                .metricUpperBound(100)
+                .buildSpec());
 
         policy.config().set(AutoScalerPolicy.METRIC_UPPER_BOUND, 99);
 
@@ -159,11 +160,12 @@ public class AutoScalerPolicyReconfigurationTest {
     public void testReconfigureResizeUpStabilizationDelay() {
         tc.resize(1);
         
-        AutoScalerPolicy policy = new AutoScalerPolicy.Builder().metric(MY_ATTRIBUTE)
-                .metricLowerBound(50).metricUpperBound(100)
+        AutoScalerPolicy policy = tc.policies().add(AutoScalerPolicy.builder()
+                .metric(MY_ATTRIBUTE)
+                .metricLowerBound(50)
+                .metricUpperBound(100)
                 .resizeUpStabilizationDelay(Duration.TWO_MINUTES)
-                .build();
-        tc.policies().add(policy);
+                .buildSpec());
 
         policy.config().set(AutoScalerPolicy.RESIZE_UP_STABILIZATION_DELAY, Duration.ZERO);
 
@@ -175,11 +177,12 @@ public class AutoScalerPolicyReconfigurationTest {
     public void testReconfigureResizeDownStabilizationDelay() {
         tc.resize(2);
         
-        AutoScalerPolicy policy = new AutoScalerPolicy.Builder().metric(MY_ATTRIBUTE)
-                .metricLowerBound(50).metricUpperBound(100)
+        AutoScalerPolicy policy = tc.policies().add(AutoScalerPolicy.builder()
+                .metric(MY_ATTRIBUTE)
+                .metricLowerBound(50)
+                .metricUpperBound(100)
                 .resizeDownStabilizationDelay(Duration.TWO_MINUTES)
-                .build();
-        tc.policies().add(policy);
+                .buildSpec());
 
         policy.config().set(AutoScalerPolicy.RESIZE_DOWN_STABILIZATION_DELAY, Duration.ZERO);
 

http://git-wip-us.apache.org/repos/asf/brooklyn-server/blob/0fac0d6c/policy/src/test/java/org/apache/brooklyn/policy/autoscaling/AutoScalerPolicyTest.java
----------------------------------------------------------------------
diff --git a/policy/src/test/java/org/apache/brooklyn/policy/autoscaling/AutoScalerPolicyTest.java b/policy/src/test/java/org/apache/brooklyn/policy/autoscaling/AutoScalerPolicyTest.java
index 3342959..e487318 100644
--- a/policy/src/test/java/org/apache/brooklyn/policy/autoscaling/AutoScalerPolicyTest.java
+++ b/policy/src/test/java/org/apache/brooklyn/policy/autoscaling/AutoScalerPolicyTest.java
@@ -35,11 +35,9 @@ import java.util.concurrent.atomic.AtomicInteger;
 import org.apache.brooklyn.api.entity.Entity;
 import org.apache.brooklyn.api.entity.EntitySpec;
 import org.apache.brooklyn.api.policy.PolicySpec;
-import org.apache.brooklyn.core.entity.Entities;
 import org.apache.brooklyn.core.entity.trait.Resizable;
 import org.apache.brooklyn.core.sensor.BasicNotificationSensor;
 import org.apache.brooklyn.core.test.BrooklynAppUnitTestSupport;
-import org.apache.brooklyn.core.test.entity.TestApplication;
 import org.apache.brooklyn.core.test.entity.TestCluster;
 import org.apache.brooklyn.test.Asserts;
 import org.apache.brooklyn.util.collections.MutableList;
@@ -191,20 +189,18 @@ public class AutoScalerPolicyTest extends BrooklynAppUnitTestSupport {
     @Test
     public void testHasId() throws Exception {
         resizable.policies().remove(policy);
-        policy = AutoScalerPolicy.builder()
+        policy = resizable.policies().add(AutoScalerPolicy.builder()
                 .minPoolSize(2)
-                .build();
-        resizable.policies().add(policy);
+                .buildSpec());
         Assert.assertTrue(policy.getId()!=null);
     }
     
     @Test
     public void testNeverShrinkBelowMinimum() throws Exception {
         resizable.policies().remove(policy);
-        policy = AutoScalerPolicy.builder()
+        policy = resizable.policies().add(AutoScalerPolicy.builder()
                 .minPoolSize(2)
-                .build();
-        resizable.policies().add(policy);
+                .buildSpec());
         
         resizable.resize(4);
         resizable.sensors().emit(AutoScalerPolicy.DEFAULT_POOL_COLD_SENSOR, message(4, 0L, 4*10L, 4*20L));
@@ -216,10 +212,9 @@ public class AutoScalerPolicyTest extends BrooklynAppUnitTestSupport {
     @Test
     public void testNeverGrowAboveMaximmum() throws Exception {
         resizable.policies().remove(policy);
-        policy = AutoScalerPolicy.builder()
+        policy = resizable.policies().add(AutoScalerPolicy.builder()
                 .maxPoolSize(5)
-                .build();
-        resizable.policies().add(policy);
+                .buildSpec());
         
         resizable.resize(4);
         resizable.sensors().emit(AutoScalerPolicy.DEFAULT_POOL_HOT_SENSOR, message(4, 1000000L, 4*10L, 4*20L));
@@ -321,14 +316,13 @@ public class AutoScalerPolicyTest extends BrooklynAppUnitTestSupport {
         resizable.policies().remove(policy);
         
         final AtomicInteger counter = new AtomicInteger();
-        policy = AutoScalerPolicy.builder()
+        policy = resizable.policies().add(AutoScalerPolicy.builder()
                 .resizeOperator(new ResizeOperator() {
                         @Override public Integer resize(Entity entity, Integer desiredSize) {
                             counter.incrementAndGet();
                             return desiredSize;
                         }})
-                .build();
-        resizable.policies().add(policy);
+                .buildSpec());
         
         resizable.sensors().emit(AutoScalerPolicy.DEFAULT_POOL_HOT_SENSOR, message(1, 21L, 1*10L, 1*20L)); // grow to 2
         
@@ -349,12 +343,11 @@ public class AutoScalerPolicyTest extends BrooklynAppUnitTestSupport {
         BasicNotificationSensor<Map> customPoolColdSensor = new BasicNotificationSensor<Map>(Map.class, "custom.cold", "");
         @SuppressWarnings("rawtypes")
         BasicNotificationSensor<Map> customPoolOkSensor = new BasicNotificationSensor<Map>(Map.class, "custom.ok", "");
-        policy = AutoScalerPolicy.builder()
+        policy = resizable.policies().add(AutoScalerPolicy.builder()
                 .poolHotSensor(customPoolHotSensor) 
                 .poolColdSensor(customPoolColdSensor)
                 .poolOkSensor(customPoolOkSensor)
-                .build();
-        resizable.policies().add(policy);
+                .buildSpec());
         
         resizable.sensors().emit(customPoolHotSensor, message(1, 21L, 1*10L, 1*20L)); // grow to 2
         Asserts.succeedsEventually(ImmutableMap.of("timeout", TIMEOUT_MS), currentSizeAsserter(resizable, 2));
@@ -369,11 +362,10 @@ public class AutoScalerPolicyTest extends BrooklynAppUnitTestSupport {
         Duration minPeriodBetweenExecs = Duration.ZERO;
         resizable.policies().remove(policy);
         
-        policy = AutoScalerPolicy.builder()
+        policy = resizable.policies().add(AutoScalerPolicy.builder()
                 .resizeUpStabilizationDelay(Duration.of(resizeUpStabilizationDelay, TimeUnit.MILLISECONDS)) 
                 .minPeriodBetweenExecs(minPeriodBetweenExecs)
-                .build();
-        resizable.policies().add(policy);
+                .buildSpec());
         resizable.resize(1);
         
         // Ignores temporary blip
@@ -413,11 +405,10 @@ public class AutoScalerPolicyTest extends BrooklynAppUnitTestSupport {
         Duration minPeriodBetweenExecs = Duration.ZERO;
         resizable.policies().remove(policy);
         
-        policy = AutoScalerPolicy.builder()
+        policy = resizable.policies().add(AutoScalerPolicy.builder()
                 .resizeUpStabilizationDelay(Duration.of(resizeUpStabilizationDelay, TimeUnit.MILLISECONDS)) 
                 .minPeriodBetweenExecs(minPeriodBetweenExecs)
-                .build();
-        resizable.policies().add(policy);
+                .buildSpec());
         resizable.resize(1);
         
         // Will grow to only the max sustained in this time window 
@@ -497,11 +488,10 @@ public class AutoScalerPolicyTest extends BrooklynAppUnitTestSupport {
         Duration minPeriodBetweenExecs = Duration.ZERO;
         resizable.policies().remove(policy);
         
-        policy = AutoScalerPolicy.builder()
+        policy = resizable.policies().add(AutoScalerPolicy.builder()
                 .resizeDownStabilizationDelay(Duration.of(resizeStabilizationDelay, TimeUnit.MILLISECONDS)) 
                 .minPeriodBetweenExecs(minPeriodBetweenExecs)
-                .build();
-        resizable.policies().add(policy);
+                .buildSpec());
         resizable.resize(2);
         
         // Ignores temporary blip
@@ -535,11 +525,10 @@ public class AutoScalerPolicyTest extends BrooklynAppUnitTestSupport {
         policy.suspend();
         resizable.policies().remove(policy);
         
-        policy = AutoScalerPolicy.builder()
+        policy = resizable.policies().add(AutoScalerPolicy.builder()
                 .resizeDownStabilizationDelay(Duration.of(resizeDownStabilizationDelay, TimeUnit.MILLISECONDS))
                 .minPeriodBetweenExecs(minPeriodBetweenExecs)
-                .build();
-        resizable.policies().add(policy);
+                .buildSpec());
         resizable.resize(3);
         
         // Will shrink to only the min sustained in this time window
@@ -586,11 +575,10 @@ public class AutoScalerPolicyTest extends BrooklynAppUnitTestSupport {
         Duration minPeriodBetweenExecs = Duration.ZERO;
         resizable.policies().remove(policy);
         
-        policy = AutoScalerPolicy.builder()
+        policy = resizable.policies().add(AutoScalerPolicy.builder()
                 .resizeDownStabilizationDelay(Duration.of(resizeDownStabilizationDelay, TimeUnit.MILLISECONDS))
                 .minPeriodBetweenExecs(minPeriodBetweenExecs)
-                .build();
-        resizable.policies().add(policy);
+                .buildSpec());
         resizable.resize(2);
         
         // After suitable delay, grows to desired

http://git-wip-us.apache.org/repos/asf/brooklyn-server/blob/0fac0d6c/policy/src/test/java/org/apache/brooklyn/policy/ha/ServiceReplacerTest.java
----------------------------------------------------------------------
diff --git a/policy/src/test/java/org/apache/brooklyn/policy/ha/ServiceReplacerTest.java b/policy/src/test/java/org/apache/brooklyn/policy/ha/ServiceReplacerTest.java
index 9c17614..5faf289 100644
--- a/policy/src/test/java/org/apache/brooklyn/policy/ha/ServiceReplacerTest.java
+++ b/policy/src/test/java/org/apache/brooklyn/policy/ha/ServiceReplacerTest.java
@@ -103,8 +103,8 @@ public class ServiceReplacerTest {
                 .configure(DynamicCluster.INITIAL_SIZE, 3));
         app.start(ImmutableList.<Location>of(loc));
 
-        ServiceReplacer policy = new ServiceReplacer(new ConfigBag().configure(ServiceReplacer.FAILURE_SENSOR_TO_MONITOR, HASensors.ENTITY_FAILED));
-        cluster.policies().add(policy);
+        cluster.policies().add(PolicySpec.create(ServiceReplacer.class)
+                .configure(ServiceReplacer.FAILURE_SENSOR_TO_MONITOR, HASensors.ENTITY_FAILED));
 
         final Set<Entity> initialMembers = ImmutableSet.copyOf(cluster.getMembers());
         final TestEntity e1 = (TestEntity) Iterables.get(initialMembers, 1);
@@ -150,8 +150,8 @@ public class ServiceReplacerTest {
         
         log.info("started "+app+" for "+JavaClassNames.niceClassAndMethod());
         
-        ServiceReplacer policy = new ServiceReplacer(new ConfigBag().configure(ServiceReplacer.FAILURE_SENSOR_TO_MONITOR, HASensors.ENTITY_FAILED));
-        cluster.policies().add(policy);
+        cluster.policies().add(PolicySpec.create(ServiceReplacer.class)
+                .configure(ServiceReplacer.FAILURE_SENSOR_TO_MONITOR, HASensors.ENTITY_FAILED));
         
         final Set<Entity> initialMembers = ImmutableSet.copyOf(cluster.getMembers());
         final TestEntity e1 = (TestEntity) Iterables.get(initialMembers, 0);
@@ -200,10 +200,9 @@ public class ServiceReplacerTest {
                 .configure(DynamicCluster.QUARANTINE_FAILED_ENTITIES, true));
         app.start(ImmutableList.<Location>of(loc));
         
-        ServiceReplacer policy = new ServiceReplacer(new ConfigBag()
+        cluster.policies().add(PolicySpec.create(ServiceReplacer.class)
                 .configure(ServiceReplacer.FAILURE_SENSOR_TO_MONITOR, HASensors.ENTITY_FAILED)
                 .configure(ServiceReplacer.SET_ON_FIRE_ON_FAILURE, false));
-        cluster.policies().add(policy);
         
         final Set<Entity> initialMembers = ImmutableSet.copyOf(cluster.getMembers());
         final TestEntity e1 = (TestEntity) Iterables.get(initialMembers, 0);
@@ -289,10 +288,9 @@ public class ServiceReplacerTest {
                 .configure(DynamicCluster.QUARANTINE_FAILED_ENTITIES, true));
         app.start(ImmutableList.<Location>of(loc));
         
-        ServiceReplacer policy = new ServiceReplacer(new ConfigBag()
+        cluster.policies().add(PolicySpec.create(ServiceReplacer.class)
                 .configure(ServiceReplacer.FAILURE_SENSOR_TO_MONITOR, HASensors.ENTITY_FAILED)
                 .configure(ServiceReplacer.FAIL_ON_NUM_RECURRING_FAILURES, 3));
-        cluster.policies().add(policy);
 
         final Set<Entity> initialMembers = ImmutableSet.copyOf(cluster.getMembers());
         for (int i = 0; i < 5; i++) {

http://git-wip-us.apache.org/repos/asf/brooklyn-server/blob/0fac0d6c/policy/src/test/java/org/apache/brooklyn/policy/ha/ServiceRestarterTest.java
----------------------------------------------------------------------
diff --git a/policy/src/test/java/org/apache/brooklyn/policy/ha/ServiceRestarterTest.java b/policy/src/test/java/org/apache/brooklyn/policy/ha/ServiceRestarterTest.java
index ce060e3..6f412bc 100644
--- a/policy/src/test/java/org/apache/brooklyn/policy/ha/ServiceRestarterTest.java
+++ b/policy/src/test/java/org/apache/brooklyn/policy/ha/ServiceRestarterTest.java
@@ -71,8 +71,8 @@ public class ServiceRestarterTest extends BrooklynAppUnitTestSupport {
     
     @Test
     public void testRestartsOnFailure() throws Exception {
-        policy = new ServiceRestarter(new ConfigBag().configure(ServiceRestarter.FAILURE_SENSOR_TO_MONITOR, HASensors.ENTITY_FAILED));
-        e1.policies().add(policy);
+        policy = e1.policies().add(PolicySpec.create(ServiceRestarter.class)
+                .configure(ServiceRestarter.FAILURE_SENSOR_TO_MONITOR, HASensors.ENTITY_FAILED));
         
         e1.sensors().emit(HASensors.ENTITY_FAILED, new FailureDescriptor(e1, "simulate failure"));
         
@@ -84,8 +84,8 @@ public class ServiceRestarterTest extends BrooklynAppUnitTestSupport {
     
     @Test(groups="Integration") // Has a 1 second wait
     public void testDoesNotRestartsWhenHealthy() throws Exception {
-        policy = new ServiceRestarter(new ConfigBag().configure(ServiceRestarter.FAILURE_SENSOR_TO_MONITOR, HASensors.ENTITY_FAILED));
-        e1.policies().add(policy);
+        policy = e1.policies().add(PolicySpec.create(ServiceRestarter.class)
+                .configure(ServiceRestarter.FAILURE_SENSOR_TO_MONITOR, HASensors.ENTITY_FAILED));
         
         e1.sensors().emit(HASensors.ENTITY_RECOVERED, new FailureDescriptor(e1, "not a failure"));
         
@@ -101,8 +101,8 @@ public class ServiceRestarterTest extends BrooklynAppUnitTestSupport {
                 .configure(FailingEntity.FAIL_ON_RESTART, true));
         app.subscriptions().subscribe(e2, ServiceRestarter.ENTITY_RESTART_FAILED, eventListener);
 
-        policy = new ServiceRestarter(new ConfigBag().configure(ServiceRestarter.FAILURE_SENSOR_TO_MONITOR, HASensors.ENTITY_FAILED));
-        e2.policies().add(policy);
+        policy = e2.policies().add(PolicySpec.create(ServiceRestarter.class)
+                .configure(ServiceRestarter.FAILURE_SENSOR_TO_MONITOR, HASensors.ENTITY_FAILED));
 
         e2.sensors().emit(HASensors.ENTITY_FAILED, new FailureDescriptor(e2, "simulate failure"));
         
@@ -123,10 +123,9 @@ public class ServiceRestarterTest extends BrooklynAppUnitTestSupport {
                 .configure(FailingEntity.FAIL_ON_RESTART, true));
         app.subscriptions().subscribe(e2, ServiceRestarter.ENTITY_RESTART_FAILED, eventListener);
 
-        policy = new ServiceRestarter(new ConfigBag()
+        policy = e2.policies().add(PolicySpec.create(ServiceRestarter.class)
                 .configure(ServiceRestarter.FAILURE_SENSOR_TO_MONITOR, HASensors.ENTITY_FAILED)
                 .configure(ServiceRestarter.SET_ON_FIRE_ON_FAILURE, false));
-        e2.policies().add(policy);
 
         e2.sensors().emit(HASensors.ENTITY_FAILED, new FailureDescriptor(e2, "simulate failure"));
         

http://git-wip-us.apache.org/repos/asf/brooklyn-server/blob/0fac0d6c/rest/rest-resources/src/test/java/org/apache/brooklyn/rest/testing/mocks/RestMockSimplePolicy.java
----------------------------------------------------------------------
diff --git a/rest/rest-resources/src/test/java/org/apache/brooklyn/rest/testing/mocks/RestMockSimplePolicy.java b/rest/rest-resources/src/test/java/org/apache/brooklyn/rest/testing/mocks/RestMockSimplePolicy.java
index e15cdd1..cdab1ab 100644
--- a/rest/rest-resources/src/test/java/org/apache/brooklyn/rest/testing/mocks/RestMockSimplePolicy.java
+++ b/rest/rest-resources/src/test/java/org/apache/brooklyn/rest/testing/mocks/RestMockSimplePolicy.java
@@ -18,8 +18,6 @@
  */
 package org.apache.brooklyn.rest.testing.mocks;
 
-import java.util.Map;
-
 import org.apache.brooklyn.config.ConfigKey;
 import org.apache.brooklyn.core.config.BasicConfigKey;
 import org.apache.brooklyn.core.policy.AbstractPolicy;
@@ -36,11 +34,6 @@ public class RestMockSimplePolicy extends AbstractPolicy {
         super();
     }
 
-    @SuppressWarnings("rawtypes")
-    public RestMockSimplePolicy(Map flags) {
-        super(flags);
-    }
-
     @SetFromFlag("sampleConfig")
     public static final ConfigKey<String> SAMPLE_CONFIG = BasicConfigKey.builder(String.class)
             .name("brooklyn.rest.mock.sample.config")

http://git-wip-us.apache.org/repos/asf/brooklyn-server/blob/0fac0d6c/rest/rest-resources/src/test/java/org/apache/brooklyn/rest/util/BrooklynRestResourceUtilsTest.java
----------------------------------------------------------------------
diff --git a/rest/rest-resources/src/test/java/org/apache/brooklyn/rest/util/BrooklynRestResourceUtilsTest.java b/rest/rest-resources/src/test/java/org/apache/brooklyn/rest/util/BrooklynRestResourceUtilsTest.java
index 48908e3..9b17671 100644
--- a/rest/rest-resources/src/test/java/org/apache/brooklyn/rest/util/BrooklynRestResourceUtilsTest.java
+++ b/rest/rest-resources/src/test/java/org/apache/brooklyn/rest/util/BrooklynRestResourceUtilsTest.java
@@ -204,10 +204,6 @@ public class BrooklynRestResourceUtilsTest {
     }
     
     public static class MyPolicy extends AbstractPolicy {
-        public MyPolicy() {
-        }
-        public MyPolicy(Map<String, ?> flags) {
-            super(flags);
-        }
+        public MyPolicy() {}
     }
 }


[3/3] brooklyn-server git commit: This closes #729

Posted by dr...@apache.org.
This closes #729


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

Branch: refs/heads/master
Commit: ed25e5e390c155b2b804c35e9e28d83f5b693efe
Parents: 68babc6 260c80f
Author: Duncan Godwin <dr...@googlemail.com>
Authored: Mon Jun 12 15:13:30 2017 +0100
Committer: Duncan Godwin <dr...@googlemail.com>
Committed: Mon Jun 12 15:13:30 2017 +0100

----------------------------------------------------------------------
 .../creation/BrooklynYamlTypeInstantiator.java  |  9 +++
 .../group/AbstractMembershipTrackingPolicy.java |  4 -
 .../core/entity/PolicyRegistrationTest.java     | 39 ++++++----
 .../core/policy/basic/BasicPolicyTest.java      | 20 +++++
 .../core/policy/basic/PolicyConfigTest.java     | 68 +++++++++--------
 .../policy/basic/PolicySubscriptionTest.java    |  9 ++-
 .../core/policy/basic/PolicyTypeTest.java       | 16 ++--
 .../brooklyn/core/test/policy/TestPolicy.java   |  5 --
 .../group/MembershipTrackingPolicyTest.java     | 14 +---
 .../policy/autoscaling/AutoScalerPolicy.java    | 11 ++-
 .../brooklyn/policy/ha/ServiceReplacer.java     | 20 +----
 .../brooklyn/policy/ha/ServiceRestarter.java    | 23 +-----
 .../autoscaling/AutoScalerPolicyMetricTest.java | 79 +++++++++++++-------
 .../AutoScalerPolicyReconfigurationTest.java    | 61 ++++++++-------
 .../autoscaling/AutoScalerPolicyTest.java       | 52 +++++--------
 .../brooklyn/policy/ha/ServiceReplacerTest.java | 14 ++--
 .../policy/ha/ServiceRestarterTest.java         | 15 ++--
 .../testing/mocks/RestMockSimplePolicy.java     |  7 --
 .../util/BrooklynRestResourceUtilsTest.java     |  6 +-
 19 files changed, 239 insertions(+), 233 deletions(-)
----------------------------------------------------------------------