<?xml version="1.0" encoding="UTF-8"?>
<!--

    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="loan-broker-client" default="run" basedir=".">

  <property name="class.dir" value="target/classes"/>

  <target name="clean">
    <delete dir="target" quiet="true"/>
    <delete dir="${class.dir}" quiet="true"/>
  </target>

  <target name="init">
    <mkdir dir="${class.dir}"/>
    <mkdir dir="lib"/>

    <get src="http://repo1.maven.org/maven2/org/logicblaze/lingo/lingo/1.3/lingo-1.3.jar"
         dest="lib/lingo-1.3.jar" 
         usetimestamp="true" />

    <path id="javac.classpath">
      <pathelement path="${class.dir}"/>
      <pathelement path="../../conf"/>
      <fileset dir="../../lib">
        <include name="**/*.jar"/>
      </fileset>
      <fileset dir="lib">
        <include name="**/*.jar"/>
      </fileset>
    </path>
  </target>

  <target name="compile" depends="init" description="Compile all Java">
    <javac srcdir="src/main/java" destdir="${class.dir}">
      <classpath refid="javac.classpath"/>
    </javac>
  </target>

  <target name="run" depends="compile" description="Runs the example client">
    <echo>Running example client</echo>
    <java classname="JMSClient" fork="yes" maxmemory="100M">
      <classpath refid="javac.classpath"/>
    </java>
  </target>

  <target name="run-loop" depends="compile" description="Runs the example client in a loop">
    <echo>Running example client in a loop</echo>
    <java classname="JMSClient" fork="yes" maxmemory="100M">
      <classpath refid="javac.classpath"/>
      <arg value="100000"/>
    </java>
  </target>

</project>
