Author: djencks
Date: Thu Feb 17 22:56:48 2005
New Revision: 154242

URL: http://svn.apache.org/viewcvs?view=rev&rev=154242
Log:
If the event has already happened, send it to newly registering listeners on 
registration. Also refactor and fix RedeployCommand

Modified:
    
geronimo/trunk/modules/deploy-tool/src/java/org/apache/geronimo/deployment/plugin/local/AbstractDeployCommand.java
    
geronimo/trunk/modules/deploy-tool/src/java/org/apache/geronimo/deployment/plugin/local/CommandSupport.java
    
geronimo/trunk/modules/deploy-tool/src/java/org/apache/geronimo/deployment/plugin/local/DistributeCommand.java
    
geronimo/trunk/modules/deploy-tool/src/java/org/apache/geronimo/deployment/plugin/local/RedeployCommand.java

Modified: 
geronimo/trunk/modules/deploy-tool/src/java/org/apache/geronimo/deployment/plugin/local/AbstractDeployCommand.java
URL: 
http://svn.apache.org/viewcvs/geronimo/trunk/modules/deploy-tool/src/java/org/apache/geronimo/deployment/plugin/local/AbstractDeployCommand.java?view=diff&r1=154241&r2=154242
==============================================================================
--- 
geronimo/trunk/modules/deploy-tool/src/java/org/apache/geronimo/deployment/plugin/local/AbstractDeployCommand.java
 (original)
+++ 
geronimo/trunk/modules/deploy-tool/src/java/org/apache/geronimo/deployment/plugin/local/AbstractDeployCommand.java
 Thu Feb 17 22:56:48 2005
@@ -18,16 +18,21 @@
 
 import java.util.Set;
 import java.util.Iterator;
+import java.util.List;
 import java.io.File;
 import java.io.InputStream;
 import java.io.IOException;
 import java.io.OutputStream;
 import java.io.FileOutputStream;
 import javax.enterprise.deploy.shared.CommandType;
+import javax.enterprise.deploy.spi.TargetModuleID;
+import javax.enterprise.deploy.spi.Target;
 import javax.management.ObjectName;
 
 import org.apache.geronimo.kernel.jmx.JMXUtil;
 import org.apache.geronimo.kernel.jmx.KernelMBean;
