You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@brooklyn.apache.org by he...@apache.org on 2014/10/27 15:56:10 UTC

[5/8] git commit: include parameters in description of effector invocations

include parameters in description of effector invocations


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

Branch: refs/heads/master
Commit: d311ba1824cb8d010c39c3e2ed6764bab850d651
Parents: 060e3da
Author: Alex Heneveld <al...@cloudsoftcorp.com>
Authored: Mon Oct 27 02:01:05 2014 +0000
Committer: Alex Heneveld <al...@cloudsoftcorp.com>
Committed: Mon Oct 27 07:51:41 2014 -0700

----------------------------------------------------------------------
 .../brooklyn/entity/basic/AbstractEffector.java | 23 +++++++++++---------
 .../brooklyn/entity/effector/EffectorTasks.java | 14 +++++++-----
 .../internal/AbstractManagementContext.java     |  4 +++-
 .../management/internal/EffectorUtils.java      | 12 ++++++++--
 4 files changed, 35 insertions(+), 18 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/incubator-brooklyn/blob/d311ba18/core/src/main/java/brooklyn/entity/basic/AbstractEffector.java
----------------------------------------------------------------------
diff --git a/core/src/main/java/brooklyn/entity/basic/AbstractEffector.java b/core/src/main/java/brooklyn/entity/basic/AbstractEffector.java
index 8f9eb3a..6c84c29 100644
--- a/core/src/main/java/brooklyn/entity/basic/AbstractEffector.java
+++ b/core/src/main/java/brooklyn/entity/basic/AbstractEffector.java
@@ -63,10 +63,14 @@ public abstract class AbstractEffector<T> extends EffectorBase<T> implements Eff
     /** Convenience for named-parameter syntax (needs map in first argument) */
     public T call(@SuppressWarnings("rawtypes") Map parameters, Entity entity) { return call(entity, parameters); }
 
+    /** @deprecated since 0.7.0 use {@link #getFlagsForTaskInvocationAt(Entity, Effector, ConfigBag)} */ @Deprecated
+    protected final Map<Object,Object> getFlagsForTaskInvocationAt(Entity entity) {
+        return getFlagsForTaskInvocationAt(entity, this, null);
+    }
     /** subclasses may override to add additional flags, but they should include the flags returned here 
      * unless there is very good reason not to */
-    protected Map<Object,Object> getFlagsForTaskInvocationAt(Entity entity) {
-        return EffectorUtils.getTaskFlagsForEffectorInvocation(entity, this);
+    protected Map<Object,Object> getFlagsForTaskInvocationAt(Entity entity, Effector<T> effector, ConfigBag parameters) {
+        return EffectorUtils.getTaskFlagsForEffectorInvocation(entity, effector, parameters);
     }
     
     /** not meant for overriding; subclasses should override the abstract {@link #call(Entity, Map)} method in this class */
@@ -75,14 +79,13 @@ public abstract class AbstractEffector<T> extends EffectorBase<T> implements Eff
         return new EffectorTaskFactory<T>() {
             @Override
             public Task<T> newTask(final Entity entity, final Effector<T> effector, final ConfigBag parameters) {
-                return 
-                    new DynamicSequentialTask<T>(
-                        getFlagsForTaskInvocationAt(entity),
-                new Callable<T>() {
-                    @Override public T call() {
-                        return AbstractEffector.this.call(parameters.getAllConfig(), entity);
-                    }
-                });
+                return new DynamicSequentialTask<T>(
+                        getFlagsForTaskInvocationAt(entity, AbstractEffector.this, parameters),
+                        new Callable<T>() {
+                            @Override public T call() {
+                                return AbstractEffector.this.call(parameters.getAllConfig(), entity);
+                            }
+                        });
             }
         };
     }

