org.apache.axis2.maven2.server.util.RepoHelper Maven / Gradle / Ivy
Go to download
Show more of this group Show more artifacts with this name
Show all versions of simple-server-maven-plugin Show documentation
Show all versions of simple-server-maven-plugin Show documentation
The Axis2 Plugin for Maven that allows to run simple HTTP server.
/*
* 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;
import org.apache.maven.plugin.logging.Log;
import static org.apache.axis2.maven2.server.util.Constants.DEFAULT_REPO_LOCATION;
import static org.apache.axis2.maven2.server.util.Constants.DEFAULT_STD_SERVICE_DIRECTORY;
import static org.apache.axis2.maven2.server.util.Constants.DEFAULT_JAX_WS_SERVICE_DIRECTORY;
import static org.apache.axis2.maven2.server.util.Constants.DEFAULT_MODULE_REPO_DIRECTORY;
import static org.apache.axis2.maven2.server.util.Constants.DEFAULT_JAX_WS_SERVICE_SRC_DIRECTORY;
import static org.apache.axis2.maven2.server.util.Constants.DEFAULT_STD_SERVICE_SRC_DIRECTORY;
import static org.apache.axis2.maven2.server.util.Constants.DEFAULT_CONF_DIR;
import static org.apache.axis2.maven2.server.util.Constants.DEFAULT_CONF_FILE_NAME;
import static org.apache.axis2.maven2.server.util.Constants.DEFAULT_CONF_SRC_DIR;
import static org.apache.axis2.maven2.server.util.Constants.DEFAULT_MODULE_SRC_DIRECTORY;
/**
* 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;
private int dataBufferSize;
private Log log;
public int getDataBufferSize() {
return dataBufferSize;
}
public void setDataBufferSize(int dataBufferSize) {
this.dataBufferSize = dataBufferSize;
}
/**
* 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
* @param log
*/
public RepoHelper(String repoLocation, Log log) {
this.repoLocation = repoLocation == null ? DEFAULT_REPO_LOCATION : repoLocation;
this.log = log;
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
+ DEFAULT_STD_SERVICE_DIRECTORY;
this.jaxwsServiceDir = repoLocation + File.separator
+ DEFAULT_JAX_WS_SERVICE_DIRECTORY;
this.moduleDir = repoLocation + File.separator + DEFAULT_MODULE_REPO_DIRECTORY;
this.stdServiceSrcDir = DEFAULT_STD_SERVICE_SRC_DIRECTORY;
this.jaxwsServiceSrcDir = DEFAULT_JAX_WS_SERVICE_SRC_DIRECTORY;
this.moduleSrcDir = DEFAULT_MODULE_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();
copyConfFile();
}
/**
* 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, getDataBufferSize());
}
}
/**
* 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.
*/
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, getDataBufferSize());
}
}
/**
* 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, getDataBufferSize());
}
}
/**
* 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);
File confDir = new File(repoLocation+ File.separator+ DEFAULT_CONF_DIR);
boolean success = stdServiceFile.mkdirs();
success = jaxwsServiceFile.mkdirs();
success = moduleFile.mkdirs();
success = confDir.mkdir();
if (success) {
log.info("Service directories created");
}
}
/**
* Copy directory.
*
* @param sourceLocation
* the source location
* @param targetLocation
* the target location
* @param bufferSize
* @throws IOException
* Signals that an I/O exception has occurred.
*/
public static void copyDirectory(File sourceLocation, File targetLocation, int bufferSize) 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]), bufferSize);
}
} else {
InputStream in = new FileInputStream(sourceLocation);
OutputStream out = new FileOutputStream(targetLocation);
// Copy the bits from instream to outstream
byte[] buf = new byte[bufferSize];
int len;
while ((len = in.read(buf)) > 0) {
out.write(buf, 0, len);
}
in.close();
out.close();
}
}
private void copyConfFile() throws IOException {
// TODO At the moment it assume axis2.xml available on
// top level of the resources directory but this should
// find axis2.file any where on resource directory.
File srcFile = new File(DEFAULT_CONF_SRC_DIR + File.separator + DEFAULT_CONF_FILE_NAME);
File desFile = new File(repoLocation + File.separator + DEFAULT_CONF_DIR + File.separator + DEFAULT_CONF_FILE_NAME);
if(srcFile.exists()){
copyDirectory(srcFile, desFile, getDataBufferSize());
}
}
}
© 2015 - 2024 Weber Informatics LLC | Privacy Policy