<?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="service.repos.dir" value="build/service_repositories"/>
	<property name="client.repos.dir" value="build/client_repositories"/>
	<property name="temp.dir" value="build/temp"/>
	<property name="keys.dir" value="../keys"/>
	<property name="temp.client.dir" value="build/temp_client"/>
	
	<property name="addressing.mar" value="addressing-1.2.mar"/>
	<property name="rampart.mar" value="rampart-1.2.mar"/>
	<property name="rahas.mar" value="rahas-1.2.mar"/>

	<property name="client.port" value="8080"/>
	<property name="server.port" value="8080"/>
	
	<property name="sample.services.url" value="http://localhost:${client.port}/axis2/services"/>
	
    <property environment="env"/>
    	
	<target name="check.dependency" unless="env.AXIS2_HOME">
        <echo message="AXIS2_HOME must be set"/>
    </target>
	
	<!-- Sample Service 01 -->
	<target name="service.01" if="env.AXIS2_HOME" depends="check.dependency">
		<create.service.repo sample.number="01"/>
	</target>

	<!-- Sample Client 01 -->
	<target name="client.01" if="env.AXIS2_HOME" depends="check.dependency">
		<create.and.run.client sample.number="01"/>
	</target>
	
	<!-- Sample Service 02 -->
	<target name="service.02" if="env.AXIS2_HOME" depends="check.dependency">
		<create.service.repo sample.number="02"/>
	</target>

	<!-- Sample Client 02 -->
	<target name="client.02" if="env.AXIS2_HOME" depends="check.dependency">
		<create.and.run.client sample.number="02"/>
	</target>

	<!-- Sample Service 03 -->
	<target name="service.03" if="env.AXIS2_HOME" depends="check.dependency">
		<create.service.repo sample.number="03"/>
	</target>

	<!-- Sample Client 01 -->
	<target name="client.03" if="env.AXIS2_HOME" depends="check.dependency">
		<create.and.run.client sample.number="03"/>
	</target>

	<!-- Sample Service 04 -->
	<target name="service.04" if="env.AXIS2_HOME" depends="check.dependency">
		<create.service.repo sample.number="04"/>
	</target>

	<!-- Sample Client 04 -->
	<target name="client.04" if="env.AXIS2_HOME" depends="check.dependency">
		<create.and.run.client sample.number="04"/>
	</target>
	
	<target name="clean">
		<delete dir="build" />
	</target>
	
	<!-- Macro to create a service repo for a given sample -->
	<macrodef name="create.service.repo">
	   	<attribute name="sample.number" default="sample"/>
	   	<sequential>
	   		
	   		<property name="modules.dir" value="${env.AXIS2_HOME}/repository/modules/"/>
	   		<property name="lib.dir" value="${env.AXIS2_HOME}/lib"/>
	   		
	   		<mkdir dir="${service.repos.dir}/sample@{sample.number}"/>
	   		<mkdir dir="${service.repos.dir}/sample@{sample.number}/services"/>
	   		<mkdir dir="${service.repos.dir}/sample@{sample.number}/modules"/>
	   		
	   		<!-- copy modules -->
	   		<copy file="${modules.dir}/${addressing.mar}" tofile="${service.repos.dir}/sample@{sample.number}/modules/${addressing.mar}" overwrite="true"/>
	   		<copy file="${modules.dir}/${rampart.mar}" tofile="${service.repos.dir}/sample@{sample.number}/modules/${rampart.mar}" overwrite="true"/>
	   		<copy file="${modules.dir}/${rahas.mar}" tofile="${service.repos.dir}/sample@{sample.number}/modules/${rahas.mar}" overwrite="true"/>
	   		
	   		<!-- create service -->
	   		<mkdir dir="${temp.dir}"/>
	   		<mkdir dir="${temp.dir}/META-INF"/>
	   		
	   		<!-- Compile service -->
            <javac srcdir="sample@{sample.number}/src" destdir="${temp.dir}">
                    <classpath>
                            <fileset dir="${lib.dir}">
                                    <include name="**/*.jar"/>
                            </fileset>
                    </classpath>
                    <exclude name="**/Client.java"/>
            </javac>
	   		
	   		<copy file="sample@{sample.number}/services.xml" tofile="${temp.dir}/META-INF/services.xml" overwrite="true"/>
	   		<copy file="${keys.dir}/service.jks" tofile="${temp.dir}/service.jks" overwrite="true"/>
	   		<copy file="${keys.dir}/service.properties" tofile="${temp.dir}/service.properties" overwrite="true"/>

	   		<jar destfile="${service.repos.dir}/sample@{sample.number}/services/sample@{sample.number}.aar">
				<fileset dir="${temp.dir}"></fileset>
			</jar>
	   		
			<delete dir="${temp.dir}" />
	   		<!-- start SimpleHTTPserver -->
            <java classname="org.apache.axis2.transport.http.SimpleHTTPServer" fork="true">
                    <arg value="${service.repos.dir}/sample@{sample.number}"/>
                    <arg value="-p${server.port}"/>
                    <classpath>
                            <fileset dir="${lib.dir}">
                                    <include name="**/*.jar"/>
                            </fileset>
                    </classpath>
            </java>

	   </sequential>
	</macrodef>

	<macrodef name="create.and.run.client">
	   	<attribute name="sample.number" default="sample"/>
	   	<sequential>
	   		
	   		<property name="modules.dir" value="${env.AXIS2_HOME}/repository/modules/"/>
	   		<property name="lib.dir" value="${env.AXIS2_HOME}/lib"/>
	   		
	   		<!-- Create the client repo -->
	   		<mkdir dir="${client.repos.dir}/sample@{sample.number}"/>
	   		<mkdir dir="${client.repos.dir}/sample@{sample.number}/conf"/>
	   		<mkdir dir="${client.repos.dir}/sample@{sample.number}/modules"/>
	   		
	   		<!-- copy modules -->
	   		<copy file="${modules.dir}/${addressing.mar}" tofile="${client.repos.dir}/sample@{sample.number}/modules/${addressing.mar}" overwrite="true"/>
	   		<copy file="${modules.dir}/${rampart.mar}" tofile="${client.repos.dir}/sample@{sample.number}/modules/${rampart.mar}" overwrite="true"/>
	   		
	   		<mkdir dir="${temp.client.dir}"/>
	   		
	   		<!-- Compile client -->
            <javac srcdir="sample@{sample.number}/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.client.dir}/client.jks" overwrite="true"/>
	   		<copy file="${keys.dir}/client.properties" tofile="${temp.client.dir}/client.properties" overwrite="true"/>

	   		
	   		<!-- Run client -->
            <java classname="org.apache.rampart.samples.policy.sample@{sample.number}.Client" fork="true">
                    <arg value="${sample.services.url}/sample@{sample.number}"/>
                    <arg value="${client.repos.dir}/sample@{sample.number}"/>
                    <arg value="sample@{sample.number}/policy.xml"/>
                    <classpath>
                        <fileset dir="${lib.dir}">
                        	<include name="**/*.jar"/>
                        </fileset>
                  		<dirset dir="${temp.client.dir}" />
                    </classpath>
            </java>

<!--	   		<delete dir="${temp.client.dir}"/> -->
		</sequential>		
	</macrodef>

</project>
