[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