<!--
 -
 - 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="qpid-jca-example" default="help" basedir="">

    <!-- Valid target platforms are currently geronimo, jboss, jboss7, glassfish -->
    <property name="target.platform" value="geronimo"/>

    <!-- Change to BURL for older syntax support -->
    <property name="qpid.dest_syntax" value="ADDR"/>

    <!-- Properties controlling running sample standalone client -->
    <property name="client.use.ejb" value="true"/> <!-- uses JNDI/JMS or JNDI/RMI -->
    <property name="client.message" value="Hello Qpid World"/>
    <property name="client.message.count" value="1"/>
    <property name="client.use.topic" value="false"/> <!-- Use topic/queue -->
    <property name="client.say.goodbye" value="false"/>

    <!-- Pull in environment vars as properties -->
    <property environment="env"/>

    <!-- QPID version property -->
    <import file="${basedir}/build-properties.xml"/>

    <import file="${basedir}/qpid-jca-example-properties.xml"/>

    <!-- Target specific properties/targets -->
    <import file="${basedir}/build-${target.platform}-properties.xml"/>

    <macrodef name="compile">
        <attribute name="classpath"/>
        <sequential>
            <javac srcdir="${gen.dir}"
               destdir="${build.classes.dir}"
               classpathref="@{classpath}"
               debug="true" optimize="false"/>
        </sequential>
    </macrodef>

    <echo message="Using Qpid version ${qpid.ver}"/>
    <echo message="Building for platform ${target.platform}"/>
    <echo message="Broker url is currently set to ${broker.url}"/>
	<echo message="Qpid Destination Syntax is ${qpid.dest_syntax}"/>

	<target name="init">
        <mkdir dir="${build.classes.dir}"/>
        <mkdir dir="${gen.dir}"/>
        <mkdir dir="${log.dir}"/>
    </target>

    <target name="generate" depends="init">
        <copy todir="${gen.dir}" overwrite="true">
            <fileset dir="${conf.dir}"/>
            <filterset>
                <filter token="rar.name" value="${rar.name}"/>
                <filter token="ejb.name" value="${ejb.name}"/>
                <filter token="war.name" value="${war.name}"/>
                <filter token="broker.url" value="${broker.url}"/>

                <filter token="qpid.hello.topic.dest.address" value="${qpid.hello.topic.dest.address}"/>
                <filter token="qpid.goodbye.topic.dest.address" value="${qpid.goodbye.topic.dest.address}"/>
                <filter token="qpid.hellogoodbye.topic.dest.address" value="${qpid.hellogoodbye.topic.dest.address}"/>
                <filter token="qpid.hello.queue.dest.address" value="${qpid.hello.queue.dest.address}"/>
                <filter token="qpid.goodbye.queue.dest.address" value="${qpid.goodbye.queue.dest.address}"/>
                <filter token="qpid.request.queue.dest.address" value="${qpid.request.queue.dest.address}"/>
                <filter token="qpid.response.queue.dest.address" value="${qpid.response.queue.dest.address}"/>

            </filterset>
            <filterset refid="extra.filterset"/>
        </copy>
        <copy todir="${gen.dir}">
            <fileset dir="${src.dir}"/>
            <filterset>
                <filter token="rar.name" value="${rar.name}"/>
                <filter token="broker.url" value="${broker.url}"/>
                <filter token="jndi.scheme" value="${jndi.scheme}"/>
                <filter token="jndi.prefix" value="${jndi.prefix}"/>
                <filter token="qpid.xacf.jndi.name" value="${qpid.xacf.jndi.name}"/>
                <filter token="qpid.hello.topic.jndi.name" value="${qpid.hello.topic.jndi.name}"/>
                <filter token="qpid.goodbye.topic.jndi.name" value="${qpid.goodbye.topic.jndi.name}"/>
                <filter token="qpid.hello.queue.jndi.name" value="${qpid.hello.queue.jndi.name}"/>
                <filter token="qpid.goodbye.queue.jndi.name" value="${qpid.goodbye.queue.jndi.name}"/>
                <filter token="qpid.request.queue.jndi.name" value="${qpid.request.queue.jndi.name}"/>
                <filter token="qpid.response.queue.jndi.name" value="${qpid.response.queue.jndi.name}"/>
                <filter token="qpid.ejb.jndi.name" value="${qpid.ejb.jndi.name}"/>
            </filterset>
        </copy>
    </target>

    <target name="compile" depends="generate" description="Compiles the source files for the Qpid JCA example">
        <compile classpath="compile.classpath"/>
    </target>

    <target name="package-war" depends="compile" description="Packages the WAR file for deployment.">
        <war destfile="${build.dir}/${war.name}" webxml="${gen.dir}/web.xml">
            <classes dir="${build.classes.dir}">
                <include name="org/apache/qpid/jca/example/web/**"/>
            </classes>
            <metainf dir="${gen.dir}">
                <include name="glassfish-web.xml"/>
            </metainf>
        </war>
    </target>

    <target name="package-ejb" depends="compile" description="Packages the EJB archive for deployment.">
        <jar destfile="${build.dir}/${ejb.name}" basedir="${build.classes.dir}">
            <include name="org/apache/qpid/jca/example/ejb/**/*.class"/>
            <metainf dir="${gen.dir}">
                <include name="jboss.xml"/>
                <include name="glassfish-ejb-jar.xml"/>
            </metainf>
        </jar>
    </target>

    <target name="package-ear" depends="generate, package-war, package-ejb" description="Packages the EAR archive for deployment.">
        <jar destfile="${build.dir}/${ear.name}" basedir="${build.dir}">
            <include name="*.war"/>
            <include name="*.jar"/>
            <metainf dir="${gen.dir}">
                <include name="application.xml"/>
            </metainf>
        </jar>
    </target>

    <target name="run-client" depends="compile" description="Runs the RMI client.">
        <java classname="org.apache.qpid.jca.example.client.QpidTestClient">
            <classpath>
                <pathelement path="${build.classes.dir}"/>
                <path refid="run.classpath"/>
            </classpath>
            <sysproperty key="java.naming.factory.initial" value="${jndi.context}"/>
            <sysproperty key="java.naming.provider.url" value="${server.host}"/>
            <sysproperty key="java.naming.factory.url.pkgs" value="org.jboss.ejb.client.naming"/>
            <sysproperty key="jboss.ejb.client.properties.file.path" value="${conf.dir}/jboss-ejb-client.properties"/>

            <sysproperty key="qpid.ejb.name" value="${qpid.ejb.name}"/>
            <sysproperty key="qpid.cf.name" value="${qpid.client.cf.jndi.name}"/>
            <sysproperty key="qpid.dest.name" value="${qpid.client.dest.jndi.name}"/>
            <sysproperty key="qpid.dest_syntax" value="${qpid.dest_syntax}"/>
            <sysproperty key="log4j.configuration" value="file://${conf.dir}/log4j.properties"/>

            <sysproperty key="qpid.message" value="${client.message}"/>
            <sysproperty key="message.count" value="${client.message.count}"/>
            <sysproperty key="use.topic" value="${client.use.topic}"/>
            <sysproperty key="use.ejb" value="${client.use.ejb}"/>
            <sysproperty key="say.goodbye" value="${client.say.goodbye}"/>
        </java>
    </target>

    <target name="run-reqresp" depends="compile">
        <java classname="org.apache.qpid.jca.example.client.QpidRequestResponseClient">
            <classpath>
                <pathelement path="${build.classes.dir}"/>
                <path refid="run.classpath"/>
            </classpath>
            <sysproperty key="java.naming.factory.initial" value="${jndi.context}"/>
            <sysproperty key="java.naming.provider.url" value="${server.host}"/>
            <sysproperty key="qpid.message" value="Hello, World"/>
            <sysproperty key="message.count" value="1"/>
            <sysproperty key="thread.count" value="5"/>
            <sysproperty key="qpid.cf.name" value="${qpid.client.cf.jndi.name}"/>
            <sysproperty key="qpid.dest.name" value="${qpid.client.dest.jndi.name}"/>
            <sysproperty key="log4j.configuration" value="file://${conf.dir}/log4j.properties"/>
            <sysproperty key="qpid.dest_syntax" value="${qpid.dest_syntax}"/>
        </java>
    </target>

    <target name="clean" description="Deletes the build directory and all related files.">
        <delete dir="${build.dir}"/>
    </target>

    <target name="help">
        <echo>

           ant compile
                This will compile all the source code for the Qpid JCA example project to the ${build.classes.dir} directory.

           ant deploy-rar deploy-ear
             Deploys a particular component which could be rar, ear (or ds for JBoss)

           ant undeploy-ear undeploy-rar
             Undeploys a particular component which could be rar, ear (or ds for JBoss)

           ant run-client run-reqresp
             Runs the RMI/thin client or the request-response client example
        </echo>
    </target>

</project>
