PR 1427 policy persistence: incorporate comments

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

Branch: refs/heads/master
Commit: ab503114734128ccc06cd282b0a2024323d0690e
Parents: 94aecdb
Author: Aled Sage <aled.s...@gmail.com>
Authored: Fri May 30 20:11:17 2014 +0100
Committer: Aled Sage <aled.s...@gmail.com>
Committed: Fri May 30 20:11:17 2014 +0100

----------------------------------------------------------------------
 .../rebind/PeriodicDeltaChangeListener.java     |  4 +--
 .../rebind/RebindExceptionHandlerImpl.java      |  2 +-
 .../entity/rebind/RebindManagerImpl.java        | 21 +++++----------
 .../entity/rebind/dto/BasicPolicyMemento.java   | 16 +++++------
 .../entity/rebind/dto/MementosGenerators.java   |  1 -
 .../internal/BrooklynFeatureEnablement.java     | 28 +++++++++++++-------
 .../entity/rebind/RebindTestFixture.java        |  8 +++---
 .../internal/BrooklynFeatureEnablementTest.java |  4 +--
 .../brooklyn/util/javalang/Reflections.java     |  8 ++++++
 9 files changed, 49 insertions(+), 43 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/incubator-brooklyn/blob/ab503114/core/src/main/java/brooklyn/entity/rebind/PeriodicDeltaChangeListener.java
