Author: sagara Date: Thu Dec 22 10:36:02 2011 New Revision: 1222165 URL: http://svn.apache.org/viewvc?rev=1222165&view=rev Log: Added initial codes for AXIS2-5217.
Added: axis/axis2/java/core/trunk/modules/tool/simple-server-maven-plugin/ axis/axis2/java/core/trunk/modules/tool/simple-server-maven-plugin/pom.xml (with props) axis/axis2/java/core/trunk/modules/tool/simple-server-maven-plugin/src/ axis/axis2/java/core/trunk/modules/tool/simple-server-maven-plugin/src/main/ axis/axis2/java/core/trunk/modules/tool/simple-server-maven-plugin/src/main/java/ axis/axis2/java/core/trunk/modules/tool/simple-server-maven-plugin/src/main/java/org/ axis/axis2/java/core/trunk/modules/tool/simple-server-maven-plugin/src/main/java/org/apache/ axis/axis2/java/core/trunk/modules/tool/simple-server-maven-plugin/src/main/java/org/apache/axis2/ axis/axis2/java/core/trunk/modules/tool/simple-server-maven-plugin/src/main/java/org/apache/axis2/maven2/ axis/axis2/java/core/trunk/modules/tool/simple-server-maven-plugin/src/main/java/org/apache/axis2/maven2/server/ axis/axis2/java/core/trunk/modules/tool/simple-server-maven-plugin/src/main/java/org/apache/axis2/maven2/server/SimpleHttpServerMojo.java (with props) axis/axis2/java/core/trunk/modules/tool/simple-server-maven-plugin/src/main/java/org/apache/axis2/maven2/server/util/ axis/axis2/java/core/trunk/modules/tool/simple-server-maven-plugin/src/main/java/org/apache/axis2/maven2/server/util/Axis2Server.java (with props) axis/axis2/java/core/trunk/modules/tool/simple-server-maven-plugin/src/main/java/org/apache/axis2/maven2/server/util/Constants.java (with props) axis/axis2/java/core/trunk/modules/tool/simple-server-maven-plugin/src/main/java/org/apache/axis2/maven2/server/util/RepoHelper.java (with props) Added: axis/axis2/java/core/trunk/modules/tool/simple-server-maven-plugin/pom.xml URL: http://svn.apache.org/viewvc/axis/axis2/java/core/trunk/modules/tool/simple-server-maven-plugin/pom.xml?rev=1222165&view=auto ============================================================================== --- axis/axis2/java/core/trunk/modules/tool/simple-server-maven-plugin/pom.xml (added) +++ axis/axis2/java/core/trunk/modules/tool/simple-server-maven-plugin/pom.xml Thu Dec 22 10:36:02 2011 @@ -0,0 +1,78 @@ +<?xml version="1.0" encoding="UTF-8"?> + +<!-- ~ 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. --> + +<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" + xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd"> + <modelVersion>4.0.0</modelVersion> + <parent> + <groupId>org.apache.axis2</groupId> + <artifactId>axis2-parent</artifactId> + <version>1.7.0-SNAPSHOT</version> + <relativePath>../../parent/pom.xml</relativePath> + </parent> + <artifactId>simple-server-maven-plugin</artifactId> + <name>Apache Axis2 Simple HTTP server Maven Plugin</name> + <packaging>maven-plugin</packaging> + <description>The Axis2 Plugin for Maven that allows to run simple HTTP server.</description> + <url>http://axis.apache.org/axis2/java/core/</url> + <scm> + <connection>scm:svn:http://svn.apache.org/repos/asf/axis/axis2/java/core/trunk/modules/tool/simple-server-maven-plugin</connection> + <developerConnection>scm:svn:https://svn.apache.org/repos/asf/axis/axis2/java/core/trunk/modules/tool/simple-server-maven-plugin</developerConnection> + <url>http://svn.apache.org/viewvc/axis/axis2/java/core/trunk/modules/tool/simple-server-maven-plugin</url> + </scm> + <build> + <plugins> + <plugin> + <artifactId>maven-plugin-plugin</artifactId> + <configuration> + <goalPrefix>axis2</goalPrefix> + </configuration> + </plugin> + </plugins> + </build> + <dependencies> + <dependency> + <groupId>org.apache.maven</groupId> + <artifactId>maven-plugin-api</artifactId> + </dependency> + <dependency> + <groupId>org.apache.maven</groupId> + <artifactId>maven-plugin-descriptor</artifactId> + </dependency> + <dependency> + <groupId>org.codehaus.plexus</groupId> + <artifactId>plexus-classworlds</artifactId> + </dependency> + <dependency> + <groupId>org.apache.axis2</groupId> + <artifactId>axis2-kernel</artifactId> + <version>${project.version}</version> + </dependency> + <dependency> + <groupId>org.apache.axis2</groupId> + <artifactId>axis2-adb</artifactId> + <version>${project.version}</version> + </dependency> + <dependency> + <groupId>org.apache.axis2</groupId> + <artifactId>axis2-transport-http</artifactId> + <version>${project.version}</version> + </dependency> + <dependency> + <groupId>org.apache.axis2</groupId> + <artifactId>axis2-transport-local</artifactId> + <version>${project.version}</version> + </dependency> + </dependencies> +</project> Propchange: axis/axis2/java/core/trunk/modules/tool/simple-server-maven-plugin/pom.xml ------------------------------------------------------------------------------ svn:eol-style = native Added: axis/axis2/java/core/trunk/modules/tool/simple-server-maven-plugin/src/main/java/org/apache/axis2/maven2/server/SimpleHttpServerMojo.java URL: http://svn.apache.org/viewvc/axis/axis2/java/core/trunk/modules/tool/simple-server-maven-plugin/src/main/java/org/apache/axis2/maven2/server/SimpleHttpServerMojo.java?rev=1222165&view=auto ============================================================================== --- axis/axis2/java/core/trunk/modules/tool/simple-server-maven-plugin/src/main/java/org/apache/axis2/maven2/server/SimpleHttpServerMojo.java (added) +++ axis/axis2/java/core/trunk/modules/tool/simple-server-maven-plugin/src/main/java/org/apache/axis2/maven2/server/SimpleHttpServerMojo.java Thu Dec 22 10:36:02 2011 @@ -0,0 +1,210 @@ +/* + * Copyright 2004, 2009 The Apache Software Foundation. + * + * Licensed 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.axis2.maven2.server; + +import java.io.File; +import java.net.MalformedURLException; + +import org.apache.axis2.maven2.server.util.Axis2Server; +import org.apache.axis2.maven2.server.util.Constants; +import org.apache.axis2.maven2.server.util.RepoHelper; +import org.apache.maven.plugin.AbstractMojo; +import org.apache.maven.plugin.MojoExecutionException; +import org.apache.maven.plugin.descriptor.PluginDescriptor; +import org.codehaus.classworlds.ClassRealm; +import org.codehaus.classworlds.ClassWorld; +import org.codehaus.classworlds.DuplicateRealmException; + +/** + * Run simple Axis 2Server. + * + * @since 1.7.0 + * @goal run + * @execute phase="compile" // TODO - check this again. + * @requiresDependencyResolution runtime + */ +public class SimpleHttpServerMojo extends AbstractMojo { + + // configuration parameters. + /** + * The repository path. + * + * @parameter + */ + private String repoPath; + + /** + * Path to axis2.xml configuration file. + * + * @parameter + */ + private String confPath; + + /** + * This parameter indicate service type whether it's JAX-WS or not. + * + * @parameter default-value="false" + */ + private boolean jaxwsService; + + /** + * @parameter + */ + private String stdServiceSrcDir; + + /** + * @parameter + */ + private String jaxwsServiceSrcDir; + + /** + * @parameter + */ + private String moduleSrcDir; + + /** + * @parameter + */ + private String port; + + /* + * Maven project parameters + */ + + /** + * The plugin descriptor + * + * @parameter default-value="${descriptor}" + * @required + */ + private PluginDescriptor descriptor; + + /** + * Build directory of current project. + * + * @parameter default-value="${project.build.directory}" + * @required + * @readonly + */ + private String buildDir; + + /** + * Project version + * + * @parameter default-value="${project.version}" + * @required + * @readonly + */ + private String projectVersion; + + /** + * Project Id + * + * @parameter default-value="${project.artifactId}" + * @required + * @readonly + */ + private String projectId; + + private Axis2Server server; + private boolean fork; + + public RepoHelper getRepoHelper() { + RepoHelper repoHelper = new RepoHelper(repoPath); + if (stdServiceSrcDir != null) { + repoHelper.setStdServiceSrcDir(stdServiceSrcDir); + } + if (jaxwsServiceSrcDir != null) { + repoHelper.setJaxwsServiceSrcDir(jaxwsServiceSrcDir); + } + if (moduleSrcDir != null) { + repoHelper.setModuleSrcDir(moduleSrcDir); + } + if (jaxwsService) { + repoHelper.setJaxwsService(jaxwsService); + String serviceJarFile = buildDir + File.separator + projectId + "-" + projectVersion + + ".jar"; + repoHelper.setServiceJarLocation(serviceJarFile); + } + return repoHelper; + } + + public void execute() throws MojoExecutionException { + try { + getLog().info("repo path : " + repoPath); + getLog().info("conf path : " + confPath); + getRepoHelper().prepareRepostory(); + extendClassLoader(); + String serverPort = port == null ? Constants.DEFAULT_PORT : port; + server = Axis2Server.newInstance(repoPath, confPath, serverPort ); + if (fork) { + new Thread(new Runnable() { + public void run() { + getLog().info(" Starting Axis2 Simple HTTP Server..................... "); + server.startServer(); + getLog().info(" Axis2 Simple HTTP server satreted"); + waitForShutdown(); + } + }).start(); + } else { + server.startServer(); + waitForShutdown(); + } + } catch (Exception e) { + throw new MojoExecutionException("Failed to start AXIS2 HTTP server", e); + } + + } + + private void extendClassLoader() throws DuplicateRealmException, MalformedURLException { + ClassRealm realm = descriptor.getClassRealm(); + if (realm == null) { + ClassWorld world = new ClassWorld(); + realm = world.newRealm("maven.plugin." + getClass().getSimpleName(), Thread + .currentThread().getContextClassLoader()); + } + File cls = new File(buildDir + File.separator + Constants.DEFAULT_CLASSES_DIRECTORY); + realm.addConstituent(cls.toURL()); + Thread.currentThread().setContextClassLoader(realm.getClassLoader()); + } + + protected void waitForShutdown() { + final boolean[] shutdown = new boolean[] { false }; + Runtime.getRuntime().addShutdownHook(new Thread() { + public void run() { + synchronized (shutdown) { + shutdown[0] = true; + shutdown.notify(); + } + } + }); + + // Wait for any shutdown event + synchronized (shutdown) { + while (!shutdown[0]) { + try { + shutdown.wait(); + } catch (InterruptedException e) { + } + } + } + server.stopServer(); + getLog().info("Axis2 Simple HTTP server stoped "); + + } + +} Propchange: axis/axis2/java/core/trunk/modules/tool/simple-server-maven-plugin/src/main/java/org/apache/axis2/maven2/server/SimpleHttpServerMojo.java ------------------------------------------------------------------------------ svn:eol-style = native Added: axis/axis2/java/core/trunk/modules/tool/simple-server-maven-plugin/src/main/java/org/apache/axis2/maven2/server/util/Axis2Server.java URL: http://svn.apache.org/viewvc/axis/axis2/java/core/trunk/modules/tool/simple-server-maven-plugin/src/main/java/org/apache/axis2/maven2/server/util/Axis2Server.java?rev=1222165&view=auto ============================================================================== --- axis/axis2/java/core/trunk/modules/tool/simple-server-maven-plugin/src/main/java/org/apache/axis2/maven2/server/util/Axis2Server.java (added) +++ axis/axis2/java/core/trunk/modules/tool/simple-server-maven-plugin/src/main/java/org/apache/axis2/maven2/server/util/Axis2Server.java Thu Dec 22 10:36:02 2011 @@ -0,0 +1,98 @@ +/* + * Copyright 2004, 2009 The Apache Software Foundation. + * + * Licensed 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.axis2.maven2.server.util; + +import org.apache.axis2.AxisFault; +import org.apache.axis2.description.Parameter; +import org.apache.axis2.description.TransportInDescription; +import org.apache.axis2.transport.SimpleAxis2Server; + +/** + * The Class Axis2Server. + * + * @since 1.7.0 + */ +public class Axis2Server extends SimpleAxis2Server { + + private static Axis2Server server; + + /** + * Create new instance of Axis2Server. + * + * @param repoPath the repo path + * @param confPath the conf path + * @param port the port + * @return the axis2 server + */ + public static Axis2Server newInstance(String repoPath, String confPath, String port) { + try { + if (repoPath == null) { + repoPath = Constants.DEFAULT_REPO_LOCATION; + } + server = new Axis2Server(repoPath, confPath); + if (confPath == null) { + /** + * By default Axis2 HTTP transport listen on 6060 ,if user does + * not specify any port use 8080 as HTTP port. + */ + Parameter parameter = new Parameter(); + parameter.setName(Constants.DEFAULT_PORT_PARAM); + parameter.setValue(port); + ((TransportInDescription) server.getConfigurationContext().getAxisConfiguration() + .getTransportIn("http")).addParameter(parameter); + } + } catch (Exception e) { + e.printStackTrace(); + } + return server; + } + + /** + * Instantiates a new axis2 server. + * + * @param repoPath the repo path + * @param confPath the conf path + * @throws Exception the exception + */ + private Axis2Server(String repoPath, String confPath) throws Exception { + super(repoPath, confPath); + server = null; + } + + /** + * Start server. + */ + public void startServer() { + try { + server.start(); + } catch (AxisFault e) { + e.printStackTrace(); + } + } + + /** + * Stop server. + */ + public void stopServer() { + try { + server.stop(); + } catch (AxisFault e) { + e.printStackTrace(); + } + } + +} Propchange: axis/axis2/java/core/trunk/modules/tool/simple-server-maven-plugin/src/main/java/org/apache/axis2/maven2/server/util/Axis2Server.java ------------------------------------------------------------------------------ svn:eol-style = native Added: axis/axis2/java/core/trunk/modules/tool/simple-server-maven-plugin/src/main/java/org/apache/axis2/maven2/server/util/Constants.java URL: http://svn.apache.org/viewvc/axis/axis2/java/core/trunk/modules/tool/simple-server-maven-plugin/src/main/java/org/apache/axis2/maven2/server/util/Constants.java?rev=1222165&view=auto ============================================================================== --- axis/axis2/java/core/trunk/modules/tool/simple-server-maven-plugin/src/main/java/org/apache/axis2/maven2/server/util/Constants.java (added) +++ axis/axis2/java/core/trunk/modules/tool/simple-server-maven-plugin/src/main/java/org/apache/axis2/maven2/server/util/Constants.java Thu Dec 22 10:36:02 2011 @@ -0,0 +1,59 @@ +/* + * Copyright 2004, 2009 The Apache Software Foundation. + * + * Licensed 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.axis2.maven2.server.util; + +/** + * The Class Constants. + * + * @since 1.7.0 + */ +public class Constants { + + /** The Constant DEFAULT_REPO_LOCATION. */ + public static final String DEFAULT_REPO_LOCATION = "target/work/repository"; + + /** The Constant DEFAULT_STD_SERVICE_DIRECTOY. */ + public static final String DEFAULT_STD_SERVICE_DIRECTORY = "services"; + + /** The Constant DEFAULT_JAX_WS_SERVICE_DIRECTOY. */ + public static final String DEFAULT_JAX_WS_SERVICE_DIRECTORY = "servicejars"; + + /** The Constant DEFAULT_MODULE_REPO_DIRECTOY. */ + public static final String DEFAULT_MODULE_REPO_DIRECTORY = "modules"; + + /** The Constant DEFAULT_STD_SERVICE_SRC_DIRECTOY. */ + public static final String DEFAULT_STD_SERVICE_SRC_DIRECTORY = "src/main/resources/services"; + + /** The Constant DEFAULT_JAX_WS_SERVICE_SRC_DIRECTOY. */ + public static final String DEFAULT_JAX_WS_SERVICE_SRC_DIRECTORY = "src/main/resources/serviceJars"; + + /** The Constant DEFAULT_MODULE_SRC_DIRECTOY. */ + public static final String DEFAULT_MODULE_SRC_DIRECTORY = "src/main/resources/modules"; + + /** The Constant DEFAULT_WEB_APP_DIRECTOY. */ + public static final String DEFAULT_WEB_APP_DIRECTORY = "src/main/webapp/WEB-INF"; + + /** The Constant DEFAULT_CLASSES_DIRECTOY. */ + public static final String DEFAULT_CLASSES_DIRECTORY = "classes"; + + /** The Constant DEFAULT_PORT_PARAM. */ + public static final String DEFAULT_PORT_PARAM = "port"; + + /** The Constant DEFAULT_PORT. */ + public static final String DEFAULT_PORT = "8080"; + +} Propchange: axis/axis2/java/core/trunk/modules/tool/simple-server-maven-plugin/src/main/java/org/apache/axis2/maven2/server/util/Constants.java ------------------------------------------------------------------------------ svn:eol-style = native Added: axis/axis2/java/core/trunk/modules/tool/simple-server-maven-plugin/src/main/java/org/apache/axis2/maven2/server/util/RepoHelper.java URL: http://svn.apache.org/viewvc/axis/axis2/java/core/trunk/modules/tool/simple-server-maven-plugin/src/main/java/org/apache/axis2/maven2/server/util/RepoHelper.java?rev=1222165&view=auto ============================================================================== --- axis/axis2/java/core/trunk/modules/tool/simple-server-maven-plugin/src/main/java/org/apache/axis2/maven2/server/util/RepoHelper.java (added) +++ axis/axis2/java/core/trunk/modules/tool/simple-server-maven-plugin/src/main/java/org/apache/axis2/maven2/server/util/RepoHelper.java Thu Dec 22 10:36:02 2011 @@ -0,0 +1,346 @@ +/* + * Copyright 2004, 2009 The Apache Software Foundation. + * + * Licensed 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.axis2.maven2.server.util; + +import java.io.File; +import java.io.FileInputStream; +import java.io.FileOutputStream; +import java.io.IOException; +import java.io.InputStream; +import java.io.OutputStream; + +/** + * The Class RepoHelper is utility that deal with repo creation. + * + * @since 1.7.0 + */ +public class RepoHelper { + + /** The repo location. */ + private String repoLocation; + + /** The service jar location. */ + private String serviceJarLocation; + + /** The std service dir. */ + private String stdServiceDir; + + /** The jaxws service dir. */ + private String jaxwsServiceDir; + + /** The module dir. */ + private String moduleDir; + + /** The std service src dir. */ + private String stdServiceSrcDir; + + /** The jaxws service src dir. */ + private String jaxwsServiceSrcDir; + + /** The module src dir. */ + private String moduleSrcDir; + + /** The jaxws service. */ + private boolean jaxwsService = false; + + /** + * Gets the module src dir. + * + * @return the module src dir + */ + public String getModuleSrcDir() { + return moduleSrcDir; + } + + /** + * Sets the module src dir. + * + * @param moduleSrcDir + * the new module src dir + */ + public void setModuleSrcDir(String moduleSrcDir) { + this.moduleSrcDir = moduleSrcDir; + } + + /** + * Gets the repo location. + * + * @return the repo location + */ + public String getRepoLocation() { + return repoLocation; + } + + /** + * Sets the repo location. + * + * @param repoLocation + * the new repo location + */ + public void setRepoLocation(String repoLocation) { + this.repoLocation = repoLocation; + } + + /** + * Gets the std service src dir. + * + * @return the std service src dir + */ + public String getStdServiceSrcDir() { + return stdServiceSrcDir; + } + + /** + * Sets the std service src dir. + * + * @param stdServiceSrcDir + * the new std service src dir + */ + public void setStdServiceSrcDir(String stdServiceSrcDir) { + this.stdServiceSrcDir = stdServiceSrcDir; + } + + /** + * Gets the jaxws service src dir. + * + * @return the jaxws service src dir + */ + public String getJaxwsServiceSrcDir() { + return jaxwsServiceSrcDir; + } + + /** + * Sets the jaxws service src dir. + * + * @param jaxwsServiceSrcDir + * the new jaxws service src dir + */ + public void setJaxwsServiceSrcDir(String jaxwsServiceSrcDir) { + this.jaxwsServiceSrcDir = jaxwsServiceSrcDir; + } + + /** + * Checks if is jaxws service. + * + * @return true, if is jaxws service + */ + public boolean isJaxwsService() { + return jaxwsService; + } + + /** + * Sets the jaxws service. + * + * @param jaxwsService + * the new jaxws service + */ + public void setJaxwsService(boolean jaxwsService) { + this.jaxwsService = jaxwsService; + } + + /** + * Gets the service jar location. + * + * @return the service jar location + */ + public String getServiceJarLocation() { + return serviceJarLocation; + } + + /** + * Sets the service jar location. + * + * @param serviceJarLocation + * the new service jar location + */ + public void setServiceJarLocation(String serviceJarLocation) { + this.serviceJarLocation = serviceJarLocation; + } + + /** + * Instantiates a new repo helper. + * + * @param repoLocation + * the repo location + */ + public RepoHelper(String repoLocation) { + this.repoLocation = repoLocation == null ? Constants.DEFAULT_REPO_LOCATION : repoLocation; + initialize(); + + } + + /** + * Prepare repostory. + * + * @throws IOException + * Signals that an I/O exception has occurred. + */ + public void prepareRepostory() throws IOException { + createDirectoryStructure(); + copyResourcesForService(); + + } + + /** + * Initialize. + */ + private void initialize() { + this.stdServiceDir = repoLocation + File.separator + + Constants.DEFAULT_STD_SERVICE_DIRECTORY; + this.jaxwsServiceDir = repoLocation + File.separator + + Constants.DEFAULT_JAX_WS_SERVICE_DIRECTORY; + this.moduleDir = repoLocation + File.separator + Constants.DEFAULT_MODULE_REPO_DIRECTORY; + this.stdServiceSrcDir = Constants.DEFAULT_STD_SERVICE_SRC_DIRECTORY; + this.jaxwsServiceSrcDir = Constants.DEFAULT_JAX_WS_SERVICE_SRC_DIRECTORY; + } + + /** + * Copy resources for service. + * + * @throws IOException + * Signals that an I/O exception has occurred. + */ + private void copyResourcesForService() throws IOException { + if (isJaxwsService()) { + copyJaxwsServices(); + } else { + copyStdServices(); + } + copyModules(); + } + + /** + * Copy modules. + * + * @throws IOException + * Signals that an I/O exception has occurred. + */ + private void copyModules() throws IOException { + if (moduleSrcDir == null) { + return; + } + File modsrcFile = new File(moduleSrcDir); + File moddisFile = new File(moduleDir); + if (modsrcFile.exists()) { + copyDirectory(modsrcFile, moddisFile); + } + } + + /** + * Copy jaxws services. + * + * @throws IOException + * Signals that an I/O exception has occurred. + */ + private void copyJaxwsServices() throws IOException { + /* + * copy content of JAX-WS service directory If the JAX-WS service + * directory mentioned copy content else copy + * target/articaft-version.jar file to the repo. + */ + System.out.println("ZZZZZZZZZZZZZZZZZZZZ = " + serviceJarLocation + ":" + + jaxwsServiceSrcDir); + File srcFile; + File disFile = new File(jaxwsServiceDir + + serviceJarLocation.substring(serviceJarLocation.lastIndexOf(File.separator))); + if (jaxwsServiceSrcDir != null) { + /* + * TODO - change this + */ + srcFile = new File(serviceJarLocation); + } else { + srcFile = new File(jaxwsServiceSrcDir); + } + + if (srcFile.exists()) { + copyDirectory(srcFile, disFile); + } + } + + /** + * Copy std services. + * + * @throws IOException + * Signals that an I/O exception has occurred. + */ + private void copyStdServices() throws IOException { + // copy content of std service directory + if (stdServiceSrcDir == null) { + return; + } + File srcFile = new File(stdServiceSrcDir); + File disFile = new File(stdServiceDir); + if (srcFile.exists()) { + copyDirectory(srcFile, disFile); + } + } + + /** + * Creates the directory structure. + */ + private void createDirectoryStructure() { + // Create one directory + File stdServiceFile = new File(stdServiceDir); + File jaxwsServiceFile = new File(jaxwsServiceDir); + File moduleFile = new File(moduleDir); + boolean success = stdServiceFile.mkdirs(); + success = jaxwsServiceFile.mkdirs(); + success = moduleFile.mkdirs(); + if (success) { + System.out.println("Service directories created"); + } + } + + /** + * Copy directory. + * + * @param sourceLocation + * the source location + * @param targetLocation + * the target location + * @throws IOException + * Signals that an I/O exception has occurred. + */ + public static void copyDirectory(File sourceLocation, File targetLocation) throws IOException { + + if (sourceLocation.isDirectory()) { + if (!targetLocation.exists()) { + targetLocation.mkdir(); + } + + String[] children = sourceLocation.list(); + for (int i = 0; i < children.length; i++) { + copyDirectory(new File(sourceLocation, children[i]), new File(targetLocation, + children[i])); + } + } else { + + InputStream in = new FileInputStream(sourceLocation); + OutputStream out = new FileOutputStream(targetLocation); + + // Copy the bits from instream to outstream + byte[] buf = new byte[1024]; + int len; + while ((len = in.read(buf)) > 0) { + out.write(buf, 0, len); + } + in.close(); + out.close(); + } + } + +} Propchange: axis/axis2/java/core/trunk/modules/tool/simple-server-maven-plugin/src/main/java/org/apache/axis2/maven2/server/util/RepoHelper.java ------------------------------------------------------------------------------ svn:eol-style = native