You are viewing a plain text version of this content. The canonical link for it is here.
Posted to axis-cvs@ws.apache.org by de...@apache.org on 2007/06/19 23:03:22 UTC

svn commit: r548855 - in /webservices/axis2/trunk/java/modules/kernel/src/org/apache/axis2/deployment: RepositoryListener.java repository/util/WSInfo.java repository/util/WSInfoList.java

Author: deepal
Date: Tue Jun 19 14:03:21 2007
New Revision: 548855

URL: http://svn.apache.org/viewvc?view=rev&rev=548855
Log:
fixing hot update and hot deployment issues
 - Test both hot update and hot deployment with POJO deployer
and server deployer

Modified:
    webservices/axis2/trunk/java/modules/kernel/src/org/apache/axis2/deployment/RepositoryListener.java
    webservices/axis2/trunk/java/modules/kernel/src/org/apache/axis2/deployment/repository/util/WSInfo.java
    webservices/axis2/trunk/java/modules/kernel/src/org/apache/axis2/deployment/repository/util/WSInfoList.java

Modified: webservices/axis2/trunk/java/modules/kernel/src/org/apache/axis2/deployment/RepositoryListener.java
URL: http://svn.apache.org/viewvc/webservices/axis2/trunk/java/modules/kernel/src/org/apache/axis2/deployment/RepositoryListener.java?view=diff&rev=548855&r1=548854&r2=548855
==============================================================================
--- webservices/axis2/trunk/java/modules/kernel/src/org/apache/axis2/deployment/RepositoryListener.java (original)
+++ webservices/axis2/trunk/java/modules/kernel/src/org/apache/axis2/deployment/RepositoryListener.java Tue Jun 19 14:03:21 2007
@@ -19,6 +19,7 @@
 
 import org.apache.axis2.deployment.repository.util.DeploymentFileData;
 import org.apache.axis2.deployment.repository.util.WSInfoList;
+import org.apache.axis2.deployment.repository.util.WSInfo;
 import org.apache.axis2.util.Loader;
 import org.apache.commons.logging.Log;
 import org.apache.commons.logging.LogFactory;
@@ -79,11 +80,11 @@
                 }
                 if (!file.isDirectory()) {
                     if (DeploymentFileData.isModuleArchiveFile(file.getName())) {
-                        addFileToDeploy(file, deploymentEngine.getModuleDeployer());
+                        addFileToDeploy(file, deploymentEngine.getModuleDeployer() , WSInfo.TYPE_MODULE);
                     }
                 } else {
                     if (!"lib".equalsIgnoreCase(file.getName())) {
-                        addFileToDeploy(file, deploymentEngine.getModuleDeployer());
+                        addFileToDeploy(file, deploymentEngine.getModuleDeployer() ,WSInfo.TYPE_MODULE);
                     }
                 }
             }
@@ -115,7 +116,7 @@
                 String fileName = url.toString();
                 fileName = fileName.substring(0, fileName.lastIndexOf("/META-INF/module.xml"));
                 File f = new File(new URI(fileName));
-                addFileToDeploy(f, deployer);
+                addFileToDeploy(f, deployer ,WSInfo.TYPE_MODULE);
             }
         } catch (Exception e) {
             // Oh well, log the problem
@@ -140,7 +141,7 @@
                 if (!file.isDirectory()) {
                     if (DeploymentFileData.isModuleArchiveFile(file.getName())) {
                         //adding modules in the class path
-                        addFileToDeploy(file, deployer);
+                        addFileToDeploy(file, deployer,WSInfo.TYPE_MODULE);
                     }
                 }
             }
@@ -165,7 +166,7 @@
                     if (file.isFile()) {
                         if (DeploymentFileData.isModuleArchiveFile(file.getName())) {
                             //adding modules in the class path
-                            addFileToDeploy(file, deployer);
+                            addFileToDeploy(file, deployer,WSInfo.TYPE_MODULE);
                         }
                     }
                 }
@@ -247,7 +248,7 @@
                         if (!file.isDirectory() && extension.equals(
                                 DeploymentFileData.getFileExtension(file.getName()))) {
                             addFileToDeploy(file,
-                                            deploymentEngine.getDeployerForExtension(extension));
+                                            deploymentEngine.getDeployerForExtension(extension),WSInfo.TYPE_CUSTOM);
                         }
                     }
                 }
