<project name="services" default="deployServer">

    <import file="${basedir}/build/buildInitialize.xml" />
    <import file="${basedir}/build/testInitialize.xml" />
    <import file="${basedir}/build/serviceInitialize.xml" />

    <target name="createServerConfigurationFile" depends="initialize, decideserverproperties">
        <!-- Select which parser library to use -->
        <condition property="ClientParserLib" value="${xml4c.xmlParserLibraryName}">
            <istrue value="${testconf.client.parser.xml4c}"/>
        </condition>
        <condition property="ClientParserLib" value="${xerces.xmlParserLibraryName}">
            <istrue value="${testconf.client.parser.xerces}"/>
        </condition>

        <dirname file="${axiscppconffile}" property="axisCPPConfFilePath"/>
        <mkdir dir="${axisCPPConfFilePath}"/>
        <echo file="${axiscppconffile}"># The comment character is '#'
# Available directives are as follows
#
# WSDDFilePath:       The path to the server wsdd
# LogPath:            The path to the axis log
# XMLParser:          The xml parser library
# NodeName:           Node name
# ListenPort:         Listening port
#
LogPath:${dir.test.generated}/server/ServerLog.taw
WSDDFilePath:${wsdd.file}
Transport_http:${dir.libraries}/${libraryPrefix}${HTTP.transportLibraryName}${librarySuffix}
Channel_HTTP:${dir.libraries}/${libraryPrefix}${HTTP.ChannelLibraryName}${librarySuffix}
XMLParser:${dir.libraries}/${libraryPrefix}${ClientParserLib}${librarySuffix}
</echo>
    </target>


    <target name="runserver" depends="initialize, decideserverproperties">
	<echo>
    line="${startargs}"
    key="AXISCPP_DEPLOY" value="${axiscpp_deploy}/server"
    key="${serverenv.env}" value="${dir.xmlParser}/bin${path.separator}${dir.xmlParser}/lib${path.separator}${serverenv.env.value}"
    key="AXISCPP_STARTUP_TRACE" value="${dir.test.generated}/server/StartupTrace.taw"
    	</echo>
        <exec executable="${serverexecutable}" spawn="true">
            <arg line="${startargs}" />
            <env key="AXISCPP_DEPLOY" value="${axiscpp_deploy}/server" />
            <env key="${serverenv.env}" value="${dir.xmlParser}/bin${path.separator}${dir.xmlParser}/lib${path.separator}${serverenv.env.value}" />
            <env key="AXISCPP_STARTUP_TRACE" value="${dir.test.generated}/server/StartupTrace.taw"/>
        </exec>
    </target>


    <target name="stopserver" depends="initialize, decideserverproperties">
        <!-- This is necessary since stoppping apache2 is a problem sometimes.
                      The user will have to manually stop the server in this case.-->
        <if>
			<isset property="stopargs" />
            <then>
                <exec executable="${serverexecutable}">
                    <arg line="${stopargs}" />
                    <env key="${serverenv.env1}"
                         value="${serverenv.env1.value}" />
                    <env key="${serverenv.env2}"
                         value="${serverenv.env2.value}" />
                </exec>
                <sleep seconds="3" />
            </then>
            <else>
            	<antcall target="stopAxisServer"/>
                <echo message="WARNING!" />
                <echo message="this script can't stop this server (${serverexecutable}).
                                If the server is started stop it yourself and then run ant again" />
            </else>
        </if>
    </target>


    <target name="deployServer"
            depends="initialize, stopserver, createServerConfigurationFile, createServerWSDDFile, runserver, deployServices"
            description="Build and deploy services for tests" />

    <target name="undeployServer"
            depends="initialize, undeployServices, stopserver"
            description="Undeploy services and stop server"/>

    <target name="createServerWSDDFile">
        <dirname file="${wsdd.file}" property="WSDDFilePath"/>
        <mkdir dir="${WSDDFilePath}"/>
        
        <condition property="dir.adminService" value="${dir.release}/bin">
            <or>
                <equals arg1="${platform}" arg2="Win32"/>
                <equals arg1="${platform}" arg2="Win64"/>
            </or>
        </condition>
        
        <condition property="dir.adminService" value="${dir.release}/lib">
            <not>
	            <or>
	                <equals arg1="${platform}" arg2="Win32"/>
	                <equals arg1="${platform}" arg2="Win64"/>
	            </or>
            </not>
        </condition>

        <echo file="${wsdd.file}">&lt;?xml version="1.0" encoding="UTF-8"?&gt;
