<?xml version="1.0"?>

<project name="Web Services Security (WSS4J)" default="usage" basedir=".">
    <!-- ================================================================== -->
    <description>
   Build file for WSS4J

   This file is intended for ANT, a Java based build tool.
   ANT is available from http://jakarta.apache.org/ant/index.html

Prerequisites:
	See the README file

Build Instructions:
   To build, run

     ant "target"

   on the directory where this file is located with the target you want.

    </description>

    <target name="init">
        <property name='product.Name' value='Apache-WS-Security-J'/>
        <property name='product.name' value='wss4j'/>
        <property name='product.shortname' value='wss4j'/>

        <property name='product.version.major' value='1'/>
        <property name='product.version.minor' value='5'/>
        <property name='product.version.level' value='3'/>
        <property name='product.version' value='${product.version.major}.${product.version.minor}.${product.version.level}'/>
    	<!--<property name='product.version' value='SNAPSHOT'/>-->
        <property name="year" value="2005"/>
        <property name="copyright" value="Copyright &#169; ${year} Apache WSS4J Project. All Rights Reserved."/>

        <!-- Give user a chance to override without editing this file
             (and without typing -D each time it compiles it) -->
        <property file="./build.properties"/>
        <property file="${user.home}/build.properties"/>

        <!-- Place Holder for proxy settings -->
        <property name="http.proxyHost" value=""/>
        <property name="http.proxyPort" value=""/>
        <property name="http.nonProxyHosts" value="localhost"/>
        <property name="http.proxyUser" value=""/>
        <property name="http.proxyPassword" value=""/>

        <property name="dir.doc" value="./doc"/>
        <property name="dir.dist" value="./dist"/>
        <property name="dir.libs" value="./lib"/>
        <property name="dir.endorsed.libs" value="./endorsed"/>
        <property name="dir.src" value="./src"/>
        <property name="dir.samples" value="./samples"/>
        <property name="dir.test" value="./test"/>
        <property name="dir.keys" value="./keys"/>
        <property name="dir.specs" value="./specs"/>
        <property name="dir.interop" value="./interop"/>
        <property name="dir.webapp" location="./webapps/axis" />

        <property name="build.dir" value="./build"/>
        <property name="build.classes" value="${build.dir}/classes"/>
        <property name="build.work" value="${build.dir}/work"/>
        <property name="build.webapp" location="${build.dir}/webapps/axis"/>

        <property name="jar.library" value="${product.shortname}-${product.version}.jar"/>

        <property name="build.doc" value="${build.dir}/doc"/>
        <property name="build.doc.xml" value="${build.doc}/xml"/>
        <property name="build.doc.html" value="${build.doc}/html"/>
        <property name="build.javadoc" value="${build.doc.html}/api"/>
        <property name="build.junit.xml" value="${build.doc.xml}/junit"/>
        <property name="build.junit.html" value="${build.doc.html}/junit"/>


        <condition property="jdk13.present">
          <equals arg1="${ant.java.version}" arg2="1.3"/>
        </condition>

        <condition property="jdk14.present">
          <equals arg1="${ant.java.version}" arg2="1.4"/>
        </condition>

        <condition property="jdk15.present">
          <equals arg1="${ant.java.version}" arg2="1.5"/>
        </condition>

        <condition property="merlin.ok">
            <or>
                <equals arg1="${ant.java.version}" arg2="1.4"/>
                <equals arg1="${ant.java.version}" arg2="1.5"/>
            </or>
        </condition>

        <!-- 

         for the time being following path id uses the libs in the wss4j
         lib directory only This is done to test if we really don't need
         any axis libs. After this is done we can include the
         java.class.path and leave the wss4j/lib empty. This requires that
         the CLASSPATH includes all required packages (see above

         -->
    	
    	
        <path id="classpath.libraries" description="3rd party libs">
            <fileset dir="${dir.libs}">
                <include name="**/*.jar"/>
                <exclude name="**/bcprov-jdk15-*.jar" unless="jdk15.present"/>
                <exclude name="**/bcprov-jdk13-*.jar" if="jdk15.present" />
                <!-- <pathelement path="${java.class.path}"/> -->
            </fileset>
            <fileset dir="${dir.endorsed.libs}">
                <include name="**/*.jar"/>
                <!-- <pathelement path="${java.class.path}"/> -->
            </fileset>
        </path>

        <path id="classpath.wss4j" description="wss4j classes; first try pure class files, then jars">
            <pathelement path="${build.classes}"/>
            <pathelement path="${build.dir}/${jar.library}"/>
        </path>

        <path id="classpath.library">
            <path refid="classpath.wss4j"/>
            <path refid="classpath.libraries"/>
        </path>

        <taskdef resource="axis-tasks.properties" classpathref=
              "classpath.library"/>
        <taskdef name="runaxisfunctionaltests" classname=
              "org.apache.axis.tools.ant.axis.RunAxisFunctionalTestsTask"
            loaderref="axis">
            <classpath refid="classpath.library"/>
        </taskdef>
      
        <!-- this shall include Axis jars because the tests use the
         Axis implementation of javax.xml.soap, etc. Therefore the
         CLASSPATH is included.
         -->
        <path id="classpath.test">
            <!-- classpath for test is librarypath plus junit -->
            <path refid="classpath.library"/>
<!--            <pathelement path="${java.class.path}"/> -->
        </path>

        <path id="classpath.test.jar">
            <!-- classpath for test is librarypath plus junit -->
            <path refid="classpath.library"/>
            <pathelement path="${build.dir}/${jar.library}"/>
            <pathelement path="${build.dir}/${jar.tests}"/>
        </path>

        <patternset id="distFiles">
            <include name="build.xml"/>
            <include name="LICENSE.txt"/>
        </patternset>

        <patternset id="srcFiles">
         <!-- for some strange reasons, I can't use ${src} but must use src -->
            <include name="src/**/*"/>
        </patternset>

        <patternset id="srcSamplesFiles">
            <include name="samples/**/*"/>
        </patternset>

        <patternset id="srcUnitTestsFiles">
            <include name="test/**/*"/>
        </patternset>

        <patternset id="srcInteropFiles">
            <include name="interop/**/*"/>
        </patternset>

        <property name="javadoc.packages"
            value="
org.apache.ws.security,
org.apache.ws.security.components,
org.apache.ws.security.components.crypto,
org.apache.ws.security.message,
org.apache.ws.security.message.token,
org.apache.ws.security.util,
org.apache.ws.axis,
org.apache.ws.axis.security,
org.apache.ws.axis.security.util
"/>

      <echo level="debug">
        -------------------------------------------------------------------
        ${product.Name} v${product.version} [${year}] 
        -------------------------------------------------------------------
        Building with ${ant.version}
        using build file ${ant.file}
        Java ${java.version} located at ${java.home} 
        -------------------------------------------------------------------
        --- Property values ---
        sun.boot.class.path=${sun.boot.class.path}
      </echo>
      <pathconvert targetos="windows" property="classpath.test.as.string" 
          refid="classpath.test"/>
      <echo level="debug">
        classpath.test: ${classpath.test.as.string}
      </echo>
    </target>

    <target name="usage" depends="init">
      <echo>
         Build instructions                                                
        -------------------------------------------------------------------
                                                                           
         available targets are:                                            
                                                                           
           compile         --> compiles everything                         
           compile.library --> compiles the source code                    
           compile.samples --> compiles the samples source code            
           compile.tests   --> compiles the tests source code              
           compile.interops--> compiles the interop source code            
                                                                           
           javadoc         --> generates the API documentation             
                               (needs Java > 1.2)                          
                                                                           
           test            --> runs the defined JUnit tests                
           report          --> generates html report of test results       
                                                                           
           clean           --> cleans up all generated files and           
                               directories                                 
           jar             --> creates the JAR file                        
           gump            --> includes javadoc, compile jar and test      
                                                                           
           usage           --> provides help on using the build tool       
                               (default)                                   
                                                                           
           changelog       --> generates changelog.html                    
                                                                           
         See comments inside the build.xml file for more details.          
        -------------------------------------------------------------------
      </echo>
    </target>

    <target name="clean" depends="init"
        description="Clean up all temporary build files">
        <delete dir="${build.dir}"/>
        <delete>
            <fileset dir="." includes="before*.xml"/>
            <fileset dir="." includes="after*.xml"/>
            <fileset dir="." includes="signed*.xml"/>
            <fileset dir="." includes="server*.wsdd"/>
            <fileset dir="." includes="client*.wsdd"/>
        </delete>
        <delete dir="${dir.dist}"/>
    </target>

    <target name="prepare" depends="init"
        description="This target generates a first build directory and checks for some libraries">
        <tstamp/>
        <mkdir dir="${build.dir}"/>
        <delete dir="${build.dir}/test-reports"/>
        <mkdir dir="${build.dir}/test-reports"/>

        <available property="junit.present" 
                classname="junit.framework.TestCase">
            <!-- check whether JUnit is available -->
            <classpath refid="classpath.test"/>
        </available>

        <available property="bc.present" classname="org.bouncycastle.jce.provider.BouncyCastleProvider">
            <!-- check whether BouncyCastle is available -->
            <classpath refid="classpath.test"/>
        </available>

        <echo level="debug">
        --- Flags (Note: If the {property name} is displayed,
                   then the component is not present)
        jdk13.present=${jdk13.present}
        jdk14.present=${jdk14.present}
        jdk15.present=${jdk15.present}
        bc.present=${bc.present}
        </echo>

    </target>

    <!-- ################################################################## -->
    <!-- ################################################################## -->
    <!-- ################################################################## -->
    <!-- ################################################################## -->
    <!-- ################################################################## -->

    <target name="prepare-src" depends="prepare" 
    	description="This target copies the Java sources and brands the version information">
        <!-- create directories -->
        <mkdir dir="${build.classes}"/>
    </target>

    <target name="javadoc"
        depends="prepare-src"
        description="Generates javadoc from all .java files; this is done on the 'branded' files">
        <mkdir dir="${build.doc}"/>
        <mkdir dir="${build.doc.html}"/>
        <mkdir dir="${build.javadoc}"/>

        <javadoc destdir="${build.javadoc}"
            packagenames="${javadoc.packages}"
            classpathref="classpath.test">
            <!-- additionalparam="-breakiterator"-->
            <sourcepath>
                <pathelement location="${dir.src}"/>
                <pathelement location="${dir.test}"/>
                <pathelement location="${dir.samples}"/>
                <pathelement location="${dir.interop}"/>
            </sourcepath>
        </javadoc>
    </target>

    <!-- ################################################################## -->

    <!-- Aliases -->
    <target name="javadocs" depends="javadoc"/>
    <target name="jars" depends="jar"/>

    <!-- Collections -->
    <target name="gump" 
            depends="clean,javadoc,compile,test" 
            description="Target for the gump run"/>

    <target name="compile" 
       depends="compile.library,compile.samples, compile.tests, 
                compile.interops, fix.properties"
            description="compile everything"/>

    <target name="test"
            depends="unitTests, systemTests"
            description="tests everything"/>        

    <!-- ################################################################## -->

    <target name="fix.properties" if="jdk13.present">
        <replace dir="${build.dir}" value="org.apache.ws.security.components.crypto.BouncyCastle">
            <include name="**/*.properties"/>
            <replacetoken>org.apache.ws.security.components.crypto.Merlin</replacetoken>
        </replace>
    </target>

    <target name="compile.library" depends="prepare-src">
        <!-- Compile the java code from ${dir.src} into ${build.classes} -->
        <javac srcdir="${dir.src}" destdir="${build.classes}" debug="on" source="1.3" target="1.3">
            <classpath refid="classpath.library"/>
            <exclude name="**/Merlin.java" unless="merlin.ok"/>
            <exclude name="**/sandbox/**/*.java" if="jdk13.present" />
        </javac>
        <!-- Copy Property files -->
        <copy todir="${build.classes}">
            <fileset dir="${dir.src}">
                <include name="**/*.properties"/>
                <exclude name="**/axis/**/*.properties"/>
            </fileset>
        </copy>
    </target>

    <target name="compile.tests"
        depends="compile.interops"
        if="junit.present">

        <javac srcdir="${dir.test}" destdir="${build.classes}" debug="on" source="1.3" target="1.3">
            <classpath refid="classpath.test"/>
<!--            <exclude name="**/secconv/**/*.java"/> -->
        </javac>

        <mkdir dir="${build.work}"/>

        <javac srcdir="${build.work}" destdir="${build.classes}" debug="on" source="1.3" target="1.3">
            <classpath refid="classpath.test"/>
        </javac>

        <!-- Copy Property files -->
        <copy todir="${build.classes}">
            <fileset dir="${dir.test}" includes="**/*.properties"/>
            <fileset dir="${dir.interop}">
                <include name="**/*.properties"/>
            </fileset>
        </copy>
    </target>

    <target name="compile.samples"
        depends="compile.library">
        <!-- Compile the java code from ${dir.src} into ${build.classes} -->
        <javac srcdir="${dir.samples}"
            debug="on"
            source="1.4"
            destdir="${build.classes}" target="1.4">
            <classpath refid="classpath.library"/>
        </javac>
        <copy todir="${build.classes}">
            <fileset dir="${dir.src}" includes="**/axis/**/*.properties"/>
        </copy>
    </target>

    <target name="compile.interops"
        depends="compile.library">
        <ant dir="${dir.interop}"
            antfile="build.xml"
            target="compile"
            inheritAll="false">
        </ant>
    </target>

    <target name="systemTests" unless="skip.tests" depends="compile"
        if="junit.present"
        description="Runs all JUnit tests">
        <runaxisfunctionaltests
            url="http://localhost:8088"
            httpServerTarget="start-functional-test-http-server"
            testTarget="allTests"
            httpStopTarget="stop-functional-test-http-server"/>
    </target>

    <target name="start-functional-test-http-server" if="junit.present">
        <echo message="Starting http server."/>
        <java classname="org.apache.axis.transport.http.SimpleAxisServer" 
          fork="yes" dir="${build.dir}">
            <jvmarg value="-Djava.endorsed.dirs=${basedir}/endorsed"/>
            <classpath refid="classpath.library"/>
        </java>
    </target>

    <target name="stop-functional-test-http-server" if="junit.present">
        <echo message="Stopping http server."/>
        <java classname="org.apache.axis.client.AdminClient" fork="yes">
            <classpath refid="classpath.library"/>
            <arg line="quit"/>
        </java>
    </target>

    <target name="allTests" depends="sandboxTests, interopTests">
    </target>

    <target name="interopTests" depends="init">
        <echo message="Running system tests - BEGIN..."/>

        <path id="undeploy_xml_files">
            <fileset dir="${build.work}">
                <include name="**/undeploy.wsdd"/>
            </fileset>
        </path>
        <property name="undeploy_xml_property" refid="undeploy_xml_files"/>

    	<antcall target="deployWSDD" />
        <junit printsummary="yes"
            haltonfailure="yes"
            fork="yes"
            dir="${basedir}">
            <jvmarg value="-Djava.endorsed.dirs=${basedir}/endorsed"/>
            <jvmarg value="-Dhttp.proxyHost=${http.proxyHost}"/>
            <jvmarg value="-Dhttp.proxyPort=${http.proxyPort}"/>
            <jvmarg value="-Dhttp.nonProxyHosts=${http.nonProxyHosts}"/>
            <jvmarg value="-Dhttp.proxyUser=${http.proxyUser}"/>
            <jvmarg value="-Dhttp.proxyPassword=${http.proxyPassword}"/>
            <classpath refid="classpath.test"/>
            <formatter type="xml"/>
            <batchtest todir="${build.dir}/test-reports">
                <fileset dir="${build.classes}">
                    <include name="**/interop/PackageTests.class"/>
                </fileset>
            </batchtest>
        </junit>

        <java classname="org.apache.axis.utils.Admin" fork="true">
            <classpath refid="classpath.library"/>
            <arg value="client"/>
            <arg file=
               "${build.work}/org/apache/ws/axis/oasis/ping/undeploy.wsdd"/>
        </java>

	    <junit printsummary="yes"
            haltonfailure="yes"
            fork="yes"
            dir="${basedir}">
            <jvmarg value="-Djava.endorsed.dirs=${basedir}/endorsed"/>
            <jvmarg value="-Dhttp.proxyHost=${http.proxyHost}"/>
            <jvmarg value="-Dhttp.proxyPort=${http.proxyPort}"/>
            <jvmarg value="-Dhttp.nonProxyHosts=${http.nonProxyHosts}"/>
            <jvmarg value="-Dhttp.proxyUser=${http.proxyUser}"/>
            <jvmarg value="-Dhttp.proxyPassword=${http.proxyPassword}"/>
            <classpath refid="classpath.test"/>
            <formatter type="xml"/>
            <batchtest todir="${build.dir}/test-reports">
                <fileset dir="${build.classes}">
                    <include name="**/interop/TestJAXRPCHandler.class"/>
                </fileset>
            </batchtest>
        </junit>

        <java classname="org.apache.axis.client.AdminClient" fork="yes">
            <classpath refid="classpath.library"/>
            <arg line="${undeploy_xml_property}"/>
        </java>
        
        <echo message="Running system tests - END..."/>
    </target>

    <target name="unitTests" unless="skip.tests" depends="compile">
        <junit printsummary="yes"
            haltonfailure="yes"
            fork="yes"
            dir="${basedir}">
            <!-- See if this helps with Gump test failures -->
            <sysproperty key="build.clonevm" value="true"/>

            <jvmarg value="-Djava.endorsed.dirs=${basedir}/endorsed"/>
            <jvmarg value="-Dhttp.proxyHost=${http.proxyHost}"/>
            <jvmarg value="-Dhttp.proxyPort=${http.proxyPort}"/>
            <jvmarg value="-Dhttp.nonProxyHosts=${http.nonProxyHosts}"/>
            <jvmarg value="-Dhttp.proxyUser=${http.proxyUser}"/>
            <jvmarg value="-Dhttp.proxyPassword=${http.proxyPassword}"/>
            <classpath refid="classpath.test"/>
            <formatter type="xml"/>
            <batchtest todir="${build.dir}/test-reports">
                <fileset dir="${build.classes}">
                    <include name="**/wssec/PackageTests.class"/>
                    <include name="**/components/PackageTests.class"/>
             <!--<include name="**/secconv/components/PackageTests.class"/> -->
                </fileset>
            </batchtest>
        </junit>
    </target>

    <target name="sandboxTests" depends="compile">
        <java classname="org.apache.axis.client.AdminClient" fork="yes">
            <classpath refid="classpath.library"/>
            <arg line="${dir.samples}/org/apache/ws/sandbox/security/trust2/samples/deploy.wsdd"/>
        </java>

        <junit printsummary="yes"
            haltonfailure="yes"
            fork="yes"
            dir="${basedir}">
            <!-- See if this helps with Gump test failures -->
            <sysproperty key="build.clonevm" value="true"/>

            <jvmarg value="-Djava.endorsed.dirs=${basedir}/endorsed"/>
            <jvmarg value="-Dhttp.proxyHost=${http.proxyHost}"/>
            <jvmarg value="-Dhttp.proxyPort=${http.proxyPort}"/>
            <jvmarg value="-Dhttp.nonProxyHosts=${http.nonProxyHosts}"/>
            <jvmarg value="-Dhttp.proxyUser=${http.proxyUser}"/>
            <jvmarg value="-Dhttp.proxyPassword=${http.proxyPassword}"/>
            <classpath refid="classpath.test"/>
            <formatter type="xml"/>
            <batchtest todir="${build.dir}/test-reports">
                <fileset dir="${build.classes}">
                    <include name="**/sandbox/PackageTests.class"/>
                </fileset>
            </batchtest>
        </junit>

        <java classname="org.apache.axis.client.AdminClient" fork="yes">
            <classpath refid="classpath.library"/>
            <arg line="${dir.samples}/org/apache/ws/sandbox/security/trust2/samples/undeploy.wsdd"/>
        </java>
    </target>
    
    <target name="tcpmon" depends="init" description=
                "Start standalone tcp monitor application (provided by axis)">
        <java dir="${basedir}" fork="yes" failOnError="true" 
                 className="org.apache.axis.utils.tcpmon">
            <classpath refid="classpath.library" />
             <arg value="9080" />
             <arg value="localhost" />
             <arg value="8080" />
         </java>
    </target>

	<!--
	This runs the selected scenario with SimpleAxisServer locally.
	Before you start this target be sure you have started tcpmon too 
        in a separate
	"ant tcpmon" call.
	To run different scenarios use: "ant -DNumber=x scenarioTest" 
        to run scenario x
	-->
    <target name="scenarioTest" depends="compile"
        if="junit.present"
        description="Runs all JUnit tests">
        <runaxisfunctionaltests
            url="http://localhost:8088"
            httpServerTarget="start-functional-test-http-server"
            testTarget="scenario"
            httpStopTarget="stop-functional-test-http-server"/>
    </target>

    <target name="scenario" if="junit.present">
        <echo message=
          "Running interop test scenario ${Number} on SimpleAxisServer"/>

    	<antcall target="deployWSDD" />
    	
        <java classname="interop.TestScenario${Number}" fork="yes" 
                 dir="${basedir}">
            <jvmarg value="-Djava.endorsed.dirs=${basedir}/endorsed"/>
            <classpath refid="classpath.library"/>
        </java>

    	<antcall target="undeployWSDD" />

    </target>
	
	<!--
	This runs the selected scenario with SimpleAxisServer locally 
        with perfomance
	timing switched on.
	You may also emable the **.TIME entry in log4j.properties to get 
        the internal
	timing.
	To run different scenarios use: "ant -DNumber=x scenarioTest" 
        to run scenario x
	-->
    <target name="performanceTest" depends="compile"
        if="junit.present"
        description="Runs all JUnit tests">
        <runaxisfunctionaltests
            url="http://localhost:8088"
            httpServerTarget="start-functional-test-http-server"
            testTarget="performance"
            httpStopTarget="stop-functional-test-http-server"/>
    </target>

    <target name="performance" if="junit.present">
        <echo message=
           "Running performance test scenario ${Number} on SimpleAxisServer"/>

    	<antcall target="deployWSDD" />
        <java classname="interop.TestScenario${Number}" fork="yes" 
            dir="${basedir}">
            <jvmarg value="-Djava.endorsed.dirs=${basedir}/endorsed"/>
       <arg value="-lhttp://localhost:8080/axis/services/Ping${Number}" />
        	<arg value="-t" />
            <classpath refid="classpath.library"/>
        </java>
    	<antcall target="undeployWSDD" />
    </target>
	
    <target name="deployWSDD">
      <path id="deploy_xml_files">
      <fileset dir="${build.work}">
        <include name="**/deploy.wsdd"/>
      </fileset>
      </path>

      <copy todir="${build.dir}/keys">
        <fileset dir="${dir.keys}" includes="**"/>
      </copy>
      <copy todir="${build.dir}/interop">
        <fileset dir="${dir.interop}" includes="*.jks"/>
      </copy>

      <property name="deploy_xml_property" refid="deploy_xml_files"/>
 
      <java classname="org.apache.axis.utils.Admin" fork="true">
        <classpath refid="classpath.library"/>
        <arg value="client"/>
        <arg file="${build.work}/org/apache/ws/axis/oasis/Client_deploy.wsdd"/>
      </java>
        
      <java classname="org.apache.axis.client.AdminClient" fork="yes">
        <classpath refid="classpath.library"/>
        <arg line="${deploy_xml_property}"/>
      </java>
    </target>
	
    <target name="undeployWSDD">
      <path id="undeploy_xml_files">
        <fileset dir="${build.work}">
          <include name="**/undeploy.wsdd"/>
        </fileset>
      </path>

      <property name="undeploy_xml_property" refid="undeploy_xml_files"/>

      <java classname="org.apache.axis.utils.Admin" fork="true">
            <classpath refid="classpath.library"/>
            <arg value="client"/>
            <arg file=
                 "${build.work}/org/apache/ws/axis/oasis/ping/undeploy.wsdd"/>
      </java>

      <java classname="org.apache.axis.client.AdminClient" fork="yes">
        <classpath refid="classpath.library"/>
        <arg line="${undeploy_xml_property}"/>
      </java>
    </target>
		
	<!-- generate a report from all the tests. 
           requires Xalan or other XSLT engine in ant\lib-->

   <target name="report" depends="init">
        <junitreport todir="${build.dir}/test-reports">
            <fileset dir="${build.dir}/test-reports">
                <include name="TEST-*.xml"/>
            </fileset>
            <report format="frames" todir="${build.dir}/test-reports/html"/>
        </junitreport>
        <echo message=
            "point your browser to ${build.dir}/test-reports/html/index.html"/>
    </target>

    <target name="jar"
        depends="compile, test"
        description="Creates the ${jar.library}">

        <jar jarfile="${build.dir}/${jar.library}"
            basedir="${build.classes}"
            includes="**/*, *.txt"
            excludes="components/**, *.properties, **/sandbox/**, wssec/**, **/interop/**, **/oasis/**, **/samples/**" 
            />
    </target>

   <target name="bindist" depends="gump" 
      description="Build zip file for distro">
     <delete dir="${dir.dist}"/>
     <mkdir dir="${dir.dist}"/>
     <jar jarfile="${dir.dist}/${jar.library}"
       basedir="${build.classes}"
       includes="**/apache/**/security/**"  />
     <zip destfile=
        "${dir.dist}/${product.shortname}-bin-${product.version}.zip">
        <zipfileset prefix="wss4j" dir="."
          includes="keys/**, interop/**, interop2/**, test/**, samples/**,
          LICENSE.txt, README.txt legal/**, webapps/**"/>
        <zipfileset prefix="wss4j/classes" dir="${build.classes}"
          includes=
     "*.properties, interop/**, wssec/**, org/**/oasis/**, org/**/samples/**"/>
        <zipfileset prefix="wss4j/doc/api" dir="${build.javadoc}"/>
        <zipfileset fullpath="wss4j/${jar.library}" dir="${dir.dist}" 
          includes="${jar.library}"/>
      </zip>
    </target>

    <target name="otherdist" depends="init" 
             description="Build zip for required jars">
	     <mkdir dir="${dir.dist}"/>
	     <zip destfile=
           "${dir.dist}/${product.shortname}-otherjars-${product.version}.zip">
	         <zipfileset prefix="wss4j" dir="."
	             includes="lib/*.jar, endorsed/*.jar"/>
	     </zip>
	 </target>	
	
	<target name="srcdist" depends="init" description=
               "Build source zip file for distro">
        <mkdir dir="${dir.dist}"/>
        <zip destfile=
                 "${dir.dist}/${product.shortname}-src-${product.version}.zip">
            <zipfileset prefix="wss4j" dir="."
                includes="src/** LICENSE.txt README.txt legal/** build.xml "/>
        </zip>
    </target>

    <target name="fixcrlf"
        description="Fixes CRLF">
        <fixcrlf srcdir="."
            eol="crlf"
            includes="**/*.java"
            />
        <fixcrlf srcdir="."
            eol="crlf"
            includes="**/*.properties"
            />
    </target>

    <target name="changelog"
        depends="prepare"
        description="Generate the changelog for WSS4J project">
        <cvschangelog dir="."
            destfile="${build.dir}/changelog.xml"
            />
        <style in="${build.dir}/changelog.xml"
            out="${build.dir}/changelog.html"
            style="./tools/changelog.xsl">
            <param name="title" expression="WSS4J ChangeLog"/>
            <param name="module" expression="ws-wss4j"/>
            <param name="cvsweb" expression="http://cvs.apache.org/viewcvs/"/>
        </style>
    </target>

  <!-- =================================================================== -->
  <!-- Creates a war file for interop testing                              -->
  <!-- =================================================================== -->
  <target name="interop-war" depends="test"
      description="Create the web application" >
    <mkdir dir="${build.webapp}"/>
    <copy todir="${build.webapp}">
      <fileset dir="${dir.webapp}"/>
    </copy>
    <copy todir="${build.webapp}/WEB-INF/lib">
      <fileset dir="${dir.libs}">
        <include name="*.jar"/>
      </fileset>
      <fileset dir="${basedir}/endorsed">
        <include name="*.jar"/>
      </fileset>
    </copy>
    <copy todir="${build.webapp}/WEB-INF">
      <fileset dir="${build.dir}">
        <include name="*.wsdd"/>
      </fileset>
    </copy>
    <copy todir="${build.webapp}/WEB-INF/classes/">
      <fileset dir="${build.classes}"/>
    </copy>
    <copy todir="${build.webapp}/WEB-INF/classes/">
      <fileset dir=".">
          <include name="client-config.wsdd"/>
      </fileset>
    </copy>
    <copy todir="${build.webapp}/WEB-INF/classes/interop">
        <fileset dir="${dir.interop}">
            <include name="**/interop2.jks"/>
        </fileset>
    </copy>

    <delete>
      <fileset dir="${build.webapp}" includes="**/CVS"/>
    </delete>
    <path id="deploy_xml_files">
        <fileset dir="${build.work}">
            <include name="**/deploy.wsdd"/>
        </fileset>
    </path>
    <property name="deploy_xml_property" refid="deploy_xml_files"/>
    <java classname="org.apache.axis.utils.Admin" fork="true"
        dir="${build.webapp}/WEB-INF/classes">
      <classpath refid="classpath.library"/>
      <arg value="client"/>
      <arg file="${build.work}/org/apache/ws/axis/oasis/Client_deploy.wsdd"/>
    </java>
    <java classname="org.apache.axis.utils.Admin" fork="yes" 
        dir="${build.webapp}/WEB-INF">
        <classpath refid="classpath.library"/>
        <arg line="server"/>
        <arg line="${deploy_xml_property}"/>
    </java>

    <jar jarfile="${build.dir}/wss4j.war" basedir="${build.webapp}"/>
  </target>

</project>
