tidy BasicExecutionManagement constructors
Project: http://git-wip-us.apache.org/repos/asf/brooklyn-server/repo Commit: http://git-wip-us.apache.org/repos/asf/brooklyn-server/commit/c1f78bb2 Tree: http://git-wip-us.apache.org/repos/asf/brooklyn-server/tree/c1f78bb2 Diff: http://git-wip-us.apache.org/repos/asf/brooklyn-server/diff/c1f78bb2 Branch: refs/heads/master Commit: c1f78bb2ba82504b2f0bfc1aa4831564d1f314b4 Parents: a341cce Author: Alex Heneveld <[email protected]> Authored: Fri Sep 15 09:21:29 2017 +0100 Committer: Alex Heneveld <[email protected]> Committed: Fri Sep 15 10:29:09 2017 +0100 ---------------------------------------------------------------------- .../internal/AbstractManagementContext.java | 5 ++-- .../util/core/task/BasicExecutionContext.java | 26 +++++++++++++++----- .../brooklyn/util/collections/MutableSet.java | 14 ++++++++++- 3 files changed, 35 insertions(+), 10 deletions(-) ---------------------------------------------------------------------- http://git-wip-us.apache.org/repos/asf/brooklyn-server/blob/c1f78bb2/core/src/main/java/org/apache/brooklyn/core/mgmt/internal/AbstractManagementContext.java ---------------------------------------------------------------------- diff --git a/core/src/main/java/org/apache/brooklyn/core/mgmt/internal/AbstractManagementContext.java b/core/src/main/java/org/apache/brooklyn/core/mgmt/internal/AbstractManagementContext.java index 322d60e..52eed44 100644 --- a/core/src/main/java/org/apache/brooklyn/core/mgmt/internal/AbstractManagementContext.java +++ b/core/src/main/java/org/apache/brooklyn/core/mgmt/internal/AbstractManagementContext.java @@ -72,7 +72,6 @@ import org.apache.brooklyn.core.mgmt.ha.HighAvailabilityManagerImpl; import org.apache.brooklyn.core.mgmt.rebind.RebindManagerImpl; import org.apache.brooklyn.core.typereg.BasicBrooklynTypeRegistry; import org.apache.brooklyn.util.collections.MutableList; -import org.apache.brooklyn.util.collections.MutableMap; import org.apache.brooklyn.util.core.ResourceUtils; import org.apache.brooklyn.util.core.config.ConfigBag; import org.apache.brooklyn.util.core.task.BasicExecutionContext; @@ -237,7 +236,7 @@ public abstract class AbstractManagementContext implements ManagementContextInte BrooklynTaskTags.tagForContextEntity(e), this ); - return new BasicExecutionContext(MutableMap.of("tags", tags), getExecutionManager()); + return new BasicExecutionContext(getExecutionManager(), tags); } else { return ((EntityInternal)e).getExecutionContext(); } @@ -250,7 +249,7 @@ public abstract class AbstractManagementContext implements ManagementContextInte this, BrooklynTaskTags.BROOKLYN_SERVER_TASK_TAG ); - return new BasicExecutionContext(MutableMap.of("tags", tags), getExecutionManager()); + return new BasicExecutionContext(getExecutionManager(), tags); } @Override http://git-wip-us.apache.org/repos/asf/brooklyn-server/blob/c1f78bb2/core/src/main/java/org/apache/brooklyn/util/core/task/BasicExecutionContext.java ---------------------------------------------------------------------- diff --git a/core/src/main/java/org/apache/brooklyn/util/core/task/BasicExecutionContext.java b/core/src/main/java/org/apache/brooklyn/util/core/task/BasicExecutionContext.java index 547ae24..73baef2 100644 --- a/core/src/main/java/org/apache/brooklyn/util/core/task/BasicExecutionContext.java +++ b/core/src/main/java/org/apache/brooklyn/util/core/task/BasicExecutionContext.java @@ -21,7 +21,6 @@ package org.apache.brooklyn.util.core.task; import java.lang.reflect.Proxy; import java.util.ArrayList; import java.util.Collection; -import java.util.Collections; import java.util.LinkedHashSet; import java.util.Map; import java.util.Set; @@ -45,6 +44,7 @@ import org.apache.brooklyn.core.mgmt.BrooklynTaskTags; import org.apache.brooklyn.core.mgmt.BrooklynTaskTags.WrappedEntity; import org.apache.brooklyn.core.mgmt.entitlement.Entitlements; import org.apache.brooklyn.util.collections.MutableMap; +import org.apache.brooklyn.util.collections.MutableSet; import org.apache.brooklyn.util.core.task.ImmediateSupplier.ImmediateUnsupportedException; import org.apache.brooklyn.util.exceptions.Exceptions; import org.apache.brooklyn.util.guava.Maybe; @@ -73,23 +73,37 @@ public class BasicExecutionContext extends AbstractExecutionContext { final Set<Object> tags = new LinkedHashSet<Object>(); public BasicExecutionContext(ExecutionManager executionManager) { - this(Collections.emptyMap(), executionManager); + this(executionManager, null); } /** + * As {@link #BasicExecutionContext(ExecutionManager, Iterable)} but taking a flags map. * Supported flags are {@code tag} and {@code tags} * * @see ExecutionManager#submit(Map, TaskAdaptable) + * @deprecated since 0.12.0 use {@link #BasicExecutionContext(ExecutionManager, Iterable)} */ + @Deprecated public BasicExecutionContext(Map<?, ?> flags, ExecutionManager executionManager) { + this(executionManager, MutableSet.of().put(flags.remove("tag")).putAll((Iterable<?>)flags.remove("tag"))); + if (!flags.isEmpty()) { + log.warn("Unexpected flags passed to execution context ("+tags+"): "+flags, + new Throwable("Trace for unexpected flags passed to execution context")); + } + } + + /** + * Creates an execution context which wraps {@link ExecutionManager} + * adding the given tags to all tasks submitted through this context. + */ + public BasicExecutionContext(ExecutionManager executionManager, Iterable<Object> tagsForThisContext) { this.executionManager = executionManager; + if (tagsForThisContext!=null) Iterables.addAll(tags, tagsForThisContext); - if (flags.get("tag") != null) tags.add(flags.remove("tag")); - if (flags.containsKey("tags")) tags.addAll((Collection<?>)flags.remove("tags")); - - // FIXME brooklyn-specific check, just for sanity + // brooklyn-specific check, just for sanity // the context tag should always be a non-proxy entity, because that is what is passed to effector tasks // which may require access to internal methods + // (could remove this check if generalizing; it has been here for a long time and the problem seems gone) for (Object tag: tags) { if (tag instanceof BrooklynTaskTags.WrappedEntity) { if (Proxy.isProxyClass(((WrappedEntity)tag).entity.getClass())) { http://git-wip-us.apache.org/repos/asf/brooklyn-server/blob/c1f78bb2/utils/common/src/main/java/org/apache/brooklyn/util/collections/MutableSet.java ---------------------------------------------------------------------- diff --git a/utils/common/src/main/java/org/apache/brooklyn/util/collections/MutableSet.java b/utils/common/src/main/java/org/apache/brooklyn/util/collections/MutableSet.java index bcadf33..1049304 100644 --- a/utils/common/src/main/java/org/apache/brooklyn/util/collections/MutableSet.java +++ b/utils/common/src/main/java/org/apache/brooklyn/util/collections/MutableSet.java @@ -213,7 +213,19 @@ public class MutableSet<V> extends LinkedHashSet<V> { if (setToAdd!=null) addAll(setToAdd); return this; } - + + /** as {@link #add(V)} but fluent style */ + public MutableSet<V> put(V e) { + add(e); + return this; + } + + /** as {@link #addIfNotNull(V)} but fluent style */ + public MutableSet<V> putIfNotNull(V e) { + if (e!=null) add(e); + return this; + } + public boolean removeIfNotNull(V item) { if (item==null) return false; return remove(item);
