Author: manik.surtani(a)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())
Show replies by date