&lt;deployment xmlns="http://xml.apache.org/axis/wsdd/" xmlns:C="http://xml.apache.org/axis/wsdd/providers/C" xmlns:CPP="http://xml.apache.org/axis/wsdd/providers/CPP"&gt;
&lt;globalConfiguration&gt;
&lt;/globalConfiguration&gt;
&lt;service name="AxisAdmin" provider="CPP:DOCUMENT" description="Axis C++ Admin Service"&gt;
&lt;parameter name="className" value="${dir.adminService}/${libraryPrefix}${adminServiceLibraryName}${librarySuffix}"/&gt;
&lt;/service&gt;
&lt;/deployment&gt;
        	
</echo>
    </target>

    <target name="deployServices" depends="initialize, setServiceList">
        <echo message="buildservice: ${service.list}"/>
        <foreach target="deployService"
                 param="service_property"
                 inheritall="true">
            <path refid="service_properties" />
			<param name="dir.release" value="${dir.release}"/>
	  </foreach>
    </target>

    <target name="undeployServices" depends="initialize, setServiceList">
        <echo message="buildservice: ${service.list}"/>
        <foreach target="undeployService"
                 param="service_property"
                 inheritall="true">
            <path refid="service_properties" />
            <param name="dir.release" value="${dir.release}"/>
      </foreach>
    </target>
    
    <target name="setServiceList"
            depends="setServiceListType,setIndividualService,setFromServiceList,setAllServices" />
    <target name="setServiceListType">
        <condition property="allService">
            <and>
                <not>
                    <isset property="service.name" />
                </not>
                <not>
                    <isset property="service.list" />
                </not>
            </and>
        </condition>
    </target>


    <!--
          Create a list of just 1 Service from command line parameter -Dservice.name=
          -->
    <target name="setIndividualService" if="service.name">
        <echo message="setIndividual ${service.name}" />
        <path id="service_properties">
            <fileset dir="${dir.autotests}/tests/server"
                     includes="${service.name}.xml" />
        </path>
    </target>

  <!--
          Create a list of Services from a properties file unless an individual Service has been specified too
          -->
    <target name="setFromServiceList" if="service.list" unless="service.name">
        <echo message="setFromList ${service.list}" />
        <path id="service_properties">
            <fileset dir="${dir.autotests}/tests/server"
                     includesfile="${service.list}" />
        </path>
    </target>


    <!--
          Create a list of all the Services
          -->
    <target name="setAllServices" if="allService">
        <echo message="setAll ${dir.autotests}/tests/server" />
        <path id="service_properties">
            <fileset dir="${dir.autotests}/tests/server" includes="*.xml" />
        </path>
    </target>

    <target name="prepareAdminClient">
        <mkdir dir="${dir.test.generated}/AdminClient"/>
        
	    <!-- Select which parser library to use -->
	    <condition property="ClientParserLib" value="${xml4c.xmlParserLibraryName}">
	        <istrue value="${testconf.client.parser.xml4c}"/>
	    </condition>
	    <condition property="ClientParserLib" value="${xerces.xmlParserLibraryName}">
	        <istrue value="${testconf.client.parser.xerces}"/>
	    </condition>

        <condition property="adminconffile" value="${dir.test.generated}/AdminClient/axiscpp.conf">
            <isset property="windows"/>
        </condition>
	    <condition property="adminconffile" value="${dir.test.generated}/AdminClient/etc/axiscpp.conf">
            <not>   
	           <isset property="windows"/>
            </not>
	    </condition>
		<condition property="ClientLogPath" value="${dir.test.generated}/server/${serviceLang}/${serviceName}/AdminClientLog.taw">
			<isset property="serviceName"/>
		</condition>
		<condition property="ClientLogPath" value="${dir.test.generated}/AdminClient/AdminClientLog.taw">
			<not>
				<isset property="serviceName"/>
			</not>
		</condition>
	    <dirname file="${adminconffile}" property="adminconffilePath"/>
	    <mkdir dir="${adminconffilePath}"/>
	    <echo file="${adminconffile}"># The comment character is '#'
