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