[jboss-cvs] JBossAS SVN: r87554 - branches/Branch_5_x/system/src/main/org/jboss/system/server/profileservice/repository/clustered/sync.

jboss-cvs-commits at lists.jboss.org jboss-cvs-commits at lists.jboss.org
Mon Apr 20 04:10:26 EDT 2009


Author: bstansberry at jboss.com
Date: 2009-04-20 04:10:25 -0400 (Mon, 20 Apr 2009)
New Revision: 87554

Modified:
   branches/Branch_5_x/system/src/main/org/jboss/system/server/profileservice/repository/clustered/sync/AbstractContentModificationGenerator.java
   branches/Branch_5_x/system/src/main/org/jboss/system/server/profileservice/repository/clustered/sync/RemoteContentModificationGenerator.java
   branches/Branch_5_x/system/src/main/org/jboss/system/server/profileservice/repository/clustered/sync/SynchronizationActionContext.java
Log:
[JBAS-5552] Minor fixes

Modified: branches/Branch_5_x/system/src/main/org/jboss/system/server/profileservice/repository/clustered/sync/AbstractContentModificationGenerator.java
===================================================================
--- branches/Branch_5_x/system/src/main/org/jboss/system/server/profileservice/repository/clustered/sync/AbstractContentModificationGenerator.java	2009-04-20 08:09:24 UTC (rev 87553)
+++ branches/Branch_5_x/system/src/main/org/jboss/system/server/profileservice/repository/clustered/sync/AbstractContentModificationGenerator.java	2009-04-20 08:10:25 UTC (rev 87554)
@@ -343,10 +343,13 @@
          {
             throw new IllegalStateException("prerejectedAddParent already set");
          }
-         else if (this.prerejectedRemoveParent != null)
-         {
-            throw new IllegalStateException("prerejectedRemoveParent already set");
-         }
+         // We allow removing content under something we've rejected
+         // This happens when RepositoryItemMetadata w/ removed=false needs
+         // to be pushed to a node
+//         else if (this.prerejectedRemoveParent != null)
+//         {
+//            throw new IllegalStateException("prerejectedRemoveParent already set");
+//         }
          
          ContentModification peeked = peekPreapprovedRemoveParent();
          if (peeked != null && toPush.getItem().isChildOf(peeked.getItem()) == false)

Modified: branches/Branch_5_x/system/src/main/org/jboss/system/server/profileservice/repository/clustered/sync/RemoteContentModificationGenerator.java
===================================================================
--- branches/Branch_5_x/system/src/main/org/jboss/system/server/profileservice/repository/clustered/sync/RemoteContentModificationGenerator.java	2009-04-20 08:09:24 UTC (rev 87553)
+++ branches/Branch_5_x/system/src/main/org/jboss/system/server/profileservice/repository/clustered/sync/RemoteContentModificationGenerator.java	2009-04-20 08:10:25 UTC (rev 87554)
@@ -104,14 +104,57 @@
    protected void handleMissing(String rootName, RepositoryItemMetadata item, 
          GeneratedModifications mods)
    {
-      if (item.isRemoved())
+      if (item.isRemoved() == false)
       {
-         // Remote node doesn't have file, just needs to add a missing RepositoryItemMetadata
-         handleRemovalMetadata(rootName, item, mods);
+         handleRemoval(rootName, item, mods);
       }
       else 
       {
-         handleRemoval(rootName, item, mods);
+         // Remote node doesn't have file, just needs to add a missing RepositoryItemMetadata
+
+         // This is a removal, so it can't be a child of an earlier attempted add.
+         // So, drain any remaining prerejected adds
+         drainPrerejectedAdds(mods);
+         // A removal negates any preapprovedAdd as well
+         mods.setPreapprovedAddParent(null);
+         
+         // 
+         RepositoryItemMetadata prerejectedRemove = mods.getPrerejectedRemoveParent();
+         if (prerejectedRemove != null && item.isChildOf(prerejectedRemove) == false)
+         {
+            mods.setPrerejectedRemoveParent(null);
+         }
+         
+         // Don't lose track of pre-approval stack if there is one
+         ContentModification preapprovedRemove = mods.peekPreapprovedRemoveParent();
+         while (preapprovedRemove != null)
+         {
+            if (item.isChildOf(preapprovedRemove.getItem()))
+            {
+               // we're at the right level
+               break;
+            }
+            else
+            {
+               // We're done with children of preapproved parent so add the cached
+               // modification to the overall list. This will cause it to
+               // get executed *after* its children 
+               // (i.e. remove parent after removing children)
+               mods.addModification(mods.popPreapprovedRemoveParent());
+               // Start checking grandparent
+               preapprovedRemove = mods.peekPreapprovedRemoveParent();
+            }
+         }
+         
+         ContentModification mod = new ContentModification(Type.REMOVAL_METADATA_FROM_CLUSTER, rootName, item);
+         if (item.isDirectory())
+         {
+            mods.pushPreapprovedRemoveParent(mod);
+         }
+         else
+         {
+            mods.addModification(mod);
+         }
       }
    }
    
@@ -275,46 +318,6 @@
       }
    }
    
-   private void handleRemovalMetadata(String rootName, 
-         RepositoryItemMetadata item, GeneratedModifications mods)
-   {
-      // This is a removal, so it can't be a child of an earlier attempted add.
-      // So, drain any remaining prerejected adds
-      drainPrerejectedAdds(mods);
-      mods.setPreapprovedAddParent(null);
-      
-      // Don't lose track of pre-approval stack if there is one
-      ContentModification preapprovedRemove = mods.peekPreapprovedRemoveParent();
-      while (preapprovedRemove != null)
-      {
-         if (item.isChildOf(preapprovedRemove.getItem()))
-         {
-            // we're at the right level
-            break;
-         }
-         else
-         {
-            // We're done with children of preapproved parent so add the cached
-            // modification to the overall list. This will cause it to
-            // get executed *after* its children 
-            // (i.e. remove parent after removing children)
-            mods.addModification(mods.popPreapprovedRemoveParent());
-            // Start checking grandparent
-            preapprovedRemove = mods.peekPreapprovedRemoveParent();
-         }
-      }
-      
-      ContentModification mod = new ContentModification(Type.REMOVAL_METADATA_FROM_CLUSTER, rootName, item);
-      if (item.isDirectory())
-      {
-         mods.pushPreapprovedRemoveParent(mod);
-      }
-      else
-      {
-         mods.addModification(mod);
-      }
-   }
-   
    @Override
    protected void handleRemoval(String rootName, RepositoryItemMetadata item, GeneratedModifications mods)
    {

Modified: branches/Branch_5_x/system/src/main/org/jboss/system/server/profileservice/repository/clustered/sync/SynchronizationActionContext.java
===================================================================
--- branches/Branch_5_x/system/src/main/org/jboss/system/server/profileservice/repository/clustered/sync/SynchronizationActionContext.java	2009-04-20 08:09:24 UTC (rev 87553)
+++ branches/Branch_5_x/system/src/main/org/jboss/system/server/profileservice/repository/clustered/sync/SynchronizationActionContext.java	2009-04-20 08:10:25 UTC (rev 87554)
@@ -49,7 +49,8 @@
          throw new IllegalArgumentException("Null inProgressMetadata");
       }
       this.id = id;
-      this.inProgressMetadata = inProgressMetadata;
+      // Defensive copy
+      this.inProgressMetadata = new RepositoryContentMetadata(inProgressMetadata);
    }
 
    public SynchronizationId<?> getId()




More information about the jboss-cvs-commits mailing list