[jboss-cvs] JBossAS SVN: r84498 - projects/jboss-deployers/trunk/deployers-vfs-spi/src/main/java/org/jboss/deployers/vfs/spi/structure/modified.

jboss-cvs-commits at lists.jboss.org jboss-cvs-commits at lists.jboss.org
Fri Feb 20 03:14:06 EST 2009


Author: alesj
Date: 2009-02-20 03:14:05 -0500 (Fri, 20 Feb 2009)
New Revision: 84498

Modified:
   projects/jboss-deployers/trunk/deployers-vfs-spi/src/main/java/org/jboss/deployers/vfs/spi/structure/modified/TreeStructureCache.java
Log:
Synch on root.

Modified: projects/jboss-deployers/trunk/deployers-vfs-spi/src/main/java/org/jboss/deployers/vfs/spi/structure/modified/TreeStructureCache.java
===================================================================
--- projects/jboss-deployers/trunk/deployers-vfs-spi/src/main/java/org/jboss/deployers/vfs/spi/structure/modified/TreeStructureCache.java	2009-02-20 07:56:34 UTC (rev 84497)
+++ projects/jboss-deployers/trunk/deployers-vfs-spi/src/main/java/org/jboss/deployers/vfs/spi/structure/modified/TreeStructureCache.java	2009-02-20 08:14:05 UTC (rev 84498)
@@ -40,7 +40,7 @@
 public class TreeStructureCache<T> implements StructureCache<T>
 {
    /** The tree root */
-   private Node<T> root = createRoot();
+   private final Node<T> root = createRoot();
 
    /**
     * Create new root.
@@ -104,13 +104,16 @@
          if (parent != null)
             parent.removeChild(node);
          else // clear root
-            node.clear();
+            flush();
       }
    }
 
-   public synchronized void flush()
+   public void flush()
    {
-      root = createRoot();
+      synchronized (root)
+      {
+         root.clear();
+      }
    }
 
    /**
@@ -122,14 +125,17 @@
    protected Node<T> getNode(String path)
    {
       List<String> tokens = PathTokenizer.getTokens(path);
-      Node<T> node = root;
-      for (String token : tokens)
+      synchronized (root)
       {
-         node = node.getChild(token);
-         if (node == null)
-            break;
+         Node<T> node = root;
+         for (String token : tokens)
+         {
+            node = node.getChild(token);
+            if (node == null)
+               break;
+         }
+         return node;
       }
-      return node;
    }
 
    /**
@@ -138,30 +144,33 @@
     * @param pathName the path name
     * @return initialized node
     */
-   protected synchronized Node<T> initializeNode(String pathName)
+   protected Node<T> initializeNode(String pathName)
    {
       List<String> tokens = PathTokenizer.getTokens(pathName);
-      Node<T> node = root;
-      boolean newNode = false;
-      for (String token : tokens)
+      synchronized (root)
       {
-         if (newNode)
+         Node<T> node = root;
+         boolean newNode = false;
+         for (String token : tokens)
          {
-            node = new Node<T>(token, getDefaultValue(), node);
-         }
-         else
-         {
-            Node<T> child = node.getChild(token);
-            if (child == null)
+            if (newNode)
             {
-               child = new Node<T>(token, getDefaultValue(), node);
-               newNode = true;
+               node = new Node<T>(token, getDefaultValue(), node);
             }
+            else
+            {
+               Node<T> child = node.getChild(token);
+               if (child == null)
+               {
+                  child = new Node<T>(token, getDefaultValue(), node);
+                  newNode = true;
+               }
 
-            node = child;
+               node = child;
+            }
          }
+         return node;
       }
-      return node;
    }
 
    /**
@@ -290,7 +299,7 @@
       /**
        * Clear node.
        */
-      public synchronized void clear()
+      void clear()
       {
          value = null;
          children = null;




More information about the jboss-cvs-commits mailing list