Author: cziegeler
Date: Mon Mar 29 10:30:15 2010
New Revision: 928687
URL: http://svn.apache.org/viewvc?rev=928687&view=rev
Log:
SLING-1467 : Cancelling a job does not work
Modified:
sling/trunk/bundles/extensions/event/src/main/java/org/apache/sling/event/impl/AbstractRepositoryEventHandler.java
Modified:
sling/trunk/bundles/extensions/event/src/main/java/org/apache/sling/event/impl/AbstractRepositoryEventHandler.java
URL:
http://svn.apache.org/viewvc/sling/trunk/bundles/extensions/event/src/main/java/org/apache/sling/event/impl/AbstractRepositoryEventHandler.java?rev=928687&r1=928686&r2=928687&view=diff
==============================================================================
---
sling/trunk/bundles/extensions/event/src/main/java/org/apache/sling/event/impl/AbstractRepositoryEventHandler.java
(original)
+++
sling/trunk/bundles/extensions/event/src/main/java/org/apache/sling/event/impl/AbstractRepositoryEventHandler.java
Mon Mar 29 10:30:15 2010
@@ -31,6 +31,7 @@ import javax.jcr.observation.EventListen
import org.apache.felix.scr.annotations.Component;
import org.apache.felix.scr.annotations.Property;
import org.apache.felix.scr.annotations.Reference;
+import org.apache.felix.scr.annotations.ReferencePolicy;
import org.apache.felix.scr.annotations.Service;
import org.apache.sling.api.services.SlingSettingsService;
import org.apache.sling.commons.classloader.DynamicClassLoaderManager;
@@ -87,7 +88,7 @@ public abstract class AbstractRepository
/** A local queue for writing received events into the repository. */
protected final BlockingQueue<Event> writeQueue = new
LinkedBlockingQueue<Event>();
- @Reference
+ @Reference(policy=ReferencePolicy.DYNAMIC)
protected DynamicClassLoaderManager classLoaderManager;
/**
@@ -152,6 +153,15 @@ public abstract class AbstractRepository
protected abstract void processWriteQueue();
+ protected ClassLoader getDynamicClassLoader() {
+ final DynamicClassLoaderManager dclm = this.classLoaderManager;
+ if ( dclm != null ) {
+ return dclm.getDynamicClassLoader();
+ }
+ // if we don't have a dynamic classloader, we return our classloader
+ return this.getClass().getClassLoader();
+ }
+
/**
* Deactivate this component.
* @param context
@@ -274,8 +284,8 @@ public abstract class AbstractRepository
protected Event readEvent(Node eventNode)
throws RepositoryException, ClassNotFoundException {
final String topic =
eventNode.getProperty(EventHelper.NODE_PROPERTY_TOPIC).getString();
- final Dictionary<String, Object> eventProps =
EventHelper.readEventProperties(eventNode,
- this.classLoaderManager.getDynamicClassLoader());
+ final ClassLoader cl = this.getDynamicClassLoader();
+ final Dictionary<String, Object> eventProps =
EventHelper.readEventProperties(eventNode, cl);
eventProps.put(JobStatusProvider.PROPERTY_EVENT_ID,
eventNode.getPath());
this.addEventProperties(eventNode, eventProps);