Skip to content

Commit 9413b4b

Browse files
committed
Use deep resolving task for policy effector args
1 parent 098e03e commit 9413b4b

File tree

1 file changed

+7
-18
lines changed

1 file changed

+7
-18
lines changed

policy/src/main/java/org/apache/brooklyn/policy/action/AbstractScheduledEffectorPolicy.java

+7-18
Original file line numberDiff line numberDiff line change
@@ -24,13 +24,11 @@
2424
import java.util.Calendar;
2525
import java.util.Date;
2626
import java.util.Map;
27-
import java.util.concurrent.Callable;
2827
import java.util.concurrent.Executors;
2928
import java.util.concurrent.ScheduledExecutorService;
3029

3130
import org.apache.brooklyn.api.effector.Effector;
3231
import org.apache.brooklyn.api.entity.EntityLocal;
33-
import org.apache.brooklyn.api.mgmt.Task;
3432
import org.apache.brooklyn.config.ConfigKey;
3533
import org.apache.brooklyn.core.config.ConfigKeys;
3634
import org.apache.brooklyn.core.entity.EntityInitializers;
@@ -50,7 +48,6 @@
5048
import com.google.common.base.Predicates;
5149
import com.google.common.collect.ImmutableMap;
5250
import com.google.common.collect.Iterables;
53-
import com.google.common.collect.Maps;
5451
import com.google.common.reflect.TypeToken;
5552

5653
@Beta
@@ -146,22 +143,14 @@ protected Duration getWaitUntil(String time) {
146143
public void run() {
147144
synchronized (mutex) {
148145
try {
149-
final ConfigBag bag = ResolvingConfigBag.newInstanceExtending(getManagementContext(), config().getBag());
150-
final Map<String, Object> args = EntityInitializers.resolve(bag, EFFECTOR_ARGUMENTS);
146+
ConfigBag bag = ResolvingConfigBag.newInstanceExtending(getManagementContext(), config().getBag());
147+
Map<String, Object> args = EntityInitializers.resolve(bag, EFFECTOR_ARGUMENTS);
151148
LOG.debug("{}: Resolving arguments for {}: {}", new Object[] { this, effector.getName(), Iterables.toString(args.keySet()) });
152-
bag.putAll(args);
153-
Task<Map<String, Object>> resolve = Tasks.create("resolveArguments", new Callable<Map<String, Object>>() {
154-
@Override
155-
public Map<String, Object> call() {
156-
Map<String, Object> resolved = Maps.newLinkedHashMap();
157-
for (String key : args.keySet()) {
158-
resolved.put(key, bag.getStringKey(key));
159-
}
160-
return resolved;
161-
}
162-
});
163-
getManagementContext().getExecutionContext(entity).submit(resolve);
164-
Map<String, Object> resolved = resolve.getUnchecked();
149+
Map<String, Object> resolved = (Map) Tasks.resolving(args, Object.class)
150+
.deep(true)
151+
.context(entity)
152+
.get();
153+
165154
LOG.debug("{}: Invoking effector on {}, {}({})", new Object[] { this, entity, effector.getName(), resolved });
166155
Object result = entity.invoke(effector, resolved).getUnchecked();
167156
LOG.debug("{}: Effector {} returned {}", new Object[] { this, effector.getName(), result });

0 commit comments

Comments
 (0)