This is an automated email from the ASF dual-hosted git repository.

aledsage pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/brooklyn-server.git

commit ab67707f3b3728f3e2a12728e77fd8f5541c6c2f
Author: Paul Campbell <pcampb...@kemitix.net>
AuthorDate: Wed Oct 24 11:05:46 2018 +0100

    Extract static methods as a constructor parameters
    
    Providing the static method call as a function to the constructor makes unit
    testing for this class much simpler as it allows the static method to be
    mocked, improving the clarity of the unit tests.
---
 .../catalog/internal/CatalogInitialization.java    |  6 +++--
 .../catalog/internal/CatalogUpgradeScanner.java    | 28 +++++++++++++++-------
 2 files changed, 23 insertions(+), 11 deletions(-)

diff --git 
a/core/src/main/java/org/apache/brooklyn/core/catalog/internal/CatalogInitialization.java
 
b/core/src/main/java/org/apache/brooklyn/core/catalog/internal/CatalogInitialization.java
index e284479..fe57f41 100644
--- 
a/core/src/main/java/org/apache/brooklyn/core/catalog/internal/CatalogInitialization.java
+++ 
b/core/src/main/java/org/apache/brooklyn/core/catalog/internal/CatalogInitialization.java
@@ -68,7 +68,6 @@ import org.apache.brooklyn.util.os.Os;
 import org.apache.brooklyn.util.osgi.VersionedName;
 import org.apache.brooklyn.util.text.Strings;
 import org.apache.brooklyn.util.time.Duration;
-import org.osgi.framework.Bundle;
 import org.osgi.framework.BundleException;
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
@@ -135,7 +134,10 @@ public class CatalogInitialization implements 
ManagementContextInjectable {
         if (this.managementContext!=null && 
managementContext!=this.managementContext)
             throw new IllegalStateException("Cannot switch management context, 
from "+this.managementContext+" to "+managementContext);
         this.managementContext = (ManagementContextInternal) managementContext;
-        catalogUpgradeScanner = new 
CatalogUpgradeScanner(this.managementContext);
+        catalogUpgradeScanner = new 
CatalogUpgradeScanner(this.managementContext,
+                BundleUpgradeParser::parseBundleManifestForCatalogUpgrades,
+                RegisteredTypePredicates::containingBundle,
+                RegisteredTypePredicates::containingBundle);
     }
     
     /** Called by the framework to set true while starting up, and false 
afterwards,
diff --git 
a/core/src/main/java/org/apache/brooklyn/core/catalog/internal/CatalogUpgradeScanner.java
 
b/core/src/main/java/org/apache/brooklyn/core/catalog/internal/CatalogUpgradeScanner.java
index 446c083..b48bbf8 100644
--- 
a/core/src/main/java/org/apache/brooklyn/core/catalog/internal/CatalogUpgradeScanner.java
+++ 
b/core/src/main/java/org/apache/brooklyn/core/catalog/internal/CatalogUpgradeScanner.java
@@ -18,16 +18,20 @@
  */
 package org.apache.brooklyn.core.catalog.internal;
 
+import com.google.common.base.Predicate;
 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.mgmt.ha.OsgiManager;
 import org.apache.brooklyn.core.mgmt.internal.ManagementContextInternal;
-import org.apache.brooklyn.core.typereg.BundleUpgradeParser;
 import org.apache.brooklyn.core.typereg.BundleUpgradeParser.CatalogUpgrades;
 import org.apache.brooklyn.core.typereg.RegisteredTypePredicates;
 import org.apache.brooklyn.util.guava.Maybe;
 import org.osgi.framework.Bundle;
 
 import java.util.Collection;
+import java.util.function.BiFunction;
+import java.util.function.Function;
 
 /**
  * Scans managed bundles and other jar bundles to find upgrades for installed 
bundles.
@@ -35,11 +39,20 @@ import java.util.Collection;
 class CatalogUpgradeScanner {
 
     private final ManagementContextInternal managementContext;
+    private final BiFunction<Bundle, RegisteredTypesSupplier, CatalogUpgrades> 
bundleUpgradeParser;
+    private final Function<OsgiBundleWithUrl, Predicate<? super 
RegisteredType>> managedBundlePredicateSupplier;
+    private final Function<String, Predicate<? super RegisteredType>> 
unmanagedBundlePredicateSupplier;
 
     CatalogUpgradeScanner(
-            final ManagementContextInternal managementContext
+            final ManagementContextInternal managementContext,
+            final BiFunction<Bundle, RegisteredTypesSupplier, CatalogUpgrades> 
bundleUpgradeParser,
+            final Function<OsgiBundleWithUrl, Predicate<? super 
RegisteredType>> managedBundlePredicateSupplier,
+            final Function<String, Predicate<? super RegisteredType>> 
unmanagedBundlePredicateSupplier
     ) {
         this.managementContext = managementContext;
+        this.bundleUpgradeParser = bundleUpgradeParser;
+        this.managedBundlePredicateSupplier = managedBundlePredicateSupplier;
+        this.unmanagedBundlePredicateSupplier = 
unmanagedBundlePredicateSupplier;
     }
 
     public CatalogUpgrades scan(
@@ -61,8 +74,7 @@ class CatalogUpgradeScanner {
         for (ManagedBundle managedBundle : managedBundles) {
             Maybe<Bundle> bundle = osgiManager.findBundle(managedBundle);
             if (bundle.isPresent()) {
-                CatalogUpgrades catalogUpgrades = 
BundleUpgradeParser.parseBundleManifestForCatalogUpgrades(
-                        bundle.get(), typeSupplier(managedBundle));
+                CatalogUpgrades catalogUpgrades = 
bundleUpgradeParser.apply(bundle.get(), typeSupplier(managedBundle));
                 catalogUpgradesBuilder.addAll(catalogUpgrades);
             } else {
                 rebindLogger.info("Managed bundle "+managedBundle.getId()+" 
not found by OSGi Manager; "
@@ -76,20 +88,18 @@ class CatalogUpgradeScanner {
             final CatalogUpgrades.Builder catalogUpgradesBuilder
     ) {
         for (Bundle bundle : 
osgiManager.getFramework().getBundleContext().getBundles()) {
-            final CatalogUpgrades catalogUpgrades =
-                    
BundleUpgradeParser.parseBundleManifestForCatalogUpgrades(bundle, 
typeSupplier(bundle));
+            final CatalogUpgrades catalogUpgrades = 
bundleUpgradeParser.apply(bundle, typeSupplier(bundle));
             catalogUpgradesBuilder.addAll(catalogUpgrades);
         }
     }
 
     private RegisteredTypesSupplier typeSupplier(final ManagedBundle 
managedBundle) {
-        return new RegisteredTypesSupplier(managementContext,
-                RegisteredTypePredicates.containingBundle(managedBundle));
+        return new RegisteredTypesSupplier(managementContext, 
managedBundlePredicateSupplier.apply(managedBundle));
     }
 
     private RegisteredTypesSupplier typeSupplier(final Bundle bundle) {
         return new RegisteredTypesSupplier(managementContext,
-                
RegisteredTypePredicates.containingBundle(bundle.getSymbolicName()));
+                
unmanagedBundlePredicateSupplier.apply(bundle.getSymbolicName()));
     }
 
 }

Reply via email to