| /* |
| * Licensed to the Apache Software Foundation (ASF) under one or more |
| * contributor license agreements. See the NOTICE file distributed with |
| * this work for additional information regarding copyright ownership. |
| * The ASF licenses this file to You under the Apache License, Version 2.0 |
| * (the "License"); you may not use this file except in compliance with |
| * the License. You may obtain a copy of the License at |
| * |
| * http://www.apache.org/licenses/LICENSE-2.0 |
| * |
| * Unless required by applicable law or agreed to in writing, software |
| * distributed under the License is distributed on an "AS IS" BASIS, |
| * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. |
| * See the License for the specific language governing permissions and |
| * limitations under the License. |
| */ |
| package org.apache.servicemix.maven.plugin.jbi; |
| |
| import java.io.File; |
| |
| import javax.jbi.JBIException; |
| |
| import org.apache.maven.plugin.MojoExecutionException; |
| import org.apache.maven.plugin.MojoFailureException; |
| import org.apache.servicemix.jbi.container.JBIContainer; |
| import org.codehaus.plexus.util.FileUtils; |
| |
| /** |
| * Starts a ServiceMix JBI container and them uses the deploy project MOJO to |
| * push the current project and dependencies to it |
| * |
| * @author <a href="pdodds@apache.org">Philip Dodds</a> |
| * @version $Id: GenerateComponentDescriptorMojo 314956 2005-10-12 16:27:15Z |
| * brett $ |
| * @goal servicemix |
| * @requiresDependencyResolution runtime |
| * @description installs the project (and all dependencies) to a local |
| * ServiceMix instance |
| */ |
| public class ServiceMixMojo extends JbiProjectDeployerMojo { |
| |
| private JBIContainer jbiContainer; |
| |
| /** |
| * @parameter default-value="${project.build.directory}/servicemix/install" |
| */ |
| private String installDirectory; |
| |
| /** |
| * @parameter default-value="${project.build.directory}/servicemix/deploy" |
| */ |
| private String deploymentDirectory; |
| |
| /** |
| * @parameter default-value="${project.build.directory}/servicemix/rootDir" |
| */ |
| private String rootDirectory; |
| |
| /** |
| * @parameter default-value="true" |
| */ |
| private boolean cleanStart; |
| |
| public void execute() throws MojoExecutionException, MojoFailureException { |
| |
| try { |
| |
| if (cleanStart) { |
| getLog().info( |
| "Cleaning ServiceMix root directory [" + rootDirectory |
| + "]"); |
| File rootDir = new File(rootDirectory); |
| FileUtils.deleteDirectory(rootDir); |
| rootDir.mkdirs(); |
| } |
| |
| startServiceMix(); |
| deployProject(); |
| |
| getLog().info("Project deployed"); |
| |
| while (true) { |
| Thread.sleep(1000); |
| } |
| } catch (Exception e) { |
| stopServiceMix(); |
| throw new MojoExecutionException( |
| "Apache ServiceMix was unable to deploy project", e); |
| } |
| |
| } |
| |
| private void stopServiceMix() { |
| getLog().info("Shutting down Apache ServiceMix"); |
| if (jbiContainer != null) { |
| try { |
| jbiContainer.shutDown(); |
| } catch (JBIException e) { |
| getLog().warn(e); |
| } |
| } |
| } |
| |
| private void startServiceMix() throws MojoExecutionException { |
| try { |
| getLog().info("Starting Apache ServiceMix"); |
| jbiContainer = new JBIContainer(); |
| jbiContainer.setRmiPort(Integer.parseInt(port)); |
| jbiContainer.setCreateMBeanServer(true); |
| jbiContainer.setInstallationDirPath(installDirectory); |
| jbiContainer.setDeploymentDirPath(deploymentDirectory); |
| jbiContainer.setRootDir(rootDirectory); |
| jbiContainer.init(); |
| jbiContainer.start(); |
| } catch (JBIException e) { |
| throw new MojoExecutionException( |
| "Unable to start the JBI container", e); |
| } |
| } |
| } |