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);