#!/bin/sh -e
#
# /etc/init.d/jetty -- startup script for jetty 4.2.11
#
# Written by Philipp Meier <meier@meisterbohne.de>

PATH=/usr/local/sbin:/usr/local/bin:/sbin:/bin:/usr/sbin:/usr/bin
NAME=jetty
DESC="Jetty servlet engine"
JETTY_HOME=/usr/share/$NAME

# The following variables can be overwritten in /etc/default/jetty
                                                                                
# Run Jetty as this user ID (default: jetty)
# Set this to an empty string to prevent Jetty from starting automatically
JETTY_USER=jetty
                                                                                
# The first existing directory is used for JAVA_HOME (if JAVA_HOME is not
# defined in /etc/default/jetty)
JDK_DIRS="/usr/lib/j2se/1.4 /usr/lib/j2sdk1.4 /usr/lib/j2se/1.3 /usr/lib/j2sdk1.3"

# Timeout in seconds for the shutdown of all webapps
JETTY_SHUTDOWN=30

# Jetty uses a directory to store temporary files like unpacked webapps
JETTY_TMP=/var/cache/jetty

# Jetty uses a config file to setup it's boot classpath
START_CONFIG=/etc/jetty/start.config

# End of variables that can be overwritten in /etc/default/jetty
                                                                                
# overwrite settings from default file
if [ -f /etc/default/jetty ]; then
        . /etc/default/jetty
fi

if [ -z "$JETTY_USER" ]; then
        echo "Not starting/stopping $DESC as configured (JETTY_USER is"
        echo "empty in /etc/default/jetty)."
        exit 0
fi

# Look for the right JVM to use
for jdir in $JDK_DIRS; do
        if [ -d "$jdir" -a -z "${JAVA_HOME}" ]; then
                JAVA_HOME="$jdir"
        fi
done
export JAVA_HOME

export JAVA="$JAVA_HOME/bin/java"

# Set java.awt.headless=true if JAVA_OPTIONS is not set so the
# Xalan XSL transformer can work without X11 display on JDK 1.4+
if [ -z "$JAVA_OPTIONS" ]; then
        JAVA_OPTIONS="-Xmx64m -Djava.awt.headless=true -Djava.io.tmpdir=$JETTY_TMP"
fi
export JAVA_OPTIONS
                                                                                
# Define other required variables
PIDFILE="/var/run/$NAME.pid"
LOGDIR="/var/log/jetty/"
WEBAPPDIR="$JETTY_HOME/webapps"

##################################################
# Check for JAVA_HOME
##################################################
if [ -z "$JAVA_HOME" ]; then
    echo "Could not start $DESC because no Java Development Kit"
    echo "(JDK) was found. Please download and install JDK 1.3 or higher and set"
    echo "JAVA_HOME in /etc/default/jetty to the JDK's installation directory."
    exit 0

fi

ARGUMENTS="$JAVA_OPTIONS -DSTART=$START_CONFIG -Djetty.home=$JETTY_HOME -jar /usr/share/jetty/lib/start.jar /etc/jetty/jetty.xml"

##################################################
# Do the action
##################################################
case "$1" in
  start)
        echo -n "Starting $DESC: "

        if [ -f $PIDFILE ]
        then
            echo "already running."
            exit 1
        fi

	if start-stop-daemon --test --start --pidfile "$PIDFILE" \
	                --user $JETTY_USER --startas "$JAVA" \
			>/dev/null; then
		su -p -s /bin/sh $JETTY_USER \
			-c "$JAVA $ARGUMENTS" \
			    >> $LOGDIR/out.log 2>&1 &
		echo $! > "$PIDFILE"
                echo "$NAME."
        else
                echo "failed."
        fi
        ;;

  stop)
  	echo -n "Stopping $DESC"
  	
	if start-stop-daemon --test --start --pidfile "$PIDFILE" \
                --user "$JETTY_USER" --startas "$JAVA" \
		>/dev/null; then
                echo ": not running."
                rm -f "$PIDFILE"
        else
		start-stop-daemon --stop \
			--quiet --pidfile "$PIDFILE" \
			--user "$JETTY_USER"
                while ! start-stop-daemon --test --start --pidfile "$PIDFILE" \
                        --user "$JETTY_USER" --startas "$JAVA" \
                        >/dev/null; do
                        sleep 1
                        echo -n "."
                        JETTY_SHUTDOWN=`expr $JETTY_SHUTDOWN - 1` || true
                        if [ $JETTY_SHUTDOWN -le 0 ]; then
                                echo -n " (killing) "
                                start-stop-daemon --stop --signal 9 --oknodo \
                                        --quiet --pidfile "$PIDFILE" \
                                        --user "$JETTY_USER"
                        fi
                done
                rm -f "$PIDFILE"
                echo " $NAME."
	fi
        ;;

  restart|force-reload)
        $0 stop $*
        sleep 1
        $0 start $*
        ;;

  check)
        echo "Checking arguments to Jetty: "
        echo
	echo "PIDFILE        =  $PIDFILE"
	echo "JAVA_OPTIONS   =  $JAVA_OPTIONS"
	echo "JAVA           =  $JAVA"
	echo "JETTY_USER     =  $JETTY_USER"
	echo "ARGUMENTS      =  $ARGUMENTS"
        
        if [ -f $PIDFILE ]
        then
            echo "Jetty running pid="`cat $PIDFILE`
            exit 0
        fi
        exit 1
        ;;

  *)
        echo "Usage: /etc/init.d/jetty {start|stop|restart|force-reload|check}" >&2
	exit 1
	;;
esac

exit 0


