diff --git a/examples/otherProjects/BasicServletDemo/nbproject/ant-deploy.xml b/examples/otherProjects/BasicServletDemo/nbproject/ant-deploy.xml index c2349eb1e68408c2ac2308fcbc4b829e166a2564..785fa0b813bd3c227cfd20e771135dd654ed7955 100644 --- a/examples/otherProjects/BasicServletDemo/nbproject/ant-deploy.xml +++ b/examples/otherProjects/BasicServletDemo/nbproject/ant-deploy.xml @@ -40,18 +40,30 @@ </target> <target name="-deploy-ant" if="deploy.ant.enabled" depends="-init,-check-credentials"> <echo message="Deploying ${deploy.ant.archive} to ${Context(path)}"/> - <taskdef name="deploy" classname="org.apache.catalina.ant.DeployTask" - classpath="${tomcat.home}/server/lib/catalina-ant.jar"/> - <deploy url="${tomcat.url}/manager" username="${tomcat.username}" + <taskdef name="deploy" classname="org.apache.catalina.ant.DeployTask"> + <classpath> + <pathelement path="${tomcat.home}/lib/catalina-ant.jar"/> + <pathelement path="${tomcat.home}/lib/tomcat-coyote.jar"/> + <pathelement path="${tomcat.home}/lib/tomcat-util.jar"/> + <pathelement path="${tomcat.home}/bin/tomcat-juli.jar"/> + </classpath> + </taskdef> + <deploy url="${tomcat.url}/manager/text" username="${tomcat.username}" password="${tomcat.password}" path="${Context(path)}" war="${deploy.ant.archive}"/> <property name="deploy.ant.client.url" value="${tomcat.url}${Context(path)}"/> </target> <target name="-undeploy-ant" if="deploy.ant.enabled" depends="-init,-check-credentials"> <echo message="Undeploying ${Context(path)}"/> - <taskdef name="undeploy" classname="org.apache.catalina.ant.UndeployTask" - classpath="${tomcat.home}/server/lib/catalina-ant.jar"/> - <undeploy url="${tomcat.url}/manager" username="${tomcat.username}" + <taskdef name="undeploy" classname="org.apache.catalina.ant.UndeployTask"> + <classpath> + <pathelement path="${tomcat.home}/lib/catalina-ant.jar"/> + <pathelement path="${tomcat.home}/lib/tomcat-coyote.jar"/> + <pathelement path="${tomcat.home}/lib/tomcat-util.jar"/> + <pathelement path="${tomcat.home}/bin/tomcat-juli.jar"/> + </classpath> + </taskdef> + <undeploy url="${tomcat.url}/manager/text" username="${tomcat.username}" password="${tomcat.password}" path="${Context(path)}"/> </target> </project> diff --git a/examples/otherProjects/BasicServletDemo/nbproject/build-impl.xml b/examples/otherProjects/BasicServletDemo/nbproject/build-impl.xml new file mode 100644 index 0000000000000000000000000000000000000000..5e00b4b34cac397b29549dae7cb779a0d8dc4b9d --- /dev/null +++ b/examples/otherProjects/BasicServletDemo/nbproject/build-impl.xml @@ -0,0 +1,1410 @@ +<?xml version="1.0" encoding="UTF-8"?> +<!-- + *** GENERATED FROM project.xml - DO NOT EDIT *** + *** EDIT ../build.xml INSTEAD *** + + For the purpose of easier reading the script + is divided into following sections: + - initialization + - compilation + - dist + - execution + - debugging + - javadoc + - test compilation + - test execution + - test debugging + - cleanup + + --> +<project xmlns:webproject1="http://www.netbeans.org/ns/web-project/1" xmlns:webproject2="http://www.netbeans.org/ns/web-project/2" xmlns:webproject3="http://www.netbeans.org/ns/web-project/3" basedir=".." default="default" name="BasicServletDemo-impl"> + <import file="ant-deploy.xml"/> + <fail message="Please build using Ant 1.7.1 or higher."> + <condition> + <not> + <antversion atleast="1.7.1"/> + </not> + </condition> + </fail> + <target depends="dist,javadoc" description="Build whole project." name="default"/> + <!-- + INITIALIZATION SECTION + --> + <target name="-pre-init"> + <!-- Empty placeholder for easier customization. --> + <!-- You can override this target in the ../build.xml file. --> + </target> + <target depends="-pre-init" name="-init-private"> + <property file="nbproject/private/private.properties"/> + </target> + <target depends="-pre-init,-init-private" name="-init-user"> + <property file="${user.properties.file}"/> + <!-- The two properties below are usually overridden --> + <!-- by the active platform. Just a fallback. --> + <property name="default.javac.source" value="1.4"/> + <property name="default.javac.target" value="1.4"/> + </target> + <target depends="-pre-init,-init-private,-init-user" name="-init-project"> + <property file="nbproject/project.properties"/> + </target> + <target depends="-pre-init,-init-private,-init-user,-init-project,-init-macrodef-property" if="dist.ear.dir" name="-do-ear-init"/> + <target depends="-pre-init,-init-private,-init-user,-init-project,-init-macrodef-property" name="-do-init"> + <condition property="have.tests"> + <or/> + </condition> + <condition property="have.sources"> + <or> + <available file="${src.dir}"/> + </or> + </condition> + <condition property="netbeans.home+have.tests"> + <and> + <isset property="netbeans.home"/> + <isset property="have.tests"/> + </and> + </condition> + <condition property="no.javadoc.preview"> + <isfalse value="${javadoc.preview}"/> + </condition> + <property name="javac.compilerargs" value=""/> + <condition property="no.deps"> + <and> + <istrue value="${no.dependencies}"/> + </and> + </condition> + <condition property="no.dist.ear.dir"> + <not> + <isset property="dist.ear.dir"/> + </not> + </condition> + <property name="build.web.excludes" value="${build.classes.excludes}"/> + <condition property="do.compile.jsps"> + <istrue value="${compile.jsps}"/> + </condition> + <condition property="do.debug.server"> + <or> + <not> + <isset property="debug.server"/> + </not> + <istrue value="${debug.server}"/> + <and> + <not> + <istrue value="${debug.server}"/> + </not> + <not> + <istrue value="${debug.client}"/> + </not> + </and> + </or> + </condition> + <condition property="do.debug.client"> + <istrue value="${debug.client}"/> + </condition> + <condition property="do.display.browser"> + <istrue value="${display.browser}"/> + </condition> + <condition property="do.display.browser.debug.old"> + <and> + <isset property="do.display.browser"/> + <not> + <isset property="do.debug.client"/> + </not> + <not> + <isset property="browser.context"/> + </not> + </and> + </condition> + <condition property="do.display.browser.debug"> + <and> + <isset property="do.display.browser"/> + <not> + <isset property="do.debug.client"/> + </not> + <isset property="browser.context"/> + </and> + </condition> + <available file="${conf.dir}/MANIFEST.MF" property="has.custom.manifest"/> + <available file="${persistence.xml.dir}/persistence.xml" property="has.persistence.xml"/> + <condition property="do.war.package.with.custom.manifest"> + <isset property="has.custom.manifest"/> + </condition> + <condition property="do.war.package.without.custom.manifest"> + <not> + <isset property="has.custom.manifest"/> + </not> + </condition> + <condition property="do.tmp.war.package.with.custom.manifest"> + <and> + <isset property="has.custom.manifest"/> + <or> + <isfalse value="${directory.deployment.supported}"/> + <isset property="dist.ear.dir"/> + </or> + </and> + </condition> + <condition property="do.tmp.war.package.without.custom.manifest"> + <and> + <not> + <isset property="has.custom.manifest"/> + </not> + <or> + <isfalse value="${directory.deployment.supported}"/> + <isset property="dist.ear.dir"/> + </or> + </and> + </condition> + <condition property="do.tmp.war.package"> + <or> + <isfalse value="${directory.deployment.supported}"/> + <isset property="dist.ear.dir"/> + </or> + </condition> + <property name="build.meta.inf.dir" value="${build.web.dir}/META-INF"/> + <condition else="" property="application.args.param" value="${application.args}"> + <and> + <isset property="application.args"/> + <not> + <equals arg1="${application.args}" arg2="" trim="true"/> + </not> + </and> + </condition> + <property name="source.encoding" value="${file.encoding}"/> + <condition property="javadoc.encoding.used" value="${javadoc.encoding}"> + <and> + <isset property="javadoc.encoding"/> + <not> + <equals arg1="${javadoc.encoding}" arg2=""/> + </not> + </and> + </condition> + <property name="javadoc.encoding.used" value="${source.encoding}"/> + <property name="includes" value="**"/> + <property name="excludes" value=""/> + <property name="runmain.jvmargs" value=""/> + <path id="endorsed.classpath.path" path="${endorsed.classpath}"/> + <condition else="" property="endorsed.classpath.cmd.line.arg" value="-Xbootclasspath/p:'${toString:endorsed.classpath.path}'"> + <and> + <isset property="endorsed.classpath"/> + <length length="0" string="${endorsed.classpath}" when="greater"/> + </and> + </condition> + <condition else="false" property="jdkBug6558476"> + <and> + <matches pattern="1\.[56]" string="${java.specification.version}"/> + <not> + <os family="unix"/> + </not> + </and> + </condition> + <property name="javac.fork" value="${jdkBug6558476}"/> + <condition property="junit.available"> + <or> + <available classname="org.junit.Test" classpath="${run.test.classpath}"/> + <available classname="junit.framework.Test" classpath="${run.test.classpath}"/> + </or> + </condition> + <condition property="testng.available"> + <available classname="org.testng.annotations.Test" classpath="${run.test.classpath}"/> + </condition> + <condition property="junit+testng.available"> + <and> + <istrue value="${junit.available}"/> + <istrue value="${testng.available}"/> + </and> + </condition> + <condition else="testng" property="testng.mode" value="mixed"> + <istrue value="${junit+testng.available}"/> + </condition> + <condition else="" property="testng.debug.mode" value="-mixed"> + <istrue value="${junit+testng.available}"/> + </condition> + </target> + <target depends="init" name="-init-cos" unless="deploy.on.save"> + <condition property="deploy.on.save" value="true"> + <or> + <istrue value="${j2ee.deploy.on.save}"/> + <istrue value="${j2ee.compile.on.save}"/> + </or> + </condition> + </target> + <target name="-post-init"> + <!-- Empty placeholder for easier customization. --> + <!-- You can override this target in the ../build.xml file. --> + </target> + <target depends="-pre-init,-init-private,-init-user,-init-project,-do-init" name="-init-check"> + <fail unless="src.dir">Must set src.dir</fail> + <fail unless="build.dir">Must set build.dir</fail> + <fail unless="build.web.dir">Must set build.web.dir</fail> + <fail unless="build.generated.dir">Must set build.generated.dir</fail> + <fail unless="dist.dir">Must set dist.dir</fail> + <fail unless="build.classes.dir">Must set build.classes.dir</fail> + <fail unless="dist.javadoc.dir">Must set dist.javadoc.dir</fail> + <fail unless="build.test.classes.dir">Must set build.test.classes.dir</fail> + <fail unless="build.test.results.dir">Must set build.test.results.dir</fail> + <fail unless="build.classes.excludes">Must set build.classes.excludes</fail> + <fail unless="dist.war">Must set dist.war</fail> + <condition property="missing.j2ee.server.home"> + <and> + <matches pattern="j2ee.server.home" string="${j2ee.platform.classpath}"/> + <not> + <isset property="j2ee.server.home"/> + </not> + </and> + </condition> + <fail if="missing.j2ee.server.home"> +The Java EE server classpath is not correctly set up - server home directory is missing. +Either open the project in the IDE and assign the server or setup the server classpath manually. +For example like this: + ant -Dj2ee.server.home=<app_server_installation_directory> + </fail> + <fail unless="j2ee.platform.classpath"> +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) + </fail> + </target> + <target name="-init-macrodef-property"> + <macrodef name="property" uri="http://www.netbeans.org/ns/web-project/1"> + <attribute name="name"/> + <attribute name="value"/> + <sequential> + <property name="@{name}" value="${@{value}}"/> + </sequential> + </macrodef> + </target> + <target depends="-init-ap-cmdline-properties" if="ap.supported.internal" name="-init-macrodef-javac-with-processors"> + <macrodef name="javac" uri="http://www.netbeans.org/ns/web-project/2"> + <attribute default="${src.dir}" name="srcdir"/> + <attribute default="${build.classes.dir}" name="destdir"/> + <attribute default="${javac.classpath}:${j2ee.platform.classpath}" name="classpath"/> + <attribute default="${javac.processorpath}" name="processorpath"/> + <attribute default="${build.generated.sources.dir}/ap-source-output" name="apgeneratedsrcdir"/> + <attribute default="${includes}" name="includes"/> + <attribute default="${excludes}" name="excludes"/> + <attribute default="${javac.debug}" name="debug"/> + <attribute default="${empty.dir}" name="gensrcdir"/> + <element name="customize" optional="true"/> + <sequential> + <property location="${build.dir}/empty" name="empty.dir"/> + <mkdir dir="${empty.dir}"/> + <mkdir dir="@{apgeneratedsrcdir}"/> + <javac debug="@{debug}" deprecation="${javac.deprecation}" destdir="@{destdir}" encoding="${source.encoding}" excludes="@{excludes}" fork="${javac.fork}" includeantruntime="false" includes="@{includes}" source="${javac.source}" srcdir="@{srcdir}" target="${javac.target}"> + <src> + <dirset dir="@{gensrcdir}" erroronmissingdir="false"> + <include name="*"/> + </dirset> + </src> + <classpath> + <path path="@{classpath}"/> + </classpath> + <compilerarg line="${endorsed.classpath.cmd.line.arg}"/> + <compilerarg line="${javac.compilerargs}"/> + <compilerarg value="-processorpath"/> + <compilerarg path="@{processorpath}:${empty.dir}"/> + <compilerarg line="${ap.processors.internal}"/> + <compilerarg value="-s"/> + <compilerarg path="@{apgeneratedsrcdir}"/> + <compilerarg line="${ap.proc.none.internal}"/> + <customize/> + </javac> + </sequential> + </macrodef> + </target> + <target depends="-init-ap-cmdline-properties" name="-init-macrodef-javac-without-processors" unless="ap.supported.internal"> + <macrodef name="javac" uri="http://www.netbeans.org/ns/web-project/2"> + <attribute default="${src.dir}" name="srcdir"/> + <attribute default="${build.classes.dir}" name="destdir"/> + <attribute default="${javac.classpath}:${j2ee.platform.classpath}" name="classpath"/> + <attribute default="${javac.processorpath}" name="processorpath"/> + <attribute default="${build.generated.sources.dir}/ap-source-output" name="apgeneratedsrcdir"/> + <attribute default="${includes}" name="includes"/> + <attribute default="${excludes}" name="excludes"/> + <attribute default="${javac.debug}" name="debug"/> + <attribute default="${empty.dir}" name="gensrcdir"/> + <element name="customize" optional="true"/> + <sequential> + <property location="${build.dir}/empty" name="empty.dir"/> + <mkdir dir="${empty.dir}"/> + <javac debug="@{debug}" deprecation="${javac.deprecation}" destdir="@{destdir}" encoding="${source.encoding}" excludes="@{excludes}" includeantruntime="false" includes="@{includes}" source="${javac.source}" srcdir="@{srcdir}" target="${javac.target}"> + <src> + <dirset dir="@{gensrcdir}" erroronmissingdir="false"> + <include name="*"/> + </dirset> + </src> + <classpath> + <path path="@{classpath}"/> + </classpath> + <compilerarg line="${endorsed.classpath.cmd.line.arg}"/> + <compilerarg line="${javac.compilerargs}"/> + <customize/> + </javac> + </sequential> + </macrodef> + </target> + <target depends="-init-macrodef-javac-with-processors,-init-macrodef-javac-without-processors" name="-init-macrodef-javac"> + <macrodef name="depend" uri="http://www.netbeans.org/ns/web-project/2"> + <attribute default="${src.dir}" name="srcdir"/> + <attribute default="${build.classes.dir}" name="destdir"/> + <attribute default="${javac.classpath}:${j2ee.platform.classpath}" name="classpath"/> + <sequential> + <depend cache="${build.dir}/depcache" destdir="@{destdir}" excludes="${excludes}" includes="${includes}" srcdir="@{srcdir}"> + <classpath> + <path path="@{classpath}"/> + </classpath> + </depend> + </sequential> + </macrodef> + <macrodef name="force-recompile" uri="http://www.netbeans.org/ns/web-project/2"> + <attribute default="${build.classes.dir}" name="destdir"/> + <sequential> + <fail unless="javac.includes">Must set javac.includes</fail> + <pathconvert pathsep="${line.separator}" property="javac.includes.binary"> + <path> + <filelist dir="@{destdir}" files="${javac.includes}"/> + </path> + <globmapper from="*.java" to="*.class"/> + </pathconvert> + <tempfile deleteonexit="true" property="javac.includesfile.binary"/> + <echo file="${javac.includesfile.binary}" message="${javac.includes.binary}"/> + <delete> + <files includesfile="${javac.includesfile.binary}"/> + </delete> + <delete file="${javac.includesfile.binary}"/> + </sequential> + </macrodef> + </target> + <target if="${junit.available}" name="-init-macrodef-junit-init"> + <condition else="false" property="nb.junit.batch" value="true"> + <and> + <istrue value="${junit.available}"/> + <not> + <isset property="test.method"/> + </not> + </and> + </condition> + <condition else="false" property="nb.junit.single" value="true"> + <and> + <istrue value="${junit.available}"/> + <isset property="test.method"/> + </and> + </condition> + </target> + <target name="-init-test-properties"> + <property name="test.binaryincludes" value="<nothing>"/> + <property name="test.binarytestincludes" value=""/> + <property name="test.binaryexcludes" value=""/> + </target> + <target if="${nb.junit.single}" name="-init-macrodef-junit-single" unless="${nb.junit.batch}"> + <macrodef name="junit" uri="http://www.netbeans.org/ns/web-project/2"> + <attribute default="${includes}" name="includes"/> + <attribute default="${excludes}" name="excludes"/> + <attribute default="**" name="testincludes"/> + <attribute default="" name="testmethods"/> + <element name="customize" optional="true"/> + <sequential> + <junit dir="${basedir}" errorproperty="tests.failed" failureproperty="tests.failed" fork="true" showoutput="true" tempdir="${java.io.tmpdir}"> + <test methods="@{testmethods}" name="@{testincludes}" todir="${build.test.results.dir}"/> + <syspropertyset> + <propertyref prefix="test-sys-prop."/> + <mapper from="test-sys-prop.*" to="*" type="glob"/> + </syspropertyset> + <formatter type="brief" usefile="false"/> + <formatter type="xml"/> + <jvmarg value="-ea"/> + <customize/> + </junit> + </sequential> + </macrodef> + </target> + <target depends="-init-test-properties" if="${nb.junit.batch}" name="-init-macrodef-junit-batch" unless="${nb.junit.single}"> + <macrodef name="junit" uri="http://www.netbeans.org/ns/web-project/2"> + <attribute default="${includes}" name="includes"/> + <attribute default="${excludes}" name="excludes"/> + <attribute default="**" name="testincludes"/> + <attribute default="" name="testmethods"/> + <element name="customize" optional="true"/> + <sequential> + <property name="run.jvmargs.ide" value=""/> + <junit dir="${basedir}" errorproperty="tests.failed" failureproperty="tests.failed" fork="true" showoutput="true" tempdir="${build.dir}"> + <batchtest todir="${build.test.results.dir}"> + <fileset dir="${build.test.classes.dir}" excludes="@{excludes},${excludes},${test.binaryexcludes}" includes="${test.binaryincludes}"> + <filename name="${test.binarytestincludes}"/> + </fileset> + </batchtest> + <syspropertyset> + <propertyref prefix="test-sys-prop."/> + <mapper from="test-sys-prop.*" to="*" type="glob"/> + </syspropertyset> + <formatter type="brief" usefile="false"/> + <formatter type="xml"/> + <jvmarg value="-ea"/> + <jvmarg line="${run.jvmargs.ide}"/> + <customize/> + </junit> + </sequential> + </macrodef> + </target> + <target depends="-init-macrodef-junit-init,-init-macrodef-junit-single, -init-macrodef-junit-batch" if="${junit.available}" name="-init-macrodef-junit"/> + <target if="${testng.available}" name="-init-macrodef-testng"> + <macrodef name="testng" uri="http://www.netbeans.org/ns/web-project/2"> + <attribute default="${includes}" name="includes"/> + <attribute default="${excludes}" name="excludes"/> + <attribute default="**" name="testincludes"/> + <attribute default="" name="testmethods"/> + <element name="customize" optional="true"/> + <sequential> + <condition else="" property="testng.methods.arg" value="@{testincludes}.@{testmethods}"> + <isset property="test.method"/> + </condition> + <union id="test.set"/> + <taskdef classname="org.testng.TestNGAntTask" classpath="${run.test.classpath}" name="testng"/> + <testng classfilesetref="test.set" failureProperty="tests.failed" listeners="org.testng.reporters.VerboseReporter" methods="${testng.methods.arg}" mode="${testng.mode}" outputdir="${build.test.results.dir}" suitename="BasicServletDemo" testname="TestNG tests" workingDir="${basedir}"> + <xmlfileset dir="${build.test.classes.dir}" includes="@{testincludes}"/> + <propertyset> + <propertyref prefix="test-sys-prop."/> + <mapper from="test-sys-prop.*" to="*" type="glob"/> + </propertyset> + <customize/> + </testng> + </sequential> + </macrodef> + </target> + <target name="-init-macrodef-test-impl"> + <macrodef name="test-impl" uri="http://www.netbeans.org/ns/web-project/2"> + <attribute default="${includes}" name="includes"/> + <attribute default="${excludes}" name="excludes"/> + <attribute default="**" name="testincludes"/> + <attribute default="" name="testmethods"/> + <element implicit="true" name="customize" optional="true"/> + <sequential> + <echo>No tests executed.</echo> + </sequential> + </macrodef> + </target> + <target depends="-init-macrodef-junit" if="${junit.available}" name="-init-macrodef-junit-impl"> + <macrodef name="test-impl" uri="http://www.netbeans.org/ns/web-project/2"> + <attribute default="${includes}" name="includes"/> + <attribute default="${excludes}" name="excludes"/> + <attribute default="**" name="testincludes"/> + <attribute default="" name="testmethods"/> + <element implicit="true" name="customize" optional="true"/> + <sequential> + <webproject2:junit excludes="@{excludes}" includes="@{includes}" testincludes="@{testincludes}" testmethods="@{testmethods}"> + <customize/> + </webproject2:junit> + </sequential> + </macrodef> + </target> + <target depends="-init-macrodef-testng" if="${testng.available}" name="-init-macrodef-testng-impl"> + <macrodef name="test-impl" uri="http://www.netbeans.org/ns/web-project/2"> + <attribute default="${includes}" name="includes"/> + <attribute default="${excludes}" name="excludes"/> + <attribute default="**" name="testincludes"/> + <attribute default="" name="testmethods"/> + <element implicit="true" name="customize" optional="true"/> + <sequential> + <webproject2:testng excludes="@{excludes}" includes="@{includes}" testincludes="@{testincludes}" testmethods="@{testmethods}"> + <customize/> + </webproject2:testng> + </sequential> + </macrodef> + </target> + <target depends="-init-macrodef-test-impl,-init-macrodef-junit-impl,-init-macrodef-testng-impl" name="-init-macrodef-test"> + <macrodef name="test" uri="http://www.netbeans.org/ns/web-project/2"> + <attribute default="${includes}" name="includes"/> + <attribute default="${excludes}" name="excludes"/> + <attribute default="**" name="testincludes"/> + <attribute default="" name="testmethods"/> + <sequential> + <webproject2:test-impl excludes="@{excludes}" includes="@{includes}" testincludes="@{testincludes}" testmethods="@{testmethods}"> + <customize> + <classpath> + <path path="${run.test.classpath}:${j2ee.platform.classpath}:${j2ee.platform.embeddableejb.classpath}"/> + </classpath> + <jvmarg line="${endorsed.classpath.cmd.line.arg}"/> + <jvmarg line="${runmain.jvmargs}"/> + </customize> + </webproject2:test-impl> + </sequential> + </macrodef> + </target> + <target if="${junit.available}" name="-init-macrodef-junit-debug" unless="${nb.junit.batch}"> + <macrodef name="junit-debug" uri="http://www.netbeans.org/ns/web-project/2"> + <attribute default="${includes}" name="includes"/> + <attribute default="${excludes}" name="excludes"/> + <attribute default="**" name="testincludes"/> + <attribute default="" name="testmethods"/> + <element name="customize" optional="true"/> + <sequential> + <junit dir="${basedir}" errorproperty="tests.failed" failureproperty="tests.failed" fork="true" showoutput="true" tempdir="${java.io.tmpdir}"> + <test methods="@{testmethods}" name="@{testincludes}" todir="${build.test.results.dir}"/> + <syspropertyset> + <propertyref prefix="test-sys-prop."/> + <mapper from="test-sys-prop.*" to="*" type="glob"/> + </syspropertyset> + <formatter type="brief" usefile="false"/> + <formatter type="xml"/> + <jvmarg value="-ea"/> + <jvmarg value="-agentlib:jdwp=transport=${debug-transport},address=${jpda.address}"/> + <customize/> + </junit> + </sequential> + </macrodef> + </target> + <target depends="-init-test-properties" if="${nb.junit.batch}" name="-init-macrodef-junit-debug-batch"> + <macrodef name="junit-debug" uri="http://www.netbeans.org/ns/web-project/2"> + <attribute default="${includes}" name="includes"/> + <attribute default="${excludes}" name="excludes"/> + <attribute default="**" name="testincludes"/> + <attribute default="" name="testmethods"/> + <element name="customize" optional="true"/> + <sequential> + <property name="run.jvmargs.ide" value=""/> + <junit dir="${basedir}" errorproperty="tests.failed" failureproperty="tests.failed" fork="true" showoutput="true" tempdir="${build.dir}"> + <batchtest todir="${build.test.results.dir}"> + <fileset dir="${build.test.classes.dir}" excludes="@{excludes},${excludes},${test.binaryexcludes}" includes="${test.binaryincludes}"> + <filename name="${test.binarytestincludes}"/> + </fileset> + </batchtest> + <syspropertyset> + <propertyref prefix="test-sys-prop."/> + <mapper from="test-sys-prop.*" to="*" type="glob"/> + </syspropertyset> + <formatter type="brief" usefile="false"/> + <formatter type="xml"/> + <jvmarg value="-ea"/> + <jvmarg line="${run.jvmargs.ide}"/> + <jvmarg value="-agentlib:jdwp=transport=${debug-transport},address=${jpda.address}"/> + <customize/> + </junit> + </sequential> + </macrodef> + </target> + <target depends="-init-macrodef-junit-debug,-init-macrodef-junit-debug-batch" if="${junit.available}" name="-init-macrodef-junit-debug-impl"> + <macrodef name="test-debug-impl" uri="http://www.netbeans.org/ns/web-project/2"> + <attribute default="${includes}" name="includes"/> + <attribute default="${excludes}" name="excludes"/> + <attribute default="**" name="testincludes"/> + <attribute default="" name="testmethods"/> + <element implicit="true" name="customize" optional="true"/> + <sequential> + <webproject2:junit-debug excludes="@{excludes}" includes="@{includes}" testincludes="@{testincludes}" testmethods="@{testmethods}"> + <customize/> + </webproject2:junit-debug> + </sequential> + </macrodef> + </target> + <target if="${testng.available}" name="-init-macrodef-testng-debug"> + <macrodef name="testng-debug" uri="http://www.netbeans.org/ns/web-project/2"> + <attribute default="${main.class}" name="testClass"/> + <attribute default="" name="testMethod"/> + <element name="customize2" optional="true"/> + <sequential> + <condition else="-testclass @{testClass}" property="test.class.or.method" value="-methods @{testClass}.@{testMethod}"> + <isset property="test.method"/> + </condition> + <condition else="-suitename BasicServletDemo -testname @{testClass} ${test.class.or.method}" property="testng.cmd.args" value="@{testClass}"> + <matches pattern=".*\.xml" string="@{testClass}"/> + </condition> + <delete dir="${build.test.results.dir}" quiet="true"/> + <mkdir dir="${build.test.results.dir}"/> + <webproject1:debug args="${testng.cmd.args}" classname="org.testng.TestNG" classpath="${debug.test.classpath}:${j2ee.platform.embeddableejb.classpath}"> + <customize> + <customize2/> + <jvmarg value="-ea"/> + <arg line="${testng.debug.mode}"/> + <arg line="-d ${build.test.results.dir}"/> + <arg line="-listener org.testng.reporters.VerboseReporter"/> + </customize> + </webproject1:debug> + </sequential> + </macrodef> + </target> + <target depends="-init-macrodef-testng-debug" if="${testng.available}" name="-init-macrodef-testng-debug-impl"> + <macrodef name="testng-debug-impl" uri="http://www.netbeans.org/ns/web-project/2"> + <attribute default="${main.class}" name="testClass"/> + <attribute default="" name="testMethod"/> + <element implicit="true" name="customize2" optional="true"/> + <sequential> + <webproject2:testng-debug testClass="@{testClass}" testMethod="@{testMethod}"> + <customize2/> + </webproject2:testng-debug> + </sequential> + </macrodef> + </target> + <target depends="-init-macrodef-junit-debug-impl" if="${junit.available}" name="-init-macrodef-test-debug-junit"> + <macrodef name="test-debug" uri="http://www.netbeans.org/ns/web-project/2"> + <attribute default="${includes}" name="includes"/> + <attribute default="${excludes}" name="excludes"/> + <attribute default="**" name="testincludes"/> + <attribute default="" name="testmethods"/> + <attribute default="${main.class}" name="testClass"/> + <attribute default="" name="testMethod"/> + <sequential> + <webproject2:test-debug-impl excludes="@{excludes}" includes="@{includes}" testincludes="@{testincludes}" testmethods="@{testmethods}"> + <customize> + <classpath> + <path path="${run.test.classpath}:${j2ee.platform.classpath}:${j2ee.platform.embeddableejb.classpath}"/> + </classpath> + <jvmarg line="${endorsed.classpath.cmd.line.arg}"/> + <jvmarg line="${runmain.jvmargs}"/> + </customize> + </webproject2:test-debug-impl> + </sequential> + </macrodef> + </target> + <target depends="-init-macrodef-testng-debug-impl" if="${testng.available}" name="-init-macrodef-test-debug-testng"> + <macrodef name="test-debug" uri="http://www.netbeans.org/ns/web-project/2"> + <attribute default="${includes}" name="includes"/> + <attribute default="${excludes}" name="excludes"/> + <attribute default="**" name="testincludes"/> + <attribute default="" name="testmethods"/> + <attribute default="${main.class}" name="testClass"/> + <attribute default="" name="testMethod"/> + <sequential> + <webproject2:testng-debug-impl testClass="@{testClass}" testMethod="@{testMethod}"> + <customize2> + <syspropertyset> + <propertyref prefix="test-sys-prop."/> + <mapper from="test-sys-prop.*" to="*" type="glob"/> + </syspropertyset> + </customize2> + </webproject2:testng-debug-impl> + </sequential> + </macrodef> + </target> + <target depends="-init-macrodef-test-debug-junit,-init-macrodef-test-debug-testng" name="-init-macrodef-test-debug"/> + <target name="-init-macrodef-java"> + <macrodef name="java" uri="http://www.netbeans.org/ns/web-project/1"> + <attribute default="${main.class}" name="classname"/> + <attribute default="${debug.classpath}" name="classpath"/> + <element name="customize" optional="true"/> + <sequential> + <java classname="@{classname}" fork="true"> + <jvmarg line="${endorsed.classpath.cmd.line.arg}"/> + <jvmarg line="${runmain.jvmargs}"/> + <classpath> + <path path="@{classpath}:${j2ee.platform.classpath}"/> + </classpath> + <syspropertyset> + <propertyref prefix="run-sys-prop."/> + <mapper from="run-sys-prop.*" to="*" type="glob"/> + </syspropertyset> + <customize/> + </java> + </sequential> + </macrodef> + </target> + <target name="-init-macrodef-nbjsdebug"> + <macrodef name="nbjsdebugstart" uri="http://www.netbeans.org/ns/web-project/1"> + <attribute default="${client.url}" name="webUrl"/> + <sequential> + <nbjsdebugstart urlPart="${client.urlPart}" webUrl="@{webUrl}"/> + </sequential> + </macrodef> + </target> + <target depends="-init-debug-args" name="-init-macrodef-nbjpda"> + <macrodef name="nbjpdastart" uri="http://www.netbeans.org/ns/web-project/1"> + <attribute default="${main.class}" name="name"/> + <attribute default="${debug.classpath}:${j2ee.platform.classpath}" name="classpath"/> + <sequential> + <nbjpdastart addressproperty="jpda.address" name="@{name}" transport="${debug-transport}"> + <classpath> + <path path="@{classpath}"/> + </classpath> + </nbjpdastart> + </sequential> + </macrodef> + <macrodef name="nbjpdareload" uri="http://www.netbeans.org/ns/web-project/1"> + <attribute default="${build.classes.dir}" name="dir"/> + <sequential> + <nbjpdareload> + <fileset dir="@{dir}" includes="${fix.classes}"> + <include name="${fix.includes}*.class"/> + </fileset> + </nbjpdareload> + </sequential> + </macrodef> + <macrodef name="nbjpdaappreloaded" uri="http://www.netbeans.org/ns/web-project/1"> + <sequential> + <nbjpdaappreloaded/> + </sequential> + </macrodef> + </target> + <target name="-init-debug-args"> + <condition else="dt_socket" property="debug-transport-by-os" value="dt_shmem"> + <os family="windows"/> + </condition> + <condition else="${debug-transport-by-os}" property="debug-transport" value="${debug.transport}"> + <isset property="debug.transport"/> + </condition> + </target> + <target depends="-init-debug-args" name="-init-macrodef-debug"> + <macrodef name="debug" uri="http://www.netbeans.org/ns/web-project/1"> + <attribute default="${main.class}" name="classname"/> + <attribute default="${debug.classpath}:${j2ee.platform.classpath}" name="classpath"/> + <attribute default="${application.args.param}" name="args"/> + <element name="customize" optional="true"/> + <sequential> + <java classname="@{classname}" fork="true"> + <jvmarg line="${endorsed.classpath.cmd.line.arg}"/> + <jvmarg value="-agentlib:jdwp=transport=${debug-transport},address=${jpda.address}"/> + <jvmarg line="${runmain.jvmargs}"/> + <classpath> + <path path="@{classpath}"/> + </classpath> + <syspropertyset> + <propertyref prefix="run-sys-prop."/> + <mapper from="run-sys-prop.*" to="*" type="glob"/> + </syspropertyset> + <arg line="@{args}"/> + <customize/> + </java> + </sequential> + </macrodef> + </target> + <target name="-init-taskdefs"> + <fail unless="libs.CopyLibs.classpath"> +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 + </fail> + <taskdef classpath="${libs.CopyLibs.classpath}" resource="org/netbeans/modules/java/j2seproject/copylibstask/antlib.xml"/> + </target> + <target name="-init-ap-cmdline-properties"> + <property name="annotation.processing.enabled" value="true"/> + <property name="annotation.processing.processors.list" value=""/> + <property name="annotation.processing.run.all.processors" value="true"/> + <property name="javac.processorpath" value="${javac.classpath}"/> + <property name="javac.test.processorpath" value="${javac.test.classpath}"/> + <condition property="ap.supported.internal" value="true"> + <not> + <matches pattern="1\.[0-5](\..*)?" string="${javac.source}"/> + </not> + </condition> + </target> + <target depends="-init-ap-cmdline-properties" if="ap.supported.internal" name="-init-ap-cmdline-supported"> + <condition else="" property="ap.processors.internal" value="-processor ${annotation.processing.processors.list}"> + <isfalse value="${annotation.processing.run.all.processors}"/> + </condition> + <condition else="" property="ap.proc.none.internal" value="-proc:none"> + <isfalse value="${annotation.processing.enabled}"/> + </condition> + </target> + <target depends="-init-ap-cmdline-properties,-init-ap-cmdline-supported" name="-init-ap-cmdline"> + <property name="ap.cmd.line.internal" value=""/> + </target> + <!-- + pre NB7.2 profiling section; consider it deprecated + --> + <target depends="-profile-pre-init, init, -profile-post-init, -profile-init-check" if="profiler.info.jvmargs.agent" name="profile-init"/> + <target if="profiler.info.jvmargs.agent" name="-profile-pre-init"> + <!-- Empty placeholder for easier customization. --> + <!-- You can override this target in the ../build.xml file. --> + </target> + <target if="profiler.info.jvmargs.agent" name="-profile-post-init"> + <!-- Empty placeholder for easier customization. --> + <!-- You can override this target in the ../build.xml file. --> + </target> + <target depends="-profile-pre-init, init, -profile-post-init" if="profiler.info.jvmargs.agent" name="-profile-init-check"> + <fail unless="profiler.info.jvm">Must set JVM to use for profiling in profiler.info.jvm</fail> + <fail unless="profiler.info.jvmargs.agent">Must set profiler agent JVM arguments in profiler.info.jvmargs.agent</fail> + </target> + <!-- + end of pre NB7.2 profiling section + --> + <target depends="-pre-init,-init-private,-init-user,-init-project,-do-init,-post-init,-init-check,-init-macrodef-property,-init-macrodef-javac,-init-macrodef-test,-init-macrodef-test-debug,-init-macrodef-java,-init-macrodef-nbjpda,-init-macrodef-nbjsdebug,-init-macrodef-debug,-init-taskdefs,-init-ap-cmdline" name="init"/> + <!-- + COMPILATION SECTION + --> + <target depends="init" if="no.dist.ear.dir" name="deps-module-jar" unless="no.deps"/> + <target depends="init" if="dist.ear.dir" name="deps-ear-jar" unless="no.deps"/> + <target depends="init, deps-module-jar, deps-ear-jar" name="deps-jar" unless="no.deps"/> + <target depends="init,deps-jar" name="-pre-pre-compile"> + <mkdir dir="${build.classes.dir}"/> + </target> + <target name="-pre-compile"> + <!-- Empty placeholder for easier customization. --> + <!-- You can override this target in the ../build.xml file. --> + </target> + <target name="-copy-webdir"> + <copy todir="${build.web.dir}"> + <fileset dir="${web.docbase.dir}" excludes="${build.web.excludes},${excludes}" includes="${includes}"/> + </copy> + <copy todir="${build.web.dir}/WEB-INF"> + <fileset dir="${webinf.dir}" excludes="${build.web.excludes}"/> + </copy> + </target> + <target depends="init, deps-jar, -pre-pre-compile, -pre-compile, -copy-manifest, -copy-persistence-xml, -copy-webdir, library-inclusion-in-archive,library-inclusion-in-manifest" if="have.sources" name="-do-compile"> + <webproject2:javac destdir="${build.classes.dir}" gensrcdir="${build.generated.sources.dir}"/> + <copy todir="${build.classes.dir}"> + <fileset dir="${src.dir}" excludes="${build.classes.excludes},${excludes}" includes="${includes}"/> + </copy> + </target> + <target if="has.custom.manifest" name="-copy-manifest"> + <mkdir dir="${build.meta.inf.dir}"/> + <copy todir="${build.meta.inf.dir}"> + <fileset dir="${conf.dir}" includes="MANIFEST.MF"/> + </copy> + </target> + <target if="has.persistence.xml" name="-copy-persistence-xml"> + <mkdir dir="${build.web.dir}/WEB-INF/classes/META-INF"/> + <copy todir="${build.web.dir}/WEB-INF/classes/META-INF"> + <fileset dir="${persistence.xml.dir}" includes="persistence.xml orm.xml"/> + </copy> + </target> + <target name="-post-compile"> + <!-- Empty placeholder for easier customization. --> + <!-- You can override this target in the ../build.xml file. --> + </target> + <target depends="init,deps-jar,-pre-pre-compile,-pre-compile,-do-compile,-post-compile" description="Compile project." name="compile"/> + <target name="-pre-compile-single"> + <!-- Empty placeholder for easier customization. --> + <!-- You can override this target in the ../build.xml file. --> + </target> + <target depends="init,deps-jar,-pre-pre-compile" name="-do-compile-single"> + <fail unless="javac.includes">Must select some files in the IDE or set javac.includes</fail> + <webproject2:javac excludes="" gensrcdir="${build.generated.sources.dir}" includes="${javac.includes}"/> + <copy todir="${build.classes.dir}"> + <fileset dir="${src.dir}" excludes="${build.classes.excludes},${excludes}" includes="${includes}"/> + </copy> + </target> + <target name="-post-compile-single"> + <!-- Empty placeholder for easier customization. --> + <!-- You can override this target in the ../build.xml file. --> + </target> + <target depends="init,deps-jar,-pre-pre-compile,-pre-compile-single,-do-compile-single,-post-compile-single" name="compile-single"/> + <property name="jspc.schemas" value="/resources/schemas/"/> + <property name="jspc.dtds" value="/resources/dtds/"/> + <target depends="compile" description="Test compile JSP pages to expose compilation errors." if="do.compile.jsps" name="compile-jsps"> + <mkdir dir="${build.generated.dir}/src"/> + <java classname="org.netbeans.modules.web.project.ant.JspC" failonerror="true" fork="true"> + <arg value="-uriroot"/> + <arg file="${basedir}/${build.web.dir}"/> + <arg value="-d"/> + <arg file="${basedir}/${build.generated.dir}/src"/> + <arg value="-die1"/> + <arg value="-schemas ${jspc.schemas}"/> + <arg value="-dtds ${jspc.dtds}"/> + <arg value="-compilerSourceVM ${javac.source}"/> + <arg value="-compilerTargetVM ${javac.target}"/> + <arg value="-javaEncoding ${source.encoding}"/> + <arg value="-sysClasspath ${libs.jsp-compilation-syscp.classpath}"/> + <classpath path="${java.home}/../lib/tools.jar:${libs.jsp-compiler.classpath}:${libs.jsp-compilation.classpath}"/> + </java> + <mkdir dir="${build.generated.dir}/classes"/> + <webproject2:javac classpath="${build.classes.dir}:${libs.jsp-compilation.classpath}:${javac.classpath}:${j2ee.platform.classpath}" destdir="${build.generated.dir}/classes" srcdir="${build.generated.dir}/src"/> + </target> + <target depends="compile" if="jsp.includes" name="-do-compile-single-jsp"> + <fail unless="javac.jsp.includes">Must select some files in the IDE or set javac.jsp.includes</fail> + <mkdir dir="${build.generated.dir}/src"/> + <java classname="org.netbeans.modules.web.project.ant.JspCSingle" failonerror="true" fork="true"> + <arg value="-uriroot"/> + <arg file="${basedir}/${build.web.dir}"/> + <arg value="-d"/> + <arg file="${basedir}/${build.generated.dir}/src"/> + <arg value="-die1"/> + <arg value="-schemas ${jspc.schemas}"/> + <arg value="-dtds ${jspc.dtds}"/> + <arg value="-sysClasspath ${libs.jsp-compilation-syscp.classpath}"/> + <arg value="-jspc.files"/> + <arg path="${jsp.includes}"/> + <arg value="-compilerSourceVM ${javac.source}"/> + <arg value="-compilerTargetVM ${javac.target}"/> + <arg value="-javaEncoding ${source.encoding}"/> + <classpath path="${java.home}/../lib/tools.jar:${libs.jsp-compiler.classpath}:${libs.jsp-compilation.classpath}"/> + </java> + <mkdir dir="${build.generated.dir}/classes"/> + <webproject2:javac classpath="${build.classes.dir}:${libs.jsp-compilation.classpath}:${javac.classpath}:${j2ee.platform.classpath}" destdir="${build.generated.dir}/classes" srcdir="${build.generated.dir}/src"> + <customize> + <patternset includes="${javac.jsp.includes}"/> + </customize> + </webproject2:javac> + </target> + <target name="compile-single-jsp"> + <fail unless="jsp.includes">Must select a file in the IDE or set jsp.includes</fail> + <antcall target="-do-compile-single-jsp"/> + </target> + <!-- + DIST BUILDING SECTION + --> + <target name="-pre-dist"> + <!-- Empty placeholder for easier customization. --> + <!-- You can override this target in the ../build.xml file. --> + </target> + <target depends="init,compile,compile-jsps,-pre-dist" if="do.war.package.without.custom.manifest" name="-do-dist-without-manifest"> + <dirname file="${dist.war}" property="dist.jar.dir"/> + <mkdir dir="${dist.jar.dir}"/> + <jar compress="${jar.compress}" jarfile="${dist.war}"> + <fileset dir="${build.web.dir}" excludes="WEB-INF/classes/.netbeans_*,${dist.archive.excludes}"/> + </jar> + </target> + <target depends="init,compile,compile-jsps,-pre-dist" if="do.war.package.with.custom.manifest" name="-do-dist-with-manifest"> + <dirname file="${dist.war}" property="dist.jar.dir"/> + <mkdir dir="${dist.jar.dir}"/> + <jar compress="${jar.compress}" jarfile="${dist.war}" manifest="${build.meta.inf.dir}/MANIFEST.MF"> + <fileset dir="${build.web.dir}" excludes="WEB-INF/classes/.netbeans_*,${dist.archive.excludes}"/> + </jar> + </target> + <target depends="init,compile,compile-jsps,-pre-dist" if="do.tmp.war.package.without.custom.manifest" name="-do-tmp-dist-without-manifest"> + <dirname file="${dist.war}" property="dist.jar.dir"/> + <mkdir dir="${dist.jar.dir}"/> + <jar compress="${jar.compress}" jarfile="${dist.war}"> + <fileset dir="${build.web.dir}" excludes="WEB-INF/classes/.netbeans_*,${dist.archive.excludes}"/> + </jar> + </target> + <target depends="init,compile,compile-jsps,-pre-dist" if="do.tmp.war.package.with.custom.manifest" name="-do-tmp-dist-with-manifest"> + <dirname file="${dist.war}" property="dist.jar.dir"/> + <mkdir dir="${dist.jar.dir}"/> + <jar compress="${jar.compress}" jarfile="${dist.war}" manifest="${build.meta.inf.dir}/MANIFEST.MF"> + <fileset dir="${build.web.dir}" excludes="WEB-INF/classes/.netbeans_*,${dist.archive.excludes}"/> + </jar> + </target> + <target depends="init,compile,compile-jsps,-pre-dist,-do-dist-with-manifest,-do-dist-without-manifest" name="do-dist"/> + <target depends="init" if="dist.ear.dir" name="library-inclusion-in-manifest"> + <mkdir dir="${build.web.dir}/META-INF"/> + <manifest file="${build.web.dir}/META-INF/MANIFEST.MF" mode="update"/> + </target> + <target depends="init" name="library-inclusion-in-archive" unless="dist.ear.dir"/> + <target depends="init" if="dist.ear.dir" name="-clean-webinf-lib"> + <delete dir="${build.web.dir}/WEB-INF/lib"/> + </target> + <target depends="init,-clean-webinf-lib,compile,compile-jsps,-pre-dist,library-inclusion-in-manifest" if="do.tmp.war.package" name="do-ear-dist"> + <dirname file="${dist.ear.war}" property="dist.jar.dir"/> + <mkdir dir="${dist.jar.dir}"/> + <jar compress="${jar.compress}" jarfile="${dist.ear.war}" manifest="${build.web.dir}/META-INF/MANIFEST.MF"> + <fileset dir="${build.web.dir}" excludes="WEB-INF/classes/.netbeans_*,${dist.archive.excludes}"/> + </jar> + </target> + <target name="-post-dist"> + <!-- Empty placeholder for easier customization. --> + <!-- You can override this target in the ../build.xml file. --> + </target> + <target depends="init,compile,-pre-dist,do-dist,-post-dist" description="Build distribution (WAR)." name="dist"/> + <target depends="init,-clean-webinf-lib,-init-cos,compile,-pre-dist,do-ear-dist,-post-dist" description="Build distribution (WAR) to be packaged into an EAR." name="dist-ear"/> + <!-- + EXECUTION SECTION + --> + <target depends="run-deploy,run-display-browser" description="Deploy to server and show in browser." name="run"/> + <target name="-pre-run-deploy"> + <!-- Empty placeholder for easier customization. --> + <!-- You can override this target in the ../build.xml file. --> + </target> + <target name="-post-run-deploy"> + <!-- Empty placeholder for easier customization. --> + <!-- You can override this target in the ../build.xml file. --> + </target> + <target name="-pre-nbmodule-run-deploy"> + <!-- Empty placeholder for easier customization. --> + <!-- This target can be overriden by NetBeans modules. Don't override it directly, use -pre-run-deploy task instead. --> + </target> + <target name="-post-nbmodule-run-deploy"> + <!-- Empty placeholder for easier customization. --> + <!-- This target can be overriden by NetBeans modules. Don't override it directly, use -post-run-deploy task instead. --> + </target> + <target name="-run-deploy-am"> + <!-- Task to deploy to the Access Manager runtime. --> + </target> + <target depends="init,-init-cos,compile,compile-jsps,-do-compile-single-jsp,-pre-dist,-do-tmp-dist-with-manifest,-do-tmp-dist-without-manifest,-pre-run-deploy,-pre-nbmodule-run-deploy,-run-deploy-nb,-init-deploy-ant,-deploy-ant,-run-deploy-am,-post-nbmodule-run-deploy,-post-run-deploy,-do-update-breakpoints" name="run-deploy"/> + <target if="netbeans.home" name="-run-deploy-nb"> + <nbdeploy clientUrlPart="${client.urlPart}" debugmode="false" forceRedeploy="${forceRedeploy}"/> + </target> + <target name="-init-deploy-ant" unless="netbeans.home"> + <property name="deploy.ant.archive" value="${dist.war}"/> + <property name="deploy.ant.docbase.dir" value="${web.docbase.dir}"/> + <property name="deploy.ant.resource.dir" value="${resource.dir}"/> + <property name="deploy.ant.enabled" value="true"/> + </target> + <target depends="dist,-run-undeploy-nb,-init-deploy-ant,-undeploy-ant" name="run-undeploy"/> + <target if="netbeans.home" name="-run-undeploy-nb"> + <fail message="Undeploy is not supported from within the IDE"/> + </target> + <target depends="init,-pre-dist,dist,-post-dist" name="verify"> + <nbverify file="${dist.war}"/> + </target> + <target depends="run-deploy,-init-display-browser,-display-browser-nb-old,-display-browser-nb,-display-browser-cl" name="run-display-browser"/> + <target if="do.display.browser" name="-init-display-browser"> + <condition property="do.display.browser.nb.old"> + <and> + <isset property="netbeans.home"/> + <not> + <isset property="browser.context"/> + </not> + </and> + </condition> + <condition property="do.display.browser.nb"> + <and> + <isset property="netbeans.home"/> + <isset property="browser.context"/> + </and> + </condition> + <condition property="do.display.browser.cl"> + <isset property="deploy.ant.enabled"/> + </condition> + </target> + <target if="do.display.browser.nb.old" name="-display-browser-nb-old"> + <nbbrowse url="${client.url}"/> + </target> + <target if="do.display.browser.nb" name="-display-browser-nb"> + <nbbrowse context="${browser.context}" url="${client.url}" urlPath="${client.urlPart}"/> + </target> + <target if="do.display.browser.cl" name="-get-browser" unless="browser"> + <condition property="browser" value="rundll32"> + <os family="windows"/> + </condition> + <condition else="" property="browser.args" value="url.dll,FileProtocolHandler"> + <os family="windows"/> + </condition> + <condition property="browser" value="/usr/bin/open"> + <os family="mac"/> + </condition> + <property environment="env"/> + <condition property="browser" value="${env.BROWSER}"> + <isset property="env.BROWSER"/> + </condition> + <condition property="browser" value="/usr/bin/firefox"> + <available file="/usr/bin/firefox"/> + </condition> + <condition property="browser" value="/usr/local/firefox/firefox"> + <available file="/usr/local/firefox/firefox"/> + </condition> + <condition property="browser" value="/usr/bin/mozilla"> + <available file="/usr/bin/mozilla"/> + </condition> + <condition property="browser" value="/usr/local/mozilla/mozilla"> + <available file="/usr/local/mozilla/mozilla"/> + </condition> + <condition property="browser" value="/usr/sfw/lib/firefox/firefox"> + <available file="/usr/sfw/lib/firefox/firefox"/> + </condition> + <condition property="browser" value="/opt/csw/bin/firefox"> + <available file="/opt/csw/bin/firefox"/> + </condition> + <condition property="browser" value="/usr/sfw/lib/mozilla/mozilla"> + <available file="/usr/sfw/lib/mozilla/mozilla"/> + </condition> + <condition property="browser" value="/opt/csw/bin/mozilla"> + <available file="/opt/csw/bin/mozilla"/> + </condition> + </target> + <target depends="-get-browser" if="do.display.browser.cl" name="-display-browser-cl"> + <fail unless="browser"> + Browser not found, cannot launch the deployed application. Try to set the BROWSER environment variable. + </fail> + <property name="browse.url" value="${deploy.ant.client.url}${client.urlPart}"/> + <echo>Launching ${browse.url}</echo> + <exec executable="${browser}" spawn="true"> + <arg line="${browser.args} ${browse.url}"/> + </exec> + </target> + <target depends="init,-init-cos,compile-single" name="run-main"> + <fail unless="run.class">Must select one file in the IDE or set run.class</fail> + <webproject1:java classname="${run.class}"/> + </target> + <target depends="init,compile-test-single,-pre-test-run-single" name="run-test-with-main"> + <fail unless="run.class">Must select one file in the IDE or set run.class</fail> + <webproject1:java classname="${run.class}" classpath="${run.test.classpath}"/> + </target> + <target depends="init" if="netbeans.home" name="-do-update-breakpoints"> + <webproject1:nbjpdaappreloaded/> + </target> + <!-- + DEBUGGING SECTION + --> + <target depends="init,-init-cos,compile,compile-jsps,-do-compile-single-jsp,-pre-dist,-do-tmp-dist-with-manifest,-do-tmp-dist-without-manifest" description="Debug project in IDE." if="netbeans.home" name="debug"> + <nbstartserver debugmode="true"/> + <antcall target="connect-debugger"/> + <nbdeploy clientUrlPart="${client.urlPart}" debugmode="true" forceRedeploy="true"/> + <antcall target="debug-display-browser-old"/> + <antcall target="debug-display-browser"/> + <antcall target="connect-client-debugger"/> + </target> + <target if="do.debug.server" name="connect-debugger" unless="is.debugged"> + <condition property="listeningcp" value="sourcepath"> + <istrue value="${j2ee.compile.on.save}"/> + </condition> + <nbjpdaconnect address="${jpda.address}" host="${jpda.host}" listeningcp="${listeningcp}" name="${name}" transport="${jpda.transport}"> + <classpath> + <path path="${debug.classpath}:${j2ee.platform.classpath}"/> + </classpath> + <sourcepath> + <path path="${web.docbase.dir}"/> + </sourcepath> + </nbjpdaconnect> + </target> + <target if="do.display.browser.debug.old" name="debug-display-browser-old"> + <nbbrowse url="${client.url}"/> + </target> + <target if="do.display.browser.debug" name="debug-display-browser"> + <nbbrowse context="${browser.context}" url="${client.url}" urlPath="${client.urlPart}"/> + </target> + <target if="do.debug.client" name="connect-client-debugger"> + <webproject1:nbjsdebugstart webUrl="${client.url}"/> + </target> + <target depends="init,compile-test-single" if="netbeans.home" name="-debug-start-debuggee-main-test"> + <fail unless="debug.class">Must select one file in the IDE or set debug.class</fail> + <webproject1:debug classname="${debug.class}" classpath="${debug.test.classpath}"/> + </target> + <target depends="init,compile-test-single,-debug-start-debugger-main-test,-debug-start-debuggee-main-test" if="netbeans.home" name="debug-test-with-main"/> + <target depends="init,compile,compile-jsps,-do-compile-single-jsp,debug" if="netbeans.home" name="debug-single"/> + <target depends="init" if="netbeans.home" name="-debug-start-debugger-main-test"> + <webproject1:nbjpdastart classpath="${debug.test.classpath}" name="${debug.class}"/> + </target> + <target depends="init" if="netbeans.home" name="-debug-start-debugger"> + <webproject1:nbjpdastart name="${debug.class}"/> + </target> + <target depends="init,compile-single" if="netbeans.home" name="-debug-start-debuggee-single"> + <fail unless="debug.class">Must select one file in the IDE or set debug.class</fail> + <webproject1:debug classname="${debug.class}"/> + </target> + <target depends="init,compile-single,-debug-start-debugger,-debug-start-debuggee-single" if="netbeans.home" name="debug-single-main"/> + <target depends="init" name="-pre-debug-fix"> + <fail unless="fix.includes">Must set fix.includes</fail> + <property name="javac.includes" value="${fix.includes}.java"/> + </target> + <target depends="init,-pre-debug-fix,compile-single" if="netbeans.home" name="-do-debug-fix"> + <webproject1:nbjpdareload/> + </target> + <target depends="init,-pre-debug-fix,-do-debug-fix" if="netbeans.home" name="debug-fix"/> + <!-- + ================= + PROFILING SECTION + ================= + --> + <!-- + pre NB7.2 profiling section; consider it deprecated + --> + <target description="Profile a J2EE project in the IDE." if="profiler.info.jvmargs.agent" name="-profile-pre72"> + <condition else="start-profiled-server" property="profiler.startserver.target" value="start-profiled-server-extraargs"> + <isset property="profiler.info.jvmargs.extra"/> + </condition> + <antcall target="${profiler.startserver.target}"/> + <antcall target="run"/> + <antcall target="-profile-start-loadgen"/> + </target> + <target if="profiler.info.jvmargs.agent" name="start-profiled-server"> + <nbstartprofiledserver forceRestart="${profiler.j2ee.serverForceRestart}" javaPlatform="${profiler.info.javaPlatform}" startupTimeout="${profiler.j2ee.serverStartupTimeout}"> + <jvmarg value="${profiler.info.jvmargs.agent}"/> + <jvmarg value="${profiler.j2ee.agentID}"/> + </nbstartprofiledserver> + </target> + <target if="profiler.info.jvmargs.agent" name="start-profiled-server-extraargs"> + <nbstartprofiledserver forceRestart="${profiler.j2ee.serverForceRestart}" javaPlatform="${profiler.info.javaPlatform}" startupTimeout="${profiler.j2ee.serverStartupTimeout}"> + <jvmarg value="${profiler.info.jvmargs.extra}"/> + <jvmarg value="${profiler.info.jvmargs.agent}"/> + <jvmarg value="${profiler.j2ee.agentID}"/> + </nbstartprofiledserver> + </target> + <target depends="profile-init,compile-test-single" if="profiler.info.jvmargs.agent" name="-profile-test-single-pre72"> + <fail unless="netbeans.home">This target only works when run from inside the NetBeans IDE.</fail> + <nbprofiledirect> + <classpath> + <path path="${run.test.classpath}"/> + <path path="${j2ee.platform.classpath}"/> + </classpath> + </nbprofiledirect> + <junit dir="${profiler.info.dir}" errorproperty="tests.failed" failureproperty="tests.failed" fork="true" jvm="${profiler.info.jvm}" showoutput="true"> + <env key="${profiler.info.pathvar}" path="${profiler.info.agentpath}:${profiler.current.path}"/> + <jvmarg value="${profiler.info.jvmargs.agent}"/> + <jvmarg line="${profiler.info.jvmargs}"/> + <test name="${profile.class}"/> + <classpath> + <path path="${run.test.classpath}"/> + <path path="${j2ee.platform.classpath}"/> + </classpath> + <syspropertyset> + <propertyref prefix="test-sys-prop."/> + <mapper from="test-sys-prop.*" to="*" type="glob"/> + </syspropertyset> + <formatter type="brief" usefile="false"/> + <formatter type="xml"/> + </junit> + </target> + <target if="netbeans.home" name="-profile-check"> + <condition property="profiler.configured"> + <or> + <contains casesensitive="true" string="${run.jvmargs.ide}" substring="-agentpath:"/> + <contains casesensitive="true" string="${run.jvmargs.ide}" substring="-javaagent:"/> + </or> + </condition> + </target> + <target depends="init,-init-cos,compile,compile-jsps,-do-compile-single-jsp,-pre-dist,-do-tmp-dist-with-manifest,-do-tmp-dist-without-manifest" name="-do-profile"> + <startprofiler/> + <nbstartserver profilemode="true"/> + <nbdeploy clientUrlPart="${client.urlPart}" forceRedeploy="true" profilemode="true"/> + <antcall target="debug-display-browser-old"/> + <antcall target="debug-display-browser"/> + <antcall target="-profile-start-loadgen"/> + </target> + <target depends="-profile-check,-profile-pre72" description="Profile a J2EE project in the IDE." if="profiler.configured" name="profile" unless="profiler.info.jvmargs.agent"> + <antcall target="-do-profile"/> + </target> + <target depends="-profile-test-single-pre72" name="profile-test-single"/> + <target depends="-profile-check" if="profiler.configured" name="profile-test" unless="profiler.info.jvmargs.agent"> + <startprofiler/> + <antcall target="test-single"/> + </target> + <target if="profiler.loadgen.path" name="-profile-start-loadgen"> + <loadgenstart path="${profiler.loadgen.path}"/> + </target> + <!-- + JAVADOC SECTION + --> + <target depends="init" if="have.sources" name="javadoc-build"> + <mkdir dir="${dist.javadoc.dir}"/> + <javadoc additionalparam="${javadoc.additionalparam}" author="${javadoc.author}" charset="UTF-8" destdir="${dist.javadoc.dir}" docencoding="UTF-8" encoding="${javadoc.encoding.used}" failonerror="true" noindex="${javadoc.noindex}" nonavbar="${javadoc.nonavbar}" notree="${javadoc.notree}" private="${javadoc.private}" source="${javac.source}" splitindex="${javadoc.splitindex}" use="${javadoc.use}" useexternalfile="true" version="${javadoc.version}" windowtitle="${javadoc.windowtitle}"> + <classpath> + <path path="${javac.classpath}:${j2ee.platform.classpath}"/> + </classpath> + <fileset dir="${src.dir}" excludes="${excludes}" includes="${includes}"> + <filename name="**/*.java"/> + </fileset> + <fileset dir="${build.generated.sources.dir}" erroronmissingdir="false"> + <include name="**/*.java"/> + </fileset> + </javadoc> + <copy todir="${dist.javadoc.dir}"> + <fileset dir="${src.dir}" excludes="${excludes}" includes="${includes}"> + <filename name="**/doc-files/**"/> + </fileset> + <fileset dir="${build.generated.sources.dir}" erroronmissingdir="false"> + <include name="**/doc-files/**"/> + </fileset> + </copy> + </target> + <target depends="init,javadoc-build" if="netbeans.home" name="javadoc-browse" unless="no.javadoc.preview"> + <nbbrowse file="${dist.javadoc.dir}/index.html"/> + </target> + <target depends="init,javadoc-build,javadoc-browse" description="Build Javadoc." name="javadoc"/> + <!-- + + TEST COMPILATION SECTION + --> + <target depends="init,compile" if="have.tests" name="-pre-pre-compile-test"> + <mkdir dir="${build.test.classes.dir}"/> + <property name="j2ee.platform.embeddableejb.classpath" value=""/> + </target> + <target name="-pre-compile-test"> + <!-- Empty placeholder for easier customization. --> + <!-- You can override this target in the ../build.xml file. --> + </target> + <target depends="init,compile,-pre-pre-compile-test,-pre-compile-test" if="have.tests" name="-do-compile-test"> + <webproject2:javac classpath="${javac.test.classpath}:${j2ee.platform.classpath}:${j2ee.platform.embeddableejb.classpath}" debug="true" destdir="${build.test.classes.dir}" srcdir=""/> + <copy todir="${build.test.classes.dir}"/> + </target> + <target name="-post-compile-test"> + <!-- Empty placeholder for easier customization. --> + <!-- You can override this target in the ../build.xml file. --> + </target> + <target depends="init,compile,-pre-pre-compile-test,-pre-compile-test,-do-compile-test,-post-compile-test" name="compile-test"/> + <target name="-pre-compile-test-single"> + <!-- Empty placeholder for easier customization. --> + <!-- You can override this target in the ../build.xml file. --> + </target> + <target depends="init,compile,-pre-pre-compile-test,-pre-compile-test-single" if="have.tests" name="-do-compile-test-single"> + <fail unless="javac.includes">Must select some files in the IDE or set javac.includes</fail> + <webproject2:javac classpath="${javac.test.classpath}:${j2ee.platform.classpath}:${j2ee.platform.embeddableejb.classpath}" debug="true" destdir="${build.test.classes.dir}" excludes="" includes="${javac.includes}" srcdir=""/> + <copy todir="${build.test.classes.dir}"/> + </target> + <target name="-post-compile-test-single"> + <!-- Empty placeholder for easier customization. --> + <!-- You can override this target in the ../build.xml file. --> + </target> + <target depends="init,compile,-pre-pre-compile-test,-pre-compile-test-single,-do-compile-test-single,-post-compile-test-single" name="compile-test-single"/> + <!-- + + TEST EXECUTION SECTION + --> + <target depends="init" if="have.tests" name="-pre-test-run"> + <mkdir dir="${build.test.results.dir}"/> + </target> + <target depends="init,compile-test,-pre-test-run" if="have.tests" name="-do-test-run"> + <webproject2:test includes="${includes}" testincludes="**/*Test.java"/> + </target> + <target depends="init,compile-test,-pre-test-run,-do-test-run" if="have.tests" name="-post-test-run"> + <fail if="tests.failed" unless="ignore.failing.tests">Some tests failed; see details above.</fail> + </target> + <target depends="init" if="have.tests" name="test-report"/> + <target depends="init" if="netbeans.home+have.tests" name="-test-browse"/> + <target depends="init,compile-test,-pre-test-run,-do-test-run,test-report,-post-test-run,-test-browse" description="Run unit tests." name="test"/> + <target depends="init" if="have.tests" name="-pre-test-run-single"> + <mkdir dir="${build.test.results.dir}"/> + </target> + <target depends="init,compile-test-single,-pre-test-run-single" if="have.tests" name="-do-test-run-single"> + <fail unless="test.includes">Must select some files in the IDE or set test.includes</fail> + <webproject2:test excludes="" includes="${test.includes}" testincludes="${test.includes}"/> + </target> + <target depends="init,compile-test-single,-pre-test-run-single,-do-test-run-single" if="have.tests" name="-post-test-run-single"> + <fail if="tests.failed" unless="ignore.failing.tests">Some tests failed; see details above.</fail> + </target> + <target depends="init,compile-test-single,-pre-test-run-single,-do-test-run-single,-post-test-run-single" description="Run single unit test." name="test-single"/> + <target depends="init,compile-test-single,-pre-test-run-single" if="have.tests" name="-do-test-run-single-method"> + <fail unless="test.class">Must select some files in the IDE or set test.class</fail> + <fail unless="test.method">Must select some method in the IDE or set test.method</fail> + <webproject2:test excludes="" includes="${javac.includes}" testincludes="${test.class}" testmethods="${test.method}"/> + </target> + <target depends="init,compile-test-single,-pre-test-run-single,-do-test-run-single-method" if="have.tests" name="-post-test-run-single-method"> + <fail if="tests.failed" unless="ignore.failing.tests">Some tests failed; see details above.</fail> + </target> + <target depends="init,compile-test-single,-pre-test-run-single,-do-test-run-single-method,-post-test-run-single-method" description="Run single unit test." name="test-single-method"/> + <!-- + + TEST DEBUGGING SECTION + --> + <target depends="init,compile-test-single,-pre-test-run-single" if="have.tests" name="-debug-start-debuggee-test"> + <fail unless="test.class">Must select one file in the IDE or set test.class</fail> + <webproject2:test-debug excludes="" includes="${javac.includes}" testClass="${test.class}" testincludes="${javac.includes}"/> + </target> + <target depends="init,compile-test-single,-pre-test-run-single" if="have.tests" name="-debug-start-debuggee-test-method"> + <fail unless="test.class">Must select one file in the IDE or set test.class</fail> + <fail unless="test.method">Must select some method in the IDE or set test.method</fail> + <webproject2:test-debug excludes="" includes="${javac.includes}" testClass="${test.class}" testMethod="${test.method}" testincludes="${test.class}" testmethods="${test.method}"/> + </target> + <target depends="init,compile-test" if="netbeans.home+have.tests" name="-debug-start-debugger-test"> + <webproject1:nbjpdastart classpath="${debug.test.classpath}" name="${test.class}"/> + </target> + <target depends="init,compile-test,-debug-start-debugger-test,-debug-start-debuggee-test" name="debug-test"/> + <target depends="init,compile-test-single,-debug-start-debugger-test,-debug-start-debuggee-test-method" name="debug-test-method"/> + <target depends="debug-test-method" name="debug-single-method"/> + <target depends="init,-pre-debug-fix,compile-test-single" if="netbeans.home" name="-do-debug-fix-test"> + <webproject1:nbjpdareload dir="${build.test.classes.dir}"/> + </target> + <target depends="init,-pre-debug-fix,-do-debug-fix-test" if="netbeans.home" name="debug-fix-test"/> + <!-- + + CLEANUP SECTION + --> + <target depends="init" name="deps-clean" unless="no.deps"/> + <target depends="init" name="do-clean"> + <condition property="build.dir.to.clean" value="${build.web.dir}"> + <isset property="dist.ear.dir"/> + </condition> + <property name="build.dir.to.clean" value="${build.web.dir}"/> + <delete includeEmptyDirs="true" quiet="true"> + <fileset dir="${build.dir.to.clean}/WEB-INF/lib"/> + </delete> + <delete dir="${build.dir}"/> + <available file="${build.dir.to.clean}/WEB-INF/lib" property="status.clean-failed" type="dir"/> + <delete dir="${dist.dir}"/> + </target> + <target depends="do-clean" if="status.clean-failed" name="check-clean"> + <echo message="Warning: unable to delete some files in ${build.web.dir}/WEB-INF/lib - they are probably locked by the J2EE server. "/> + <echo level="info" message="To delete all files undeploy the module from Server Registry in Runtime tab and then use Clean again."/> + </target> + <target depends="init" if="netbeans.home" name="undeploy-clean"> + <nbundeploy failOnError="false" startServer="false"/> + </target> + <target name="-post-clean"> + <!-- Empty placeholder for easier customization. --> + <!-- You can override this target in the ../build.xml file. --> + </target> + <target depends="init,undeploy-clean,deps-clean,do-clean,check-clean,-post-clean" description="Clean build products." name="clean"/> + <target depends="clean" description="Clean build products." name="clean-ear"/> +</project> diff --git a/examples/otherProjects/BasicServletDemo/nbproject/genfiles.properties b/examples/otherProjects/BasicServletDemo/nbproject/genfiles.properties new file mode 100644 index 0000000000000000000000000000000000000000..268276a762cc69ac1df72cc667a87ba1832be0cb --- /dev/null +++ b/examples/otherProjects/BasicServletDemo/nbproject/genfiles.properties @@ -0,0 +1,5 @@ +# 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=cae571ac +nbproject/build-impl.xml.script.CRC32=110e0988 +nbproject/build-impl.xml.stylesheet.CRC32=334708a0@1.98.0.1 diff --git a/examples/otherProjects/BasicServletDemo/nbproject/project.properties b/examples/otherProjects/BasicServletDemo/nbproject/project.properties index b2a0c8b1fdc22873418d13b8ed4265f2a893efa0..0ba761507ff214099c16bd0e7e650302d43dfec1 100644 --- a/examples/otherProjects/BasicServletDemo/nbproject/project.properties +++ b/examples/otherProjects/BasicServletDemo/nbproject/project.properties @@ -33,7 +33,7 @@ j2ee.compile.on.save=true j2ee.copy.static.files.on.save=true j2ee.deploy.on.save=true j2ee.platform=1.7-web -j2ee.platform.classpath=${j2ee.server.home}/lib/annotations-api.jar:${j2ee.server.home}/lib/catalina-ant.jar:${j2ee.server.home}/lib/catalina-ha.jar:${j2ee.server.home}/lib/catalina-ssi.jar:${j2ee.server.home}/lib/catalina-storeconfig.jar:${j2ee.server.home}/lib/catalina-tribes.jar:${j2ee.server.home}/lib/catalina.jar:${j2ee.server.home}/lib/ecj-4.20.jar:${j2ee.server.home}/lib/el-api.jar:${j2ee.server.home}/lib/jasper-el.jar:${j2ee.server.home}/lib/jasper.jar:${j2ee.server.home}/lib/jaspic-api.jar:${j2ee.server.home}/lib/jsp-api.jar:${j2ee.server.home}/lib/servlet-api.jar:${j2ee.server.home}/lib/tomcat-api.jar:${j2ee.server.home}/lib/tomcat-coyote.jar:${j2ee.server.home}/lib/tomcat-dbcp.jar:${j2ee.server.home}/lib/tomcat-i18n-cs.jar:${j2ee.server.home}/lib/tomcat-i18n-de.jar:${j2ee.server.home}/lib/tomcat-i18n-es.jar:${j2ee.server.home}/lib/tomcat-i18n-fr.jar:${j2ee.server.home}/lib/tomcat-i18n-ja.jar:${j2ee.server.home}/lib/tomcat-i18n-ko.jar:${j2ee.server.home}/lib/tomcat-i18n-pt-BR.jar:${j2ee.server.home}/lib/tomcat-i18n-ru.jar:${j2ee.server.home}/lib/tomcat-i18n-zh-CN.jar:${j2ee.server.home}/lib/tomcat-jdbc.jar:${j2ee.server.home}/lib/tomcat-jni.jar:${j2ee.server.home}/lib/tomcat-util-scan.jar:${j2ee.server.home}/lib/tomcat-util.jar:${j2ee.server.home}/lib/tomcat-websocket.jar:${j2ee.server.home}/lib/websocket-api.jar +j2ee.platform.classpath=${j2ee.server.home}/bin/tomcat-juli.jar:${j2ee.server.home}/lib/annotations-api.jar:${j2ee.server.home}/lib/catalina-ant.jar:${j2ee.server.home}/lib/catalina-ha.jar:${j2ee.server.home}/lib/catalina-ssi.jar:${j2ee.server.home}/lib/catalina-storeconfig.jar:${j2ee.server.home}/lib/catalina-tribes.jar:${j2ee.server.home}/lib/catalina.jar:${j2ee.server.home}/lib/ecj-4.20.jar:${j2ee.server.home}/lib/el-api.jar:${j2ee.server.home}/lib/jasper-el.jar:${j2ee.server.home}/lib/jasper.jar:${j2ee.server.home}/lib/jaspic-api.jar:${j2ee.server.home}/lib/jsp-api.jar:${j2ee.server.home}/lib/servlet-api.jar:${j2ee.server.home}/lib/tomcat-api.jar:${j2ee.server.home}/lib/tomcat-coyote-ffm.jar:${j2ee.server.home}/lib/tomcat-coyote.jar:${j2ee.server.home}/lib/tomcat-dbcp.jar:${j2ee.server.home}/lib/tomcat-i18n-cs.jar:${j2ee.server.home}/lib/tomcat-i18n-de.jar:${j2ee.server.home}/lib/tomcat-i18n-es.jar:${j2ee.server.home}/lib/tomcat-i18n-fr.jar:${j2ee.server.home}/lib/tomcat-i18n-ja.jar:${j2ee.server.home}/lib/tomcat-i18n-ko.jar:${j2ee.server.home}/lib/tomcat-i18n-pt-BR.jar:${j2ee.server.home}/lib/tomcat-i18n-ru.jar:${j2ee.server.home}/lib/tomcat-i18n-zh-CN.jar:${j2ee.server.home}/lib/tomcat-jdbc.jar:${j2ee.server.home}/lib/tomcat-jni.jar:${j2ee.server.home}/lib/tomcat-util-scan.jar:${j2ee.server.home}/lib/tomcat-util.jar:${j2ee.server.home}/lib/tomcat-websocket.jar:${j2ee.server.home}/lib/websocket-api.jar j2ee.server.type=Tomcat jar.compress=false javac.classpath= diff --git a/examples/otherProjects/SavageWebServlet/ReadMe.md b/examples/otherProjects/SavageWebServlet/ReadMe.md new file mode 100644 index 0000000000000000000000000000000000000000..903bffeed1224451dee57249a70caaf149232009 --- /dev/null +++ b/examples/otherProjects/SavageWebServlet/ReadMe.md @@ -0,0 +1,45 @@ +## Apache XML-RPC demo of performing a URL lookup + +With the ant target "runLocallDemo" a Servlet will start and listen for a\ +search query from a client. The handler for the search query is the\ +SavageSearch class with a single mock look up method "search." This handler is\ +registered via the "org.apache.xmlrpc.webserver.XmlRpcServlet.proerties" file\ +with a single entry "SavageSearch=SavageSearch" key/value pair. + +The client then launches making a connection to\ +URL: http://localhost:8080/SavageSearch. A search query of (Savage, Harrier)\ +is made with the Servlet which tasks the handler to perform the lookup with\ +results: + +Result 1 is [Ljava.lang.String; https://savage.nps.edu/Savage/AircraftFixedWing/AV8B-Harrier-UnitedStates/AV8bHarrier.x3d\ +Result 2 is [Ljava.lang.String; https://savage.nps.edu/Savage/AircraftFixedWing/AV8B-Harrier-UnitedStates/TranslatedAv8bHarrier.x3d + +Before launching the "runLocallDemo" ant target, open up wireshark and\ +configure for packet capture on the loopback adapter. + +Now launch and look for two packet captures of protocol: HTTP/XML where you can\ +then select and expand the entries to view the actual XML methodCall contents. + +Since the local RPC Server is still listening for requests, it will have to be\ +forced to stop. You may see a benign output such as the following: + +BUILD STOPPED (total time: 19 seconds)\ +Java Result: 2147483647 + +# Deploying to a local Tomcat Server +This demo expects apache-tomcat-9.0.95. Point to that directory in the\ +build.properties file for the "catalina.base" property + +Manager roles need to be defined in ${catalina.base}/config/tomcat-users.xml so\ +that the Catalina deploy/undeploy ant tasks work smoothly. Define as\ +follows: + +<role rolename="manager-gui"/>\ +<user username="tomcat" password="tomcat" roles="manager-script"/> + +Then, run the ant target "deployRunDemo" + +Server log outputs can be viewed at ${catalina.base}/logs/catalina.out and in\ +the /logs directory. Look for "xmlrcp.log.0" to see similar logging output. + +To undeploy the web app and stop the local Tomcat server, run "undeployRpcDemo" diff --git a/examples/otherProjects/SavageWebServlet/build.properties b/examples/otherProjects/SavageWebServlet/build.properties new file mode 100755 index 0000000000000000000000000000000000000000..cc6dffd02a66188f2b85920bd8f9b120beab245f --- /dev/null +++ b/examples/otherProjects/SavageWebServlet/build.properties @@ -0,0 +1,17 @@ +# Tomcat Manager properties +# replace catalina.base with a path to your local Tomcat directory +catalina.base=${user.home}/javaapis/Apache Software Foundation (ASF)/apache-tomcat-9.0.95 +catalina.home=${catalina.base} +startup=startup.sh +shutdown=shutdown.sh +# WIN users will rename the above extentions to "bat" +tomcat.server=localhost +tomcat.port=8080 +# Since Tomcat 7, note that the URL for the text interface has changed from "/manager" to "/manager/text". +mgr=http://${tomcat.server}:${tomcat.port}/manager/text +username=tomcat +password=tomcat +proj.name=${app.name} +context=/${proj.name} + +dist.war=${dist}/${app.name}.war diff --git a/examples/otherProjects/SavageWebServlet/build.xml b/examples/otherProjects/SavageWebServlet/build.xml new file mode 100755 index 0000000000000000000000000000000000000000..1da95674a277d782fb9893ef31cad6a6c4118b2d --- /dev/null +++ b/examples/otherProjects/SavageWebServlet/build.xml @@ -0,0 +1,161 @@ +<?xml version="1.0" encoding="UTF-8"?> + +<project name="xmlrpc-demo" default="dist" basedir="."> + <property environment="env"/> + + <property name="app.name" value="SavageSearch"/> + + <property name="build" value="build"/> + <property name="dist" value="dist"/> + <property name="lib" value="lib"/> + <property name="src" value="src"/> + <property name="web" value="web"/> + <property name="logs" value="logs"/> + + <property name="debug" value="yes"/> + <property name="deprecations" value="yes"/> + + <property file="build.properties"/> + + <import file="nbproject/ide-file-targets.xml"/> + + <!-- + ======== + TASKDEFs + ======== + --> + + <import file="${catalina.base}/bin/catalina-tasks.xml"/> + + <path id="compile.classpath"> + <fileset dir="${lib}"> + <include name="*.jar"/> + </fileset> + </path> + + <path id="run.classpath"> + <fileset id="cp" dir="${lib}"> + <include name="*.jar"/> + </fileset> + <pathelement location="${build}/WEB-INF/classes"/> + </path> + + <target name="env"> + <echo message="catalina.home=${catalina.home}"/> + </target> + + <target name="prepare" depends="env"> + <mkdir dir="${build}"/> + <mkdir dir="${build}/WEB-INF"/> + <mkdir dir="${build}/WEB-INF/classes"/> + <!-- Copy static content of this web application --> + <copy todir="${build}" overwrite="yes"> + <fileset dir="${web}"> + <include name="*.css"/> + <include name="*.html"/> + <include name="*.jsp"/> + </fileset> + </copy> + <copy todir="${build}/WEB-INF" overwrite="yes"> + <fileset dir="${web}/WEB-INF"> + <include name="classes/**"/> + <include name="web.xml"/> + </fileset> + </copy> + <!-- supporting jars --> + <copy todir="${build}/WEB-INF/lib" overwrite="yes"> + <fileset refid="cp"/> + </copy> + <mkdir dir="${dist}"/> + </target> + + <target name="compile" depends="prepare" description="Compile Java sources"> + <javac release="11" + srcdir="${src}" + destdir="${build}/WEB-INF/classes" + listfiles="yes" + debug="${debug}" + deprecation="${deprecations}" + includeantruntime="false" + classpathref="compile.classpath"> + <compilerarg value="-Xlint:-options"/> + </javac> + <!-- Copy application resources --> + <copy todir="${build}/WEB-INF/classes"> + <fileset dir="${src}"> + <exclude name="*.java"/> + </fileset> + </copy> + </target> + + <target name="dist" depends="compile" description="Create binary distribution"> + <war destfile="${dist.war}" basedir="${build}"/> + </target> + + <target name="runLocalDemo" + depends="clean,compile" + description="Run both the Server and Client locally"> + <parallel> + <sequential> + <antcall target="runServer"/> + </sequential> + <sequential> + <sleep seconds="5"/> + <antcall target="runClient"/> + </sequential> + </parallel> + </target> + + <target name="runServer"> + <java classname="RpcServer" classpathref="run.classpath"/> + </target> + <target name="runClient"> + <java classname="RpcClient" classpathref="run.classpath"/> + </target> + + <target name="deployRunDemo" + depends="undeployRpcDemo,clean,dist" + description="Builds the web application starts a local Tomcat server and runs XML RPC demo"> + <sequential> + <antcall target="start.tomcat"/> + <!-- Allow Tomcat to startup --> + <sleep seconds="2"/> + <deploy url="${mgr}" + username="${username}" + password="${password}" + path="${context}" + war="${basedir}/${dist.war}"/> + <!-- Allow deployment --> + <sleep seconds="2"/> + <antcall target="runClient"/> + </sequential> + </target> + <target name="start.tomcat"> + <exec executable="${catalina.home}/bin/${startup}"> + <env key="CATALINA_HOME" value="${catalina.home}"/> + </exec> + </target> + + <target name="undeployRpcDemo" + description="Removes the web application and stops the local Tomcat server"> + <sequential> + <undeploy url="${mgr}" + username="${username}" + password="${password}" + path="${context}"/> + <antcall target="stop.tomcat"/> + </sequential> + </target> + <target name="stop.tomcat"> + <exec executable="${catalina.home}/bin/${shutdown}"> + <env key="CATALINA_HOME" value="${catalina.home}"/> + </exec> + </target> + + <target name="clean" description="Delete old build and dist directories"> + <delete dir="${build}"/> + <delete dir="${dist}"/> + <delete dir="${logs}"/> + </target> + +</project> \ No newline at end of file diff --git a/examples/otherProjects/SavageWebServlet/doc/XML-RPC.ppt b/examples/otherProjects/SavageWebServlet/doc/XML-RPC.ppt new file mode 100755 index 0000000000000000000000000000000000000000..e2464f2d98cae1552357fe34f28673bcc0a6782b Binary files /dev/null and b/examples/otherProjects/SavageWebServlet/doc/XML-RPC.ppt differ diff --git a/examples/otherProjects/SavageWebServlet/lib/commons-logging-1.3.1.jar b/examples/otherProjects/SavageWebServlet/lib/commons-logging-1.3.1.jar new file mode 100644 index 0000000000000000000000000000000000000000..0d508f6efbe4045ba5a7df1d5a6e65fda9d56f9f Binary files /dev/null and b/examples/otherProjects/SavageWebServlet/lib/commons-logging-1.3.1.jar differ diff --git a/examples/otherProjects/SavageWebServlet/lib/log4j-api-2.23.1.jar b/examples/otherProjects/SavageWebServlet/lib/log4j-api-2.23.1.jar new file mode 100644 index 0000000000000000000000000000000000000000..0e8e3f5e5928c3dc9d8d8d06e4f7aacfb5090ed4 Binary files /dev/null and b/examples/otherProjects/SavageWebServlet/lib/log4j-api-2.23.1.jar differ diff --git a/examples/otherProjects/SavageWebServlet/lib/log4j-core-2.23.1.jar b/examples/otherProjects/SavageWebServlet/lib/log4j-core-2.23.1.jar new file mode 100644 index 0000000000000000000000000000000000000000..4a5d553d897b9eb341cc0c818d54b07d5c012f7b Binary files /dev/null and b/examples/otherProjects/SavageWebServlet/lib/log4j-core-2.23.1.jar differ diff --git a/examples/otherProjects/SavageWebServlet/lib/servlet-api.jar b/examples/otherProjects/SavageWebServlet/lib/servlet-api.jar new file mode 100644 index 0000000000000000000000000000000000000000..336e9a308f52906a506697af293ea8161fd86d46 Binary files /dev/null and b/examples/otherProjects/SavageWebServlet/lib/servlet-api.jar differ diff --git a/examples/otherProjects/SavageWebServlet/lib/ws-commons-util-1.0.2.jar b/examples/otherProjects/SavageWebServlet/lib/ws-commons-util-1.0.2.jar new file mode 100644 index 0000000000000000000000000000000000000000..3fc364e7f605b580850530c281998a1f861cc0c5 Binary files /dev/null and b/examples/otherProjects/SavageWebServlet/lib/ws-commons-util-1.0.2.jar differ diff --git a/examples/otherProjects/SavageWebServlet/lib/xmlrpc-client-3.1.3.jar b/examples/otherProjects/SavageWebServlet/lib/xmlrpc-client-3.1.3.jar new file mode 100644 index 0000000000000000000000000000000000000000..38e3359e30c61b27186c794404bb92fd02867ef3 Binary files /dev/null and b/examples/otherProjects/SavageWebServlet/lib/xmlrpc-client-3.1.3.jar differ diff --git a/examples/otherProjects/SavageWebServlet/lib/xmlrpc-common-3.1.3.jar b/examples/otherProjects/SavageWebServlet/lib/xmlrpc-common-3.1.3.jar new file mode 100644 index 0000000000000000000000000000000000000000..b5eb9dffdad1bfac6bf066de8c1c675561b796ec Binary files /dev/null and b/examples/otherProjects/SavageWebServlet/lib/xmlrpc-common-3.1.3.jar differ diff --git a/examples/otherProjects/SavageWebServlet/lib/xmlrpc-server-3.1.3.jar b/examples/otherProjects/SavageWebServlet/lib/xmlrpc-server-3.1.3.jar new file mode 100644 index 0000000000000000000000000000000000000000..2f930f13ffead3e0cabebf727034b0015cb1c872 Binary files /dev/null and b/examples/otherProjects/SavageWebServlet/lib/xmlrpc-server-3.1.3.jar differ diff --git a/examples/otherProjects/SavageWebServlet/nbproject/ide-file-targets.xml b/examples/otherProjects/SavageWebServlet/nbproject/ide-file-targets.xml new file mode 100644 index 0000000000000000000000000000000000000000..a7e07ae1290a85f0b41772617f9030390fecdac9 --- /dev/null +++ b/examples/otherProjects/SavageWebServlet/nbproject/ide-file-targets.xml @@ -0,0 +1,36 @@ +<?xml version="1.0" encoding="UTF-8"?> +<project basedir=".." name="xmlrpc-demo-IDE"> + <!-- TODO: edit the following target according to your needs --> + <!-- (more info: http://www.netbeans.org/kb/articles/freeform-config.html#runsingle) --> + + <path id="cp"> + <fileset dir="lib"> + <include name="*.jar"/> + </fileset> + <pathelement location="build/WEB-INF/classes"/> + </path> + + <target name="run-selected-file-in-src"> + <ant antfile="build.xml" target="compile"/> + <fail unless="run.class">Must set property 'run.class'</fail> + <java classname="${run.class}" + classpathref="cp" + failonerror="true" + fork="true"/> + </target> + <!-- TODO: edit the following target according to your needs --> + <!-- (more info: http://www.netbeans.org/kb/articles/freeform-config.html#runsingle) --> + <target name="debug-selected-file-in-src"> + <fail unless="debug.class">Must set property 'debug.class'</fail> + <ant antfile="build.xml" target="compile"/> + <nbjpdastart addressproperty="jpda.address" name="xmlrpc" transport="dt_socket"> + <classpath refid="cp"/> + </nbjpdastart> + <java classname="${debug.class}" + classpathref="cp" + failonerror="true" + fork="true"> + <jvmarg value="-agentlib:jdwp=transport=dt_socket,address=${jpda.address}"/> + </java> + </target> +</project> diff --git a/examples/otherProjects/SavageWebServlet/nbproject/project.xml b/examples/otherProjects/SavageWebServlet/nbproject/project.xml new file mode 100755 index 0000000000000000000000000000000000000000..5dca71b3a66072b20e1fd0272a4d1c940f911bc4 --- /dev/null +++ b/examples/otherProjects/SavageWebServlet/nbproject/project.xml @@ -0,0 +1,125 @@ +<?xml version="1.0" encoding="UTF-8"?> +<!-- netBeans attempts to force extra namespace declaration in each element. + Only parent elements <project>, <general-data>, <java-data> and <web-data> + elements need a namespace declaration. Had to manually erase unnecessary + entries (tdn 03 DEC 06) --> +<project xmlns="http://www.netbeans.org/ns/project/1"> + <type>org.netbeans.modules.ant.freeform</type> + <configuration> + <general-data xmlns="http://www.netbeans.org/ns/freeform-project/1"> + <!-- Do not use Project Properties customizer when editing this file manually. --> + <name>xmlrpc-demo</name> + <properties/> + <folders> + <source-folder> + <label>web</label> + <type>doc_root</type> + <location>web</location> + </source-folder> + <source-folder> + <label>WEB-INF</label> + <type>web_inf</type> + <location>web/WEB-INF</location> + </source-folder> + <source-folder> + <label>src</label> + <type>java</type> + <location>src</location> + </source-folder> + </folders> + <ide-actions> + <action name="build"> + <target>compile</target> + </action> + <action name="clean"> + <target>clean</target> + </action> + <action name="run"> + <target>deployRunDemo</target> + </action> + <action name="rebuild"> + <target>clean</target> + <target>compile</target> + </action> + <action name="run.single"> + <script>nbproject/ide-file-targets.xml</script> + <target>run-selected-file-in-src</target> + <context> + <property>run.class</property> + <folder>src</folder> + <pattern>\.java$</pattern> + <format>java-name</format> + <arity> + <one-file-only/> + </arity> + </context> + </action> + <action name="debug.single"> + <script>nbproject/ide-file-targets.xml</script> + <target>debug-selected-file-in-src</target> + <context> + <property>debug.class</property> + <folder>src</folder> + <pattern>\.java$</pattern> + <format>java-name</format> + <arity> + <one-file-only/> + </arity> + </context> + </action> + <action name="redeploy"> + <target>deployRunDemo</target> + </action> + </ide-actions> + <export> + <type>folder</type> + <location>build</location> + <build-target>compile</build-target> + </export> + <view> + <items> + <source-folder style="tree"> + <label>Web Pages</label> + <location>web</location> + </source-folder> + <source-folder style="tree"> + <label>WEB-INF Content</label> + <location>web/WEB-INF</location> + </source-folder> + <source-folder style="packages"> + <label>src</label> + <location>src</location> + </source-folder> + <source-file> + <location>build.xml</location> + </source-file> + </items> + <context-menu> + <ide-action name="build"/> + <ide-action name="rebuild"/> + <ide-action name="clean"/> + <ide-action name="run"/> + <ide-action name="redeploy"/> + </context-menu> + </view> + <subprojects/> + </general-data> + <java-data xmlns="http://www.netbeans.org/ns/freeform-project-java/5"> + <compilation-unit> + <package-root>src</package-root> + <classpath mode="compile">lib/log4j-api-2.23.1.jar:lib/servlet-api.jar:lib/xmlrpc-client-3.1.3.jar:lib/xmlrpc-common-3.1.3.jar:lib/xmlrpc-server-3.1.3.jar</classpath> + <built-to>build</built-to> + <javadoc-built-to>docs</javadoc-built-to> + <source-level>11</source-level> + </compilation-unit> + </java-data> + <web-data xmlns="http://www.netbeans.org/ns/freeform-project-web/1"> + <web-module> + <doc-root>web</doc-root> + <classpath/> + <context-path>/SavageSearch</context-path> + <j2ee-spec-level>1.4</j2ee-spec-level> + </web-module> + </web-data> + </configuration> +</project> diff --git a/examples/otherProjects/SavageWebServlet/src/RpcClient.java b/examples/otherProjects/SavageWebServlet/src/RpcClient.java new file mode 100755 index 0000000000000000000000000000000000000000..178006fc14c7a33b8a1185e0c6c4f2ce222f034d --- /dev/null +++ b/examples/otherProjects/SavageWebServlet/src/RpcClient.java @@ -0,0 +1,65 @@ + +import java.net.*; + +import org.apache.xmlrpc.client.XmlRpcClient; +import org.apache.xmlrpc.client.XmlRpcClientConfigImpl; +import org.apache.xmlrpc.XmlRpcException; + +/** + * Simple example of an XML-RPC client that uses Apache XML-RPC 3.x to + * contact a server and call a method on it. + * + * Based on the Apache XML RPC client example: https://ws.apache.org/xmlrpc/client.html + * + * @author DMcG + */ +public class RpcClient { + + public static void main(String args[]) { + + Object[] results, params; + String[] names; + XmlRpcClientConfigImpl config = new XmlRpcClientConfigImpl(); + XmlRpcClient client = new XmlRpcClient(); + try { + + // Set the configuration to talk to localhost. The servlet should be listening + // on localhost, with the url of "xmlrpc". This uses the default transport + // mechanism of java.net.HttpURLConnection. You can also configure other + // http transport mechanisms, such as XmlRpcCommonsTransportFactory, which + // is another HTTP transport with a different API but smaller memory footprint. + config.setServerURL(new URI("http://localhost:8080/SavageSearch").toURL()); + System.out.println("created URL: http://localhost:8080/SavageSearch"); + config.setEnabledForExtensions(true); + config.setContentLengthOptional(false); + config.setConnectionTimeout(60 * 1000); + config.setReplyTimeout(60 * 1000); + + client.setConfig(config); + + // Call the method by putting together an array of parameters and calling + // the client object. The client object automatically translates the + // array information and other data into the correct XML format. + + // Parameters to the search() method call; the first argument is + // the database to be searched, the second is the term to be + // searched for in that database + params = new Object[] {"Savage", "Harrier"}; + System.out.println("preparing search for: (Savage, Harrier)"); + + results = (Object[]) client.execute("SavageSearch.search", params); + + names = new String[results.length]; + for(int idx = 0; idx < results.length; idx++) { + names[idx] = (String) results[idx]; + System.out.println("Result " + (idx+1) + " is " + names.getClass().getName() + " " + names[idx]); + } + } catch(XmlRpcException | MalformedURLException | URISyntaxException e) { + System.err.println(e); + } finally { + System.exit(0); + } + + } // End main + +} diff --git a/examples/otherProjects/SavageWebServlet/src/RpcServer.java b/examples/otherProjects/SavageWebServlet/src/RpcServer.java new file mode 100644 index 0000000000000000000000000000000000000000..011ab2c8c3531258e5bdc16ad01e6dcb91af1bfe --- /dev/null +++ b/examples/otherProjects/SavageWebServlet/src/RpcServer.java @@ -0,0 +1,51 @@ + +import java.io.IOException; +import java.util.Date; +import javax.servlet.ServletException; + +import org.apache.xmlrpc.XmlRpcException; +import org.apache.xmlrpc.server.PropertyHandlerMapping; +import org.apache.xmlrpc.server.XmlRpcServer; +import org.apache.xmlrpc.server.XmlRpcServerConfigImpl; +import org.apache.xmlrpc.webserver.ServletWebServer; +import org.apache.xmlrpc.webserver.WebServer; +import org.apache.xmlrpc.webserver.XmlRpcServlet; + +/** Based on the Apache XML RPC server example: https://ws.apache.org/xmlrpc/server.html + * + * @author <a href="mailto:tdnorbra@nps.edu?subject=.RpcServer">Terry Norbraten, NPS MOVES</a> + */ +public class RpcServer { + + static WebServer ws = null; + + public static void main(String[] args) { + + XmlRpcServer xmlRpcServer; + XmlRpcServerConfigImpl config; + XmlRpcServlet servlet = new XmlRpcServlet(); + PropertyHandlerMapping mapping = new PropertyHandlerMapping(); + try { + ws = new ServletWebServer(servlet, 8080); + xmlRpcServer = ws.getXmlRpcServer(); + + mapping.addHandler("SavageSearch", SavageSearch.class); + xmlRpcServer.setHandlerMapping(mapping); + + config = (XmlRpcServerConfigImpl) xmlRpcServer.getConfig(); + config.setEnabledForExtensions(true); + config.setContentLengthOptional(false); + config.setKeepAliveEnabled(false); + + ws.start(); + System.out.println(RpcServer.class.getName() + " started: " + new Date().toString()); + } catch (XmlRpcException | IOException | ServletException ex) { + if (ws != null) { + ws.log(ex); + ws.shutdown(); + } else + System.err.println(ex); + } + } + +} // end class RpcServer diff --git a/examples/otherProjects/SavageWebServlet/src/SavageSearch.java b/examples/otherProjects/SavageWebServlet/src/SavageSearch.java new file mode 100755 index 0000000000000000000000000000000000000000..911ed87b26c38b5beb660ae7b6c8f17ae38f44fa --- /dev/null +++ b/examples/otherProjects/SavageWebServlet/src/SavageSearch.java @@ -0,0 +1,39 @@ +// +// SavageSearch.java +// +// +// Created by Don McGregor on 11/16/06. +// Copyright 2006 __MyCompanyName__. All rights reserved. +// +public class SavageSearch +{ + /** + * Search a database for a term. + * + * @param database The database to be searched for the term + * @param term The string to search for in the database + * @return a String[] with results from search + */ + public String[] search(String database, String term) + { + String result[] = new String[2]; + + result[0] = "https://savage.nps.edu/Savage/AircraftFixedWing/AV8B-Harrier-UnitedStates/AV8bHarrier.x3d"; + result[1] = "https://savage.nps.edu/Savage/AircraftFixedWing/AV8B-Harrier-UnitedStates/TranslatedAv8bHarrier.x3d"; + return result; + } + + /** + * Returns hits from an "expansive" search that also searches chapter and section + * headings for the search term + * + * @param database the database to be searched + * @param term the term to search for + * @return a String[] with results from search + */ + public String[] expansiveSearch(String database, String term) + { + return search(database, term); + } + +} diff --git a/examples/otherProjects/SavageWebServlet/src/XmlRpcServletLogging.java b/examples/otherProjects/SavageWebServlet/src/XmlRpcServletLogging.java new file mode 100755 index 0000000000000000000000000000000000000000..97bb84e310f33ef4ca0fb213f416d2bf1fe08f52 --- /dev/null +++ b/examples/otherProjects/SavageWebServlet/src/XmlRpcServletLogging.java @@ -0,0 +1,58 @@ +import java.io.InputStream; +import java.io.IOException; +import java.lang.System.Logger.Level; + +import java.util.Properties; + +import javax.servlet.ServletConfig; +import javax.servlet.ServletException; + +import javax.servlet.http.HttpServletRequest; +import javax.servlet.http.HttpServletResponse; +import org.apache.logging.log4j.LogManager; + +import org.apache.xmlrpc.webserver.XmlRpcServlet; + +import org.apache.logging.log4j.Logger; + +/** + * A subclass of XmlRpcServlet that includes logging. This is heavily swiped from + * the example at http://www.petrovic.org/blog/?p=127. It is essentially just a + * subclass that adds logging using the log4j framework. + * + * @author DMcG + */ +public class XmlRpcServletLogging extends XmlRpcServlet { + + /** Logger object, logged at the info level */ + private static final Logger LOG = LogManager.getLogger(XmlRpcServletLogging.class); + + /** Constructor */ + public XmlRpcServletLogging() { + LOG.info("{} created", getClass().getName()); + } + + @Override + public void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { + super.doGet(request,response); + LOG.info("doGet(): {} {}", request, response); + } + + @Override + public void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { + super.doPost(request,response); + LOG.info("doPost(): {} {}", request, response); + } + + @Override + public void init(ServletConfig servletConfig) throws ServletException { + super.init(servletConfig); + LOG.info("{} started", getClass().getName()); + } + + @Override + public void destroy() { + LOG.info("Stopped {}", getClass().getName()); + } + +} diff --git a/examples/otherProjects/SavageWebServlet/src/log4j2.xml b/examples/otherProjects/SavageWebServlet/src/log4j2.xml new file mode 100644 index 0000000000000000000000000000000000000000..9d7a29b31f7fc1764269763282089f7d06d0f24f --- /dev/null +++ b/examples/otherProjects/SavageWebServlet/src/log4j2.xml @@ -0,0 +1,44 @@ +<?xml version="1.0" encoding="UTF-8"?> +<Configuration status="WARN"> + <Properties> + <Property name="LOG_PATTERN">[%-5level] %d{yyyy MMM dd HH:mm:ss 'GMT'Z} [%t] %C:%L - %m%n</Property> + <Property name="CONSOLE_PATTERN">%highlight{%-5level}{FATAL=bg_red, ERROR=red, WARN=yellow, INFO=green} %style{%d{yyyy MMM dd HH:mm:ss 'GMT'Z}}{blue} [%t] %C:%L - %m%n</Property> + </Properties> + <Appenders> + <Console name="Console" target="SYSTEM_ERR"> + <PatternLayout pattern="${CONSOLE_PATTERN}"/> + </Console> + <RollingFile name="RollingLogFile" fileName="logs/error.log.0" filePattern="logs/error.log.%i" > + <LevelRangeFilter minLevel="FATAL" maxLevel="ERROR" onMatch="ACCEPT" onMismatch="DENY"/> + <PatternLayout pattern="${LOG_PATTERN}"/> + <Policies> + <OnStartupTriggeringPolicy/> + </Policies> + <DefaultRolloverStrategy max="20"/> + </RollingFile> + <RollingFile name="InfoLog" fileName="logs/xmlrcp.log.0" filePattern="logs/xmldemo.log.%i"> + <LevelRangeFilter minLevel="WARN" maxLevel="INFO" onMatch="ACCEPT" onMismatch="DENY"/> + <PatternLayout pattern="${LOG_PATTERN}"/> + <Policies> + <OnStartupTriggeringPolicy/> + </Policies> + <DefaultRolloverStrategy max="20" fileIndex="min"/> + </RollingFile> + <RollingFile name="DebugLog" fileName="logs/debug.log.0" filePattern="logs/debug.log.%i"> + <LevelRangeFilter minLevel="DEBUG" maxLevel="DEBUG" onMatch="ACCEPT" onMismatch="DENY"/> + <PatternLayout pattern="${LOG_PATTERN}"/> + <Policies> + <OnStartupTriggeringPolicy/> + </Policies> + <DefaultRolloverStrategy max="10"/> + </RollingFile> + </Appenders> + <Loggers> + <Root level="INFO"> + <AppenderRef ref="Console"/> + <AppenderRef ref="RollingLogFile"/> + <AppenderRef ref="InfoLog" /> + <AppenderRef ref="DebugLog"/> + </Root> + </Loggers> +</Configuration> diff --git a/examples/otherProjects/SavageWebServlet/web/WEB-INF/classes/org/apache/xmlrpc/webserver/XmlRpcServlet.properties b/examples/otherProjects/SavageWebServlet/web/WEB-INF/classes/org/apache/xmlrpc/webserver/XmlRpcServlet.properties new file mode 100755 index 0000000000000000000000000000000000000000..80073eb32a5a94c3ebe4b4e78c8f08b46ff4cc26 --- /dev/null +++ b/examples/otherProjects/SavageWebServlet/web/WEB-INF/classes/org/apache/xmlrpc/webserver/XmlRpcServlet.properties @@ -0,0 +1 @@ +SavageSearch=SavageSearch \ No newline at end of file diff --git a/examples/otherProjects/SavageWebServlet/web/WEB-INF/web.xml b/examples/otherProjects/SavageWebServlet/web/WEB-INF/web.xml new file mode 100755 index 0000000000000000000000000000000000000000..d889f7d123060405703d5e3533d01b564839ecc8 --- /dev/null +++ b/examples/otherProjects/SavageWebServlet/web/WEB-INF/web.xml @@ -0,0 +1,41 @@ +<?xml version="1.0" encoding="UTF-8"?> +<web-app xmlns="http://xmlns.jcp.org/xml/ns/javaee" + xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" + xsi:schemaLocation="http://xmlns.jcp.org/xml/ns/javaee + http://xmlns.jcp.org/xml/ns/javaee/web-app_4_0.xsd" + version="4.0" + metadata-complete="true"> + + <display-name>SavageSearch Example</display-name> + <description> + Savage Search Example + </description> + + <servlet> + <servlet-name>Logger</servlet-name> + <servlet-class>XmlRpcServletLogging</servlet-class> + <init-param> + <param-name>enabledForExtensions</param-name> + <param-value>true</param-value> + </init-param> + <load-on-startup>1</load-on-startup> + </servlet> + <servlet-mapping> + <servlet-name>Logger</servlet-name> + <url-pattern>/*</url-pattern> + </servlet-mapping> + +<!-- <servlet> + <servlet-name>Searcher</servlet-name> + <servlet-class>org.apache.xmlrpc.webserver.XmlRpcServlet</servlet-class> + <init-param> + <param-name>enabledForExtensions</param-name> + <param-value>true</param-value> + </init-param> + <load-on-startup>2</load-on-startup> + </servlet> + <servlet-mapping> + <servlet-name>Searcher</servlet-name> + <url-pattern>/*</url-pattern> + </servlet-mapping>--> +</web-app>