<?xml version="1.0"?>
<project name="CXF JProfile" default="compile">
    <property name="jprofile.home" location="/opt/jprofiler5"/>
    <property name="cxf.dist" location="../../distribution/target/apache-cxf-2.1-SNAPSHOT.dir/apache-cxf-2.1-SNAPSHOT"/>
    <target name="setNativeLibDir" depends="setPlatform">
        <property name="nativelib.dir" location="${jprofile.home}/bin/${platform}"/>
    </target>
    <target name="setPlatform" unless="platform">
        <condition property="platform" value="windows">
            <os family="windows" arch="x86"/>
        </condition>
        <condition property="platform" value="windows-x64">
            <os family="windows" arch="amd64"/>
        </condition>
        <condition property="platform" value="macos">
            <os family="mac"/>
        </condition>
        <condition property="platform" value="linux-x86">
            <os name="linux" arch="x86"/>
        </condition>
        <condition property="platform" value="linux-x64">
            <os name="linux" arch="amd64"/>
        </condition>
        <condition property="platform" value="solaris-sparc">
            <os name="sunos" arch="sparc"/>
        </condition>
        <condition property="platform" value="solaris-sparcv9">
            <os name="sunos" arch="sparcv9"/>
        </condition>
        <condition property="platform" value="solaris-x86">
            <os name="sunos" arch="x86"/>
        </condition>
        <condition property="platform" value="solaris-x64">
            <os name="sunos" arch="x64"/>
        </condition>
        <condition property="platform" value="hpux-parisc">
            <os name="hp-ux" arch="pa_risc2.0"/>
        </condition>
        <condition property="platform" value="hpux-parisc64">
            <os name="hp-ux" arch="pa_risc2.0w"/>
        </condition>
        <condition property="platform" value="aix-ppc64">
            <os name="aix" arch="ppc64"/>
        </condition>
        <condition property="platform" value="aix-ppc">
            <os name="aix" arch="ppc"/>
        </condition>
        <fail unless="platform">Could not determine native library directory. Please pass the -Dplatform=...  property manually to this ant script.</fail>
    </target>
    <target name="setNativeLibEnvVar">
        <property environment="env"/>
        <condition property="nativelib.envvar" value="Path">
            <and>
                <os family="windows"/>
                <isset property="env.Path"/>
            </and>
        </condition>
        <condition property="nativelib.envvar" value="PATH">
            <and>
                <os family="windows"/>
                <not>
                    <isset property="nativelib.envvar"/>
                </not>
            </and>
        </condition>
        <condition property="nativelib.envvar" value="DYLD_LIBRARY_PATH">
            <os family="mac"/>
        </condition>
        <condition property="nativelib.envvar" value="SHLIB_PATH">
            <os name="hp-ux"/>
        </condition>
        <condition property="nativelib.envvar" value="LIBPATH">
            <os name="aix"/>
        </condition>
        <condition property="nativelib.envvar" value="LD_LIBRARY_PATH">
            <not>
                <isset property="nativelib.envvar"/>
            </not>
        </condition>
        <setEnvvarValue varname="${nativelib.envvar}"/>
    </target>
    <macrodef name="setEnvvarValue">
        <attribute name="varname"/>
        <sequential>
            <property environment="env"/>
            <property name="nativelib.envvarValue" value="${env.@{varname}}"/>
        </sequential>
    </macrodef>
    <target name="prepare">
        <mkdir dir="bin"/>
    </target>
    <path id="compile-classpath">
        <pathelement location="${jprofile.home}/bin/agent.jar"/>
        <pathelement location="../../systests/target/classes"/>
        <pathelement location="../../systests/target/test-classes"/>
        <pathelement location="../../testutils/target/classes"/>
        <fileset dir="${cxf.dist}/lib">
            <include name="*.jar"/>
        </fileset>
    </path>
    <path id="run-classpath">
        <pathelement location="bin"/>
        <pathelement location="../../systests/target/classes"/>
        <pathelement location="../../systests/target/test-classes"/>
        <pathelement location="../../testutils/target/classes"/>
        <fileset dir="${cxf.dist}/lib">
            <include name="*.jar"/>
        </fileset>
    </path>
    <target name="compile" depends="prepare" description="Compile the offline profiling sample">
        <!-- The controller API classes are contained in agent.jar -->
        <javac srcdir="src/main/java" destdir="bin">
            <classpath refid="compile-classpath"/>
        </javac>
    </target>
    <target name="clean" description="Delete all compiled classes and saved snapshot files">
        <delete>
            <fileset dir="bin">
                <include name="src/**/*.class"/>
                <include name="*.jps"/>
            </fileset>
        </delete>
    </target>
    <target name="run-client-endpoint" depends="compile,setNativeLibDir" description="Run the offline profiling sample">
        <java classname="org.apache.cxf.profile.ClientEndpointCreationLoop" fork="true">
            <arg value="100"/>
            <arg value="client_endpoint.jps"/>
            <jvmarg value="-agentlib:jprofilerti=offline,id=146,config=jprofileConfig.xml"/>
            <jvmarg value="-Xbootclasspath/a:${jprofile.home}/bin/agent.jar"/>
            <env key="LD_LIBRARY_PATH" path="${nativelib.dir}:${nativelib.envvarValue}"/>
            <classpath refid="run-classpath"/>
        </java>
    </target>
    <target name="run-bus-init" depends="compile,setNativeLibDir" description="Run the offline profiling sample">
        <java classname="org.apache.cxf.profile.DefaultBusInitialization" fork="true">
            <arg value="100"/>
            <arg value="bus_initialization.jps"/>
            <!--
      <jvmarg value="-Dorg.apache.cxf.nofastinfoset=true"/>
-->
            <jvmarg value="-Dcxf.config.file=bloop.xml"/>
            <jvmarg value="-agentlib:jprofilerti=offline,id=146,config=jprofileConfig.xml"/>
            <jvmarg value="-Xbootclasspath/a:${jprofile.home}/bin/agent.jar"/>
            <env key="LD_LIBRARY_PATH" path="${nativelib.dir}:${nativelib.envvarValue}"/>
            <classpath refid="run-classpath"/>
        </java>
    </target>
    <target name="run-server-endpoint" depends="compile,setNativeLibDir" description="Run the offline profiling sample">
        <java classname="org.apache.cxf.profile.EndpointCreationLoop3" fork="true">
            <arg value="10"/>
            <arg value="ecl3.jps"/>
            <jvmarg value="-Dcxf.config.file=bloop.xml"/>
            <jvmarg value="-agentlib:jprofilerti=offline,id=146,config=jprofileConfig.xml"/>
            <jvmarg value="-Xbootclasspath/a:${jprofile.home}/bin/agent.jar"/>
            <env key="LD_LIBRARY_PATH" path="${nativelib.dir}:${nativelib.envvarValue}"/>
            <classpath refid="run-classpath"/>
        </java>
    </target>
</project>
