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/05/28 15:15:14 UTC
[brooklyn-server] 02/07: tidy spec history summaries,
show when based on another type, or when it's the root blueprint
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
commit 4f8c8fe9c945701d591c3035d6c7435e5929d339
Author: Alex Heneveld <al...@cloudsoftcorp.com>
AuthorDate: Fri May 28 13:13:51 2021 +0100
tidy spec history summaries, show when based on another type, or when it's the root blueprint
---
.../spi/creation/CampTypePlanTransformer.java | 4 +++-
.../apache/brooklyn/core/mgmt/BrooklynTags.java | 14 ++++++++++++-
.../core/typereg/AbstractTypePlanTransformer.java | 24 ++++++++++++++++++----
.../typereg/JavaClassNameTypePlanTransformer.java | 2 +-
.../internal/StaticTypePlanTransformer.java | 4 ++--
.../typereg/ExampleXmlTypePlanTransformer.java | 2 +-
6 files changed, 40 insertions(+), 10 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 b76cd19..5558429 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
@@ -106,7 +106,9 @@ public class CampTypePlanTransformer extends AbstractTypePlanTransformer {
@Override
protected AbstractBrooklynObjectSpec<?, ?> createSpec(RegisteredType type, RegisteredTypeLoadingContext context) throws Exception {
try {
- return decorateWithHierarchySpecTag(new CampResolver(mgmt, type, context).createSpec(), type, FORMAT, null);
+ return decorateWithHierarchySpecTag(new CampResolver(mgmt, type, context).createSpec(), type, "Brooklyn CAMP", null,
+ prevHeadSpecSummary -> "Based on "+prevHeadSpecSummary);
+
} catch (Exception e) {
Exceptions.propagateIfFatal(e);
String message = null;
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 38de08a..78a460c 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
@@ -136,13 +136,19 @@ public class BrooklynTags {
}
public static Builder builder() { return new Builder(); }
+ public static Builder builder(SpecSummary base) { return new Builder(base); }
public static class Builder {
- private String format;
private String summary;
+ private String format;
private Object contents;
private Builder() {}
+ private Builder(SpecSummary base) {
+ summary = base.summary;
+ format = base.format;
+ contents = base.contents;
+ }
public Builder summary(final String summary) {
this.summary = summary;
@@ -221,6 +227,12 @@ public class BrooklynTags {
// usually the list has a single element here, if
newFirstSpecs.getSpecList().forEach(this::push);
}
+
+ public SpecSummary pop() {
+ if (getSpecList().isEmpty()) return null;
+ return getSpecList().remove(0);
+ }
+
}
public static class ListTag<T> {
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 9d4333a..14bba3d 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
@@ -18,7 +18,9 @@
*/
package org.apache.brooklyn.core.typereg;
+import java.util.function.Function;
import java.util.function.Supplier;
+import javax.annotation.Nullable;
import org.apache.brooklyn.api.catalog.BrooklynCatalog;
import org.apache.brooklyn.api.internal.AbstractBrooklynObjectSpec;
import org.apache.brooklyn.api.mgmt.ManagementContext;
@@ -27,6 +29,7 @@ import org.apache.brooklyn.api.typereg.RegisteredTypeLoadingContext;
import org.apache.brooklyn.core.catalog.internal.BasicBrooklynCatalog;
import org.apache.brooklyn.core.mgmt.BrooklynTags;
import org.apache.brooklyn.core.mgmt.BrooklynTags.SpecHierarchyTag;
+import org.apache.brooklyn.core.mgmt.BrooklynTags.SpecHierarchyTag.SpecSummary;
import org.apache.brooklyn.util.exceptions.Exceptions;
import org.apache.brooklyn.util.guava.Maybe;
import org.apache.brooklyn.util.javalang.JavaClassNames;
@@ -162,10 +165,17 @@ public abstract class AbstractTypePlanTransformer implements BrooklynTypePlanTra
protected abstract Object createBean(RegisteredType type, RegisteredTypeLoadingContext context) throws Exception;
- protected AbstractBrooklynObjectSpec<?,?> decorateWithHierarchySpecTag(AbstractBrooklynObjectSpec<?, ?> spec, RegisteredType type, final String format, final String summary) {
- final String specSummary = Strings.isBlank(summary)
- ? format + " plan for " + (Strings.isNonBlank(type.getSymbolicName())? type.getSymbolicName() : type.getDisplayName())
- : summary;
+ protected AbstractBrooklynObjectSpec<?,?> decorateWithHierarchySpecTag(AbstractBrooklynObjectSpec<?, ?> spec, RegisteredType type,
+ final String format, @Nullable final String summary,
+ @Nullable Function<String,String> previousSummaryModification) {
+ final String specSummary = Strings.isNonBlank(summary)
+ ? summary
+ : format + " plan" +
+ (Strings.isNonBlank(type.getSymbolicName())
+ ? "for type "+type.getSymbolicName()
+ : Strings.isNonBlank(type.getDisplayName())
+ ? "for "+type.getDisplayName()
+ : "");
BrooklynTags.SpecHierarchyTag.Builder currentSpecTagBuilder = BrooklynTags.SpecHierarchyTag.builder()
.format(format)
@@ -174,6 +184,12 @@ public abstract class AbstractTypePlanTransformer implements BrooklynTypePlanTra
SpecHierarchyTag specTag = BrooklynTags.findSpecHierarchyTag(spec.getTags());
if (specTag != null) {
+ if (!specTag.getSpecList().isEmpty() && previousSummaryModification!=null) {
+ SpecSummary oldHead = specTag.pop();
+ SpecSummary newPrevHead = SpecHierarchyTag.builder(oldHead).summary(
+ previousSummaryModification.apply(oldHead.summary)).buildSpecSummary();
+ specTag.push(newPrevHead);
+ }
specTag.push(currentSpecTagBuilder.buildSpecSummary());
} else {
specTag = currentSpecTagBuilder.buildSpecHierarchyTag();
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 6bfe0a7..b5e2394 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
@@ -65,7 +65,7 @@ public class JavaClassNameTypePlanTransformer extends AbstractTypePlanTransforme
@SuppressWarnings({ "unchecked" })
@Override
protected AbstractBrooklynObjectSpec<?,?> createSpec(RegisteredType type, RegisteredTypeLoadingContext context) throws Exception {
- return decorateWithHierarchySpecTag(RegisteredTypes.newSpecInstance(mgmt, (Class<? extends BrooklynObject>) getType(type, context)), type, FORMAT, null);
+ return decorateWithHierarchySpecTag(RegisteredTypes.newSpecInstance(mgmt, (Class<? extends BrooklynObject>) getType(type, context)), type, FORMAT, 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 2524564..413bacd 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
@@ -93,9 +93,9 @@ public class StaticTypePlanTransformer extends AbstractTypePlanTransformer {
@Override
protected AbstractBrooklynObjectSpec<?, ?> createSpec(RegisteredType type, RegisteredTypeLoadingContext context) throws Exception {
if (REGISTERED_SPECS.containsKey(type.getSymbolicName()))
- return decorateWithHierarchySpecTag(get(type.getSymbolicName()), type, FORMAT, null );
+ return decorateWithHierarchySpecTag(get(type.getSymbolicName()), type, FORMAT, null, null);
if (type.getPlan().getPlanData()!=null && REGISTERED_SPECS.containsKey(type.getPlan().getPlanData()))
- return decorateWithHierarchySpecTag(get((String)type.getPlan().getPlanData()), type, FORMAT, null);
+ return decorateWithHierarchySpecTag(get((String)type.getPlan().getPlanData()), type, FORMAT, 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 be3bd54..ab8a6cd 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
@@ -69,7 +69,7 @@ public class ExampleXmlTypePlanTransformer extends AbstractTypePlanTransformer {
@Override
protected AbstractBrooklynObjectSpec<?, ?> createSpec(RegisteredType type, RegisteredTypeLoadingContext context) throws Exception {
return decorateWithHierarchySpecTag(toEntitySpec(parseXml((String)type.getPlan().getPlanData()),
- isApplicationExpected(type, context) ? 0 : 1), type, "example-xml", null);
+ isApplicationExpected(type, context) ? 0 : 1), type, "example-xml", null, null);
}
private static boolean isApplicationExpected(RegisteredType type, RegisteredTypeLoadingContext context) {