<!--
   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="filesystem" default="compile">

  <property name="version" value="0.4.0-incubating-SNAPSHOT" />
  <property name="adapter.jar" value="abdera.adapter.${ant.project.name}.${version}.jar" />
  <property name="retro.adapter.jar" value="abdera.adapter.${ant.project.name}.${version}.retro.jar" />
  <property name="debug" value="on" />
  
  <property name="abdera" value="../../dist" />
  <path id="abdera">
    <fileset dir="${abdera}" includes="**/*.jar" excludes="**/*retro.jar"/>
  </path>
  <path id="retro">
    <fileset dir="../../build/tools/retroweaver-2.0" includes="**/*.jar" />
  </path>

  <target name="dependencies">
    <path id="dependencies">
      <path refid="abdera" />
    </path>
  </target>
  
  <target name="compile" depends="dependencies">
    <mkdir dir="${basedir}/build" />
    <javac srcdir="src/main/java" classpathref="dependencies" destdir="${basedir}/build" debug="${debug}" />
    <javac srcdir="src/test/java" classpathref="dependencies" destdir="${basedir}/build" debug="${debug}" />
    <copy todir="${basedir}/build">
      <fileset dir="src/test/resources" includes="**/*" />
    </copy>
    <jar destfile="${basedir}/${adapter.jar}" basedir="${basedir}/build" includes="org/apache/abdera/protocol/server/adapters/**/*" />
    <java classpathref="retro" classname="net.sourceforge.retroweaver.Weaver" fork="yes">
      <arg line="-jar &quot;${basedir}/${adapter.jar}&quot; &quot;${basedir}/${retro.adapter.jar}&quot;" />
    </java>
  </target>
  
  <target name="test">
    <java classname="org.apache.abdera.protocol.server.test.filesystem.TestSuite"
          classpath="${basedir}/build"
          classpathref="dependencies"
          fork="true" />
  </target>
  
  <target name="clean">
    <delete dir="${basedir}/build" />
    <delete file="${basedir}/${adapter.jar}" />
    <delete file="${basedir}/${retro.adapter.jar}" />
  </target>
  
  <target name="dist" depends="clean,compile">
    <copy todir="../../dist/adapters" file="${basedir}/${adapter.jar}" />
    <copy todir="../../dist/adapters" file="${basedir}/${retro.adapter.jar}" />
  </target>
  
</project>