This is an automated email from the ASF dual-hosted git repository. rombert pushed a commit to annotated tag org.apache.sling.commons.classloader-1.2.4 in repository https://gitbox.apache.org/repos/asf/sling-org-apache-sling-commons-classloader.git
commit bf4f1394bf381aa68f0774187a239f427de627ec Author: Carsten Ziegeler <[email protected]> AuthorDate: Tue Sep 27 09:08:05 2011 +0000 SLING-2232 : Package admin classloader should check bundle state git-svn-id: https://svn.apache.org/repos/asf/sling/trunk/bundles/commons/classloader@1176288 13f79535-47bb-0310-9956-ffa450edef68 --- .../commons/classloader/impl/PackageAdminClassLoader.java | 10 +++++++++- .../sling/commons/classloader/impl/ClassLoadingTest.java | 4 ++++ 2 files changed, 13 insertions(+), 1 deletion(-) diff --git a/src/main/java/org/apache/sling/commons/classloader/impl/PackageAdminClassLoader.java b/src/main/java/org/apache/sling/commons/classloader/impl/PackageAdminClassLoader.java index 0c869b7..fb3bed9 100644 --- a/src/main/java/org/apache/sling/commons/classloader/impl/PackageAdminClassLoader.java +++ b/src/main/java/org/apache/sling/commons/classloader/impl/PackageAdminClassLoader.java @@ -67,7 +67,15 @@ class PackageAdminClassLoader extends ClassLoader { */ private Bundle findBundleForPackage(final String pckName) { final ExportedPackage exportedPackage = this.packageAdmin.getExportedPackage(pckName); - final Bundle bundle = (exportedPackage == null ? null : exportedPackage.getExportingBundle()); + Bundle bundle = null; + if (exportedPackage != null && !exportedPackage.isRemovalPending() ) { + bundle = exportedPackage.getExportingBundle(); + if ( bundle != null ) { + if ( bundle.getState() != Bundle.ACTIVE ) { + bundle = null; + } + } + } return bundle; } diff --git a/src/test/java/org/apache/sling/commons/classloader/impl/ClassLoadingTest.java b/src/test/java/org/apache/sling/commons/classloader/impl/ClassLoadingTest.java index 2c2d5a0..a5497c4 100644 --- a/src/test/java/org/apache/sling/commons/classloader/impl/ClassLoadingTest.java +++ b/src/test/java/org/apache/sling/commons/classloader/impl/ClassLoadingTest.java @@ -61,8 +61,12 @@ public class ClassLoadingTest { will(returnValue(ep)); allowing(ep).getExportingBundle(); will(returnValue(bundle)); + allowing(ep).isRemovalPending(); + will(returnValue(false)); allowing(bundle).getBundleId(); will(returnValue(2L)); + allowing(bundle).getState(); + will(returnValue(Bundle.ACTIVE)); one(bundle).loadClass("org.apache.sling.test.A"); inSequence(sequence); will(returnValue(java.util.Map.class)); one(bundle).loadClass("org.apache.sling.test.A"); inSequence(sequence); -- To stop receiving notification emails like this one, please contact "[email protected]" <[email protected]>.
