[jbosscache-commits] JBoss Cache SVN: r4665 - core/trunk/src/main/java/org/jboss/cache/interceptors.
jbosscache-commits at lists.jboss.org
jbosscache-commits at lists.jboss.org
Mon Oct 22 19:57:59 EDT 2007
Author: manik.surtani at jboss.com
Date: 2007-10-22 19:57:59 -0400 (Mon, 22 Oct 2007)
New Revision: 4665
Modified:
core/trunk/src/main/java/org/jboss/cache/interceptors/OptimisticNodeInterceptor.java
core/trunk/src/main/java/org/jboss/cache/interceptors/OptimisticValidatorInterceptor.java
Log:
Fixed issue with removeNode return value as well as making parent nodes valid
Modified: core/trunk/src/main/java/org/jboss/cache/interceptors/OptimisticNodeInterceptor.java
===================================================================
--- core/trunk/src/main/java/org/jboss/cache/interceptors/OptimisticNodeInterceptor.java 2007-10-22 23:57:26 UTC (rev 4664)
+++ core/trunk/src/main/java/org/jboss/cache/interceptors/OptimisticNodeInterceptor.java 2007-10-22 23:57:59 UTC (rev 4665)
@@ -350,7 +350,7 @@
// post-notify
if (notify) notifier.notifyNodeRemoved(workspaceNode.getFqn(), false, null, ctx);
- return true;
+ return workspaceNode.getNode().isValid();
}
private Object removeKeyAndNotify(Object removeKey, TransactionWorkspace workspace, WorkspaceNode workspaceNode, InvocationContext ctx)
Modified: core/trunk/src/main/java/org/jboss/cache/interceptors/OptimisticValidatorInterceptor.java
===================================================================
--- core/trunk/src/main/java/org/jboss/cache/interceptors/OptimisticValidatorInterceptor.java 2007-10-22 23:57:26 UTC (rev 4664)
+++ core/trunk/src/main/java/org/jboss/cache/interceptors/OptimisticValidatorInterceptor.java 2007-10-22 23:57:59 UTC (rev 4665)
@@ -123,7 +123,7 @@
if (underlyingNode != null && !underlyingNode.isValid())
{
// we havea tombstone
- if (!workspaceNode.isCreated()) throw new DataVersioningException("Underlying node doesn't exist but a tombstone does; workspace node should be marked as created!");
+ if (!workspaceNode.isCreated() && !workspaceNode.isDeleted()) throw new DataVersioningException("Underlying node doesn't exist but a tombstone does; workspace node should be marked as created!");
if (underlyingNode.getVersion().newerThan(workspaceNode.getVersion()))
{
// we have an out of date node here
@@ -249,7 +249,9 @@
Map mergedData = workspaceNode.getMergedData();
underlyingNode.clearDataDirect();
underlyingNode.putAllDirect(mergedData);
- underlyingNode.setValid(true, false);
+
+ // mark node and any parents as valid- if available. Versioning parents are tough though - leave as old versions?
+ validateNodeAndParents(underlyingNode);
updateVersion = true;
}
@@ -262,6 +264,12 @@
}
+ private void validateNodeAndParents(NodeSPI node)
+ {
+ node.setValid(true, false);
+ if (!node.getFqn().isRoot()) validateNodeAndParents(node.getParent());
+ }
+
private void performVersionUpdate(NodeSPI underlyingNode, WorkspaceNode workspaceNode)
{
if (workspaceNode.isVersioningImplicit())
More information about the jbosscache-commits
mailing list