<project name="sample32" default="build">

  <!-- common properties -->
  <property file="../properties.txt" />

  <!-- properties specific to this service -->
  <property name="service" value="HelloWorldService" />
  <property name="service_package" value="tutorial.sample32" />
  <property name="service_war" value="sample32" />
  <property name="ejbc.compiler" value="javac" />

  <!-- class path used on the client side -->
  <path id="client.class.path">
    <pathelement path="${client_classes}" />
    <pathelement path="${output_dir}/${service}-client.jar" />
    <pathelement path="${java.class.path}" />
  </path>

  <target name="build" depends="clean,setup,compile.server,
  ejbgen.build,webservice.build,deploy,compile.client" />

  <target name="clean" description="delete generated stuff" >
    <delete dir="${output_dir}" />
    <delete dir="${client_classes}" />
    <delete dir="ejbcgen" />
    <delete file="hello-world-service-ejb.jar" />
  </target>

  <target name="setup" description="create output directories" >
    <mkdir dir="${output_dir}/ejb_temp" />
    <mkdir dir="${output_dir}/ejb" />
    <mkdir dir="${client_classes}" />
  </target>

  <target name="compile.server" 
    description="compile classes needed on the server side"  >

    <javac srcdir="." includes="*.java" excludes="client/*"
       destdir="${output_dir}/ejb" >
    </javac>
  </target>

  <target name="ejbgen.build" >
    <javadoc failonerror="yes"
      sourcepath="."
      destdir="${output_dir}/ejb_temp" >
        <source file="HelloWorldBean.java"/>
        <doclet name="weblogic.tools.ejbgen.EJBGen">
          <param name="-ignorePackage"/>
          <param name="-valueObjectSuffix" value="Info"/>
        </doclet>
    </javadoc>

    <javac srcdir="${output_dir}/ejb_temp" includes="*.java" 
       destdir="${output_dir}/ejb" >
    </javac>

    <mkdir dir="${output_dir}/ejb/META-INF" />

    <copy file="${output_dir}/ejb_temp/ejb-jar.xml" 
    todir="${output_dir}/ejb/META-INF" />

    <copy file="${output_dir}/ejb_temp/weblogic-ejb-jar.xml" 
    todir="${output_dir}/ejb/META-INF" />

    <jar jarFile="${output_dir}/pre-hello-world-service-ejb.jar"
    baseDir="${output_dir}/ejb" />

    <ejbc compiler="${ejbc.compiler}" 
      source="${output_dir}/pre-hello-world-service-ejb.jar"
      target="${output_dir}/hello-world-service-ejb.jar">
    </ejbc>

    <delete file="${output_dir}/pre-hello-world-service-ejb.jar" />
  </target>

  <target name="webservice.build"
    description="create web service descriptor, wsdl file, web service client" >

    <autotype 
      javaComponents="${service_package}.HelloWorld"
      destDir="${output_dir}/war/WEB-INF/classes" 
      packageName="${service_package}">
      <classpath>
        <pathelement location="${output_dir}/ejb" />
        <pathelement path="${java.class.path}" />
      </classpath>
    </autotype>

   <source2wsdd 
     description="create web service descriptor and wsdl from source file"
     javaSource="HelloWorldBean.java" 
     ddFile="${output_dir}/war/WEB-INF/web-services.xml"
     typesInfo="${output_dir}/war/WEB-INF/classes/types.xml"
     serviceURI="/${service}"
     ejbLink="hello-world-service-ejb.jar#HelloWorld"
     wsdlFile="${output_dir}/${service}.wsdl" >
     <classpath>
       <pathelement location="${output_dir}/war/WEB-INF/classes" />
       <pathelement location="${output_dir}/war/WEB-INF/lib" />
       <pathelement location="${output_dir}/hello-world-service-ejb.jar" />
       <pathelement path="${java.class.path}" />
     </classpath>
   </source2wsdd>

   <clientgen 
     description="create a web service client from the wsdl"
     clientJar="${output_dir}/${service}-client.jar"
     wsdl="${output_dir}/${service}.wsdl"
     packageName="${service_package}.client"
     typePackageName="${service_package}.client"
     usePortNameAsMethodName="true" />
  </target>

  <target name="compile.client" 
      description="compile classes needed on the client side" >

    <javac srcdir="." includes="client/*.java" destdir="${client_classes}" >
      <classpath refid="client.class.path" />
    </javac>
  </target>

  <target name="deploy" description="deploy service by copying war to 
                                     application directory" >

    <mkdir dir="${output_dir}/META-INF" />
    <copy file="application.xml" toDir="${output_dir}/META-INF" />

    <jar jarFile="${output_dir}/${service_war}.war" 
       baseDir="${output_dir}/war" />

    <delete dir="${output_dir}/war" />
    <delete dir="${output_dir}/ejb" />
    <delete dir="${output_dir}/ejb_temp" />

    <jar jarFile="${application_dir}/sample32.ear" 
       baseDir="${output_dir}" />
  </target>

  <target name="browse" description="browse test page for this service" >

    <exec executable="${browser}" >
      <arg line="${server_url}/${service_war}/${service}" />
    </exec>
  </target>

  <target name="run" description="run client" >

    <java classname="${service_package}.client.Main" >
      <classpath refid="client.class.path" />
      <arg line="${server_url}/${service_war}/${service}?WSDL" />
    </java>
  </target>

</project>

