Index: org/apache/jackrabbit/core/SessionImpl.java
===================================================================
--- org/apache/jackrabbit/core/SessionImpl.java (revision 232927)
+++ org/apache/jackrabbit/core/SessionImpl.java (working copy)
@@ -1100,7 +1100,7 @@
notifyLoggingOut();
// discard all transient changes
- itemStateMgr.disposeAllTransientItemStates();
+ itemStateMgr.dispose();
// dispose item manager
itemMgr.dispose();
// dispose workspace
Index: org/apache/jackrabbit/core/state/LocalItemStateManager.java
===================================================================
--- org/apache/jackrabbit/core/state/LocalItemStateManager.java (revision 232927)
+++ org/apache/jackrabbit/core/state/LocalItemStateManager.java (working copy)
@@ -16,6 +16,10 @@
*/
package org.apache.jackrabbit.core.state;
+import java.util.ArrayList;
+import java.util.Collection;
+import java.util.Iterator;
+
import org.apache.jackrabbit.core.ItemId;
import org.apache.jackrabbit.core.NodeId;
import org.apache.jackrabbit.core.PropertyId;
@@ -86,6 +90,14 @@
* Disposes this LocalItemStateManager and frees resources.
*/
public void dispose() {
+ // discard cached item states
+ Collection tmp = new ArrayList(cache.values());
+ Iterator iter = tmp.iterator();
+ while (iter.hasNext()) {
+ ItemState state = (ItemState) iter.next();
+ state.discard() ;
+ state.onDisposed() ;
+ }
// clear cache
cache.evictAll();
}
Index: org/apache/jackrabbit/core/state/UpdatableItemStateManager.java
===================================================================
--- org/apache/jackrabbit/core/state/UpdatableItemStateManager.java (revision 232927)
+++ org/apache/jackrabbit/core/state/UpdatableItemStateManager.java (working copy)
@@ -113,4 +113,10 @@
* @throws IllegalStateException if the manager is not in edit mode.
*/
void update() throws ItemStateException, IllegalStateException;
+
+ /**
+ * Disposes this UpdatableItemStateManager and frees resources.
+ */
+ public void dispose() ;
+
}
Index: org/apache/jackrabbit/core/state/SessionItemStateManager.java
===================================================================
--- org/apache/jackrabbit/core/state/SessionItemStateManager.java (revision 232927)
+++ org/apache/jackrabbit/core/state/SessionItemStateManager.java (working copy)
@@ -668,6 +668,15 @@
public void disposeAllTransientItemStates() {
transientStateMgr.disposeAllItemStates();
}
+
+ /**
+ * Disposes this SessionItemStateManager and frees resources.
+ */
+ public void dispose() {
+ disposeAllTransientItemStates() ;
+ persistentStateMgr.dispose() ;
+
+ }
//--------------------------------------------------------< inner classes >
/**