#! /bin/sh
INSTALLDIR=<msg.RootPath>

WEBSERVER_BASEDIR=<commcli.webserverInstallDir>
WEBSERVER_INSTANCE=<commcli.webserverInstanceID>
WEBSERVER_VS_ID=<commcli.webserverVirtualServerID>

# something like /opt/SUNWwbsvr/https-ketu.west.sun.com/config
#  this directory contains the server.xml file
WEBSERVER_CONFIGDIR=${WEBSERVER_BASEDIR}/https-${WEBSERVER_INSTANCE}/config

# this is what to add to the classpath
ADDITIONALPATH=$INSTALLDIR/data/WEB-INF/classes

PATH=/bin:/usr/bin:/sbin:/usr/sbin
CP="/bin/cp -p"
AWK=/bin/nawk

##############################################################
#
# line manipulation routine
#

replace_line() {
  file=$1
  match=$2
  new=$3

  $CP $file $file-orig-$$
  sed -e "
/$match/ {
c\\
$new
}" $file > $file-tmp
cp $file-tmp $file
rm -f $file-tmp
}

#
# configure webserver 61
#
configure_webserver_61() {
    echo "Configuring webserver 6.1 ..."
    echo "Modifying ${WEBSERVER_CONFIGDIR}/server.xml file"
    #changing server.xml for classpath

    JVM_CLASSPATH_CLASSES="${ADDITIONALPATH}"
    cd ${WEBSERVER_CONFIGDIR}

    #step1: grep for classpath suffix in server.xml
    file="server.xml"
    classpath=`grep serverclasspath $file`

    matches=`echo $classpath | grep ${JVM_CLASSPATH_CLASSES} | wc -l`
    if [ "$matches" -ne 0 ]
    then
        echo "additional path is already in serverclasspath"
        return
    fi

    #step2: Get the number of tokens in the <JAVA> .. </JAVA>
    var=`echo $classpath | ${AWK} ' { print NF } '`

    #step3: Add our classpath to the existing serverclasspath in server.xml
    count=1
    newline=""
    while [ $count -le $var ] 
    do
        echo "{ print \$$count }" > /tmp/awk.$$
        currentToken=`echo $classpath | ${AWK} -f /tmp/awk.$$`
        classpathToken=`echo $currentToken | grep "serverclasspath"`
        if [ "$classpathToken" != "" ]; then
            classpathToken=`echo $classpathToken | ${AWK} ' BEGIN { FS="=" } { print $2 } ' | cut -f2 -d "\""`
            classpathToken="\"${JVM_CLASSPATH_CLASSES}:$classpathToken\""
            serverclasspath="serverclasspath=$classpathToken"
            newline="$newline $serverclasspath"
        else
            newline="$newline $currentToken"
        fi
        count=`expr $count + 1`
        rm -f /tmp/awk.$$
    done
    replace_line "$file" "serverclasspath" "$newline"

}

##############################################################
#
# start main
#

configure_webserver_61

# deploy web application
if [ -f "${WEBSERVER_BASEDIR}/bin/https/httpadmin/bin/wdeploy" ]
then
  # Check if the /commcli is currently deployed
  #
  ${WEBSERVER_BASEDIR}/bin/https/httpadmin/bin/wdeploy list -i ${WEBSERVER_INSTANCE} -v ${WEBSERVER_VS_ID} | grep 'URI Path: */commcli'
  if [ $? = 0 ]
  then
    # Undeploy first
    #
    echo ${WEBSERVER_BASEDIR}/bin/https/httpadmin/bin/wdeploy delete -u /commcli -i ${WEBSERVER_INSTANCE} -v ${WEBSERVER_VS_ID} soft 
    ${WEBSERVER_BASEDIR}/bin/https/httpadmin/bin/wdeploy delete -u /commcli -i ${WEBSERVER_INSTANCE} -v ${WEBSERVER_VS_ID} soft
  fi
  echo ${WEBSERVER_BASEDIR}/bin/https/httpadmin/bin/wdeploy deploy -u /commcli -i ${WEBSERVER_INSTANCE} -v ${WEBSERVER_VS_ID} ${INSTALLDIR}/lib/jars/commcli-server.war -d ${INSTALLDIR}/data
  ${WEBSERVER_BASEDIR}/bin/https/httpadmin/bin/wdeploy deploy -u /commcli -i ${WEBSERVER_INSTANCE} -v ${WEBSERVER_VS_ID} ${INSTALLDIR}/lib/jars/commcli-server.war -d ${INSTALLDIR}/data
  if [ $? = 0 ]
  then
    echo "Deployed the application successfully...."
  else
    echo "ERROR: Failed deploying the application...."
    exit 1
  fi     
fi
