diff --git a/src/java/net/brutex/xservices/types/ArchiveResource.java b/src/java/net/brutex/xservices/types/ArchiveResource.java index 1d0f013..c8a8dbb 100644 --- a/src/java/net/brutex/xservices/types/ArchiveResource.java +++ b/src/java/net/brutex/xservices/types/ArchiveResource.java @@ -20,6 +20,7 @@ import java.io.File; import javax.xml.bind.annotation.XmlElement; import javax.xml.bind.annotation.XmlEnum; import javax.xml.bind.annotation.XmlType; +import net.brutex.xservices.util.BrutexNamespaces; import org.apache.tools.ant.Project; import org.apache.tools.ant.types.Resource; import org.apache.tools.ant.types.resources.TarResource; @@ -28,26 +29,68 @@ import org.apache.tools.tar.TarEntry; import org.apache.tools.zip.ZipEntry; /** - * + * Resource from archive declaration. + * + * Defines a resource within an archive. * @author Brian Rosenberger, bru@brutex.de */ -@XmlType(namespace = "http://ws.xservices.brutex.net") +@XmlType(namespace = BrutexNamespaces.WS_XSERVICES, name="ArchiveResourceType") public class ArchiveResource implements ResourceInterface { + /** + * Archive Type. + */ @XmlElement(defaultValue = "ZIP", nillable = false, required = true) public ArchiveType type = ArchiveType.ZIP; + + /** + * Archive file. + * + * Path and filename of the archive to use. + */ @XmlElement(nillable = false, required = true) public String archive; + + /** + * URI within the archive. + * + * This is usually a filename or a path/filename combination. Relative paths + * are based from the archive root. It depends on how the archive has been + * created wether or not it is possible to use relative paths, absolute + * paths are required otherwise. Uses "/" as separator. + */ @XmlElement(nillable = false, required = true) public String uri; - @XmlEnum(String.class) + /** + * Supported archive types. + */ + @XmlEnum(value=String.class) public enum ArchiveType { - ZIP, TAR, GZTAR + /** + * Zip archive type. + */ + ZIP, + + /** + * Tar archive type, without compression + */ + TAR, + + /** + * Tar archive type, with GZIP compression + */ + GZTAR } + /** + * Get Apache Ant Resource Type. + * + * @param p Ant project + * @return this ArchiveResource as Ant Resource + */ public Resource getAntResource(Project p) { Resource res = null; switch (type) { diff --git a/src/java/net/brutex/xservices/types/FileResource.java b/src/java/net/brutex/xservices/types/FileResource.java index 0248aac..21d888a 100644 --- a/src/java/net/brutex/xservices/types/FileResource.java +++ b/src/java/net/brutex/xservices/types/FileResource.java @@ -20,6 +20,7 @@ import java.io.File; import javax.xml.bind.annotation.XmlElement; import javax.xml.bind.annotation.XmlEnum; import javax.xml.bind.annotation.XmlRootElement; +import net.brutex.xservices.util.BrutexNamespaces; import org.apache.tools.ant.Project; import org.apache.tools.ant.types.Resource; import org.apache.tools.ant.types.resources.BZip2Resource; @@ -27,32 +28,83 @@ import org.apache.tools.ant.types.resources.GZipResource; import org.apache.tools.ant.types.resources.URLResource; /** + * File based resource declaration. * * @author Brian Rosenberger, bru@brutex.de */ -@XmlRootElement(namespace="http://ws.xservices.brutex.net") +@XmlRootElement(namespace=BrutexNamespaces.WS_XSERVICES, name="FileResourceType") public class FileResource implements ResourceInterface { + /** + * File resource type. + */ @XmlElement(defaultValue = "FILE", nillable = false, required = true) public Type type = Type.FILE; + + /** + * URI to file. + * + * Examples:
+ * c:/path/to/myfile.txt
+ * /usr/share/file
+ * http://server/path/file.zip
+ */ @XmlElement(nillable = false, required = true) public String uri; - @XmlEnum(String.class) + /** + * File resource type. + * + * Defines the wrapper around the source. + */ + @XmlEnum(value=String.class) public enum Type { - FILE, URL, GZIP, BZIP2 + /** + * Plain file from OS accessible file system. + */ + FILE, + + /** + * File from URL (http, https, ftp, ...) + */ + URL, + + /** + * File from file system with on-the-fly GZIP decompression + */ + GZIP, + + /** + * File from file system with on-the-fly BZIP2 decompression + */ + BZIP2 } + /** + * Creates a FileResource. + * + * @param type file resource type + * @param uri file resource uri + */ public FileResource(Type type, String uri) { this.type = type; this.uri = uri; } + /** + * Create an empty FileResource + */ public FileResource() { } + /** + * Get Apache Ant Resource type. + * + * @param p Ant project + * @return This FileResource as Ant Resource + */ public Resource getAntResource(Project p) { Resource res = null; switch (type) { diff --git a/src/java/net/brutex/xservices/types/FileSetResource.java b/src/java/net/brutex/xservices/types/FileSetResource.java index 1223863..cf0a657 100644 --- a/src/java/net/brutex/xservices/types/FileSetResource.java +++ b/src/java/net/brutex/xservices/types/FileSetResource.java @@ -13,7 +13,6 @@ * See the License for the specific language governing permissions and * limitations under the License. */ - package net.brutex.xservices.types; import java.io.File; @@ -27,31 +26,53 @@ import org.apache.tools.ant.types.TarFileSet; import org.apache.tools.ant.types.ZipFileSet; /** + * Set of files from various sources. * * @author Brian Rosenberger, bru@brutex.de */ -@XmlType(name="FileSetType", namespace="http://ws.xservices.brutex.net", - propOrder={"type", "source", "includes", "excludes", "casesensitive"}) +@XmlType(name = "FileSetType", namespace = "http://ws.xservices.brutex.net", +propOrder = {"type", "source", "includes", "excludes", "casesensitive"}) public class FileSetResource { - @XmlElement(name="FileSetType", required=true, nillable=false, defaultValue="FILES") + /** + * Type of FileSet + */ + @XmlElement(name = "FileSetType", required = true, nillable = false, defaultValue = "FILES") public FileSetType type = FileSetType.FILES; - - @XmlElement(name="source", required=true, nillable=false) + /** + * File set source. + * + * Depends on the file set type. This is either an archive file or a + * directory. + */ + @XmlElement(name = "source", required = true, nillable = false) public String source = ""; - - @XmlElement(name="includes", required=true, nillable=false, defaultValue="**/*") + /** + * Pattern of files to include. + * + */ + @XmlElement(name = "includes", required = true, nillable = false, defaultValue = "**/*") public String includes = ""; - - @XmlElement(name="excludes", required=false, nillable=true, defaultValue="") - public String excludes =""; - - @XmlElement(name="casesensitive", required=true, nillable=false, defaultValue="true") + /** + * Pattern of files to exclude. + */ + @XmlElement(name = "excludes", required = false, nillable = true, defaultValue = "") + public String excludes = ""; + /** + * Case sensitivity for include/ exclude patterns. + */ + @XmlElement(name = "casesensitive", required = true, nillable = false, defaultValue = "true") public boolean casesensitive = true; + /** + * Get Ant FileSet for this file set. + * + * @param p Ant project + * @return Ant FileSet for this file set. + */ public FileSet getAntFileSet(Project p) { FileSet set = null; - switch(type) { + switch (type) { case ZIP: ZipFileSet zset = new ZipFileSet(); zset.setSrc(new File(source)); @@ -81,9 +102,28 @@ public class FileSetResource { return set; } + /** + * File set types. + */ @XmlEnum - public enum FileSetType{ - FILES, ZIP, TAR, GZTAR - } + public enum FileSetType { + /** + * Set of files (this is based on a directory, so provide a path only + * as file set source). + */ + FILES, + /** + * Set of files inside a ZIP archive. + */ + ZIP, + /** + * Set of files inside a TAR archive (without compression). + */ + TAR, + /** + * Set of files inside a gzip compressed TAR archive. + */ + GZTAR + } } diff --git a/src/java/net/brutex/xservices/types/ResourceInterface.java b/src/java/net/brutex/xservices/types/ResourceInterface.java index caa5ab0..11f72a1 100644 --- a/src/java/net/brutex/xservices/types/ResourceInterface.java +++ b/src/java/net/brutex/xservices/types/ResourceInterface.java @@ -20,11 +20,18 @@ import org.apache.tools.ant.Project; import org.apache.tools.ant.types.Resource; /** + * Wrapper for Ant Resources. * * @author Brian Rosenberger, bru@brutex.de */ public interface ResourceInterface { + /** + * Get this resource as Ant Resource. + * + * @param p Ant project + * @return this resource as Ant Resource + */ Resource getAntResource(Project p); } diff --git a/src/java/net/brutex/xservices/types/ReturnCode.java b/src/java/net/brutex/xservices/types/ReturnCode.java index ac43298..cb3b398 100644 --- a/src/java/net/brutex/xservices/types/ReturnCode.java +++ b/src/java/net/brutex/xservices/types/ReturnCode.java @@ -18,23 +18,56 @@ package net.brutex.xservices.types; import javax.xml.bind.annotation.XmlElement; import javax.xml.bind.annotation.XmlType; +import net.brutex.xservices.util.BrutexNamespaces; /** * * @author Brian Rosenberger, bru@brutex.de */ -@XmlType(namespace="http://ws.xservices.brutex.net") +@XmlType(namespace=BrutexNamespaces.WS_XSERVICES, name="ReturnCodeType") public class ReturnCode { - @XmlElement(required=true) - public int returnCode; + /** + * Numeric return code. + * + * The numeric return code of the last operation on the underlying operation + * systen (OS). In general the return code indicates the failure or success + * of a command. Which value indicates success is dependent on the OS, most + * linux based systems use "0" for success. + */ + @XmlElement(required=true, nillable=false) + public int returnCode=0; - public String stdOut; - public String stdErr; + /** + * Standard Out as provided by the OS. + * + * The stdOut given by the last operation (if any). + */ + @XmlElement(name="stdOut", nillable=false) + public String stdOut=""; + /** + * The Standard Error as provided by the OS. + * + * The stdErr given by the last operation (if any). The presents of any + * value here ususally indicates that a failure has occured. + */ + @XmlElement(name="stdErr", nillable=false) + public String stdErr=""; + + /** + * Create a new ReturnCode default constructor. + */ public ReturnCode() { } + /** + * Create a new ReturnCode. + * + * @param returnCode return code integer value + * @param stdOut standard out string + * @param stdErr standard error string + */ public ReturnCode(int returnCode, String stdOut, String stdErr) { this.returnCode = returnCode; this.stdOut = stdOut; diff --git a/src/java/net/brutex/xservices/ws/ArchiveService.java b/src/java/net/brutex/xservices/ws/ArchiveService.java index 1562c5d..563459e 100644 --- a/src/java/net/brutex/xservices/ws/ArchiveService.java +++ b/src/java/net/brutex/xservices/ws/ArchiveService.java @@ -25,6 +25,7 @@ import net.brutex.xservices.types.ArchiveResource; import net.brutex.xservices.types.CompressionType; import net.brutex.xservices.types.FileResource; import net.brutex.xservices.types.ResourceInterface; +import net.brutex.xservices.types.ReturnCode; import net.brutex.xservices.util.RunTask; import net.brutex.xservices.util.UnRarTask; import org.apache.tools.ant.taskdefs.BUnzip2; @@ -61,13 +62,13 @@ public class ArchiveService { public static final String WS_PARAM_OVERWRITE= "overwrite"; @WebMethod(operationName = WS_OPERATION_BZIP2, action=WS_OPERATION_BZIP2) - public String bzip2(@WebParam(name = WS_PARAM_SOURCEFILE) FileResource src, + public ReturnCode bzip2(@WebParam(name = WS_PARAM_SOURCEFILE) FileResource src, @WebParam(name = WS_PARAM_DESTFILE) String file) { return bzip(src, new File(file)); } @WebMethod(operationName = WS_OPERATION_BZIP2_ARCHIVE, action=WS_OPERATION_BZIP2_ARCHIVE) - public String bzip2FromArchive(@WebParam(name = WS_PARAM_SOURCEARCHIVE) ArchiveResource src, + public ReturnCode bzip2FromArchive(@WebParam(name = WS_PARAM_SOURCEARCHIVE) ArchiveResource src, @WebParam(name = WS_PARAM_DESTFILE) String file) { return bzip(src, new File(file)); } @@ -184,7 +185,7 @@ public class ArchiveService { } @WebMethod(exclude = true) - private String bzip(ResourceInterface src, File dst) { + private ReturnCode bzip(ResourceInterface src, File dst) { if (dst.exists() && dst.isFile()) { dst.delete(); } @@ -195,7 +196,7 @@ public class ArchiveService { bzip.setDestfile(dst); Map result = runner.postTask(); - return "complete"; + return new ReturnCode(0,"complete",""); } @WebMethod(exclude = true)