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:32 UTC

[sling-org-apache-sling-jcr-classloader] 12/18: Use provided parent class loader instead of own class loader

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

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

commit 31a142c3357c273ecf569dbe9070693c41d4d352
Author: Carsten Ziegeler <cz...@apache.org>
AuthorDate: Thu Jul 16 05:46:47 2009 +0000

    Use provided parent class loader instead of own class loader
    
    git-svn-id: https://svn.apache.org/repos/asf/sling/trunk/bundles/jcr/classloader@794540 13f79535-47bb-0310-9956-ffa450edef68
---
 .../internal/RepositoryClassLoaderProviderImpl.java   | 19 ++++++++++++++++---
 1 file changed, 16 insertions(+), 3 deletions(-)

diff --git a/src/main/java/org/apache/sling/jcr/classloader/internal/RepositoryClassLoaderProviderImpl.java b/src/main/java/org/apache/sling/jcr/classloader/internal/RepositoryClassLoaderProviderImpl.java
index c7f4fac..af5ee61 100644
--- a/src/main/java/org/apache/sling/jcr/classloader/internal/RepositoryClassLoaderProviderImpl.java
+++ b/src/main/java/org/apache/sling/jcr/classloader/internal/RepositoryClassLoaderProviderImpl.java
@@ -117,10 +117,23 @@ public class RepositoryClassLoaderProviderImpl
     }
 
     /**
-     * @see org.apache.sling.commons.classloader.DynamicClassLoaderProvider#getClassLoader()
+     * @see org.apache.sling.commons.classloader.DynamicClassLoaderProvider#getClassLoader(ClassLoader)
      */
-    public ClassLoader getClassLoader() {
-        return this.getClassLoader(null);
+    public ClassLoader getClassLoader(final ClassLoader parent) {
+        // we just make up a unique identifier
+        final String classLoaderOwner = "DynamicClassLoaderProvider:" + parent.hashCode();
+        RepositoryClassLoaderFacade loader =
+            (RepositoryClassLoaderFacade) this.loaders.get(classLoaderOwner);
+        if (loader == null) {
+            loader = new RepositoryClassLoaderFacade(this, parent,
+                    OWNER_DEFAULT, this.classPath);
+            this.loaders.put(classLoaderOwner, loader);
+        }
+
+        // extend reference counter
+        loader.ref();
+
+        return loader;
     }
 
     //---------- SCR Integration ----------------------------------------------

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