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 2016/01/15 00:54:29 UTC

[15/24] incubator-brooklyn git commit: WIP - change semantics of parameter addition

WIP - change semantics of parameter addition

api EntitySpec.parameters(...)  should *add* parameters, like the other methods;
since parameters have just been introduced it is fine to do this

also comments and tidy of other merges


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

Branch: refs/heads/master
Commit: aa9a2d7be66863144449fe05079ddad97d19a457
Parents: 73f7e73
Author: Alex Heneveld <al...@cloudsoftcorp.com>
Authored: Wed Jan 13 23:08:29 2016 +0000
Committer: Alex Heneveld <al...@cloudsoftcorp.com>
Committed: Thu Jan 14 15:51:24 2016 +0000

----------------------------------------------------------------------
 .../api/internal/AbstractBrooklynObjectSpec.java    |  9 ++++++++-
 .../brooklyn/core/mgmt/EntityManagementUtils.java   | 16 ++++++++--------
 2 files changed, 16 insertions(+), 9 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/incubator-brooklyn/blob/aa9a2d7b/brooklyn-server/api/src/main/java/org/apache/brooklyn/api/internal/AbstractBrooklynObjectSpec.java
----------------------------------------------------------------------
diff --git a/brooklyn-server/api/src/main/java/org/apache/brooklyn/api/internal/AbstractBrooklynObjectSpec.java b/brooklyn-server/api/src/main/java/org/apache/brooklyn/api/internal/AbstractBrooklynObjectSpec.java
index ab046d5..d03eec1 100644
--- a/brooklyn-server/api/src/main/java/org/apache/brooklyn/api/internal/AbstractBrooklynObjectSpec.java
+++ b/brooklyn-server/api/src/main/java/org/apache/brooklyn/api/internal/AbstractBrooklynObjectSpec.java
@@ -40,6 +40,7 @@ import org.slf4j.LoggerFactory;
 
 import com.google.common.base.Objects;
 import com.google.common.collect.ImmutableList;
+import com.google.common.collect.ImmutableList.Builder;
 import com.google.common.collect.ImmutableSet;
 import com.google.common.collect.Iterables;
 import com.google.common.collect.Maps;
@@ -107,8 +108,14 @@ public abstract class AbstractBrooklynObjectSpec<T,SpecT extends AbstractBrookly
         return self();
     }
     
+    /** adds the given parameters */
     public SpecT parameters(List<? extends SpecParameter<?>> parameters) {
-        this.parameters = ImmutableList.copyOf(checkNotNull(parameters, "parameters"));
+        // parameters follows immutable pattern, unlike the other fields
+        Builder<SpecParameter<?>> result = ImmutableList.<SpecParameter<?>>builder();
+        if (this.parameters!=null)
+            result.addAll(this.parameters);
+        result.addAll( checkNotNull(parameters, "parameters") );
+        this.parameters = result.build();
         return self();
     }
 

http://git-wip-us.apache.org/repos/asf/incubator-brooklyn/blob/aa9a2d7b/brooklyn-server/core/src/main/java/org/apache/brooklyn/core/mgmt/EntityManagementUtils.java
----------------------------------------------------------------------
diff --git a/brooklyn-server/core/src/main/java/org/apache/brooklyn/core/mgmt/EntityManagementUtils.java b/brooklyn-server/core/src/main/java/org/apache/brooklyn/core/mgmt/EntityManagementUtils.java
index d0f5b14..7dcd9a2 100644
--- a/brooklyn-server/core/src/main/java/org/apache/brooklyn/core/mgmt/EntityManagementUtils.java
+++ b/brooklyn-server/core/src/main/java/org/apache/brooklyn/core/mgmt/EntityManagementUtils.java
@@ -248,18 +248,18 @@ public class EntityManagementUtils {
         if (Strings.isNonEmpty(wrapperParent.getDisplayName())) {
             wrappedChild.displayName(wrapperParent.getDisplayName());
         }
-        if (!wrapperParent.getLocations().isEmpty()) {
-            wrappedChild.locations(wrapperParent.getLocations());
-        }
-        if (!wrapperParent.getParameters().isEmpty()) {
-            wrappedChild.parameters(wrapperParent.getParameters());
-        }
+        
+        wrappedChild.locations(wrapperParent.getLocations());
+        
+        wrappedChild.parameters(wrapperParent.getParameters());
+        
         if (wrappedChild.getCatalogItemId()==null) {
             wrappedChild.catalogItemId(wrapperParent.getCatalogItemId());
         }
 
-        // NB: this clobbers child config; might prefer to deeply merge maps etc
-        // (but this should not be surprising, as unwrapping is often parameterising the nested blueprint, so outer config should dominate) 
+        // NB: this clobber's child config; might prefer to deeply merge maps etc
+        // (or maybe even prevent the merge in these cases; 
+        // not sure there is a compelling reason to have config on a pure-wrapper parent)
         Map<ConfigKey<?>, Object> configWithoutWrapperMarker = Maps.filterKeys(wrapperParent.getConfig(), Predicates.not(Predicates.<ConfigKey<?>>equalTo(EntityManagementUtils.WRAPPER_APP_MARKER)));
         wrappedChild.configure(configWithoutWrapperMarker);
         wrappedChild.configure(wrapperParent.getFlags());