You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@sling.apache.org by ro...@apache.org on 2017/11/07 09:46:44 UTC

[sling-org-apache-sling-jcr-classloader] 05/08: SLING-1191 : Dynamic class loader providers are not reloaded when bundles are updated/installed etc. Add new release method to the dynamic class loader provider. This allows a provider to react on bundle/class loader changes.

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

rombert pushed a commit to annotated tag org.apache.sling.jcr.classloader-3.0.0
in repository https://gitbox.apache.org/repos/asf/sling-org-apache-sling-jcr-classloader.git

commit 7c385410fefce9d54cc44f6c25077e8a9a9e86d1
Author: Carsten Ziegeler <cz...@apache.org>
AuthorDate: Tue Nov 17 11:12:48 2009 +0000

    SLING-1191 : Dynamic class loader providers are not reloaded when bundles are updated/installed etc.
    Add new release method to the dynamic class loader provider. This allows a provider to react on bundle/class loader changes.
    
    git-svn-id: https://svn.apache.org/repos/asf/sling/trunk/bundles/jcr/classloader@881245 13f79535-47bb-0310-9956-ffa450edef68
---
 pom.xml                                             |  3 +--
 .../internal/DynamicClassLoaderProviderImpl.java    | 21 ++++++++++-----------
 2 files changed, 11 insertions(+), 13 deletions(-)

diff --git a/pom.xml b/pom.xml
index 8476901..4bcb96c 100644
--- a/pom.xml
+++ b/pom.xml
@@ -23,7 +23,6 @@
         <groupId>org.apache.sling</groupId>
         <artifactId>sling</artifactId>
         <version>7</version>
-        <relativePath>../../../parent/pom.xml</relativePath>
     </parent>
 
     <artifactId>org.apache.sling.jcr.classloader</artifactId>
@@ -98,7 +97,7 @@
         <dependency>
             <groupId>org.apache.sling</groupId>
             <artifactId>org.apache.sling.commons.classloader</artifactId>
-            <version>1.0.0</version>
+            <version>1.1.0-SNAPSHOT</version>
             <scope>provided</scope>
         </dependency>
         <dependency>
diff --git a/src/main/java/org/apache/sling/jcr/classloader/internal/DynamicClassLoaderProviderImpl.java b/src/main/java/org/apache/sling/jcr/classloader/internal/DynamicClassLoaderProviderImpl.java
index 8dd5f3c..7befe0d 100644
--- a/src/main/java/org/apache/sling/jcr/classloader/internal/DynamicClassLoaderProviderImpl.java
+++ b/src/main/java/org/apache/sling/jcr/classloader/internal/DynamicClassLoaderProviderImpl.java
@@ -87,8 +87,6 @@ public class DynamicClassLoaderProviderImpl
 
     private String[] classPath;
 
-    private RepositoryClassLoaderFacade facade;
-
     /** @scr.reference policy="dynamic" */
     private MimeTypeService mimeTypeService;
 
@@ -116,15 +114,20 @@ public class DynamicClassLoaderProviderImpl
      * @see org.apache.sling.commons.classloader.DynamicClassLoaderProvider#getClassLoader(ClassLoader)
      */
     public ClassLoader getClassLoader(final ClassLoader parent) {
-        if ( this.facade == null ) {
-            this.facade = new RepositoryClassLoaderFacade(this, parent, this.getClassPaths());
-        }
-
-        return this.facade;
+        return new RepositoryClassLoaderFacade(this, parent, this.getClassPaths());
     }
 
+    /**
+     * @see org.apache.sling.commons.classloader.DynamicClassLoaderProvider#release(java.lang.ClassLoader)
+     */
+    public void release(ClassLoader classLoader) {
+        if ( classLoader instanceof RepositoryClassLoaderFacade ) {
+            ((RepositoryClassLoaderFacade)classLoader).destroy();
+        }
+    }
     //---------- SCR Integration ----------------------------------------------
 
+
     /**
      * @see org.apache.sling.commons.classloader.ClassLoaderWriter#delete(java.lang.String)
      */
@@ -415,10 +418,6 @@ public class DynamicClassLoaderProviderImpl
      * @param componentContext
      */
     protected void deactivate(final ComponentContext componentContext) {
-        if ( this.facade != null) {
-            this.facade.destroy();
-            this.facade = null;
-        }
         if ( this.readSession != null ) {
             this.readSession.logout();
             this.readSession = null;

-- 
To stop receiving notification emails like this one, please contact
"commits@sling.apache.org" <co...@sling.apache.org>.