[1/2] brooklyn-library git commit: Update Docker image to use Maven 3.5.4
Repository: brooklyn-library Updated Branches: refs/heads/master 8ac59f977 -> 0c0f1a81d Update Docker image to use Maven 3.5.4 Project: http://git-wip-us.apache.org/repos/asf/brooklyn-library/repo Commit: http://git-wip-us.apache.org/repos/asf/brooklyn-library/commit/0fd00cc8 Tree: http://git-wip-us.apache.org/repos/asf/brooklyn-library/tree/0fd00cc8 Diff: http://git-wip-us.apache.org/repos/asf/brooklyn-library/diff/0fd00cc8 Branch: refs/heads/master Commit: 0fd00cc8a210af991c92b1bd7b89335eb4c1e78e Parents: a94f7d8 Author: Sylwester Lachiewicz Authored: Sat Sep 8 14:44:57 2018 +0200 Committer: Sylwester Lachiewicz Committed: Sat Sep 8 14:44:57 2018 +0200 -- Dockerfile | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) -- http://git-wip-us.apache.org/repos/asf/brooklyn-library/blob/0fd00cc8/Dockerfile -- diff --git a/Dockerfile b/Dockerfile index 0c5b9f5..662762f 100644 --- a/Dockerfile +++ b/Dockerfile @@ -15,7 +15,7 @@ # specific language governing permissions and limitations # under the License. -FROM maven:3.5.2-jdk-8-alpine +FROM maven:3.5.4-jdk-8-alpine # Install necessary binaries to build brooklyn-library RUN apk add --no-cache git procps
[2/2] brooklyn-library git commit: This closes #158
This closes #158 Project: http://git-wip-us.apache.org/repos/asf/brooklyn-library/repo Commit: http://git-wip-us.apache.org/repos/asf/brooklyn-library/commit/0c0f1a81 Tree: http://git-wip-us.apache.org/repos/asf/brooklyn-library/tree/0c0f1a81 Diff: http://git-wip-us.apache.org/repos/asf/brooklyn-library/diff/0c0f1a81 Branch: refs/heads/master Commit: 0c0f1a81d8c39124e47662ee9677381fa2c790ff Parents: 8ac59f9 0fd00cc Author: Aled Sage Authored: Mon Sep 24 17:07:52 2018 +0100 Committer: Aled Sage Committed: Mon Sep 24 17:07:52 2018 +0100 -- Dockerfile | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) --
[2/2] brooklyn-library git commit: This closes #159
This closes #159 Project: http://git-wip-us.apache.org/repos/asf/brooklyn-library/repo Commit: http://git-wip-us.apache.org/repos/asf/brooklyn-library/commit/8ac59f97 Tree: http://git-wip-us.apache.org/repos/asf/brooklyn-library/tree/8ac59f97 Diff: http://git-wip-us.apache.org/repos/asf/brooklyn-library/diff/8ac59f97 Branch: refs/heads/master Commit: 8ac59f977fff73d2fea559c47502b885887241e5 Parents: a94f7d8 5a9fc95 Author: Thomas Bouron Authored: Mon Sep 24 14:34:10 2018 +0100 Committer: Thomas Bouron Committed: Mon Sep 24 14:34:10 2018 +0100 -- Jenkinsfile | 10 +- README.md | 7 +-- 2 files changed, 10 insertions(+), 7 deletions(-) --
[1/2] brooklyn-library git commit: Jenkins docker: use non-root user
Repository: brooklyn-library Updated Branches: refs/heads/master a94f7d84e -> 8ac59f977 Jenkins docker: use non-root user Project: http://git-wip-us.apache.org/repos/asf/brooklyn-library/repo Commit: http://git-wip-us.apache.org/repos/asf/brooklyn-library/commit/5a9fc95a Tree: http://git-wip-us.apache.org/repos/asf/brooklyn-library/tree/5a9fc95a Diff: http://git-wip-us.apache.org/repos/asf/brooklyn-library/diff/5a9fc95a Branch: refs/heads/master Commit: 5a9fc95a99cd7b21fe2de9707e4a3286a358635f Parents: a94f7d8 Author: Aled Sage Authored: Mon Sep 24 13:32:07 2018 +0100 Committer: Aled Sage Committed: Mon Sep 24 14:03:56 2018 +0100 -- Jenkinsfile | 10 +- README.md | 7 +-- 2 files changed, 10 insertions(+), 7 deletions(-) -- http://git-wip-us.apache.org/repos/asf/brooklyn-library/blob/5a9fc95a/Jenkinsfile -- diff --git a/Jenkinsfile b/Jenkinsfile index 42af8b3..76a41e3 100644 --- a/Jenkinsfile +++ b/Jenkinsfile @@ -36,16 +36,16 @@ node(label: 'ubuntu') { } stage('Run tests') { -environmentDockerImage.inside('-i --name brooklyn-${DOCKER_TAG} -v ${WORKSPACE}/.m2:/root/.m2 -v ${WORKSPACE}:/usr/build -w /usr/build') { -sh 'mvn clean install' +environmentDockerImage.inside('-i --name brooklyn-${DOCKER_TAG} -u 910:910 -v ${WORKSPACE}/.m2:/var/maven/.m2 -v ${WORKSPACE}:/usr/build -w /usr/build -e MAVEN_CONFIG=/var/maven/.m2') { +sh 'mvn clean install -Duser.name=$(id -un 910)' } } // Conditional stage to deploy artifacts, when not building a PR if (env.CHANGE_ID == null) { stage('Deploy artifacts') { -environmentDockerImage.inside('-i --name brooklyn-${DOCKER_TAG} -v ${WORKSPACE}/.m2:/root/.m2 -v ${WORKSPACE}:/usr/build -w /usr/build') { -sh 'mvn deploy -DskipTests' +environmentDockerImage.inside('-i --name brooklyn-${DOCKER_TAG} -u 910:910 -v ${WORKSPACE}/.m2:/var/maven/.m2 -v ${WORKSPACE}:/usr/build -w /usr/build -e MAVEN_CONFIG=/var/maven/.m2') { +sh 'mvn deploy -DskipTests -Duser.name=$(id -un 910)' } } @@ -79,4 +79,4 @@ node(label: 'ubuntu') { ]) } } -} \ No newline at end of file +} http://git-wip-us.apache.org/repos/asf/brooklyn-library/blob/5a9fc95a/README.md -- diff --git a/README.md b/README.md index c046066..147295e 100644 --- a/README.md +++ b/README.md @@ -23,7 +23,10 @@ docker build -t brooklyn:library . Then run the build: ```bash -docker run -i --rm --name brooklyn-library -v ${HOME}/.m2:/root/.m2 -v ${PWD}:/usr/build -w /usr/build brooklyn:library mvn clean install +docker run -i --rm --name brooklyn-library -u $(id -u $(whoami)):$(id -g $(whoami)) \ +-e MAVEN_CONFIG=/var/maven/.m2 \ +-v ${HOME}/.m2:/var/maven/.m2 -v ${PWD}:/usr/build -w /usr/build \ +brooklyn:library mvn clean install -Duser.home=/var/maven -Duser.name=$(whoami) ``` ### Using maven @@ -32,4 +35,4 @@ Simply run: ```bash mvn clean install -``` \ No newline at end of file +```
[1/2] brooklyn-docs git commit: document add'l constraints
Repository: brooklyn-docs Updated Branches: refs/heads/master 2b06e9605 -> 1730d7262 document add'l constraints Project: http://git-wip-us.apache.org/repos/asf/brooklyn-docs/repo Commit: http://git-wip-us.apache.org/repos/asf/brooklyn-docs/commit/43ae2e94 Tree: http://git-wip-us.apache.org/repos/asf/brooklyn-docs/tree/43ae2e94 Diff: http://git-wip-us.apache.org/repos/asf/brooklyn-docs/diff/43ae2e94 Branch: refs/heads/master Commit: 43ae2e947bff5bb659b66714fb361895e91f6b73 Parents: 97515cb Author: Alex Heneveld Authored: Mon Sep 24 10:49:12 2018 +0100 Committer: Alex Heneveld Committed: Mon Sep 24 10:49:12 2018 +0100 -- guide/blueprints/entity-configuration.md | 14 ++ 1 file changed, 10 insertions(+), 4 deletions(-) -- http://git-wip-us.apache.org/repos/asf/brooklyn-docs/blob/43ae2e94/guide/blueprints/entity-configuration.md -- diff --git a/guide/blueprints/entity-configuration.md b/guide/blueprints/entity-configuration.md index 1bd1db1..e3b4434 100644 --- a/guide/blueprints/entity-configuration.md +++ b/guide/blueprints/entity-configuration.md @@ -55,13 +55,19 @@ and for a complete reference on the syntax of `brooklyn.parameters` see that sec Config Key Constraints -The config keys in the `brooklyn.parameters` can also have constraints defined, for what values +The config keys in the `brooklyn.parameters` can also have a list of constraints defined, for what values are valid. If more than one constraint is defined, then they must all be satisfied. The constraints can be any of: -* `required`: deployment will fail if no value is supplied for this config key. -* `regex: ...`: the value will be compared against the given regular expression. -* A predicate, declared using the DSL `$brooklyn:object`. +* `required`: deployment will fail if no value is supplied for this config key +* `regex: `: the value must match the regular expression `` +* `glob: `: the value must match the bash-style wildcard glob `` +* `urlExists: `: the server must be able to resolve and access the URL `` +* `forbiddenIf: `: setting a value is disallowed if the config key `` has a value set +* `forbiddenUnless: `: setting a value is disallowed if the config key `` does not have a value set +* `requiredIf: `: a value is required if the config key `` has a value set +* `requiredUnless: `: a value is required if the config key `` does not have a value set +* Any java `Predicate`, declared using the DSL `$brooklyn:object`. This is illustrated in the example below:
[2/2] brooklyn-docs git commit: This closes #268
This closes #268 Project: http://git-wip-us.apache.org/repos/asf/brooklyn-docs/repo Commit: http://git-wip-us.apache.org/repos/asf/brooklyn-docs/commit/1730d726 Tree: http://git-wip-us.apache.org/repos/asf/brooklyn-docs/tree/1730d726 Diff: http://git-wip-us.apache.org/repos/asf/brooklyn-docs/diff/1730d726 Branch: refs/heads/master Commit: 1730d726211ec7dcb63b89aa786f6b49aa668b2c Parents: 2b06e96 43ae2e9 Author: Aled Sage Authored: Mon Sep 24 14:22:11 2018 +0100 Committer: Aled Sage Committed: Mon Sep 24 14:22:11 2018 +0100 -- guide/blueprints/entity-configuration.md | 14 ++ 1 file changed, 10 insertions(+), 4 deletions(-) --
[7/7] brooklyn-server git commit: This closes #999
This closes #999 Project: http://git-wip-us.apache.org/repos/asf/brooklyn-server/repo Commit: http://git-wip-us.apache.org/repos/asf/brooklyn-server/commit/a3d0ea06 Tree: http://git-wip-us.apache.org/repos/asf/brooklyn-server/tree/a3d0ea06 Diff: http://git-wip-us.apache.org/repos/asf/brooklyn-server/diff/a3d0ea06 Branch: refs/heads/master Commit: a3d0ea06edcd15362688107f0afd9b153048c7e6 Parents: e27cc7b 3d214b8 Author: Aled Sage Authored: Mon Sep 24 12:30:11 2018 +0100 Committer: Aled Sage Committed: Mon Sep 24 12:30:11 2018 +0100 -- .../brooklyn/core/config/ConfigConstraints.java | 103 + .../brooklyn/core/objs/BasicSpecParameter.java | 51 +-- .../core/objs/ConstraintSerialization.java | 375 +++ .../brooklyn/util/core/ResourcePredicates.java | 6 +- .../core/config/ConfigKeyConstraintTest.java| 133 +-- .../objs/BasicSpecParameterFromListTest.java| 5 +- .../core/objs/ConstraintSerializationTest.java | 121 ++ .../brooklyn/rest/domain/ConfigSummary.java | 17 +- .../java/org/apache/brooklyn/test/Asserts.java | 16 +- .../brooklyn/util/text/StringPredicates.java| 11 +- .../org/apache/brooklyn/util/text/Strings.java | 22 +- .../org/apache/brooklyn/test/AssertsTest.java | 2 +- 12 files changed, 752 insertions(+), 110 deletions(-) --
[4/7] brooklyn-server git commit: forgot to use deserialization routines when parsing catalog input
forgot to use deserialization routines when parsing catalog input also test and fix for some edge-cases in serializing Project: http://git-wip-us.apache.org/repos/asf/brooklyn-server/repo Commit: http://git-wip-us.apache.org/repos/asf/brooklyn-server/commit/fdb2784a Tree: http://git-wip-us.apache.org/repos/asf/brooklyn-server/tree/fdb2784a Diff: http://git-wip-us.apache.org/repos/asf/brooklyn-server/diff/fdb2784a Branch: refs/heads/master Commit: fdb2784a8bdc7a3bc53508a381b258539f7aafc0 Parents: 5fec275 Author: Alex Heneveld Authored: Sat Sep 22 01:24:09 2018 +0100 Committer: Alex Heneveld Committed: Sat Sep 22 01:24:09 2018 +0100 -- .../brooklyn/core/config/ConfigConstraints.java | 9 .../brooklyn/core/objs/BasicSpecParameter.java | 51 +--- .../core/objs/ConstraintSerialization.java | 9 ++-- .../brooklyn/util/core/ResourcePredicates.java | 2 +- .../core/objs/ConstraintSerializationTest.java | 45 + 5 files changed, 52 insertions(+), 64 deletions(-) -- http://git-wip-us.apache.org/repos/asf/brooklyn-server/blob/fdb2784a/core/src/main/java/org/apache/brooklyn/core/config/ConfigConstraints.java -- diff --git a/core/src/main/java/org/apache/brooklyn/core/config/ConfigConstraints.java b/core/src/main/java/org/apache/brooklyn/core/config/ConfigConstraints.java index 4ee584d..c234aae 100644 --- a/core/src/main/java/org/apache/brooklyn/core/config/ConfigConstraints.java +++ b/core/src/main/java/org/apache/brooklyn/core/config/ConfigConstraints.java @@ -22,6 +22,7 @@ package org.apache.brooklyn.core.config; import java.util.Collections; import java.util.Iterator; import java.util.List; +import java.util.Objects; import org.apache.brooklyn.api.entity.Entity; import org.apache.brooklyn.api.location.Location; @@ -244,6 +245,14 @@ public abstract class ConfigConstraints { public String toString() { return "required()"; } +@Override +public boolean equals(Object obj) { +return (obj instanceof RequiredPredicate) && obj.getClass().equals(getClass()); +} +@Override +public int hashCode() { +return Objects.hash(toString()); +} } private static abstract class OtherKeyPredicate implements BrooklynObjectPredicate { http://git-wip-us.apache.org/repos/asf/brooklyn-server/blob/fdb2784a/core/src/main/java/org/apache/brooklyn/core/objs/BasicSpecParameter.java -- diff --git a/core/src/main/java/org/apache/brooklyn/core/objs/BasicSpecParameter.java b/core/src/main/java/org/apache/brooklyn/core/objs/BasicSpecParameter.java index 7c1bde0..7c777f8 100644 --- a/core/src/main/java/org/apache/brooklyn/core/objs/BasicSpecParameter.java +++ b/core/src/main/java/org/apache/brooklyn/core/objs/BasicSpecParameter.java @@ -18,8 +18,6 @@ */ package org.apache.brooklyn.core.objs; -import static com.google.common.base.Preconditions.checkArgument; - import java.lang.reflect.Field; import java.util.ArrayList; import java.util.Collection; @@ -55,7 +53,6 @@ import org.apache.brooklyn.util.collections.MutableList; import org.apache.brooklyn.util.collections.MutableMap; import org.apache.brooklyn.util.collections.MutableSet; import org.apache.brooklyn.util.guava.Maybe; -import org.apache.brooklyn.util.text.StringPredicates; import org.apache.brooklyn.util.time.Duration; import org.slf4j.Logger; import org.slf4j.LoggerFactory; @@ -70,7 +67,6 @@ import com.google.common.base.Predicates; import com.google.common.collect.FluentIterable; import com.google.common.collect.ImmutableList; import com.google.common.collect.ImmutableMap; -import com.google.common.collect.Iterables; import com.google.common.reflect.TypeToken; public class BasicSpecParameter implements SpecParameter{ @@ -221,18 +217,6 @@ public class BasicSpecParameter implements SpecParameter{ .put("port", PortRange.class) .build(); -private static final Map> BUILT_IN_CONSTRAINTS = ImmutableMap.>of( -"required", StringPredicates.isNonBlank()); - -private static final Map>> BUILT_IN_CONSTRAINT_FACTORIES = ImmutableMap.>>of( -"regex", new Function>() { -@Override public Predicate apply(Object input) { -// TODO Could try to handle deferred supplier as well? -checkArgument(input instanceof String, "Constraint regex value must be a string, but got %s (%s)", -(input == null ? "null" : input.getClass().getName()), input); -return StringPredicates.matchesRegex((String)input); -}}); -
[1/7] brooklyn-server git commit: proper serialization and deserialization for constraints
Repository: brooklyn-server Updated Branches: refs/heads/master e27cc7b6d -> a3d0ea06e proper serialization and deserialization for constraints Project: http://git-wip-us.apache.org/repos/asf/brooklyn-server/repo Commit: http://git-wip-us.apache.org/repos/asf/brooklyn-server/commit/bd34655c Tree: http://git-wip-us.apache.org/repos/asf/brooklyn-server/tree/bd34655c Diff: http://git-wip-us.apache.org/repos/asf/brooklyn-server/diff/bd34655c Branch: refs/heads/master Commit: bd34655c81400f8228c329ecec31ce6e378f78b0 Parents: e27cc7b Author: Alex Heneveld Authored: Thu Sep 20 22:34:25 2018 +0100 Committer: Alex Heneveld Committed: Thu Sep 20 22:34:25 2018 +0100 -- .../brooklyn/core/config/ConfigConstraints.java | 25 ++ .../core/objs/ConstraintSerialization.java | 354 +++ .../core/objs/ConstraintSerializationTest.java | 84 + .../brooklyn/rest/domain/ConfigSummary.java | 17 +- .../brooklyn/util/text/StringPredicates.java| 11 +- .../org/apache/brooklyn/util/text/Strings.java | 22 +- .../org/apache/brooklyn/test/AssertsTest.java | 2 +- 7 files changed, 497 insertions(+), 18 deletions(-) -- http://git-wip-us.apache.org/repos/asf/brooklyn-server/blob/bd34655c/core/src/main/java/org/apache/brooklyn/core/config/ConfigConstraints.java -- diff --git a/core/src/main/java/org/apache/brooklyn/core/config/ConfigConstraints.java b/core/src/main/java/org/apache/brooklyn/core/config/ConfigConstraints.java index 17b7c9d..35f672e 100644 --- a/core/src/main/java/org/apache/brooklyn/core/config/ConfigConstraints.java +++ b/core/src/main/java/org/apache/brooklyn/core/config/ConfigConstraints.java @@ -33,6 +33,7 @@ import org.apache.brooklyn.core.entity.EntityInternal; import org.apache.brooklyn.core.objs.AbstractEntityAdjunct; import org.apache.brooklyn.core.objs.BrooklynObjectInternal; import org.apache.brooklyn.core.objs.BrooklynObjectPredicate; +import org.apache.brooklyn.core.objs.ConstraintSerialization; import org.apache.brooklyn.util.core.task.Tasks; import org.apache.brooklyn.util.exceptions.ReferenceWithError; import org.apache.brooklyn.util.guava.Maybe; @@ -185,6 +186,13 @@ public abstract class ConfigConstraints { return brooklynObject; } +/** + * Convenience method to get the serialization routines. + */ +public static ConstraintSerialization serialization() { +return ConstraintSerialization.INSTANCE; +} + private static class EntityConfigConstraints extends ConfigConstraints { public EntityConfigConstraints(Entity brooklynObject) { super(brooklynObject); @@ -218,4 +226,21 @@ public abstract class ConfigConstraints { } } +public static Predicate required() { +return new RequiredPredicate(); +} + +/** Predicate indicating a field is required: it must not be null and if a string it must not be empty */ +public static class RequiredPredicate implements Predicate { +@Override +public boolean apply(T input) { +if (input==null) return false; +if (input instanceof CharSequence && ((CharSequence)input).length()==0) return false; +return true; +} +@Override +public String toString() { +return "required()"; +} +} } http://git-wip-us.apache.org/repos/asf/brooklyn-server/blob/bd34655c/core/src/main/java/org/apache/brooklyn/core/objs/ConstraintSerialization.java -- diff --git a/core/src/main/java/org/apache/brooklyn/core/objs/ConstraintSerialization.java b/core/src/main/java/org/apache/brooklyn/core/objs/ConstraintSerialization.java new file mode 100644 index 000..a6b7039 --- /dev/null +++ b/core/src/main/java/org/apache/brooklyn/core/objs/ConstraintSerialization.java @@ -0,0 +1,354 @@ +/* + * Licensed to the Apache Software Foundation (ASF) under one + * or more contributor license agreements. See the NOTICE file + * distributed with this work for additional information + * regarding copyright ownership. The ASF licenses this file + * to you under the Apache License, Version 2.0 (the + * "License"); you may not use this file except in compliance + * with the License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, + * software distributed under the License is distributed on an + * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY + * KIND, either express or implied. See the License for the + * specific language governing permissions and limitations + * under the License. + */ +package org.apache.brooklyn.core.objs; + +import java.util.Collection;
[5/7] brooklyn-server git commit: address further PR comments
address further PR comments Project: http://git-wip-us.apache.org/repos/asf/brooklyn-server/repo Commit: http://git-wip-us.apache.org/repos/asf/brooklyn-server/commit/fc1c5883 Tree: http://git-wip-us.apache.org/repos/asf/brooklyn-server/tree/fc1c5883 Diff: http://git-wip-us.apache.org/repos/asf/brooklyn-server/diff/fc1c5883 Branch: refs/heads/master Commit: fc1c588381029a3623c155d88a76185d7e01f696 Parents: fdb2784 Author: Alex Heneveld Authored: Sat Sep 22 01:45:00 2018 +0100 Committer: Alex Heneveld Committed: Sat Sep 22 01:45:00 2018 +0100 -- .../apache/brooklyn/core/config/ConfigConstraints.java| 10 +- .../brooklyn/core/objs/ConstraintSerialization.java | 4 +++- .../org/apache/brooklyn/util/core/ResourcePredicates.java | 2 +- 3 files changed, 9 insertions(+), 7 deletions(-) -- http://git-wip-us.apache.org/repos/asf/brooklyn-server/blob/fc1c5883/core/src/main/java/org/apache/brooklyn/core/config/ConfigConstraints.java -- diff --git a/core/src/main/java/org/apache/brooklyn/core/config/ConfigConstraints.java b/core/src/main/java/org/apache/brooklyn/core/config/ConfigConstraints.java index c234aae..67d8aef 100644 --- a/core/src/main/java/org/apache/brooklyn/core/config/ConfigConstraints.java +++ b/core/src/main/java/org/apache/brooklyn/core/config/ConfigConstraints.java @@ -256,7 +256,7 @@ public abstract class ConfigConstraints { } private static abstract class OtherKeyPredicate implements BrooklynObjectPredicate { -private String otherKeyName; +private final String otherKeyName; public OtherKeyPredicate(String otherKeyName) { this.otherKeyName = otherKeyName; @@ -286,7 +286,7 @@ public abstract class ConfigConstraints { } public static Predicate forbiddenIf(String otherKeyName) { return new ForbiddenIfPredicate(otherKeyName); } -public static class ForbiddenIfPredicate extends OtherKeyPredicate { +protected static class ForbiddenIfPredicate extends OtherKeyPredicate { public ForbiddenIfPredicate(String otherKeyName) { super(otherKeyName); } @Override public String predicateName() { return "forbiddenIf"; } @Override public boolean test(Object thisValue, Object otherValue) { @@ -295,7 +295,7 @@ public abstract class ConfigConstraints { } public static Predicate forbiddenUnless(String otherKeyName) { return new ForbiddenUnlessPredicate(otherKeyName); } -public static class ForbiddenUnlessPredicate extends OtherKeyPredicate { +protected static class ForbiddenUnlessPredicate extends OtherKeyPredicate { public ForbiddenUnlessPredicate(String otherKeyName) { super(otherKeyName); } @Override public String predicateName() { return "forbiddenUnless"; } @Override public boolean test(Object thisValue, Object otherValue) { @@ -304,7 +304,7 @@ public abstract class ConfigConstraints { } public static Predicate requiredIf(String otherKeyName) { return new RequiredIfPredicate(otherKeyName); } -public static class RequiredIfPredicate extends OtherKeyPredicate { +protected static class RequiredIfPredicate extends OtherKeyPredicate { public RequiredIfPredicate(String otherKeyName) { super(otherKeyName); } @Override public String predicateName() { return "requiredIf"; } @Override public boolean test(Object thisValue, Object otherValue) { @@ -313,7 +313,7 @@ public abstract class ConfigConstraints { } public static Predicate requiredUnless(String otherKeyName) { return new RequiredUnlessPredicate(otherKeyName); } -public static class RequiredUnlessPredicate extends OtherKeyPredicate { +protected static class RequiredUnlessPredicate extends OtherKeyPredicate { public RequiredUnlessPredicate(String otherKeyName) { super(otherKeyName); } @Override public String predicateName() { return "requiredUnless"; } @Override public boolean test(Object thisValue, Object otherValue) { http://git-wip-us.apache.org/repos/asf/brooklyn-server/blob/fc1c5883/core/src/main/java/org/apache/brooklyn/core/objs/ConstraintSerialization.java -- diff --git a/core/src/main/java/org/apache/brooklyn/core/objs/ConstraintSerialization.java b/core/src/main/java/org/apache/brooklyn/core/objs/ConstraintSerialization.java index 2fef0e8..984e2e7 100644 --- a/core/src/main/java/org/apache/brooklyn/core/objs/ConstraintSerialization.java +++ b/core/src/main/java/org/apache/brooklyn/core/objs/ConstraintSerialization.java @@ -40,12 +40,14 @@ import org.apache.brooklyn.util.text.StringEscapes.JavaStringEscapes; import org.apache.brooklyn.util.text.StringPredicates; import
[6/7] brooklyn-server git commit: split out notNull as different to required=nonBlank, fix tests
split out notNull as different to required=nonBlank, fix tests Project: http://git-wip-us.apache.org/repos/asf/brooklyn-server/repo Commit: http://git-wip-us.apache.org/repos/asf/brooklyn-server/commit/3d214b89 Tree: http://git-wip-us.apache.org/repos/asf/brooklyn-server/tree/3d214b89 Diff: http://git-wip-us.apache.org/repos/asf/brooklyn-server/diff/3d214b89 Branch: refs/heads/master Commit: 3d214b89fc5308451e5078ee4651f878eab6d081 Parents: fc1c588 Author: Alex Heneveld Authored: Sat Sep 22 02:19:42 2018 +0100 Committer: Alex Heneveld Committed: Sat Sep 22 02:48:58 2018 +0100 -- .../org/apache/brooklyn/core/objs/ConstraintSerialization.java | 3 ++- .../brooklyn/core/objs/BasicSpecParameterFromListTest.java | 5 +++-- .../apache/brooklyn/core/objs/ConstraintSerializationTest.java | 2 +- 3 files changed, 6 insertions(+), 4 deletions(-) -- http://git-wip-us.apache.org/repos/asf/brooklyn-server/blob/3d214b89/core/src/main/java/org/apache/brooklyn/core/objs/ConstraintSerialization.java -- diff --git a/core/src/main/java/org/apache/brooklyn/core/objs/ConstraintSerialization.java b/core/src/main/java/org/apache/brooklyn/core/objs/ConstraintSerialization.java index 984e2e7..32b71f0 100644 --- a/core/src/main/java/org/apache/brooklyn/core/objs/ConstraintSerialization.java +++ b/core/src/main/java/org/apache/brooklyn/core/objs/ConstraintSerialization.java @@ -167,12 +167,13 @@ public class ConstraintSerialization { @SuppressWarnings({ "unchecked", "rawtypes" }) private void init() { PredicateSerializationRuleAdder.predicateListConstructor((o) -> ConfigConstraints.required()). -equivalentPredicates(Predicates.notNull(), StringPredicates.isNonBlank()).add(this); +equivalentPredicates(StringPredicates.isNonBlank()).add(this); PredicateSerializationRuleAdder.predicateListConstructor((o) -> Predicates.or((Iterable)o)).preferredName("any").equivalentNames("or").add(this); PredicateSerializationRuleAdder.predicateListConstructor((o) -> /* and predicate is default when given list */ toPredicateFromJson(o)).preferredName("all").sample(Predicates.and(Collections.emptyList())).equivalentNames("and").add(this); PredicateSerializationRuleAdder.noArgConstructor(Predicates::alwaysFalse).add(this); PredicateSerializationRuleAdder.noArgConstructor(Predicates::alwaysTrue).add(this); + PredicateSerializationRuleAdder.noArgConstructor(Predicates::notNull).add(this); PredicateSerializationRuleAdder.noArgConstructor(ResourcePredicates::urlExists).preferredName("urlExists").add(this); PredicateSerializationRuleAdder.noArgConstructor(StringPredicates::isBlank).add(this); http://git-wip-us.apache.org/repos/asf/brooklyn-server/blob/3d214b89/core/src/test/java/org/apache/brooklyn/core/objs/BasicSpecParameterFromListTest.java -- diff --git a/core/src/test/java/org/apache/brooklyn/core/objs/BasicSpecParameterFromListTest.java b/core/src/test/java/org/apache/brooklyn/core/objs/BasicSpecParameterFromListTest.java index 887e054..3ce8d9c 100644 --- a/core/src/test/java/org/apache/brooklyn/core/objs/BasicSpecParameterFromListTest.java +++ b/core/src/test/java/org/apache/brooklyn/core/objs/BasicSpecParameterFromListTest.java @@ -28,6 +28,7 @@ import java.util.List; import org.apache.brooklyn.api.mgmt.classloading.BrooklynClassLoadingContext; import org.apache.brooklyn.api.objs.SpecParameter; import org.apache.brooklyn.config.ConfigKey; +import org.apache.brooklyn.core.config.ConfigConstraints; import org.apache.brooklyn.core.mgmt.classloading.JavaBrooklynClassLoadingContext; import org.apache.brooklyn.core.test.BrooklynMgmtUnitTestSupport; import org.apache.brooklyn.util.text.StringPredicates; @@ -99,7 +100,7 @@ public class BasicSpecParameterFromListTest extends BrooklynMgmtUnitTestSupport assertEquals(type.getDefaultValue(), defaultValue); assertEquals(type.getDescription(), description); assertTrue(type.getInheritanceByContext().values().isEmpty(), "Unexpected inheritance: "+type.getInheritanceByContext()); -assertConstraint(type.getConstraint(), StringPredicates.isNonBlank()); +assertConstraint(type.getConstraint(), ConfigConstraints.required()); } @Test @@ -132,7 +133,7 @@ public class BasicSpecParameterFromListTest extends BrooklynMgmtUnitTestSupport "name", name, "constraints", ImmutableList.of(constraint))); ConfigKey type = input.getConfigKey(); -assertConstraint(type.getConstraint(), StringPredicates.isNonBlank()); +assertConstraint(type.getConstraint(), ConfigConstraints.required()); }
[3/7] brooklyn-server git commit: accept toStrings in/as json
accept toStrings in/as json Project: http://git-wip-us.apache.org/repos/asf/brooklyn-server/repo Commit: http://git-wip-us.apache.org/repos/asf/brooklyn-server/commit/5fec2756 Tree: http://git-wip-us.apache.org/repos/asf/brooklyn-server/tree/5fec2756 Diff: http://git-wip-us.apache.org/repos/asf/brooklyn-server/diff/5fec2756 Branch: refs/heads/master Commit: 5fec2756f61b6bba1f37d96a04c07ef9229ec4de Parents: 0d6f572 Author: Alex Heneveld Authored: Fri Sep 21 12:32:55 2018 +0100 Committer: Alex Heneveld Committed: Fri Sep 21 12:32:55 2018 +0100 -- .../brooklyn/core/objs/ConstraintSerialization.java | 6 ++ .../brooklyn/core/objs/ConstraintSerializationTest.java | 12 2 files changed, 18 insertions(+) -- http://git-wip-us.apache.org/repos/asf/brooklyn-server/blob/5fec2756/core/src/main/java/org/apache/brooklyn/core/objs/ConstraintSerialization.java -- diff --git a/core/src/main/java/org/apache/brooklyn/core/objs/ConstraintSerialization.java b/core/src/main/java/org/apache/brooklyn/core/objs/ConstraintSerialization.java index 57258bc..6844a72 100644 --- a/core/src/main/java/org/apache/brooklyn/core/objs/ConstraintSerialization.java +++ b/core/src/main/java/org/apache/brooklyn/core/objs/ConstraintSerialization.java @@ -314,6 +314,12 @@ public class ConstraintSerialization { List args; if (o instanceof String) { key = (String)o; +if (key.indexOf("(")>=0) { +// it wasn't json; delegate to the parser again +StringConstraintParser parser = StringConstraintParser.forConstraint(this, key); +if (!parser.parse()) throw new IllegalStateException("cannot match: "+key); +return toPredicateFromJson(parser.result); +} args = MutableList.of(); } else if (o instanceof Map) { if (((Map)o).size()!=1) { http://git-wip-us.apache.org/repos/asf/brooklyn-server/blob/5fec2756/core/src/test/java/org/apache/brooklyn/core/objs/ConstraintSerializationTest.java -- diff --git a/core/src/test/java/org/apache/brooklyn/core/objs/ConstraintSerializationTest.java b/core/src/test/java/org/apache/brooklyn/core/objs/ConstraintSerializationTest.java index 2065044..539fc87 100644 --- a/core/src/test/java/org/apache/brooklyn/core/objs/ConstraintSerializationTest.java +++ b/core/src/test/java/org/apache/brooklyn/core/objs/ConstraintSerializationTest.java @@ -67,6 +67,18 @@ public class ConstraintSerializationTest extends BrooklynMgmtUnitTestSupport { } @Test +public void testAcceptsMap() { +Predicate p = StringPredicates.matchesGlob("???*"); + Assert.assertEquals(ConstraintSerialization.INSTANCE.toPredicateFromJson(MutableMap.of("matchesGlob", "???*")).toString(), p.toString()); +} + +@Test +public void testAcceptsString() { +Predicate p = StringPredicates.matchesGlob("???*"); + Assert.assertEquals(ConstraintSerialization.INSTANCE.toPredicateFromJson("matchesGlob(\"???*\")").toString(), p.toString()); +} + +@Test public void testAltPred() { Predicate p = Predicates.notNull(); Assert.assertEquals(ConstraintSerialization.INSTANCE.toJsonList(p),
[2/7] brooklyn-server git commit: add {forbidden, required}{If, Unless} constraints
add {forbidden,required}{If,Unless} constraints Project: http://git-wip-us.apache.org/repos/asf/brooklyn-server/repo Commit: http://git-wip-us.apache.org/repos/asf/brooklyn-server/commit/0d6f5721 Tree: http://git-wip-us.apache.org/repos/asf/brooklyn-server/tree/0d6f5721 Diff: http://git-wip-us.apache.org/repos/asf/brooklyn-server/diff/0d6f5721 Branch: refs/heads/master Commit: 0d6f57219bd7ce36c912fddd26f37a46c6f8dbc2 Parents: bd34655 Author: Alex Heneveld Authored: Fri Sep 21 11:49:47 2018 +0100 Committer: Alex Heneveld Committed: Fri Sep 21 11:49:47 2018 +0100 -- .../brooklyn/core/config/ConfigConstraints.java | 69 ++ .../core/objs/ConstraintSerialization.java | 13 +- .../brooklyn/util/core/ResourcePredicates.java | 6 +- .../core/config/ConfigKeyConstraintTest.java| 133 ++- .../java/org/apache/brooklyn/test/Asserts.java | 16 ++- 5 files changed, 195 insertions(+), 42 deletions(-) -- http://git-wip-us.apache.org/repos/asf/brooklyn-server/blob/0d6f5721/core/src/main/java/org/apache/brooklyn/core/config/ConfigConstraints.java -- diff --git a/core/src/main/java/org/apache/brooklyn/core/config/ConfigConstraints.java b/core/src/main/java/org/apache/brooklyn/core/config/ConfigConstraints.java index 35f672e..4ee584d 100644 --- a/core/src/main/java/org/apache/brooklyn/core/config/ConfigConstraints.java +++ b/core/src/main/java/org/apache/brooklyn/core/config/ConfigConstraints.java @@ -30,6 +30,7 @@ import org.apache.brooklyn.api.objs.BrooklynObject; import org.apache.brooklyn.api.objs.EntityAdjunct; import org.apache.brooklyn.config.ConfigKey; import org.apache.brooklyn.core.entity.EntityInternal; +import org.apache.brooklyn.core.mgmt.BrooklynTaskTags; import org.apache.brooklyn.core.objs.AbstractEntityAdjunct; import org.apache.brooklyn.core.objs.BrooklynObjectInternal; import org.apache.brooklyn.core.objs.BrooklynObjectPredicate; @@ -37,6 +38,7 @@ import org.apache.brooklyn.core.objs.ConstraintSerialization; import org.apache.brooklyn.util.core.task.Tasks; import org.apache.brooklyn.util.exceptions.ReferenceWithError; import org.apache.brooklyn.util.guava.Maybe; +import org.apache.brooklyn.util.text.StringEscapes.JavaStringEscapes; import org.slf4j.Logger; import org.slf4j.LoggerFactory; @@ -243,4 +245,71 @@ public abstract class ConfigConstraints { return "required()"; } } + +private static abstract class OtherKeyPredicate implements BrooklynObjectPredicate { +private String otherKeyName; + +public OtherKeyPredicate(String otherKeyName) { +this.otherKeyName = otherKeyName; +} + +public abstract String predicateName(); + +@Override +public String toString() { +return predicateName()+"("+JavaStringEscapes.wrapJavaString(otherKeyName)+")"; +} + +@Override +public boolean apply(Object input) { +return apply(input, BrooklynTaskTags.getContextEntity(Tasks.current())); +} + +@Override +public boolean apply(Object input, BrooklynObject context) { +if (context==null) return true; +// would be nice to offer an explanation, but that will need a richer API or a thread local +return test(input, context.config().get(ConfigKeys.newConfigKey(Object.class, otherKeyName))); +} + +public abstract boolean test(Object thisValue, Object otherValue); + +} + +public static Predicate forbiddenIf(String otherKeyName) { return new ForbiddenIfPredicate(otherKeyName); } +public static class ForbiddenIfPredicate extends OtherKeyPredicate { +public ForbiddenIfPredicate(String otherKeyName) { super(otherKeyName); } +@Override public String predicateName() { return "forbiddenIf"; } +@Override public boolean test(Object thisValue, Object otherValue) { +return (thisValue==null) || (otherValue==null); +} +} + +public static Predicate forbiddenUnless(String otherKeyName) { return new ForbiddenUnlessPredicate(otherKeyName); } +public static class ForbiddenUnlessPredicate extends OtherKeyPredicate { +public ForbiddenUnlessPredicate(String otherKeyName) { super(otherKeyName); } +@Override public String predicateName() { return "forbiddenUnless"; } +@Override public boolean test(Object thisValue, Object otherValue) { +return (thisValue==null) || (otherValue!=null); +} +} + +public static Predicate requiredIf(String otherKeyName) { return new RequiredIfPredicate(otherKeyName); } +public static class RequiredIfPredicate extends OtherKeyPredicate { +public RequiredIfPredicate(String