# Available directives are as follows
#
# ClientLogPath:    The path to the axis log
# XMLParser:        The xml parser library
# Transport_http:   The HTTP Transport library   
# Channel_HTTP:     The HTTP (non-SSL) Channel library   
#
ClientLogPath:${ClientLogPath}
XMLParser:${dir.libraries}/${libraryPrefix}${ClientParserLib}${librarySuffix}
Transport_http:${dir.libraries}/${libraryPrefix}${transportLibraryName}${librarySuffix}
Channel_HTTP:${dir.libraries}/${libraryPrefix}${HTTP.ChannelLibraryName}${librarySuffix}
</echo>
    </target>

    <target name="deployService"
            depends="setPropertiesForService, generateServerStubs, compileService, generateWSDDService, prepareAdminClient">
        <antcall target="runAdminClient" inheritall="true">
            <param name="wsddFile" value="${dir.test.generated}/server/${serviceLang}/${serviceName}/deploy.wsdd"/>
        </antcall>
    </target>

    <target name="runAdminClient">
        <exec executable="${dir.release}/bin/${adminClientExecutableName}${executableSuffix}"
        	
            failifexecutionfails="true">
            <arg line="localhost ${testPort} &quot;${wsddFile}&quot;" />
            <env key="PATH"
                path="${dir.xmlParser}/bin${path.separator}${dir.libraries}${path.separator}${java.library.path}" />
            <env key="LD_LIBRARY_PATH"
                path="${dir.libraries}${path.separator}${dir.xmlParser}/lib" />
            <env key="LIBPATH"
                path="${dir.libraries}${path.separator}${dir.xmlParser}/lib" />
            <env key="SHLIB_PATH"
                path="${dir.libraries}${path.separator}${dir.xmlParser}/lib" />
            <env key="AXISCPP_DEPLOY" value="${dir.test.generated}/AdminClient" />
        </exec>
    </target>

    <target name="undeployService"
            depends="setPropertiesForService, prepareAdminClient">
        <antcall target="runAdminClient" inheritall="true">
                    <param name="wsddFile" value="${dir.test.generated}/server/${serviceLang}/${serviceName}/undeploy.wsdd" />
        </antcall>
    </target>
    

    <target name="setPropertiesForService"
            depends="loadServerXMLProperties,setServiceName,setServiceDesc,setServiceCode,setServiceLang,setServiceWsdl" />


    <target name="loadServerXMLProperties">
        <echo message="Loading XML file ${service_property}" />
        <xmlproperty file="${service_property}" keepRoot="true" />
    </target>
    
    <target name="setServiceName" if="service.name">
        <propertycopy property="serviceName" from="service.name" />
    </target>


    <target name="setServiceDesc" if="service.description">
        <propertycopy property="serviceDesc" from="service.description" />
    </target>

    <target name="setServiceCode" if="service.serviceCode">
        <propertycopy property="serviceCode" from="service.serviceCode" />
        <if>
            <isset property="service.serviceHeader" />
            <then>
                <propertycopy property="serviceHeader" from="service.serviceHeader" />
            </then>
        </if>
    </target>


    <target name="setServiceLang" if="service.serviceLang">
        <propertycopy property="serviceLang" from="service.serviceLang" />
    </target>


    <target name="setServiceWsdl" if="service.wsdl">
        <propertycopy property="serviceWsdl" from="service.wsdl" />
    </target>


    <target name="cleanService">
        <delete dir="${dir.test.generated}/${serviceLang}/${serviceName}" />
    </target>


    <target name="setServiceLanguage">
        <condition property="generated.lang" value="c++">
            <equals arg1="${serviceLang}" arg2="cpp" />
        </condition>
    </target>

    <target name="generateServerStubs" depends="setServiceLanguage">
        <!-- Make directory in which all generated code shall be placed -->
        <echo message="${dir.test.generated}/server/${serviceLang}/${serviceName}" />
        <mkdir dir="${dir.test.generated}/server/${serviceLang}/${serviceName}" />
        <!-- Setup classpath for WSDL2Ws -->
        <path id="cp">
            <fileset dir="${dir.wsdl2ws}" includes="wsdl2ws.jar" />
            <fileset dir="${dir.axisJARs}" includes="*.jar" />
        </path>
        <!-- Run WSDL2Ws -->
        <java classname="org.apache.axis.wsdl.wsdl2ws.WSDL2Ws" fork="true">
            <classpath refid="cp" />
            <arg value="${dir.autotests}/wsdls/${serviceWsdl}" />
            <arg value="-o${dir.test.generated}/server/${serviceLang}/${serviceName}" />
            <arg value="-l${generated.lang}" />
            <arg value="-sserver" />
        </java>
    </target>


    <target name="compileService">
           <!-- Deleting the service template generated by WSDL2Ws if service.removeFile property is set - AXISCPP-948 -->
           <if>
                <isset property="service.removeFile" />
         <then>
                <delete file="${dir.test.generated}/server/${serviceLang}/${serviceName}/${service.removeFile}" failonerror="false" />
           </then>
          </if>

        <copy file="${dir.autotests}/server/${serviceLang}/${serviceCode}"
              tofile="${dir.test.generated}/server/${serviceLang}/${serviceName}/${serviceCode}"
              overwrite="true" />
        <propertycopy property="serviceCode" from="service.serviceCode" />
        <if>
            <isset property="service.serviceHeader"/>
            <then>
                <copy file="${dir.autotests}/server/${serviceLang}/${serviceHeader}"
                      tofile="${dir.test.generated}/server/${serviceLang}/${serviceName}/${serviceHeader}"
                      overwrite="true"/>
            </then>
        </if>

	<if>
		<not>
			<isset property="aix" />
		</not>
		<then>

       <cc failonerror="false"
            incremental="false"
            outfile="${dir.test.generated}/server/${serviceLang}/${serviceName}/${serviceName}"
            objdir="${dir.test.generated}/server/${serviceLang}/${serviceName}"
            exceptions="true"
		outtype="shared"
            subsystem="console">

            <!-- Compilers -->
            		<compiler refid="VisualC++" />
				<compiler refid="SolarisCC"/>
                        <compiler refid="Linuxgcc"/>                  

            <!-- Linkers -->
            		<linker refid="VisualC++Linker" />
				<linker refid="SolarisLinker"/>
                        <linker refid="LinuxLinker"/>
                       

            <!-- Axis Client .lib file location, or UNIX shared object -->
            <!-- This lib is needed when building a service on windows where
                                AxisUserAPI implementation is needed -->
            <libset dir="${dir.lib}" libs="${serverEngineLibraryName}" />

            <!-- Files to be compiled -->
            <includepath path="${dir.include}" />

            <fileset dir="${dir.test.generated}/server/${serviceLang}/${serviceName}">
                <include name="*.cpp" />
            </fileset>
        </cc>
