You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@jackrabbit.apache.org by mr...@apache.org on 2009/08/05 11:32:12 UTC
svn commit: r801104 - in
/jackrabbit/trunk/jackrabbit-core/src/main/java/org/apache/jackrabbit/core:
ItemManager.java SessionImpl.java state/SessionItemStateManager.java
Author: mreutegg
Date: Wed Aug 5 09:32:11 2009
New Revision: 801104
URL: http://svn.apache.org/viewvc?rev=801104&view=rev
Log:
JCR-2237: ItemManager registers itself as listener too early
Modified:
jackrabbit/trunk/jackrabbit-core/src/main/java/org/apache/jackrabbit/core/ItemManager.java
jackrabbit/trunk/jackrabbit-core/src/main/java/org/apache/jackrabbit/core/SessionImpl.java
jackrabbit/trunk/jackrabbit-core/src/main/java/org/apache/jackrabbit/core/state/SessionItemStateManager.java
Modified: jackrabbit/trunk/jackrabbit-core/src/main/java/org/apache/jackrabbit/core/ItemManager.java
URL: http://svn.apache.org/viewvc/jackrabbit/trunk/jackrabbit-core/src/main/java/org/apache/jackrabbit/core/ItemManager.java?rev=801104&r1=801103&r2=801104&view=diff
==============================================================================
--- jackrabbit/trunk/jackrabbit-core/src/main/java/org/apache/jackrabbit/core/ItemManager.java (original)
+++ jackrabbit/trunk/jackrabbit-core/src/main/java/org/apache/jackrabbit/core/ItemManager.java Wed Aug 5 09:32:11 2009
@@ -125,13 +125,35 @@
// 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();
}
/**
+ * Creates a new per-session instance <code>ItemManager</code> instance.
+ *
+ * @param itemStateProvider the item state provider associated with
+ * the new instance
+ * @param hierMgr the hierarchy manager
+ * @param session the session associated with the new instance
+ * @param rootNodeDef the definition of the root node
+ * @param rootNodeId the id of the root node
+ * @return the item manager instance.
+ */
+ public 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;
+ }
+
+ /**
* Disposes this <code>ItemManager</code> and frees resources.
*/
void dispose() {
Modified: jackrabbit/trunk/jackrabbit-core/src/main/java/org/apache/jackrabbit/core/SessionImpl.java
URL: http://svn.apache.org/viewvc/jackrabbit/trunk/jackrabbit-core/src/main/java/org/apache/jackrabbit/core/SessionImpl.java?rev=801104&r1=801103&r2=801104&view=diff
==============================================================================
--- jackrabbit/trunk/jackrabbit-core/src/main/java/org/apache/jackrabbit/core/SessionImpl.java (original)
+++ jackrabbit/trunk/jackrabbit-core/src/main/java/org/apache/jackrabbit/core/SessionImpl.java Wed Aug 5 09:32:11 2009
@@ -307,7 +307,7 @@
* @return session item state manager
*/
protected SessionItemStateManager createSessionItemStateManager(LocalItemStateManager manager) {
- return new SessionItemStateManager(
+ return SessionItemStateManager.createInstance(
rep.getRootNodeId(), manager, rep.getNodeTypeRegistry());
}
@@ -334,7 +334,7 @@
*/
protected ItemManager createItemManager(SessionItemStateManager itemStateMgr,
HierarchyManager hierMgr) {
- return new ItemManager(itemStateMgr, hierMgr, this,
+ return ItemManager.createInstance(itemStateMgr, hierMgr, this,
ntMgr.getRootNodeDefinition(), rep.getRootNodeId());
}
Modified: jackrabbit/trunk/jackrabbit-core/src/main/java/org/apache/jackrabbit/core/state/SessionItemStateManager.java
URL: http://svn.apache.org/viewvc/jackrabbit/trunk/jackrabbit-core/src/main/java/org/apache/jackrabbit/core/state/SessionItemStateManager.java?rev=801104&r1=801103&r2=801104&view=diff
==============================================================================
--- jackrabbit/trunk/jackrabbit-core/src/main/java/org/apache/jackrabbit/core/state/SessionItemStateManager.java (original)
+++ jackrabbit/trunk/jackrabbit-core/src/main/java/org/apache/jackrabbit/core/state/SessionItemStateManager.java Wed Aug 5 09:32:11 2009
@@ -93,14 +93,13 @@
* @param stateMgr the local item state manager
* @param ntReg node type registry
*/
- public SessionItemStateManager(NodeId rootNodeId,
+ protected SessionItemStateManager(NodeId rootNodeId,
LocalItemStateManager stateMgr,
NodeTypeRegistry ntReg) {
transientStore = new ItemStateMap();
atticStore = new ItemStateMap();
this.stateMgr = stateMgr;
- stateMgr.addListener(this);
// create hierarchy manager that uses both transient and persistent state
hierMgr = new CachingHierarchyManager(rootNodeId, this);
@@ -110,6 +109,24 @@
}
/**
+ * Creates a new <code>SessionItemStateManager</code> instance.
+ *
+ * @param rootNodeId the root node id
+ * @param stateMgr the local item state manager
+ * @param ntReg node type registry
+ * @return the session item state manager.
+ */
+ public static SessionItemStateManager createInstance(
+ NodeId rootNodeId,
+ LocalItemStateManager stateMgr,
+ NodeTypeRegistry ntReg) {
+ SessionItemStateManager mgr = new SessionItemStateManager(
+ rootNodeId, stateMgr, ntReg);
+ stateMgr.addListener(mgr);
+ return mgr;
+ }
+
+ /**
* Returns the hierarchy manager
*
* @return the hierarchy manager