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/09/17 12:30:59 UTC

[2/5] incubator-brooklyn git commit: Cassandra: effector impl not anonymous inner class

Cassandra: effector impl not anonymous inner class

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

Branch: refs/heads/master
Commit: a5c4b166ca6638ad8035e52d2d41e12ba9a205cd
Parents: bc5c9e4
Author: Aled Sage <al...@gmail.com>
Authored: Tue Sep 15 09:20:33 2015 +0100
Committer: Aled Sage <al...@gmail.com>
Committed: Tue Sep 15 09:20:33 2015 +0100

----------------------------------------------------------------------
 .../nosql/cassandra/CassandraNodeImpl.java      | 20 ++++++++++++++++++--
 1 file changed, 18 insertions(+), 2 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/incubator-brooklyn/blob/a5c4b166/software/nosql/src/main/java/org/apache/brooklyn/entity/nosql/cassandra/CassandraNodeImpl.java
----------------------------------------------------------------------
diff --git a/software/nosql/src/main/java/org/apache/brooklyn/entity/nosql/cassandra/CassandraNodeImpl.java b/software/nosql/src/main/java/org/apache/brooklyn/entity/nosql/cassandra/CassandraNodeImpl.java
index 578fa6b..dddc1cd 100644
--- a/software/nosql/src/main/java/org/apache/brooklyn/entity/nosql/cassandra/CassandraNodeImpl.java
+++ b/software/nosql/src/main/java/org/apache/brooklyn/entity/nosql/cassandra/CassandraNodeImpl.java
@@ -97,12 +97,15 @@ public class CassandraNodeImpl extends SoftwareProcessImpl implements CassandraN
     public void init() {
         super.init();
         
-        getMutableEntityType().addEffector(EXECUTE_SCRIPT, new EffectorBody<String>() {
+        // TODO PERSISTENCE WORKAROUND kept anonymous class in case referenced in persisted state
+        new EffectorBody<String>() {
             @Override
             public String call(ConfigBag parameters) {
                 return executeScript((String)parameters.getStringKey("commands"));
             }
-        });
+        };
+        
+        getMutableEntityType().addEffector(EXECUTE_SCRIPT, new ExecuteScriptEffectorBody(this));
         
         Entities.checkRequiredUrl(this, getCassandraConfigTemplateUrl());
         Entities.getRequiredUrlConfig(this, CASSANDRA_RACKDC_CONFIG_TEMPLATE_URL);
@@ -110,6 +113,18 @@ public class CassandraNodeImpl extends SoftwareProcessImpl implements CassandraN
         connectEnrichers();
     }
     
+    private static class ExecuteScriptEffectorBody extends EffectorBody<String> {
+        private final CassandraNode entity;
+        
+        public ExecuteScriptEffectorBody(CassandraNode entity) {
+            this.entity = entity;
+        }
+        @Override
+        public String call(ConfigBag parameters) {
+            return entity.executeScript((String)parameters.getStringKey("commands"));
+        }
+    }
+    
     /**
      * Some clouds (e.g. Rackspace) give us VMs that have two nics: one for private and one for public.
      * If the private IP is used then it doesn't work, even for a cluster purely internal to Rackspace!
@@ -246,6 +261,7 @@ public class CassandraNodeImpl extends SoftwareProcessImpl implements CassandraN
         String subnetAddress = getAttribute(CassandraNode.SUBNET_ADDRESS);
         return Strings.isNonBlank(subnetAddress) ? subnetAddress : getAttribute(CassandraNode.ADDRESS);
     }
+    
     @Override public String getBroadcastAddress() {
         String sensorName = getConfig(BROADCAST_ADDRESS_SENSOR);
         if (Strings.isNonBlank(sensorName))