</then>
<else>
 <cc failonerror="false"
            incremental="false"
            outfile="${dir.test.generated}/server/${serviceLang}/${serviceName}/${libraryPrefix}${serviceName}${librarySuffix}"
            objdir="${dir.test.generated}/server/${serviceLang}/${serviceName}"
            exceptions="true"
            subsystem="console">

            <!-- Compilers -->
                <compiler refid="AIXxlc"/>

            <!-- Linkers -->
                <linker refid="AIXLinker"/>
          
            <libset dir="${dir.lib}" libs="${serverEngineLibraryName}" />

            <!-- Files to be compiled -->
            <includepath path="${dir.include}" />
            <fileset dir="${dir.test.generated}/server/${serviceLang}/${serviceName}">
                <include name="*.cpp" />
            </fileset>
        </cc>
	</else>
</if>
	
    </target>


    <target name="generateWSDDService">
        <xmlproperty file="${dir.test.generated}/server/${serviceLang}/${serviceName}/deploy.wsdd"
                     collapseAttributes="true" />
        <echo file="${dir.test.generated}/server/${serviceLang}/${serviceName}/deploy.wsdd">&lt;?xml version="1.0" encoding="UTF-8"?&gt;
&lt;deployment xmlns="http://xml.apache.org/axis/wsdd/" xmlns:CPP="http://xml.apache.org/axis/wsdd/providers/CPP"&gt;
    &lt;service name="${serviceName}" provider="${deployment.service.provider}" description="Axis C++ web service" &gt;
        &lt;parameter name="className" value="${dir.test.generated}/server/${serviceLang}/${serviceName}/${libraryPrefix}${serviceName}${librarySuffix}"/&gt;
    &lt;/service&gt;
&lt;/deployment&gt;
</echo>
        <echo file="${dir.test.generated}/server/${serviceLang}/${serviceName}/undeploy.wsdd">&lt;?xml version="1.0" encoding="UTF-8"?&gt;
&lt;undeployment xmlns="http://xml.apache.org/axis/wsdd/" xmlns:CPP="http://xml.apache.org/axis/wsdd/providers/CPP"&gt;
    &lt;service name="${serviceName}"/&gt;
&lt;/undeployment&gt;
</echo>
    </target>
	
	<target name="checkParameters">
		<description> This target checks that the user has put in the right params to run the default target with no errors.
		If you find things out that leave you with a bad error message then put them in here to help out future users
		</description>
		<if>
			<not>
			<available file="${dir.xmlParser}"/>
			</not>
			<then>
				<throw message="dir.xmlparser is not available. It is currently set to '${dir.xmlParser}'"/>
			</then>
		</if>
		<if>
			<not>
			<available file="${env.AXISJAVA_LIB}"/>
			</not>
			<then>
				<throw message="AXISJAVA_LIB must be set to where the prereq axis java libs are installed"/>
			</then>
		</if>
		
	</target>
    
    <target name="stopAxisServer" depends="initialize">
        <exec executable="${dir.release}/bin/${adminClientExecutableName}${executableSuffix}"
            timeout="60000" failifexecutionfails="false">
            <arg line="localhost ${testPort} STOP 120" />
            <env key="PATH"
                path="${dir.xmlParser}/bin${path.separator}${dir.libraries}${path.separator}${java.library.path}" />
            <env key="LD_LIBRARY_PATH"
                path="${dir.libraries}${path.separator}${dir.xmlParser}/lib" />
            <env key="LIBPATH"
                path="${dir.libraries}${path.separator}${dir.xmlParser}/lib" />
            <env key="SHLIB_PATH"
                path="${dir.libraries}${path.separator}${dir.xmlParser}" />
            <env key="AXISCPP_DEPLOY" value="${dir.test.generated}/AdminClient" />
        </exec>
    </target>
    
</project>

