Home » geronimo-2.2-source-release » org.apache.geronimo.deployment.plugin.local » [javadoc | source]

    1   /**
    2    *  Licensed to the Apache Software Foundation (ASF) under one or more
    3    *  contributor license agreements.  See the NOTICE file distributed with
    4    *  this work for additional information regarding copyright ownership.
    5    *  The ASF licenses this file to You under the Apache License, Version 2.0
    6    *  (the "License"); you may not use this file except in compliance with
    7    *  the License.  You may obtain a copy of the License at
    8    *
    9    *     http://www.apache.org/licenses/LICENSE-2.0
   10    *
   11    *  Unless required by applicable law or agreed to in writing, software
   12    *  distributed under the License is distributed on an "AS IS" BASIS,
   13    *  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
   14    *  See the License for the specific language governing permissions and
   15    *  limitations under the License.
   16    */
   17   package org.apache.geronimo.deployment.plugin.local;
   18   
   19   import java.net.URI;
   20   import javax.enterprise.deploy.shared.CommandType;
   21   import javax.enterprise.deploy.spi.TargetModuleID;
   22   
   23   import org.apache.geronimo.deployment.plugin.TargetModuleIDImpl;
   24   import org.apache.geronimo.kernel.InternalKernelException;
   25   import org.apache.geronimo.kernel.Kernel;
   26   import org.apache.geronimo.kernel.config.ConfigurationManager;
   27   import org.apache.geronimo.kernel.config.ConfigurationUtil;
   28   import org.apache.geronimo.kernel.config.NoSuchConfigException;
   29   import org.apache.geronimo.kernel.repository.Artifact;
   30   
   31   /**
   32    * @version $Rev: 689884 $ $Date: 2008-08-28 09:42:47 -0700 (Thu, 28 Aug 2008) $
   33    */
   34   public class UndeployCommand extends CommandSupport {
   35       private static final String[] UNINSTALL_SIG = {URI.class.getName()};
   36       private final Kernel kernel;
   37       private final TargetModuleID[] modules;
   38   
   39       public UndeployCommand(Kernel kernel, TargetModuleID modules[]) {
   40           super(CommandType.UNDEPLOY);
   41           this.kernel = kernel;
   42           this.modules = modules;
   43       }
   44   
   45       public void run() {
   46           try {
   47               ConfigurationManager configurationManager = ConfigurationUtil.getConfigurationManager(kernel);
   48               try {
   49                   for (int i = 0; i < modules.length; i++) {
   50                       TargetModuleIDImpl module = (TargetModuleIDImpl) modules[i];
   51   
   52                       Artifact moduleID = Artifact.create(module.getModuleID());
   53                       try {
   54                       	if(!configurationManager.isOnline()) {
   55                       		//If an offline undeploy, need to load the configuration first, so that stopConfiguration()
   56                       		//can resolve the configuration and successfully set load=false in attribute manager, otherwise
   57                       		//starting the server will fail attempting to start an config that does not exist.
   58                       		configurationManager.loadConfiguration(moduleID);
   59                       	}
   60                       	
   61                           configurationManager.stopConfiguration(moduleID);
   62   
   63   
   64                           configurationManager.unloadConfiguration(moduleID);
   65                           updateStatus("Module " + moduleID + " unloaded.");
   66                       } catch (InternalKernelException e) {
   67                           // this is cause by the kernel being already shutdown
   68                       } catch (NoSuchConfigException e) {
   69                           // module was already unloaded - just continue
   70                       }
   71   
   72                       try {
   73                           configurationManager.uninstallConfiguration(moduleID);
   74                           updateStatus("Module " + moduleID + " uninstalled.");
   75                           addModule(module);
   76                       } catch (NoSuchConfigException e) {
   77                           // module was already undeployed - just continue
   78                       }
   79                   }
   80               } finally {
   81                   ConfigurationUtil.releaseConfigurationManager(kernel, configurationManager);
   82               }
   83   
   84               //todo: this will probably never happen because the command line args are compared to actual modules
   85               if (getModuleCount() < modules.length) {
   86                   updateStatus("Some of the modules to undeploy were not previously deployed.  This is not treated as an error.");
   87               }
   88               complete("Completed");
   89           } catch (Throwable e) {
   90               doFail(e);
   91           }
   92       }
   93   }

Home » geronimo-2.2-source-release » org.apache.geronimo.deployment.plugin.local » [javadoc | source]