# ---
# weinre is available under *either* the terms of the modified BSD license *or* the
# MIT License (2008). See http://opensource.org/licenses/alphabetical for full text.
# 
# Copyright (c) 2011 IBM Corporation
# ---

#-----------------------------------------------------------
# location of WebKit Web Inspector
#-----------------------------------------------------------

#WEBKIT_VERSION:         r67358
#WEBKIT_VERSION:         r70098
#WEBKIT_VERSION:         r76802
#WEBKIT_VERSION:         r77127
#WEBKIT_VERSION:         r77819
WEBKIT_VERSION:          r78584
WEBKIT_URL_PREFIX:       https://svn.webkit.org/repository/webkit/trunk

#-----------------------------------------------------------
# location of Apache Commons CLI
#-----------------------------------------------------------

CLI_VERSION:    1.2
CLI_URL_PREFIX: http://www.apache.org/dist/commons/cli/

CLI_URL:        ${CLI_URL_PREFIX}/binaries/commons-cli-${CLI_VERSION}-bin.zip
CLI_BASENAME:   commons-cli-${CLI_VERSION}/commons-cli-${CLI_VERSION}

#-----------------------------------------------------------
# location of JSON4J 
#-----------------------------------------------------------

JSON4J_VERSION:    1.1.2-incubating
JSON4J_URL_PREFIX: http://www.apache.org/dist/incubator/wink

JSON4J_BIN_URL:    ${JSON4J_URL_PREFIX}/${JSON4J_VERSION}/apache-wink-${JSON4J_VERSION}.zip
JSON4J_SRC_URL:    ${JSON4J_URL_PREFIX}/${JSON4J_VERSION}/apache-wink-${JSON4J_VERSION}-src.zip

#-----------------------------------------------------------
# location of Eclipse Jetty
#-----------------------------------------------------------

JETTY_VERSION:              7.1.6.v20100715
JETTY_URL_PREFIX:           https://oss.sonatype.org/content/groups/jetty/org/eclipse/jetty/

JETTY_SRC_JAR_NAME:         jetty-all-server-${JETTY_VERSION}-sources.jar
JETTY_SRC_URL:              ${JETTY_URL_PREFIX}/aggregate/jetty-all-server/${JETTY_VERSION}/${JETTY_SRC_JAR_NAME}

JETTY_BIN_JAR_NAME:         jetty-all-server-${JETTY_VERSION}.jar
JETTY_BIN_URL:              ${JETTY_URL_PREFIX}/aggregate/jetty-all-server/${JETTY_VERSION}/${JETTY_BIN_JAR_NAME}

#-----------------------------------------------------------
# location of servlet API 
#-----------------------------------------------------------

JAVAX_SERVLET_VERSION:      2.5-20110124
JAVAX_SERVLET_VERSION_IMPL: 6.1H.8
JAVAX_SERVLET_URL_PREFIX:   https://oss.sonatype.org/content/groups/jetty/org/mortbay/jetty/servlet-api/

JAVAX_SERVLET_JAR_NAME:     servlet-api-${JAVAX_SERVLET_VERSION}.jar
JAVAX_SERVLET_URL:          ${JAVAX_SERVLET_URL_PREFIX}/${JAVAX_SERVLET_VERSION}/${JAVAX_SERVLET_JAR_NAME}

#-----------------------------------------------------------
# location of Eclipse SWT
#-----------------------------------------------------------

SWT_VERSION_MAJOR: 3.6
SWT_VERSION:       ${SWT_VERSION_MAJOR}-201006080911
SWT_URL_PREFIX:    http://archive.eclipse.org/eclipse/downloads/drops/R-${SWT_VERSION}

#-----------------------------------------------------------
# location of scooj
#-----------------------------------------------------------

SCOOJ_VERSION:    master
SCOOJ_URL_PREFIX: https://github.com/pmuellr/scooj/raw/${SCOOJ_VERSION}

#-----------------------------------------------------------
# location of modjewel
#-----------------------------------------------------------

MODJEWEL_VERSION:    master
MODJEWEL_URL_PREFIX: https://github.com/pmuellr/modjewel/raw/${MODJEWEL_VERSION}
