Index: src/main/java/org/apache/jackrabbit/core/observation/DelegatingObservationDispatcher.java =================================================================== --- src/main/java/org/apache/jackrabbit/core/observation/DelegatingObservationDispatcher.java (revision 744177) +++ src/main/java/org/apache/jackrabbit/core/observation/DelegatingObservationDispatcher.java (working copy) @@ -25,8 +25,6 @@ import java.util.HashSet; import java.util.List; -import javax.jcr.RepositoryException; - /** * This Class implements an observation dispatcher, that delegates events to * a set of underlying dispatchers. @@ -73,16 +71,9 @@ * @param pathPrefix event path prefix * @return new EventStateCollection instance */ - public EventStateCollection createEventStateCollection(SessionImpl session, - Path pathPrefix) { - String userData = null; - try { - userData = ((ObservationManagerImpl) session.getWorkspace().getObservationManager()).getUserData(); - } catch (RepositoryException e) { - // should never happen because this - // implementation supports observation - } - return new EventStateCollection(this, session, pathPrefix, userData); + public EventStateCollection createEventStateCollection( + SessionImpl session, Path pathPrefix) { + return new EventStateCollection(this, session, pathPrefix); } //------------------------------------------------------< EventDispatcher > @@ -128,8 +119,8 @@ } for (int i = 0; i < disp.length; i++) { EventStateCollection events = - new EventStateCollection(disp[i], session, - pathPrefix, userData); + new EventStateCollection(disp[i], session, pathPrefix); + events.setUserData(userData); try { events.addAll(eventList); events.prepare(); Index: src/main/java/org/apache/jackrabbit/core/observation/EventStateCollection.java =================================================================== --- src/main/java/org/apache/jackrabbit/core/observation/EventStateCollection.java (revision 744177) +++ src/main/java/org/apache/jackrabbit/core/observation/EventStateCollection.java (working copy) @@ -37,6 +37,8 @@ import javax.jcr.PathNotFoundException; import javax.jcr.RepositoryException; +import javax.jcr.observation.ObservationManager; + import java.util.ArrayList; import java.util.Collection; import java.util.Iterator; @@ -109,16 +111,26 @@ * @param session the session that created these events. * @param pathPrefix the path to prefix the event paths or null * if no prefix should be used. - * @param userData the user data attached to this event state collection. */ public EventStateCollection(EventDispatcher dispatcher, SessionImpl session, - Path pathPrefix, - String userData) { + Path pathPrefix) { this.dispatcher = dispatcher; this.session = session; this.pathPrefix = pathPrefix; - this.userData = userData; + if (session != null) { + try { + ObservationManager manager = + session.getWorkspace().getObservationManager(); + this.userData = ((ObservationManagerImpl) manager).getUserData(); + } catch (RepositoryException e) { + // should never happen because this + // implementation supports observation + this.userData = null; + } + } else { + this.userData = null; + } } /** Index: src/main/java/org/apache/jackrabbit/core/observation/ObservationManagerImpl.java =================================================================== --- src/main/java/org/apache/jackrabbit/core/observation/ObservationManagerImpl.java (revision 744177) +++ src/main/java/org/apache/jackrabbit/core/observation/ObservationManagerImpl.java (working copy) @@ -229,6 +229,8 @@ * which is attached to this ObservationManager instance. */ public EventStateCollection createEventStateCollection() { - return new EventStateCollection(dispatcher, session, null, userData); + EventStateCollection esc = new EventStateCollection(dispatcher, session, null); + esc.setUserData(userData); + return esc; } } Index: src/main/java/org/apache/jackrabbit/core/RepositoryImpl.java =================================================================== --- src/main/java/org/apache/jackrabbit/core/RepositoryImpl.java (revision 744177) +++ src/main/java/org/apache/jackrabbit/core/RepositoryImpl.java (working copy) @@ -2135,7 +2135,8 @@ String userData) throws RepositoryException { try { EventStateCollection esc = new EventStateCollection( - getObservationDispatcher(), null, null, userData); + getObservationDispatcher(), null, null); + esc.setUserData(userData); esc.addAll(events); esc.setTimestamp(timestamp);