diff --git a/build.xml b/build.xml new file mode 100644 index 0000000..1d38b0d --- /dev/null +++ b/build.xml @@ -0,0 +1,71 @@ + + + + + + + + + + + Builds, tests, and runs the project XServices. + + + diff --git a/lib/activation.jar b/lib/activation.jar new file mode 100644 index 0000000..3869b58 Binary files /dev/null and b/lib/activation.jar differ diff --git a/lib/ant-antlr.jar b/lib/ant-antlr.jar new file mode 100644 index 0000000..e6ac589 Binary files /dev/null and b/lib/ant-antlr.jar differ diff --git a/lib/ant-apache-bcel.jar b/lib/ant-apache-bcel.jar new file mode 100644 index 0000000..6821049 Binary files /dev/null and b/lib/ant-apache-bcel.jar differ diff --git a/lib/ant-apache-bsf.jar b/lib/ant-apache-bsf.jar new file mode 100644 index 0000000..1b0daf9 Binary files /dev/null and b/lib/ant-apache-bsf.jar differ diff --git a/lib/ant-apache-log4j.jar b/lib/ant-apache-log4j.jar new file mode 100644 index 0000000..32de4b0 Binary files /dev/null and b/lib/ant-apache-log4j.jar differ diff --git a/lib/ant-apache-oro.jar b/lib/ant-apache-oro.jar new file mode 100644 index 0000000..a0a2435 Binary files /dev/null and b/lib/ant-apache-oro.jar differ diff --git a/lib/ant-apache-regexp.jar b/lib/ant-apache-regexp.jar new file mode 100644 index 0000000..2214d89 Binary files /dev/null and b/lib/ant-apache-regexp.jar differ diff --git a/lib/ant-apache-resolver.jar b/lib/ant-apache-resolver.jar new file mode 100644 index 0000000..54388ed Binary files /dev/null and b/lib/ant-apache-resolver.jar differ diff --git a/lib/ant-commons-logging.jar b/lib/ant-commons-logging.jar new file mode 100644 index 0000000..f2eaa8a Binary files /dev/null and b/lib/ant-commons-logging.jar differ diff --git a/lib/ant-commons-net.jar b/lib/ant-commons-net.jar new file mode 100644 index 0000000..0208417 Binary files /dev/null and b/lib/ant-commons-net.jar differ diff --git a/lib/ant-jai.jar b/lib/ant-jai.jar new file mode 100644 index 0000000..4ce81f0 Binary files /dev/null and b/lib/ant-jai.jar differ diff --git a/lib/ant-javamail.jar b/lib/ant-javamail.jar new file mode 100644 index 0000000..1d8a3eb Binary files /dev/null and b/lib/ant-javamail.jar differ diff --git a/lib/ant-jdepend.jar b/lib/ant-jdepend.jar new file mode 100644 index 0000000..4e7d2be Binary files /dev/null and b/lib/ant-jdepend.jar differ diff --git a/lib/ant-jmf.jar b/lib/ant-jmf.jar new file mode 100644 index 0000000..536d507 Binary files /dev/null and b/lib/ant-jmf.jar differ diff --git a/lib/ant-jsch.jar b/lib/ant-jsch.jar new file mode 100644 index 0000000..394fdef Binary files /dev/null and b/lib/ant-jsch.jar differ diff --git a/lib/ant-junit.jar b/lib/ant-junit.jar new file mode 100644 index 0000000..063cce4 Binary files /dev/null and b/lib/ant-junit.jar differ diff --git a/lib/ant-launcher.jar b/lib/ant-launcher.jar new file mode 100644 index 0000000..7c8f849 Binary files /dev/null and b/lib/ant-launcher.jar differ diff --git a/lib/ant-netrexx.jar b/lib/ant-netrexx.jar new file mode 100644 index 0000000..9f368ac Binary files /dev/null and b/lib/ant-netrexx.jar differ diff --git a/lib/ant-nodeps.jar b/lib/ant-nodeps.jar new file mode 100644 index 0000000..98b5518 Binary files /dev/null and b/lib/ant-nodeps.jar differ diff --git a/lib/ant-starteam.jar b/lib/ant-starteam.jar new file mode 100644 index 0000000..ffd7104 Binary files /dev/null and b/lib/ant-starteam.jar differ diff --git a/lib/ant-stylebook.jar b/lib/ant-stylebook.jar new file mode 100644 index 0000000..e78ed49 Binary files /dev/null and b/lib/ant-stylebook.jar differ diff --git a/lib/ant-swing.jar b/lib/ant-swing.jar new file mode 100644 index 0000000..641c5e9 Binary files /dev/null and b/lib/ant-swing.jar differ diff --git a/lib/ant-testutil.jar b/lib/ant-testutil.jar new file mode 100644 index 0000000..10f5230 Binary files /dev/null and b/lib/ant-testutil.jar differ diff --git a/lib/ant-trax.jar b/lib/ant-trax.jar new file mode 100644 index 0000000..7c4d564 Binary files /dev/null and b/lib/ant-trax.jar differ diff --git a/lib/ant-weblogic.jar b/lib/ant-weblogic.jar new file mode 100644 index 0000000..aa7d318 Binary files /dev/null and b/lib/ant-weblogic.jar differ diff --git a/lib/ant.jar b/lib/ant.jar new file mode 100644 index 0000000..7047177 Binary files /dev/null and b/lib/ant.jar differ diff --git a/lib/commons-logging-api-1.0.4.jar b/lib/commons-logging-api-1.0.4.jar new file mode 100644 index 0000000..ade9a13 Binary files /dev/null and b/lib/commons-logging-api-1.0.4.jar differ diff --git a/lib/commons-net-2.0.jar b/lib/commons-net-2.0.jar new file mode 100644 index 0000000..dd7a52a Binary files /dev/null and b/lib/commons-net-2.0.jar differ diff --git a/lib/commons-net-ftp-2.0.jar b/lib/commons-net-ftp-2.0.jar new file mode 100644 index 0000000..f697534 Binary files /dev/null and b/lib/commons-net-ftp-2.0.jar differ diff --git a/lib/jakarta-oro-2.0.8.jar b/lib/jakarta-oro-2.0.8.jar new file mode 100644 index 0000000..23488d2 Binary files /dev/null and b/lib/jakarta-oro-2.0.8.jar differ diff --git a/lib/java-unrar-0.3.jar b/lib/java-unrar-0.3.jar new file mode 100644 index 0000000..48bebc9 Binary files /dev/null and b/lib/java-unrar-0.3.jar differ diff --git a/lib/jsch-0.1.42.jar b/lib/jsch-0.1.42.jar new file mode 100644 index 0000000..c65eff0 Binary files /dev/null and b/lib/jsch-0.1.42.jar differ diff --git a/lib/webservices-api.jar b/lib/webservices-api.jar new file mode 100644 index 0000000..56f6c24 Binary files /dev/null and b/lib/webservices-api.jar differ diff --git a/lib/webservices-extra-api.jar b/lib/webservices-extra-api.jar new file mode 100644 index 0000000..c239e6d Binary files /dev/null and b/lib/webservices-extra-api.jar differ diff --git a/lib/webservices-extra.jar b/lib/webservices-extra.jar new file mode 100644 index 0000000..f92db17 Binary files /dev/null and b/lib/webservices-extra.jar differ diff --git a/lib/webservices-rt.jar b/lib/webservices-rt.jar new file mode 100644 index 0000000..98a155d Binary files /dev/null and b/lib/webservices-rt.jar differ diff --git a/lib/webservices-tools.jar b/lib/webservices-tools.jar new file mode 100644 index 0000000..646e1f6 Binary files /dev/null and b/lib/webservices-tools.jar differ diff --git a/nbproject/ant-deploy.xml b/nbproject/ant-deploy.xml new file mode 100644 index 0000000..a6f1480 --- /dev/null +++ b/nbproject/ant-deploy.xml @@ -0,0 +1,28 @@ + + + + + + + + + + + + + + + + + + + + + + + diff --git a/nbproject/build-impl.xml b/nbproject/build-impl.xml new file mode 100644 index 0000000..d65bf22 --- /dev/null +++ b/nbproject/build-impl.xml @@ -0,0 +1,931 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + Must set src.dir + Must set test.src.dir + Must set build.dir + Must set build.web.dir + Must set build.generated.dir + Must set dist.dir + Must set build.classes.dir + Must set dist.javadoc.dir + Must set build.test.classes.dir + Must set build.test.results.dir + Must set build.classes.excludes + Must set dist.war + +The Java EE server classpath is not correctly set up. Your active server type is ${j2ee.server.type}. +Either open the project in the IDE and assign the server or setup the server classpath manually. +For example like this: + ant -Duser.properties.file=<path_to_property_file> (where you put the property "j2ee.platform.classpath" in a .properties file) +or ant -Dj2ee.platform.classpath=<server_classpath> (where no properties file is used) + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +The libs.CopyLibs.classpath property is not set up. +This property must point to +org-netbeans-modules-java-j2seproject-copylibstask.jar file which is part +of NetBeans IDE installation and is usually located at +<netbeans_installation>/java<version>/ant/extra folder. +Either open the project in the IDE and make sure CopyLibs library +exists or setup the property manually. For example like this: + ant -Dlibs.CopyLibs.classpath=a/path/to/org-netbeans-modules-java-j2seproject-copylibstask.jar + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + Must select some files in the IDE or set javac.includes + + + + + + + + + + + + + + + + + + + + + + + + + + + + Must select some files in the IDE or set javac.jsp.includes + + + + + + + + + + + + + + + + + + + + + + + Must select a file in the IDE or set jsp.includes + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + Browser not found, cannot launch the deployed application. Try to set the BROWSER environment variable. + + + Launching ${browse.url} + + + + + + Must select one file in the IDE or set run.class + + + + Must select one file in the IDE or set run.class + + + + + + + + + + + + + + + + + + + + + + + + + + + + Must select one file in the IDE or set debug.class + + + + + + + + + + + + Must select one file in the IDE or set debug.class + + + + + Must set fix.includes + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + Must select some files in the IDE or set javac.includes + + + + + + + + + + + + + + + + + + + Some tests failed; see details above. + + + + + + + + + Must select some files in the IDE or set test.includes + + + + Some tests failed; see details above. + + + + + Must select one file in the IDE or set test.class + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/nbproject/genfiles.properties b/nbproject/genfiles.properties new file mode 100644 index 0000000..828c037 --- /dev/null +++ b/nbproject/genfiles.properties @@ -0,0 +1,9 @@ +build.xml.data.CRC32=7ba4ef3e +build.xml.script.CRC32=d8ac74c8 +build.xml.stylesheet.CRC32=c0ebde35@1.21.1.1 +# This file is used by a NetBeans-based IDE to track changes in generated files such as build-impl.xml. +# Do not edit this file. You may delete it but then the IDE will never regenerate such files for you. +nbproject/build-impl.xml.data.CRC32=7ba4ef3e +nbproject/build-impl.xml.script.CRC32=67947c0e +nbproject/build-impl.xml.stylesheet.CRC32=b139b33b@1.21.1.1 +nbproject/jaxws-build.xml.stylesheet.CRC32=83928735 diff --git a/nbproject/jax-ws.xml b/nbproject/jax-ws.xml new file mode 100644 index 0000000..f7b35c3 --- /dev/null +++ b/nbproject/jax-ws.xml @@ -0,0 +1,16 @@ + + + + + net.brutex.xservices.ws.ExecuteService + + + net.brutex.xservices.ws.ArchiveService + + + net.brutex.xservices.ws.FileService + + + + false + diff --git a/nbproject/jaxws-build.xml b/nbproject/jaxws-build.xml new file mode 100644 index 0000000..0c90811 --- /dev/null +++ b/nbproject/jaxws-build.xml @@ -0,0 +1,42 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/nbproject/project.properties b/nbproject/project.properties new file mode 100644 index 0000000..739f2ed --- /dev/null +++ b/nbproject/project.properties @@ -0,0 +1,145 @@ +build.classes.dir=${build.web.dir}/WEB-INF/classes +build.classes.excludes=**/*.java,**/*.form +build.dir=build +build.generated.dir=${build.dir}/generated +build.generated.sources.dir=${build.dir}/generated-sources +build.test.classes.dir=${build.dir}/test/classes +build.test.results.dir=${build.dir}/test/results +build.web.dir=${build.dir}/web +build.web.excludes=${build.classes.excludes} +client.urlPart= +compile.jsps=false +conf.dir=${source.root}/conf +debug.classpath=${build.classes.dir}:${javac.classpath} +debug.test.classpath=\ + ${run.test.classpath} +display.browser=true +dist.dir=dist +dist.ear.war=${dist.dir}/${war.ear.name} +dist.javadoc.dir=${dist.dir}/javadoc +dist.war=${dist.dir}/${war.name} +endorsed.classpath= +excludes= +file.reference.activation.jar=lib/activation.jar +file.reference.ant-antlr.jar=lib/ant-antlr.jar +file.reference.ant-apache-bcel.jar=lib/ant-apache-bcel.jar +file.reference.ant-apache-bsf.jar=lib/ant-apache-bsf.jar +file.reference.ant-apache-log4j.jar=lib/ant-apache-log4j.jar +file.reference.ant-apache-oro.jar=lib/ant-apache-oro.jar +file.reference.ant-apache-regexp.jar=lib/ant-apache-regexp.jar +file.reference.ant-apache-resolver.jar=lib/ant-apache-resolver.jar +file.reference.ant-commons-logging.jar=lib/ant-commons-logging.jar +file.reference.ant-commons-net.jar=lib/ant-commons-net.jar +file.reference.ant-jai.jar=lib/ant-jai.jar +file.reference.ant-javamail.jar=lib/ant-javamail.jar +file.reference.ant-jdepend.jar=lib/ant-jdepend.jar +file.reference.ant-jmf.jar=lib/ant-jmf.jar +file.reference.ant-jsch.jar=lib/ant-jsch.jar +file.reference.ant-junit.jar=lib/ant-junit.jar +file.reference.ant-launcher.jar=lib/ant-launcher.jar +file.reference.ant-netrexx.jar=lib/ant-netrexx.jar +file.reference.ant-nodeps.jar=lib/ant-nodeps.jar +file.reference.ant-starteam.jar=lib/ant-starteam.jar +file.reference.ant-stylebook.jar=lib/ant-stylebook.jar +file.reference.ant-swing.jar=lib/ant-swing.jar +file.reference.ant-testutil.jar=lib/ant-testutil.jar +file.reference.ant-trax.jar=lib/ant-trax.jar +file.reference.ant-weblogic.jar=lib/ant-weblogic.jar +file.reference.commons-logging-api-1.0.4.jar=lib/commons-logging-api-1.0.4.jar +file.reference.commons-net-2.0.jar=lib/commons-net-2.0.jar +file.reference.commons-net-ftp-2.0.jar=lib/commons-net-ftp-2.0.jar +file.reference.jakarta-oro-2.0.8.jar=lib/jakarta-oro-2.0.8.jar +file.reference.java-unrar-0.3.jar=lib/java-unrar-0.3.jar +file.reference.jsch-0.1.42.jar=lib/jsch-0.1.42.jar +file.reference.webservices-api.jar=lib/webservices-api.jar +file.reference.webservices-extra-api.jar=lib/webservices-extra-api.jar +file.reference.webservices-extra.jar=lib/webservices-extra.jar +file.reference.webservices-rt.jar=lib/webservices-rt.jar +file.reference.webservices-tools.jar=lib/webservices-tools.jar +includes=** +j2ee.deploy.on.save=true +j2ee.platform=1.5 +j2ee.server.type=Tomcat60 +jar.compress=false +javac.classpath=\ + ${file.reference.activation.jar}:\ + ${file.reference.webservices-api.jar}:\ + ${file.reference.webservices-extra-api.jar}:\ + ${file.reference.webservices-extra.jar}:\ + ${file.reference.webservices-rt.jar}:\ + ${file.reference.webservices-tools.jar}:\ + ${file.reference.ant-antlr.jar}:\ + ${file.reference.ant-apache-bcel.jar}:\ + ${file.reference.ant-apache-bsf.jar}:\ + ${file.reference.ant-apache-log4j.jar}:\ + ${file.reference.ant-apache-oro.jar}:\ + ${file.reference.ant-apache-regexp.jar}:\ + ${file.reference.ant-apache-resolver.jar}:\ + ${file.reference.ant-commons-logging.jar}:\ + ${file.reference.ant-commons-net.jar}:\ + ${file.reference.ant-jai.jar}:\ + ${file.reference.ant-javamail.jar}:\ + ${file.reference.ant-jdepend.jar}:\ + ${file.reference.ant-jmf.jar}:\ + ${file.reference.ant-jsch.jar}:\ + ${file.reference.ant-junit.jar}:\ + ${file.reference.ant-launcher.jar}:\ + ${file.reference.ant-netrexx.jar}:\ + ${file.reference.ant-nodeps.jar}:\ + ${file.reference.ant-starteam.jar}:\ + ${file.reference.ant-stylebook.jar}:\ + ${file.reference.ant-swing.jar}:\ + ${file.reference.ant-testutil.jar}:\ + ${file.reference.ant-trax.jar}:\ + ${file.reference.ant-weblogic.jar}:\ + ${file.reference.jsch-0.1.42.jar}:\ + ${file.reference.commons-net-2.0.jar}:\ + ${file.reference.commons-net-ftp-2.0.jar}:\ + ${file.reference.jakarta-oro-2.0.8.jar}:\ + ${libs.ApacheAnt.classpath}:\ + ${file.reference.java-unrar-0.3.jar}:\ + ${file.reference.commons-logging-api-1.0.4.jar} +# Space-separated list of extra javac options +javac.compilerargs= +javac.debug=true +javac.deprecation=true +javac.source=1.5 +javac.target=1.5 +javac.test.classpath=\ + ${javac.classpath}:\ + ${build.classes.dir}:\ + ${libs.junit.classpath}:\ + ${libs.junit_4.classpath} +javadoc.additionalparam= +javadoc.author=true +javadoc.encoding=${source.encoding} +javadoc.noindex=false +javadoc.nonavbar=false +javadoc.notree=false +javadoc.preview=true +javadoc.private=false +javadoc.splitindex=false +javadoc.use=true +javadoc.version=false +javadoc.windowtitle=XServices Javadoc +jaxbwiz.endorsed.dirs="${netbeans.home}/../ide12/modules/ext/jaxb/api" +jspcompilation.classpath=${jspc.classpath}:${javac.classpath} +lib.dir=${web.docbase.dir}/WEB-INF/lib +persistence.xml.dir=${conf.dir} +platform.active=default_platform +resource.dir=setup +run.test.classpath=\ + ${javac.test.classpath}:\ + ${build.test.classes.dir} +# Space-separated list of JVM arguments used when running a class with a main method or a unit test +# (you may also define separate properties like run-sys-prop.name=value instead of -Dname=value): +runmain.jvmargs= +source.encoding=UTF-8 +source.root=src +src.dir=${source.root}/java +test.src.dir=test +war.content.additional= +war.ear.name=XServices.war +war.name=XServices.war +web.docbase.dir=web +webinf.dir=web/WEB-INF diff --git a/nbproject/project.xml b/nbproject/project.xml new file mode 100644 index 0000000..c40eeac --- /dev/null +++ b/nbproject/project.xml @@ -0,0 +1,170 @@ + + + org.netbeans.modules.web.project + + + + + + XServices + 1.6.5 + + + ${file.reference.activation.jar} + WEB-INF/lib + + + ${file.reference.webservices-api.jar} + WEB-INF/lib + + + ${file.reference.webservices-extra-api.jar} + WEB-INF/lib + + + ${file.reference.webservices-extra.jar} + WEB-INF/lib + + + ${file.reference.webservices-rt.jar} + WEB-INF/lib + + + ${file.reference.webservices-tools.jar} + WEB-INF/lib + + + ${file.reference.ant-antlr.jar} + WEB-INF/lib + + + ${file.reference.ant-apache-bcel.jar} + WEB-INF/lib + + + ${file.reference.ant-apache-bsf.jar} + WEB-INF/lib + + + ${file.reference.ant-apache-log4j.jar} + WEB-INF/lib + + + ${file.reference.ant-apache-oro.jar} + WEB-INF/lib + + + ${file.reference.ant-apache-regexp.jar} + WEB-INF/lib + + + ${file.reference.ant-apache-resolver.jar} + WEB-INF/lib + + + ${file.reference.ant-commons-logging.jar} + WEB-INF/lib + + + ${file.reference.ant-commons-net.jar} + WEB-INF/lib + + + ${file.reference.ant-jai.jar} + WEB-INF/lib + + + ${file.reference.ant-javamail.jar} + WEB-INF/lib + + + ${file.reference.ant-jdepend.jar} + WEB-INF/lib + + + ${file.reference.ant-jmf.jar} + WEB-INF/lib + + + ${file.reference.ant-jsch.jar} + WEB-INF/lib + + + ${file.reference.ant-junit.jar} + WEB-INF/lib + + + ${file.reference.ant-launcher.jar} + WEB-INF/lib + + + ${file.reference.ant-netrexx.jar} + WEB-INF/lib + + + ${file.reference.ant-nodeps.jar} + WEB-INF/lib + + + ${file.reference.ant-starteam.jar} + WEB-INF/lib + + + ${file.reference.ant-stylebook.jar} + WEB-INF/lib + + + ${file.reference.ant-swing.jar} + WEB-INF/lib + + + ${file.reference.ant-testutil.jar} + WEB-INF/lib + + + ${file.reference.ant-trax.jar} + WEB-INF/lib + + + ${file.reference.ant-weblogic.jar} + WEB-INF/lib + + + ${file.reference.jsch-0.1.42.jar} + WEB-INF/lib + + + ${file.reference.commons-net-2.0.jar} + WEB-INF/lib + + + ${file.reference.commons-net-ftp-2.0.jar} + WEB-INF/lib + + + ${file.reference.jakarta-oro-2.0.8.jar} + WEB-INF/lib + + + ${libs.ApacheAnt.classpath} + WEB-INF/lib + + + ${file.reference.java-unrar-0.3.jar} + WEB-INF/lib + + + ${file.reference.commons-logging-api-1.0.4.jar} + WEB-INF/lib + + + + + + + + + + + + diff --git a/src/conf/MANIFEST.MF b/src/conf/MANIFEST.MF new file mode 100644 index 0000000..59499bc --- /dev/null +++ b/src/conf/MANIFEST.MF @@ -0,0 +1,2 @@ +Manifest-Version: 1.0 + diff --git a/src/java/net/brutex/xservices/types/ArchiveResource.java b/src/java/net/brutex/xservices/types/ArchiveResource.java new file mode 100644 index 0000000..1d0f013 --- /dev/null +++ b/src/java/net/brutex/xservices/types/ArchiveResource.java @@ -0,0 +1,79 @@ +/* + * 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.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; + +/** + * + * @author Brian Rosenberger, bru@brutex.de + */ +@XmlType(namespace = "http://ws.xservices.brutex.net") +public class ArchiveResource + implements ResourceInterface { + + @XmlElement(defaultValue = "ZIP", nillable = false, required = true) + public ArchiveType type = ArchiveType.ZIP; + @XmlElement(nillable = false, required = true) + public String archive; + @XmlElement(nillable = false, required = true) + public String uri; + + @XmlEnum(String.class) + public enum ArchiveType { + + ZIP, TAR, GZTAR + } + + 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; + } +} diff --git a/src/java/net/brutex/xservices/types/CompressionType.java b/src/java/net/brutex/xservices/types/CompressionType.java new file mode 100644 index 0000000..abe99c8 --- /dev/null +++ b/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 +} diff --git a/src/java/net/brutex/xservices/types/FileResource.java b/src/java/net/brutex/xservices/types/FileResource.java new file mode 100644 index 0000000..0248aac --- /dev/null +++ b/src/java/net/brutex/xservices/types/FileResource.java @@ -0,0 +1,83 @@ +/* + * 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 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; + +/** + * + * @author Brian Rosenberger, bru@brutex.de + */ +@XmlRootElement(namespace="http://ws.xservices.brutex.net") +public class FileResource +implements ResourceInterface { + + @XmlElement(defaultValue = "FILE", nillable = false, required = true) + public Type type = Type.FILE; + @XmlElement(nillable = false, required = true) + public String uri; + + @XmlEnum(String.class) + public enum Type { + + FILE, URL, GZIP, BZIP2 + } + + public FileResource(Type type, String uri) { + this.type = type; + this.uri = uri; + } + + public FileResource() { + } + + 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; + } +} diff --git a/src/java/net/brutex/xservices/types/FileSetResource.java b/src/java/net/brutex/xservices/types/FileSetResource.java new file mode 100644 index 0000000..1223863 --- /dev/null +++ b/src/java/net/brutex/xservices/types/FileSetResource.java @@ -0,0 +1,89 @@ +/* + * 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; + +/** + * + * @author Brian Rosenberger, bru@brutex.de + */ +@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") + public FileSetType type = FileSetType.FILES; + + @XmlElement(name="source", required=true, nillable=false) + public String source = ""; + + @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") + public boolean casesensitive = true; + + 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; + } + + @XmlEnum + public enum FileSetType{ + FILES, ZIP, TAR, GZTAR + } + +} diff --git a/src/java/net/brutex/xservices/types/ResourceInterface.java b/src/java/net/brutex/xservices/types/ResourceInterface.java new file mode 100644 index 0000000..caa5ab0 --- /dev/null +++ b/src/java/net/brutex/xservices/types/ResourceInterface.java @@ -0,0 +1,30 @@ +/* + * 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; + +/** + * + * @author Brian Rosenberger, bru@brutex.de + */ +public interface ResourceInterface { + + Resource getAntResource(Project p); + +} diff --git a/src/java/net/brutex/xservices/types/ReturnCode.java b/src/java/net/brutex/xservices/types/ReturnCode.java new file mode 100644 index 0000000..ac43298 --- /dev/null +++ b/src/java/net/brutex/xservices/types/ReturnCode.java @@ -0,0 +1,43 @@ +/* + * 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(namespace="http://ws.xservices.brutex.net") +public class ReturnCode { + + @XmlElement(required=true) + public int returnCode; + + public String stdOut; + public String stdErr; + + public ReturnCode() { + } + + public ReturnCode(int returnCode, String stdOut, String stdErr) { + this.returnCode = returnCode; + this.stdOut = stdOut; + this.stdErr = stdErr; + } +} diff --git a/src/java/net/brutex/xservices/util/RunTask.java b/src/java/net/brutex/xservices/util/RunTask.java new file mode 100644 index 0000000..87e0526 --- /dev/null +++ b/src/java/net/brutex/xservices/util/RunTask.java @@ -0,0 +1,91 @@ +/* + * 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.util.Iterator; +import java.util.Map; +import java.util.Vector; +import org.apache.tools.ant.BuildException; +import org.apache.tools.ant.BuildListener; +import org.apache.tools.ant.BuildLogger; +import org.apache.tools.ant.DefaultLogger; +import org.apache.tools.ant.Project; +import org.apache.tools.ant.Target; +import org.apache.tools.ant.Task; +import org.apache.tools.ant.taskdefs.Echo; + +/** + * + * @author Brian Rosenberger, bru@brutex.de + */ +public class RunTask { + + Project antproject; + Target anttarget; + Task anttask; + + public RunTask(Task anttask) { + + antproject = new Project(); + antproject.init(); + antproject.setBasedir(System.getProperty("java.io.tmpdir")); + DefaultLogger log = new DefaultLogger(); + log.setErrorPrintStream(System.err); + log.setOutputPrintStream(System.out); + antproject.addBuildListener(log); + Vector listeners = antproject.getBuildListeners(); + for (Iterator i = listeners.iterator(); i.hasNext(); ) { + BuildListener listener = (BuildListener) i.next(); + + if (listener instanceof BuildLogger) { + BuildLogger logger = (BuildLogger) listener; + logger.setMessageOutputLevel(Echo.EchoLevel.VERBOSE.getLevel()); + logger.setOutputPrintStream(System.out); + logger.setErrorPrintStream(System.err); + } + } + + 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 Map postTask() + throws BuildException + { + try { + antproject.executeTarget(anttarget.getName()); + //anttask.execute(); + return antproject.getProperties(); + } catch (Exception ex) { + throw new BuildException(ex); + } + } +} diff --git a/src/java/net/brutex/xservices/util/UnRarTask.java b/src/java/net/brutex/xservices/util/UnRarTask.java new file mode 100644 index 0000000..7b1cfd0 --- /dev/null +++ b/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 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); + } + } + +} diff --git a/src/java/net/brutex/xservices/ws/ArchiveService.java b/src/java/net/brutex/xservices/ws/ArchiveService.java new file mode 100644 index 0000000..1562c5d --- /dev/null +++ b/src/java/net/brutex/xservices/ws/ArchiveService.java @@ -0,0 +1,300 @@ +/* + * 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.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 String 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, + @WebParam(name = WS_PARAM_DESTFILE) String file) { + return bzip(src, new File(file)); + } + + @WebMethod(operationName = WS_OPERATION_GZIP, action=WS_OPERATION_GZIP) + public String 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 String 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 String 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 String 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 String 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 String 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 String 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 String 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 String 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 String 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 String 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 String 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); + + Map result = runner.postTask(); + return "complete"; + } + + @WebMethod(exclude = true) + private String 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); + Map result = runner.postTask(); + return "complete"; + } + + + + @WebMethod(exclude = true) + private String 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); + Map result = runner.postTask(); + return "complete"; + } + + @WebMethod(exclude = true) + private String 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); + } + Map result = runner.postTask(); + return "complete"; + } + + @WebMethod(exclude = true) + private String 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); + } + Map result = runner.postTask(); + return "complete"; + } + + @WebMethod(exclude = true) + private String 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); + } + + Map result = runner.postTask(); + return "complete"; + } + + @WebMethod(exclude = true) + private String 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); + Map result = runner.postTask(); + return "complete"; + } + + @WebMethod(exclude = true) + private String unrar(File src, File dst) { + UnRarTask unrar = new UnRarTask(); + unrar.setTaskName("UnRar"); + RunTask runner = new RunTask(unrar); + unrar.setSrc(src); + unrar.setDst(dst); + Map result = runner.postTask(); + return "complete"; + } + + +} diff --git a/src/java/net/brutex/xservices/ws/ExecuteService.java b/src/java/net/brutex/xservices/ws/ExecuteService.java new file mode 100644 index 0000000..0836b6a --- /dev/null +++ b/src/java/net/brutex/xservices/ws/ExecuteService.java @@ -0,0 +1,290 @@ +/* + * 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.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") 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 rexec(host, port, username, password, cmd, timeout); + } + + @WebMethod(operationName = "telnet") + public ReturnCode runTelnet(@WebParam(name = "host") String host, + @WebParam(name = "port") int port, + @WebParam(name = "username") String username, + @WebParam(name = "password") String password, + @WebParam(name = "prompt") String prompt, + @WebParam(name = "command") String cmd, + @WebParam(name = "expect") String expect, + @WebParam(name = "timeout") long timeout) { + return telnet(host, port, username, 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.setCommand(cmdl); + 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); + + Map result = runner.postTask(); + ReturnCode res = null; + if (spawn) { + res = new ReturnCode(0, null, null); + } else { + res = new ReturnCode(Integer.valueOf(result.get("ExecuteService.result")), + result.get("ExecuteService.stdout"), result.get("ExecuteService.stderr")); + } + return res; + } + + @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"); + Map result = runner.postTask(); + ReturnCode res = null; + res = new ReturnCode(0, + result.get("SSHExec.stdout"), ""); + + return res; + } + + @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"); + Map result = runner.postTask(); + ReturnCode res = null; + res = new ReturnCode(0, + result.get("SSHExec.stdout"), ""); + + return res; + } + + @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)); + + Map result = runner.postTask(); + ReturnCode res = null; + res = new ReturnCode(0, + "", ""); + + return res; + } + + @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); + + Map result = runner.postTask(); + ReturnCode res = null; + res = new ReturnCode(0, + "", ""); + return res; + } +} diff --git a/src/java/net/brutex/xservices/ws/FileService.java b/src/java/net/brutex/xservices/ws/FileService.java new file mode 100644 index 0000000..88ab1de --- /dev/null +++ b/src/java/net/brutex/xservices/ws/FileService.java @@ -0,0 +1,147 @@ +/* + * 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.FileResource; +import net.brutex.xservices.types.FileSetResource; +import net.brutex.xservices.types.ResourceInterface; +import net.brutex.xservices.util.RunTask; +import org.apache.tools.ant.taskdefs.Basename; +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.types.FileSet; + +/** + * + * @author Brian Rosenberger, bru@brutex.de + */ +@WebService(targetNamespace="http://ws.xservices.brutex.net", name="FileService") +public class FileService { + + @WebMethod(operationName = "basename") + public String basename(@WebParam(name = "file") String filename, + @WebParam(name = "suffix") String suffix) { + return basename(new File(filename), suffix); + } + + @WebMethod(operationName = "copy") + public void 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 { + try { + copy(src, new File(todir), plm, overwrite, encoding); + } catch (Exception ex) { + throw new XServicesFault(ex.getMessage(), ex); + } + } + + @WebMethod(operationName = "loadResource") + public String 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 String 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 String 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(exclude = true) + private String 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"); + Map result = runner.postTask(); + return result.get("basename.value"); + } + @WebMethod(exclude = true) + private String 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"); + Map result = runner.postTask(); + return result.get("LoadResource.out"); + } + + @WebMethod(exclude = true) + private String 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); + Map result = runTask.postTask(); + return "complete"; + } + + @WebMethod(exclude=true) + private void 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")); + } + + Map result = runner.postTask(); + } +} diff --git a/src/java/net/brutex/xservices/ws/XServicesFault.java b/src/java/net/brutex/xservices/ws/XServicesFault.java new file mode 100644 index 0000000..c957b7b --- /dev/null +++ b/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; +} diff --git a/web/LICENSE b/web/LICENSE new file mode 100644 index 0000000..f820d4b --- /dev/null +++ b/web/LICENSE @@ -0,0 +1,203 @@ +/* + * Apache License + * Version 2.0, January 2004 + * http://www.apache.org/licenses/ + * + * TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION + * + * 1. Definitions. + * + * "License" shall mean the terms and conditions for use, reproduction, + * and distribution as defined by Sections 1 through 9 of this document. + * + * "Licensor" shall mean the copyright owner or entity authorized by + * the copyright owner that is granting the License. + * + * "Legal Entity" shall mean the union of the acting entity and all + * other entities that control, are controlled by, or are under common + * control with that entity. For the purposes of this definition, + * "control" means (i) the power, direct or indirect, to cause the + * direction or management of such entity, whether by contract or + * otherwise, or (ii) ownership of fifty percent (50%) or more of the + * outstanding shares, or (iii) beneficial ownership of such entity. + * + * "You" (or "Your") shall mean an individual or Legal Entity + * exercising permissions granted by this License. + * + * "Source" form shall mean the preferred form for making modifications, + * including but not limited to software source code, documentation + * source, and configuration files. + * + * "Object" form shall mean any form resulting from mechanical + * transformation or translation of a Source form, including but + * not limited to compiled object code, generated documentation, + * and conversions to other media types. + * + * "Work" shall mean the work of authorship, whether in Source or + * Object form, made available under the License, as indicated by a + * copyright notice that is included in or attached to the work + * (an example is provided in the Appendix below). + * + * "Derivative Works" shall mean any work, whether in Source or Object + * form, that is based on (or derived from) the Work and for which the + * editorial revisions, annotations, elaborations, or other modifications + * represent, as a whole, an original work of authorship. For the purposes + * of this License, Derivative Works shall not include works that remain + * separable from, or merely link (or bind by name) to the interfaces of, + * the Work and Derivative Works thereof. + * + * "Contribution" shall mean any work of authorship, including + * the original version of the Work and any modifications or additions + * to that Work or Derivative Works thereof, that is intentionally + * submitted to Licensor for inclusion in the Work by the copyright owner + * or by an individual or Legal Entity authorized to submit on behalf of + * the copyright owner. For the purposes of this definition, "submitted" + * means any form of electronic, verbal, or written communication sent + * to the Licensor or its representatives, including but not limited to + * communication on electronic mailing lists, source code control systems, + * and issue tracking systems that are managed by, or on behalf of, the + * Licensor for the purpose of discussing and improving the Work, but + * excluding communication that is conspicuously marked or otherwise + * designated in writing by the copyright owner as "Not a Contribution." + * + * "Contributor" shall mean Licensor and any individual or Legal Entity + * on behalf of whom a Contribution has been received by Licensor and + * subsequently incorporated within the Work. + * + * 2. Grant of Copyright License. Subject to the terms and conditions of + * this License, each Contributor hereby grants to You a perpetual, + * worldwide, non-exclusive, no-charge, royalty-free, irrevocable + * copyright license to reproduce, prepare Derivative Works of, + * publicly display, publicly perform, sublicense, and distribute the + * Work and such Derivative Works in Source or Object form. + * + * 3. Grant of Patent License. Subject to the terms and conditions of + * this License, each Contributor hereby grants to You a perpetual, + * worldwide, non-exclusive, no-charge, royalty-free, irrevocable + * (except as stated in this section) patent license to make, have made, + * use, offer to sell, sell, import, and otherwise transfer the Work, + * where such license applies only to those patent claims licensable + * by such Contributor that are necessarily infringed by their + * Contribution(s) alone or by combination of their Contribution(s) + * with the Work to which such Contribution(s) was submitted. If You + * institute patent litigation against any entity (including a + * cross-claim or counterclaim in a lawsuit) alleging that the Work + * or a Contribution incorporated within the Work constitutes direct + * or contributory patent infringement, then any patent licenses + * granted to You under this License for that Work shall terminate + * as of the date such litigation is filed. + * + * 4. Redistribution. You may reproduce and distribute copies of the + * Work or Derivative Works thereof in any medium, with or without + * modifications, and in Source or Object form, provided that You + * meet the following conditions: + * + * (a) You must give any other recipients of the Work or + * Derivative Works a copy of this License; and + * + * (b) You must cause any modified files to carry prominent notices + * stating that You changed the files; and + * + * (c) You must retain, in the Source form of any Derivative Works + * that You distribute, all copyright, patent, trademark, and + * attribution notices from the Source form of the Work, + * excluding those notices that do not pertain to any part of + * the Derivative Works; and + * + * (d) If the Work includes a "NOTICE" text file as part of its + * distribution, then any Derivative Works that You distribute must + * include a readable copy of the attribution notices contained + * within such NOTICE file, excluding those notices that do not + * pertain to any part of the Derivative Works, in at least one + * of the following places: within a NOTICE text file distributed + * as part of the Derivative Works; within the Source form or + * documentation, if provided along with the Derivative Works; or, + * within a display generated by the Derivative Works, if and + * wherever such third-party notices normally appear. The contents + * of the NOTICE file are for informational purposes only and + * do not modify the License. You may add Your own attribution + * notices within Derivative Works that You distribute, alongside + * or as an addendum to the NOTICE text from the Work, provided + * that such additional attribution notices cannot be construed + * as modifying the License. + * + * You may add Your own copyright statement to Your modifications and + * may provide additional or different license terms and conditions + * for use, reproduction, or distribution of Your modifications, or + * for any such Derivative Works as a whole, provided Your use, + * reproduction, and distribution of the Work otherwise complies with + * the conditions stated in this License. + * + * 5. Submission of Contributions. Unless You explicitly state otherwise, + * any Contribution intentionally submitted for inclusion in the Work + * by You to the Licensor shall be under the terms and conditions of + * this License, without any additional terms or conditions. + * Notwithstanding the above, nothing herein shall supersede or modify + * the terms of any separate license agreement you may have executed + * with Licensor regarding such Contributions. + * + * 6. Trademarks. This License does not grant permission to use the trade + * names, trademarks, service marks, or product names of the Licensor, + * except as required for reasonable and customary use in describing the + * origin of the Work and reproducing the content of the NOTICE file. + * + * 7. Disclaimer of Warranty. Unless required by applicable law or + * agreed to in writing, Licensor provides the Work (and each + * Contributor provides its Contributions) on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or + * implied, including, without limitation, any warranties or conditions + * of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A + * PARTICULAR PURPOSE. You are solely responsible for determining the + * appropriateness of using or redistributing the Work and assume any + * risks associated with Your exercise of permissions under this License. + * + * 8. Limitation of Liability. In no event and under no legal theory, + * whether in tort (including negligence), contract, or otherwise, + * unless required by applicable law (such as deliberate and grossly + * negligent acts) or agreed to in writing, shall any Contributor be + * liable to You for damages, including any direct, indirect, special, + * incidental, or consequential damages of any character arising as a + * result of this License or out of the use or inability to use the + * Work (including but not limited to damages for loss of goodwill, + * work stoppage, computer failure or malfunction, or any and all + * other commercial damages or losses), even if such Contributor + * has been advised of the possibility of such damages. + * + * 9. Accepting Warranty or Additional Liability. While redistributing + * the Work or Derivative Works thereof, You may choose to offer, + * and charge a fee for, acceptance of support, warranty, indemnity, + * or other liability obligations and/or rights consistent with this + * License. However, in accepting such obligations, You may act only + * on Your own behalf and on Your sole responsibility, not on behalf + * of any other Contributor, and only if You agree to indemnify, + * defend, and hold each Contributor harmless for any liability + * incurred by, or claims asserted against, such Contributor by reason + * of your accepting any such warranty or additional liability. + * + * END OF TERMS AND CONDITIONS + * + * APPENDIX: How to apply the Apache License to your work. + * + * To apply the Apache License to your work, attach the following + * boilerplate notice, with the fields enclosed by brackets "[]" + * replaced with your own identifying information. (Don't include + * the brackets!) The text should be enclosed in the appropriate + * comment syntax for the file format. We also recommend that a + * file or class name and description of purpose be included on the + * same "printed page" as the copyright notice for easier + * identification within third-party archives. + * + * Copyright [yyyy] [name of copyright owner] + * + * 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. + */ diff --git a/web/META-INF/context.xml b/web/META-INF/context.xml new file mode 100644 index 0000000..bac053d --- /dev/null +++ b/web/META-INF/context.xml @@ -0,0 +1,2 @@ + + diff --git a/web/NOTICE b/web/NOTICE index 51039e0..c10e11f 100644 --- a/web/NOTICE +++ b/web/NOTICE @@ -10,8 +10,8 @@ This product includes software developed by The Apache Software Foundation (http://www.apache.org/). - This product includes also software developed by : - - the W3C consortium (http://www.w3c.org) , + This product includes also software developed by: + - the W3C consortium (http://www.w3c.org), - the SAX project (http://www.saxproject.org) The task is based on code Copyright (c) 2002, Landmark diff --git a/web/WEB-INF/sun-jaxws.xml b/web/WEB-INF/sun-jaxws.xml new file mode 100644 index 0000000..b9bbd57 --- /dev/null +++ b/web/WEB-INF/sun-jaxws.xml @@ -0,0 +1,6 @@ + + + + + + diff --git a/web/WEB-INF/web.xml b/web/WEB-INF/web.xml new file mode 100644 index 0000000..e662c84 --- /dev/null +++ b/web/WEB-INF/web.xml @@ -0,0 +1,44 @@ + + + + com.sun.xml.ws.transport.http.servlet.WSServletContextListener + + + ExecuteService + com.sun.xml.ws.transport.http.servlet.WSServlet + 1 + + + ArchiveService + com.sun.xml.ws.transport.http.servlet.WSServlet + 1 + + + FileService + com.sun.xml.ws.transport.http.servlet.WSServlet + 1 + + + ExecuteService + /ExecuteService + + + ArchiveService + /ArchiveService + + + FileService + /FileService + + + + 30 + + + + index.jsp + + + + +