#!/bin/sh

# ----------------------------------------------------------------------------------
# Copyright (c) Jonas Bonr, Alexandre Vasseur. All rights reserved.
# http://aspectwerkz.codehaus.org
# ----------------------------------------------------------------------------------
# The software in this package is published under the terms of the LGPL style license
# a copy of which has been included with this distribution in the license.txt file.
# ----------------------------------------------------------------------------------

ASPECTWERKZ_VERSION=2.0.RC3
ASPECTWERKZ_LIBS=$ASPECTWERKZ_HOME/lib/dom4j-1.4.jar:$ASPECTWERKZ_HOME/lib/qdox-1.4.jar:$ASPECTWERKZ_HOME/lib/concurrent-1.3.1.jar:$ASPECTWERKZ_HOME/lib/trove-1.0.2.jar:$ASPECTWERKZ_HOME/lib/jrexx-1.1.1.jar

usage() {
	if [ -z "$ASPECTWERKZ_HOME" ]; then
		echo "Please specify the ASPECTWERKZ_HOME environment variable"
	else
		if [ -r "$ASPECTWERKZ_HOME/bin/usage.txt" ]
		then
			cat "$ASPECTWERKZ_HOME/bin/usage.txt"
		else
			echo "ASPECTWERKZ_HOME does not point to the aspectwerkz distribution"
		fi
	fi
	exit 1
}

if [ -z "$1" -o -z "$ASPECTWERKZ_HOME" ]; then
	usage
fi
if [ -z "$JAVA_HOME" ]; then
    echo Please specify the JAVA_HOME environment variable
    exit 1;
fi
if [ -z "$CLASSPATH" ]; then
	CLASSPATH="."
fi
if [ -z "$JAVA_COMMAND" ]; then
	JAVA_COMMAND="$JAVA_HOME/bin/java"
fi

if [ "$1" != "-offline" ]; then
    # -Daspectwerkz.transform.verbose=yes to turn on verbose mode
    # -Daspectwerkz.transform.dump=package.foo.* to turn on dump in ./_dump of package.foo.* class
    # -Daspectwerkz.classloader.wait=10 to delay connection (launching VM)
    # -Djavax.xml.parsers.SAXParserFactory=com.bluecast.xml.JAXPSAXParserFactory for java 1.3 [see FAQ, after ProcessStarter]
    
    # -- J2SE 5 auto detection
    $JAVA_COMMAND -cp $ASPECTWERKZ_HOME/lib/aspectwerkz-$ASPECTWERKZ_VERSION.jar org.codehaus.aspectwerkz.util.EnvironmentDetect -java
    if [ $? -eq 15 ]; then
        # -- Use for Java 1.5 --
        # Note: all jars could be in regular classpath but this command line tool needs to support extra -cp arguments.
        # FIXME: This is bad practice on 1.5 and can make CflowAspect fails.
        # Note: For J2SE 5 prior to beta3b60, you must use -javaagent:org.codehaus.aspectwerkz.hook.Agent
        $JAVA_COMMAND -javaagent:$ASPECTWERKZ_HOME/lib/aspectwerkz-jdk5-$ASPECTWERKZ_VERSION.jar -Xbootclasspath/p:"$ASPECTWERKZ_HOME/lib/aspectwerkz-extensions-$ASPECTWERKZ_VERSION.jar:$ASPECTWERKZ_HOME/lib/aspectwerkz-core-$ASPECTWERKZ_VERSION.jar:$ASPECTWERKZ_HOME/lib/aspectwerkz-$ASPECTWERKZ_VERSION.jar:$ASPECTWERKZ_HOME/lib/aspectwerkz-jdk5-$ASPECTWERKZ_VERSION.jar:$ASPECTWERKZ_LIBS:$ASPECTWERKZ_HOME/lib/piccolo-1.03.jar" -Daspectwerkz.home="$ASPECTWERKZ_HOME" "$@"
    fi

    # -- JRockit (1.3 / 1.4) auto detection
    $JAVA_COMMAND -cp $ASPECTWERKZ_HOME/lib/aspectwerkz-$ASPECTWERKZ_VERSION.jar org.codehaus.aspectwerkz.util.EnvironmentDetect -jvm
    if [ $? -eq 2 ]; then
        # -- Use for BEA JRockit --
        $JAVA_COMMAND -Xmanagement:class=org.codehaus.aspectwerkz.extension.jrockit.JRockitPreProcessor -Xbootclasspath/p:"$ASPECTWERKZ_HOME/lib/aspectwerkz-extensions-$ASPECTWERKZ_VERSION.jar:$ASPECTWERKZ_HOME/lib/aspectwerkz-core-$ASPECTWERKZ_VERSION.jar:$ASPECTWERKZ_HOME/lib/aspectwerkz-$ASPECTWERKZ_VERSION.jar:$ASPECTWERKZ_HOME/lib/aspectwerkz-jdk14-$ASPECTWERKZ_VERSION.jar:$ASPECTWERKZ_LIBS:$ASPECTWERKZ_HOME/lib/piccolo-1.03.jar" -Daspectwerkz.home="$ASPECTWERKZ_HOME" "$@"
    fi

    # -- Use for Sun HotSpot and IBM JRE --
    $JAVA_COMMAND -cp $JAVA_HOME/lib/tools.jar:$ASPECTWERKZ_HOME/lib/aspectwerkz-core-$ASPECTWERKZ_VERSION.jar org.codehaus.aspectwerkz.hook.ProcessStarter -Xbootclasspath/p:"$ASPECTWERKZ_HOME/lib/aspectwerkz-core-$ASPECTWERKZ_VERSION.jar" -cp $CLASSPATH -cp $ASPECTWERKZ_HOME/lib/aspectwerkz-extensions-$ASPECTWERKZ_VERSION.jar:$ASPECTWERKZ_HOME/lib/aspectwerkz-$ASPECTWERKZ_VERSION.jar:$ASPECTWERKZ_HOME/lib/aspectwerkz-jdk14-$ASPECTWERKZ_VERSION.jar:$ASPECTWERKZ_LIBS -Daspectwerkz.home=$ASPECTWERKZ_HOME "$@"

else
    if [ "$#" -le 3 ]; then
        usage
    fi
    $JAVA_COMMAND -Daspectwerkz.transform.filter=no -Daspectwerkz.definition.file=$2 -Daspectwerkz.home=$ASPECTWERKZ_HOME -cp $ASPECTWERKZ_HOME/lib/ant-1.5.2.jar:$ASPECTWERKZ_HOME/lib/aspectwerkz-core-$ASPECTWERKZ_VERSION.jar:$ASPECTWERKZ_HOME/lib/aspectwerkz-$ASPECTWERKZ_VERSION.jar:$ASPECTWERKZ_HOME/lib/aspectwerkz-jdk14-$ASPECTWERKZ_VERSION.jar:$ASPECTWERKZ_LIBS org.codehaus.aspectwerkz.compiler.AspectWerkzC $3 $4 $5 $6 $7 $8 $9
fi

