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(-)
----------------------------------------------------------------------