<?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="camel common build file" default="build.classes">

  <property environment="env"/>
  <property name="build.dir" location="${basedir}/target"/>
  <property name="build.classes.dir" location="${build.dir}/classes"/>
  <property name="build.test.classes.dir" location="${build.dir}/test-classes"/>
  <property name="cameldoc.dir" location="${build.dir}/site/cameldoc"/> 
  
  <property name="build.src.dir" location="${basedir}/src/main/java"/>
  <property name="build.test.dir" location="${basedir}/src/test/java"/>
  <property name="build.resources.dir" location="${basedir}/src/main/resources"/>

  <property name="camel.lib" location="../../lib"/>

  <property name="activemq.home" value="${env.ACTIVEMQ_HOME}"/>
  <property name="hibernate.core.home" value="${env.HIBERNATE_CORE_HOME}"/>
  <property name="hibernate.entitymanager.home" value="${env.HIBERNATE_EM_HOME}"/>
  <property name="hsqldb.home" value="${env.HSQLDB_HOME}"/>
  <property name="aspectj.home" value="${env.ASPECTJ_HOME}"/>
  <property name="spring.home" value="${env.SPRING_HOME}"/>
  <property name="guice.home" value="${env.GUICE_HOME}"/>

  <condition property="build.src">
    <available file="${build.src.dir}"/>
  </condition> 

  <condition property="build.test">
    <and>
      <available file="${build.test.dir}"/>
      <available classname="junit.framework.TestCase"/>
    </and>
  </condition> 

  <mkdir dir="${build.dir}"/>

  <!-- Define some classpaths used by the different samples. -->
  
  <path id="activemq.classpath">
    <fileset dir="${activemq.home}/lib">
      <include name="**/geronimo-j2ee-management_*_spec-*.jar"/>
      <include name="**/geronimo-jms_*_spec-*.jar"/>
      <include name="**/activemq-core-*.jar"/>
      <include name="**/activemq-camel-*.jar"/>
      <include name="**/backport-util-concurrent-*.jar"/>
      <include name="**/optional/spring-tx-*.jar"/>
      <include name="**/optional/spring-jms-*.jar"/>
      <include name="**/optional/activemq-pool-*.jar"/>
      <include name="**/optional/commons-pool-*.jar"/>
      <include name="**/optional/xbean-*.jar"/>
      <include name="**/optional/org.osgi.core-*.jar"/>
    </fileset>
  </path>

  <path id="hibernate.classpath">
    <fileset dir="${hibernate.core.home}">
      <include name="**/hibernate*.jar"/>
      <include name="**/antlr-*.jar"/>
      <include name="**/asm*.jar"/>
      <include name="**/cglib-*.jar"/>
      <include name="**/dom4j-*.jar"/>
      <include name="**/javassist*.jar"/>
      <include name="**/jta.jar"/>
    </fileset>
    <fileset dir="${hibernate.entitymanager.home}">
      <include name="**/hibernate-*.jar"/>
      <include name="**/jboss-archive-browsing*.jar"/>
      <include name="**/*persistence.jar"/>
    </fileset>
    <fileset dir="${hsqldb.home}">
      <include name="**/hsqldb.jar"/>
    </fileset>
  </path>

  <path id="aspectj.classpath">
    <fileset dir="${aspectj.home}/lib">
      <include name="**/aspectj*.jar"/>
    </fileset>
  </path>

  <path id="spring.classpath">
    <fileset dir="${spring.home}/dist">
      <include name="spring.jar"/>
    </fileset>
  </path>

  <path id="guice.classpath">
    <fileset dir="${guice.home}/lib">
      <include name="guice*.jar"/>
    </fileset>
  </path>

  <path id="log4j.classpath">
    <fileset dir="${camel.lib}">
      <include name="**/log4j-*.jar"/>
    </fileset>
  </path>

  <path id="camel.core.classpath">
    <fileset dir="${camel.lib}">
      <include name="**/camel-core-*.jar"/>
      <include name="**/commons-logging-*.jar"/>
      <include name="**/commons-management-*.jar"/>
      <include name="**/spring/spring-*.jar"/>
      <include name="**/jdk15/*.jar"/>
      <exclude name="**/*-tests.jar"/>
    </fileset>
  </path>
  
  <path id="camel.spring.classpath">
    <path refid="camel.core.classpath"/>
    <fileset dir="${camel.lib}">
      <include name="**/camel-spring-*.jar"/>
      <exclude name="**/camel-spring-security*.jar"/>
      <exclude name="**/camel-spring-integration*.jar"/>
      <include name="**/activation-*.jar"/>
      <include name="**/jaxb-impl-*.jar"/>
      <include name="**/stax-api-*.jar"/>
      <exclude name="**/*-tests.jar"/>
    </fileset>
  </path>

  <target name="build.classes" if="build.src">
    <mkdir dir="${build.classes.dir}"/>

    <javac destdir="${build.classes.dir}" debug="true">
      <src path="${build.src.dir}"/>
      <src path="${build.dir}"/>
      <classpath>
        <path refid="sample.build.classpath"/>
      </classpath>
    </javac>
    
    <copy todir="${build.classes.dir}">
      <fileset dir="${build.resources.dir}" includes="**/*"/>
    </copy>
  </target>

  <target name="build.test" if="build.test">
    <mkdir dir="${build.test.classes.dir}"/>

    <javac destdir="${build.test.classes.dir}" debug="true">
      <src path="${build.test.dir}"/>
      <classpath>
        <path refid="sample.build.classpath"/>
      </classpath>
    </javac>
  </target>

  <target name="build" depends="build.classes,build.test"/>
    
  <macrodef name="camelrun">
    <attribute name="mainClass" default="org.apache.camel.spring.Main"/>
    <element name="arguments" optional="true"/>
    <sequential>
      <path id="sample.run.classpath">
        <pathelement location="${build.classes.dir}"/>
        <path refid="sample.build.classpath"/>
        <path refid="log4j.classpath"/>
      </path>
      <!--
      <property name="sampleclasspath" refid="sample.run.classpath"/>
      <echo message="running with classpath: ${sampleclasspath}"/>
      -->

      <java classname="@{mainClass}"
        fork="true" 
        failonerror="true">
        <classpath refid="sample.run.classpath"/>
        <arguments/> 
        <sysproperty key="java.util.logging.config.file" value="${build.classes.dir}/logging.properties"/>
      </java>
  
      <condition property="has.cameldoc">
        <available file="${cameldoc.dir}"/>
      </condition>
    </sequential>
  </macrodef>
  
  <condition property="shell.suffix" value=".exe">
    <os family="windows"/>
  </condition>
  <property name="shell.suffix" value=""/>
  
  <!-- This macro assumes the dot executable is on your path. -->
  <macrodef name="cameldot">
    <attribute name="dotFileDir" default="${cameldoc.dir}"/>
    <attribute name="outputType" default="svg"/>
    <sequential>
      <apply executable="dot${shell.suffix}">
        <arg value="-T@{outputType}"/>
        <arg value="-O"/>
        <fileset dir="@{dotFileDir}">
          <patternset>
            <include name="**/*.dot"/>
          </patternset>
        </fileset>
      </apply>
    </sequential>
  </macrodef>
  
  <target name="camel.dot" depends="run" if="has.cameldoc" 
    description="Output visualization">
    <cameldot outputType="svg"/>
    <!--
    <cameldot outputType="cmapx"/>
    -->
  </target>
  
  <target name="clean">
    <delete dir="${build.test.classes.dir}"/>
    <delete dir="${build.classes.dir}"/>
    <delete dir="${build.dir}"/>
  </target>
  
</project>
