<?xml version="1.0" encoding="UTF-8"?>
<!--
 !
 ! Copyright 2006 The Apache Software Foundation.
 !
 ! Licensed 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 basedir="." default="clean">

	<property name="client.repos.dir" value="build/client_repository"/>
	<property name="service.dir" value="build/ut-over-https"/>
	<property name="temp.dir" value="build"/>
	<property name="keys.dir" value="../../keys"/>
	<property name="temp.client.dir" value="build/temp_client"/>

	<property name="addressing.mar" value="addressing-1.3.mar"/>
	<property name="rampart.mar" value="rampart-1.3.mar"/>
	
	<property name="ssl.port" value="8443"/>
	<!--can be removed-->
	<property name="sample.services.url" value="https://127.0.0.1:${ssl.port}/axis2/services/ut-over-https"/>
	
    	<property environment="env"/>
    	
	<target name="check.tomcat" unless="env.CATALINA_HOME">
        	<echo message="CATALINA_HOME must be set"/>
    	</target>

	<target name="copy.keys" depends="check.tomcat">
		<copy file="${keys.dir}/service.jks" tofile="${env.CATALINA_HOME}/rampart-sample-keys.jks" overwrite="true"/>
	</target>

	<target name="copy.rampart.to.tomcat" depends="check.tomcat">
		<property name="to.modules.dir" value="${env.CATALINA_HOME}/webapps/axis2/WEB-INF/modules"/>
	   	<property name="to.lib.dir" value="${env.CATALINA_HOME}/webapps/axis2/WEB-INF/lib"/>

		<property name="from.lib.dir" value="$../../../../../lib"/>
		<property name="from.module.dir" value="$../../../../../"/>
		
		
		<copy todir="${to.lib.dir}">
	        <fileset dir="${from.lib.dir}">
	                <include name="**/*.jar"/>
	        </fileset>
		</copy>
		
		<copy todir="${to.modules.dir}">
	        <fileset dir="${from.module.dir}">
	                <include name="*.mar"/>
	        </fileset>
		</copy>
	   		
	   	<!-- copy modules rampart mar and libs xx-->
	 </target>

	<target name="clean">
		<delete dir="build" />
	</target>
	
	<!-- Macro to create a service repo for a given sample -->
	<target name="create.and.copy.service" depends="check.tomcat,clean">
		
		<property name="lib.dir" value="${env.AXIS2_HOME}/lib"/>
		<mkdir dir="${temp.dir}"/>

	   	<!-- create service -->
	   	<mkdir dir="${service.dir}"/>
	   	<mkdir dir="${service.dir}/META-INF"/>
	   	
	   	<!-- Compile service -->
	        <javac srcdir="src" destdir="${service.dir}">
                    <classpath>
                            <fileset dir="${lib.dir}">
                                    <include name="**/*.jar"/>
                            </fileset>
                    </classpath>
                    <exclude name="**/Client.java"/>
            	</javac>
	   		
	   	<copy file="services.xml" tofile="${service.dir}/META-INF/services.xml" overwrite="true"/>
	   	<jar destfile="${temp.dir}/ut-over-https.aar">
			<fileset dir="${service.dir}"></fileset>
		</jar>

		<copy file="${temp.dir}/ut-over-https.aar" tofile="${env.CATALINA_HOME}/webapps/axis2/WEB-INF/services/ut-over-https.aar" overwrite="true"/>
	   		
	</target>

	<target name="create.and.run.client" depends="check.tomcat,clean">
	
		<property name="from.modules" value="${env.AXIS2_HOME}/repository/modules/"/>
	  	<property name="lib.dir" value="${env.AXIS2_HOME}/lib"/>
		
		<mkdir dir="${temp.dir}"/>  
		<mkdir dir="${temp.client.dir}"/> 		

	   	<!-- Create the client repo -->
	   	<mkdir dir="${client.repos.dir}"/>
	   	<mkdir dir="${client.repos.dir}/conf"/>
	   	<mkdir dir="${client.repos.dir}/modules"/>
	   		
	   	<!-- copy modules -->
	   	<copy file="${from.modules}/${addressing.mar}" tofile="${client.repos.dir}/modules/${addressing.mar}" overwrite="true"/>
	   	<copy file="${from.modules}/${rampart.mar}" tofile="${client.repos.dir}/modules/${rampart.mar}" overwrite="true"/>
	   		
	   	<!-- Compile client -->
            	<javac srcdir="src" destdir="${temp.client.dir}">
                    <classpath>
	                    <fileset dir="${lib.dir}">
                            <include name="**/*.jar"/>
	                    </fileset>
                    </classpath>
                    <exclude name="**/SimpleService.java"/>
            	</javac>

	   	<copy file="${keys.dir}/client.jks" tofile="${temp.dir}/client.jks" overwrite="true"/>
		
	   	<!-- Run client -->
            	<java classname="org.apache.rampart.tomcat.sample.Client" fork="true">
                    <arg value="${sample.services.url}"/>
                    <arg value="${client.repos.dir}"/>
                    <arg value="policy.xml"/>
                    <classpath>
                        <fileset dir="${lib.dir}">
                        	<include name="**/*.jar"/>
                        </fileset>
                  		<dirset dir="${temp.client.dir}" />
                    </classpath>
            	</java>
	</target>

</project>