@@ -270,19 +271,19 @@
                 }
                 if (!file.isDirectory()) {
                     if (DeploymentFileData.isServiceArchiveFile(file.getName())) {
-                        addFileToDeploy(file, deploymentEngine.getServiceDeployer());
+                        addFileToDeploy(file, deploymentEngine.getServiceDeployer(),WSInfo.TYPE_SERVICE);
                     } else {
                         String ext = DeploymentFileData.getFileExtension(file.getName());
                         Deployer deployer = deploymentEngine.getDeployerForExtension(ext);
                         // If we found a deployer for this type of file, use it.  Otherwise
                         // ignore the file.
                         if (deployer != null) {
-                            addFileToDeploy(file, deployer);
+                            addFileToDeploy(file, deployer,WSInfo.TYPE_SERVICE);
                         }
                     }
                 } else {
                     if (!"lib".equalsIgnoreCase(file.getName())) {
-                        addFileToDeploy(file, deploymentEngine.getServiceDeployer());
+                        addFileToDeploy(file, deploymentEngine.getServiceDeployer(),WSInfo.TYPE_CUSTOM);
                     }
                 }
             }
@@ -292,7 +293,7 @@
     /** Method invoked from the scheduler to start the listener. */
     public void startListener() {
         checkServices();
-        update();
+//        update();
     }
 
     /** Updates WSInfoList object. */
@@ -305,7 +306,7 @@
         update();
     }
 
-    public void addFileToDeploy(File file, Deployer deployer) {
-        wsInfoList.addWSInfoItem(file, deployer);
+    public void addFileToDeploy(File file, Deployer deployer , int type) {
+        wsInfoList.addWSInfoItem(file, deployer ,type);
     }
 }

Modified: webservices/axis2/trunk/java/modules/kernel/src/org/apache/axis2/deployment/repository/util/WSInfo.java
URL: http://svn.apache.org/viewvc/webservices/axis2/trunk/java/modules/kernel/src/org/apache/axis2/deployment/repository/util/WSInfo.java?view=diff&rev=548855&r1=548854&r2=548855
==============================================================================
--- webservices/axis2/trunk/java/modules/kernel/src/org/apache/axis2/deployment/repository/util/WSInfo.java (original)
+++ webservices/axis2/trunk/java/modules/kernel/src/org/apache/axis2/deployment/repository/util/WSInfo.java Tue Jun 19 14:03:21 2007
@@ -26,7 +26,7 @@
 
     public static final int TYPE_SERVICE = 0;
     public static final int TYPE_MODULE = 1;
-    public static final int TYPE_CUSTOM_DEPLOYER_SERVICE = 2;
+    public static final int TYPE_CUSTOM = 2;
 
     /**
      * To check whether the file is a module or a service
@@ -35,26 +35,11 @@
 
     private Deployer deployer;
 
-    public WSInfo(String filename, long lastmodifieddate) {
-        this.fileName = filename;
-        this.lastModifiedDate = lastmodifieddate;
-    }
-
-
-    public WSInfo(String fileName, long lastModifiedDate, int type) {
-        this.fileName = fileName;
-        this.lastModifiedDate = lastModifiedDate;
-        this.type = type;
-    }
-
-    public WSInfo(String fileName, long lastModifiedDate, Deployer deployer) {
+    public WSInfo(String fileName, long lastModifiedDate, Deployer deployer ,int type) {
         this.fileName = fileName;
         this.lastModifiedDate = lastModifiedDate;
         this.deployer = deployer;
-        //TODO: This is a temporary fix for the hot update in custom deployers
-        if (!(deployer instanceof ServiceDeployer)) {
-           this.type=TYPE_CUSTOM_DEPLOYER_SERVICE;
-        }
+        this.type = type;
     }
 
     public String getFileName() {

Modified: webservices/axis2/trunk/java/modules/kernel/src/org/apache/axis2/deployment/repository/util/WSInfoList.java
URL: http://svn.apache.org/viewvc/webservices/axis2/trunk/java/modules/kernel/src/org/apache/axis2/deployment/repository/util/WSInfoList.java?view=diff&rev=548855&r1=548854&r2=548855
==============================================================================
--- webservices/axis2/trunk/java/modules/kernel/src/org/apache/axis2/deployment/repository/util/WSInfoList.java (original)
+++ webservices/axis2/trunk/java/modules/kernel/src/org/apache/axis2/deployment/repository/util/WSInfoList.java Tue Jun 19 14:03:21 2007
@@ -22,11 +22,7 @@
 import org.apache.axis2.deployment.Deployer;
 
 import java.io.File;
-import java.util.ArrayList;
-import java.util.Iterator;
-import java.util.List;
-import java.util.Set;
-import java.util.HashSet;
+import java.util.*;
 
 public class WSInfoList implements DeploymentConstants {
 
@@ -38,14 +34,14 @@
     /**
      * All the currently updated jars
      */