+import org.apache.geronimo.common.DeploymentException;
+import org.apache.geronimo.deployment.plugin.TargetModuleIDImpl;
 
 /**
  * @version $Rev:  $ $Date:  $
@@ -36,10 +41,21 @@
     private final static String DEPLOYER_NAME = 
"*:name=Deployer,j2eeType=Deployer,*";
 
     protected final KernelMBean kernel;
+    private static final String[] DEPLOY_SIG = {File.class.getName(), 
File.class.getName()};
+    protected final boolean spool;
+    protected File moduleArchive;
+    protected File deploymentPlan;
+    protected InputStream moduleStream;
+    protected InputStream deploymentStream;
 
-    public AbstractDeployCommand(CommandType command, KernelMBean kernel) {
+    public AbstractDeployCommand(CommandType command, KernelMBean kernel, File 
moduleArchive, File deploymentPlan, InputStream moduleStream, InputStream 
deploymentStream, boolean spool) {
         super(command);
         this.kernel = kernel;
+        this.moduleArchive = moduleArchive;
+        this.deploymentPlan = deploymentPlan;
+        this.moduleStream = moduleStream;
+        this.deploymentStream = deploymentStream;
+        this.spool = spool;
     }
 
     protected ObjectName getDeployerName() {
@@ -69,5 +85,24 @@
         } finally {
             os.close();
         }
+    }
+
+    protected void doDeploy(ObjectName deployer, Target target) throws 
Exception {
+        Object[] args = {moduleArchive, deploymentPlan};
+        List objectNames = (List) kernel.invoke(deployer, "deploy", args, 
DEPLOY_SIG);
+        if (objectNames == null || objectNames.isEmpty()) {
+            DeploymentException deploymentException = new 
DeploymentException("Got empty list");
+            deploymentException.printStackTrace();
+            throw deploymentException;
+        }
+        String parentName = (String) objectNames.get(0);
+        String[] childIDs = new String[objectNames.size()-1];
+        for (int j=0; j < childIDs.length; j++) {
+            childIDs[j] = (String)objectNames.get(j+1);
+        }
+
+        TargetModuleID moduleID = new TargetModuleIDImpl(target, 
parentName.toString(), childIDs);
+        addModule(moduleID);
+        complete("Completed with id " + parentName);
     }
 }

Modified: 
geronimo/trunk/modules/deploy-tool/src/java/org/apache/geronimo/deployment/plugin/local/CommandSupport.java
URL: 
http://svn.apache.org/viewcvs/geronimo/trunk/modules/deploy-tool/src/java/org/apache/geronimo/deployment/plugin/local/CommandSupport.java?view=diff&r1=154241&r2=154242
==============================================================================
--- 
geronimo/trunk/modules/deploy-tool/src/java/org/apache/geronimo/deployment/plugin/local/CommandSupport.java
 (original)
+++ 
geronimo/trunk/modules/deploy-tool/src/java/org/apache/geronimo/deployment/plugin/local/CommandSupport.java
 Thu Feb 17 22:56:48 2005
@@ -36,8 +36,6 @@
 import javax.management.MBeanException;
 
 /**
- *
- *
  * @version $Rev$ $Date$
  */
 public abstract class CommandSupport implements ProgressObject, Runnable {
@@ -49,6 +47,8 @@
     private final List moduleIDs = new ArrayList();
     private boolean logErrors;
 
+    private ProgressEvent event = null;
+
     protected CommandSupport(CommandType command) {
         this.command = command;
         this.action = ActionType.EXECUTE;
@@ -88,8 +88,15 @@
         throw new OperationUnsupportedException("stop not supported");
     }
 
-    public synchronized void addProgressListener(ProgressListener pol) {
-        listeners.add(pol);
+    public void addProgressListener(ProgressListener pol) {
+        ProgressEvent event = null;
+        synchronized (this) {
+            listeners.add(pol);
+            event = this.event;
+        }
+        if (event != null) {
+            pol.handleProgressEvent(event);
+        }
     }
 
     public synchronized void removeProgressListener(ProgressListener pol) {
@@ -107,20 +114,20 @@
     protected void doFail(Exception e) {
         // todo dain: kernel does not throw any JMX exceptions anymore... do 
we still need this
         if (e instanceof MBeanException) {
-            e = ((MBeanException)e).getTargetException();
+            e = ((MBeanException) e).getTargetException();
         }
-        
-        if( logErrors ) {
-               System.err.println("Deployer operation failed: 
"+e.getMessage());
-               e.printStackTrace(System.err);
+
+        if (logErrors) {
+            System.err.println("Deployer operation failed: " + e.getMessage());
+            e.printStackTrace(System.err);
         }
-        
+
         StringWriter writer = new StringWriter();
-         PrintWriter printWriter = new PrintWriter(writer);
-         printWriter.println(e.getMessage());
-         e.printStackTrace(printWriter);
-         fail(writer.toString());
-     }
+        PrintWriter printWriter = new PrintWriter(writer);
+        printWriter.println(e.getMessage());
+        e.printStackTrace(printWriter);
+        fail(writer.toString());
+    }
 
     private void sendEvent(String message, StateType state) {
         assert !Thread.holdsLock(this) : "Trying to send event whilst holding 
lock";
@@ -132,9 +139,9 @@
             this.state = state;
             newStatus = getDeploymentStatus();
             toNotify = (ProgressListener[]) listeners.toArray(new 
ProgressListener[listeners.size()]);
+            event = new ProgressEvent(this, null, newStatus);
         }
 
-        ProgressEvent event = new ProgressEvent(this, null, newStatus);
         for (int i = 0; i < toNotify.length; i++) {
             toNotify[i].handleProgressEvent(event);
         }
@@ -193,12 +200,12 @@
             return buf.toString();
         }
     }
-    
-       public boolean isLogErrors() {
-               return logErrors;
-       }
-
-       public void setLogErrors(boolean logErrors) {
-               this.logErrors = logErrors;
-       }
+
+    public boolean isLogErrors() {
+        return logErrors;
+    }
+
+    public void setLogErrors(boolean logErrors) {
+        this.logErrors = logErrors;
+    }
 }

Modified: 
geronimo/trunk/modules/deploy-tool/src/java/org/apache/geronimo/deployment/plugin/local/DistributeCommand.java
URL: 
http://svn.apache.org/viewcvs/geronimo/trunk/modules/deploy-tool/src/java/org/apache/geronimo/deployment/plugin/local/DistributeCommand.java?view=diff&r1=154241&r2=154242
==============================================================================
--- 
geronimo/trunk/modules/deploy-tool/src/java/org/apache/geronimo/deployment/plugin/local/DistributeCommand.java
 (original)
+++ 
geronimo/trunk/modules/deploy-tool/src/java/org/apache/geronimo/deployment/plugin/local/DistributeCommand.java
 Thu Feb 17 22:56:48 2005
@@ -39,30 +39,16 @@
  * @version $Rev$ $Date$
  */
 public class DistributeCommand extends AbstractDeployCommand {
-    private static final String[] DEPLOY_SIG = {File.class.getName(), 
File.class.getName()};
-    private final Target[] targetList;
-    private final boolean spool;
-    private File moduleArchive;
-    private File deploymentPlan;
-    private InputStream moduleStream;
-    private InputStream deploymentStream;
+    protected final Target[] targetList;
 
     public DistributeCommand(KernelMBean kernel, Target[] targetList, File 
moduleArchive, File deploymentPlan) {
-        super(CommandType.DISTRIBUTE, kernel);
+        super(CommandType.DISTRIBUTE, kernel, moduleArchive, deploymentPlan, 
null, null, false);
         this.targetList = targetList;
-        this.moduleArchive = moduleArchive;
-        this.deploymentPlan = deploymentPlan;
-        spool = false;
     }
 
     public DistributeCommand(KernelMBean kernel, Target[] targetList, 
InputStream moduleStream, InputStream deploymentStream) {
-        super(CommandType.DISTRIBUTE, kernel);
+        super(CommandType.DISTRIBUTE, kernel, null, null, moduleStream, 
deploymentStream, true);
         this.targetList = targetList;
-        this.moduleArchive = null ;
-        this.deploymentPlan = null;
-        this.moduleStream = moduleStream;
-        this.deploymentStream = deploymentStream;
-        spool = true;
     }
 
     public void run() {
@@ -82,22 +68,8 @@
                 return;
             }
 
-            Object[] args = {moduleArchive, deploymentPlan};
-            List objectNames = (List) kernel.invoke(deployer, "deploy", args, 
DEPLOY_SIG);
-            if (objectNames == null || objectNames.isEmpty()) {
-                DeploymentException deploymentException = new 
DeploymentException("Got empty list");
-                deploymentException.printStackTrace();
-                throw deploymentException;
-            }
-            String parentName = (String) objectNames.get(0);
-            String[] childIDs = new String[objectNames.size()-1];
-            for (int j=0; j < childIDs.length; j++) {
-                childIDs[j] = (String)objectNames.get(j+1);
-            }
+            doDeploy(deployer, targetList[0]);
 
-            TargetModuleID moduleID = new TargetModuleIDImpl(targetList[0], 
parentName.toString(), childIDs);
-            addModule(moduleID);
-            complete("Completed with id " + parentName);
         } catch (Exception e) {
             doFail(e);
         } finally {

Modified: 
geronimo/trunk/modules/deploy-tool/src/java/org/apache/geronimo/deployment/plugin/local/RedeployCommand.java
URL: 
http://svn.apache.org/viewcvs/geronimo/trunk/modules/deploy-tool/src/java/org/apache/geronimo/deployment/plugin/local/RedeployCommand.java?view=diff&r1=154241&r2=154242
==============================================================================
--- 
geronimo/trunk/modules/deploy-tool/src/java/org/apache/geronimo/deployment/plugin/local/RedeployCommand.java
 (original)
+++ 
geronimo/trunk/modules/deploy-tool/src/java/org/apache/geronimo/deployment/plugin/local/RedeployCommand.java
 Thu Feb 17 22:56:48 2005
@@ -21,6 +21,7 @@
 import java.net.URI;
 import javax.enterprise.deploy.shared.CommandType;
 import javax.enterprise.deploy.spi.TargetModuleID;
+import javax.enterprise.deploy.spi.Target;
 import javax.management.ObjectName;
 
 import org.apache.geronimo.deployment.plugin.TargetImpl;
@@ -35,26 +36,15 @@
     private static final String[] DEPLOY_SIG = {File.class.getName(), 
File.class.getName()};
     private static final String[] UNINSTALL_SIG = {URI.class.getName()};
     private final TargetModuleID[] modules;
-    private File moduleArchive;
-    private File deploymentPlan;
-    private InputStream moduleStream;
-    private InputStream deploymentStream;
-    private final boolean spool;
-
-    public RedeployCommand(KernelMBean kernel, TargetModuleID modules[], File 
moduleArchive, File deploymentPlan) {
-        super(CommandType.START, kernel);
-        this.modules = modules;
-        this.moduleArchive = moduleArchive;
-        this.deploymentPlan = deploymentPlan;
-        spool = false;
+
+    public RedeployCommand(KernelMBean kernel, TargetModuleID[] moduleIDList, 
File moduleArchive, File deploymentPlan) {
+        super(CommandType.DISTRIBUTE, kernel, moduleArchive, deploymentPlan, 
null, null, false);
+        this.modules = moduleIDList;
     }
 
     public RedeployCommand(KernelMBean kernel, TargetModuleID[] moduleIDList, 
InputStream moduleArchive, InputStream deploymentPlan) {
-        super(CommandType.START, kernel);
+        super(CommandType.START, kernel, null, null, moduleArchive, 
deploymentPlan, true);
         this.modules = moduleIDList;
-        moduleStream = moduleArchive;
-        deploymentStream = deploymentPlan;
-        spool = true;
     }
 
     public void run() {
@@ -84,14 +74,20 @@
                 ObjectName storeName = target.getObjectName();
                 kernel.invoke(storeName, "uninstall", new Object[]{configID}, 
UNINSTALL_SIG);
 
-                Object[] args = {moduleArchive, deploymentPlan};
-                URI configId = (URI) kernel.invoke(deployer, "deploy", args, 
DEPLOY_SIG);
-                module = new TargetModuleIDImpl(module.getTarget(), 
configId.toString());
-                addModule(module);
+                doDeploy(deployer, module.getTarget());
             }
             complete("Completed");
         } catch (Exception e) {
             doFail(e);
+        } finally {
+            if (spool) {
+                if (moduleArchive != null) {
+                    moduleArchive.delete();
+                }
+                if (deploymentPlan != null) {
+                    deploymentPlan.delete();
+                }
+            }
         }
     }
 }


Reply via email to