<?xml version="1.0" encoding="ISO-8859-1"?>  
 
<project xmlns:j="jelly:core" xmlns:ant="jelly:ant" xmlns:util="jelly:util" xmlns:maven="jelly:maven">

  <goal name="directory:init">
	<!-- Dir for generated source files -->
	<j:set var="targetDir" value="${maven.ldap.server.schema.target.dir}"/>
	<j:set var="schemaDir" value="${maven.ldap.server.schema.dir}"/>
	<j:set var="schemas" value="${maven.ldap.server.schemas}"/>
  </goal>

  <goal name="directory:prepare-filesystem">
    <j:if test="${!targetDir.equals('MAVEN_EVE_TARGET_DIR_NOT_SET')}">
      <ant:mkdir dir="${maven.build.dir}/schema"/>
    </j:if>
  </goal>

  <goal name="directory:generate"
        prereqs="directory:prepare-filesystem">
        
    <j:if test="${!targetDir.equals('MAVEN_EVE_TARGET_DIR_NOT_SET')}">
      <ant:path id="maven.ldap.server.schema.compile.src.set"
            location="${maven.build.dir}/schema"/>

      <maven:addPath id="maven.compile.src.set"
                     refid="maven.ldap.server.schema.compile.src.set"/>

      <!-- TODO: use this for src.dir, but smarter for individual schemas -->
      <!-- TODO: it seems that if target exists but the flagfile doesn't, it doesn't compile? -->
      <ant:uptodate property="maven.ldap.server.schema.buildNotRequired" targetfile="${maven.build.dir}/schema/.flagfile">
        <ant:srcfiles
          dir   = "${maven.ldap.server.schema.dir}"
          includes = "*.schema"/>
      </ant:uptodate>
      
      <j:set var="schemaBuildNotRequired" value="${maven.ldap.server.schema.buildNotRequired}" />
      <j:if test="${schemaBuildNotRequired == null}">
      
        <j:if test="${!schemas.equals('MAVEN_EVE_SCHEMAS_NOT_SET')}">
          <util:tokenize var="schemas" delim=",">
            ${maven.ldap.server.schemas}
          </util:tokenize>
          
          <j:forEach var="schema" items="${schemas.iterator()}">
          
            <j:set var="ownerProp" value="maven.ldap.server.schema.owner.${schema}"/>
            <j:set var="owner" value="${context.getVariable(ownerProp)}"
                defaultValue="${maven.ldap.server.schema.ownerDefault}"/>
            <j:set var="packageProp" value="maven.ldap.server.schema.package.${schema}"/>
            <j:set var="package" value="${context.getVariable(packageProp)}"
                defaultValue="${maven.ldap.server.schema.packageDefault}"/>
            <j:set var="depsProp" value="maven.ldap.server.schema.deps.${schema}"/>
            <j:set var="deps" value="${context.getVariable(depsProp)}"/>

                        <!-- Basedir sysprop not set when not forking -->
            <j:set var="noop" value="${systemScope.setProperty('basedir', basedir)}"/>

            <j:useBean var="task" class="org.apache.ldap.server.tools.schema.DirectorySchemaToolTask"
			    name="${schema}" owner="${owner}" package="${package}" dependencies="${deps}"/>
			<j:expr value="${task.execute()}"/>
            <j:if test="${task.hasFaulted()}">
                <fail message="${task.getLastFault().getMessage()}"/>
            </j:if>
            <echo>Generated schema producer classes for ${schema}.schema</echo>

          </j:forEach>
          
        </j:if>
        
        <ant:touch file="${maven.build.dir}/schema/.flagfile" />
      </j:if>
      
    </j:if>
  </goal>

  <!--
  <preGoal name="java:compile">
    <j:if test="${!schemaDir.equals('MAVEN_EVE_SCHEMA_DIR_NOT_SET')}">
      <attainGoal name="directory:schema"/>
    </j:if>
  </preGoal>
  -->

  <goal name="directory:schema"> 
    <attainGoal name="directory:init"/>
    <attainGoal name="directory:generate"/>
  </goal> 
  
</project> 

