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 2021/09/21 19:46:40 UTC
[brooklyn-server] branch master updated: tidy text for spec
hierarchy and ensure `tags` and `brooklyn.tags` get combined
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 <al...@cloudsoftcorp.com>
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();
}