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:45:28 UTC
[sling-org-apache-sling-jcr-classloader] 15/44: Ensure the
Repository Classloader facade is also an URLClassLoader (just like the
RepositoryClassLoader itself)
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.2-incubator
in repository https://gitbox.apache.org/repos/asf/sling-org-apache-sling-jcr-classloader.git
commit 6eb30339456c4cffea92c30f2ebba77d644a1e59
Author: Felix Meschberger <fm...@apache.org>
AuthorDate: Tue Nov 27 13:25:43 2007 +0000
Ensure the Repository Classloader facade is also an URLClassLoader
(just like the RepositoryClassLoader itself)
git-svn-id: https://svn.apache.org/repos/asf/incubator/sling/trunk/jcr/classloader@598634 13f79535-47bb-0310-9956-ffa450edef68
---
.../internal/RepositoryClassLoaderFacade.java | 23 ++++++++++++++++++----
1 file changed, 19 insertions(+), 4 deletions(-)
diff --git a/src/main/java/org/apache/sling/jcr/classloader/internal/RepositoryClassLoaderFacade.java b/src/main/java/org/apache/sling/jcr/classloader/internal/RepositoryClassLoaderFacade.java
index 056707d..e8f0f41 100644
--- a/src/main/java/org/apache/sling/jcr/classloader/internal/RepositoryClassLoaderFacade.java
+++ b/src/main/java/org/apache/sling/jcr/classloader/internal/RepositoryClassLoaderFacade.java
@@ -20,6 +20,7 @@ package org.apache.sling.jcr.classloader.internal;
import java.io.IOException;
import java.net.URL;
+import java.net.URLClassLoader;
import java.util.Enumeration;
import javax.jcr.RepositoryException;
@@ -32,11 +33,13 @@ import org.slf4j.LoggerFactory;
/**
* 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 @@ class RepositoryClassLoaderFacade extends ClassLoader {
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 @@ class RepositoryClassLoaderFacade extends ClassLoader {
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 @@ class RepositoryClassLoaderFacade extends ClassLoader {
}
}
- 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 @@ class RepositoryClassLoaderFacade extends ClassLoader {
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);
--
To stop receiving notification emails like this one, please contact
"commits@sling.apache.org" <co...@sling.apache.org>.