<project name="clearClassCache" default="clearClassCache" basedir=".">

    <taskdef name="wscmtlog"
        classname="com.ibm.ws.install.configmanager.actionengine.ant.utils.AntTaskToLogToConfigManagersLogFiles"/>

    <target name="detectCurrentOSFamily"
            description="Detecs the current OS family (UNIX or Windows)">
        
        <!-- OS/400 setting must come before the unix setting -->
        <condition property="currentOSFamily" value="os/400">
            <equals arg1="${os.name}" arg2="OS/400"/>
        </condition>
        
        <condition property="currentOSFamily" value="windows">
            <os family="windows"/>
        </condition>
        
        <condition property="currentOSFamily" value="unix">            
            <os family="unix"/>
        </condition>
        
        <wscmtlog>Detected current OS family to be: ${currentOSFamily}</wscmtlog>
    </target>

    <target name="setCurrentOSFamily"
            description="Detects the current OS family (UNIX or Windows)">
        
        <!-- OS/400 setting must come before the unix setting -->
        <condition property="isCurrentOSOS400" value="true">
            <equals arg1="${os.name}" arg2="OS/400"/>
        </condition>
        
        <condition property="isCurrentOSWindows" value="true">
            <os family="windows"/>
        </condition>
        
        <condition property="isCurrentOSUNIX" value="true">
            <os family="unix"/>
        </condition>
    </target>
    
    <target name="resolveSetupCmdLineName">
        <available property="setupCmdLineName"
            value="setupCmdLine"
            file="${WAS_HOME}/bin/setupCmdLine"/>

        <available property="setupCmdLineName"
            value="setupCmdLine.bat"
            file="${WAS_HOME}/bin/setupCmdLine.bat"/>

        <available property="setupCmdLineName"
            value="setupCmdLine.sh"
            file="${WAS_HOME}/bin/setupCmdLine.sh"/>

        <wscmtlog>Detected setupCmdLine script name to be: ${setupCmdLineName}</wscmtlog>
    </target>    
    
    <target name="resolveclearClassCacheExecutableForTheCurrentPlatform"
            description="Sets CLEAR_CLASS_CACHE to the right script for the current platform">
            
        <condition property="CLEAR_CLASS_CACHE" value="${WAS_HOME}/bin/clearClassCache">
            <equals arg1="${currentOSFamily}" arg2="os/400"/>
        </condition>
        
        <condition property="CLEAR_CLASS_CACHE" value="${WAS_HOME}/bin/clearClassCache.sh">
            <equals arg1="${currentOSFamily}" arg2="unix"/>
        </condition>
        
        <condition property="CLEAR_CLASS_CACHE" value="${WAS_HOME}/bin/clearClassCache.bat">
            <equals arg1="${currentOSFamily}" arg2="windows"/>
        </condition>
        
        <wscmtlog>clearClassCache interpretor set to: ${CLEAR_CLASS_CACHE}</wscmtlog>
    </target>    

    <target name="runclearClassCache"
            description="Clear the shared class cache">
            
        <exec executable="${CLEAR_CLASS_CACHE}"
                output="${WS_CMT_LOG_HOME}/${profileName}/clear_class_cache.log" failonerror="false">
            <arg value="default"/>
		<env key="WAS_USER_SCRIPT" value="${profilePath}/bin/${setupCmdLineName}"/>
            <env key="PROFILE_CONFIG_ACTION" value="true"/>
        </exec>
        
        <wscmtlog>Done.</wscmtlog>
    </target>

    <target name="iSetPermissions" description="Ensure OSGi configuration dir permissions correct"
            if="isCurrentOSOS400">
        <exec executable="${WAS_HOME}/bin/osgiCfgInit"
                output="${WS_CMT_LOG_HOME}/${profileName}/osgi_cfg_init.log" failonerror="false">
		<env key="WAS_USER_SCRIPT" value="${profilePath}/bin/${setupCmdLineName}"/>
            <env key="PROFILE_CONFIG_ACTION" value="true"/>
        </exec>

    </target>

    <target name="clearClassCache"
        description="Clear the shared class cache"
        depends="detectCurrentOSFamily,
            setCurrentOSFamily,
            resolveclearClassCacheExecutableForTheCurrentPlatform,
                resolveSetupCmdLineName,
                runclearClassCache,
                iSetPermissions"/>

</project>

