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,