Hide bundle catalog.bom loading behind a feature flag

Project: http://git-wip-us.apache.org/repos/asf/brooklyn-server/repo
Commit: http://git-wip-us.apache.org/repos/asf/brooklyn-server/commit/48abd262
Tree: http://git-wip-us.apache.org/repos/asf/brooklyn-server/tree/48abd262
Diff: http://git-wip-us.apache.org/repos/asf/brooklyn-server/diff/48abd262

Branch: refs/heads/master
Commit: 48abd262099548bb246e1f1d9a7838e5b26958dc
Parents: 30573a5
Author: Svetoslav Neykov <[email protected]>
Authored: Tue Jul 5 12:36:02 2016 +0300
Committer: Svetoslav Neykov <[email protected]>
Committed: Wed Jul 6 14:58:48 2016 +0300

----------------------------------------------------------------------
 .../core/BrooklynFeatureEnablement.java         |  8 ++++++
 .../catalog/internal/CatalogBomScanner.java     | 27 +++++++++++++-------
 2 files changed, 26 insertions(+), 9 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/brooklyn-server/blob/48abd262/core/src/main/java/org/apache/brooklyn/core/BrooklynFeatureEnablement.java
----------------------------------------------------------------------
diff --git 
a/core/src/main/java/org/apache/brooklyn/core/BrooklynFeatureEnablement.java 
b/core/src/main/java/org/apache/brooklyn/core/BrooklynFeatureEnablement.java
index 48418a3..f2e8a0a 100644
--- a/core/src/main/java/org/apache/brooklyn/core/BrooklynFeatureEnablement.java
+++ b/core/src/main/java/org/apache/brooklyn/core/BrooklynFeatureEnablement.java
@@ -112,6 +112,13 @@ public class BrooklynFeatureEnablement {
     public static final String FEATURE_VALIDATE_LOCATION_SSH_KEYS = 
"brooklyn.validate.locationSshKeys";
 
     /**
+     * Whether to scan newly loaded bundles for catalog.bom and load it.
+     * 
+     * The functionality loads catalog items regardless of the persistence 
state so best used with persistence disabled.
+     */
+    public static final String FEATURE_LOAD_BUNDLE_CATALOG_BOM = 
FEATURE_PROPERTY_PREFIX+".osgi.catalog_bom";
+
+    /**
      * Values explicitly set by Java calls.
      */
     private static final Map<String, Boolean> FEATURE_ENABLEMENTS = 
Maps.newLinkedHashMap();
@@ -146,6 +153,7 @@ public class BrooklynFeatureEnablement {
         setDefault(FEATURE_AUTO_FIX_CATALOG_REF_ON_REBIND, false);
         setDefault(FEATURE_SSH_ASYNC_EXEC, false);
         setDefault(FEATURE_VALIDATE_LOCATION_SSH_KEYS, true);
+        setDefault(FEATURE_LOAD_BUNDLE_CATALOG_BOM, false);
     }
     
     static {

http://git-wip-us.apache.org/repos/asf/brooklyn-server/blob/48abd262/core/src/main/java/org/apache/brooklyn/core/catalog/internal/CatalogBomScanner.java
----------------------------------------------------------------------
diff --git 
a/core/src/main/java/org/apache/brooklyn/core/catalog/internal/CatalogBomScanner.java
 
b/core/src/main/java/org/apache/brooklyn/core/catalog/internal/CatalogBomScanner.java
index ae2885a..b7e0041 100644
--- 
a/core/src/main/java/org/apache/brooklyn/core/catalog/internal/CatalogBomScanner.java
+++ 
b/core/src/main/java/org/apache/brooklyn/core/catalog/internal/CatalogBomScanner.java
@@ -23,6 +23,7 @@ import com.google.common.collect.ImmutableMap;
 import com.google.common.collect.Iterables;
 import org.apache.brooklyn.api.catalog.CatalogItem;
 import org.apache.brooklyn.api.mgmt.ManagementContext;
+import org.apache.brooklyn.core.BrooklynFeatureEnablement;
 import org.apache.brooklyn.util.collections.MutableList;
 import org.apache.brooklyn.util.exceptions.Exceptions;
 import org.apache.brooklyn.util.stream.Streams;
@@ -60,21 +61,29 @@ public class CatalogBomScanner {
     private CatalogPopulator catalogTracker;
 
     public void bind(ServiceReference<ManagementContext> managementContext) 
throws Exception {
-        LOG.debug("Binding management context with whiteList [{}] and 
blacklist [{}]",
-            Strings.join(getWhiteList(), "; "),
-            Strings.join(getBlackList(), "; "));
-        catalogTracker = new CatalogPopulator(managementContext);
+        if (isEnabled()) {
+            LOG.debug("Binding management context with whiteList [{}] and 
blacklist [{}]",
+                Strings.join(getWhiteList(), "; "),
+                Strings.join(getBlackList(), "; "));
+            catalogTracker = new CatalogPopulator(managementContext);
+        }
     }
 
     public void unbind(ServiceReference<ManagementContext> managementContext) 
throws Exception {
-        LOG.debug("Unbinding management context");
-        if (null != catalogTracker) {
-            CatalogPopulator temp = catalogTracker;
-            catalogTracker = null;
-            temp.close();
+        if (isEnabled()) {
+            LOG.debug("Unbinding management context");
+            if (null != catalogTracker) {
+                CatalogPopulator temp = catalogTracker;
+                catalogTracker = null;
+                temp.close();
+            }
         }
     }
 
+    private boolean isEnabled() {
+        return 
BrooklynFeatureEnablement.isEnabled(BrooklynFeatureEnablement.FEATURE_LOAD_BUNDLE_CATALOG_BOM);
+    }
+
     private String[] bundleIds(Bundle bundle) {
         return new String[] {
             String.valueOf(bundle.getBundleId()), bundle.getSymbolicName(), 
bundle.getVersion().toString()

Reply via email to