<?xml version="1.0"?>
<!DOCTYPE project [
        <!ENTITY properties SYSTEM "../../../../xmls/properties.xml">
        <!ENTITY paths  SYSTEM "../../../../xmls/path_refs.xml">
        <!ENTITY taskdefs SYSTEM "../../../../xmls/taskdefs.xml">
        <!ENTITY taskdefs_post_compile SYSTEM "../../../../xmls/taskdefs_post_compile.xml">
        <!ENTITY targets SYSTEM "../../../../xmls/targets.xml">
]>

<!-- ===================================================================
<description>
   Test/Sample Component file for Axis

Notes:
   This is a build file for use with the Jakarta Ant build tool.

Prerequisites:

   jakarta-ant from http://jakarta.apache.org

Build Instructions:
   To compile
        ant compile
   To execute
        ant run

Author:
  Matt Seibert mseibert@us.ibm.com

Copyright:
  Copyright (c) 2002-2003 Apache Software Foundation.
</description>
==================================================================== -->

<project name="Round3" default="main">
<property name="axis.home" location="../../../.." />
<property name="componentName" value="test/wsdl/interop3/compound2" />
        &properties;
        &paths;
        &taskdefs;
        &taskdefs_post_compile;
        &targets;
  <property name="root.dir" value="../../../.."/>

  <path id="test-classpath">
    <pathelement location="${build.dest}" />
    <pathelement path="${java.class.path}" />
    <pathelement location="${java.home}/../lib/tools.jar"/>
    <fileset dir="${root.dir}/lib">
      <include name="*.jar"/>
    </fileset>
  </path>


  <target name="clean">
        <echo message="Removing ${build.dir}/classes/${componentName} and ${build.dir}/work/${componentName}" />
        <delete dir="${build.dir}/classes/${componentName}"/>
        <delete dir="${build.dir}/work/${componentName}"/>
  </target>
  
  <target name="main">
    <property file="axis.properties"/>

    <!-- <wsdl2java url="http://www.whitemesa.com/r3/emptysa.wsdl" -->
    <wsdl2java url="${axis.home}/test/wsdl/interop3/emptysa/emptysa.wsdl"
               output="${axis.home}/build/work"
               serverside="yes"
               skeletonDeploy="no">
        <mapping namespace="http://soapinterop/" package="test.wsdl.interop3.emptysa"/>
    </wsdl2java>
    
    <copy file="SoapInteropEmptySABindingImpl.java" overwrite="true"
          todir="${build.dir}/work/test/wsdl/interop3/emptysa"/>

    <copy file="EmptySATestCase.java" overwrite="true"
          todir="${build.dir}/work/test/wsdl/interop3/emptysa"/>

    <javac srcdir="${build.dir}/work" destdir="${build.dest}" debug="on" source="${source}" nowarn="${nowarn}">
      <classpath refid="test-classpath" />
      <include name="test/wsdl/interop3/emptysa/*.java" />
    </javac>

  </target>
</project>
