/xservices/trunk/src/java/net/brutex/xservices/types/AntProperty.java |
---|
0,0 → 1,75 |
/* |
* Copyright 2010 Brian Rosenberger (Brutex Network) |
* |
* 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 net.brutex.xservices.types; |
import java.util.ArrayList; |
import java.util.List; |
import java.util.Map; |
import javax.xml.bind.annotation.XmlElement; |
import javax.xml.bind.annotation.XmlRootElement; |
/** |
* Generic key/ value pairs. |
* |
* @author Brian Rosenberger |
*/ |
@XmlRootElement |
public class AntProperty { |
/** |
* Key of the entry. |
*/ |
@XmlElement(required=true) |
public String name =""; |
/** |
* Value of the entry. |
*/ |
@XmlElement(required=true) |
public String value=""; |
/** |
* Converts a Map<String, String> into a list of |
* AntProperties. |
* @param map The map to convert |
* @return A list of key/value pairs |
*/ |
public static List<AntProperty> createAntPropertyList(Map<String, String> map) { |
List<AntProperty> list = new ArrayList<AntProperty>(); |
for(Map.Entry<String, String> e : map.entrySet()) { |
list.add(new AntProperty(e.getKey(), e.getValue())); |
} |
return list; |
} |
/** |
* Creates a new AntProperty. |
* @param name |
* @param value |
*/ |
public AntProperty(String name, String value) { |
this.name = name; |
this.value = value; |
} |
/** |
* Creates a new AntProperty. |
*/ |
public AntProperty() { |
} |
} |
/xservices/trunk/src/java/net/brutex/xservices/types/MailMimeType.java |
---|
0,0 → 1,54 |
/* |
* Copyright 2010 Brian Rosenberger (Brutex Network) |
* |
* 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 net.brutex.xservices.types; |
import javax.xml.bind.annotation.XmlEnum; |
import javax.xml.bind.annotation.XmlEnumValue; |
/** |
* MIME types for email messages. |
* This type restricts the mime types to be used within the |
* email body. |
* |
* @author Brian Rosenberger, bru@brutex.de |
*/ |
@XmlEnum(value = String.class) |
public enum MailMimeType { |
/** |
* Plain text. |
*/ |
@XmlEnumValue("text/plain") |
PLAIN("text/plain"), |
/** |
* HTML |
*/ |
@XmlEnumValue("text/html") |
HTML("text/html"); |
private String value; |
MailMimeType(String value) { |
this.value = value; |
} |
/** |
* Return the value of the enum. |
* @return String representation of the mime type |
*/ |
public String value() { |
return value; |
} |
} |
/xservices/trunk/src/java/net/brutex/xservices/types/HostConnection.java |
---|
0,0 → 1,44 |
/* |
* Copyright 2010 Brian Rosenberger (Brutex Network) |
* |
* 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 net.brutex.xservices.types; |
import javax.xml.bind.annotation.XmlElement; |
import javax.xml.bind.annotation.XmlType; |
/** |
* |
* @author Brian Rosenberger, bru@brutex.de |
*/ |
@XmlType(name="connection") |
public class HostConnection { |
public HostConnection() { |
} |
@XmlElement(name="hostname", required=false, nillable=false) |
public String hostname; |
@XmlElement(name="port", required=false, nillable=false) |
public int port; |
@XmlElement(name="user", required=false, nillable=false) |
public String user; |
@XmlElement(name="password", required=false, nillable=false) |
public String password; |
} |
/xservices/trunk/src/java/net/brutex/xservices/types/ReturnCode.java |
---|
0,0 → 1,82 |
/* |
* Copyright 2010 Brian Rosenberger (Brutex Network) |
* |
* 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 net.brutex.xservices.types; |
import java.util.List; |
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=BrutexNamespaces.WS_XSERVICES, name="ReturnCodeType") |
public class 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; |
/** |
* 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=""; |
@XmlElement(name="propertyList", nillable=true) |
public List<AntProperty> property = null; |
/** |
* 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, List<AntProperty> props) { |
this.returnCode = returnCode; |
this.stdOut = stdOut; |
this.stdErr = stdErr; |
this.property = props; |
} |
} |
/xservices/trunk/src/java/net/brutex/xservices/types/FileSetResource.java |
---|
0,0 → 1,129 |
/* |
* Copyright 2010 Brian Rosenberger (Brutex Network) |
* |
* 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 net.brutex.xservices.types; |
import java.io.File; |
import javax.xml.bind.annotation.XmlElement; |
import javax.xml.bind.annotation.XmlEnum; |
import javax.xml.bind.annotation.XmlType; |
import org.apache.tools.ant.Project; |
import org.apache.tools.ant.types.FileSet; |
import org.apache.tools.ant.types.Resource; |
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"}) |
public class FileSetResource { |
/** |
* Type of FileSet |
*/ |
@XmlElement(name = "FileSetType", required = true, nillable = false, defaultValue = "FILES") |
public FileSetType type = FileSetType.FILES; |
/** |
* 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 = ""; |
/** |
* Pattern of files to include. |
* |
*/ |
@XmlElement(name = "includes", required = true, nillable = false, defaultValue = "**/*") |
public String includes = ""; |
/** |
* 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) { |
case ZIP: |
ZipFileSet zset = new ZipFileSet(); |
zset.setSrc(new File(source)); |
zset.setEncoding(System.getProperty("file.encoding")); |
set = zset; |
break; |
case TAR: |
TarFileSet tset = new TarFileSet(); |
tset.setSrc(new File(source)); |
set = tset; |
break; |
case GZTAR: |
Resource res = new FileResource(FileResource.Type.GZIP, source).getAntResource(p); |
TarFileSet gzset = new TarFileSet(); |
gzset.setSrcResource(res); |
set = gzset; |
break; |
default: //FILES |
set = new FileSet(); |
set.setDir(new File(source)); |
} |
set.setProject(p); |
set.setIncludes(includes); |
set.setExcludes(excludes); |
set.setCaseSensitive(casesensitive); |
return set; |
} |
/** |
* File set types. |
*/ |
@XmlEnum |
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 |
} |
} |
/xservices/trunk/src/java/net/brutex/xservices/types/FileResource.java |
---|
0,0 → 1,135 |
/* |
* Copyright 2010 Brian Rosenberger (Brutex Network) |
* |
* 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 net.brutex.xservices.types; |
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; |
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=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:<br> |
* <code>c:/path/to/myfile.txt<br> |
* /usr/share/file<br> |
* http://server/path/file.zip</code> |
*/ |
@XmlElement(nillable = false, required = true) |
public String uri; |
/** |
* File resource type. |
* |
* Defines the wrapper around the source. |
*/ |
@XmlEnum(value=String.class) |
public enum Type { |
/** |
* 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) { |
case URL: |
URLResource ures = new URLResource(uri); |
res = ures; |
break; |
case GZIP: |
GZipResource gres = new GZipResource( |
new org.apache.tools.ant.types.resources.FileResource(new File(uri))); |
res = gres; |
break; |
case BZIP2: |
BZip2Resource bres = new BZip2Resource( |
new org.apache.tools.ant.types.resources.FileResource(new File(uri))); |
res = bres; |
break; |
default: |
//Default is Type FILE |
res = new org.apache.tools.ant.types.resources.FileResource(new File(uri)); |
} |
res.setProject(p); |
return res; |
} |
} |
/xservices/trunk/src/java/net/brutex/xservices/types/ResourceInterface.java |
---|
0,0 → 1,37 |
/* |
* Copyright 2010 Brian Rosenberger (Brutex Network) |
* |
* 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 net.brutex.xservices.types; |
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); |
} |
/xservices/trunk/src/java/net/brutex/xservices/types/ArchiveResource.java |
---|
0,0 → 1,122 |
/* |
* Copyright 2010 Brian Rosenberger (Brutex Network) |
* |
* 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 net.brutex.xservices.types; |
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; |
import org.apache.tools.ant.types.resources.ZipResource; |
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 = 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; |
/** |
* Supported archive types. |
*/ |
@XmlEnum(value=String.class) |
public enum ArchiveType { |
/** |
* 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) { |
case TAR: |
TarEntry tarentry = new TarEntry(uri); |
TarResource tres = new TarResource(new File(archive), tarentry); |
res = tres; |
break; |
case GZTAR: |
TarResource gres = new TarResource(new org.apache.tools.ant.types.resources.GZipResource( |
new org.apache.tools.ant.types.resources.FileResource( |
new File(archive))), new TarEntry(uri)); |
res = gres; |
break; |
default: //This is type ZIP also |
ZipEntry zipentry = new ZipEntry(uri); |
if (zipentry.getTime() == -1) { |
zipentry.setTime(System.currentTimeMillis()); |
} |
res = new ZipResource(new File(archive), null, zipentry); |
break; |
} |
res.setProject(p); |
return res; |
} |
} |
/xservices/trunk/src/java/net/brutex/xservices/types/CompressionType.java |
---|
0,0 → 1,28 |
/* |
* Copyright 2010 Brian Rosenberger (Brutex Network) |
* |
* 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 net.brutex.xservices.types; |
import javax.xml.bind.annotation.XmlEnum; |
/** |
* |
* @author Brian Rosenberger, bru@brutex.de |
*/ |
@XmlEnum() |
public enum CompressionType { |
NONE, GZIP, BZIP2 |
} |
/xservices/trunk/src/java/net/brutex/xservices/ws/MiscService.java |
---|
0,0 → 1,69 |
/* |
* Copyright 2010 Brian Rosenberger (Brutex Network) |
* |
* 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 net.brutex.xservices.ws; |
import javax.jws.WebMethod; |
import javax.jws.WebParam; |
import javax.jws.WebService; |
import net.brutex.xservices.types.FileSetResource; |
import net.brutex.xservices.types.HostConnection; |
import net.brutex.xservices.types.MailMimeType; |
import net.brutex.xservices.types.ReturnCode; |
import net.brutex.xservices.util.BrutexNamespaces; |
/** |
* |
* @author Brian Rosenberger, bru@brutex.de |
*/ |
@WebService(targetNamespace = BrutexNamespaces.WS_XSERVICES) |
public interface MiscService { |
@WebMethod(operationName = "getHostinfo") |
public ReturnCode getHostinfo(@WebParam(name = "hostname") String hostname); |
@WebMethod(operationName = "sendMailSimple") |
public ReturnCode sendMailSimple(@WebParam(name = "mailhost") HostConnection mailhost, |
@WebParam(name = "from") String from, |
@WebParam(name = "to") String tolist, |
@WebParam(name = "subject") String subject, |
@WebParam(name = "message") String message); |
@WebMethod(operationName = "sendMailSimpleWithAttachment") |
public ReturnCode sendMailSimpleWithAttachment(@WebParam(name = "mailhost") HostConnection mailhost, |
@WebParam(name = "from") String from, |
@WebParam(name = "to") String tolist, |
@WebParam(name = "subject") String subject, |
@WebParam(name = "message") String message, |
@WebParam(name = "attachments") FileSetResource res); |
@WebMethod(operationName = "sendMail") |
public ReturnCode sendMail(@WebParam(name = "mailhost") HostConnection mailhost, |
@WebParam(name = "from") String from, |
@WebParam(name = "to") String tolist, |
@WebParam(name = "cc") String cclist, |
@WebParam(name = "bcc") String bcclist, |
@WebParam(name = "subject") String subject, |
@WebParam(name = "mimetype") MailMimeType mimetype, |
@WebParam(name = "charset") String charset, |
@WebParam(name = "message") String message, |
@WebParam(name = "attachments") FileSetResource res, |
@WebParam(name = "useSSL") boolean ssl, |
@WebParam(name = "useStartTLS") boolean tls); |
@WebMethod(operationName = "sleep") |
public ReturnCode sleep(@WebParam(name = "minutes") int minutes, |
@WebParam(name = "seconds") int seconds); |
} |
/xservices/trunk/src/java/net/brutex/xservices/ws/MiscServiceImpl.java |
---|
0,0 → 1,173 |
/* |
* Copyright 2010 Brian Rosenberger (Brutex Network) |
* |
* 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 net.brutex.xservices.ws; |
import javax.jws.WebService; |
import net.brutex.xservices.types.FileSetResource; |
import net.brutex.xservices.types.HostConnection; |
import net.brutex.xservices.types.MailMimeType; |
import net.brutex.xservices.types.ReturnCode; |
import net.brutex.xservices.util.RunTask; |
import org.apache.tools.ant.taskdefs.HostInfo; |
import org.apache.tools.ant.taskdefs.Sleep; |
import org.apache.tools.ant.taskdefs.email.EmailTask; |
/** |
* |
* @author Brian Rosenberger, bru@brutex.de |
*/ |
@WebService(endpointInterface="net.brutex.xservices.ws.MiscService", |
serviceName="MiscService") |
public class MiscServiceImpl implements MiscService { |
public ReturnCode getHostinfo(String hostname) { |
return antGetHostinfo(hostname, null); |
} |
public ReturnCode sendMailSimple(HostConnection mailhost, String from, String tolist, String subject, String message) { |
return sendMail(from, |
from, |
tolist, |
"", |
"", |
subject, |
message, |
"text/plain", |
null, |
mailhost.hostname, |
mailhost.port, |
mailhost.user, |
mailhost.password, |
"utf-8", |
false, |
false); |
} |
public ReturnCode sendMailSimpleWithAttachment(HostConnection mailhost, String from, |
String tolist, String subject, String message, |
FileSetResource res) { |
return sendMail(from, |
from, |
tolist, |
"", |
"", |
subject, |
message, |
"text/plain", |
res, |
mailhost.hostname, |
mailhost.port, |
mailhost.user, |
mailhost.password, |
"utf-8", |
false, |
false); |
} |
public ReturnCode sendMail(HostConnection mailhost, String from, String tolist, |
String cclist, String bcclist, String subject, |
MailMimeType mimetype, String charset, String message, |
FileSetResource res, boolean ssl, boolean tls) { |
return sendMail(from, |
from, |
tolist, |
cclist, |
bcclist, |
subject, |
message, |
mimetype.value(), |
res, |
mailhost.hostname, |
mailhost.port, |
mailhost.user, |
mailhost.password, |
charset, |
tls, |
ssl); |
} |
public ReturnCode sleep(int minutes, int seconds) { |
return sleep(0, minutes, seconds, 0); |
} |
private ReturnCode antGetHostinfo(String hostname, String prefix) { |
HostInfo info = new HostInfo(); |
info.setTaskName("HostInfo"); |
RunTask runner = new RunTask(info); |
info.setHost(hostname); |
//info.setPrefix(prefix); |
return runner.postTask(); |
} |
private ReturnCode sendMail(String from, |
String replyto, |
String tolist, |
String cclist, |
String bcclist, |
String subject, |
String message, |
String messagemimetype, |
FileSetResource attachments, |
String mailhost, |
int mailport, |
String user, |
String password, |
String charset, |
boolean tls, |
boolean ssl) { |
EmailTask mail = new EmailTask(); |
mail.setTaskName("Mail"); |
RunTask runner = new RunTask(mail); |
mail.setFrom(from); |
mail.setReplyTo(replyto); |
mail.setToList(tolist); |
mail.setCcList(cclist); |
mail.setBccList(bcclist); |
mail.setSubject(subject); |
mail.setMessage(message); |
mail.setMessageMimeType(messagemimetype); |
if(attachments != null) { |
mail.addFileset(attachments.getAntFileSet(mail.getProject())); |
} |
mail.setMailhost(mailhost); |
mail.setMailport(mailport); |
mail.setUser(user); |
mail.setPassword(password); |
mail.setCharset(charset); |
mail.setSSL(ssl); |
mail.setEnableStartTLS(tls); |
return runner.postTask(); |
} |
private ReturnCode sleep(int hours, int minutes, int seconds, int milliseconds) { |
Sleep sleep = new Sleep(); |
sleep.setTaskName("Sleep"); |
RunTask runner = new RunTask(sleep); |
sleep.setHours(hours); |
sleep.setMinutes(minutes); |
sleep.setSeconds(seconds); |
sleep.setMilliseconds(milliseconds); |
return runner.postTask(); |
} |
} |
/xservices/trunk/src/java/net/brutex/xservices/ws/ExecuteService.java |
---|
0,0 → 1,265 |
/* |
* Copyright 2010 Brian Rosenberger (Brutex Network) |
* |
* 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 net.brutex.xservices.ws; |
import java.io.File; |
import javax.jws.WebMethod; |
import javax.jws.WebParam; |
import javax.jws.WebService; |
import net.brutex.xservices.types.HostConnection; |
import net.brutex.xservices.types.ReturnCode; |
import net.brutex.xservices.util.RunTask; |
import org.apache.tools.ant.taskdefs.ExecTask; |
import org.apache.tools.ant.taskdefs.optional.net.RExecTask; |
import org.apache.tools.ant.taskdefs.optional.net.TelnetTask; |
import org.apache.tools.ant.taskdefs.optional.ssh.SSHExec; |
import org.apache.tools.ant.types.Commandline; |
/** |
* |
* @author Brian Rosenberger, bru@brutex.de |
*/ |
@WebService(targetNamespace="http://ws.xservices.brutex.net", name="ExecuteService") |
public class ExecuteService { |
@WebMethod(operationName = "runCommand") |
public ReturnCode runCommand(@WebParam(name = "executable") String cmd, |
@WebParam(name = "argline") String args, |
@WebParam(name = "timeout") long timeout) { |
return executeCommand(cmd, |
Commandline.translateCommandline(args), |
null, |
false, |
null, |
false, |
true, |
false, |
timeout); |
} |
@WebMethod(operationName = "runCommandWithArgs") |
public ReturnCode runCommandWithArgs(@WebParam(name = "executable") String cmd, |
@WebParam(name = "arg") String[] args, |
@WebParam(name = "timeout") long timeout) { |
return executeCommand(cmd, |
args, |
null, |
false, |
null, |
false, |
true, |
false, |
timeout); |
} |
@WebMethod(operationName = "runCommandAsync") |
public ReturnCode runCommandAsync(@WebParam(name = "executable") String cmd, |
@WebParam(name = "argline") String args) { |
return executeCommand(cmd, |
Commandline.translateCommandline(args), |
null, |
true, |
null, |
false, |
true, |
false, |
0); |
} |
@WebMethod(operationName = "runCommandAsyncWithArgs") |
public ReturnCode runCommandAsyncWithArgs(@WebParam(name = "executable") String cmd, |
@WebParam(name = "arg") String[] args) { |
return executeCommand(cmd, |
args, |
null, |
true, |
null, |
false, |
true, |
false, |
0); |
} |
@WebMethod(operationName = "runCommandWithSSH") |
public ReturnCode runCommandWithSSH(@WebParam(name = "host") String host, |
@WebParam(name = "port") int port, |
@WebParam(name = "username") String username, |
@WebParam(name = "password") String password, |
@WebParam(name = "command") String cmd, |
@WebParam(name = "timeout") long timeout) { |
return sshExec(host, username, password, port, cmd, timeout); |
} |
@WebMethod(operationName = "runCommandWithSSHKeyAuth") |
public ReturnCode runCommandWithSSHKeyAuth(@WebParam(name = "host") String host, |
@WebParam(name = "port") int port, |
@WebParam(name = "username") String username, |
@WebParam(name = "passphrase") String passphrase, |
@WebParam(name = "keyfile") String keyfile, |
@WebParam(name = "command") String cmd, |
@WebParam(name = "timeout") long timeout) { |
return sshExecWithCert(host, username, passphrase, keyfile, port, cmd, timeout); |
} |
@WebMethod(operationName = "rExec") |
public ReturnCode rExec(@WebParam(name = "host") HostConnection host, |
@WebParam(name = "command") String cmd, |
@WebParam(name = "timeout") long timeout) { |
return rexec(host.hostname, host.port, host.user, host.password, cmd, timeout); |
} |
@WebMethod(operationName = "telnet") |
public ReturnCode runTelnet(@WebParam(name = "host") HostConnection host, |
@WebParam(name = "prompt") String prompt, |
@WebParam(name = "command") String cmd, |
@WebParam(name = "expect") String expect, |
@WebParam(name = "timeout") long timeout) { |
return telnet(host.hostname, host.port, host.user, host.password, cmd, timeout, prompt, expect); |
} |
@WebMethod(exclude = true) |
private ReturnCode executeCommand(String executable, |
String[] args, |
File dir, |
boolean spawn, |
String inputstring, |
boolean newenvironment, |
boolean vmlauncher, |
boolean searchpath, |
long timeout) { |
ExecTask exe = new ExecTask(); |
RunTask runner = new RunTask(exe); |
/* |
Commandline cmdl = new Commandline(); |
cmdl.setExecutable(executable); |
cmdl.addArguments(args); |
System.out.println(cmdl.describeCommand()); |
*/ |
exe.setExecutable(executable); |
for (String s : args) { |
exe.createArg().setValue(s); |
} |
exe.setDir(dir); |
if (spawn) { |
exe.setSpawn(spawn); |
} else { |
exe.setTimeout(timeout); |
exe.setInputString(inputstring); |
exe.setOutputproperty("ExecuteService.stdout"); |
exe.setErrorProperty("ExecuteService.stderr"); |
exe.setResultProperty("ExecuteService.result"); |
} |
exe.setNewenvironment(newenvironment); |
exe.setVMLauncher(vmlauncher); |
exe.setSearchPath(searchpath); |
return runner.postTask(); |
} |
@WebMethod(exclude = true) |
private ReturnCode sshExec(String host, |
String username, |
String password, |
int port, |
String command, |
long timeout) { |
SSHExec sshexec = new SSHExec(); |
RunTask runner = new RunTask(sshexec); |
sshexec.setHost(host); |
sshexec.setUsername(username); |
sshexec.setPassword(password); |
sshexec.setPort(port); |
sshexec.setCommand(command); |
sshexec.setTrust(true); |
sshexec.setTimeout(timeout); |
sshexec.setOutputproperty("SSHExec.stdout"); |
return runner.postTask(); |
} |
@WebMethod(exclude = true) |
private ReturnCode sshExecWithCert(String host, |
String username, |
String passphrase, |
String keyfile, |
int port, |
String command, |
long timeout) { |
SSHExec sshexec = new SSHExec(); |
RunTask runner = new RunTask(sshexec); |
sshexec.setHost(host); |
sshexec.setUsername(username); |
sshexec.setKeyfile(keyfile); |
sshexec.setPassphrase(passphrase); |
sshexec.setPort(port); |
sshexec.setCommand(command); |
sshexec.setTrust(true); |
sshexec.setTimeout(timeout); |
sshexec.setOutputproperty("SSHExec.stdout"); |
return runner.postTask(); |
} |
@WebMethod(exclude = true) |
private ReturnCode rexec(String host, |
int port, |
String username, |
String password, |
String command, |
long timeout) { |
RExecTask rexec = new RExecTask(); |
RunTask runner = new RunTask(rexec); |
rexec.setServer(host); |
rexec.setPort(port); |
rexec.setUserid(username); |
rexec.setPassword(password); |
rexec.setCommand(command); |
rexec.setTimeout((int) Math.round(timeout)); |
return runner.postTask(); |
} |
@WebMethod(exclude = true) |
private ReturnCode telnet(String host, |
int port, |
String username, |
String password, |
String command, |
long timeout, String prompt, String expect) { |
TelnetTask rexec = new TelnetTask(); |
RunTask runner = new RunTask(rexec); |
rexec.setServer(host); |
rexec.setPort(port); |
rexec.setUserid(username); |
rexec.setPassword(password); |
rexec.setTimeout((int) Math.round(timeout)); |
rexec.createRead().addText(prompt); |
rexec.createWrite().addText(command); |
rexec.createRead().addText(expect); |
return runner.postTask(); |
} |
} |
/xservices/trunk/src/java/net/brutex/xservices/ws/FileService.java |
---|
0,0 → 1,203 |
/* |
* Copyright 2010 Brian Rosenberger (Brutex Network) |
* |
* 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 net.brutex.xservices.ws; |
import java.io.File; |
import javax.jws.WebMethod; |
import javax.jws.WebParam; |
import javax.jws.WebService; |
import net.brutex.xservices.types.ArchiveResource; |
import net.brutex.xservices.types.FileResource; |
import net.brutex.xservices.types.FileSetResource; |
import net.brutex.xservices.types.ResourceInterface; |
import net.brutex.xservices.types.ReturnCode; |
import net.brutex.xservices.util.RunTask; |
import org.apache.tools.ant.taskdefs.Basename; |
import org.apache.tools.ant.taskdefs.Chmod; |
import org.apache.tools.ant.taskdefs.Copy; |
import org.apache.tools.ant.taskdefs.Echo; |
import org.apache.tools.ant.taskdefs.LoadResource; |
import org.apache.tools.ant.taskdefs.optional.unix.Chgrp; |
import org.apache.tools.ant.taskdefs.optional.unix.Chown; |
import org.apache.tools.ant.types.FileSet; |
/** |
* |
* @author Brian Rosenberger, bru@brutex.de |
*/ |
@WebService(targetNamespace = "http://ws.xservices.brutex.net", name = "FileService") |
public class FileService { |
@WebMethod(operationName = "basename") |
public ReturnCode basename(@WebParam(name = "file") String filename, |
@WebParam(name = "suffix") String suffix) { |
return basename(new File(filename), suffix); |
} |
@WebMethod(operationName = "copy") |
public ReturnCode copy(@WebParam(name = "fileset") FileSetResource src, |
@WebParam(name = "todir") String todir, |
@WebParam(name = "preservelastmodified") boolean plm, |
@WebParam(name = "overwrite") boolean overwrite, |
@WebParam(name = "encoding") String encoding) |
throws XServicesFault { |
return copy(src, new File(todir), plm, overwrite, encoding); |
} |
@WebMethod(operationName = "loadResource") |
public ReturnCode loadRes(@WebParam(name = "resource") FileResource res, |
@WebParam(name = "encoding") String encoding) { |
if (encoding == null || encoding.equals("")) { |
encoding = System.getProperty("file.encoding"); |
} |
return loadResource(res, encoding); |
} |
@WebMethod(operationName = "loadResourceFromArchive") |
public ReturnCode loadResFromArchive(@WebParam(name = "archiveresource") ArchiveResource res, |
@WebParam(name = "encoding") String encoding) { |
if (encoding == null || encoding.equals("")) { |
encoding = System.getProperty("file.encoding"); |
} |
return loadResource(res, encoding); |
} |
@WebMethod(operationName = "echoToFile") |
public ReturnCode echo2file(@WebParam(name = "message") String message, |
@WebParam(name = "file") String file, @WebParam(name = "encoding") String encoding, |
@WebParam(name = "append") boolean append) { |
return echo(message, new File(file), encoding, append); |
} |
@WebMethod(operationName = "changeOwner") |
public ReturnCode changeOwner(@WebParam(name = "fileset") FileSetResource res, |
@WebParam(name = "owner") String owner) { |
return chown(res, owner); |
} |
@WebMethod(operationName = "changeGroup") |
public ReturnCode changeGroup(@WebParam(name = "fileset") FileSetResource res, |
@WebParam(name = "group") String group) { |
return chgrp(res, group); |
} |
@WebMethod(operationName = "changeMode") |
public ReturnCode changeMode(@WebParam(name="fileset") FileSetResource res, |
@WebParam(name="permissions") String perm) { |
return chmod(res, perm); |
} |
@WebMethod(exclude = true) |
private ReturnCode basename(File file, |
String suffix) { |
Basename basename = new Basename(); |
RunTask runner = new RunTask(basename); |
basename.setFile(file); |
if (suffix != null && !suffix.equals("")) { |
basename.setSuffix(suffix); |
} |
basename.setProperty("basename.value"); |
return runner.postTask(); |
} |
@WebMethod(exclude = true) |
private ReturnCode loadResource(ResourceInterface src, String encoding) { |
LoadResource lr = new LoadResource(); |
lr.setTaskName("LoadResource"); |
RunTask runner = new RunTask(lr); |
lr.addConfigured(src.getAntResource(lr.getProject())); |
lr.setEncoding(encoding); |
System.out.println("Using encoding: " + encoding); |
lr.setProperty("LoadResource.out"); |
return runner.postTask(); |
} |
@WebMethod(exclude = true) |
private ReturnCode echo(String msg, File file, String encoding, boolean append) { |
Echo echo = new Echo(); |
echo.setTaskName("toFile"); |
RunTask runTask = new RunTask(echo); |
echo.addText(msg); |
echo.setEncoding(encoding); |
echo.setFile(file); |
echo.setAppend(append); |
return runTask.postTask(); |
} |
@WebMethod(exclude = true) |
private ReturnCode copy(FileSetResource src, File dst, boolean preservelastmodified, |
boolean overwrite, String encoding) { |
Copy copy = new Copy(); |
copy.setTaskName("Copy"); |
RunTask runner = new RunTask(copy); |
FileSet set = src.getAntFileSet(copy.getProject()); |
copy.add(set); |
if (dst.isDirectory()) { |
copy.setTodir(dst); |
} |
if (dst.isFile()) { |
copy.setTofile(dst); |
} |
copy.setOverwrite(overwrite); |
copy.setPreserveLastModified(preservelastmodified); |
if (encoding != null && !encoding.equals("")) { |
copy.setOutputEncoding(encoding); |
} else { |
copy.setOutputEncoding(System.getProperty("file.encoding")); |
} |
return runner.postTask(); |
} |
@WebMethod(exclude = true) |
private ReturnCode chown(FileSetResource src, String owner) { |
Chown chown = new Chown(); |
chown.setTaskName("Chown"); |
RunTask runner = new RunTask(chown); |
chown.setOwner(owner); |
FileSet set = src.getAntFileSet(chown.getProject()); |
chown.add(set); |
chown.setMaxParallel(300); |
return runner.postTask(); |
} |
@WebMethod(exclude = true) |
private ReturnCode chgrp(FileSetResource src, String group) { |
Chgrp chgrp = new Chgrp(); |
chgrp.setTaskName("Chgrp"); |
RunTask runner = new RunTask(chgrp); |
chgrp.setGroup(group); |
FileSet set = src.getAntFileSet(chgrp.getProject()); |
chgrp.add(set); |
chgrp.setMaxParallel(300); |
return runner.postTask(); |
} |
@WebMethod(exclude = true) |
private ReturnCode chmod(FileSetResource src, String perm) { |
Chmod chmod = new Chmod(); |
chmod.setTaskName("Chmod"); |
RunTask runner = new RunTask(chmod); |
FileSet set = src.getAntFileSet(chmod.getProject()); |
chmod.add(set); |
chmod.setMaxParallel(300); |
chmod.setPerm(perm); |
chmod.setVerbose(true); |
return runner.postTask(); |
} |
} |
/xservices/trunk/src/java/net/brutex/xservices/ws/ArchiveService.java |
---|
0,0 → 1,284 |
/* |
* Copyright 2010 Brian Rosenberger (Brutex Network) |
* |
* 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 net.brutex.xservices.ws; |
import java.io.File; |
import java.util.Map; |
import javax.jws.WebMethod; |
import javax.jws.WebParam; |
import javax.jws.WebService; |
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; |
import org.apache.tools.ant.taskdefs.BZip2; |
import org.apache.tools.ant.taskdefs.Expand; |
import org.apache.tools.ant.taskdefs.GUnzip; |
import org.apache.tools.ant.taskdefs.GZip; |
import org.apache.tools.ant.taskdefs.Untar; |
import org.apache.tools.ant.taskdefs.Zip; |
/** |
* |
* @author Brian Rosenberger, bru@brutex.de |
*/ |
@WebService(targetNamespace = "http://ws.xservices.brutex.net", name = "ArchiveService") |
public class ArchiveService { |
public static final String WS_OPERATION_BZIP2 = "bzip2"; |
public static final String WS_OPERATION_BZIP2_ARCHIVE = "bzip2FromArchive"; |
public static final String WS_OPERATION_GZIP = "gzip"; |
public static final String WS_OPERATION_GZIP_ARCHIVE = "gzipFromArchive"; |
public static final String WS_OPERATION_UNZIP = "unzip"; |
public static final String WS_OPERATION_GUNZIP = "gunzip"; |
public static final String WS_OPERATION_BUNZIP2 = "bunzip2"; |
public static final String WS_PARAM_SOURCEFILE = "source"; |
public static final String WS_PARAM_SOURCEFILE_STRING = "srcfile"; |
public static final String WS_PARAM_SOURCEURL = "srcurl"; |
public static final String WS_PARAM_SOURCEARCHIVE = "archivesource"; |
public static final String WS_PARAM_DESTFILE = "destfile"; |
public static final String WS_PARAM_DESTDIR = "destdir"; |
public static final String WS_PARAM_ENCODING = "encoding"; |
public static final String WS_PARAM_OVERWRITE = "overwrite"; |
@WebMethod(operationName = WS_OPERATION_BZIP2, action = WS_OPERATION_BZIP2) |
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 ReturnCode bzip2FromArchive(@WebParam(name = WS_PARAM_SOURCEARCHIVE) ArchiveResource src, |
@WebParam(name = WS_PARAM_DESTFILE) String file) { |
return bzip(src, new File(file)); |
} |
@WebMethod(operationName = WS_OPERATION_GZIP, action = WS_OPERATION_GZIP) |
public ReturnCode gzip(@WebParam(name = WS_PARAM_SOURCEFILE) FileResource src, |
@WebParam(name = WS_PARAM_DESTFILE) String file) { |
return gzip(src, new File(file)); |
} |
@WebMethod(operationName = WS_OPERATION_GZIP_ARCHIVE, action = WS_OPERATION_GZIP_ARCHIVE) |
public ReturnCode gzipFromArchive(@WebParam(name = WS_PARAM_SOURCEARCHIVE) ArchiveResource src, |
@WebParam(name = WS_PARAM_DESTFILE) String file) { |
return gzip(src, new File(file)); |
} |
@WebMethod(operationName = WS_OPERATION_GUNZIP, action = WS_OPERATION_GUNZIP) |
public ReturnCode gunzip(@WebParam(name = WS_PARAM_SOURCEFILE_STRING) String src, |
@WebParam(name = WS_PARAM_DESTDIR) String dest) { |
File target = null; |
if (!dest.equals("") && dest != null) { |
target = new File(dest); |
} |
return GUnzip(new FileResource(FileResource.Type.FILE, src), target); |
} |
@WebMethod(operationName = WS_OPERATION_BUNZIP2) |
public ReturnCode bunzip2(@WebParam(name = WS_PARAM_SOURCEFILE_STRING) String src, |
@WebParam(name = WS_PARAM_DESTDIR) String dest) { |
File target = null; |
if (!dest.equals("") && dest != null) { |
target = new File(dest); |
} |
return BUnzip2(new FileResource(FileResource.Type.FILE, src), target); |
} |
@WebMethod(operationName = "gunzipFromURL") |
public ReturnCode gunzipFromURL(@WebParam(name = WS_PARAM_SOURCEURL) String src, |
@WebParam(name = WS_PARAM_DESTDIR) String dest) { |
File target = null; |
if (!dest.equals("") && dest != null) { |
target = new File(dest); |
} |
return GUnzip(new FileResource(FileResource.Type.URL, src), target); |
} |
@WebMethod(operationName = "bunzip2FromURL") |
public ReturnCode bunzip2FromURL(@WebParam(name = WS_PARAM_SOURCEURL) String src, |
@WebParam(name = WS_PARAM_DESTDIR) String dest) { |
File target = null; |
if (!dest.equals("") && dest != null) { |
target = new File(dest); |
} |
return BUnzip2(new FileResource(FileResource.Type.URL, src), target); |
} |
@WebMethod(operationName = "zip") |
public ReturnCode zip(@WebParam(name = WS_PARAM_SOURCEFILE) FileResource src, |
@WebParam(name = WS_PARAM_DESTFILE) String file, |
@WebParam(name = WS_PARAM_OVERWRITE) boolean overwrite, |
@WebParam(name = WS_PARAM_ENCODING) String encoding, |
@WebParam(name = "compresslevel") int level) { |
if (level > 9) { |
level = 9; |
} |
if (level < 0) { |
level = 0; |
} |
return zip(src, new File(file), encoding, !overwrite, level); |
} |
@WebMethod(operationName = "zipFromArchive") |
public ReturnCode zipFromArchive(@WebParam(name = WS_PARAM_SOURCEARCHIVE) ArchiveResource src, |
@WebParam(name = WS_PARAM_DESTFILE) String file, |
@WebParam(name = WS_PARAM_OVERWRITE) boolean update, |
@WebParam(name = WS_PARAM_ENCODING) String encoding, |
@WebParam(name = "compresslevel") int level) { |
return zip(src, new File(file), encoding, !update, level); |
} |
@WebMethod(operationName = "unzip") |
public ReturnCode unzip(@WebParam(name = WS_PARAM_SOURCEFILE_STRING) String src, |
@WebParam(name = WS_PARAM_DESTDIR) String dest, |
@WebParam(name = WS_PARAM_OVERWRITE) boolean overwrite, |
@WebParam(name = WS_PARAM_ENCODING) String encoding) { |
return unzip(new File(src), new File(dest), overwrite, encoding); |
} |
@WebMethod(operationName = "unrar") |
public ReturnCode unrar(@WebParam(name = WS_PARAM_SOURCEFILE_STRING) String src, |
@WebParam(name = WS_PARAM_DESTDIR) String dest) { |
return unrar(new File(src), new File(dest)); |
} |
@WebMethod(operationName = "untar") |
public ReturnCode untar(@WebParam(name = WS_PARAM_SOURCEFILE_STRING) String src, |
@WebParam(name = WS_PARAM_DESTDIR) String dest, |
@WebParam(name = WS_PARAM_OVERWRITE) boolean overwrite, |
@WebParam(name = "compression") CompressionType compression) { |
Untar.UntarCompressionMethod c = new Untar.UntarCompressionMethod(); |
switch (compression) { |
case GZIP: |
c.setValue("gzip"); |
break; |
case BZIP2: |
c.setValue("bzip2"); |
break; |
default: |
c.setValue("none"); |
break; |
} |
return untar(new File(src), new File(dest), overwrite, c); |
} |
@WebMethod(exclude = true) |
private ReturnCode bzip(ResourceInterface src, File dst) { |
if (dst.exists() && dst.isFile()) { |
dst.delete(); |
} |
BZip2 bzip = new BZip2(); |
bzip.setTaskName("BZip2"); |
RunTask runner = new RunTask(bzip); |
bzip.setSrcResource(src.getAntResource(bzip.getProject())); |
bzip.setDestfile(dst); |
return runner.postTask(); |
} |
@WebMethod(exclude = true) |
private ReturnCode gzip(ResourceInterface src, File dst) { |
if (dst.exists() && dst.isFile()) { |
dst.delete(); |
} |
GZip gzip = new GZip(); |
gzip.setTaskName("GZip"); |
RunTask runner = new RunTask(gzip); |
gzip.addConfigured(src.getAntResource(gzip.getProject())); |
gzip.setDestfile(dst); |
return runner.postTask(); |
} |
@WebMethod(exclude = true) |
private ReturnCode zip(ResourceInterface src, File dst, String encoding, boolean update, int compresslevel) { |
Zip zip = new Zip(); |
zip.setTaskName("Zip"); |
RunTask runner = new RunTask(zip); |
zip.add(src.getAntResource(zip.getProject())); |
zip.setDestFile(dst); |
if (encoding != null && !encoding.equals("")) { |
zip.setEncoding(encoding); |
} |
zip.setUpdate(update); |
zip.setLevel(compresslevel); |
return runner.postTask(); |
} |
@WebMethod(exclude = true) |
private ReturnCode GUnzip(ResourceInterface src, File dst) { |
GUnzip uz = new GUnzip(); |
uz.setTaskName("GUnzip"); |
RunTask runner = new RunTask(uz); |
uz.setSrcResource(src.getAntResource(uz.getProject())); |
if (dst != null) { |
uz.setDest(dst); |
} |
return runner.postTask(); |
} |
@WebMethod(exclude = true) |
private ReturnCode BUnzip2(ResourceInterface src, File dst) { |
BUnzip2 uz = new BUnzip2(); |
uz.setTaskName("BUnzip2"); |
RunTask runner = new RunTask(uz); |
uz.setSrcResource(src.getAntResource(uz.getProject())); |
if (dst != null) { |
uz.setDest(dst); |
} |
return runner.postTask(); |
} |
@WebMethod(exclude = true) |
private ReturnCode unzip(File src, File dest, boolean overwrite, String encoding) { |
Expand unzip = new Expand(); |
unzip.setTaskName("UnZip"); |
RunTask runner = new RunTask(unzip); |
unzip.setSrc(src); |
unzip.setDest(dest); |
unzip.setOverwrite(overwrite); |
if (encoding != null && !encoding.equals("")) { |
unzip.setEncoding(encoding); |
} |
return runner.postTask(); |
} |
@WebMethod(exclude = true) |
private ReturnCode untar(File src, File dest, boolean overwrite, Untar.UntarCompressionMethod compression) { |
Untar unzip = new Untar(); |
unzip.setTaskName("Untar"); |
RunTask runner = new RunTask(unzip); |
unzip.setSrc(src); |
unzip.setDest(dest); |
unzip.setOverwrite(overwrite); |
unzip.setCompression(compression); |
return runner.postTask(); |
} |
@WebMethod(exclude = true) |
private ReturnCode unrar(File src, File dst) { |
UnRarTask unrar = new UnRarTask(); |
unrar.setTaskName("UnRar"); |
RunTask runner = new RunTask(unrar); |
unrar.setSrc(src); |
unrar.setDst(dst); |
return runner.postTask(); |
} |
} |
/xservices/trunk/src/java/net/brutex/xservices/ws/XServicesFault.java |
---|
0,0 → 1,67 |
/* |
* Copyright 2010 Brian Rosenberger (Brutex Network) |
* |
* 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 net.brutex.xservices.ws; |
import java.util.GregorianCalendar; |
import javax.xml.bind.annotation.XmlElement; |
import javax.xml.datatype.DatatypeConfigurationException; |
import javax.xml.datatype.DatatypeFactory; |
import javax.xml.datatype.XMLGregorianCalendar; |
/** |
* |
* @author Brian Rosenberger, bru@brutex.de |
*/ |
public class XServicesFault extends Exception { |
public XServicesFault(String message, Exception e) { |
this(message, e.getCause()); |
} |
public XServicesFault(String string) { |
this(string, new Exception(string).getCause()); |
} |
public XServicesFault(Exception e) { |
this(e.getMessage(), e.getCause()); |
} |
public XServicesFault(String message, Throwable cause) { |
super(message, cause); |
this.faultstring=message; |
try { |
timestamp = DatatypeFactory.newInstance().newXMLGregorianCalendar(new GregorianCalendar()); |
} catch (DatatypeConfigurationException ex) { |
System.err.println(ex.getMessage()); |
} |
} |
@XmlElement(name="faultstring") |
public String faultstring = ""; |
@XmlElement(name="username") |
public String username = System.getProperty("user.name"); |
@XmlElement(name="homedir") |
public String homedir = System.getProperty("user.home"); |
@XmlElement(name="timstamp") |
public XMLGregorianCalendar timestamp = null; |
} |
/xservices/trunk/src/java/net/brutex/xservices/util/RunTask.java |
---|
0,0 → 1,100 |
/* |
* Copyright 2010 Brian Rosenberger (Brutex Network) |
* |
* 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 net.brutex.xservices.util; |
import java.io.ByteArrayOutputStream; |
import java.io.PrintStream; |
import java.util.HashMap; |
import java.util.Map; |
import net.brutex.xservices.types.AntProperty; |
import net.brutex.xservices.types.ReturnCode; |
import org.apache.tools.ant.BuildException; |
import org.apache.tools.ant.Project; |
import org.apache.tools.ant.Target; |
import org.apache.tools.ant.Task; |
import org.apache.tools.ant.listener.TimestampedLogger; |
import org.apache.tools.ant.taskdefs.Echo; |
/** |
* |
* @author Brian Rosenberger, bru@brutex.de |
*/ |
public class RunTask { |
Project antproject; |
Target anttarget; |
Task anttask; |
ByteArrayOutputStream myout = new ByteArrayOutputStream(); |
ByteArrayOutputStream myerr = new ByteArrayOutputStream(); |
PrintStream out = new PrintStream(myout); |
PrintStream err = new PrintStream(myerr); |
TimestampedLogger log = null; |
public RunTask(Task anttask) { |
antproject = new Project(); |
antproject.init(); |
antproject.setBasedir(System.getProperty("java.io.tmpdir")); |
log = new TimestampedLogger(); |
log.setOutputPrintStream(out); |
log.setErrorPrintStream(err); |
log.setMessageOutputLevel(Echo.EchoLevel.WARN.getLevel()); |
antproject.addBuildListener(log); |
anttarget = new Target(); |
anttarget.setName("XBridgeNGDynamicTarget"); |
anttarget.setProject(antproject); |
antproject.addTarget(anttarget); |
this.anttask = anttask; |
prepareTask(); |
} |
private void prepareTask() |
throws BuildException { |
anttask.init(); |
anttask.setProject(antproject); |
anttask.setOwningTarget(anttarget); |
anttarget.addTask(anttask); |
antproject.addOrReplaceTarget(anttarget); |
} |
public ReturnCode postTask() { |
int returnCode = 0; |
Map<String, String> origMap = new HashMap<String, String>(); |
Map<String, String> newMap = null; |
origMap.putAll(antproject.getProperties()); |
try { |
antproject.executeTarget(anttarget.getName()); |
} catch (BuildException ex) { |
err.print(ex.getMessage()); |
returnCode = 1; |
} |
newMap = antproject.getProperties(); |
for (Map.Entry<String, String> e : origMap.entrySet()) { |
newMap.remove(e.getKey()); |
} |
//anttask.execute(); |
return new ReturnCode(returnCode, |
myout.toString(), |
myerr.toString(), |
AntProperty.createAntPropertyList(newMap)); |
} |
} |
/xservices/trunk/src/java/net/brutex/xservices/util/BrutexNamespaces.java |
---|
0,0 → 1,35 |
/* |
* Copyright 2010 Brian Rosenberger (Brutex Network) |
* |
* 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 net.brutex.xservices.util; |
/** |
* Holds static namespace information. |
* |
* |
* @author Brian Rosenberger, bru@brutex.de |
*/ |
public class BrutexNamespaces { |
/** |
* Brutex Network XServices web service namespace declaration |
*/ |
public static final String WS_XSERVICES = "http://ws.xservices.brutex.net"; |
private BrutexNamespaces() {}; |
} |
/xservices/trunk/src/java/net/brutex/xservices/util/UnRarTask.java |
---|
0,0 → 1,74 |
/* |
* Copyright 2010 Brian Rosenberger (Brutex Network) |
* |
* 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 net.brutex.xservices.util; |
import de.innosystec.unrar.Archive; |
import de.innosystec.unrar.exception.RarException; |
import de.innosystec.unrar.rarfile.FileHeader; |
import java.io.File; |
import java.io.FileOutputStream; |
import java.io.IOException; |
import java.util.List; |
import org.apache.tools.ant.BuildException; |
import org.apache.tools.ant.Task; |
/** |
* |
* @author Brian Rosenberger, bru@brutex.de |
*/ |
public class UnRarTask extends Task { |
private File dst = null; |
private File src = null; |
public File getDst() { |
return dst; |
} |
public void setDst(File dst) { |
this.dst = dst; |
} |
public File getSrc() { |
return src; |
} |
public void setSrc(File src) { |
this.src = src; |
} |
@Override |
public void execute() { |
if(src==null ) throw new BuildException("Please supply a source archive file."); |
if(!src.exists()) throw new BuildException("Archive '"+src.getName()+"' does not exist."); |
try { |
if(dst==null) dst = new File(src.getParent()); |
Archive ar = new Archive(src); |
List<FileHeader> list = ar.getFileHeaders(); |
for(FileHeader h : list) { |
ar.extractFile(h, new FileOutputStream(new File(dst.getAbsolutePath()+"/"+h.getFileNameString()))); |
} |
} catch (RarException ex) { |
throw new BuildException(ex.getMessage(), ex); |
} catch (IOException ex) { |
throw new BuildException(ex.getMessage(), ex); |
} |
} |
} |