<!--

    Copyright (c) 2003, 2018 Oracle and/or its affiliates. All rights reserved.

    This program and the accompanying materials are made available under the
    terms of the Eclipse Public License v. 2.0, which is available at
    http://www.eclipse.org/legal/epl-2.0.

    This Source Code may also be made available under the following Secondary
    Licenses when the conditions for such availability set forth in the
    Eclipse Public License v. 2.0 are satisfied: GNU General Public License,
    version 2 with the GNU Classpath Exception, which is available at
    https://www.gnu.org/software/classpath/license.html.

    SPDX-License-Identifier: EPL-2.0 OR GPL-2.0 WITH Classpath-exception-2.0

-->

<!DOCTYPE project [
  <!ENTITY targets SYSTEM "../../common/targets.xml">
]>

<project name="Coffee Break Server" default="build" basedir=".">
  <target name="init">
      <tstamp/>
  </target>

  <property file="../../common/build.properties"/>
  <property file="build.properties"/>

  &targets;

  <target name="prepare" depends="init"
           description="Create build directories.">
    <mkdir dir="${build}" />
  </target>

  <target name="build" depends="prepare"
     description="Compile CB server Java files and copy DD and static files." >
    <javac
      srcdir="${src}"
      destdir="${build}">
            <include name="**/*.java" />
      <classpath refid="classpath" />
      <classpath path="${common}:../jaxrpc/dist/jaxrpc-client.jar:../saaj/dist/saaj-client.jar" />
    </javac>
      <javac
         srcdir="../common/src"
         destdir="${build}"
         includes="**/URLHelper.java"
      >
      <classpath refid="classpath" />
      <classpath path="${common}" />
      </javac>
      <copy file="../common/src/com/sun/cb/CoffeeBreak.properties"
        todir="${build}/com/sun/cb" />
      <copy todir="${build}">
      <fileset dir="web">
        <include name="**/*.html" />
        <include name="**/*.jsp" />
        <include name="**/*.jspf" />
        <include name="**/*.gif" />
        <include name="**/*.xml" />
        <include name="**/*.tld" />
        <include name="**/*.jpg" />
      </fileset>
    </copy>
  </target>

  <target name="run-query" depends="build"
     description="Run JAXRQueryByName." >
    <java classname="com.sun.cb.JAXRQueryByName" fork="yes">
      <arg line="${query-string}" />
      <classpath refid="classpath" />
      <classpath path="${build}" />
    </java>
  </target>

</project>
