<project default="repack-opensso-war">
	<property name="ver" value="0.1-SNAPSHOT"/>
	<property name="jarname" value="jdbc_idrepo_demo-${ver}.jar"/>
	
	<property name="opensso-war" location="/home/dave/incoming/opensso-src-20060920/opensso.war"/>

	<property name="packages" location="/home/dave/packages"/>
	<property name="jar.hsqldb" location="${packages}/hsqldb_1_8_0_2/lib/hsqldb.jar"/>
	<property name="jar.beanutils" location="${packages}/commons-beanutils-1.7.0/commons-beanutils.jar"/>
	<property name="jar.opensso" location="/home/dave/incoming/opensso-src-20060920/opensso.jar"/>
	<property name="jar.opensso-sharedlib" location="/home/dave/incoming/opensso-src-20060920/opensso-sharedlib.jar"/>

	<path id="compile.classpath">
		<pathelement location="${jar.hsqldb}"/>
		<pathelement location="${jar.beanutils}"/>
		<pathelement location="${jar.opensso}"/>
		<pathelement location="${jar.opensso-sharedlib}"/>
	</path>

	<target name="unpack-opensso-war">
		<mkdir dir="build/opensso-tmp"/>
		<unwar src="${opensso-war}" dest="build/opensso-tmp"/>
	</target>

	<property name="amAuth" value="WEB-INF/classes/amAuth.xml"/>

	<target name="modify-amAuth.xml" depends="unpack-opensso-war">
		<touch file="empty.dtd"/>
		<xslt style="add_authenticator.xsl" in="build/opensso-tmp/${amAuth}" out="build/amAuth.xml">
			<!-- work around problem with jar: DTD URL -->
			<xmlcatalog>
		        	<dtd publicId="=//iPlanet//Service Management Services (SMS) 1.0 DTD//EN"
				     location="empty.dtd"/>
			</xmlcatalog>
			<param name="value" expression="test.TestLoginModule"/>
		</xslt>
	</target>

        <property name="serviceNames" value="WEB-INF/classes/serviceNames.properties"/>

        <target name="modify-serviceNames.properties" depends="unpack-opensso-war">
            <!-- we delete the file so that the replaceregexp task doesn't add
                 another TestLoginModule on every build -->
            <delete file="build/serviceNames.properties"/>
            <copy file="build/opensso-tmp/${serviceNames}" todir="build"/>
            <replaceregexp file="build/serviceNames.properties" byline="true">
                <regexp pattern="serviceNames=(.*)"/>
                <substitution expression="serviceNames=\1 amAuthTestLoginModule.xml"/>
            </replaceregexp>
        </target>

	<target name="repack-opensso-war" depends="package, unpack-opensso-war, modify-amAuth.xml, modify-serviceNames.properties">
		<war destfile="build/opensso.war" webxml="build/opensso-tmp/WEB-INF/web.xml">
			<fileset dir="build/opensso-tmp">
                                <exclude name="WEB-INF/classes/com/iplanet/dpro/session/service/SessionService.class"/>                     
				<exclude name="${amAuth}"/>
                                <exclude name="${serviceNames}"/>
                                <exclude name="WEB-INF/classes/amAuth-NT.xml"/><!-- bizarrely, xml is malformed -->
                        </fileset>
			<classes file="build/amAuth.xml"/>
                        <classes file="build/serviceNames.properties"/>
                        <classes file="src/conf/amAuthTestLoginModule.xml"/>
                        <classes file="src/conf/amAuthTestLoginModule.properties"/>
                        <zipfileset dir="/home/dave/workspace/opensso/products/amserver/built/classes/" prefix="WEB-INF/classes">
                                <include name="com/iplanet/dpro/session/service/SessionService.class"/>
                        </zipfileset>
			<lib file="${jarname}"/>
                        <lib file="${jar.hsqldb}"/>
                        <lib file="${jar.beanutils}"/>
		</war>
	</target>

	<target name="package" depends="compile">
		<jar destfile="${jarname}" basedir="build/java-classes">
			<include name="**/*.class"/>
		</jar>
	</target>

	<target name="compile">
		<mkdir dir="build/java-classes"/>
		<javac srcdir="src/java"
		       destdir="build/java-classes"
		       classpathref="compile.classpath"
                       debug="true" debuglevel="lines" excludes="**/*Test.java"/>
	</target>
</project>
