You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@sling.apache.org by fm...@apache.org on 2007/11/27 14:25:44 UTC

svn commit: r598634 - /incubator/sling/trunk/jcr/classloader/src/main/java/org/apache/sling/jcr/classloader/internal/RepositoryClassLoaderFacade.java

Author: fmeschbe
Date: Tue Nov 27 05:25:43 2007
New Revision: 598634

URL: http://svn.apache.org/viewvc?rev=598634&view=rev
Log:
Ensure the Repository Classloader facade is also an URLClassLoader
(just like the RepositoryClassLoader itself)

Modified:
    incubator/sling/trunk/jcr/classloader/src/main/java/org/apache/sling/jcr/classloader/internal/RepositoryClassLoaderFacade.java

Modified: incubator/sling/trunk/jcr/classloader/src/main/java/org/apache/sling/jcr/classloader/internal/RepositoryClassLoaderFacade.java
URL: http://svn.apache.org/viewvc/incubator/sling/trunk/jcr/classloader/src/main/java/org/apache/sling/jcr/classloader/internal/RepositoryClassLoaderFacade.java?rev=598634&r1=598633&r2=598634&view=diff
==============================================================================
--- incubator/sling/trunk/jcr/classloader/src/main/java/org/apache/sling/jcr/classloader/internal/RepositoryClassLoaderFacade.java (original)
+++ incubator/sling/trunk/jcr/classloader/src/main/java/org/apache/sling/jcr/classloader/internal/RepositoryClassLoaderFacade.java Tue Nov 27 05:25:43 2007
@@ -20,6 +20,7 @@
 
 import java.io.IOException;
 import java.net.URL;
+import java.net.URLClassLoader;
 import java.util.Enumeration;
 
 import javax.jcr.RepositoryException;
@@ -32,11 +33,13 @@
 /**
  * The <code>RepositoryClassLoaderFacade</code> TODO
  */
-class RepositoryClassLoaderFacade extends ClassLoader {
+class RepositoryClassLoaderFacade extends URLClassLoader {
 
     /** default log */
     private static final Logger log = LoggerFactory.getLogger(RepositoryClassLoaderFacade.class);
 
+    private static final URL[] NO_URLS = new URL[0];
+
     private RepositoryClassLoaderProviderImpl classLoaderProvider;
     private ClassLoader parent;
     private String sessionOwner;
@@ -58,7 +61,9 @@
             ClassLoader parent,
             String sessionOwner,
             String[] classPath) {
-        super(null); // no parent class loader, we delegate to repository class loaders
+
+        // no parent class loader, we delegate to repository class loaders
+        super(NO_URLS, null);
 
         this.classLoaderProvider = classLoaderProvider;
         this.parent = parent;
@@ -85,6 +90,16 @@
         return this.classPath.clone();
     }
 
+    @Override
+    public URL[] getURLs() {
+        try {
+            return getDelegateClassLoader().getURLs();
+        } catch (RepositoryException re) {
+            log.error("Cannot get repository class loader to get URLs", re);
+            return NO_URLS;
+        }
+    }
+
     protected synchronized Class loadClass(String name, boolean resolve) throws ClassNotFoundException {
         try {
             return this.getDelegateClassLoader().loadClass(name);
@@ -103,7 +118,7 @@
         }
     }
 
-    protected Enumeration findResources(String name) throws IOException {
+    public Enumeration findResources(String name) throws IOException {
         try {
             return this.getDelegateClassLoader().getResources(name);
         } catch (RepositoryException re) {
@@ -171,7 +186,7 @@
         return this.session;
     }
 
-    private ClassLoader getDelegateClassLoader() throws RepositoryException {
+    private DynamicRepositoryClassLoader getDelegateClassLoader() throws RepositoryException {
         if (this.delegate != null) {
             if (this.delegate.isDirty()) {
                 this.delegate = this.delegate.reinstantiate(this.getSession(), this.parent);