#!/bin/sh
# ---------------------------------------------------------------------------
# JOnAS: Java(TM) Open Application Server
# Copyright (C) 1999-2008 Bull S.A.S.
# Contact: jonas-team@objectweb.org
#
# This library is free software; you can redistribute it and/or
# modify it under the terms of the GNU Lesser General Public
# License as published by the Free Software Foundation; either
# version 2.1 of the License, or any later version.
#
# This library is distributed in the hope that it will be useful,
# but WITHOUT ANY WARRANTY; without even the implied warranty of
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
# Lesser General Public License for more details.
#
# You should have received a copy of the GNU Lesser General Public
# License along with this library; if not, write to the Free Software
# Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307
# USA
#
# Initial developer(s): Benoit Pelletier
# Contributor(s): ______________________________________.
#
# ---------------------------------------------------------------------------
# $Id$
# ---------------------------------------------------------------------------


# -----------------------------------------------------------------------
# Check JONAS_ROOT is set.
# -----------------------------------------------------------------------
if [ ! -d $JONAS_ROOT/ejbjars ]
then
  savewd=`pwd`
  cd `dirname $0`
  zdir=`pwd`
  cd $savewd
  zfqn=$zdir/`basename "$0"`
  JONAS_ROOT=`dirname $zdir`
  JONAS_ROOT=`dirname $JONAS_ROOT`
  export JONAS_ROOT
fi

# -----------------------------------------------------------------------
# Config execution environment
# -----------------------------------------------------------------------
. $JONAS_ROOT/bin/unix/setenv
CLASSPATH=$CLASSPATH$SPS$JAVA_HOME/lib/tools.jar

# add ow_jonas_bootstrap.jar to the classpath for the bootstrap class
CLASSPATH=$JONAS_ROOT/lib/common/ow_jonas_bootstrap.jar$SPS$JONAS_ROOT/lib/commons/jonas/jakarta-commons/commons-logging-api.jar$SPS$CLASSPATH

JONAS_OPTS="\
    -Dinstall.root=$JONAS_ROOT \
    -Djonas.base=$JONAS_BASE \
    -Djava.awt.headless=true \
    -Djava.security.policy=$JONAS_BASE/conf/java.policy \
    -Djava.security.auth.login.config=$JONAS_BASE/conf/jaas.config \
    -Djonas.classpath=$XTRA_CLASSPATH \
    -Djonas.default.classloader=true \
    -Dorg.omg.CORBA.ORBClass=org.jacorb.orb.ORB \
    -Dorg.omg.CORBA.ORBSingletonClass=org.jacorb.orb.ORBSingleton \
    -Dorg.omg.PortableInterceptor.ORBInitializerClass.standard_init=org.jacorb.orb.standardInterceptors.IORInterceptorInitializer \
    -Djavax.rmi.CORBA.PortableRemoteObjectClass=org.objectweb.carol.rmi.multi.MultiPRODelegate \
    -Djava.naming.factory.initial=org.objectweb.carol.jndi.spi.MultiOrbInitialContextFactory \
    -Djavax.rmi.CORBA.UtilClass=org.objectweb.carol.util.delegate.UtilDelegateImpl \
    -Djava.endorsed.dirs=$JONAS_ROOT/lib/endorsed "

# ---------------------------------------------
# Get args
# ---------------------------------------------
ARGS=
MODE=start
USERNAME=
PASSWORD=
while [ "$#" -gt 0 ]
do      case "$1" in
         start)
                MODE=start
                ;;
         stop)
                MODE=stop
                ;;
        -cp)
                shift
                CLASSPATH=$CLASSPATH$SPS$1
                ;;
        -D*)
                JAVA_OPTS="$JAVA_OPTS $1"
                ;;
        -security)
        		# Use security manager for jclient ?
        		JAVA_OPTS="$JAVA_OPTS -Djava.security.manager -Djava.security.policy=$JONAS_BASE/conf/java.policy"
        		;;
        -debug)
                shift
                # $1=-p
                if [ "$1" != "-p" ]; then
                  echo "-debug mode need a following \"-p <debug-port>\""
                  exit 1
                fi
                shift
                JONAS_DEBUG_PORT=$1
                JONAS_DEBUG_SUSPEND=n
                if [ "$2" = "-s" ]; then
                  shift
                  shift
                  JONAS_DEBUG_SUSPEND=$1
                fi
                echo "JOnAS Debug Info :"
                echo " listening on port : $JONAS_DEBUG_PORT"
                echo " suspend mode : $JONAS_DEBUG_SUSPEND"
                JONAS_DEBUG_OPTS=" -Xdebug -Xnoagent -Xrunjdwp:transport=dt_socket,server=y,address=$JONAS_DEBUG_PORT,suspend=$JONAS_DEBUG_SUSPEND"
                ;;
        -username)
                shift
                USERNAME="-username $1"
                ;;
        -password)
                shift
                PASSWORD="-password $1"
                ;;
        *)
                # all other args are passed "as is" to the java program
                ARGS="$ARGS $1"
                ;;
        esac
        shift
done

# ---------------------------------------------
# Check args
# ---------------------------------------------
case "$MODE" in
start)
  CLASS_TO_RUN=org.objectweb.jonas.cluster.daemon.ClusterDaemon
  ;;
stop)
  CLASS_TO_RUN="org.objectweb.jonas.cluster.daemon.ClusterDaemonAdmin -stop"
  ;;
*)
  echo "Usage: jclusterd start|stop [options]"
  echo "Debug mode : jclusterd start -debug -p <debug-port> [-s <suspend:y/n>]"
  exit 1
  ;;
esac

# ---------------------------------------------
# Set tomcat base directory
# ---------------------------------------------
if [ -n "$CATALINA_HOME" ]
then
  TOMCAT_OPTS="$TOMCAT_OPTS -Dcatalina.home=$CATALINA_HOME"
fi
if [ -n "$CATALINA_BASE" ]
then
  TOMCAT_OPTS="$TOMCAT_OPTS -Dcatalina.base=$CATALINA_BASE"
fi

# ---------------------------------------------
# Set jetty home directory
# ---------------------------------------------
JETTY_OPTS=""
if [ -n "$JETTY_HOME" ]
then
  JETTY_OPTS="-Djetty.home=$JETTY_HOME"
fi


# ---------------------------------------------
# Run java command
# ---------------------------------------------
BOOT=org.objectweb.jonas.server.Bootstrap
$JAVA $JAVA_OPTS $JONAS_DEBUG_OPTS $JONAS_OPTS $TOMCAT_OPTS $JETTY_OPTS $BOOT $CLASS_TO_RUN $ARGS $USERNAME $PASSWORD

