<!--
 -
 - 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-jboss-properties" basedir="." default="">

    <property name="jndi.scheme" value="mappedName"/>
    <property name="jndi.prefix" value=""/>

    <property name="qpid.xacf.jndi.name" value="java:QpidJMSXA"/>
    <property name="qpid.cf.jndi.name" value="QpidConnectionFactory"/>
    <property name="qpid.hello.topic.jndi.name" value="HelloTopic"/>
    <property name="qpid.goodbye.topic.jndi.name" value="GoodByeTopic"/>
    <property name="qpid.hello.queue.jndi.name" value="HelloQueue"/>
    <property name="qpid.goodbye.queue.jndi.name" value="GoodByeQueue"/>
    <property name="qpid.request.queue.jndi.name" value="QpidRequestQueue"/>
    <property name="qpid.response.queue.jndi.name" value="QpidResponseQueue"/>
    <property name="qpid.ejb.jndi.name" value="mappedName=&quot;QpidTestEJB&quot;"/>
    <property name="qpid.ejb.ref.name" value="QpidTestBean/local"/>
    <property name="qpid.ejb.name" value="qpid-jcaex/QpidTestBean/remote"/>
    <property name="qpid.client.cf.jndi.name" value="${jndi.prefix}/QpidConnectionFactory"/>
    <property name="qpid.client.dest.jndi.name" value="${jndi.prefix}/${qpid.hello.queue.jndi.name}"/>

    <property name="jndi.context" value="org.jnp.interfaces.NamingContextFactory"/>
    <property name="server.host" value="jnp://localhost:1099"/>

    <property name="jboss.home" location="${env.JBOSS_HOME}"/>
    <property name="jboss.server" value="default"/>
    <property name="jboss.deploy" location="${jboss.home}/server/${jboss.server}/deploy"/>
    <property name="jboss.client" location="${jboss.home}/client"/>

    <path id="compile.classpath">
        <fileset dir="${jboss.client}">
            <!-- JBoss 5-->
            <include name="jboss-javaee.jar"/>

            <!-- JBoss 6 -->
            <include name="jboss-servlet-api_3.0_spec.jar"/>
            <include name="jboss-jms-api_1.1_spec.jar"/>
            <include name="jboss-ejb-api_3.1_spec.jar"/>
            <include name="jboss-transaction-api_1.1_spec.jar"/>

            <!-- Common to JBoss 5/6 -->
            <include name="slf4j-api.jar"/>
        </fileset>

        <!-- JBoss 5 -->
        <fileset dir="${jboss.home}/common/lib">
            <include name="servlet-api.jar"/>
        </fileset>
    </path>

    <path id="run.classpath">
        <fileset dir="${lib.dir}">
            <include name="qpid-jca-*.jar"/>
            <include name="qpid-client-*.jar"/>
            <include name="qpid-common-*.jar"/>
            <!-- Old jar, for examples compatibility -->
            <include name="qpid-ra-*.jar"/>
        </fileset>
        <fileset dir="${jboss.client}">
            <!-- Shortcut to get it working!-->
            <include name="jbossall-client.jar"/>
        </fileset>
    </path>

    <filterset id="extra.filterset"/>

    <!-- Deployment is target specific so is included here -->
    <target name="deploy-rar" description="Deploy the RAR file.">
        <copy todir="${jboss.deploy}" overwrite="true">
            <fileset dir="${qpid.jca.dir}">
                <include name="${rar.name}"/>
            </fileset>
        </copy>
    </target>

    <target name="undeploy-rar" description="Undeploys the RAR deployment.">
        <delete file="${jboss.deploy}/${rar.name}"/>
    </target>

    <target name="deploy-ear" depends="package-ear" description="Deploys the EAR archive.">
        <copy todir="${jboss.deploy}" overwrite="true">
            <fileset dir="${build.dir}">
                <include name="${ear.name}"/>
            </fileset>
        </copy>
    </target>

    <target name="undeploy-ear" description="Undeploys the EAR archive.">
        <delete file="${jboss.deploy}/${ear.name}"/>
    </target>

    <target name="deploy-ds" depends="generate" description="Deploys the ds.xml file to the JBoss environment.">
        <copy todir="${jboss.deploy}" overwrite="true">
            <fileset dir="${gen.dir}">
                <include name="qpid-jca-ds.xml"/>
            </fileset>
        </copy>
    </target>

    <target name="undeploy-ds" description="Undeploys the ds.xml file from the JBoss environment.">
        <delete file="${jboss.deploy}/qpid-jca-ds.xml"/>
    </target>

</project>