http://git-wip-us.apache.org/repos/asf/incubator-brooklyn/blob/d311ba18/core/src/main/java/brooklyn/entity/effector/EffectorTasks.java
----------------------------------------------------------------------
diff --git a/core/src/main/java/brooklyn/entity/effector/EffectorTasks.java b/core/src/main/java/brooklyn/entity/effector/EffectorTasks.java
index 2a6f150..c82eb46 100644
--- a/core/src/main/java/brooklyn/entity/effector/EffectorTasks.java
+++ b/core/src/main/java/brooklyn/entity/effector/EffectorTasks.java
@@ -72,7 +72,7 @@ public class EffectorTasks {
             final AtomicReference<DynamicSequentialTask<T>> dst = new AtomicReference<DynamicSequentialTask<T>>();
 
             dst.set(new DynamicSequentialTask<T>(
-                    getFlagsForTaskInvocationAt(entity, effector), 
+                    getFlagsForTaskInvocationAt(entity, effector, parameters), 
                     new Callable<T>() {
                         @Override
                         public T call() throws Exception {
@@ -91,17 +91,21 @@ public class EffectorTasks {
                     });
             return dst.get();
         };
-        
+
+        /** @deprecated since 0.7.0 use {@link #getFlagsForTaskInvocationAt(Entity, Effector, ConfigBag)} */ @Deprecated
+        protected final Map<Object,Object> getFlagsForTaskInvocationAt(Entity entity, Effector<?> effector) {
+            return getFlagsForTaskInvocationAt(entity, effector, null);
+        }
         /** subclasses may override to add additional flags, but they should include the flags returned here 
          * unless there is very good reason not to; default impl returns a MutableMap */
-        protected Map<Object,Object> getFlagsForTaskInvocationAt(Entity entity, Effector<?> effector) {
-            return EffectorUtils.getTaskFlagsForEffectorInvocation(entity, effector);
+        protected Map<Object,Object> getFlagsForTaskInvocationAt(Entity entity, Effector<?> effector, ConfigBag parameters) {
+            return EffectorUtils.getTaskFlagsForEffectorInvocation(entity, effector, parameters);
         }
     }
     
     /** wrapper for {@link EffectorTaskFactory} which ensures effector task tags are applied to it if needed
      * (wrapping in a task if needed); without this, {@link EffectorBody}-based effectors get it by
-     * virtue of the call to {@link #getFlagsForTaskInvocationAt(Entity, Effector)} therein
+     * virtue of the call to {@link #getFlagsForTaskInvocationAt(Entity,Effector,ConfigBag)} therein
      * but {@link EffectorTaskFactory}-based effectors generate a task without the right tags
      * to be able to tell using {@link BrooklynTaskTags} the effector-context of the task 
      * <p>

http://git-wip-us.apache.org/repos/asf/incubator-brooklyn/blob/d311ba18/core/src/main/java/brooklyn/management/internal/AbstractManagementContext.java
----------------------------------------------------------------------
diff --git a/core/src/main/java/brooklyn/management/internal/AbstractManagementContext.java b/core/src/main/java/brooklyn/management/internal/AbstractManagementContext.java
index 425390b..944dac4 100644
--- a/core/src/main/java/brooklyn/management/internal/AbstractManagementContext.java
+++ b/core/src/main/java/brooklyn/management/internal/AbstractManagementContext.java
@@ -71,6 +71,7 @@ import brooklyn.management.ha.HighAvailabilityManagerImpl;
 import brooklyn.util.GroovyJavaMethods;
 import brooklyn.util.ResourceUtils;
 import brooklyn.util.collections.MutableMap;
+import brooklyn.util.config.ConfigBag;
 import brooklyn.util.guava.Maybe;
 import brooklyn.util.task.BasicExecutionContext;
 import brooklyn.util.task.Tasks;
@@ -272,7 +273,8 @@ public abstract class AbstractManagementContext implements ManagementContextInte
             if (current == null || !entity.equals(BrooklynTaskTags.getContextEntity(current)) || !isManagedLocally(entity)) {
                 manageIfNecessary(entity, eff.getName());
                 // Wrap in a task if we aren't already in a task that is tagged with this entity
-                Task<T> task = runAtEntity( EffectorUtils.getTaskFlagsForEffectorInvocation(entity, eff),
+                Task<T> task = runAtEntity( EffectorUtils.getTaskFlagsForEffectorInvocation(entity, eff, 
+                            ConfigBag.newInstance().configureStringKey("args", args)),
                         entity, 
                         new Callable<T>() {
                             public T call() {

http://git-wip-us.apache.org/repos/asf/incubator-brooklyn/blob/d311ba18/core/src/main/java/brooklyn/management/internal/EffectorUtils.java
----------------------------------------------------------------------
diff --git a/core/src/main/java/brooklyn/management/internal/EffectorUtils.java b/core/src/main/java/brooklyn/management/internal/EffectorUtils.java
index 62265de..f2a3271 100644
--- a/core/src/main/java/brooklyn/management/internal/EffectorUtils.java
+++ b/core/src/main/java/brooklyn/management/internal/EffectorUtils.java
@@ -41,6 +41,7 @@ import brooklyn.entity.basic.EntityInternal;
 import brooklyn.management.Task;
 import brooklyn.util.collections.MutableList;
 import brooklyn.util.collections.MutableMap;
+import brooklyn.util.config.ConfigBag;
 import brooklyn.util.exceptions.Exceptions;
 import brooklyn.util.exceptions.PropagatedRuntimeException;
 import brooklyn.util.flags.TypeCoercions;
@@ -325,10 +326,17 @@ public class EffectorUtils {
         return findEffector(entity.getEntityType().getEffectors(), effectorName);
     }
 
-    /** returns a (mutable) map of the standard flags which should be placed on an effector */
+    /** @deprecated since 0.7.0 use {@link #getTaskFlagsForEffectorInvocation(Entity, Effector, ConfigBag)} */
     public static Map<Object,Object> getTaskFlagsForEffectorInvocation(Entity entity, Effector<?> effector) {
+        return getTaskFlagsForEffectorInvocation(entity, effector, null);
+    }
+    
+    /** returns a (mutable) map of the standard flags which should be placed on an effector */
+    public static Map<Object,Object> getTaskFlagsForEffectorInvocation(Entity entity, Effector<?> effector, ConfigBag parameters) {
         return MutableMap.builder()
-                .put("description", "Invoking effector "+effector.getName()+" on "+entity.getDisplayName())
+                .put("description", "Invoking effector "+effector.getName()
+                    +" on "+entity.getDisplayName()
+                    +(parameters!=null ? " with parameters "+parameters.getAllConfig() : ""))
                 .put("displayName", effector.getName())
                 .put("tags", MutableList.of(
                         BrooklynTaskTags.EFFECTOR_TAG,