Index: jackrabbit-core/src/main/java/org/apache/jackrabbit/core/SessionImpl.java =================================================================== --- jackrabbit-core/src/main/java/org/apache/jackrabbit/core/SessionImpl.java (revision 800271) +++ jackrabbit-core/src/main/java/org/apache/jackrabbit/core/SessionImpl.java (working copy) @@ -231,7 +231,7 @@ * Retention and Hold Manager */ private RetentionManager retentionManager; - + /** * The stack trace knows who opened this session. It is logged * if the session is finalized, but Session.logout() was never called. @@ -329,7 +329,7 @@ */ protected ItemManager createItemManager(SessionItemStateManager itemStateMgr, HierarchyManager hierMgr) { - return new ItemManager(itemStateMgr, hierMgr, this, + return ItemManager.createInstance(itemStateMgr, hierMgr, this, ntMgr.getRootNodeDefinition(), rep.getRootNodeId()); } @@ -1568,10 +1568,10 @@ ps.println(); itemStateMgr.dump(ps); } - + /** - * Finalize the session. If the application doesn't close Session.logout(), - * the session is closed automatically; however a warning is written to the log file, + * Finalize the session. If the application doesn't close Session.logout(), + * the session is closed automatically; however a warning is written to the log file, * together with the stack trace of where the session was opened. */ public void finalize() { Index: jackrabbit-core/src/main/java/org/apache/jackrabbit/core/ItemManager.java =================================================================== --- jackrabbit-core/src/main/java/org/apache/jackrabbit/core/ItemManager.java (revision 800271) +++ jackrabbit-core/src/main/java/org/apache/jackrabbit/core/ItemManager.java (working copy) @@ -110,6 +110,14 @@ * @param rootNodeDef the definition of the root node * @param rootNodeId the id of the root node */ + static ItemManager createInstance(SessionItemStateManager itemStateProvider, HierarchyManager hierMgr, + SessionImpl session, NodeDefinition rootNodeDef, + NodeId rootNodeId) { + ItemManager mgr = new ItemManager(itemStateProvider, hierMgr, session, rootNodeDef, rootNodeId); + itemStateProvider.addListener(mgr); + return mgr; + } + protected ItemManager(SessionItemStateManager itemStateProvider, HierarchyManager hierMgr, SessionImpl session, NodeDefinition rootNodeDef, NodeId rootNodeId) { @@ -121,7 +129,6 @@ // setup item cache with weak references to items itemCache = new ReferenceMap(ReferenceMap.HARD, ReferenceMap.WEAK); - itemStateProvider.addListener(this); // setup shareable nodes cache shareableNodesCache = new ShareableNodesCache();