From dfd4315565c6767ccb16979c8d098717ed2a4853 Mon Sep 17 00:00:00 2001 From: Aled Sage Date: Fri, 20 Jan 2017 18:12:38 +0000 Subject: [PATCH] persistence: include bundle-prefix for whitelisted classes --- .../brooklyn/core/mgmt/persist/OsgiClassPrefixer.java | 9 ++++++++- .../core/mgmt/persist/OsgiClassPrefixerTest.java | 2 +- 2 files changed, 9 insertions(+), 2 deletions(-) diff --git a/core/src/main/java/org/apache/brooklyn/core/mgmt/persist/OsgiClassPrefixer.java b/core/src/main/java/org/apache/brooklyn/core/mgmt/persist/OsgiClassPrefixer.java index f252f8eb2c..4c4a3487c5 100644 --- a/core/src/main/java/org/apache/brooklyn/core/mgmt/persist/OsgiClassPrefixer.java +++ b/core/src/main/java/org/apache/brooklyn/core/mgmt/persist/OsgiClassPrefixer.java @@ -58,7 +58,14 @@ protected OsgiClassPrefixer(@Nullable Function, Optional> bundl public Optional getPrefix(Class type) { Optional bundle = (bundleRetriever != null) ? bundleRetriever.apply(type) : Osgis.getBundleOf(type); - if (bundle.isPresent() && !whiteListRetriever.isBundleWhiteListed(bundle.get())) { + if (bundle.isPresent()) { + // Previously we didn't include the bundle prefix for whitelisted bundles. However, + // that means once a bundle is whitelisted it must always be whitelisted. That is + // annoying for customer-upgrades of persisted state created pre-karaf. For those + // upgrades, the temporary whitelist is a useful way to allow rebind to complete + // successfully. The persisted state will then be re-written with the appropriate + // prefixes. It is also better that we treat persistence/rebind of classes from + // Brooklyn bundles in the same way as customer bundles. return Optional.of(bundle.get().getSymbolicName() + DELIMITER); } return Optional.absent(); diff --git a/core/src/test/java/org/apache/brooklyn/core/mgmt/persist/OsgiClassPrefixerTest.java b/core/src/test/java/org/apache/brooklyn/core/mgmt/persist/OsgiClassPrefixerTest.java index 19a5610139..724d8d7d35 100644 --- a/core/src/test/java/org/apache/brooklyn/core/mgmt/persist/OsgiClassPrefixerTest.java +++ b/core/src/test/java/org/apache/brooklyn/core/mgmt/persist/OsgiClassPrefixerTest.java @@ -70,7 +70,7 @@ public void testGetPrefixWithWhitelistedBundle() throws Exception { } }; OsgiClassPrefixer prefixer = new OsgiClassPrefixer(bundleRetriever); - assertAbsent(prefixer.getPrefix(String.class)); + assertPresent(prefixer.getPrefix(String.class), "org.apache.brooklyn.my-bundle:"); } @Test