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:19:54 UTC
[sling-org-apache-sling-commons-classloader] annotated tag
org.apache.sling.commons.classloader-1.1.0 created (now 95613f4)
This is an automated email from the ASF dual-hosted git repository.
rombert pushed a change to annotated tag org.apache.sling.commons.classloader-1.1.0
in repository https://gitbox.apache.org/repos/asf/sling-org-apache-sling-commons-classloader.git.
at 95613f4 (tag)
tagging 4670ff0cd6c3b354a9caab614968f6577f8ed93d (commit)
by Carsten Ziegeler
on Tue Nov 24 15:57:39 2009 +0000
- Log -----------------------------------------------------------------
org.apache.sling.commons.classloader-1.1.0
-----------------------------------------------------------------------
This annotated tag includes the following new commits:
new 046ba4f SLING-1007 : Initial work of a dynamic class loader loading classes through package admin. In addition dynamic class loader providers can be registered.
new 5836631 Add simple junit test for dynamic class loading through package admin.
new ea90c38 Move classloader to main bundle area - as discussed recently
new 6b8a1f4 Correct activator.
new 3ffeb64 Ignore target directory.
new cc3b40d Fix class cast.
new 2813fc7 Fix resource handling (packages are separated by a slash not by a dot)
new 97bcc33 Register classloader as a service factory to get access to the client bundle for class loading.
new 54194d4 Fix AIOOB
new c5338c1 forgot to commit test case
new 8023ea1 Provide parent class loader to dynamic class loader providers; check for null reference.
new a2ba64a Experimental class loader writer for scripting engines.
new ce0fe40 SLING-1070 : Change class loading of package admin class loader to parent first, cache classes and resources in the class loader facade and reregister manager factory, if a used bundle is changed.
new 3c831d4 Activator must implement BundleActivator
new bf847ec Remove duplicate interface
new 0891b68 Don't cache classes in the facade, cache them in the package admin class loader.
new a391329 Remove warnings
new 61594f5 svn:ignore
new 8dd47bc Use latest parent pom.
new 9fc087f [maven-release-plugin] prepare release org.apache.sling.commons.classloader-0.9.0
new 1349bb6 [maven-release-plugin] prepare for next development iteration
new 3ffb349 SLING-1135 need to overwrite the loadClass(String, boolean) method and not the loadClass(String) method because only the former is called from "child" class loaders in class loader hierarchies.
new 1428ebb [maven-release-plugin] prepare release org.apache.sling.commons.classloader-1.0.0
new 27e590d [maven-release-plugin] prepare for next development iteration
new e4bc6a3 SLING-1144 : Make sync variable volatile and use tracker count instead of keeping track of changes by using custom methods.
new 2ffcc20 SLING-1145 : Exceptions from dynamic class loader providers should be catched
new b005143 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.
new bbbcd5e SLING-1201 : ClassLoaderFacade should not throw runtime exceptions and handle getResources() correctly
new def5c73 Just pass missing class into exception constructor.
new 8b116a6 [maven-release-plugin] prepare release org.apache.sling.commons.classloader-1.1.0
new 4670ff0 [maven-scm] copy for tag org.apache.sling.commons.classloader-1.1.0
The 31 revisions listed above as "new" are entirely new to this
repository and will be described in separate emails. The revisions
listed as "add" were already present in the repository and have only
been added to this reference.
--
To stop receiving notification emails like this one, please contact
['"commits@sling.apache.org" <co...@sling.apache.org>'].
[sling-org-apache-sling-commons-classloader] 02/08: SLING-1144 :
Make sync variable volatile and use tracker count instead of keeping track
of changes by using custom methods.
Posted by ro...@apache.org.
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.1.0
in repository https://gitbox.apache.org/repos/asf/sling-org-apache-sling-commons-classloader.git
commit e4bc6a3a7adf438188648edfdc3bfb8e4f5787d6
Author: Carsten Ziegeler <cz...@apache.org>
AuthorDate: Mon Oct 12 13:17:54 2009 +0000
SLING-1144 : Make sync variable volatile and use tracker count instead of keeping track of changes by using custom methods.
git-svn-id: https://svn.apache.org/repos/asf/sling/trunk/bundles/commons/classloader@824327 13f79535-47bb-0310-9956-ffa450edef68
---
.../impl/DynamicClassLoaderManagerImpl.java | 59 ++++++++--------------
1 file changed, 22 insertions(+), 37 deletions(-)
diff --git a/src/main/java/org/apache/sling/commons/classloader/impl/DynamicClassLoaderManagerImpl.java b/src/main/java/org/apache/sling/commons/classloader/impl/DynamicClassLoaderManagerImpl.java
index 2388b5b..6dabeb1 100644
--- a/src/main/java/org/apache/sling/commons/classloader/impl/DynamicClassLoaderManagerImpl.java
+++ b/src/main/java/org/apache/sling/commons/classloader/impl/DynamicClassLoaderManagerImpl.java
@@ -25,7 +25,6 @@ import org.osgi.framework.BundleContext;
import org.osgi.framework.ServiceReference;
import org.osgi.service.packageadmin.PackageAdmin;
import org.osgi.util.tracker.ServiceTracker;
-import org.osgi.util.tracker.ServiceTrackerCustomizer;
/**
* This is the default implementation of the dynamic class loader
@@ -33,7 +32,7 @@ import org.osgi.util.tracker.ServiceTrackerCustomizer;
*/
public class DynamicClassLoaderManagerImpl
extends ServiceTracker
- implements DynamicClassLoaderManager, ServiceTrackerCustomizer {
+ implements DynamicClassLoaderManager {
/** The package admin class loader. */
private final PackageAdminClassLoader pckAdminCL;
@@ -41,17 +40,14 @@ public class DynamicClassLoaderManagerImpl
/** The dynamic class loader. */
private final ClassLoaderFacade facade;
- /** The bundle context. */
- private final BundleContext context;
-
/** The cached chain of class loaders. */
private ClassLoader[] cache;
- /** Needs the cache an update? */
- private boolean updateCache = false;
+ /** Is this still active? */
+ private volatile boolean active = true;
- /** Is this service still active? */
- private boolean active = true;
+ /** Tracking count */
+ private volatile int trackingCount = -1;
/**
* Create a new service instance
@@ -64,45 +60,34 @@ public class DynamicClassLoaderManagerImpl
final ClassLoader parent,
final DynamicClassLoaderManagerFactory factory) {
super(ctx, DynamicClassLoaderProvider.class.getName(), null);
- this.context = ctx;
this.pckAdminCL = new PackageAdminClassLoader(pckAdmin, parent, factory);
this.cache = new ClassLoader[] {this.pckAdminCL};
this.open();
this.facade = new ClassLoaderFacade(this);
}
- public Object addingService(ServiceReference reference) {
- this.updateCache = true;
- return this.context.getService(reference);
- }
-
- public void modifiedService(ServiceReference reference, Object service) {
- // as the ranking property has changed we have to update the cache
- this.updateCache = true;
- }
-
- public void removedService(ServiceReference reference, Object service) {
- this.context.ungetService(reference);
- this.updateCache = true;
- }
-
private synchronized void updateCache() {
- if ( this.updateCache ) {
+ if ( this.trackingCount < this.getTrackingCount() ) {
final ServiceReference[] refs = this.getServiceReferences();
- final ClassLoader[] loaders = new ClassLoader[1 + refs.length];
- Arrays.sort(refs, ServiceReferenceComparator.INSTANCE);
- int index = 0;
- for(final ServiceReference ref : refs) {
- final DynamicClassLoaderProvider provider = (DynamicClassLoaderProvider)this.getService(ref);
- if ( provider != null ) {
- loaders[index] = provider.getClassLoader(this.pckAdminCL);
+ final ClassLoader[] loaders;
+ if ( refs == null || refs.length == 0 ) {
+ loaders = new ClassLoader[] {this.pckAdminCL};
+ } else {
+ loaders = new ClassLoader[1 + refs.length];
+ Arrays.sort(refs, ServiceReferenceComparator.INSTANCE);
+ int index = 0;
+ for(final ServiceReference ref : refs) {
+ final DynamicClassLoaderProvider provider = (DynamicClassLoaderProvider)this.getService(ref);
+ if ( provider != null ) {
+ loaders[index] = provider.getClassLoader(this.pckAdminCL);
+ }
+ index++;
}
- index++;
+ loaders[index] = this.pckAdminCL;
}
- loaders[index] = this.pckAdminCL;
// and now use new array
this.cache = loaders;
- this.updateCache = false;
+ this.trackingCount = this.getTrackingCount();
}
}
@@ -135,7 +120,7 @@ public class DynamicClassLoaderManagerImpl
* @return The list of class loaders.
*/
public ClassLoader[] getDynamicClassLoaders() {
- if ( this.updateCache ) {
+ if ( this.trackingCount < this.getTrackingCount() ) {
updateCache();
}
return this.cache;
--
To stop receiving notification emails like this one, please contact
"commits@sling.apache.org" <co...@sling.apache.org>.
[sling-org-apache-sling-commons-classloader] 03/08: SLING-1145 :
Exceptions from dynamic class loader providers should be catched
Posted by ro...@apache.org.
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.1.0
in repository https://gitbox.apache.org/repos/asf/sling-org-apache-sling-commons-classloader.git
commit 2ffcc20270360a1a71c28c4cf31604808f04bbf1
Author: Carsten Ziegeler <cz...@apache.org>
AuthorDate: Mon Oct 12 13:24:36 2009 +0000
SLING-1145 : Exceptions from dynamic class loader providers should be catched
git-svn-id: https://svn.apache.org/repos/asf/sling/trunk/bundles/commons/classloader@824328 13f79535-47bb-0310-9956-ffa450edef68
---
pom.xml | 4 +++
.../classloader/impl/ClassLoaderFacade.java | 36 +++++++++++++++++-----
2 files changed, 32 insertions(+), 8 deletions(-)
diff --git a/pom.xml b/pom.xml
index 7234371..e7a7bdb 100644
--- a/pom.xml
+++ b/pom.xml
@@ -103,5 +103,9 @@
<groupId>org.jmock</groupId>
<artifactId>jmock-junit4</artifactId>
</dependency>
+ <dependency>
+ <groupId>org.slf4j</groupId>
+ <artifactId>slf4j-simple</artifactId>
+ </dependency>
</dependencies>
</project>
diff --git a/src/main/java/org/apache/sling/commons/classloader/impl/ClassLoaderFacade.java b/src/main/java/org/apache/sling/commons/classloader/impl/ClassLoaderFacade.java
index e8e7426..2fbe4da 100644
--- a/src/main/java/org/apache/sling/commons/classloader/impl/ClassLoaderFacade.java
+++ b/src/main/java/org/apache/sling/commons/classloader/impl/ClassLoaderFacade.java
@@ -22,6 +22,9 @@ import java.io.IOException;
import java.net.URL;
import java.util.Enumeration;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
+
/**
* The <code>ClassLoaderFacade</code> is a facade
@@ -33,8 +36,15 @@ import java.util.Enumeration;
*/
public class ClassLoaderFacade extends ClassLoader {
+ /** The logger. */
+ private final Logger logger = LoggerFactory.getLogger(this.getClass().getName());
+
+ /** Dynamic class loader manager which manages the dynamic class loader providers for this facade. */
private final DynamicClassLoaderManagerImpl manager;
+ /**
+ * Constructor
+ */
public ClassLoaderFacade(final DynamicClassLoaderManagerImpl manager) {
this.manager = manager;
}
@@ -49,9 +59,13 @@ public class ClassLoaderFacade extends ClassLoader {
final ClassLoader[] loaders = manager.getDynamicClassLoaders();
for(final ClassLoader cl : loaders) {
if ( cl != null ) {
- final URL u = cl.getResource(name);
- if ( u != null ) {
- return u;
+ try {
+ final URL u = cl.getResource(name);
+ if ( u != null ) {
+ return u;
+ }
+ } catch (Throwable t) {
+ logger.error("Exception while querying class loader " + cl + " for resource " + name, t);
}
}
}
@@ -68,9 +82,13 @@ public class ClassLoaderFacade extends ClassLoader {
final ClassLoader[] loaders = manager.getDynamicClassLoaders();
for(final ClassLoader cl : loaders) {
if ( cl != null ) {
- final Enumeration<URL> e = cl.getResources(name);
- if ( e != null && e.hasMoreElements() ) {
- return e;
+ try {
+ final Enumeration<URL> e = cl.getResources(name);
+ if ( e != null && e.hasMoreElements() ) {
+ return e;
+ }
+ } catch (Throwable t) {
+ logger.error("Exception while querying class loader " + cl + " for resources " + name, t);
}
}
}
@@ -79,7 +97,7 @@ public class ClassLoaderFacade extends ClassLoader {
@Override
protected synchronized Class<?> loadClass(String name, boolean resolve)
- throws ClassNotFoundException {
+ throws ClassNotFoundException {
if ( !this.manager.isActive() ) {
throw new RuntimeException("Dynamic class loader has already been deactivated.");
@@ -90,8 +108,10 @@ public class ClassLoaderFacade extends ClassLoader {
try {
final Class<?> c = cl.loadClass(name);
return c;
- } catch (Exception cnfe) {
+ } catch (ClassNotFoundException cnfe) {
// we just ignore this and try the next class loader
+ } catch (Throwable t) {
+ logger.error("Exception while trying to load class " + name + " from class loader " + cl, t);
}
}
}
--
To stop receiving notification emails like this one, please contact
"commits@sling.apache.org" <co...@sling.apache.org>.
[sling-org-apache-sling-commons-classloader] 06/08: Just pass
missing class into exception constructor.
Posted by ro...@apache.org.
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.1.0
in repository https://gitbox.apache.org/repos/asf/sling-org-apache-sling-commons-classloader.git
commit def5c73560f766fc5460181861a884ebbc4c1f18
Author: Carsten Ziegeler <cz...@apache.org>
AuthorDate: Tue Nov 24 15:49:13 2009 +0000
Just pass missing class into exception constructor.
git-svn-id: https://svn.apache.org/repos/asf/sling/trunk/bundles/commons/classloader@883734 13f79535-47bb-0310-9956-ffa450edef68
---
.../org/apache/sling/commons/classloader/impl/ClassLoaderFacade.java | 4 ++--
1 file changed, 2 insertions(+), 2 deletions(-)
diff --git a/src/main/java/org/apache/sling/commons/classloader/impl/ClassLoaderFacade.java b/src/main/java/org/apache/sling/commons/classloader/impl/ClassLoaderFacade.java
index 2be811b..b3c2d20 100644
--- a/src/main/java/org/apache/sling/commons/classloader/impl/ClassLoaderFacade.java
+++ b/src/main/java/org/apache/sling/commons/classloader/impl/ClassLoaderFacade.java
@@ -109,7 +109,7 @@ public class ClassLoaderFacade extends ClassLoader {
throws ClassNotFoundException {
if ( !this.manager.isActive() ) {
logger.error("Dynamic class loader has already been deactivated.");
- throw new ClassNotFoundException("Class not found: " + name);
+ throw new ClassNotFoundException(name);
}
final ClassLoader[] loaders = manager.getDynamicClassLoaders();
for(final ClassLoader cl : loaders) {
@@ -124,6 +124,6 @@ public class ClassLoaderFacade extends ClassLoader {
}
}
}
- throw new ClassNotFoundException("Class not found: " + name);
+ throw new ClassNotFoundException(name);
}
}
--
To stop receiving notification emails like this one, please contact
"commits@sling.apache.org" <co...@sling.apache.org>.
[sling-org-apache-sling-commons-classloader] 04/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.
Posted by ro...@apache.org.
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.1.0
in repository https://gitbox.apache.org/repos/asf/sling-org-apache-sling-commons-classloader.git
commit b005143ede2a47ac3d2203119ceb28b1c5949328
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/commons/classloader@881245 13f79535-47bb-0310-9956-ffa450edef68
---
pom.xml | 5 ++--
.../classloader/DynamicClassLoaderProvider.java | 14 +++++++++++
.../impl/DynamicClassLoaderManagerImpl.java | 27 ++++++++++++++++++++++
3 files changed, 43 insertions(+), 3 deletions(-)
diff --git a/pom.xml b/pom.xml
index e7a7bdb..b07ac06 100644
--- a/pom.xml
+++ b/pom.xml
@@ -24,12 +24,11 @@
<groupId>org.apache.sling</groupId>
<artifactId>sling</artifactId>
<version>7</version>
- <relativePath>../../../parent/pom.xml</relativePath>
</parent>
<artifactId>org.apache.sling.commons.classloader</artifactId>
<packaging>bundle</packaging>
- <version>1.0.1-SNAPSHOT</version>
+ <version>1.1.0-SNAPSHOT</version>
<name>Apache Sling Dynamic Class Loader Support</name>
<description>
@@ -58,7 +57,7 @@
org.apache.sling.commons.classloader.impl.Activator
</Bundle-Activator>
<Export-Package>
- org.apache.sling.commons.classloader;version=${pom.version}
+ org.apache.sling.commons.classloader;version=1.1.0
</Export-Package>
<Private-Package>
org.apache.sling.commons.classloader.impl
diff --git a/src/main/java/org/apache/sling/commons/classloader/DynamicClassLoaderProvider.java b/src/main/java/org/apache/sling/commons/classloader/DynamicClassLoaderProvider.java
index cdac258..bf7985e 100644
--- a/src/main/java/org/apache/sling/commons/classloader/DynamicClassLoaderProvider.java
+++ b/src/main/java/org/apache/sling/commons/classloader/DynamicClassLoaderProvider.java
@@ -33,8 +33,22 @@ public interface DynamicClassLoaderProvider {
* as one of its parent class loaders. This ensures that the returned
* class loader has access to all dynamically loaded classes that
* are not part of this class loader.
+ * When the class loader is not needed anymore, it is released by
+ * calling the {@link #release(ClassLoader)} method.
* @param parent The parent class loader for this dynamic class loader.
* @return The class loader.
+ * @see #release(ClassLoader)
*/
ClassLoader getClassLoader(ClassLoader parent);
+
+ /**
+ * Release the provided class loader.
+ * When the class loader is not needed anymore, e.g. when the dynamic class
+ * loader is shutdown, it is released with this method.
+ * The implementation can use this hook to free any allocated resources etc.
+ * @param classLoader The class loader.
+ * @see #getClassLoader(ClassLoader)
+ * @since 2.0
+ */
+ void release(ClassLoader classLoader);
}
diff --git a/src/main/java/org/apache/sling/commons/classloader/impl/DynamicClassLoaderManagerImpl.java b/src/main/java/org/apache/sling/commons/classloader/impl/DynamicClassLoaderManagerImpl.java
index 6dabeb1..6c15c19 100644
--- a/src/main/java/org/apache/sling/commons/classloader/impl/DynamicClassLoaderManagerImpl.java
+++ b/src/main/java/org/apache/sling/commons/classloader/impl/DynamicClassLoaderManagerImpl.java
@@ -43,6 +43,9 @@ public class DynamicClassLoaderManagerImpl
/** The cached chain of class loaders. */
private ClassLoader[] cache;
+ /** The cached chain of dynamic class loader providers. */
+ private DynamicClassLoaderProvider[] providerCache;
+
/** Is this still active? */
private volatile boolean active = true;
@@ -62,6 +65,7 @@ public class DynamicClassLoaderManagerImpl
super(ctx, DynamicClassLoaderProvider.class.getName(), null);
this.pckAdminCL = new PackageAdminClassLoader(pckAdmin, parent, factory);
this.cache = new ClassLoader[] {this.pckAdminCL};
+ this.providerCache = new DynamicClassLoaderProvider[0];
this.open();
this.facade = new ClassLoaderFacade(this);
}
@@ -70,10 +74,13 @@ public class DynamicClassLoaderManagerImpl
if ( this.trackingCount < this.getTrackingCount() ) {
final ServiceReference[] refs = this.getServiceReferences();
final ClassLoader[] loaders;
+ final DynamicClassLoaderProvider[] providers;
if ( refs == null || refs.length == 0 ) {
loaders = new ClassLoader[] {this.pckAdminCL};
+ providers = new DynamicClassLoaderProvider[0];
} else {
loaders = new ClassLoader[1 + refs.length];
+ providers = new DynamicClassLoaderProvider[refs.length];
Arrays.sort(refs, ServiceReferenceComparator.INSTANCE);
int index = 0;
for(final ServiceReference ref : refs) {
@@ -85,18 +92,38 @@ public class DynamicClassLoaderManagerImpl
}
loaders[index] = this.pckAdminCL;
}
+ // release old class loaders
+ this.releaseProviders();
+
// and now use new array
this.cache = loaders;
+ this.providerCache = providers;
this.trackingCount = this.getTrackingCount();
}
}
/**
+ * Free used class loader providers
+ */
+ private void releaseProviders() {
+ if ( this.providerCache != null ) {
+ for(int i=0; i<this.providerCache.length; i++) {
+ if ( this.cache[i] != null ) {
+ this.providerCache[i].release(this.cache[i]);
+ }
+ }
+ }
+ }
+
+ /**
* Deactivate this service.
*/
public void deactivate() {
+ this.releaseProviders();
this.active = false;
this.close();
+ this.providerCache = null;
+ this.cache = null;
}
/**
--
To stop receiving notification emails like this one, please contact
"commits@sling.apache.org" <co...@sling.apache.org>.
[sling-org-apache-sling-commons-classloader] 07/08:
[maven-release-plugin] prepare release
org.apache.sling.commons.classloader-1.1.0
Posted by ro...@apache.org.
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.1.0
in repository https://gitbox.apache.org/repos/asf/sling-org-apache-sling-commons-classloader.git
commit 8b116a6063a3f796b8cb7230b19a39cd8c583b71
Author: Carsten Ziegeler <cz...@apache.org>
AuthorDate: Tue Nov 24 15:57:13 2009 +0000
[maven-release-plugin] prepare release org.apache.sling.commons.classloader-1.1.0
git-svn-id: https://svn.apache.org/repos/asf/sling/trunk/bundles/commons/classloader@883735 13f79535-47bb-0310-9956-ffa450edef68
---
pom.xml | 8 ++++----
1 file changed, 4 insertions(+), 4 deletions(-)
diff --git a/pom.xml b/pom.xml
index b07ac06..f35408d 100644
--- a/pom.xml
+++ b/pom.xml
@@ -28,7 +28,7 @@
<artifactId>org.apache.sling.commons.classloader</artifactId>
<packaging>bundle</packaging>
- <version>1.1.0-SNAPSHOT</version>
+ <version>1.1.0</version>
<name>Apache Sling Dynamic Class Loader Support</name>
<description>
@@ -36,9 +36,9 @@
</description>
<scm>
- <connection>scm:svn:http://svn.apache.org/repos/asf/sling/trunk/bundles/commons/classloader</connection>
- <developerConnection>scm:svn:https://svn.apache.org/repos/asf/sling/trunk/bundles/commons/classloader</developerConnection>
- <url>http://svn.apache.org/viewvc/sling/trunk/bundles/commons/classloader</url>
+ <connection>scm:svn:http://svn.apache.org/repos/asf/sling/tags/org.apache.sling.commons.classloader-1.1.0</connection>
+ <developerConnection>scm:svn:https://svn.apache.org/repos/asf/sling/tags/org.apache.sling.commons.classloader-1.1.0</developerConnection>
+ <url>http://svn.apache.org/viewvc/sling/tags/org.apache.sling.commons.classloader-1.1.0</url>
</scm>
<build>
--
To stop receiving notification emails like this one, please contact
"commits@sling.apache.org" <co...@sling.apache.org>.
[sling-org-apache-sling-commons-classloader] 08/08: [maven-scm]
copy for tag org.apache.sling.commons.classloader-1.1.0
Posted by ro...@apache.org.
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.1.0
in repository https://gitbox.apache.org/repos/asf/sling-org-apache-sling-commons-classloader.git
commit 4670ff0cd6c3b354a9caab614968f6577f8ed93d
Author: Carsten Ziegeler <cz...@apache.org>
AuthorDate: Tue Nov 24 15:57:39 2009 +0000
[maven-scm] copy for tag org.apache.sling.commons.classloader-1.1.0
git-svn-id: https://svn.apache.org/repos/asf/sling/tags/org.apache.sling.commons.classloader-1.1.0@883736 13f79535-47bb-0310-9956-ffa450edef68
--
To stop receiving notification emails like this one, please contact
"commits@sling.apache.org" <co...@sling.apache.org>.
[sling-org-apache-sling-commons-classloader] 05/08: SLING-1201 :
ClassLoaderFacade should not throw runtime exceptions and handle
getResources() correctly
Posted by ro...@apache.org.
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.1.0
in repository https://gitbox.apache.org/repos/asf/sling-org-apache-sling-commons-classloader.git
commit bbbcd5ec58a5f3a29f81ff8a30bbc78692345622
Author: Carsten Ziegeler <cz...@apache.org>
AuthorDate: Tue Nov 24 15:23:05 2009 +0000
SLING-1201 : ClassLoaderFacade should not throw runtime exceptions and handle getResources() correctly
git-svn-id: https://svn.apache.org/repos/asf/sling/trunk/bundles/commons/classloader@883727 13f79535-47bb-0310-9956-ffa450edef68
---
.../classloader/impl/ClassLoaderFacade.java | 25 +++++++++++++++-------
1 file changed, 17 insertions(+), 8 deletions(-)
diff --git a/src/main/java/org/apache/sling/commons/classloader/impl/ClassLoaderFacade.java b/src/main/java/org/apache/sling/commons/classloader/impl/ClassLoaderFacade.java
index 2fbe4da..2be811b 100644
--- a/src/main/java/org/apache/sling/commons/classloader/impl/ClassLoaderFacade.java
+++ b/src/main/java/org/apache/sling/commons/classloader/impl/ClassLoaderFacade.java
@@ -20,12 +20,14 @@ package org.apache.sling.commons.classloader.impl;
import java.io.IOException;
import java.net.URL;
+import java.util.ArrayList;
+import java.util.Collections;
import java.util.Enumeration;
+import java.util.List;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
-
/**
* The <code>ClassLoaderFacade</code> is a facade
* for the dynamic class loading.
@@ -54,7 +56,8 @@ public class ClassLoaderFacade extends ClassLoader {
*/
public URL getResource(String name) {
if ( !this.manager.isActive() ) {
- throw new RuntimeException("Dynamic class loader has already been deactivated.");
+ logger.error("Dynamic class loader has already been deactivated.");
+ return null;
}
final ClassLoader[] loaders = manager.getDynamicClassLoaders();
for(final ClassLoader cl : loaders) {
@@ -72,35 +75,41 @@ public class ClassLoaderFacade extends ClassLoader {
return null;
}
+ private final List<URL> EMPTY_LIST = Collections.emptyList();
+
/**
* @see java.lang.ClassLoader#getResources(java.lang.String)
*/
public Enumeration<URL> getResources(String name) throws IOException {
if ( !this.manager.isActive() ) {
- throw new RuntimeException("Dynamic class loader has already been deactivated.");
+ logger.error("Dynamic class loader has already been deactivated.");
+ return Collections.enumeration(EMPTY_LIST);
}
final ClassLoader[] loaders = manager.getDynamicClassLoaders();
+ final List<URL> resources = new ArrayList<URL>();
for(final ClassLoader cl : loaders) {
if ( cl != null ) {
try {
final Enumeration<URL> e = cl.getResources(name);
if ( e != null && e.hasMoreElements() ) {
- return e;
+ resources.addAll(Collections.list(e));
}
} catch (Throwable t) {
logger.error("Exception while querying class loader " + cl + " for resources " + name, t);
}
}
}
- return null;
+ return Collections.enumeration(resources);
}
- @Override
+ /**
+ * @see java.lang.ClassLoader#loadClass(java.lang.String, boolean)
+ */
protected synchronized Class<?> loadClass(String name, boolean resolve)
throws ClassNotFoundException {
-
if ( !this.manager.isActive() ) {
- throw new RuntimeException("Dynamic class loader has already been deactivated.");
+ logger.error("Dynamic class loader has already been deactivated.");
+ throw new ClassNotFoundException("Class not found: " + name);
}
final ClassLoader[] loaders = manager.getDynamicClassLoaders();
for(final ClassLoader cl : loaders) {
--
To stop receiving notification emails like this one, please contact
"commits@sling.apache.org" <co...@sling.apache.org>.
[sling-org-apache-sling-commons-classloader] 01/08:
[maven-release-plugin] prepare for next development iteration
Posted by ro...@apache.org.
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.1.0
in repository https://gitbox.apache.org/repos/asf/sling-org-apache-sling-commons-classloader.git
commit 27e590d529cff10fa61d6d6a3559afaeb8ce7ca6
Author: Carsten Ziegeler <cz...@apache.org>
AuthorDate: Wed Oct 7 13:25:48 2009 +0000
[maven-release-plugin] prepare for next development iteration
git-svn-id: https://svn.apache.org/repos/asf/sling/trunk/bundles/commons/classloader@822722 13f79535-47bb-0310-9956-ffa450edef68
---
pom.xml | 8 ++++----
1 file changed, 4 insertions(+), 4 deletions(-)
diff --git a/pom.xml b/pom.xml
index dd658e3..7234371 100644
--- a/pom.xml
+++ b/pom.xml
@@ -29,7 +29,7 @@
<artifactId>org.apache.sling.commons.classloader</artifactId>
<packaging>bundle</packaging>
- <version>1.0.0</version>
+ <version>1.0.1-SNAPSHOT</version>
<name>Apache Sling Dynamic Class Loader Support</name>
<description>
@@ -37,9 +37,9 @@
</description>
<scm>
- <connection>scm:svn:http://svn.apache.org/repos/asf/sling/tags/org.apache.sling.commons.classloader-1.0.0</connection>
- <developerConnection>scm:svn:https://svn.apache.org/repos/asf/sling/tags/org.apache.sling.commons.classloader-1.0.0</developerConnection>
- <url>http://svn.apache.org/viewvc/sling/tags/org.apache.sling.commons.classloader-1.0.0</url>
+ <connection>scm:svn:http://svn.apache.org/repos/asf/sling/trunk/bundles/commons/classloader</connection>
+ <developerConnection>scm:svn:https://svn.apache.org/repos/asf/sling/trunk/bundles/commons/classloader</developerConnection>
+ <url>http://svn.apache.org/viewvc/sling/trunk/bundles/commons/classloader</url>
</scm>
<build>
--
To stop receiving notification emails like this one, please contact
"commits@sling.apache.org" <co...@sling.apache.org>.