----------------------------------------------------------------------
diff --git 
a/core/src/main/java/brooklyn/entity/rebind/PeriodicDeltaChangeListener.java 
b/core/src/main/java/brooklyn/entity/rebind/PeriodicDeltaChangeListener.java
index 6715014..2905493 100644
--- a/core/src/main/java/brooklyn/entity/rebind/PeriodicDeltaChangeListener.java
+++ b/core/src/main/java/brooklyn/entity/rebind/PeriodicDeltaChangeListener.java
@@ -85,8 +85,8 @@ public class PeriodicDeltaChangeListener implements 
ChangeListener {
         this.persister = persister;
         this.period = Duration.of(periodMillis, TimeUnit.MILLISECONDS);
         
-        this.persistPoliciesEnabled = 
BrooklynFeatureEnablement.isEnabled(BrooklynFeatureEnablement.ENABLE_POLICY_PERSISTENCE_PROPERTY);
-        this.persistEnrichersEnabled = 
BrooklynFeatureEnablement.isEnabled(BrooklynFeatureEnablement.ENABLE_ENRICHER_PERSISTENCE_PROPERTY);
+        this.persistPoliciesEnabled = 
BrooklynFeatureEnablement.isEnabled(BrooklynFeatureEnablement.FEATURE_POLICY_PERSISTENCE_PROPERTY);
+        this.persistEnrichersEnabled = 
BrooklynFeatureEnablement.isEnabled(BrooklynFeatureEnablement.FEATURE_ENRICHER_PERSISTENCE_PROPERTY);
     }
     
     public void start() {

http://git-wip-us.apache.org/repos/asf/incubator-brooklyn/blob/ab503114/core/src/main/java/brooklyn/entity/rebind/RebindExceptionHandlerImpl.java
----------------------------------------------------------------------
diff --git 
a/core/src/main/java/brooklyn/entity/rebind/RebindExceptionHandlerImpl.java 
b/core/src/main/java/brooklyn/entity/rebind/RebindExceptionHandlerImpl.java
index 028af0b..4dc2b54 100644
--- a/core/src/main/java/brooklyn/entity/rebind/RebindExceptionHandlerImpl.java
+++ b/core/src/main/java/brooklyn/entity/rebind/RebindExceptionHandlerImpl.java
@@ -264,7 +264,7 @@ public class RebindExceptionHandlerImpl implements 
RebindExceptionHandler {
                 allExceptions.add(new IllegalStateException("Missing 
referenced location"+(missingLocations.size() == 1 ? "" : "s")+": 
"+missingLocations));
             }
             if (missingPolicies.size() > 0) {
-                allExceptions.add(new IllegalStateException("Missing 
referenced policy"+(missingPolicies.size() == 1 ? "" : "s")+": 
"+missingPolicies));
+                allExceptions.add(new IllegalStateException("Missing 
referenced polic"+(missingPolicies.size() == 1 ? "y" : "ies")+": 
"+missingPolicies));
             }
             if (missingEnrichers.size() > 0) {
                 allExceptions.add(new IllegalStateException("Missing 
referenced enricher"+(missingEnrichers.size() == 1 ? "" : "s")+": 
"+missingEnrichers));

http://git-wip-us.apache.org/repos/asf/incubator-brooklyn/blob/ab503114/core/src/main/java/brooklyn/entity/rebind/RebindManagerImpl.java
----------------------------------------------------------------------
diff --git a/core/src/main/java/brooklyn/entity/rebind/RebindManagerImpl.java 
b/core/src/main/java/brooklyn/entity/rebind/RebindManagerImpl.java
index 081b294..d6491a4 100644
--- a/core/src/main/java/brooklyn/entity/rebind/RebindManagerImpl.java
+++ b/core/src/main/java/brooklyn/entity/rebind/RebindManagerImpl.java
@@ -83,8 +83,8 @@ public class RebindManagerImpl implements RebindManager {
         this.managementContext = managementContext;
         this.changeListener = ChangeListener.NOOP;
         
-        this.persistPoliciesEnabled = 
BrooklynFeatureEnablement.isEnabled(BrooklynFeatureEnablement.ENABLE_POLICY_PERSISTENCE_PROPERTY);
-        this.persistEnrichersEnabled = 
BrooklynFeatureEnablement.isEnabled(BrooklynFeatureEnablement.ENABLE_ENRICHER_PERSISTENCE_PROPERTY);
+        this.persistPoliciesEnabled = 
BrooklynFeatureEnablement.isEnabled(BrooklynFeatureEnablement.FEATURE_POLICY_PERSISTENCE_PROPERTY);
+        this.persistEnrichersEnabled = 
BrooklynFeatureEnablement.isEnabled(BrooklynFeatureEnablement.FEATURE_ENRICHER_PERSISTENCE_PROPERTY);
     }
 
     /**
@@ -283,14 +283,14 @@ public class RebindManagerImpl implements RebindManager {
             if (persistEnrichersEnabled) {
                 LOG.info("RebindManager instantiating enrichers: {}", 
memento.getEnricherIds());
                 for (EnricherMemento enricherMemento : 
memento.getEnricherMementos().values()) {
-                    if (LOG.isDebugEnabled()) LOG.debug("RebindManager 
instantiating policy {}", enricherMemento);
+                    if (LOG.isDebugEnabled()) LOG.debug("RebindManager 
instantiating enricher {}", enricherMemento);
                     
                     Enricher enricher = newEnricher(enricherMemento, 
reflections);
                     enrichers.put(enricherMemento.getId(), enricher);
                     rebindContext.registerEnricher(enricherMemento.getId(), 
enricher);
                 }
             } else {
-                LOG.debug("Not rebinding enrichers; feature disabled: {}", 
memento.getPolicyIds());
+                LOG.debug("Not rebinding enrichers; feature disabled: {}", 
memento.getEnricherIds());
             } 
             
             // Reconstruct locations
@@ -617,23 +617,14 @@ public class RebindManagerImpl implements RebindManager {
         if (!Policy.class.isAssignableFrom(clazz)) {
             throw new IllegalArgumentException("Class "+clazz+" is not a 
policy");
         }
-        return hasNoArgConstructor(clazz);
+        return Reflections.hasNoArgConstructor(clazz);
     }
     
     private static boolean isNewStyleEnricher(Class<?> clazz) {
         if (!Enricher.class.isAssignableFrom(clazz)) {
             throw new IllegalArgumentException("Class "+clazz+" is not an 
enricher");
         }
-        return hasNoArgConstructor(clazz);
-    }
-    
-    private static boolean hasNoArgConstructor(Class<?> clazz) {
-        try {
-            clazz.getConstructor(new Class[0]);
-            return true;
-        } catch (NoSuchMethodException e) {
-            return false;
-        }
+        return Reflections.hasNoArgConstructor(clazz);
     }
     
     /**

http://git-wip-us.apache.org/repos/asf/incubator-brooklyn/blob/ab503114/core/src/main/java/brooklyn/entity/rebind/dto/BasicPolicyMemento.java
----------------------------------------------------------------------
diff --git 
a/core/src/main/java/brooklyn/entity/rebind/dto/BasicPolicyMemento.java 
b/core/src/main/java/brooklyn/entity/rebind/dto/BasicPolicyMemento.java
index 795ea2e..7923549 100644
--- a/core/src/main/java/brooklyn/entity/rebind/dto/BasicPolicyMemento.java
+++ b/core/src/main/java/brooklyn/entity/rebind/dto/BasicPolicyMemento.java
@@ -38,15 +38,15 @@ public class BasicPolicyMemento extends AbstractMemento 
implements PolicyMemento
         }
     }
     
-       private Map<String,Object> config;
+    private Map<String,Object> config;
     private Map<String, Object> fields;
 
     // Trusts the builder to not mess around with mutability after calling 
build()
-       protected BasicPolicyMemento(Builder builder) {
-           super(builder);
-           config = toPersistedMap(builder.config);
-       }
-       
+    protected BasicPolicyMemento(Builder builder) {
+        super(builder);
+        config = toPersistedMap(builder.config);
+    }
+    
     @Deprecated
     @Override
     protected void setCustomFields(Map<String, Object> fields) {
@@ -61,8 +61,8 @@ public class BasicPolicyMemento extends AbstractMemento 
implements PolicyMemento
 
     @Override
     public Map<String, Object> getConfig() {
-               return fromPersistedMap(config);
-       }
+        return fromPersistedMap(config);
+    }
     
     @Override
     protected ToStringHelper newVerboseStringHelper() {

http://git-wip-us.apache.org/repos/asf/incubator-brooklyn/blob/ab503114/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 9f744ba..99f1804 100644
--- a/core/src/main/java/brooklyn/entity/rebind/dto/MementosGenerators.java
+++ b/core/src/main/java/brooklyn/entity/rebind/dto/MementosGenerators.java
@@ -251,7 +251,6 @@ public class MementosGenerators {
         
builder.config.putAll(FlagUtils.getFieldsWithFlagsExcludingModifiers(enricher, 
Modifier.STATIC ^ Modifier.TRANSIENT));
 
         return builder;
-
     }
     
     protected static Object configValueToPersistable(Object value) {

http://git-wip-us.apache.org/repos/asf/incubator-brooklyn/blob/ab503114/core/src/main/java/brooklyn/internal/BrooklynFeatureEnablement.java
----------------------------------------------------------------------
diff --git 
a/core/src/main/java/brooklyn/internal/BrooklynFeatureEnablement.java 
b/core/src/main/java/brooklyn/internal/BrooklynFeatureEnablement.java
index 8d8c074..7c2a9ba 100644
--- a/core/src/main/java/brooklyn/internal/BrooklynFeatureEnablement.java
+++ b/core/src/main/java/brooklyn/internal/BrooklynFeatureEnablement.java
@@ -14,11 +14,11 @@ import com.google.common.collect.Maps;
  */
 public class BrooklynFeatureEnablement {
 
-    public static final String ENABLE_POLICY_PERSISTENCE_PROPERTY = 
"brooklyn.experimental.feature.policyPersistence";
+    public static final String FEATURE_POLICY_PERSISTENCE_PROPERTY = 
"brooklyn.experimental.feature.policyPersistence";
     
-    public static final String ENABLE_ENRICHER_PERSISTENCE_PROPERTY = 
"brooklyn.experimental.feature.enricherPersistence";
+    public static final String FEATURE_ENRICHER_PERSISTENCE_PROPERTY = 
"brooklyn.experimental.feature.enricherPersistence";
     
-    private static final Map<String, Boolean> FEATURE_ENABLEMENT_CACHE = 
Maps.newLinkedHashMap();
+    private static final Map<String, Boolean> FEATURE_ENABLEMENTS = 
Maps.newLinkedHashMap();
 
     private static final Object MUTEX = new Object();
     
@@ -31,29 +31,37 @@ public class BrooklynFeatureEnablement {
     
     public static boolean isEnabled(String property) {
         synchronized (MUTEX) {
-            if (!FEATURE_ENABLEMENT_CACHE.containsKey(property)) {
+            if (!FEATURE_ENABLEMENTS.containsKey(property)) {
                 String rawVal = System.getProperty(property);
                 boolean val = Boolean.parseBoolean(rawVal);
-                FEATURE_ENABLEMENT_CACHE.put(property, val);
+                FEATURE_ENABLEMENTS.put(property, val);
             }
-            return FEATURE_ENABLEMENT_CACHE.get(property);
+            return FEATURE_ENABLEMENTS.get(property);
         }
     }
+
+    public static boolean enable(String property) {
+        return setEnablement(property, true);
+    }
+    
+    public static boolean disable(String property) {
+        return setEnablement(property, false);
+    }
     
     public static boolean setEnablement(String property, boolean val) {
         synchronized (MUTEX) {
             boolean oldVal = isEnabled(property);
-            FEATURE_ENABLEMENT_CACHE.put(property, val);
+            FEATURE_ENABLEMENTS.put(property, val);
             return oldVal;
         }
     }
     
     static void setDefault(String property, boolean val) {
         synchronized (MUTEX) {
-            if (!FEATURE_ENABLEMENT_CACHE.containsKey(property)) {
+            if (!FEATURE_ENABLEMENTS.containsKey(property)) {
                 String rawVal = System.getProperty(property);
                 if (rawVal == null) {
-                    FEATURE_ENABLEMENT_CACHE.put(property, val);
+                    FEATURE_ENABLEMENTS.put(property, val);
                 }
             }
         }
@@ -61,7 +69,7 @@ public class BrooklynFeatureEnablement {
     
     static void clearCache() {
         synchronized (MUTEX) {
-            FEATURE_ENABLEMENT_CACHE.clear();
+            FEATURE_ENABLEMENTS.clear();
         }
     }
 }

http://git-wip-us.apache.org/repos/asf/incubator-brooklyn/blob/ab503114/core/src/test/java/brooklyn/entity/rebind/RebindTestFixture.java
----------------------------------------------------------------------
diff --git a/core/src/test/java/brooklyn/entity/rebind/RebindTestFixture.java 
b/core/src/test/java/brooklyn/entity/rebind/RebindTestFixture.java
index 9099418..d315d75 100644
--- a/core/src/test/java/brooklyn/entity/rebind/RebindTestFixture.java
+++ b/core/src/test/java/brooklyn/entity/rebind/RebindTestFixture.java
@@ -34,8 +34,8 @@ public abstract class RebindTestFixture<T extends 
StartableApplication> {
     
     @BeforeMethod(alwaysRun=true)
     public void setUp() throws Exception {
-        origPolicyPersistenceEnabled = 
BrooklynFeatureEnablement.setEnablement(BrooklynFeatureEnablement.ENABLE_POLICY_PERSISTENCE_PROPERTY,
 true);
-        origEnricherPersistenceEnabled = 
BrooklynFeatureEnablement.setEnablement(BrooklynFeatureEnablement.ENABLE_ENRICHER_PERSISTENCE_PROPERTY,
 true);
+        origPolicyPersistenceEnabled = 
BrooklynFeatureEnablement.enable(BrooklynFeatureEnablement.FEATURE_POLICY_PERSISTENCE_PROPERTY);
+        origEnricherPersistenceEnabled = 
BrooklynFeatureEnablement.enable(BrooklynFeatureEnablement.FEATURE_ENRICHER_PERSISTENCE_PROPERTY);
         
         mementoDir = Files.createTempDir();
         origManagementContext = 
RebindTestUtils.newPersistingManagementContext(mementoDir, classLoader, 1);
@@ -58,8 +58,8 @@ public abstract class RebindTestFixture<T extends 
StartableApplication> {
             if (mementoDir != null) 
RebindTestUtils.deleteMementoDir(mementoDir);
             origManagementContext = null;
         } finally {
-            
BrooklynFeatureEnablement.setEnablement(BrooklynFeatureEnablement.ENABLE_POLICY_PERSISTENCE_PROPERTY,
 origPolicyPersistenceEnabled);
-            
BrooklynFeatureEnablement.setEnablement(BrooklynFeatureEnablement.ENABLE_ENRICHER_PERSISTENCE_PROPERTY,
 origEnricherPersistenceEnabled);
+            
BrooklynFeatureEnablement.setEnablement(BrooklynFeatureEnablement.FEATURE_POLICY_PERSISTENCE_PROPERTY,
 origPolicyPersistenceEnabled);
+            
BrooklynFeatureEnablement.setEnablement(BrooklynFeatureEnablement.FEATURE_ENRICHER_PERSISTENCE_PROPERTY,
 origEnricherPersistenceEnabled);
         }
     }
 

http://git-wip-us.apache.org/repos/asf/incubator-brooklyn/blob/ab503114/core/src/test/java/brooklyn/internal/BrooklynFeatureEnablementTest.java
----------------------------------------------------------------------
diff --git 
a/core/src/test/java/brooklyn/internal/BrooklynFeatureEnablementTest.java 
b/core/src/test/java/brooklyn/internal/BrooklynFeatureEnablementTest.java
index e842c15..9ac2686 100644
--- a/core/src/test/java/brooklyn/internal/BrooklynFeatureEnablementTest.java
+++ b/core/src/test/java/brooklyn/internal/BrooklynFeatureEnablementTest.java
@@ -24,11 +24,11 @@ public class BrooklynFeatureEnablementTest {
         String featureProperty = 
"brooklyn.experimental.feature.testCanSetPropertyEnablement";
         boolean preTestVal = 
BrooklynFeatureEnablement.isEnabled(featureProperty);
         try {
-            boolean oldVal = 
BrooklynFeatureEnablement.setEnablement(featureProperty, true);
+            boolean oldVal = BrooklynFeatureEnablement.enable(featureProperty);
             assertEquals(oldVal, preTestVal);
             assertTrue(BrooklynFeatureEnablement.isEnabled(featureProperty));
             
-            boolean oldVal2 = 
BrooklynFeatureEnablement.setEnablement(featureProperty, false);
+            boolean oldVal2 = 
BrooklynFeatureEnablement.disable(featureProperty);
             assertTrue(oldVal2);
             assertFalse(BrooklynFeatureEnablement.isEnabled(featureProperty));
         } finally {

http://git-wip-us.apache.org/repos/asf/incubator-brooklyn/blob/ab503114/utils/common/src/main/java/brooklyn/util/javalang/Reflections.java
----------------------------------------------------------------------
diff --git a/utils/common/src/main/java/brooklyn/util/javalang/Reflections.java 
b/utils/common/src/main/java/brooklyn/util/javalang/Reflections.java
index 43d1e3e..9e41d48 100644
--- a/utils/common/src/main/java/brooklyn/util/javalang/Reflections.java
+++ b/utils/common/src/main/java/brooklyn/util/javalang/Reflections.java
@@ -747,4 +747,12 @@ public class Reflections {
         findAllInterfaces(type.getSuperclass(), found);
     }
 
+    public static boolean hasNoArgConstructor(Class<?> clazz) {
+        try {
+            clazz.getConstructor(new Class[0]);
+            return true;
+        } catch (NoSuchMethodException e) {
+            return false;
+        }
+    }
 }

Reply via email to