You are viewing a plain text version of this content. The canonical link for it is here.
Posted to scm@geronimo.apache.org by jb...@apache.org on 2004/07/06 07:36:12 UTC

cvs commit: incubator-geronimo/modules/deployment/src/java/org/apache/geronimo/deployment/plugin/jmx JMXDeploymentManager.java

jboynes     2004/07/05 22:36:12

  Modified:    modules/deployment/src/java/org/apache/geronimo/deployment/plugin/local
                        DistributeCommand.java
               modules/deployment/src/java/org/apache/geronimo/deployment/plugin/jmx
                        JMXDeploymentManager.java
  Log:
  Support distribute with InputStream params
  
  Revision  Changes    Path
  1.12      +54 -3     incubator-geronimo/modules/deployment/src/java/org/apache/geronimo/deployment/plugin/local/DistributeCommand.java
  
  Index: DistributeCommand.java
  ===================================================================
  RCS file: /home/cvs/incubator-geronimo/modules/deployment/src/java/org/apache/geronimo/deployment/plugin/local/DistributeCommand.java,v
  retrieving revision 1.11
  retrieving revision 1.12
  diff -u -r1.11 -r1.12
  --- DistributeCommand.java	23 Jun 2004 22:44:49 -0000	1.11
  +++ DistributeCommand.java	6 Jul 2004 05:36:12 -0000	1.12
  @@ -18,6 +18,10 @@
   package org.apache.geronimo.deployment.plugin.local;
   
   import java.io.File;
  +import java.io.InputStream;
  +import java.io.IOException;
  +import java.io.OutputStream;
  +import java.io.FileOutputStream;
   import java.util.Iterator;
   import java.util.Set;
   import java.net.URI;
  @@ -36,8 +40,11 @@
       private static final String[] DEPLOY_SIG = {File.class.getName(), File.class.getName()};
       private final KernelMBean kernel;
       private final Target[] targetList;
  -    private final File moduleArchive;
  -    private final File deploymentPlan;
  +    private final boolean spool;
  +    private File moduleArchive;
  +    private File deploymentPlan;
  +    private InputStream moduleStream;
  +    private InputStream deploymentStream;
   
       public DistributeCommand(KernelMBean kernel, Target[] targetList, File moduleArchive, File deploymentPlan) {
           super(CommandType.DISTRIBUTE);
  @@ -45,10 +52,32 @@
           this.targetList = targetList;
           this.moduleArchive = moduleArchive;
           this.deploymentPlan = deploymentPlan;
  +        spool = false;
  +    }
  +
  +    public DistributeCommand(KernelMBean kernel, Target[] targetList, InputStream moduleStream, InputStream deploymentStream) {
  +        super(CommandType.DISTRIBUTE);
  +        this.kernel = kernel;
  +        this.targetList = targetList;
  +        this.moduleArchive = null ;
  +        this.deploymentPlan = null;
  +        this.moduleStream = moduleStream;
  +        this.deploymentStream = deploymentStream;
  +        spool = true;
       }
   
       public void run() {
           try {
  +            if (spool) {
  +                if (moduleStream != null) {
  +                    moduleArchive = File.createTempFile("deployer", ".tmp");
  +                    copyTo(moduleArchive, moduleStream);
  +                }
  +                if (deploymentStream != null) {
  +                    deploymentPlan = File.createTempFile("deployer", ".tmp");
  +                    copyTo(deploymentPlan, deploymentStream);
  +                }
  +            }
               Set deployers = kernel.listGBeans(new ObjectName("geronimo.deployment:role=Deployer,*"));
               if (deployers.isEmpty()) {
                   fail("No deployer present in kernel");
  @@ -67,6 +96,28 @@
               complete("Completed");
           } catch (Exception e) {
               fail(e.getMessage());
  +        } finally {
  +            if (spool) {
  +                if (moduleArchive != null) {
  +                    moduleArchive.delete();
  +                }
  +                if (deploymentPlan != null) {
  +                    deploymentPlan.delete();
  +                }
  +            }
  +        }
  +    }
  +
  +    private void copyTo(File outfile, InputStream is) throws IOException {
  +        byte[] buffer = new byte[4096];
  +        int count;
  +        OutputStream os = new FileOutputStream(outfile);
  +        try {
  +            while ((count = is.read(buffer)) > 0) {
  +                os.write(buffer, 0, count);
  +            }
  +        } finally {
  +            os.close();
           }
       }
   }
  
  
  
  1.7       +9 -4      incubator-geronimo/modules/deployment/src/java/org/apache/geronimo/deployment/plugin/jmx/JMXDeploymentManager.java
  
  Index: JMXDeploymentManager.java
  ===================================================================
  RCS file: /home/cvs/incubator-geronimo/modules/deployment/src/java/org/apache/geronimo/deployment/plugin/jmx/JMXDeploymentManager.java,v
  retrieving revision 1.6
  retrieving revision 1.7
  diff -u -r1.6 -r1.7
  --- JMXDeploymentManager.java	24 Jun 2004 02:50:13 -0000	1.6
  +++ JMXDeploymentManager.java	6 Jul 2004 05:36:12 -0000	1.7
  @@ -39,11 +39,11 @@
   
   import org.apache.geronimo.deployment.plugin.TargetImpl;
   import org.apache.geronimo.deployment.plugin.TargetModuleIDImpl;
  +import org.apache.geronimo.deployment.plugin.local.DistributeCommand;
  +import org.apache.geronimo.deployment.plugin.local.RedeployCommand;
   import org.apache.geronimo.deployment.plugin.local.StartCommand;
   import org.apache.geronimo.deployment.plugin.local.StopCommand;
  -import org.apache.geronimo.deployment.plugin.local.DistributeCommand;
   import org.apache.geronimo.deployment.plugin.local.UndeployCommand;
  -import org.apache.geronimo.deployment.plugin.local.RedeployCommand;
   import org.apache.geronimo.kernel.Kernel;
   import org.apache.geronimo.kernel.KernelMBean;
   import org.apache.geronimo.kernel.config.ConfigurationInfo;
  @@ -161,7 +161,12 @@
       }
   
       public ProgressObject distribute(Target[] targetList, InputStream moduleArchive, InputStream deploymentPlan) {
  -        throw new UnsupportedOperationException();
  +        if (kernel == null) {
  +            throw new IllegalStateException("Disconnected");
  +        }
  +        DistributeCommand command = new DistributeCommand(kernel, targetList, moduleArchive, deploymentPlan);
  +        new Thread(command).start();
  +        return command;
       }
   
       public ProgressObject start(TargetModuleID[] moduleIDList) {