You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@brooklyn.apache.org by al...@apache.org on 2017/03/02 17:01:52 UTC
[08/19] brooklyn-server git commit: Merge branch 'master' into
config-self-reference-fix
Merge branch 'master' into config-self-reference-fix
Project: http://git-wip-us.apache.org/repos/asf/brooklyn-server/repo
Commit: http://git-wip-us.apache.org/repos/asf/brooklyn-server/commit/72eff857
Tree: http://git-wip-us.apache.org/repos/asf/brooklyn-server/tree/72eff857
Diff: http://git-wip-us.apache.org/repos/asf/brooklyn-server/diff/72eff857
Branch: refs/heads/master
Commit: 72eff85763db0a6c6b6d854af3834f5e1940f3d8
Parents: 49f0e22 39301e0
Author: Alex Heneveld <al...@cloudsoftcorp.com>
Authored: Wed Feb 15 18:33:30 2017 +0000
Committer: Alex Heneveld <al...@cloudsoftcorp.com>
Committed: Wed Feb 15 18:33:30 2017 +0000
----------------------------------------------------------------------
.../spi/dsl/BrooklynDslInterpreter.java | 2 +-
.../spi/dsl/DslDeferredFunctionCall.java | 109 +++++++----
.../spi/dsl/methods/BrooklynDslCommon.java | 56 +++---
.../brooklyn/spi/dsl/methods/DslComponent.java | 144 +++++++++-----
.../spi/dsl/methods/DslToStringHelpers.java | 79 ++++++++
.../brooklyn/AddChildrenEffectorYamlTest.java | 190 +++++++++++++++++++
.../camp/brooklyn/ConfigParametersYamlTest.java | 177 +++++++++++++++++
.../camp/brooklyn/CreatePasswordSensorTest.java | 64 +++++++
.../CreatePasswordSensorIntegrationTest.java | 67 -------
.../spi/dsl/DslParseComponentsTest.java | 162 ++++++++++++++++
.../brooklyn/camp/brooklyn/spi/dsl/DslTest.java | 2 +-
.../camp/brooklyn/spi/dsl/DslYamlTest.java | 13 +-
.../brooklyn/test/lite/CampYamlLiteTest.java | 1 +
.../EmptySoftwareProcessWithPassword.yaml | 36 ----
.../example-with-CreatePasswordSensor.yaml | 36 ++++
.../core/effector/AddChildrenEffector.java | 40 +++-
.../brooklyn/core/objs/BasicSpecParameter.java | 69 +++++--
.../brooklyn/core/objs/BrooklynDynamicType.java | 2 +-
.../apache/brooklyn/rest/api/ActivityApi.java | 4 +-
.../rest/resources/ActivityResource.java | 41 +++-
20 files changed, 1057 insertions(+), 237 deletions(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/brooklyn-server/blob/72eff857/camp/camp-brooklyn/src/main/java/org/apache/brooklyn/camp/brooklyn/spi/dsl/methods/DslComponent.java
----------------------------------------------------------------------
diff --cc camp/camp-brooklyn/src/main/java/org/apache/brooklyn/camp/brooklyn/spi/dsl/methods/DslComponent.java
index e745794,9de3340..7d9a951
--- a/camp/camp-brooklyn/src/main/java/org/apache/brooklyn/camp/brooklyn/spi/dsl/methods/DslComponent.java
+++ b/camp/camp-brooklyn/src/main/java/org/apache/brooklyn/camp/brooklyn/spi/dsl/methods/DslComponent.java
@@@ -510,11 -539,12 +550,13 @@@ public class DslComponent extends Brook
@Override
public final Maybe<Object> getImmediately() {
Maybe<Entity> targetEntityMaybe = component.getImmediately();
- if (targetEntityMaybe.isAbsent()) return Maybe.absent("Target entity not available");
+ if (targetEntityMaybe.isAbsent()) return Maybe.<Object>cast(targetEntityMaybe);
EntityInternal targetEntity = (EntityInternal) targetEntityMaybe.get();
- ConfigKey<?> key = targetEntity.getEntityType().getConfigKey(keyName);
+ checkAndTagForRecursiveReference(targetEntity);
- Maybe<?> result = targetEntity.config().getNonBlocking(key != null ? key : ConfigKeys.newConfigKey(Object.class, keyName));
+
+ String keyNameS = resolveKeyName(true);
+ ConfigKey<?> key = targetEntity.getEntityType().getConfigKey(keyNameS);
+ Maybe<?> result = targetEntity.config().getNonBlocking(key != null ? key : ConfigKeys.newConfigKey(Object.class, keyNameS));
return Maybe.<Object>cast(result);
}
@@@ -528,24 -558,11 +570,26 @@@
@Override
public Object call() throws Exception {
Entity targetEntity = component.get();
+ checkAndTagForRecursiveReference(targetEntity);
- ConfigKey<?> key = targetEntity.getEntityType().getConfigKey(keyName);
- return targetEntity.getConfig(key != null ? key : ConfigKeys.newConfigKey(Object.class, keyName));
++
+ String keyNameS = resolveKeyName(true);
+ ConfigKey<?> key = targetEntity.getEntityType().getConfigKey(keyNameS);
+ return targetEntity.getConfig(key != null ? key : ConfigKeys.newConfigKey(Object.class, keyNameS));
- }})
- .build();
+ }
+ }).build();
+ }
+
+ private void checkAndTagForRecursiveReference(Entity targetEntity) {
+ String tag = "DSL:entity('"+targetEntity.getId()+"').config('"+keyName+"')";
+ Task<?> ancestor = Tasks.current();
+ while (ancestor!=null) {
+ if (TaskTags.hasTag(ancestor, tag)) {
+ throw new IllegalStateException("Recursive config reference "+tag);
+ }
+ ancestor = ancestor.getSubmittedByTask();
+ }
+
+ Tasks.addTagDynamically(tag);
}
@Override
http://git-wip-us.apache.org/repos/asf/brooklyn-server/blob/72eff857/camp/camp-brooklyn/src/test/java/org/apache/brooklyn/camp/brooklyn/spi/dsl/DslTest.java
----------------------------------------------------------------------
diff --cc camp/camp-brooklyn/src/test/java/org/apache/brooklyn/camp/brooklyn/spi/dsl/DslTest.java
index 170b799,d387920..63aba8e
--- a/camp/camp-brooklyn/src/test/java/org/apache/brooklyn/camp/brooklyn/spi/dsl/DslTest.java
+++ b/camp/camp-brooklyn/src/test/java/org/apache/brooklyn/camp/brooklyn/spi/dsl/DslTest.java
@@@ -365,7 -365,7 +365,7 @@@ public class DslTest extends BrooklynAp
return this;
}
- @SuppressWarnings("unused") // kept in case useful for additional tests
- @SuppressWarnings("unused") // included for completeness?
++ @SuppressWarnings("unused") // kept in case useful for additional tests, for completeness
public DslTestWorker wrapInTaskForImmediately(boolean val) {
wrapInTaskForImmediately = val;
return this;