[jboss-cvs] JBossAS SVN: r61178 - trunk/system/src/main/org/jboss/system/server/profile/basic.

jboss-cvs-commits at lists.jboss.org jboss-cvs-commits at lists.jboss.org
Wed Mar 7 01:44:19 EST 2007


Author: scott.stark at jboss.org
Date: 2007-03-07 01:44:19 -0500 (Wed, 07 Mar 2007)
New Revision: 61178

Modified:
   trunk/system/src/main/org/jboss/system/server/profile/basic/ProfileImpl.java
Log:
JBAS-4055, correct the basic profile handling of hotdeployments

Modified: trunk/system/src/main/org/jboss/system/server/profile/basic/ProfileImpl.java
===================================================================
--- trunk/system/src/main/org/jboss/system/server/profile/basic/ProfileImpl.java	2007-03-07 06:43:13 UTC (rev 61177)
+++ trunk/system/src/main/org/jboss/system/server/profile/basic/ProfileImpl.java	2007-03-07 06:44:19 UTC (rev 61178)
@@ -264,7 +264,7 @@
          return Collections.emptyList();
 
       ArrayList<ModificationInfo> modified = new ArrayList<ModificationInfo>();
-      Collection<DeploymentContext> apps = getApplications();
+      Collection<DeploymentContext> apps = applications.values();
       boolean trace = log.isTraceEnabled();
       if( trace )
          log.trace("Checking applications for modifications");
@@ -277,7 +277,9 @@
             DeploymentContext ctx = iter.next();
             VirtualFile root = ctx.getRoot();
             // Save the containing parent dir to scan for new deployments
-            applicationDir = root.getParent();
+            VirtualFile parent = root.getParent();
+            if( applicationDir == null || parent.getPathName().compareTo(applicationDir.getPathName()) < 0 )
+               applicationDir = parent;
             Long rootLastModified = root.getLastModified();
             String name = root.getPathName();
             // Check for removal
@@ -302,16 +304,14 @@
             // TODO: this could check metadata files modifications as well
          }
          // Now check for additions
-         List<VirtualFile> children = applicationDir.getChildren();
-         for(VirtualFile vf : children)
+         ArrayList<VirtualFile> added = new ArrayList<VirtualFile>();
+         addDeployments(added, applicationDir);
+         for(VirtualFile vf : added)
          {
-            if( applications.containsKey(vf.getPathName()) == false )
-            {
-               DeploymentContext ctx = new AbstractDeploymentContext(vf);
-               ModificationInfo info = new ModificationInfo(ctx, vf.getLastModified(), ModifyStatus.ADDED);
-               modified.add(info);
-               applications.put(vf.getPathName(), ctx);
-            }
+            DeploymentContext ctx = new AbstractDeploymentContext(vf);
+            ModificationInfo info = new ModificationInfo(ctx, vf.getLastModified(), ModifyStatus.ADDED);
+            modified.add(info);
+            applications.put(ctx.getName(), ctx);
          }
       }
       return modified;
@@ -431,5 +431,31 @@
       return Collections.unmodifiableCollection(applications.values());
    }
 
+   private void addDeployments(List<VirtualFile> list, VirtualFile root)
+      throws Exception
+   {
+      List<VirtualFile> components = root.getChildren();
+      
+      for (VirtualFile component : components)
+      {
+         String key = component.toURI().toString();
+         if( applications.containsKey(key) == true )
+            continue;
 
+         if (component.isLeaf())
+         {
+            list.add(component);
+         }
+         else if (component.getName().indexOf('.') == -1)
+         {
+            // recurse if not '.' in name and recursive search is enabled
+            addDeployments(list, component);
+         }
+         else
+         {
+            list.add(component);
+         }
+      }
+   }
+
 }




More information about the jboss-cvs-commits mailing list