You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@jackrabbit.apache.org by ju...@apache.org on 2009/03/05 19:24:43 UTC
svn commit: r750536 - in
/jackrabbit/trunk/jackrabbit-core/src/main/java/org/apache/jackrabbit/core:
state/SharedItemStateManager.java version/VersionItemStateManager.java
Author: jukka
Date: Thu Mar 5 18:24:42 2009
New Revision: 750536
URL: http://svn.apache.org/viewvc?rev=750536&view=rev
Log:
JCR-2008: System search manager uses a SessionItemStateManager
Prevent lockups in VersionItemStateManager.
Modified:
jackrabbit/trunk/jackrabbit-core/src/main/java/org/apache/jackrabbit/core/state/SharedItemStateManager.java
jackrabbit/trunk/jackrabbit-core/src/main/java/org/apache/jackrabbit/core/version/VersionItemStateManager.java
Modified: jackrabbit/trunk/jackrabbit-core/src/main/java/org/apache/jackrabbit/core/state/SharedItemStateManager.java
URL: http://svn.apache.org/viewvc/jackrabbit/trunk/jackrabbit-core/src/main/java/org/apache/jackrabbit/core/state/SharedItemStateManager.java?rev=750536&r1=750535&r2=750536&view=diff
==============================================================================
--- jackrabbit/trunk/jackrabbit-core/src/main/java/org/apache/jackrabbit/core/state/SharedItemStateManager.java (original)
+++ jackrabbit/trunk/jackrabbit-core/src/main/java/org/apache/jackrabbit/core/state/SharedItemStateManager.java Thu Mar 5 18:24:42 2009
@@ -1340,7 +1340,7 @@
* Checks if this item state manager has the given item state without
* considering the virtual item state managers.
*/
- private boolean hasNonVirtualItemState(ItemId id) {
+ protected boolean hasNonVirtualItemState(ItemId id) {
if (cache.isCached(id)) {
return true;
}
Modified: jackrabbit/trunk/jackrabbit-core/src/main/java/org/apache/jackrabbit/core/version/VersionItemStateManager.java
URL: http://svn.apache.org/viewvc/jackrabbit/trunk/jackrabbit-core/src/main/java/org/apache/jackrabbit/core/version/VersionItemStateManager.java?rev=750536&r1=750535&r2=750536&view=diff
==============================================================================
--- jackrabbit/trunk/jackrabbit-core/src/main/java/org/apache/jackrabbit/core/version/VersionItemStateManager.java (original)
+++ jackrabbit/trunk/jackrabbit-core/src/main/java/org/apache/jackrabbit/core/version/VersionItemStateManager.java Thu Mar 5 18:24:42 2009
@@ -28,7 +28,9 @@
import org.apache.jackrabbit.core.state.ISMLocking;
import org.apache.jackrabbit.core.state.ItemStateCacheFactory;
import org.apache.jackrabbit.core.state.ItemStateException;
+import org.apache.jackrabbit.core.state.NoSuchItemStateException;
import org.apache.jackrabbit.core.state.NodeReferences;
+import org.apache.jackrabbit.core.state.NodeReferencesId;
import org.apache.jackrabbit.core.state.SharedItemStateManager;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
@@ -59,6 +61,30 @@
this.pMgr = persistMgr;
}
+ public NodeReferences getNodeReferences(NodeReferencesId id)
+ throws NoSuchItemStateException, ItemStateException {
+ // check persistence manager
+ try {
+ return pMgr.load(id);
+ } catch (NoSuchItemStateException e) {
+ // ignore
+ }
+ // throw
+ throw new NoSuchItemStateException(id.toString());
+ }
+
+ public boolean hasNodeReferences(NodeReferencesId id) {
+ // check persistence manager
+ try {
+ if (pMgr.exists(id)) {
+ return true;
+ }
+ } catch (ItemStateException e) {
+ // ignore
+ }
+ return false;
+ }
+
/**
* Sets the
* @param references
@@ -76,7 +102,7 @@
Iterator iter = source.getReferences().iterator();
while (iter.hasNext()) {
PropertyId id = (PropertyId) iter.next();
- if (!hasItemState(id.getParentId())) {
+ if (!hasNonVirtualItemState(id.getParentId())) {
target.addReference(id);
}
}
@@ -103,7 +129,7 @@
NodeId id = refs.getTargetId();
// no need to check existence of target if there are no references
if (refs.hasReferences()) {
- if (!changes.has(id) && !hasItemState(id)) {
+ if (!changes.has(id) && !hasNonVirtualItemState(id)) {
// remove references
iter.remove();
}