You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@sling.apache.org by cz...@apache.org on 2012/03/24 15:49:21 UTC
svn commit: r1304813 -
/sling/trunk/bundles/jcr/classloader/src/main/java/org/apache/sling/jcr/classloader/internal/RepositoryClassLoader.java
Author: cziegeler
Date: Sat Mar 24 14:49:21 2012
New Revision: 1304813
URL: http://svn.apache.org/viewvc?rev=1304813&view=rev
Log:
SLING-2447 : ClassLoaderWriter should provide class loader for loading written classes/resources
Modified:
sling/trunk/bundles/jcr/classloader/src/main/java/org/apache/sling/jcr/classloader/internal/RepositoryClassLoader.java
Modified: sling/trunk/bundles/jcr/classloader/src/main/java/org/apache/sling/jcr/classloader/internal/RepositoryClassLoader.java
URL: http://svn.apache.org/viewvc/sling/trunk/bundles/jcr/classloader/src/main/java/org/apache/sling/jcr/classloader/internal/RepositoryClassLoader.java?rev=1304813&r1=1304812&r2=1304813&view=diff
==============================================================================
--- sling/trunk/bundles/jcr/classloader/src/main/java/org/apache/sling/jcr/classloader/internal/RepositoryClassLoader.java (original)
+++ sling/trunk/bundles/jcr/classloader/src/main/java/org/apache/sling/jcr/classloader/internal/RepositoryClassLoader.java Sat Mar 24 14:49:21 2012
@@ -32,10 +32,6 @@ import java.util.Set;
import javax.jcr.Node;
import javax.jcr.RepositoryException;
import javax.jcr.Session;
-import javax.jcr.observation.Event;
-import javax.jcr.observation.EventIterator;
-import javax.jcr.observation.EventListener;
-import javax.jcr.observation.ObservationManager;
import org.apache.sling.commons.classloader.DynamicClassLoader;
import org.apache.sling.jcr.classloader.internal.net.URLFactory;
@@ -53,7 +49,7 @@ import org.slf4j.LoggerFactory;
*/
public final class RepositoryClassLoader
extends SecureClassLoader
- implements EventListener, DynamicClassLoader {
+ implements DynamicClassLoader {
/** Logger */
private final Logger logger = LoggerFactory.getLogger(this.getClass().getName());
@@ -120,9 +116,6 @@ public final class RepositoryClassLoader
this.session = session;
this.repositoryPath = classPath;
- // register with observation service and path pattern list
- registerListener();
-
logger.debug("RepositoryClassLoader: {} ready", this);
}
@@ -145,9 +138,6 @@ public final class RepositoryClassLoader
// set destroyal guard
destroyed = true;
- // remove ourselves as listeners from other places
- unregisterListener();
-
// close session
if ( session != null ) {
session.logout();
@@ -385,37 +375,6 @@ public final class RepositoryClassLoader
return !this.isDirty();
}
- //---------- EventListener interface -------------------------------
-
- /**
- * Handles a repository item modifcation events checking whether a class
- * needs to be expired. As a side effect, this method sets the class loader
- * dirty if a loaded class has been modified in the repository.
- *
- * @param events The iterator of repository events to be handled.
- */
- public void onEvent(final EventIterator events) {
- while (events.hasNext()) {
- final Event event = events.nextEvent();
- String path;
- try {
- path = event.getPath();
- } catch (RepositoryException re) {
- logger.warn("onEvent: Cannot get path of event, ignoring", re);
- continue;
- }
-
- if ( event.getType() == Event.PROPERTY_ADDED || event.getType() == Event.PROPERTY_CHANGED || event.getType() == Event.PROPERTY_REMOVED ) {
- final int lastSlash = path.lastIndexOf('/');
- path = path.substring(0, lastSlash);
- }
- if ( path.endsWith("/jcr:content") ) {
- path = path.substring(0, path.length() - 12);
- }
- this.handleEvent(path);
- }
- }
-
/**
* Handle a modification event.
*/
@@ -447,49 +406,4 @@ public final class RepositoryClassLoader
}
return buf.toString();
}
-
- //---------- internal ------------------------------------------------------
-
- /**
- * Registers this class loader with the observation service to get
- * information on page updates in the class path and to the path
- * pattern list to get class path updates.
- *
- * @throws NullPointerException if this class loader has already been
- * destroyed.
- */
- private final void registerListener() {
- logger.debug("registerListener: Registering to the observation service");
-
- try {
- final ObservationManager om = session.getWorkspace().getObservationManager();
- om.addEventListener(this,
- Event.NODE_ADDED | Event.NODE_REMOVED | Event.PROPERTY_ADDED | Event.PROPERTY_CHANGED | Event.PROPERTY_REMOVED,
- repositoryPath, true, null, null, false);
- } catch (final RepositoryException re) {
- logger.error("registerModificationListener: Cannot register " +
- this + " with observation manager", re);
- }
- }
-
- /**
- * Removes this instances registrations from the observation service and
- * the path pattern list.
- *
- * @throws NullPointerException if this class loader has already been
- * destroyed.
- */
- private final void unregisterListener() {
- logger.debug("unregisterListener: Deregistering from the observation service");
- // check session first!
- if ( session.isLive() ) {
- try {
- final ObservationManager om = session.getWorkspace().getObservationManager();
- om.removeEventListener(this);
- } catch (RepositoryException re) {
- logger.error("unregisterListener: Cannot unregister " +
- this + " from observation manager", re);
- }
- }
- }
}