<?xml version="1.0"?>
<!--
  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="run-webapp" basedir="." name="run-webapp">
  <target name="project.webapp.defined" unless="project.webapp">
    <fail>
      ------------------------------------------------
      Error: $${project.webapp} variable has not been set. This is where the
      webapp will be assembled. Please define it in the calling script.
      ------------------------------------------------
    </fail>
  </target>
<!-- ===============================================================
       Builds a cocoon webapp for local execution.
       Note, this webapp is not suitable for deploying remotely as it
       is configured to allow editing of files in the ${project.home} 
       directory.
       param: location to put generated webapp ${project.webapp}
       =============================================================== -->
  <target name="webapp-local" depends="init, validate, project.webapp.defined, ensure-content, prepare-context,
         load-project-props"
   description="Generates a dynamic servlet-based website (an unpackaged webapp).  Note this webapp is suitable for local execution only, use the 'war' or 'webapp' target if you wish to deploy remotely.">
<!-- this will need revisions in the case of the siteplan
    extra project-custom classes then will need to be warred in as well. -->
<!--  should be already there
    <mkdir dir="${project.webapp}/WEB-INF"/>
    <copy file="${forrest.core.webapp}/WEB-INF/web.xml" filtering="true" 
      todir="${project.webapp}/WEB-INF"/>
-->
<!-- Prepare the Lucene search index -->
    <condition property="use-lucene-indexer">
      <equals arg1="${skinconfig.search.provider}" arg2="lucene"/>
    </condition>
    <antcall target="lucene-index" />
    <available file="${content-dir}/jettyconf.xml" 
      property="custom_jetty_config"/>
    <loadfile  property="webapp-local-generated-message" srcFile="${forrest.core}/var/webapp-local-generated-message.txt">
      <filterchain>
        <expandproperties/>
      </filterchain>
    </loadfile>
    <echo>${webapp-local-generated-message}</echo>
  </target>
<!-- ===============================================================
       Builds a cocoon webapp of your project for remote deployment.
       param: location to put generated webapp ${project.webapp}
       =============================================================== -->
  <target name="run-webapp" depends="webapp-local, copy-xdocs, copy-content"
   description="Generates a dynamic servlet-based website (an unpackaged webapp).">
<!--
     Copy libs
   -->
    <copy toDir="${project.webapp}/WEB-INF/lib" 
      overwrite="true" failonerror="false">
      <fileset dir="${lib-dir}"/>
    </copy>
    <copy toDir="${project.webapp}/WEB-INF/classes" 
      overwrite="true" failonerror="false">
      <fileset dir="${classes-dir}"/>
    </copy>
    <copy todir="${project.webapp}/WEB-INF/lib">
<!-- Note: no overwriting, so user's libs and classes get preference -->
      <fileset dir="${forrest.core.lib-dir}">
        <include name="**.jar"/>
      </fileset>
      <fileset dir="${forrest.optional.lib-dir}">
        <include name="**.jar"/>
      </fileset>
      <fileset dir="${forrest.endorsed.lib-dir}">
        <include name="**.jar"/>
      </fileset>
    </copy>
    <copy todir="${project.webapp}/WEB-INF/lib">
      <fileset dir="${forrest.build.lib-dir}">
        <include name="**.jar"/>
      </fileset>
    </copy>
    <copy toDir="${project.webapp}/WEB-INF/classes">
      <fileset dir="${forrest.core.webapp}/WEB-INF/classes"/>
    </copy>
<!-- Copy XML jars if not running JDK 1.4 (where they're built-in) -->
    <available property="jdk1.4+" classname="java.lang.CharSequence"/>
    <copy todir="${project.webapp}/WEB-INF/lib">
      <fileset dir="${forrest.endorsed.lib-dir}">
        <include name="*jar" unless="jdk1.4+"/>
      </fileset>
    </copy>
<!-- Copy custom plugin jars -->
    <for list="${project.required.plugins}" param="name">
      <sequential>
        <copy file="${forrest.plugins-dir}/lib/@{name}.jar"
	        todir="${project.webapp}/WEB-INF/lib"
	        failonerror="false"/>
      </sequential>
    </for>
<!-- 
    | Copy all non-xdocs content across to the webapp
   -->
    <mkdir dir="${project.webapp}/project"/>
    <copy toDir="${project.webapp}/project" overwrite="true" failonerror="false">
      <fileset dir="${project.home}">
        <include name="forrest.properties"/>
        <include name="forrest.properties.xml"/>
        <include name="${project.status}"/>
        <include name="${project.content-dir}/**"/>
      </fileset>
    </copy>
<!-- Copy the file which contains the build information -->
    <copy toDir="${project.webapp}/project/build/tmp"
      file="${project.temp-dir}/build-info.xml"/>
<!-- Copy the generated locationmap for plugins -->
    <copy toDir="${project.webapp}/project/build/tmp"
      file="${project.temp-dir}/locationmap.xml"/>
<!-- Grab the plugin xmaps as these are no longer in the
         plugins-dir.

         During the build, the plugin information is copied during the
         init-plugins task.  However, those are not sufficient when
         creating a deployable war file.  That is because the
         properties used for "project.webapp", "project.home" etc.
         have different values when being built and when being run as
         a war file.

         The value of "todir" below corresponds to 
         {properties:temp-dir} when running as a web application. -->
    <copy todir="${project.webapp}/project/build/tmp">
      <fileset dir="${project.temp-dir}">
        <include name="*.xmap"/>
      </fileset>
    </copy>
    <loadfile  property="webapp-generated-message" 
      srcFile="${forrest.core}/var/webapp-generated-message.txt">
      <filterchain>
        <expandproperties/>
      </filterchain>
    </loadfile>
    <echo>${webapp-generated-message}</echo>
  </target>
  <target name="copy-xdocs" if="xdocs.present"></target>
  <target name="copy-content" if="raw-content.present"></target>
<!-- ===============================================================
       Builds a cocoon .war for your project based on the siteplan.
       param: location to put generated war ${project.war}
       =============================================================== -->
  <target name="war" depends="run-webapp"
   description="* Generates a dynamic servlet-based website (a packaged .war file)">
    <move file="${project.webapp}/WEB-INF/xconf/forrest-core-webapp.xconf" tofile="${project.webapp}/WEB-INF/xconf/forrest-core.xconf"/>
    <jar destfile="${project.war}">
      <fileset dir="${project.webapp}"/>
      <fileset dir="${forrest.home}">
        <include name="${build.plugins-dir}/**"/>
      </fileset>
    </jar>
    <echo>
---------------------------------
Webapp .war file generated:
${project.war}
---------------------------------
   </echo>
  </target>
</project>
