You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@brooklyn.apache.org by dr...@apache.org on 2017/09/13 11:48:59 UTC
[1/3] brooklyn-server git commit: fix Catalog method backwards
compatibility, and deprecate them
Repository: brooklyn-server
Updated Branches:
refs/heads/master 5827932c2 -> 4795aac1b
fix Catalog method backwards compatibility, and deprecate them
now they delegate to TypeRegistry if can't find locally
Project: http://git-wip-us.apache.org/repos/asf/brooklyn-server/repo
Commit: http://git-wip-us.apache.org/repos/asf/brooklyn-server/commit/6a8800d6
Tree: http://git-wip-us.apache.org/repos/asf/brooklyn-server/tree/6a8800d6
Diff: http://git-wip-us.apache.org/repos/asf/brooklyn-server/diff/6a8800d6
Branch: refs/heads/master
Commit: 6a8800d6cfd760f287ff6eb9a979483651f88bda
Parents: 36de666
Author: Alex Heneveld <al...@cloudsoftcorp.com>
Authored: Mon Sep 11 13:19:33 2017 +0100
Committer: Alex Heneveld <al...@cloudsoftcorp.com>
Committed: Mon Sep 11 13:19:33 2017 +0100
----------------------------------------------------------------------
.../brooklyn/api/catalog/BrooklynCatalog.java | 39 +++++++++++--
.../catalog/internal/BasicBrooklynCatalog.java | 60 +++++++++++++++++---
.../core/catalog/internal/CatalogUtils.java | 2 +-
.../core/typereg/BasicBrooklynTypeRegistry.java | 6 +-
.../brooklyn/core/typereg/RegisteredTypes.java | 9 +--
5 files changed, 93 insertions(+), 23 deletions(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/brooklyn-server/blob/6a8800d6/api/src/main/java/org/apache/brooklyn/api/catalog/BrooklynCatalog.java
----------------------------------------------------------------------
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 cbc5b2b..9c7ed66 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
@@ -25,6 +25,7 @@ import java.util.NoSuchElementException;
import javax.annotation.Nullable;
import org.apache.brooklyn.api.internal.AbstractBrooklynObjectSpec;
+import org.apache.brooklyn.api.typereg.BrooklynTypeRegistry;
import org.apache.brooklyn.api.typereg.ManagedBundle;
import org.apache.brooklyn.api.typereg.RegisteredType;
import org.apache.brooklyn.api.typereg.RegisteredTypeLoadingContext;
@@ -45,25 +46,51 @@ public interface BrooklynCatalog {
* {@link CatalogItem#getSymbolicName() symbolicName}
* and optionally {@link CatalogItem#getVersion()},
* taking the best version if the version is {@link #DEFAULT_VERSION} or null,
- * returning null if no matches are found. */
+ * returning null if no matches are found.
+ * @deprecated since 0.12.0 use {@link BrooklynTypeRegistry} instead */
+ @Deprecated
CatalogItem<?,?> getCatalogItem(String symbolicName, String version);
+
+ /** As {@link #getCatalogItem(String, String)} but only looking in legacy catalog
+ * @deprecated since 0.12.0 only provided to allow TypeRegistry to see the legacy items */
+ CatalogItem<?,?> getCatalogItemLegacy(String symbolicName, String version);
/** @return Deletes the item with the given {@link CatalogItem#getSymbolicName()
* symbolicName} and version
- * @throws NoSuchElementException if not found */
+ * @throws NoSuchElementException if not found
+ * @deprecated since 0.12.0 use {@link BrooklynTypeRegistry} instead */
+ @Deprecated
void deleteCatalogItem(String symbolicName, String version);
/** variant of {@link #getCatalogItem(String, String)} which checks (and casts) type for convenience
- * (returns null if type does not match) */
+ * (returns null if type does not match)
+ * @deprecated since 0.12.0 use {@link BrooklynTypeRegistry} instead */
+ @Deprecated
<T,SpecT> CatalogItem<T,SpecT> getCatalogItem(Class<T> type, String symbolicName, String version);
+
+ /** As non-legacy method but only looking in legacy catalog
+ * @deprecated since 0.12.0 only provided to allow TypeRegistry to see the legacy items */
+ <T,SpecT> CatalogItem<T,SpecT> getCatalogItemLegacy(Class<T> type, String symbolicName, String version);
- /** @return All items in the catalog */
+ /** @return All items in the catalog
+ * @deprecated since 0.12.0 use {@link BrooklynTypeRegistry} instead */
+ @Deprecated
<T,SpecT> Iterable<CatalogItem<T,SpecT>> getCatalogItems();
- /** convenience for filtering items in the catalog; see CatalogPredicates for useful filters */
-// XXX
+ /** As non-legacy method but only looking in legacy catalog
+ * @deprecated since 0.12.0 only provided to allow TypeRegistry to see the legacy items */
+ @Deprecated
+ <T,SpecT> Iterable<CatalogItem<T,SpecT>> getCatalogItemsLegacy();
+
+ /** convenience for filtering items in the catalog; see CatalogPredicates for useful filters
+ * @deprecated since 0.12.0 use {@link BrooklynTypeRegistry} instead */
+ @Deprecated
<T,SpecT> Iterable<CatalogItem<T,SpecT>> getCatalogItems(Predicate<? super CatalogItem<T,SpecT>> filter);
+ /** As non-legacy method but only looking in legacy catalog
+ * @deprecated since 0.12.0 only provided to allow TypeRegistry to see the legacy items */
+ <T,SpecT> Iterable<CatalogItem<T,SpecT>> getCatalogItemsLegacy(Predicate<? super CatalogItem<T,SpecT>> filter);
+
/** persists the catalog item to the object store, if persistence is enabled */
public void persist(CatalogItem<?, ?> catalogItem);
http://git-wip-us.apache.org/repos/asf/brooklyn-server/blob/6a8800d6/core/src/main/java/org/apache/brooklyn/core/catalog/internal/BasicBrooklynCatalog.java
----------------------------------------------------------------------
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 bfca5ca..3177a50 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
@@ -283,8 +283,16 @@ public class BasicBrooklynCatalog implements BrooklynCatalog {
return ImmutableSortedSet.orderedBy(CatalogItemComparator.<T,SpecT>getInstance()).addAll(versions).build();
}
- @Override
+ @Override @Deprecated
public CatalogItem<?,?> getCatalogItem(String symbolicName, String version) {
+ CatalogItem<?,?> legacy = getCatalogItemLegacy(symbolicName, version);
+ if (legacy!=null) return legacy;
+ RegisteredType rt = mgmt.getTypeRegistry().get(symbolicName, version);
+ if (rt!=null) return RegisteredTypes.toPartialCatalogItem(rt);
+ return null;
+ }
+ @Override @Deprecated
+ public CatalogItem<?,?> getCatalogItemLegacy(String symbolicName, String version) {
if (symbolicName == null) return null;
CatalogItemDo<?, ?> itemDo = getCatalogItemDo(symbolicName, version);
if (itemDo == null) return null;
@@ -337,9 +345,21 @@ public class BasicBrooklynCatalog implements BrooklynCatalog {
}
- @SuppressWarnings("unchecked")
+ @SuppressWarnings({ "unchecked", "rawtypes" })
@Override
public <T,SpecT> CatalogItem<T,SpecT> getCatalogItem(Class<T> type, String id, String version) {
+ RegisteredType rt = mgmt.getTypeRegistry().get(id, version);
+ if (rt!=null) {
+ if (rt.getSuperTypes().contains(type) || rt.getSuperTypes().contains(type.getName())) {
+ return (CatalogItem) RegisteredTypes.toPartialCatalogItem(rt);
+ }
+ }
+ return getCatalogItemLegacy(type, id, version);
+ }
+
+ @SuppressWarnings("unchecked")
+ @Override
+ public <T,SpecT> CatalogItem<T,SpecT> getCatalogItemLegacy(Class<T> type, String id, String version) {
if (id==null || version==null) return null;
CatalogItem<?,?> result = getCatalogItem(id, version);
if (result==null) return null;
@@ -1777,29 +1797,51 @@ public class BasicBrooklynCatalog implements BrooklynCatalog {
}
@SuppressWarnings({ "unchecked", "rawtypes" })
- @Override
+ @Deprecated
public <T,SpecT> Iterable<CatalogItem<T,SpecT>> getCatalogItems() {
+ Map<String,CatalogItem<T,SpecT>> result = MutableMap.of();
if (!getCatalog().isLoaded()) {
// some callers use this to force the catalog to load (maybe when starting as hot_backup without a catalog ?)
log.debug("Forcing catalog load on access of catalog items");
load();
}
- return ImmutableList.copyOf((Iterable)catalog.getIdCache().values());
+ result.putAll((Map)catalog.getIdCache());
+ for (RegisteredType rt: mgmt.getTypeRegistry().getAll()) {
+ result.put(rt.getId(), (CatalogItem)RegisteredTypes.toPartialCatalogItem(rt));
+ }
+ return result.values();
}
@SuppressWarnings({ "unchecked", "rawtypes" })
@Override
+ @Deprecated
+ public <T,SpecT> Iterable<CatalogItem<T,SpecT>> getCatalogItemsLegacy() {
+ if (!getCatalog().isLoaded()) {
+ // some callers use this to force the catalog to load (maybe when starting as hot_backup without a catalog ?)
+ log.debug("Forcing catalog load on access of catalog items");
+ load();
+ }
+ return ImmutableList.copyOf((Iterable)catalog.getIdCache().values());
+ }
+
+ @SuppressWarnings({ "unchecked", "rawtypes" })
+ @Override @Deprecated
public <T,SpecT> Iterable<CatalogItem<T,SpecT>> getCatalogItems(Predicate<? super CatalogItem<T,SpecT>> filter) {
+ Iterable<CatalogItem<T,SpecT>> filtered = Iterables.filter(getCatalogItems(), (Predicate) filter);
+ return Iterables.transform(filtered, BasicBrooklynCatalog.<T,SpecT>itemDoToDto());
+ }
+ @Override @Deprecated
+ public <T,SpecT> Iterable<CatalogItem<T,SpecT>> getCatalogItemsLegacy(Predicate<? super CatalogItem<T,SpecT>> filter) {
Iterable<CatalogItemDo<T,SpecT>> filtered = Iterables.filter((Iterable)catalog.getIdCache().values(), (Predicate<CatalogItem<T,SpecT>>)(Predicate) filter);
return Iterables.transform(filtered, BasicBrooklynCatalog.<T,SpecT>itemDoToDto());
}
- private static <T,SpecT> Function<CatalogItemDo<T,SpecT>, CatalogItem<T,SpecT>> itemDoToDto() {
- return new Function<CatalogItemDo<T,SpecT>, CatalogItem<T,SpecT>>() {
+ private static <T,SpecT> Function<CatalogItem<T,SpecT>, CatalogItem<T,SpecT>> itemDoToDto() {
+ return new Function<CatalogItem<T,SpecT>, CatalogItem<T,SpecT>>() {
@Override
- public CatalogItem<T,SpecT> apply(@Nullable CatalogItemDo<T,SpecT> item) {
- if (item==null) return null;
- return item.getDto();
+ public CatalogItem<T,SpecT> apply(@Nullable CatalogItem<T,SpecT> item) {
+ if (!(item instanceof CatalogItemDo)) return item;
+ return ((CatalogItemDo<T,SpecT>) item).getDto();
}
};
}
http://git-wip-us.apache.org/repos/asf/brooklyn-server/blob/6a8800d6/core/src/main/java/org/apache/brooklyn/core/catalog/internal/CatalogUtils.java
----------------------------------------------------------------------
diff --git a/core/src/main/java/org/apache/brooklyn/core/catalog/internal/CatalogUtils.java b/core/src/main/java/org/apache/brooklyn/core/catalog/internal/CatalogUtils.java
index 06286c4..973f56d 100644
--- a/core/src/main/java/org/apache/brooklyn/core/catalog/internal/CatalogUtils.java
+++ b/core/src/main/java/org/apache/brooklyn/core/catalog/internal/CatalogUtils.java
@@ -336,7 +336,7 @@ public class CatalogUtils {
}
/** @deprecated since 0.9.0 use {@link BrooklynTypeRegistry#get(String, org.apache.brooklyn.api.typereg.BrooklynTypeRegistry.RegisteredTypeKind, Class)} */
- // only one item left, in deprecated service resolver
+ // not used
@Deprecated
public static <T,SpecT> CatalogItem<T, SpecT> getCatalogItemOptionalVersion(ManagementContext mgmt, Class<T> type, String versionedId) {
if (looksLikeVersionedId(versionedId)) {
http://git-wip-us.apache.org/repos/asf/brooklyn-server/blob/6a8800d6/core/src/main/java/org/apache/brooklyn/core/typereg/BasicBrooklynTypeRegistry.java
----------------------------------------------------------------------
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 5f8e361..440d301 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
@@ -93,7 +93,7 @@ public class BasicBrooklynTypeRegistry implements BrooklynTypeRegistry {
result.put(rt.getId(), rt);
}
for (RegisteredType rt: Iterables.filter(
- Iterables.transform(mgmt.getCatalog().getCatalogItems(), RegisteredTypes.CI_TO_RT),
+ Iterables.transform(mgmt.getCatalog().getCatalogItemsLegacy(), RegisteredTypes.CI_TO_RT),
filter)) {
if (!result.containsKey(rt.getId())) {
// shouldn't be using this now
@@ -146,7 +146,7 @@ public class BasicBrooklynTypeRegistry implements BrooklynTypeRegistry {
}
// missing case is to look for exact version in legacy catalog
- CatalogItem<?, ?> item = mgmt.getCatalog().getCatalogItem(symbolicNameOrAliasIfNoVersion, version);
+ CatalogItem<?, ?> item = mgmt.getCatalog().getCatalogItemLegacy(symbolicNameOrAliasIfNoVersion, version);
if (item!=null)
return Maybe.of( RegisteredTypes.CI_TO_RT.apply( item ) );
@@ -237,7 +237,7 @@ public class BasicBrooklynTypeRegistry implements BrooklynTypeRegistry {
// fallback: look up in (legacy) catalog
// TODO remove once all transformers are available in the new style
- CatalogItem item = symbolicName!=null ? (CatalogItem) mgmt.getCatalog().getCatalogItem(symbolicName, version) : null;
+ CatalogItem item = symbolicName!=null ? (CatalogItem) mgmt.getCatalog().getCatalogItemLegacy(symbolicName, version) : null;
if (item==null) {
// if not in catalog (because loading a new item?) then look up item based on type
// (only really used in tests; possibly also for any recursive legacy transformers we might have to create a CI; cross that bridge when we come to it)
http://git-wip-us.apache.org/repos/asf/brooklyn-server/blob/6a8800d6/core/src/main/java/org/apache/brooklyn/core/typereg/RegisteredTypes.java
----------------------------------------------------------------------
diff --git a/core/src/main/java/org/apache/brooklyn/core/typereg/RegisteredTypes.java b/core/src/main/java/org/apache/brooklyn/core/typereg/RegisteredTypes.java
index 6ec5983..275d5c8 100644
--- a/core/src/main/java/org/apache/brooklyn/core/typereg/RegisteredTypes.java
+++ b/core/src/main/java/org/apache/brooklyn/core/typereg/RegisteredTypes.java
@@ -150,6 +150,11 @@ public class RegisteredTypes {
@Override public String getContainingBundle() { return type.getContainingBundle(); }
@Override public String getVersion() { return type.getVersion(); }
+ @Override public void setDeprecated(boolean deprecated) { RegisteredTypes.setDeprecated(type, deprecated); }
+ @Override public void setDisabled(boolean disabled) { RegisteredTypes.setDisabled(type, disabled); }
+ @Override public boolean isDeprecated() { return type.isDeprecated(); }
+ @Override public boolean isDisabled() { return type.isDisabled(); }
+
@Override public List<String> getCatalogItemIdSearchPath() { throw new UnsupportedOperationException(); }
@Override public TagSupport tags() { throw new UnsupportedOperationException(); }
@Override public RelationSupport<?> relations() { throw new UnsupportedOperationException(); }
@@ -166,10 +171,6 @@ public class RegisteredTypes {
}
@Override public String getPlanYaml() { throw new UnsupportedOperationException(); }
@Override public RebindSupport<CatalogItemMemento> getRebindSupport() { throw new UnsupportedOperationException(); }
- @Override public void setDeprecated(boolean deprecated) { throw new UnsupportedOperationException(); }
- @Override public void setDisabled(boolean disabled) { throw new UnsupportedOperationException(); }
- @Override public boolean isDeprecated() { throw new UnsupportedOperationException(); }
- @Override public boolean isDisabled() { throw new UnsupportedOperationException(); }
}
/** Preferred mechanism for defining a bean {@link RegisteredType}.
[2/3] brooklyn-server git commit: better preserve backwards compat
(fixing tests) and tidy warnings/comments
Posted by dr...@apache.org.
better preserve backwards compat (fixing tests) and tidy warnings/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/4a4dd092
Tree: http://git-wip-us.apache.org/repos/asf/brooklyn-server/tree/4a4dd092
Diff: http://git-wip-us.apache.org/repos/asf/brooklyn-server/diff/4a4dd092
Branch: refs/heads/master
Commit: 4a4dd092f5a63946bf05f624f878b09defa392ef
Parents: 6a8800d
Author: Alex Heneveld <al...@cloudsoftcorp.com>
Authored: Mon Sep 11 14:15:29 2017 +0100
Committer: Alex Heneveld <al...@cloudsoftcorp.com>
Committed: Mon Sep 11 14:15:29 2017 +0100
----------------------------------------------------------------------
.../apache/brooklyn/core/BrooklynVersion.java | 38 ++++++++++++++------
.../catalog/internal/BasicBrooklynCatalog.java | 14 ++++++--
.../core/typereg/BasicBrooklynTypeRegistry.java | 10 ++++--
3 files changed, 48 insertions(+), 14 deletions(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/brooklyn-server/blob/4a4dd092/core/src/main/java/org/apache/brooklyn/core/BrooklynVersion.java
----------------------------------------------------------------------
diff --git a/core/src/main/java/org/apache/brooklyn/core/BrooklynVersion.java b/core/src/main/java/org/apache/brooklyn/core/BrooklynVersion.java
index 4cc1352..fa64665 100644
--- a/core/src/main/java/org/apache/brooklyn/core/BrooklynVersion.java
+++ b/core/src/main/java/org/apache/brooklyn/core/BrooklynVersion.java
@@ -29,6 +29,7 @@ import java.util.Hashtable;
import java.util.List;
import java.util.Map;
import java.util.Properties;
+import java.util.Set;
import java.util.concurrent.atomic.AtomicReference;
import java.util.jar.Attributes;
@@ -36,11 +37,15 @@ import javax.annotation.Nullable;
import org.apache.brooklyn.api.catalog.CatalogItem;
import org.apache.brooklyn.api.mgmt.ManagementContext;
+import org.apache.brooklyn.api.typereg.ManagedBundle;
+import org.apache.brooklyn.api.typereg.OsgiBundleWithUrl;
+import org.apache.brooklyn.api.typereg.RegisteredType;
import org.apache.brooklyn.core.catalog.internal.BasicBrooklynCatalog;
import org.apache.brooklyn.core.mgmt.classloading.OsgiBrooklynClassLoadingContext;
import org.apache.brooklyn.core.mgmt.ha.OsgiManager;
import org.apache.brooklyn.core.mgmt.internal.ManagementContextInternal;
import org.apache.brooklyn.rt.felix.ManifestHelper;
+import org.apache.brooklyn.util.collections.MutableSet;
import org.apache.brooklyn.util.core.ResourceUtils;
import org.apache.brooklyn.util.exceptions.Exceptions;
import org.apache.brooklyn.util.guava.Maybe;
@@ -309,16 +314,22 @@ public class BrooklynVersion implements BrooklynVersionService {
);
Maybe<OsgiManager> osgi = ((ManagementContextInternal)mgmt).getOsgiManager();
- for (CatalogItem<?, ?> catalogItem : mgmt.getCatalog().getCatalogItems()) {
- if (osgi.isPresentAndNonNull()) {
- for (CatalogItem.CatalogBundle catalogBundle : catalogItem.getLibraries()) {
+ if (osgi.isPresentAndNonNull()) {
+ for (ManagedBundle b: osgi.get().getManagedBundles().values()) {
+ Maybe<Bundle> osgiBundle = osgi.get().findBundle(b);
+ if (osgiBundle.isPresentAndNonNull()) {
+ bundles.add(osgiBundle.get());
+ }
+ }
+ // TODO remove when everything uses osgi bundles tracked by brooklyn above
+ for (RegisteredType t: mgmt.getTypeRegistry().getAll()) {
+ for (OsgiBundleWithUrl catalogBundle : t.getLibraries()) {
Maybe<Bundle> osgiBundle = osgi.get().findBundle(catalogBundle);
if (osgiBundle.isPresentAndNonNull()) {
bundles.add(osgiBundle.get());
}
}
}
-
}
// Set over list in case a bundle is reported more than once (e.g. from classpath and from OSGi).
@@ -332,14 +343,21 @@ public class BrooklynVersion implements BrooklynVersionService {
}
return features.build();
} else {
- Iterable<URL> manifests = ResourceUtils.create(mgmt).getResources(MANIFEST_PATH);
+ Set<URL> manifests = MutableSet.copyOf(ResourceUtils.create(mgmt).getResources(MANIFEST_PATH));
- for (CatalogItem<?, ?> catalogItem : mgmt.getCatalog().getCatalogItems()) {
- OsgiBrooklynClassLoadingContext osgiContext = new OsgiBrooklynClassLoadingContext(
- mgmt, catalogItem.getCatalogItemId(), catalogItem.getLibraries());
- manifests = Iterables.concat(manifests, osgiContext.getResources(MANIFEST_PATH));
+ Maybe<OsgiManager> osgi = ((ManagementContextInternal)mgmt).getOsgiManager();
+ if (osgi.isPresentAndNonNull()) {
+ // get manifests for all bundles installed
+ Iterables.addAll(manifests,
+ osgi.get().getResources(MANIFEST_PATH, osgi.get().getManagedBundles().values()) );
}
-
+
+ // TODO remove when everything uses osgi bundles tracked by brooklyn above
+ for (RegisteredType t: mgmt.getTypeRegistry().getAll()) {
+ OsgiBrooklynClassLoadingContext osgiContext = new OsgiBrooklynClassLoadingContext(mgmt, t.getId(), t.getLibraries());
+ Iterables.addAll(manifests, osgiContext.getResources(MANIFEST_PATH));
+ }
+
// Set over list in case a bundle is reported more than once (e.g. from classpath and from OSGi).
// Not sure of validity of this approach over just reporting duplicates.
ImmutableSet.Builder<BrooklynFeature> features = ImmutableSet.builder();
http://git-wip-us.apache.org/repos/asf/brooklyn-server/blob/4a4dd092/core/src/main/java/org/apache/brooklyn/core/catalog/internal/BasicBrooklynCatalog.java
----------------------------------------------------------------------
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 3177a50..d170970 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
@@ -348,13 +348,19 @@ public class BasicBrooklynCatalog implements BrooklynCatalog {
@SuppressWarnings({ "unchecked", "rawtypes" })
@Override
public <T,SpecT> CatalogItem<T,SpecT> getCatalogItem(Class<T> type, String id, String version) {
+ CatalogItem<T, SpecT> item = (CatalogItem) getCatalogItemLegacy(type, id, version);
+ if (item!=null) {
+ return item;
+ }
+
RegisteredType rt = mgmt.getTypeRegistry().get(id, version);
if (rt!=null) {
if (rt.getSuperTypes().contains(type) || rt.getSuperTypes().contains(type.getName())) {
return (CatalogItem) RegisteredTypes.toPartialCatalogItem(rt);
}
}
- return getCatalogItemLegacy(type, id, version);
+
+ return null;
}
@SuppressWarnings("unchecked")
@@ -1805,10 +1811,14 @@ public class BasicBrooklynCatalog implements BrooklynCatalog {
log.debug("Forcing catalog load on access of catalog items");
load();
}
- result.putAll((Map)catalog.getIdCache());
for (RegisteredType rt: mgmt.getTypeRegistry().getAll()) {
result.put(rt.getId(), (CatalogItem)RegisteredTypes.toPartialCatalogItem(rt));
}
+ // prefer locally registered items in this method; prevents conversion to and from RT;
+ // possibly allows different views if there are diff items in catlaog and type registry
+ // but this means at least it is consistent for user if they are consistent;
+ // and can easily live with this until catalog is entirely replaced to TR
+ result.putAll((Map)catalog.getIdCache());
return result.values();
}
http://git-wip-us.apache.org/repos/asf/brooklyn-server/blob/4a4dd092/core/src/main/java/org/apache/brooklyn/core/typereg/BasicBrooklynTypeRegistry.java
----------------------------------------------------------------------
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 440d301..983403c 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
@@ -96,8 +96,14 @@ public class BasicBrooklynTypeRegistry implements BrooklynTypeRegistry {
Iterables.transform(mgmt.getCatalog().getCatalogItemsLegacy(), RegisteredTypes.CI_TO_RT),
filter)) {
if (!result.containsKey(rt.getId())) {
- // shouldn't be using this now
- log.warn("Item '"+rt.getId()+"' not in type registry; only found in legacy catalog");
+ // TODO ideally never come here, however
+ // legacy cataog currently still used for java-scanned annotations;
+ // hopefully that will be deprecated and removed in near future
+ // (probably after switch to osgi and using catalog.bom --
+ // though it would not be too hard for java scan code in CatalogClasspath.load to
+ // make TypeRegistry instances instead of CatalogItem, esp if we had YOML to write that plan)
+
+ //log.warn("Item '"+rt.getId()+"' not in type registry; only found in legacy catalog");
result.put(rt.getId(), rt);
}
}
[3/3] brooklyn-server git commit: This closes #814
Posted by dr...@apache.org.
This closes #814
Project: http://git-wip-us.apache.org/repos/asf/brooklyn-server/repo
Commit: http://git-wip-us.apache.org/repos/asf/brooklyn-server/commit/4795aac1
Tree: http://git-wip-us.apache.org/repos/asf/brooklyn-server/tree/4795aac1
Diff: http://git-wip-us.apache.org/repos/asf/brooklyn-server/diff/4795aac1
Branch: refs/heads/master
Commit: 4795aac1b4d32a2154af7f3a26fff5c97cac29db
Parents: 5827932 4a4dd09
Author: Duncan Godwin <dr...@googlemail.com>
Authored: Wed Sep 13 12:48:52 2017 +0100
Committer: Duncan Godwin <dr...@googlemail.com>
Committed: Wed Sep 13 12:48:52 2017 +0100
----------------------------------------------------------------------
.../brooklyn/api/catalog/BrooklynCatalog.java | 39 +++++++++--
.../apache/brooklyn/core/BrooklynVersion.java | 38 ++++++++---
.../catalog/internal/BasicBrooklynCatalog.java | 70 +++++++++++++++++---
.../core/catalog/internal/CatalogUtils.java | 2 +-
.../core/typereg/BasicBrooklynTypeRegistry.java | 16 +++--
.../brooklyn/core/typereg/RegisteredTypes.java | 9 +--
6 files changed, 139 insertions(+), 35 deletions(-)
----------------------------------------------------------------------