#!/bin/sh
# ---------------------------------------------------------------------------
# JOnAS: Java(TM) Open Application Server
# Copyright (C) 1999 Bull S.A.
# 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): Philippe Durieux
# Contributor(s): 
# Florent Benoit & Ludovic Bert
# ---------------------------------------------------------------------------
# $Id: jonas.sh,v 1.9 2002/12/16 14:36:29 durieuxp Exp $
# ---------------------------------------------------------------------------

# -----------------------------------------------------------------------
# Check JONAS_ROOT is set.
# -----------------------------------------------------------------------
JONAS_LIB=$JONAS_ROOT/lib
if [ ! -d $JONAS_ROOT/lib ]
then
    echo "JONAS_ROOT must be set"
    exit 1
fi
. $JONAS_ROOT/bin/unix/setenv
. $JONAS_ROOT/bin/unix/config_env

# add ow_jonas_bootstrap.jar to the classpath for the bootstrap class
CLASSPATH=$JONAS_ROOT/lib/common/ow_jonas_bootstrap.jar$SPS$CLASSPATH

# JAVA_OPTS may be already partially initialized
JAVA_OPTS="$JAVA_OPTS \
    -Dinstall.root=$JONAS_ROOT \
    -Djava.security.policy=$JONAS_ROOT/config/java.policy \
    -Dobjectweb.orb=$OBJECTWEB_ORB \
    -Djonas.classpath=$XTRA_CLASSPATH \
    -Djonas.default.classloader=true \
"
# PROF_OPT may be used for using profiler tool
PROF_OPT=$PROF_OPT
# ---------------------------------------------
# Get args
# ---------------------------------------------
ARGS=
MODE=
JONASNAME=
NAME_OPT=
WHERE=background
COSNAMING_PORT=14727
COSNAMING_HOST=localhost
while [ "$#" -gt 0 ]
do	case "$1" in
	start)
		MODE=start
		;;
	stop)
		MODE=stop
		;;
	admin)
		MODE=admin
		;;
	version)
		MODE=version
		;;
	check)
		MODE=check
		;;
	-cp)
		shift
		CLASSPATH=$CLASSPATH$SPS$1
		;;
	-fg)
		WHERE=foreground
		;;
	-bg)
		WHERE=background
		;;
	-win)
		WHERE=window
		;;
	-nojit)
		JAVA_OPTS="$JAVA_OPTS -Djava.compiler=NONE"
		;;
	-n)
		shift
		JONASNAME=$1
		;;
	-cnhost)
		shift
		COSNAMING_HOST=$1
		;;
	-cnport)
		shift
		COSNAMING_PORT=$1
		;;
	-D*)
		JAVA_OPTS="$JAVA_OPTS $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.server.Server
	;;
stop)
	CLASS_TO_RUN="org.objectweb.jonas.adm.JonasAdmin -s"
	;;
admin)
	CLASS_TO_RUN=org.objectweb.jonas.adm.JonasAdmin
	;;
version)
	CLASS_TO_RUN=org.objectweb.jonas_ejb.lib.Version
	;;
check)
	CLASS_TO_RUN=org.objectweb.jonas.tools.CheckEnv
	;;
*)
	echo "Usage: jonas start|stop|admin|version|check [options]"
	exit 1
	;;
esac

# ---------------------------------------------
# Set jonas server name
# ---------------------------------------------
if [ ! -z "$JONASNAME" ]
then
    NAME_OPT="-n $JONASNAME"
    if [ "$MODE" = "start" ]
    then
	# keep values already set in JAVA_OPTS
	JAVA_OPTS="$JAVA_OPTS -Djonas.name=$JONASNAME "
    fi
fi

# ---------------------------------------------
# Set tomcat base directory
# ---------------------------------------------
TOMCAT_OPTS=""
if [ -n "$TOMCAT_HOME" ]
then
   TOMCAT_OPTS="-Dtomcat.home=$TOMCAT_HOME"
fi
if [ -n "$TOMCAT_BASE" ]
then
   TOMCAT_OPTS="$TOMCAT_OPTS -Dtomcat.base=$TOMCAT_BASE"
fi
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

# ---------------------------------------------
# Set options for DAVID
# ---------------------------------------------
if [ "$OBJECTWEB_ORB" = "DAVID" ]
then
    JAVA_OPTS="$JAVA_OPTS \
    -Dorg.omg.CORBA.ORBClass=org.objectweb.david.libs.binding.orbs.iiop.IIOPORB \
    -Dorg.omg.CORBA.ORBSingletonClass=org.objectweb.david.libs.binding.orbs.ORBSingletonClass \
    -Djavax.rmi.CORBA.StubClass=org.objectweb.david.libs.stub_factories.rmi.StubDelegate \
    -Djavax.rmi.CORBA.PortableRemoteObjectClass=org.objectweb.david.libs.binding.rmi.ORBPortableRemoteObjectDelegate \
    -Djavax.rmi.CORBA.UtilClass=org.objectweb.david.libs.helpers.RMIUtilDelegate \
    -Ddavid.CosNaming.default_method=0 \
    -Ddavid.rmi.ValueHandlerClass=com.sun.corba.se.internal.io.ValueHandlerImpl \
    -Ddavid.CosNaming.default_host=$COSNAMING_HOST \
    -Ddavid.CosNaming.default_port=$COSNAMING_PORT \
    "
fi

# ---------------------------------------------
# Run java command
# ---------------------------------------------
BOOT=org.objectweb.jonas.server.Bootstrap
if [ "$MODE" = "start" ]
then
    case "$WHERE" in
    foreground)
	$JAVA $JAVA_OPTS $TOMCAT_OPTS $JETTY_OPTS $PROF_OPT $BOOT $CLASS_TO_RUN
	;;
    background)
	$JAVA $JAVA_OPTS $TOMCAT_OPTS $JETTY_OPTS $PROF_OPT $BOOT $CLASS_TO_RUN &
	$JAVA $JAVA_OPTS $TOMCAT_OPTS $JETTY_OPTS $BOOT org.objectweb.jonas.adm.JonasAdmin -ping $NAME_OPT
	;;
    window)
	xterm -title $HOSTNAME:$JONASNAME -geometry 110x16 -sb -e jonas start -fg &
	;;
    esac
else
    $JAVA $JAVA_OPTS $TOMCAT_OPTS $JETTY_OPTS $BOOT $CLASS_TO_RUN $NAME_OPT $ARGS
fi
