<?xml version="1.0"?>
<!--
 * Licensed to the Apache Software Foundation (ASF) under one
 * or more contributor license agreements. See the NOTICE file
 * distributed with this work for additional information
 * regarding copyright ownership. The ASF licenses this file
 * to you under the Apache License, Version 2.0 (the
 * "License"); you may not use this file except in compliance
 * with the License. You may obtain a copy of the License at
 *
 * http://www.apache.org/licenses/LICENSE-2.0
 *
 * Unless required by applicable law or agreed to in writing,
 * software distributed under the License is distributed on an
 * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
 * KIND, either express or implied. See the License for the
 * specific language governing permissions and limitations
 * under the License.
-->
<project name="Bank Object Reference Demo" default="build" basedir=".">

    <property name="wsdl.dir" location="${basedir}/../resources"/>
    <import file="../../common_build.xml"/>     

    <target name="generate.code">
        <!--antcall target="generate.corba.wsdl"/-->
        <antcall target="generate.ws.code"/>
        <antcall target="generate.corba.code"/>
    </target>

    <target name="generate.corba.wsdl">
        <echo level="info" message="Generating CORBA IDL and WSDL using wsdltoidl..."/>
        <wsdl2corba file="../resources/BankWS.wsdl" dest="BankWS-account.wsdl" binding="Account"/>
        <wsdl2corba file="BankWS-account.wsdl" dest="BankWS-corba.wsdl" binding="Bank"/>
        <wsdl2idl file="BankWS-corba.wsdl" dest="BankWS-corba.idl" binding="Bank"/>
        <echo level="info" message="Deleting intermediate BankWS-account.wsdl file..."/>
        <delete file="BankWS-account.wsdl"/>
    </target>
    
    <target name="generate.ws.code">
        <echo level="info" message="Generating ws code using wsdl2java..."/>
        <wsdl2java dir="${basedir}" file="BankWS-corba.wsdl" package="cxf.common"/>
    </target>

    <target name="generate.corba.code">
        <echo level="info" message="Generating corba code using idlj..."/>
        <idl2java file="BankWS-corba.idl" package="corba.common"/>
    </target>


    <target name="cxf.client" depends="build">
        <cxfrun classname="cxf.client.Client"/>
    </target>
    <target name="corba.client" depends="build">
        <java classname="corba.client.Client" fork="yes">
            <classpath>
                <pathelement path="build/classes"/>
                <path refid="jdk.tools.classpath"/>
            </classpath>
        </java>
    </target>

    <target name="cxf.server" depends="build">
        <cxfrun classname="cxf.server.Server"/>
    </target>

    <target name="corba.server" depends="build">
        <java classname="corba.server.Server" fork="yes">
            <classpath>
                <pathelement path="build/classes"/>
                <path refid="jdk.tools.classpath"/>
            </classpath>
        </java>
    </target>

    <macrodef name="wsdl2corba">
        <attribute name="file"/>
        <attribute name="extraArgs" default=""/>
        <sequential>
            <java failonerror="true" classname="org.apache.cxf.tools.corba.WSDLToIDL" fork="yes">
                <classpath>
                    <path refid="cxf.classpath" />
                </classpath>
                <arg line="@{extraArgs} -d ${build.dir} -corba @{file}"/>
            </java>
        </sequential>
    </macrodef>

    <macrodef name="wsdl2idl">
        <attribute name="file"/>
        <attribute name="dest"/>
        <attribute name="binding"/>
        <sequential>
            <java failonerror="true" classname="org.apache.cxf.tools.corba.WSDLToIDL" fork="yes">
                <classpath>
                    <path refid="cxf.classpath"/>
                </classpath>
                <arg line="-d ${basedir} -idl -i @{binding} -o @{dest} @{file}"/>
            </java>
        </sequential>
    </macrodef>

    <macrodef name="idl2java">
        <attribute name="srcdestdir" default="${build.src.dir}"/>
        <attribute name="destdir" default="${build.classes.dir}"/>
        <attribute name="file"/>
        <attribute name="package"/>
        <sequential>
            <mkdir dir="@{srcdestdir}"/>
            <mkdir dir="@{destdir}"/>
            <exec executable="idlj" dir=".">
                <arg line="-fall -td @{srcdestdir} -pkgPrefix Bank @{package} -pkgPrefix Account @{package} @{file}"/>
            </exec>
        </sequential>
    </macrodef>
</project>
