This is an automated email from the ASF dual-hosted git repository.
heneveld pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/brooklyn-server.git
The following commit(s) were added to refs/heads/master by this push:
new 9e056d4 tidy text for spec hierarchy and ensure `tags` and
`brooklyn.tags` get combined
9e056d4 is described below
commit 9e056d490cbf109c8b9daf91ba13ff95582d1a31
Author: Alex Heneveld <[email protected]>
AuthorDate: Tue Sep 21 20:45:36 2021 +0100
tidy text for spec hierarchy and ensure `tags` and `brooklyn.tags` get
combined
previously `tags` would be interpreted as a flag and clobber the
brookln.tags understood by the spec
---
.../spi/creation/CampTypePlanTransformer.java | 7 +++--
.../camp/brooklyn/spi/dsl/TagsYamlTest.java | 34 ++++++++++++++++++++++
.../apache/brooklyn/core/mgmt/BrooklynTags.java | 6 +++-
.../core/objs/proxy/InternalEntityFactory.java | 8 ++++-
.../core/typereg/AbstractTypePlanTransformer.java | 16 ++++++++--
.../typereg/JavaClassNameTypePlanTransformer.java | 2 +-
.../internal/StaticTypePlanTransformer.java | 4 +--
.../typereg/ExampleXmlTypePlanTransformer.java | 2 +-
.../brooklyn/rest/transform/TypeTransformer.java | 5 +++-
.../org/apache/brooklyn/util/text/Strings.java | 5 ++++
10 files changed, 78 insertions(+), 11 deletions(-)
diff --git
a/camp/camp-brooklyn/src/main/java/org/apache/brooklyn/camp/brooklyn/spi/creation/CampTypePlanTransformer.java
b/camp/camp-brooklyn/src/main/java/org/apache/brooklyn/camp/brooklyn/spi/creation/CampTypePlanTransformer.java
index 84717fc..4eaa8c4 100644
---
a/camp/camp-brooklyn/src/main/java/org/apache/brooklyn/camp/brooklyn/spi/creation/CampTypePlanTransformer.java
+++
b/camp/camp-brooklyn/src/main/java/org/apache/brooklyn/camp/brooklyn/spi/creation/CampTypePlanTransformer.java
@@ -37,6 +37,7 @@ import org.apache.brooklyn.util.guava.Maybe;
import com.google.common.collect.ImmutableList;
import org.apache.brooklyn.util.javalang.Boxing;
+import org.apache.brooklyn.util.text.Strings;
public class CampTypePlanTransformer extends AbstractTypePlanTransformer {
@@ -109,8 +110,10 @@ public class CampTypePlanTransformer extends
AbstractTypePlanTransformer {
@Override
protected AbstractBrooklynObjectSpec<?, ?> createSpec(RegisteredType type,
RegisteredTypeLoadingContext context) throws Exception {
try {
- return decorateWithCommonTags(new CampResolver(mgmt, type,
context).createSpec(),
- type, null, null, prevHeadSpecSummary -> "Based on
"+prevHeadSpecSummary);
+ return decorateWithCommonTagsModifyingSpecSummary(new
CampResolver(mgmt, type, context).createSpec(),
+ type, null, null, prevHeadSpecSummary ->
+
prevHeadSpecSummary.summary.startsWith(prevHeadSpecSummary.format) ? "Based on
"+prevHeadSpecSummary.summary :
+ prevHeadSpecSummary.summary);
} catch (Exception e) {
Exceptions.propagateIfFatal(e);
diff --git
a/camp/camp-brooklyn/src/test/java/org/apache/brooklyn/camp/brooklyn/spi/dsl/TagsYamlTest.java
b/camp/camp-brooklyn/src/test/java/org/apache/brooklyn/camp/brooklyn/spi/dsl/TagsYamlTest.java
index d9bdec1..e730c2b 100644
---
a/camp/camp-brooklyn/src/test/java/org/apache/brooklyn/camp/brooklyn/spi/dsl/TagsYamlTest.java
+++
b/camp/camp-brooklyn/src/test/java/org/apache/brooklyn/camp/brooklyn/spi/dsl/TagsYamlTest.java
@@ -15,6 +15,7 @@
*/
package org.apache.brooklyn.camp.brooklyn.spi.dsl;
+import org.apache.brooklyn.entity.stock.BasicEntity;
import static org.testng.Assert.assertTrue;
import javax.annotation.Nullable;
@@ -133,6 +134,39 @@ public class TagsYamlTest extends AbstractYamlTest {
assertTrue(app.tags().getTags().contains("myval"));
}
+ @Test
+ public void testBrooklynCampApplicationTag() throws Exception {
+ final Entity app = createAndStartApplication(
+ "services:",
+ "- type: " + BasicEntity.class.getName(),
+ "tags:",
+ "- oldStyle",
+ "brooklyn.tags:",
+ "- newStyle");
+ assertTrue(app.tags().getTags().contains("oldStyle"));
+ assertTrue(app.tags().getTags().contains("newStyle"));
+ }
+
+ @Test
+ public void testBrooklynCampApplicationNewStyleOnlyTag() throws Exception {
+ final Entity app = createAndStartApplication(
+ "services:",
+ "- type: " + BasicEntity.class.getName(),
+ "brooklyn.tags:",
+ "- newStyle");
+ assertTrue(app.tags().getTags().contains("newStyle"));
+ }
+
+ @Test
+ public void testBrooklynCampApplicationOldStyleOnlyTag() throws Exception {
+ final Entity app = createAndStartApplication(
+ "services:",
+ "- type: " + BasicEntity.class.getName(),
+ "tags:",
+ "- oldStyle");
+ assertTrue(app.tags().getTags().contains("oldStyle"));
+ }
+
public static class TagsTestObject {
public TagsTestObject() {}
public TagsTestObject(Object arg1) {}
diff --git a/core/src/main/java/org/apache/brooklyn/core/mgmt/BrooklynTags.java
b/core/src/main/java/org/apache/brooklyn/core/mgmt/BrooklynTags.java
index 1b43c0a..a9188c1 100644
--- a/core/src/main/java/org/apache/brooklyn/core/mgmt/BrooklynTags.java
+++ b/core/src/main/java/org/apache/brooklyn/core/mgmt/BrooklynTags.java
@@ -304,11 +304,15 @@ public class BrooklynTags {
return specList.remove(0);
}
+ @Beta @Deprecated /** @deprecated since 1.1 use {@link
#modifyHeadSpecSummary(List, java.util.function.Function)} */
public static boolean modifyHeadSummary(List<SpecSummary> specList,
java.util.function.Function<String, String> previousSummaryModification) {
+ return modifyHeadSpecSummary(specList, s ->
previousSummaryModification.apply(s.summary));
+ }
+ public static boolean modifyHeadSpecSummary(List<SpecSummary>
specList, java.util.function.Function<SpecSummary, String>
previousSummaryModification) {
if (!specList.isEmpty() && previousSummaryModification!=null) {
SpecSummary oldHead = popFromList(specList);
SpecSummary newPrevHead = SpecSummary.builder(oldHead).summary(
-
previousSummaryModification.apply(oldHead.summary)).build();
+ previousSummaryModification.apply(oldHead)).build();
pushToList(specList, newPrevHead);
return true;
}
diff --git
a/core/src/main/java/org/apache/brooklyn/core/objs/proxy/InternalEntityFactory.java
b/core/src/main/java/org/apache/brooklyn/core/objs/proxy/InternalEntityFactory.java
index 4e485dd..003da32 100644
---
a/core/src/main/java/org/apache/brooklyn/core/objs/proxy/InternalEntityFactory.java
+++
b/core/src/main/java/org/apache/brooklyn/core/objs/proxy/InternalEntityFactory.java
@@ -50,6 +50,7 @@ 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.core.flags.FlagUtils;
+import org.apache.brooklyn.util.core.flags.TypeCoercions;
import org.apache.brooklyn.util.core.task.Tasks;
import org.apache.brooklyn.util.exceptions.Exceptions;
import org.apache.brooklyn.util.javalang.AggregateClassLoader;
@@ -303,7 +304,12 @@ public class InternalEntityFactory extends InternalFactory
{
entity.tags().addTags(spec.getTags());
addSpecParameters(spec, theEntity.getMutableEntityType());
- theEntity.configure(MutableMap.copyOf(spec.getFlags()));
+ Map<String, ?> flags = MutableMap.copyOf(spec.getFlags());
+ Object extraTags = flags.remove("tags");
+ if (extraTags!=null) {
+ theEntity.tags().addTags(TypeCoercions.coerce(extraTags,
Iterable.class));
+ }
+ theEntity.configure(flags);
for (Entry<ConfigKey<?>, Object> entry :
spec.getConfig().entrySet()) {
entity.config().set((ConfigKey) entry.getKey(),
entry.getValue());
}
diff --git
a/core/src/main/java/org/apache/brooklyn/core/typereg/AbstractTypePlanTransformer.java
b/core/src/main/java/org/apache/brooklyn/core/typereg/AbstractTypePlanTransformer.java
index 2716770..b3aa038 100644
---
a/core/src/main/java/org/apache/brooklyn/core/typereg/AbstractTypePlanTransformer.java
+++
b/core/src/main/java/org/apache/brooklyn/core/typereg/AbstractTypePlanTransformer.java
@@ -172,9 +172,18 @@ public abstract class AbstractTypePlanTransformer
implements BrooklynTypePlanTra
protected abstract Object createBean(RegisteredType type,
RegisteredTypeLoadingContext context) throws Exception;
+ @Beta
+ @Deprecated /** @deprecated since 1.1.0 when introduced */
protected AbstractBrooklynObjectSpec<?,?>
decorateWithCommonTags(AbstractBrooklynObjectSpec<?, ?> spec, RegisteredType
type,
@Nullable
String format, @Nullable String summary,
@Nullable
Function<String,String> previousSummaryModification) {
+ return decorateWithCommonTagsModifyingSpecSummary(spec, type, format,
summary,
+ previousSummaryModification==null ? null : s ->
previousSummaryModification.apply(s.summary));
+ }
+ @Beta
+ protected AbstractBrooklynObjectSpec<?,?>
decorateWithCommonTagsModifyingSpecSummary(AbstractBrooklynObjectSpec<?, ?>
spec, RegisteredType type,
+ @Nullable
String format, @Nullable String summary,
+ @Nullable
Function<SpecSummary,String> previousSummaryModification) {
if (Strings.isBlank(format)) format = getFormatCode();
final String specSummaryText = Strings.isNonBlank(summary)
? summary
@@ -193,7 +202,7 @@ public abstract class AbstractTypePlanTransformer
implements BrooklynTypePlanTra
List<SpecSummary> specTag =
BrooklynTags.findSpecHierarchyTag(spec.getTags());
if (specTag != null) {
- SpecSummary.modifyHeadSummary(specTag,
previousSummaryModification);
+ SpecSummary.modifyHeadSpecSummary(specTag,
previousSummaryModification);
SpecSummary.pushToList(specTag, specSummary);
} else {
specTag = MutableList.of(specSummary);
@@ -201,7 +210,10 @@ public abstract class AbstractTypePlanTransformer
implements BrooklynTypePlanTra
List<SpecSummary> sources =
BrooklynTags.findSpecHierarchyTag(type.getTags());
if (sources != null) {
- SpecSummary.modifyHeadSummary(specTag, s -> "Converted for catalog
to "+s);
+ SpecSummary.modifyHeadSpecSummary(specTag, s ->
+ s.summary.startsWith(s.format) ? "Converted for catalog to
"+s.summary :
+ s.summary.contains(s.format) ? s.summary + ", converted
for catalog" :
+ s.summary + ", converted to "+s.format+" for catalog");
SpecSummary.pushToList(specTag, sources);
}
BrooklynTags.upsertSingleKeyMapValueTag(spec,
BrooklynTags.SPEC_HIERARCHY, specTag);
diff --git
a/core/src/main/java/org/apache/brooklyn/core/typereg/JavaClassNameTypePlanTransformer.java
b/core/src/main/java/org/apache/brooklyn/core/typereg/JavaClassNameTypePlanTransformer.java
index 1e9fdcc..dc95695 100644
---
a/core/src/main/java/org/apache/brooklyn/core/typereg/JavaClassNameTypePlanTransformer.java
+++
b/core/src/main/java/org/apache/brooklyn/core/typereg/JavaClassNameTypePlanTransformer.java
@@ -64,7 +64,7 @@ public class JavaClassNameTypePlanTransformer extends
AbstractTypePlanTransforme
@SuppressWarnings({ "unchecked" })
@Override
protected AbstractBrooklynObjectSpec<?,?> createSpec(RegisteredType type,
RegisteredTypeLoadingContext context) throws Exception {
- return decorateWithCommonTags(RegisteredTypes.newSpecInstance(mgmt,
(Class<? extends BrooklynObject>) getType(type, context)), type, null, null,
null);
+ return
decorateWithCommonTagsModifyingSpecSummary(RegisteredTypes.newSpecInstance(mgmt,
(Class<? extends BrooklynObject>) getType(type, context)), type, null, null,
null);
}
@Override
diff --git
a/core/src/test/java/org/apache/brooklyn/core/catalog/internal/StaticTypePlanTransformer.java
b/core/src/test/java/org/apache/brooklyn/core/catalog/internal/StaticTypePlanTransformer.java
index a0e8388..6861120 100644
---
a/core/src/test/java/org/apache/brooklyn/core/catalog/internal/StaticTypePlanTransformer.java
+++
b/core/src/test/java/org/apache/brooklyn/core/catalog/internal/StaticTypePlanTransformer.java
@@ -92,9 +92,9 @@ public class StaticTypePlanTransformer extends
AbstractTypePlanTransformer {
@Override
protected AbstractBrooklynObjectSpec<?, ?> createSpec(RegisteredType type,
RegisteredTypeLoadingContext context) throws Exception {
if (REGISTERED_SPECS.containsKey(type.getSymbolicName()))
- return decorateWithCommonTags(get(type.getSymbolicName()), type,
null, null, null);
+ return
decorateWithCommonTagsModifyingSpecSummary(get(type.getSymbolicName()), type,
null, null, null);
if (type.getPlan().getPlanData()!=null &&
REGISTERED_SPECS.containsKey(type.getPlan().getPlanData()))
- return
decorateWithCommonTags(get((String)type.getPlan().getPlanData()), type, null,
null, null);
+ return
decorateWithCommonTagsModifyingSpecSummary(get((String)type.getPlan().getPlanData()),
type, null, null, null);
return null;
}
diff --git
a/core/src/test/java/org/apache/brooklyn/core/typereg/ExampleXmlTypePlanTransformer.java
b/core/src/test/java/org/apache/brooklyn/core/typereg/ExampleXmlTypePlanTransformer.java
index 320ac00..2d44e31 100644
---
a/core/src/test/java/org/apache/brooklyn/core/typereg/ExampleXmlTypePlanTransformer.java
+++
b/core/src/test/java/org/apache/brooklyn/core/typereg/ExampleXmlTypePlanTransformer.java
@@ -67,7 +67,7 @@ public class ExampleXmlTypePlanTransformer extends
AbstractTypePlanTransformer {
@Override
protected AbstractBrooklynObjectSpec<?, ?> createSpec(RegisteredType type,
RegisteredTypeLoadingContext context) throws Exception {
- return
decorateWithCommonTags(toEntitySpec(parseXml((String)type.getPlan().getPlanData()),
+ return
decorateWithCommonTagsModifyingSpecSummary(toEntitySpec(parseXml((String)type.getPlan().getPlanData()),
isApplicationExpected(type, context) ? 0 : 1), type,
"example-xml", null, null);
}
diff --git
a/rest/rest-resources/src/main/java/org/apache/brooklyn/rest/transform/TypeTransformer.java
b/rest/rest-resources/src/main/java/org/apache/brooklyn/rest/transform/TypeTransformer.java
index a047a85..9812e2c 100644
---
a/rest/rest-resources/src/main/java/org/apache/brooklyn/rest/transform/TypeTransformer.java
+++
b/rest/rest-resources/src/main/java/org/apache/brooklyn/rest/transform/TypeTransformer.java
@@ -113,7 +113,10 @@ public class TypeTransformer {
List<SpecSummary> specList = MutableList.of(currentSpec);
if(specTag!= null){
// put the original spec tags first
- SpecSummary.modifyHeadSummary(specList, s -> "Converted to "+s);
+ SpecSummary.modifyHeadSpecSummary(specList, s ->
+ s.summary.startsWith(s.format) ? "Converted to "+s :
+ s.summary.contains(s.format) ? s.summary + ", converted" :
+ s.summary + ", converted to "+s.format);
SpecSummary.pushToList(specList, specTag);
}
result.setExtraField("specList", specList);
diff --git
a/utils/common/src/main/java/org/apache/brooklyn/util/text/Strings.java
b/utils/common/src/main/java/org/apache/brooklyn/util/text/Strings.java
index e7fad46..cd72af7 100644
--- a/utils/common/src/main/java/org/apache/brooklyn/util/text/Strings.java
+++ b/utils/common/src/main/java/org/apache/brooklyn/util/text/Strings.java
@@ -668,6 +668,11 @@ public class Strings {
return value.substring(0, 1).toUpperCase(Locale.ENGLISH) +
value.substring(1).toLowerCase(Locale.ENGLISH);
}
+ public static String toInitialLowerCase(String value) {
+ if (value==null || value.length()==0) return value;
+ return value.substring(0, 1).toLowerCase(Locale.ENGLISH) +
value.substring(1);
+ }
+
public static String reverse(String name) {
return new StringBuffer(name).reverse().toString();
}