<project name="Webservices - TD1"
         basedir="/Users/lmaitre/webservices/td1"
         default="help"
 >
    <!-- Webservices TD1 Build file - V1.0 - 2004-03-07 - Ludovic.Maitre@free.fr -->

    <!-- Override properties with local definitions -->
    <property file="./build.properties"/>

    <!-- Classpath settings -->
    <path id="compile.classpath">
        <!-- classpath for Axis 1.1 -->
        <pathelement path ="${ws.lib}/axis.jar"/>
        <pathelement path ="${ws.lib}/jaxrpc.jar"/>
        <pathelement path ="${ws.lib}/saaj.jar"/>
        <pathelement path ="${ws.lib}/commons-logging.jar"/>
        <pathelement path ="${ws.lib}/commons-discovery.jar"/>
        <pathelement path ="${ws.lib}/wsdl4j.jar"/>
        <!-- classpath for Axis ant tasks -->
        <pathelement path ="${ws.lib}/axis-ant.jar"/>
        <pathelement path ="${ws.root}/tools"/>
        <pathelement path ="${build}/classes"/>
    </path>

    <!-- Check timestamp on files -->
    <target name="prepare"
        description="Note timestamp">
        <tstamp/>
        <taskdef resource="axis-tasks.properties"
  			classpathref="compile.classpath" />
    </target>

    <target name="help">
        <echo message="Cibles conseillees:"/>
        <echo message="- generate-skeletons: genere le fichier WSDL et les fichiers source Java pour le WSDL a partir de l'interface."/>
        <echo message="- build: compile le webservice (une fois l'implementqtion remplie) et le package en fichier .jar"/>
        <echo message="- deploy: installe le webservice sur le serveur."/>
        <echo message="Pensez a regler le fichier build.properties pour votre environnement..."/>
    </target>

    <target name="generate-skeleton" depends="generate-java"/>

    <target name="generate-wsdl" depends="prepare">
    
        <echo message="Compile our classes before WSDL generation"/>
        <javac 
            srcdir="${src}" 
            destdir="${build}/classes"
            optimize="on"
            debug="on"
            includes="**/UpperCase*.java"
            >
            <classpath refid="compile.classpath"/>
        </javac>
        
        <echo message="Generating WSDL from our classes"/>
        <axis-java2wsdl
			classname="${project.package}.UpperCase"
			implclass="${project.package}.UpperCaseImpl"
			location="http://${project.server}:${project.port}/axis/services/${project.name}"
			namespace="${project.namespace}"
			bindingname="UpperCase"
			output="${build}/${project.name}.wsdl"
    	>
            <classpath refid="compile.classpath"/>
        </axis-java2wsdl>
    </target>

    <target name="generate-java" depends="clean,prepare,generate-wsdl">

        <echo message="Generate classes from WSDL"/>
        <axis-wsdl2java
  	output="${build}/src"
  	testcase="false"
  	verbose="true"
  	url="${build}/${project.name}.wsdl"
  	all="true"
  	serverside="true"
  	skeletondeploy="true"
  	>
            <mapping
	      namespace="${project.namespace}"
    	  package="${project.package}" />
        </axis-wsdl2java>

        <echo message="Moving generated wbservices deployment descriptor to base build dir"/>
        <move todir="${build}" flatten="yes">
            <fileset dir="${build}/src">
                <include name="**/*.wsdd"/>
            </fileset>
        </move>

        <echo message="Replacing existing interface and implementation by our classes"/>
        <copy todir="${build}/src" overwrite="true">
            <fileset dir="${src}">
                <include name="**/*.java"/>
            </fileset>
        </copy>

    </target>

    <target name="deploy" depends="prepare">
    <copy todir="${tomcat.root}/webapps/axis/WEB-INF/lib">
    	<fileset dir="${dist}">
    		<include name="**"/>
    	</fileset>
    </copy>
        <axis-admin
    port="${project.port}"
    hostname="${project.server}"
    failonerror="true"
    servletpath="axis/services/AdminService"
    debug="true"
    xmlfile="${build}/deploy.wsdd"
    />
    </target>

    <!-- Compile the business and web classes -->
    <target name="compile" depends="prepare">
        <echo message="Compiling classes"/>
        <javac 
            srcdir="${build}/src"
            destdir="${build}/classes"
            optimize="on"
            debug="on"
            >
            <classpath refid="compile.classpath"/>
        </javac>
    </target>

    <!-- Build Javadoc documentation -->
    <target name="javadoc"
        description="Generate JavaDoc API docs">
        <delete dir="${doc}"/>
        <mkdir dir="${doc}"/>
        <javadoc sourcepath="${src}"
            destdir="${doc}"
            classpathref="compile.classpath"
            packagenames="fr.iutnice.lpmi.ws.td1.*"
            author="true"
            private="true"
            version="true"
            windowtitle="${project.name} API Documentation"
            doctitle="&lt;h1&gt;${project.name} Documentation&lt;/h1&gt;"
            bottom="&lt;adress&gt;&lt;div align='center'&gt;&lt;p&gt;&#169; Copyright 2004 Ludovic Maitre - ${project.author} - All Rights Reserved.&lt;/p&gt;&lt;/div&gt;&lt;/adress&gt;">
            <classpath refid="compile.classpath"/>
        </javadoc>
    </target>

    <!-- Package the business classes -->
    <target name="package"
            description="Assemble the business classes"
            depends="compile"
     >
        <jar
            jarfile="${dist}/${project.name}.jar"
            basedir="${build}/classes"
            includes="**"
            />
    </target>

    <target name="build" depends="compile,package"/>

    <!-- Normal build of application -->

    <!-- Remove classes directory for clean build -->
    <target name="clean" description="Prepare for clean build">
        <delete dir="${build}" failonerror="true"/>
        <mkdir dir="${build}"/>
        <delete dir="${build}/src"/>
        <mkdir dir="${build}/src"/>
        <delete dir="${build}/classes"/>
        <mkdir dir="${build}/classes"/>
        <delete dir="${dist}" failonerror="true"/>
        <mkdir dir="${dist}"/>
    </target>

    <target name="debug">
        <echo message="Lists the properties for debugging purposes ..."/>
        <echo message="project.name        =${project.name}"/>
        <echo message="root		           =${root}"/>
        <echo message="wsroot		       =${ws.root}"/>
        <echo message="build		       =${build}"/>
        <echo message="dist		           =${dist}"/>
        <echo message="src		           =${src}"/>
    </target>

    <!-- Build project and create distribution-->
    <target name="all" depends="generate-skeleton,build,deploy"/>

</project>