-    public Set currentJars = new HashSet();
+    public Map currentJars = new HashMap();
 
     /**
      * Reference to DeploymentEngine to make update
      */
-    private final DeploymentEngine deploymentEngine;
 
-    private boolean check;
+    private boolean locked = false;
+    private final DeploymentEngine deploymentEngine;
 
     public WSInfoList(DeploymentEngine deploy_engine) {
         deploymentEngine = deploy_engine;
@@ -64,20 +60,16 @@
      *
      * @param file actual jar files for either Module or service
      */
-    public synchronized void addWSInfoItem(File file, Deployer deployer) {
-        WSInfo info = getFileItem(file.getName());
-        if (info == null) {
-            info = new WSInfo(file.getName(), file.lastModified(), deployer);
-            jarList.add(info);
-            DeploymentFileData fileData = new DeploymentFileData(file, deployer);
-            deploymentEngine.addWSToDeploy(fileData);
-        } else if (deploymentEngine.isHotUpdate() && isModified(file, info)) {
+    public synchronized void addWSInfoItem(File file, Deployer deployer , int type) {
+        WSInfo info = getFileItem(file,deployer,type);
+        if (deploymentEngine.isHotUpdate() && isModified(file, info)) {
             info.setLastModifiedDate(file.lastModified());
-            WSInfo wsInfo = new WSInfo(info.getFileName(), info.getLastModifiedDate(), deployer);
+            WSInfo wsInfo = new WSInfo(info.getFileName(), info.getLastModifiedDate(), deployer,type);
             deploymentEngine.addWSToUndeploy(wsInfo);           // add entry to undeploy list
             DeploymentFileData deploymentFileData = new DeploymentFileData(file, deployer);
             deploymentEngine.addWSToDeploy(deploymentFileData);    // add entry to deploylist
         }
+        jarList.add(info.getFileName());
     }
 
     /**
@@ -87,33 +79,40 @@
      * and that is hot undeployment.
      */
     private synchronized void checkForUndeployedServices() {
-        if (!check) {
+        if(!locked) {
+            locked = true;
+        } else{
             return;
-        } else {
-            check = false;
         }
-
-        Iterator iter = jarList.listIterator();
-        List tempvector = new ArrayList();
-
-        while (iter.hasNext()) {
-            WSInfo fileitem = (WSInfo) iter.next();
-            if (fileitem.getType() == WSInfo.TYPE_MODULE) {
+        Iterator infoItems = currentJars.keySet().iterator();
+        List tobeRemoved = new ArrayList();
+        while (infoItems.hasNext()) {
+            String  fileName = (String) infoItems.next();
+            WSInfo infoItem = (WSInfo) currentJars.get(fileName);
+            if (infoItem.getType() == WSInfo.TYPE_MODULE) {
                 continue;
             }
-            String itemName = fileitem.getFileName();
-            if (!currentJars.contains(itemName)) {
-                tempvector.add(fileitem);
-                WSInfo wsInfo = new WSInfo(fileitem.getFileName(), fileitem.getLastModifiedDate());
-                deploymentEngine.addWSToUndeploy(wsInfo);  
+            //seems like someone has deleted the file , so need to undeploy
+            boolean found = false;
+            for (int i = 0; i < jarList.size(); i++) {
+                String s = (String) jarList.get(i);
+                if(fileName.equals(s)){
+                    found = true;
+                }
+            }
+            if(!found){
+                tobeRemoved.add(fileName);
+                deploymentEngine.addWSToUndeploy(infoItem);
             }
         }
-        for (int i = 0; i < tempvector.size(); i++) {
-            WSInfo fileItem = (WSInfo) tempvector.get(i);
-            jarList.remove(fileItem);
+
+        for (int i = 0; i < tobeRemoved.size(); i++) {
+            String fileName = (String) tobeRemoved.get(i);
+            currentJars.remove(fileName);
         }
-        tempvector.clear();
-        currentJars.clear();
+        tobeRemoved.clear();
+        jarList.clear();
+        locked = false;
     }
 
     /**
@@ -137,18 +136,17 @@
     /**
      * Gets the WSInfo object related to a file if it exists, null otherwise.
      *
-     * @param filename
      */
-    private WSInfo getFileItem(String filename) {
-        int sise = jarList.size();
-        for (int i = 0; i < sise; i++) {
-            WSInfo wsInfo = (WSInfo) jarList.get(i);
-
-            if (wsInfo.getFileName().equals(filename)) {
-                return wsInfo;
-            }
+    private WSInfo getFileItem(File file , Deployer deployer , int type) {
+        String fileName = file.getName();
+        WSInfo info = (WSInfo) currentJars.get(fileName);
+        if(info==null){
+            info = new WSInfo(file.getName(), file.lastModified(), deployer ,type);
+            currentJars.put(file.getName(),info);
+            DeploymentFileData fileData = new DeploymentFileData(file, deployer);
+            deploymentEngine.addWSToDeploy(fileData);
         }
-        return null;
+        return info;
     }
 
     /**



---------------------------------------------------------------------
To unsubscribe, e-mail: axis-cvs-unsubscribe@ws.apache.org
For additional commands, e-mail: axis-cvs-help@ws.apache.org


Re: svn commit: r548855 - in /webservices/axis2/trunk/java/modules/kernel/src/org/apache/axis2/deployment: RepositoryListener.java repository/util/WSInfo.java repository/util/WSInfoList.java

Posted by Glen Daniels <gl...@thoughtcraft.com>.
Hi Deepal:

There are quite a few missing or extra spaces in this commit.

When calling methods, it should look like this:

   method(arg1, arg2, arg3)  NOT method( arg1 , arg2,arg3)

Operators always have spaces around them, so

   "this == correct" NOT "this==not"

If statements have a space after "if", so

   if (this == correct) {   NOT
   if(this==wrong){

Can we please follow the coding conventions?

Thanks,
--G

deepal@apache.org wrote:
> Author: deepal
> Date: Tue Jun 19 14:03:21 2007
> New Revision: 548855
> 
> URL: http://svn.apache.org/viewvc?view=rev&rev=548855
> Log:
> fixing hot update and hot deployment issues
>  - Test both hot update and hot deployment with POJO deployer
> and server deployer
> 
> Modified:
>     webservices/axis2/trunk/java/modules/kernel/src/org/apache/axis2/deployment/RepositoryListener.java
>     webservices/axis2/trunk/java/modules/kernel/src/org/apache/axis2/deployment/repository/util/WSInfo.java
>     webservices/axis2/trunk/java/modules/kernel/src/org/apache/axis2/deployment/repository/util/WSInfoList.java
> 
> Modified: webservices/axis2/trunk/java/modules/kernel/src/org/apache/axis2/deployment/RepositoryListener.java
> URL: http://svn.apache.org/viewvc/webservices/axis2/trunk/java/modules/kernel/src/org/apache/axis2/deployment/RepositoryListener.java?view=diff&rev=548855&r1=548854&r2=548855
> ==============================================================================
> --- webservices/axis2/trunk/java/modules/kernel/src/org/apache/axis2/deployment/RepositoryListener.java (original)
> +++ webservices/axis2/trunk/java/modules/kernel/src/org/apache/axis2/deployment/RepositoryListener.java Tue Jun 19 14:03:21 2007
> @@ -19,6 +19,7 @@
>  
>  import org.apache.axis2.deployment.repository.util.DeploymentFileData;
>  import org.apache.axis2.deployment.repository.util.WSInfoList;
> +import org.apache.axis2.deployment.repository.util.WSInfo;
>  import org.apache.axis2.util.Loader;
>  import org.apache.commons.logging.Log;
>  import org.apache.commons.logging.LogFactory;
> @@ -79,11 +80,11 @@
>                  }
>                  if (!file.isDirectory()) {
>                      if (DeploymentFileData.isModuleArchiveFile(file.getName())) {
> -                        addFileToDeploy(file, deploymentEngine.getModuleDeployer());
> +                        addFileToDeploy(file, deploymentEngine.getModuleDeployer() , WSInfo.TYPE_MODULE);
>                      }
>                  } else {
>                      if (!"lib".equalsIgnoreCase(file.getName())) {
> -                        addFileToDeploy(file, deploymentEngine.getModuleDeployer());
> +                        addFileToDeploy(file, deploymentEngine.getModuleDeployer() ,WSInfo.TYPE_MODULE);
>                      }
>                  }
>              }
> @@ -115,7 +116,7 @@
>                  String fileName = url.toString();
>                  fileName = fileName.substring(0, fileName.lastIndexOf("/META-INF/module.xml"));
>                  File f = new File(new URI(fileName));
> -                addFileToDeploy(f, deployer);
> +                addFileToDeploy(f, deployer ,WSInfo.TYPE_MODULE);
>              }
>          } catch (Exception e) {
>              // Oh well, log the problem
> @@ -140,7 +141,7 @@
>                  if (!file.isDirectory()) {
>                      if (DeploymentFileData.isModuleArchiveFile(file.getName())) {
>                          //adding modules in the class path
> -                        addFileToDeploy(file, deployer);
> +                        addFileToDeploy(file, deployer,WSInfo.TYPE_MODULE);
>                      }
>                  }
>              }
> @@ -165,7 +166,7 @@
>                      if (file.isFile()) {
>                          if (DeploymentFileData.isModuleArchiveFile(file.getName())) {
>                              //adding modules in the class path
> -                            addFileToDeploy(file, deployer);
> +                            addFileToDeploy(file, deployer,WSInfo.TYPE_MODULE);
>                          }
>                      }
>                  }
> @@ -247,7 +248,7 @@
>                          if (!file.isDirectory() && extension.equals(
>                                  DeploymentFileData.getFileExtension(file.getName()))) {
>                              addFileToDeploy(file,
> -                                            deploymentEngine.getDeployerForExtension(extension));
> +                                            deploymentEngine.getDeployerForExtension(extension),WSInfo.TYPE_CUSTOM);
>                          }
>                      }
>                  }
> @@ -270,19 +271,19 @@
>                  }
>                  if (!file.isDirectory()) {
>                      if (DeploymentFileData.isServiceArchiveFile(file.getName())) {
> -                        addFileToDeploy(file, deploymentEngine.getServiceDeployer());
> +                        addFileToDeploy(file, deploymentEngine.getServiceDeployer(),WSInfo.TYPE_SERVICE);
>                      } else {
>                          String ext = DeploymentFileData.getFileExtension(file.getName());
>                          Deployer deployer = deploymentEngine.getDeployerForExtension(ext);
>                          // If we found a deployer for this type of file, use it.  Otherwise
>                          // ignore the file.
>                          if (deployer != null) {
> -                            addFileToDeploy(file, deployer);
> +                            addFileToDeploy(file, deployer,WSInfo.TYPE_SERVICE);
>                          }
>                      }
>                  } else {
>                      if (!"lib".equalsIgnoreCase(file.getName())) {
> -                        addFileToDeploy(file, deploymentEngine.getServiceDeployer());
> +                        addFileToDeploy(file, deploymentEngine.getServiceDeployer(),WSInfo.TYPE_CUSTOM);
>                      }
>                  }
>              }
> @@ -292,7 +293,7 @@
>      /** Method invoked from the scheduler to start the listener. */
>      public void startListener() {
>          checkServices();
> -        update();
> +//        update();
>      }
>  
>      /** Updates WSInfoList object. */
> @@ -305,7 +306,7 @@
>          update();
>      }
>  
> -    public void addFileToDeploy(File file, Deployer deployer) {
> -        wsInfoList.addWSInfoItem(file, deployer);
> +    public void addFileToDeploy(File file, Deployer deployer , int type) {
> +        wsInfoList.addWSInfoItem(file, deployer ,type);
>      }
>  }
> 
> Modified: webservices/axis2/trunk/java/modules/kernel/src/org/apache/axis2/deployment/repository/util/WSInfo.java
> URL: http://svn.apache.org/viewvc/webservices/axis2/trunk/java/modules/kernel/src/org/apache/axis2/deployment/repository/util/WSInfo.java?view=diff&rev=548855&r1=548854&r2=548855
> ==============================================================================
> --- webservices/axis2/trunk/java/modules/kernel/src/org/apache/axis2/deployment/repository/util/WSInfo.java (original)
> +++ webservices/axis2/trunk/java/modules/kernel/src/org/apache/axis2/deployment/repository/util/WSInfo.java Tue Jun 19 14:03:21 2007
> @@ -26,7 +26,7 @@
>  
>      public static final int TYPE_SERVICE = 0;
>      public static final int TYPE_MODULE = 1;
> -    public static final int TYPE_CUSTOM_DEPLOYER_SERVICE = 2;
> +    public static final int TYPE_CUSTOM = 2;
>  
>      /**
>       * To check whether the file is a module or a service
> @@ -35,26 +35,11 @@
>  
>      private Deployer deployer;
>  
> -    public WSInfo(String filename, long lastmodifieddate) {
> -        this.fileName = filename;
> -        this.lastModifiedDate = lastmodifieddate;
> -    }
> -
> -
> -    public WSInfo(String fileName, long lastModifiedDate, int type) {
> -        this.fileName = fileName;
> -        this.lastModifiedDate = lastModifiedDate;
> -        this.type = type;
> -    }
> -
> -    public WSInfo(String fileName, long lastModifiedDate, Deployer deployer) {
> +    public WSInfo(String fileName, long lastModifiedDate, Deployer deployer ,int type) {
>          this.fileName = fileName;
>          this.lastModifiedDate = lastModifiedDate;
>          this.deployer = deployer;
> -        //TODO: This is a temporary fix for the hot update in custom deployers
> -        if (!(deployer instanceof ServiceDeployer)) {
> -           this.type=TYPE_CUSTOM_DEPLOYER_SERVICE;
> -        }
> +        this.type = type;
>      }
>  
>      public String getFileName() {
> 
> Modified: webservices/axis2/trunk/java/modules/kernel/src/org/apache/axis2/deployment/repository/util/WSInfoList.java
> URL: http://svn.apache.org/viewvc/webservices/axis2/trunk/java/modules/kernel/src/org/apache/axis2/deployment/repository/util/WSInfoList.java?view=diff&rev=548855&r1=548854&r2=548855
> ==============================================================================
> --- webservices/axis2/trunk/java/modules/kernel/src/org/apache/axis2/deployment/repository/util/WSInfoList.java (original)
> +++ webservices/axis2/trunk/java/modules/kernel/src/org/apache/axis2/deployment/repository/util/WSInfoList.java Tue Jun 19 14:03:21 2007
> @@ -22,11 +22,7 @@
>  import org.apache.axis2.deployment.Deployer;
>  
>  import java.io.File;
> -import java.util.ArrayList;
> -import java.util.Iterator;
> -import java.util.List;
> -import java.util.Set;
> -import java.util.HashSet;
> +import java.util.*;
>  
>  public class WSInfoList implements DeploymentConstants {
>  
> @@ -38,14 +34,14 @@
>      /**
>       * All the currently updated jars
>       */
> -    public Set currentJars = new HashSet();
> +    public Map currentJars = new HashMap();
>  
>      /**
>       * Reference to DeploymentEngine to make update
>       */
> -    private final DeploymentEngine deploymentEngine;
>  
> -    private boolean check;
> +    private boolean locked = false;
> +    private final DeploymentEngine deploymentEngine;
>  
>      public WSInfoList(DeploymentEngine deploy_engine) {
>          deploymentEngine = deploy_engine;
> @@ -64,20 +60,16 @@
>       *
>       * @param file actual jar files for either Module or service
>       */
> -    public synchronized void addWSInfoItem(File file, Deployer deployer) {
> -        WSInfo info = getFileItem(file.getName());
> -        if (info == null) {
> -            info = new WSInfo(file.getName(), file.lastModified(), deployer);
> -            jarList.add(info);
> -            DeploymentFileData fileData = new DeploymentFileData(file, deployer);
> -            deploymentEngine.addWSToDeploy(fileData);
> -        } else if (deploymentEngine.isHotUpdate() && isModified(file, info)) {
> +    public synchronized void addWSInfoItem(File file, Deployer deployer , int type) {
> +        WSInfo info = getFileItem(file,deployer,type);
> +        if (deploymentEngine.isHotUpdate() && isModified(file, info)) {
>              info.setLastModifiedDate(file.lastModified());
> -            WSInfo wsInfo = new WSInfo(info.getFileName(), info.getLastModifiedDate(), deployer);
> +            WSInfo wsInfo = new WSInfo(info.getFileName(), info.getLastModifiedDate(), deployer,type);
>              deploymentEngine.addWSToUndeploy(wsInfo);           // add entry to undeploy list
>              DeploymentFileData deploymentFileData = new DeploymentFileData(file, deployer);
>              deploymentEngine.addWSToDeploy(deploymentFileData);    // add entry to deploylist
>          }
> +        jarList.add(info.getFileName());
>      }
>  
>      /**
> @@ -87,33 +79,40 @@
>       * and that is hot undeployment.
>       */
>      private synchronized void checkForUndeployedServices() {
> -        if (!check) {
> +        if(!locked) {
> +            locked = true;
> +        } else{
>              return;
> -        } else {
> -            check = false;
>          }
> -
> -        Iterator iter = jarList.listIterator();
> -        List tempvector = new ArrayList();
> -
> -        while (iter.hasNext()) {
> -            WSInfo fileitem = (WSInfo) iter.next();
> -            if (fileitem.getType() == WSInfo.TYPE_MODULE) {
> +        Iterator infoItems = currentJars.keySet().iterator();
> +        List tobeRemoved = new ArrayList();
> +        while (infoItems.hasNext()) {
> +            String  fileName = (String) infoItems.next();
> +            WSInfo infoItem = (WSInfo) currentJars.get(fileName);
> +            if (infoItem.getType() == WSInfo.TYPE_MODULE) {
>                  continue;
>              }
> -            String itemName = fileitem.getFileName();
> -            if (!currentJars.contains(itemName)) {
> -                tempvector.add(fileitem);
> -                WSInfo wsInfo = new WSInfo(fileitem.getFileName(), fileitem.getLastModifiedDate());
> -                deploymentEngine.addWSToUndeploy(wsInfo);  
> +            //seems like someone has deleted the file , so need to undeploy
> +            boolean found = false;
> +            for (int i = 0; i < jarList.size(); i++) {
> +                String s = (String) jarList.get(i);
> +                if(fileName.equals(s)){
> +                    found = true;
> +                }
> +            }
> +            if(!found){
> +                tobeRemoved.add(fileName);
> +                deploymentEngine.addWSToUndeploy(infoItem);
>              }
>          }
> -        for (int i = 0; i < tempvector.size(); i++) {
> -            WSInfo fileItem = (WSInfo) tempvector.get(i);
> -            jarList.remove(fileItem);
> +
> +        for (int i = 0; i < tobeRemoved.size(); i++) {
> +            String fileName = (String) tobeRemoved.get(i);
> +            currentJars.remove(fileName);
>          }
> -        tempvector.clear();
> -        currentJars.clear();
> +        tobeRemoved.clear();
> +        jarList.clear();
> +        locked = false;
>      }
>  
>      /**
> @@ -137,18 +136,17 @@
>      /**
>       * Gets the WSInfo object related to a file if it exists, null otherwise.
>       *
> -     * @param filename
>       */
> -    private WSInfo getFileItem(String filename) {
> -        int sise = jarList.size();
> -        for (int i = 0; i < sise; i++) {
> -            WSInfo wsInfo = (WSInfo) jarList.get(i);
> -
> -            if (wsInfo.getFileName().equals(filename)) {
> -                return wsInfo;
> -            }
> +    private WSInfo getFileItem(File file , Deployer deployer , int type) {
> +        String fileName = file.getName();
> +        WSInfo info = (WSInfo) currentJars.get(fileName);
> +        if(info==null){
> +            info = new WSInfo(file.getName(), file.lastModified(), deployer ,type);
> +            currentJars.put(file.getName(),info);
> +            DeploymentFileData fileData = new DeploymentFileData(file, deployer);
> +            deploymentEngine.addWSToDeploy(fileData);
>          }
> -        return null;
> +        return info;
>      }
>  
>      /**
> 
> 
> 
> ---------------------------------------------------------------------
> To unsubscribe, e-mail: axis-cvs-unsubscribe@ws.apache.org
> For additional commands, e-mail: axis-cvs-help@ws.apache.org
> 

---------------------------------------------------------------------
To unsubscribe, e-mail: axis-dev-unsubscribe@ws.apache.org
For additional commands, e-mail: axis-dev-help@ws.apache.org