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 2020/10/20 16:45:41 UTC
[brooklyn-server] 06/10: show errors when an unresolved item is
attempted to be used
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 23c33676f808fccc6e65259079a0a8cca9e9898a
Author: Alex Heneveld <al...@cloudsoftcorp.com>
AuthorDate: Tue Oct 20 15:18:47 2020 +0100
show errors when an unresolved item is attempted to be used
---
.../java/org/apache/brooklyn/api/catalog/BrooklynCatalog.java | 8 ++++----
.../brooklyn/core/catalog/internal/BasicBrooklynCatalog.java | 8 ++++----
.../apache/brooklyn/core/typereg/BasicBrooklynTypeRegistry.java | 4 ++--
3 files changed, 10 insertions(+), 10 deletions(-)
diff --git a/api/src/main/java/org/apache/brooklyn/api/catalog/BrooklynCatalog.java b/api/src/main/java/org/apache/brooklyn/api/catalog/BrooklynCatalog.java
index 1dbe39e..e77c415 100644
--- a/api/src/main/java/org/apache/brooklyn/api/catalog/BrooklynCatalog.java
+++ b/api/src/main/java/org/apache/brooklyn/api/catalog/BrooklynCatalog.java
@@ -149,7 +149,7 @@ public interface BrooklynCatalog {
@Beta // method may move elsewhere, or return type may change
public void addTypesFromBundleBom(String yaml, @Nullable ManagedBundle bundle, boolean forceUpdate, Map<RegisteredType, RegisteredType> result);
- /** As {@link #addTypesFromBundleBom(String, ManagedBundle, boolean, Map)} followed by {@link #validateType(RegisteredType, RegisteredTypeLoadingContext)}
+ /** As {@link #addTypesFromBundleBom(String, ManagedBundle, boolean, Map)} followed by {@link #validateType(RegisteredType, RegisteredTypeLoadingContext, boolean)}
* e.g. for use in tests and ad hoc setup when there is just a YAML file. In OSGi mode this adds a bundle; otherwise it uses legacy catalog item addition mode.
* <p>
* Note that if addition or validation fails, this throws, unlike {@link #addTypesFromBundleBom(String, ManagedBundle, boolean, Map)},
@@ -162,8 +162,8 @@ public interface BrooklynCatalog {
@Beta
Collection<RegisteredType> addTypesAndValidateAllowInconsistent(String catalogYaml, @Nullable Map<RegisteredType, RegisteredType> result, boolean forceUpdate);
- /** As {@link #validateType(RegisteredType, RegisteredTypeLoadingContext)} but taking a set of types, returning a map whose keys are
- * those types where validation failed, mapped to the collection of errors validating that type.
+ /** As {@link #validateType(RegisteredType, RegisteredTypeLoadingContext, boolean)} allowing unresolved, taking a set of types,
+ * and returning a map whose keys are those types where validation failed, mapped to the collection of errors validating that type.
* An empty map result indicates no validation errors in the types passed in.
*/
@Beta // method may move elsewhere
@@ -176,7 +176,7 @@ public interface BrooklynCatalog {
* for the given registered type.
*/
@Beta // method may move elsewhere
- Collection<Throwable> validateType(RegisteredType typeToValidate, @Nullable RegisteredTypeLoadingContext optionalConstraint);
+ Collection<Throwable> validateType(RegisteredType typeToValidate, @Nullable RegisteredTypeLoadingContext optionalConstraint, boolean allowUnresolved);
/** As {@link #addItems(String, boolean, boolean)}
*
diff --git a/core/src/main/java/org/apache/brooklyn/core/catalog/internal/BasicBrooklynCatalog.java b/core/src/main/java/org/apache/brooklyn/core/catalog/internal/BasicBrooklynCatalog.java
index 5a1a9e2..2c0f55f 100644
--- a/core/src/main/java/org/apache/brooklyn/core/catalog/internal/BasicBrooklynCatalog.java
+++ b/core/src/main/java/org/apache/brooklyn/core/catalog/internal/BasicBrooklynCatalog.java
@@ -1660,7 +1660,7 @@ public class BasicBrooklynCatalog implements BrooklynCatalog {
// (validation normally done by osgi load routines)
Map<String,Collection<Throwable>> errors = MutableMap.of();
for (CatalogItemDtoAbstract<?, ?> item: result) {
- Collection<Throwable> errorsInItem = validateType(RegisteredTypes.of(item), null);
+ Collection<Throwable> errorsInItem = validateType(RegisteredTypes.of(item), null, true);
if (!errorsInItem.isEmpty()) {
errors.put(item.getCatalogItemId(), errorsInItem);
}
@@ -1710,7 +1710,7 @@ public class BasicBrooklynCatalog implements BrooklynCatalog {
log.debug("Catalog load, starting validation cycle, "+typesRemainingToValidate.size()+" to validate");
Map<RegisteredType,Collection<Throwable>> result = MutableMap.of();
for (RegisteredType t: typesRemainingToValidate) {
- Collection<Throwable> tr = validateType(t, null);
+ Collection<Throwable> tr = validateType(t, null, true);
if (!tr.isEmpty()) {
result.put(t, tr);
}
@@ -1727,10 +1727,10 @@ public class BasicBrooklynCatalog implements BrooklynCatalog {
}
@Override @Beta
- public Collection<Throwable> validateType(RegisteredType typeToValidate, RegisteredTypeLoadingContext constraint) {
+ public Collection<Throwable> validateType(RegisteredType typeToValidate, RegisteredTypeLoadingContext constraint, boolean allowUnresolved) {
ReferenceWithError<RegisteredType> result = validateResolve(typeToValidate, constraint);
if (result.hasError()) {
- if (RegisteredTypes.isTemplate(typeToValidate)) {
+ if (allowUnresolved && RegisteredTypes.isTemplate(typeToValidate)) {
// ignore for templates
return Collections.emptySet();
}
diff --git a/core/src/main/java/org/apache/brooklyn/core/typereg/BasicBrooklynTypeRegistry.java b/core/src/main/java/org/apache/brooklyn/core/typereg/BasicBrooklynTypeRegistry.java
index 916ba56..d9a21d6 100644
--- a/core/src/main/java/org/apache/brooklyn/core/typereg/BasicBrooklynTypeRegistry.java
+++ b/core/src/main/java/org/apache/brooklyn/core/typereg/BasicBrooklynTypeRegistry.java
@@ -252,13 +252,13 @@ public class BasicBrooklynTypeRegistry implements BrooklynTypeRegistry {
} else {
// try just-in-time validation
- Collection<Throwable> validationErrors = mgmt.getCatalog().validateType(type, constraint);
+ Collection<Throwable> validationErrors = mgmt.getCatalog().validateType(type, constraint, false);
if (!validationErrors.isEmpty()) {
throw new ReferencedUnresolvedTypeException(type, true, Exceptions.create(validationErrors));
}
type = mgmt.getTypeRegistry().get(type.getSymbolicName(), type.getVersion());
if (type==null || type.getKind()==RegisteredTypeKind.UNRESOLVED) {
- // TODO show the resolution error
+ // shouldn't come here
throw new ReferencedUnresolvedTypeException(type);
}
return createSpec(type, constraint, specSuperType);