<!--
   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 default="java:jar"
  xmlns:ant="jelly:ant"
  xmlns:j="jelly:core">

    <!-- ================================================================== -->
    <!-- Copy into the binary distribution                                  -->
    <!-- ================================================================== -->
    <postGoal name="dist:prepare-bin-filesystem">

        <copy todir="${maven.dist.bin.assembly.dir}">
            <fileset file='${basedir}/NOTICE.txt'/>
            <fileset file="${basedir}/RELEASE-NOTES.txt"/>
        </copy>

    </postGoal>

    <!-- ================================================================== -->
    <!-- Copy into the source distribution                                  -->
    <!-- ================================================================== -->
    <postGoal name="dist:prepare-src-filesystem">

        <!-- Copy files -->
        <copy todir="${maven.dist.src.assembly.dir}">
            <fileset file='${basedir}/NOTICE.txt'/>
            <fileset file="${basedir}/RELEASE-NOTES.txt"/>
            <fileset file="${basedir}/checkstyle.xml"/>
        </copy>

        <!-- Copy xdoc directory -->
        <copy todir="${maven.dist.src.assembly.dir}/xdocs">
            <fileset dir="xdocs"/>
        </copy>

    </postGoal>

    <!-- ================================================================== -->
    <!-- Create MD5 Check Sums                                              -->
    <!-- ================================================================== -->
    <postGoal name="dist">

         <!-- create checksum for jar -->
         <ant:checksum file="${maven.build.dir}/${maven.final.name}.jar" property="jar.md5"/>
         <ant:echo message="${jar.md5} *${maven.final.name}.jar" 
                   file="${maven.build.dir}/${maven.final.name}.jar.md5" />

         <!-- create checksum for binary zip -->
         <ant:checksum file="${maven.dist.dir}/${maven.final.name}.zip" property="zip.md5"/>
         <ant:echo message="${zip.md5} *${maven.final.name}.zip" 
                   file="${maven.dist.dir}/${maven.final.name}.zip.md5" />

         <!-- create checksum for binary tar.gz -->
         <ant:checksum file="${maven.dist.dir}/${maven.final.name}.tar.gz" property="tar.gz.md5"/>
         <ant:echo message="${tar.gz.md5} *${maven.final.name}.tar.gz" 
                   file="${maven.dist.dir}/${maven.final.name}.tar.gz.md5" />

         <!-- create checksum for source zip -->
         <ant:checksum file="${maven.dist.dir}/${maven.final.name}-src.zip" property="src.zip.md5"/>
         <ant:echo message="${src.zip.md5} *${maven.final.name}-src.zip" 
                   file="${maven.dist.dir}/${maven.final.name}-src.zip.md5" />

         <!-- create checksum for source tar.gz -->
         <ant:checksum file="${maven.dist.dir}/${maven.final.name}-src.tar.gz" property="src.tar.gz.md5"/>
         <ant:echo message="${src.tar.gz.md5} *${maven.final.name}-src.tar.gz" 
                   file="${maven.dist.dir}/${maven.final.name}-src.tar.gz.md5" />

    </postGoal>
  
</project>
