diff options
author | gjoranv <gv@verizonmedia.com> | 2020-04-16 23:04:58 +0200 |
---|---|---|
committer | gjoranv <gv@verizonmedia.com> | 2020-04-16 23:09:18 +0200 |
commit | 7ef36108d44bb634108ff48a4d1e8a2394ed9edd (patch) | |
tree | ad3d67dd59aec6eb96eecab6c1c1906cdc06b89b /container-core/src/main | |
parent | ba655e034f212024d6c992a86410d4715a7fea5f (diff) |
Allow setting a custom bundle installer for non-disk bundles.
Diffstat (limited to 'container-core/src/main')
-rw-r--r-- | container-core/src/main/java/com/yahoo/container/core/config/BundleLoader.java | 15 |
1 files changed, 12 insertions, 3 deletions
diff --git a/container-core/src/main/java/com/yahoo/container/core/config/BundleLoader.java b/container-core/src/main/java/com/yahoo/container/core/config/BundleLoader.java index ca1549784c6..559b4a28788 100644 --- a/container-core/src/main/java/com/yahoo/container/core/config/BundleLoader.java +++ b/container-core/src/main/java/com/yahoo/container/core/config/BundleLoader.java @@ -43,6 +43,9 @@ public class BundleLoader { private final Logger log = Logger.getLogger(BundleLoader.class.getName()); private final Osgi osgi; + // A custom bundle installer for non-disk bundles, to be used for testing + private BundleInstaller customBundleInstaller = null; + public BundleLoader(Osgi osgi) { this.osgi = osgi; } @@ -81,7 +84,9 @@ public class BundleLoader { FileAcquirer fileAcquirer = Container.get().getFileAcquirer(); boolean hasFileDistribution = (fileAcquirer != null); if (hasFileDistribution) { - installWithFileDistribution(bundlesToInstall, fileAcquirer); + installWithFileDistribution(bundlesToInstall, new FileAcquirerBundleInstaller(fileAcquirer)); + } else if (customBundleInstaller != null) { + installWithFileDistribution(bundlesToInstall, customBundleInstaller); } else { log.warning("Can't retrieve bundles since file distribution is disabled."); } @@ -96,11 +101,10 @@ public class BundleLoader { reference2Bundles.put(reference, bundles); } - private void installWithFileDistribution(List<FileReference> bundlesToInstall, FileAcquirer fileAcquirer) { + private void installWithFileDistribution(List<FileReference> bundlesToInstall, BundleInstaller bundleInstaller) { for (FileReference reference : bundlesToInstall) { try { log.info("Installing bundle with reference '" + reference.value() + "'"); - var bundleInstaller = new FileAcquirerBundleInstaller(fileAcquirer); List<Bundle> bundles = bundleInstaller.installBundles(reference, osgi); reference2Bundles.put(reference, bundles); } @@ -225,4 +229,9 @@ public class BundleLoader { return sb.toString(); } + // Only for testing + void useCustomBundleInstaller(BundleInstaller bundleInstaller) { + customBundleInstaller = bundleInstaller; + } + } |