init commit
This commit is contained in:
1 parent
41d729d7fd
commit
4a7c6fa3ce
25 files changed
+849
No files matched your search
+15
@@ -0,0 +1,15 @@
|
||||
logs
|
||||
project/project
|
||||
project/target
|
||||
target
|
||||
tmp
|
||||
.history
|
||||
dist
|
||||
/.idea
|
||||
/*.iml
|
||||
/out
|
||||
/.idea_modules
|
||||
/.classpath
|
||||
/.project
|
||||
/RUNNING_PID
|
||||
/.settings
|
||||
@@ -0,0 +1,8 @@
|
||||
This software is licensed under the Apache 2 license, quoted below.
|
||||
|
||||
Licensed under the Apache License, Version 2.0 (the "License"); you may not use this project except in compliance with
|
||||
the License. You may obtain a copy of the License at http://www.apache.org/licenses/LICENSE-2.0.
|
||||
|
||||
Unless required by applicable law or agreed to in writing, software distributed under the License is distributed on an
|
||||
"AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the License for the specific
|
||||
language governing permissions and limitations under the License.
|
||||
@@ -0,0 +1,3 @@
|
||||
# Getting started with Play (Scala)
|
||||
|
||||
This project demonstrate how to create a simple CRUD application with Play. A screencast to the project exist on [playframework.com](http://playframework.com)
|
||||
@@ -0,0 +1,342 @@
|
||||
#!/bin/bash
|
||||
|
||||
### ------------------------------- ###
|
||||
### Helper methods for BASH scripts ###
|
||||
### ------------------------------- ###
|
||||
|
||||
realpath () {
|
||||
(
|
||||
TARGET_FILE="$1"
|
||||
|
||||
cd $(dirname "$TARGET_FILE")
|
||||
TARGET_FILE=$(basename "$TARGET_FILE")
|
||||
|
||||
COUNT=0
|
||||
while [ -L "$TARGET_FILE" -a $COUNT -lt 100 ]
|
||||
do
|
||||
TARGET_FILE=$(readlink "$TARGET_FILE")
|
||||
cd $(dirname "$TARGET_FILE")
|
||||
TARGET_FILE=$(basename "$TARGET_FILE")
|
||||
COUNT=$(($COUNT + 1))
|
||||
done
|
||||
|
||||
if [ "$TARGET_FILE" == "." -o "$TARGET_FILE" == ".." ]; then
|
||||
cd "$TARGET_FILE"
|
||||
TARGET_FILEPATH=
|
||||
else
|
||||
TARGET_FILEPATH=/$TARGET_FILE
|
||||
fi
|
||||
|
||||
# make sure we grab the actual windows path, instead of cygwin's path.
|
||||
if ! is_cygwin; then
|
||||
echo "$(pwd -P)/$TARGET_FILE"
|
||||
else
|
||||
echo $(cygwinpath "$(pwd -P)/$TARGET_FILE")
|
||||
fi
|
||||
)
|
||||
}
|
||||
|
||||
# TODO - Do we need to detect msys?
|
||||
|
||||
# Uses uname to detect if we're in the odd cygwin environment.
|
||||
is_cygwin() {
|
||||
local os=$(uname -s)
|
||||
case "$os" in
|
||||
CYGWIN*) return 0 ;;
|
||||
*) return 1 ;;
|
||||
esac
|
||||
}
|
||||
|
||||
# This can fix cygwin style /cygdrive paths so we get the
|
||||
# windows style paths.
|
||||
cygwinpath() {
|
||||
local file="$1"
|
||||
if is_cygwin; then
|
||||
echo $(cygpath -w $file)
|
||||
else
|
||||
echo $file
|
||||
fi
|
||||
}
|
||||
|
||||
# Make something URI friendly
|
||||
make_url() {
|
||||
url="$1"
|
||||
local nospaces=${url// /%20}
|
||||
if is_cygwin; then
|
||||
echo "/${nospaces//\\//}"
|
||||
else
|
||||
echo "$nospaces"
|
||||
fi
|
||||
}
|
||||
|
||||
# Detect if we should use JAVA_HOME or just try PATH.
|
||||
get_java_cmd() {
|
||||
if [[ -n "$JAVA_HOME" ]] && [[ -x "$JAVA_HOME/bin/java" ]]; then
|
||||
echo "$JAVA_HOME/bin/java"
|
||||
else
|
||||
echo "java"
|
||||
fi
|
||||
}
|
||||
|
||||
echoerr () {
|
||||
echo 1>&2 "$@"
|
||||
}
|
||||
vlog () {
|
||||
[[ $verbose || $debug ]] && echoerr "$@"
|
||||
}
|
||||
dlog () {
|
||||
[[ $debug ]] && echoerr "$@"
|
||||
}
|
||||
execRunner () {
|
||||
# print the arguments one to a line, quoting any containing spaces
|
||||
[[ $verbose || $debug ]] && echo "# Executing command line:" && {
|
||||
for arg; do
|
||||
if printf "%s\n" "$arg" | grep -q ' '; then
|
||||
printf "\"%s\"\n" "$arg"
|
||||
else
|
||||
printf "%s\n" "$arg"
|
||||
fi
|
||||
done
|
||||
echo ""
|
||||
}
|
||||
|
||||
exec "$@"
|
||||
}
|
||||
addJava () {
|
||||
dlog "[addJava] arg = '$1'"
|
||||
java_args=( "${java_args[@]}" "$1" )
|
||||
}
|
||||
addApp () {
|
||||
dlog "[addApp] arg = '$1'"
|
||||
sbt_commands=( "${app_commands[@]}" "$1" )
|
||||
}
|
||||
addResidual () {
|
||||
dlog "[residual] arg = '$1'"
|
||||
residual_args=( "${residual_args[@]}" "$1" )
|
||||
}
|
||||
addDebugger () {
|
||||
addJava "-Xdebug -Xrunjdwp:transport=dt_socket,server=y,suspend=n,address=$1"
|
||||
}
|
||||
addConfigOpts () {
|
||||
dlog "[addConfigOpts] arg = '$*'"
|
||||
for item in $*
|
||||
do
|
||||
addJava "$item"
|
||||
done
|
||||
}
|
||||
# a ham-fisted attempt to move some memory settings in concert
|
||||
# so they need not be messed around with individually.
|
||||
get_mem_opts () {
|
||||
local mem=${1:-1024}
|
||||
local meta=$(( $mem / 4 ))
|
||||
(( $meta > 256 )) || meta=256
|
||||
(( $meta < 1024 )) || meta=1024
|
||||
|
||||
# default is to set memory options but this can be overridden by code section below
|
||||
memopts="-Xms${mem}m -Xmx${mem}m"
|
||||
if [[ "${java_version}" > "1.8" ]]; then
|
||||
extmemopts="-XX:MetaspaceSize=64m -XX:MaxMetaspaceSize=${meta}m"
|
||||
else
|
||||
extmemopts="-XX:PermSize=64m -XX:MaxPermSize=${meta}m"
|
||||
fi
|
||||
|
||||
if [[ "${java_opts}" == *-Xmx* ]] || [[ "${java_opts}" == *-Xms* ]] || [[ "${java_opts}" == *-XX:MaxPermSize* ]] || [[ "${java_opts}" == *-XX:ReservedCodeCacheSize* ]] || [[ "${java_opts}" == *-XX:MaxMetaspaceSize* ]]; then
|
||||
# if we detect any of these settings in ${java_opts} we need to NOT output our settings.
|
||||
# The reason is the Xms/Xmx, if they don't line up, cause errors.
|
||||
memopts=""
|
||||
extmemopts=""
|
||||
fi
|
||||
|
||||
echo "${memopts} ${extmemopts}"
|
||||
}
|
||||
require_arg () {
|
||||
local type="$1"
|
||||
local opt="$2"
|
||||
local arg="$3"
|
||||
if [[ -z "$arg" ]] || [[ "${arg:0:1}" == "-" ]]; then
|
||||
die "$opt requires <$type> argument"
|
||||
fi
|
||||
}
|
||||
require_arg () {
|
||||
local type="$1"
|
||||
local opt="$2"
|
||||
local arg="$3"
|
||||
if [[ -z "$arg" ]] || [[ "${arg:0:1}" == "-" ]]; then
|
||||
die "$opt requires <$type> argument"
|
||||
fi
|
||||
}
|
||||
is_function_defined() {
|
||||
declare -f "$1" > /dev/null
|
||||
}
|
||||
|
||||
# If we're *not* running in a terminal, and we don't have any arguments, then we need to add the 'ui' parameter
|
||||
detect_terminal_for_ui() {
|
||||
[[ ! -t 0 ]] && [[ "${#residual_args}" == "0" ]] && {
|
||||
addResidual "ui"
|
||||
}
|
||||
# SPECIAL TEST FOR MAC
|
||||
[[ "$(uname)" == "Darwin" ]] && [[ "$HOME" == "$PWD" ]] && [[ "${#residual_args}" == "0" ]] && {
|
||||
echo "Detected MAC OSX launched script...."
|
||||
echo "Swapping to UI"
|
||||
addResidual "ui"
|
||||
}
|
||||
}
|
||||
|
||||
# Processes incoming arguments and places them in appropriate global variables. called by the run method.
|
||||
process_args () {
|
||||
while [[ $# -gt 0 ]]; do
|
||||
case "$1" in
|
||||
-h|-help) usage; exit 1 ;;
|
||||
-v|-verbose) verbose=1 && shift ;;
|
||||
-d|-debug) debug=1 && shift ;;
|
||||
-mem) require_arg integer "$1" "$2" && app_mem="$2" && shift 2 ;;
|
||||
-jvm-debug)
|
||||
if echo "$2" | grep -E ^[0-9]+$ > /dev/null; then
|
||||
addDebugger "$2" && shift
|
||||
else
|
||||
addDebugger 9999
|
||||
fi
|
||||
shift ;;
|
||||
-java-home) require_arg path "$1" "$2" && java_cmd="$2/bin/java" && shift 2 ;;
|
||||
-D*) addJava "$1" && shift ;;
|
||||
-J*) addJava "${1:2}" && shift ;;
|
||||
*) addResidual "$1" && shift ;;
|
||||
esac
|
||||
done
|
||||
|
||||
is_function_defined process_my_args && {
|
||||
myargs=("${residual_args[@]}")
|
||||
residual_args=()
|
||||
process_my_args "${myargs[@]}"
|
||||
}
|
||||
}
|
||||
|
||||
# Actually runs the script.
|
||||
run() {
|
||||
# TODO - check for sane environment
|
||||
|
||||
# process the combined args, then reset "$@" to the residuals
|
||||
process_args "$@"
|
||||
detect_terminal_for_ui
|
||||
set -- "${residual_args[@]}"
|
||||
argumentCount=$#
|
||||
|
||||
#check for jline terminal fixes on cygwin
|
||||
if is_cygwin; then
|
||||
stty -icanon min 1 -echo > /dev/null 2>&1
|
||||
addJava "-Djline.terminal=jline.UnixTerminal"
|
||||
addJava "-Dsbt.cygwin=true"
|
||||
fi
|
||||
|
||||
# run sbt
|
||||
execRunner "$java_cmd" \
|
||||
"-Dactivator.home=$(make_url "$activator_home")" \
|
||||
$(get_mem_opts $app_mem) \
|
||||
${java_opts[@]} \
|
||||
${java_args[@]} \
|
||||
-jar "$app_launcher" \
|
||||
"${app_commands[@]}" \
|
||||
"${residual_args[@]}"
|
||||
|
||||
local exit_code=$?
|
||||
if is_cygwin; then
|
||||
stty icanon echo > /dev/null 2>&1
|
||||
fi
|
||||
exit $exit_code
|
||||
}
|
||||
|
||||
# Loads a configuration file full of default command line options for this script.
|
||||
loadConfigFile() {
|
||||
cat "$1" | sed '/^\#/d'
|
||||
}
|
||||
|
||||
### ------------------------------- ###
|
||||
### Start of customized settings ###
|
||||
### ------------------------------- ###
|
||||
usage() {
|
||||
cat <<EOM
|
||||
Usage: $script_name <command> [options]
|
||||
|
||||
Command:
|
||||
ui Start the Activator UI
|
||||
new [name] [template-id] Create a new project with [name] using template [template-id]
|
||||
list-templates Print all available template names
|
||||
-h | -help Print this message
|
||||
|
||||
Options:
|
||||
-v | -verbose Make this runner chattier
|
||||
-d | -debug Set sbt log level to debug
|
||||
-mem <integer> Set memory options (default: $sbt_mem, which is $(get_mem_opts $sbt_mem))
|
||||
-jvm-debug <port> Turn on JVM debugging, open at the given port.
|
||||
|
||||
# java version (default: java from PATH, currently $(java -version 2>&1 | grep version))
|
||||
-java-home <path> Alternate JAVA_HOME
|
||||
|
||||
# jvm options and output control
|
||||
-Dkey=val Pass -Dkey=val directly to the java runtime
|
||||
-J-X Pass option -X directly to the java runtime
|
||||
(-J is stripped)
|
||||
|
||||
# environment variables (read from context)
|
||||
JAVA_OPTS Environment variable, if unset uses ""
|
||||
SBT_OPTS Environment variable, if unset uses ""
|
||||
ACTIVATOR_OPTS Environment variable, if unset uses ""
|
||||
|
||||
In the case of duplicated or conflicting options, the order above
|
||||
shows precedence: environment variables lowest, command line options highest.
|
||||
EOM
|
||||
}
|
||||
|
||||
### ------------------------------- ###
|
||||
### Main script ###
|
||||
### ------------------------------- ###
|
||||
|
||||
declare -a residual_args
|
||||
declare -a java_args
|
||||
declare -a app_commands
|
||||
declare -r real_script_path="$(realpath "$0")"
|
||||
declare -r activator_home="$(realpath "$(dirname "$real_script_path")")"
|
||||
declare -r app_version="1.2.10"
|
||||
|
||||
declare -r app_launcher="${activator_home}/activator-launch-${app_version}.jar"
|
||||
declare -r script_name=activator
|
||||
declare -r java_cmd=$(get_java_cmd)
|
||||
declare -r java_opts=( "${ACTIVATOR_OPTS[@]}" "${SBT_OPTS[@]}" "${JAVA_OPTS[@]}" "${java_opts[@]}" )
|
||||
userhome="$HOME"
|
||||
if is_cygwin; then
|
||||
# cygwin sets home to something f-d up, set to real windows homedir
|
||||
userhome="$USERPROFILE"
|
||||
fi
|
||||
declare -r activator_user_home_dir="${userhome}/.activator"
|
||||
declare -r java_opts_config_home="${activator_user_home_dir}/activatorconfig.txt"
|
||||
declare -r java_opts_config_version="${activator_user_home_dir}/${app_version}/activatorconfig.txt"
|
||||
|
||||
# Now check to see if it's a good enough version
|
||||
declare -r java_version=$("$java_cmd" -version 2>&1 | awk -F '"' '/version/ {print $2}')
|
||||
if [[ "$java_version" == "" ]]; then
|
||||
echo
|
||||
echo No java installations was detected.
|
||||
echo Please go to http://www.java.com/getjava/ and download
|
||||
echo
|
||||
exit 1
|
||||
elif [[ ! "$java_version" > "1.6" ]]; then
|
||||
echo
|
||||
echo The java installation you have is not up to date
|
||||
echo Activator requires at least version 1.6+, you have
|
||||
echo version $java_version
|
||||
echo
|
||||
echo Please go to http://www.java.com/getjava/ and download
|
||||
echo a valid Java Runtime and install before running Activator.
|
||||
echo
|
||||
exit 1
|
||||
fi
|
||||
|
||||
# if configuration files exist, prepend their contents to the java args so it can be processed by this runner
|
||||
# a "versioned" config trumps one on the top level
|
||||
if [[ -f "$java_opts_config_version" ]]; then
|
||||
addConfigOpts $(loadConfigFile "$java_opts_config_version")
|
||||
elif [[ -f "$java_opts_config_home" ]]; then
|
||||
addConfigOpts $(loadConfigFile "$java_opts_config_home")
|
||||
fi
|
||||
|
||||
run "$@"
|
||||
Binary file not shown.
@@ -0,0 +1 @@
|
||||
echoSettings
|
||||
+227
@@ -0,0 +1,227 @@
|
||||
@REM activator launcher script
|
||||
@REM
|
||||
@REM Envioronment:
|
||||
@REM JAVA_HOME - location of a JDK home dir (optional if java on path)
|
||||
@REM CFG_OPTS - JVM options (optional)
|
||||
@REM Configuration:
|
||||
@REM activatorconfig.txt found in the ACTIVATOR_HOME or ACTIVATOR_HOME/ACTIVATOR_VERSION
|
||||
@setlocal enabledelayedexpansion
|
||||
|
||||
@echo off
|
||||
|
||||
set "var1=%~1"
|
||||
if defined var1 (
|
||||
if "%var1%"=="help" (
|
||||
echo.
|
||||
echo Usage activator [options] [command]
|
||||
echo.
|
||||
echo Commands:
|
||||
echo ui Start the Activator UI
|
||||
echo new [name] [template-id] Create a new project with [name] using template [template-id]
|
||||
echo list-templates Print all available template names
|
||||
echo help Print this message
|
||||
echo.
|
||||
echo Options:
|
||||
echo -jvm-debug [port] Turn on JVM debugging, open at the given port. Defaults to 9999 if no port given.
|
||||
echo.
|
||||
echo Environment variables ^(read from context^):
|
||||
echo JAVA_OPTS Environment variable, if unset uses ""
|
||||
echo SBT_OPTS Environment variable, if unset uses ""
|
||||
echo ACTIVATOR_OPTS Environment variable, if unset uses ""
|
||||
echo.
|
||||
goto :end
|
||||
)
|
||||
)
|
||||
|
||||
if "%ACTIVATOR_HOME%"=="" (
|
||||
set "ACTIVATOR_HOME=%~dp0"
|
||||
@REM remove trailing "\" from path
|
||||
set ACTIVATOR_HOME=!ACTIVATOR_HOME:~0,-1!
|
||||
)
|
||||
|
||||
set ERROR_CODE=0
|
||||
set APP_VERSION=1.2.10
|
||||
set ACTIVATOR_LAUNCH_JAR=activator-launch-%APP_VERSION%.jar
|
||||
|
||||
rem Detect if we were double clicked, although theoretically A user could
|
||||
rem manually run cmd /c
|
||||
for %%x in (%cmdcmdline%) do if %%~x==/c set DOUBLECLICKED=1
|
||||
|
||||
rem FIRST we load a config file of extra options (if there is one)
|
||||
set "CFG_FILE_HOME=%UserProfile%\.activator\activatorconfig.txt"
|
||||
set "CFG_FILE_VERSION=%UserProfile%\.activator\%APP_VERSION%\activatorconfig.txt"
|
||||
set CFG_OPTS=
|
||||
if exist %CFG_FILE_VERSION% (
|
||||
FOR /F "tokens=* eol=# usebackq delims=" %%i IN ("%CFG_FILE_VERSION%") DO (
|
||||
set DO_NOT_REUSE_ME=%%i
|
||||
rem ZOMG (Part #2) WE use !! here to delay the expansion of
|
||||
rem CFG_OPTS, otherwise it remains "" for this loop.
|
||||
set CFG_OPTS=!CFG_OPTS! !DO_NOT_REUSE_ME!
|
||||
)
|
||||
)
|
||||
if "%CFG_OPTS%"=="" (
|
||||
if exist %CFG_FILE_HOME% (
|
||||
FOR /F "tokens=* eol=# usebackq delims=" %%i IN ("%CFG_FILE_HOME%") DO (
|
||||
set DO_NOT_REUSE_ME=%%i
|
||||
rem ZOMG (Part #2) WE use !! here to delay the expansion of
|
||||
rem CFG_OPTS, otherwise it remains "" for this loop.
|
||||
set CFG_OPTS=!CFG_OPTS! !DO_NOT_REUSE_ME!
|
||||
)
|
||||
)
|
||||
)
|
||||
|
||||
rem We use the value of the JAVACMD environment variable if defined
|
||||
set _JAVACMD=%JAVACMD%
|
||||
|
||||
if "%_JAVACMD%"=="" (
|
||||
if not "%JAVA_HOME%"=="" (
|
||||
if exist "%JAVA_HOME%\bin\java.exe" set "_JAVACMD=%JAVA_HOME%\bin\java.exe"
|
||||
|
||||
rem if there is a java home set we make sure it is the first picked up when invoking 'java'
|
||||
SET "PATH=%JAVA_HOME%\bin;%PATH%"
|
||||
)
|
||||
)
|
||||
|
||||
if "%_JAVACMD%"=="" set _JAVACMD=java
|
||||
|
||||
rem Detect if this java is ok to use.
|
||||
for /F %%j in ('"%_JAVACMD%" -version 2^>^&1') do (
|
||||
if %%~j==Java set JAVAINSTALLED=1
|
||||
)
|
||||
|
||||
rem Detect the same thing about javac
|
||||
if "%_JAVACCMD%"=="" (
|
||||
if not "%JAVA_HOME%"=="" (
|
||||
if exist "%JAVA_HOME%\bin\javac.exe" set "_JAVACCMD=%JAVA_HOME%\bin\javac.exe"
|
||||
)
|
||||
)
|
||||
if "%_JAVACCMD%"=="" set _JAVACCMD=javac
|
||||
for /F %%j in ('"%_JAVACCMD%" -version 2^>^&1') do (
|
||||
if %%~j==javac set JAVACINSTALLED=1
|
||||
)
|
||||
|
||||
rem BAT has no logical or, so we do it OLD SCHOOL! Oppan Redmond Style
|
||||
set JAVAOK=true
|
||||
if not defined JAVAINSTALLED set JAVAOK=false
|
||||
if not defined JAVACINSTALLED set JAVAOK=false
|
||||
|
||||
if "%JAVAOK%"=="false" (
|
||||
echo.
|
||||
echo A Java JDK is not installed or can't be found.
|
||||
if not "%JAVA_HOME%"=="" (
|
||||
echo JAVA_HOME = "%JAVA_HOME%"
|
||||
)
|
||||
echo.
|
||||
echo Please go to
|
||||
echo http://www.oracle.com/technetwork/java/javase/downloads/index.html
|
||||
echo and download a valid Java JDK and install before running Activator.
|
||||
echo.
|
||||
echo If you think this message is in error, please check
|
||||
echo your environment variables to see if "java.exe" and "javac.exe" are
|
||||
echo available via JAVA_HOME or PATH.
|
||||
echo.
|
||||
if defined DOUBLECLICKED pause
|
||||
exit /B 1
|
||||
)
|
||||
|
||||
rem Check what Java version is being used to determine what memory options to use
|
||||
for /f "tokens=3" %%g in ('java -version 2^>^&1 ^| findstr /i "version"') do (
|
||||
set JAVA_VERSION=%%g
|
||||
)
|
||||
|
||||
rem Strips away the " characters
|
||||
set JAVA_VERSION=%JAVA_VERSION:"=%
|
||||
|
||||
rem TODO Check if there are existing mem settings in JAVA_OPTS/CFG_OPTS and use those instead of the below
|
||||
for /f "delims=. tokens=1-3" %%v in ("%JAVA_VERSION%") do (
|
||||
set MAJOR=%%v
|
||||
set MINOR=%%w
|
||||
set BUILD=%%x
|
||||
|
||||
set META_SIZE=-XX:MetaspaceSize=64M -XX:MaxMetaspaceSize=256M
|
||||
if "!MINOR!" LSS "8" (
|
||||
set META_SIZE=-XX:PermSize=64M -XX:MaxPermSize=256M
|
||||
)
|
||||
|
||||
set MEM_OPTS=!META_SIZE!
|
||||
)
|
||||
|
||||
rem We use the value of the JAVA_OPTS environment variable if defined, rather than the config.
|
||||
set _JAVA_OPTS=%JAVA_OPTS%
|
||||
if "%_JAVA_OPTS%"=="" set _JAVA_OPTS=%CFG_OPTS%
|
||||
|
||||
set DEBUG_OPTS=
|
||||
|
||||
rem Loop through the arguments, building remaining args in args variable
|
||||
set args=
|
||||
:argsloop
|
||||
if not "%~1"=="" (
|
||||
rem Checks if the argument contains "-D" and if true, adds argument 1 with 2 and puts an equal sign between them.
|
||||
rem This is done since batch considers "=" to be a delimiter so we need to circumvent this behavior with a small hack.
|
||||
set arg1=%~1
|
||||
if "!arg1:~0,2!"=="-D" (
|
||||
set "args=%args% "%~1"="%~2""
|
||||
shift
|
||||
shift
|
||||
goto argsloop
|
||||
)
|
||||
|
||||
if "%~1"=="-jvm-debug" (
|
||||
if not "%~2"=="" (
|
||||
rem This piece of magic somehow checks that an argument is a number
|
||||
for /F "delims=0123456789" %%i in ("%~2") do (
|
||||
set var="%%i"
|
||||
)
|
||||
if defined var (
|
||||
rem Not a number, assume no argument given and default to 9999
|
||||
set JPDA_PORT=9999
|
||||
) else (
|
||||
rem Port was given, shift arguments
|
||||
set JPDA_PORT=%~2
|
||||
shift
|
||||
)
|
||||
) else (
|
||||
set JPDA_PORT=9999
|
||||
)
|
||||
shift
|
||||
|
||||
set DEBUG_OPTS=-Xdebug -Xrunjdwp:transport=dt_socket,server=y,suspend=n,address=!JPDA_PORT!
|
||||
goto argsloop
|
||||
)
|
||||
rem else
|
||||
set "args=%args% "%~1""
|
||||
shift
|
||||
goto argsloop
|
||||
)
|
||||
|
||||
:run
|
||||
|
||||
if "!args!"=="" (
|
||||
if defined DOUBLECLICKED (
|
||||
set CMDS="ui"
|
||||
) else set CMDS=!args!
|
||||
) else set CMDS=!args!
|
||||
|
||||
rem We add a / in front, so we get file:///C: instead of file://C:
|
||||
rem Java considers the later a UNC path.
|
||||
rem We also attempt a solid effort at making it URI friendly.
|
||||
rem We don't even bother with UNC paths.
|
||||
set JAVA_FRIENDLY_HOME_1=/!ACTIVATOR_HOME:\=/!
|
||||
set JAVA_FRIENDLY_HOME=/!JAVA_FRIENDLY_HOME_1: =%%20!
|
||||
|
||||
rem Checks if the command contains spaces to know if it should be wrapped in quotes or not
|
||||
set NON_SPACED_CMD=%_JAVACMD: =%
|
||||
if "%_JAVACMD%"=="%NON_SPACED_CMD%" %_JAVACMD% %DEBUG_OPTS% %MEM_OPTS% %ACTIVATOR_OPTS% %SBT_OPTS% %_JAVA_OPTS% "-Dactivator.home=%JAVA_FRIENDLY_HOME%" -jar "%ACTIVATOR_HOME%\%ACTIVATOR_LAUNCH_JAR%" %CMDS%
|
||||
if NOT "%_JAVACMD%"=="%NON_SPACED_CMD%" "%_JAVACMD%" %DEBUG_OPTS% %MEM_OPTS% %ACTIVATOR_OPTS% %SBT_OPTS% %_JAVA_OPTS% "-Dactivator.home=%JAVA_FRIENDLY_HOME%" -jar "%ACTIVATOR_HOME%\%ACTIVATOR_LAUNCH_JAR%" %CMDS%
|
||||
|
||||
if ERRORLEVEL 1 goto error
|
||||
goto end
|
||||
|
||||
:error
|
||||
set ERROR_CODE=1
|
||||
|
||||
:end
|
||||
|
||||
@endlocal
|
||||
|
||||
exit /B %ERROR_CODE%
|
||||
@@ -0,0 +1,4 @@
|
||||
$ ->
|
||||
$.get "/persons", (persons) ->
|
||||
$.each persons, (index, person) ->
|
||||
$("#persons").append $("<li>").text person.name
|
||||
@@ -0,0 +1,44 @@
|
||||
package controllers
|
||||
|
||||
import play.api._
|
||||
import play.api.mvc._
|
||||
import play.api.data.Form
|
||||
import play.api.data.Forms._
|
||||
import play.api.libs.json.Json
|
||||
import models._
|
||||
|
||||
object Application extends Controller {
|
||||
|
||||
def index = Action {
|
||||
Ok(views.html.index())
|
||||
}
|
||||
|
||||
val personForm: Form[Person] = Form {
|
||||
mapping(
|
||||
"name" -> text
|
||||
)(Person.apply)(Person.unapply)
|
||||
}
|
||||
|
||||
def addPerson = Action { implicit request =>
|
||||
val person = personForm.bindFromRequest.get
|
||||
DB.save(person)
|
||||
Redirect(routes.Application.index)
|
||||
}
|
||||
|
||||
def getPersons = Action {
|
||||
val persons = DB.query[Person].fetch()
|
||||
Ok(Json.toJson(persons))
|
||||
}
|
||||
|
||||
def add() = play.mvc.Results.TODO
|
||||
|
||||
def subtract() = play.mvc.Results.TODO
|
||||
|
||||
def transponse() = play.mvc.Results.TODO
|
||||
|
||||
def divide() = play.mvc.Results.TODO
|
||||
|
||||
def reverse() = play.mvc.Results.TODO
|
||||
|
||||
def multiply() = play.mvc.Results.TODO
|
||||
}
|
||||
@@ -0,0 +1,5 @@
|
||||
package models
|
||||
|
||||
import sorm._
|
||||
|
||||
object DB extends Instance(entities = Set(Entity[Person]()), url = "jdbc:h2:mem:test")
|
||||
@@ -0,0 +1,10 @@
|
||||
package models
|
||||
|
||||
import play.api.libs.json._
|
||||
|
||||
case class Person(name: String)
|
||||
|
||||
object Person {
|
||||
|
||||
implicit val personFormat = Json.format[Person]
|
||||
}
|
||||
@@ -0,0 +1,12 @@
|
||||
@()
|
||||
|
||||
@main("Welcome to Play") {
|
||||
<script type='text/javascript' src='@routes.Assets.at("javascripts/index.js")'></script>
|
||||
|
||||
<ul id="persons"></ul>
|
||||
|
||||
<form method="POST" action="@routes.Application.addPerson()">
|
||||
<input type="text" name="name"/>
|
||||
<button>Add Person</button>
|
||||
</form>
|
||||
}
|
||||
@@ -0,0 +1,14 @@
|
||||
@(title: String)(content: Html)
|
||||
|
||||
<!DOCTYPE html>
|
||||
|
||||
<html>
|
||||
<head>
|
||||
<title>@title</title>
|
||||
<link rel="shortcut icon" type="image/png" href="@routes.Assets.at("images/favicon.png")">
|
||||
<script src="@routes.Assets.at("javascripts/jquery-1.11.1.min.js")" type="text/javascript"></script
|
||||
</head>
|
||||
<body>
|
||||
@content
|
||||
</body>
|
||||
</html>
|
||||
@@ -0,0 +1,19 @@
|
||||
name := """play-scala-intro"""
|
||||
|
||||
version := "1.0-SNAPSHOT"
|
||||
|
||||
lazy val root = (project in file(".")).enablePlugins(PlayScala)
|
||||
|
||||
scalaVersion := "2.10.4"
|
||||
|
||||
libraryDependencies ++= Seq(
|
||||
"org.sorm-framework" % "sorm" % "0.3.15",
|
||||
"com.h2database" % "h2" % "1.4.177",
|
||||
"org.scalala" %% "scalala" % "1.0.0.RC3-SNAPSHOT"
|
||||
)
|
||||
|
||||
resolvers ++= Seq(
|
||||
// other resolvers here
|
||||
"Scala Tools Snapshots" at "http://scala-tools.org/repo-snapshots/",
|
||||
"ScalaNLP Maven2" at "http://repo.scalanlp.org/repo"
|
||||
)
|
||||
@@ -0,0 +1,63 @@
|
||||
# This is the main configuration file for the application.
|
||||
# ~~~~~
|
||||
|
||||
# Secret key
|
||||
# ~~~~~
|
||||
# The secret key is used to secure cryptographics functions.
|
||||
#
|
||||
# This must be changed for production, but we recommend not changing it in this file.
|
||||
#
|
||||
# See http://www.playframework.com/documentation/latest/ApplicationSecret for more details.
|
||||
application.secret="njLJg3qc<hluhb74J6OmJxK4kEiYFhp[tcyoN6w?YfkjT7DHb`EYAa;mc4orrVsb"
|
||||
|
||||
# The application languages
|
||||
# ~~~~~
|
||||
application.langs="en"
|
||||
|
||||
# Global object class
|
||||
# ~~~~~
|
||||
# Define the Global object class for this application.
|
||||
# Default to Global in the root package.
|
||||
# application.global=Global
|
||||
|
||||
# Router
|
||||
# ~~~~~
|
||||
# Define the Router object to use for this application.
|
||||
# This router will be looked up first when the application is starting up,
|
||||
# so make sure this is the entry point.
|
||||
# Furthermore, it's assumed your route file is named properly.
|
||||
# So for an application router like `my.application.Router`,
|
||||
# you may need to define a router file `conf/my.application.routes`.
|
||||
# Default to Routes in the root package (and conf/routes)
|
||||
# application.router=my.application.Routes
|
||||
|
||||
# Database configuration
|
||||
# ~~~~~
|
||||
# You can declare as many datasources as you want.
|
||||
# By convention, the default datasource is named `default`
|
||||
#
|
||||
db.default.driver=org.h2.Driver
|
||||
db.default.url="jdbc:h2:mem:play"
|
||||
# db.default.user=sa
|
||||
# db.default.password=""
|
||||
slick.default="models.*"
|
||||
|
||||
# Evolutions
|
||||
# ~~~~~
|
||||
# You can disable evolutions if needed
|
||||
# evolutionplugin=disabled
|
||||
|
||||
# Logger
|
||||
# ~~~~~
|
||||
# You can also configure logback (http://logback.qos.ch/),
|
||||
# by providing an application-logger.xml file in the conf directory.
|
||||
|
||||
# Root logger:
|
||||
logger.root=ERROR
|
||||
|
||||
# Logger used by the framework:
|
||||
logger.play=INFO
|
||||
|
||||
# Logger provided to your application:
|
||||
logger.application=DEBUG
|
||||
|
||||
@@ -0,0 +1 @@
|
||||
addSbtPlugin("com.typesafe.sbt" % "sbt-echo" % "0.1.6.2")
|
||||
@@ -0,0 +1 @@
|
||||
addSbtPlugin("com.typesafe.sbteclipse" % "sbteclipse-plugin" % "2.3.0")
|
||||
@@ -0,0 +1 @@
|
||||
addSbtPlugin("com.github.mpeltonen" % "sbt-idea" % "1.5.2")
|
||||
@@ -0,0 +1,4 @@
|
||||
#Activator-generated Properties
|
||||
#Tue Dec 23 20:25:25 CET 2014
|
||||
template.uuid=9276b448-2abc-41fd-bd12-ba75797df0fe
|
||||
sbt.version=0.13.5
|
||||
@@ -0,0 +1,18 @@
|
||||
resolvers += "Typesafe repository" at "https://repo.typesafe.com/typesafe/releases/"
|
||||
|
||||
// The Play plugin
|
||||
addSbtPlugin("com.typesafe.play" % "sbt-plugin" % "2.3.7")
|
||||
|
||||
// web plugins
|
||||
|
||||
addSbtPlugin("com.typesafe.sbt" % "sbt-coffeescript" % "1.0.0")
|
||||
|
||||
addSbtPlugin("com.typesafe.sbt" % "sbt-less" % "1.0.0")
|
||||
|
||||
addSbtPlugin("com.typesafe.sbt" % "sbt-jshint" % "1.0.1")
|
||||
|
||||
addSbtPlugin("com.typesafe.sbt" % "sbt-rjs" % "1.0.1")
|
||||
|
||||
addSbtPlugin("com.typesafe.sbt" % "sbt-digest" % "1.0.0")
|
||||
|
||||
addSbtPlugin("com.typesafe.sbt" % "sbt-mocha" % "1.0.0")
|
||||
Binary file not shown.
|
After Width: | Height: | Size: 687 B |
+4
@@ -0,0 +1,4 @@
|
||||
/*! jQuery v1.11.1 | (c) 2005, 2014 jQuery Foundation, Inc. | jquery.org/license */
|
||||
!function(a,b){"object"==typeof module&&"object"==typeof module.exports?module.exports=a.document?b(a,!0):function(a){if(!a.document)throw new Error("jQuery requires a window with a document");return b(a)}:b(a)}("undefined"!=typeof window?window:this,function(a,b){var c=[],d=c.slice,e=c.concat,f=c.push,g=c.indexOf,h={},i=h.toString,j=h.hasOwnProperty,k={},l="1.11.1",m=function(a,b){return new m.fn.init(a,b)},n=/^[\s\uFEFF\xA0]+|[\s\uFEFF\xA0]+$/g,o=/^-ms-/,p=/-([\da-z])/gi,q=function(a,b){return b.toUpperCase()};m.fn=m.prototype={jquery:l,constructor:m,selector:"",length:0,toArray:function(){return d.call(this)},get:function(a){return null!=a?0>a?this[a+this.length]:this[a]:d.call(this)},pushStack:function(a){var b=m.merge(this.constructor(),a);return b.prevObject=this,b.context=this.context,b},each:function(a,b){return m.each(this,a,b)},map:function(a){return this.pushStack(m.map(this,function(b,c){return a.call(b,c,b)}))},slice:function(){return this.pushStack(d.apply(this,arguments))},first:function(){return this.eq(0)},last:function(){return this.eq(-1)},eq:function(a){var b=this.length,c=+a+(0>a?b:0);return this.pushStack(c>=0&&b>c?[this[c]]:[])},end:function(){return this.prevObject||this.constructor(null)},push:f,sort:c.sort,splice:c.splice},m.extend=m.fn.extend=function(){var a,b,c,d,e,f,g=arguments[0]||{},h=1,i=arguments.length,j=!1;for("boolean"==typeof g&&(j=g,g=arguments[h]||{},h++),"object"==typeof g||m.isFunction(g)||(g={}),h===i&&(g=this,h--);i>h;h++)if(null!=(e=arguments[h]))for(d in e)a=g[d],c=e[d],g!==c&&(j&&c&&(m.isPlainObject(c)||(b=m.isArray(c)))?(b?(b=!1,f=a&&m.isArray(a)?a:[]):f=a&&m.isPlainObject(a)?a:{},g[d]=m.extend(j,f,c)):void 0!==c&&(g[d]=c));return g},m.extend({expando:"jQuery"+(l+Math.random()).replace(/\D/g,""),isReady:!0,error:function(a){throw new Error(a)},noop:function(){},isFunction:function(a){return"function"===m.type(a)},isArray:Array.isArray||function(a){return"array"===m.type(a)},isWindow:function(a){return null!=a&&a==a.window},isNumeric:function(a){return!m.isArray(a)&&a-parseFloat(a)>=0},isEmptyObject:function(a){var b;for(b in a)return!1;return!0},isPlainObject:function(a){var b;if(!a||"object"!==m.type(a)||a.nodeType||m.isWindow(a))return!1;try{if(a.constructor&&!j.call(a,"constructor")&&!j.call(a.constructor.prototype,"isPrototypeOf"))return!1}catch(c){return!1}if(k.ownLast)for(b in a)return j.call(a,b);for(b in a);return void 0===b||j.call(a,b)},type:function(a){return null==a?a+"":"object"==typeof a||"function"==typeof a?h[i.call(a)]||"object":typeof a},globalEval:function(b){b&&m.trim(b)&&(a.execScript||function(b){a.eval.call(a,b)})(b)},camelCase:function(a){return a.replace(o,"ms-").replace(p,q)},nodeName:function(a,b){return a.nodeName&&a.nodeName.toLowerCase()===b.toLowerCase()},each:function(a,b,c){var d,e=0,f=a.length,g=r(a);if(c){if(g){for(;f>e;e++)if(d=b.apply(a[e],c),d===!1)break}else for(e in a)if(d=b.apply(a[e],c),d===!1)break}else if(g){for(;f>e;e++)if(d=b.call(a[e],e,a[e]),d===!1)break}else for(e in a)if(d=b.call(a[e],e,a[e]),d===!1)break;return a},trim:function(a){return null==a?"":(a+"").replace(n,"")},makeArray:function(a,b){var c=b||[];return null!=a&&(r(Object(a))?m.merge(c,"string"==typeof a?[a]:a):f.call(c,a)),c},inArray:function(a,b,c){var d;if(b){if(g)return g.call(b,a,c);for(d=b.length,c=c?0>c?Math.max(0,d+c):c:0;d>c;c++)if(c in b&&b[c]===a)return c}return-1},merge:function(a,b){var c=+b.length,d=0,e=a.length;while(c>d)a[e++]=b[d++];if(c!==c)while(void 0!==b[d])a[e++]=b[d++];return a.length=e,a},grep:function(a,b,c){for(var d,e=[],f=0,g=a.length,h=!c;g>f;f++)d=!b(a[f],f),d!==h&&e.push(a[f]);return e},map:function(a,b,c){var d,f=0,g=a.length,h=r(a),i=[];if(h)for(;g>f;f++)d=b(a[f],f,c),null!=d&&i.push(d);else for(f in a)d=b(a[f],f,c),null!=d&&i.push(d);return e.apply([],i)},guid:1,proxy:function(a,b){var c,e,f;return"string"==typeof b&&(f=a[b],b=a,a=f),m.isFunction(a)?(c=d.call(arguments,2),e=function(){return a.apply(b||this,c.concat(d.call(arguments)))},e.guid=a.guid=a.guid||m.guid++,e):void 0},now:function(){return+new Date},support:k}),m.each("Boolean Number String Function Array Date RegExp Object Error".split(" "),function(a,b){h["[object "+b+"]"]=b.toLowerCase()});function r(a){var b=a.length,c=m.type(a);return"function"===c||m.isWindow(a)?!1:1===a.nodeType&&b?!0:"array"===c||0===b||"number"==typeof b&&b>0&&b-1 in a}var s=function(a){var b,c,d,e,f,g,h,i,j,k,l,m,n,o,p,q,r,s,t,u="sizzle"+-new Date,v=a.document,w=0,x=0,y=gb(),z=gb(),A=gb(),B=function(a,b){return a===b&&(l=!0),0},C="undefined",D=1<<31,E={}.hasOwnProperty,F=[],G=F.pop,H=F.push,I=F.push,J=F.slice,K=F.indexOf||function(a){for(var b=0,c=this.length;c>b;b++)if(this[b]===a)return b;return-1},L="checked|selected|async|autofocus|autoplay|controls|defer|disabled|hidden|ismap|loop|multiple|open|readonly|required|scoped",M="[\\x20\\t\\r\\n\\f]",N="(?:\\\\.|[\\w-]|[^\\x00-\\xa0])+",O=N.replace("w","w#"),P="\\["+M+"*("+N+")(?:"+M+"*([*^$|!~]?=)"+M+"*(?:'((?:\\\\.|[^\\\\'])*)'|\"Line truncated
|
||||
if(k&&j[k]&&(e||j[k].data)||void 0!==d||"string"!=typeof b)return k||(k=i?a[h]=c.pop()||m.guid++:h),j[k]||(j[k]=i?{}:{toJSON:m.noop}),("object"==typeof b||"function"==typeof b)&&(e?j[k]=m.extend(j[k],b):j[k].data=m.extend(j[k].data,b)),g=j[k],e||(g.data||(g.data={}),g=g.data),void 0!==d&&(g[m.camelCase(b)]=d),"string"==typeof b?(f=g[b],null==f&&(f=g[m.camelCase(b)])):f=g,f}}function R(a,b,c){if(m.acceptData(a)){var d,e,f=a.nodeType,g=f?m.cache:a,h=f?a[m.expando]:m.expando;if(g[h]){if(b&&(d=c?g[h]:g[h].data)){m.isArray(b)?b=b.concat(m.map(b,m.camelCase)):b in d?b=[b]:(b=m.camelCase(b),b=b in d?[b]:b.split(" ")),e=b.length;while(e--)delete d[b[e]];if(c?!P(d):!m.isEmptyObject(d))return}(c||(delete g[h].data,P(g[h])))&&(f?m.cleanData([a],!0):k.deleteExpando||g!=g.window?delete g[h]:g[h]=null)}}}m.extend({cache:{},noData:{"applet ":!0,"embed ":!0,"object ":"clsid:D27CDB6E-AE6D-11cf-96B8-444553540000"},hasData:function(a){return a=a.nodeType?m.cache[a[m.expando]]:a[m.expando],!!a&&!P(a)},data:function(a,b,c){return Q(a,b,c)},removeData:function(a,b){return R(a,b)},_data:function(a,b,c){return Q(a,b,c,!0)},_removeData:function(a,b){return R(a,b,!0)}}),m.fn.extend({data:function(a,b){var c,d,e,f=this[0],g=f&&f.attributes;if(void 0===a){if(this.length&&(e=m.data(f),1===f.nodeType&&!m._data(f,"parsedAttrs"))){c=g.length;while(c--)g[c]&&(d=g[c].name,0===d.indexOf("data-")&&(d=m.camelCase(d.slice(5)),O(f,d,e[d])));m._data(f,"parsedAttrs",!0)}return e}return"object"==typeof a?this.each(function(){m.data(this,a)}):arguments.length>1?this.each(function(){m.data(this,a,b)}):f?O(f,a,m.data(f,a)):void 0},removeData:function(a){return this.each(function(){m.removeData(this,a)})}}),m.extend({queue:function(a,b,c){var d;return a?(b=(b||"fx")+"queue",d=m._data(a,b),c&&(!d||m.isArray(c)?d=m._data(a,b,m.makeArray(c)):d.push(c)),d||[]):void 0},dequeue:function(a,b){b=b||"fx";var c=m.queue(a,b),d=c.length,e=c.shift(),f=m._queueHooks(a,b),g=function(){m.dequeue(a,b)};"inprogress"===e&&(e=c.shift(),d--),e&&("fx"===b&&c.unshift("inprogress"),delete f.stop,e.call(a,g,f)),!d&&f&&f.empty.fire()},_queueHooks:function(a,b){var c=b+"queueHooks";return m._data(a,c)||m._data(a,c,{empty:m.Callbacks("once memory").add(function(){m._removeData(a,b+"queue"),m._removeData(a,c)})})}}),m.fn.extend({queue:function(a,b){var c=2;return"string"!=typeof a&&(b=a,a="fx",c--),arguments.length<c?m.queue(this[0],a):void 0===b?this:this.each(function(){var c=m.queue(this,a,b);m._queueHooks(this,a),"fx"===a&&"inprogress"!==c[0]&&m.dequeue(this,a)})},dequeue:function(a){return this.each(function(){m.dequeue(this,a)})},clearQueue:function(a){return this.queue(a||"fx",[])},promise:function(a,b){var c,d=1,e=m.Deferred(),f=this,g=this.length,h=function(){--d||e.resolveWith(f,[f])};"string"!=typeof a&&(b=a,a=void 0),a=a||"fx";while(g--)c=m._data(f[g],a+"queueHooks"),c&&c.empty&&(d++,c.empty.add(h));return h(),e.promise(b)}});var S=/[+-]?(?:\d*\.|)\d+(?:[eE][+-]?\d+|)/.source,T=["Top","Right","Bottom","Left"],U=function(a,b){return a=b||a,"none"===m.css(a,"display")||!m.contains(a.ownerDocument,a)},V=m.access=function(a,b,c,d,e,f,g){var h=0,i=a.length,j=null==c;if("object"===m.type(c)){e=!0;for(h in c)m.access(a,b,h,c[h],!0,f,g)}else if(void 0!==d&&(e=!0,m.isFunction(d)||(g=!0),j&&(g?(b.call(a,d),b=null):(j=b,b=function(a,b,c){return j.call(m(a),c)})),b))for(;i>h;h++)b(a[h],c,g?d:d.call(a[h],h,b(a[h],c)));return e?a:j?b.call(a):i?b(a[0],c):f},W=/^(?:checkbox|radio)$/i;!function(){var a=y.createElement("input"),b=y.createElement("div"),c=y.createDocumentFragment();if(b.innerHTML=" <link/><table></table><a href='/a'>a</a><input type='checkbox'/>",k.leadingWhitespace=3===b.firstChild.nodeType,k.tbody=!b.getElementsByTagName("tbody").length,k.htmlSerialize=!!b.getElementsByTagName("link").length,k.html5Clone="<:nav></:nav>"!==y.createElement("nav").cloneNode(!0).outerHTML,a.type="checkbox",a.checked=!0,c.appendChild(a),k.appendChecked=a.checked,b.innerHTML="<textarea>x</textarea>",k.noCloneChecked=!!b.cloneNode(!0).lastChild.defaultValue,c.appendChild(b),b.innerHTML="<input type='radio' checked='checked' name='t'/>",k.checkClone=b.cloneNode(!0).cloneNode(!0).lastChild.checked,k.noCloneEvent=!0,b.attachEvent&&(b.attachEvent("onclick",function(){k.noCloneEvent=!1}),b.cloneNode(!0).click()),null==k.deleteExpando){k.deleteExpando=!0;try{delete b.test}catch(d){k.deleteExpando=!1}}}(),function(){var b,c,d=y.createElement("div");for(b in{submit:!0,change:!0,focusin:!0})c="on"+b,(k[b+"Bubbles"]=c in a)||(d.setAttribute(c,"t"),k[b+"Bubbles"]=d.attributes[c].expando===!1);d=null}();var X=/^(?:input|select|textarea)$/i,Y=/^key/,Z=/^(?:mouse|pointer|contextmenu)|click/,$=/^(?:focusinfocus|focusoutblur)$/,_=/^([^.]*)(?:\.(.+)|)$/;function ab(){return!0}function bb(){return!1}function cb(){try{return y.activeElement}catch(a){}}m.event={global:{},add:function(a,b,c,d,e){var f,g,h,i,j,k,l,n,o,p,q,r=m._data(a);if(r){c.handler&&(i=c,c=i.handler,e=i.selector),c.guid||(c.guid=m.guid++),(g=rLine truncated
|
||||
},cur:function(){var a=Zb.propHooks[this.prop];return a&&a.get?a.get(this):Zb.propHooks._default.get(this)},run:function(a){var b,c=Zb.propHooks[this.prop];return this.pos=b=this.options.duration?m.easing[this.easing](a,this.options.duration*a,0,1,this.options.duration):a,this.now=(this.end-this.start)*b+this.start,this.options.step&&this.options.step.call(this.elem,this.now,this),c&&c.set?c.set(this):Zb.propHooks._default.set(this),this}},Zb.prototype.init.prototype=Zb.prototype,Zb.propHooks={_default:{get:function(a){var b;return null==a.elem[a.prop]||a.elem.style&&null!=a.elem.style[a.prop]?(b=m.css(a.elem,a.prop,""),b&&"auto"!==b?b:0):a.elem[a.prop]},set:function(a){m.fx.step[a.prop]?m.fx.step[a.prop](a):a.elem.style&&(null!=a.elem.style[m.cssProps[a.prop]]||m.cssHooks[a.prop])?m.style(a.elem,a.prop,a.now+a.unit):a.elem[a.prop]=a.now}}},Zb.propHooks.scrollTop=Zb.propHooks.scrollLeft={set:function(a){a.elem.nodeType&&a.elem.parentNode&&(a.elem[a.prop]=a.now)}},m.easing={linear:function(a){return a},swing:function(a){return.5-Math.cos(a*Math.PI)/2}},m.fx=Zb.prototype.init,m.fx.step={};var $b,_b,ac=/^(?:toggle|show|hide)$/,bc=new RegExp("^(?:([+-])=|)("+S+")([a-z%]*)$","i"),cc=/queueHooks$/,dc=[ic],ec={"*":[function(a,b){var c=this.createTween(a,b),d=c.cur(),e=bc.exec(b),f=e&&e[3]||(m.cssNumber[a]?"":"px"),g=(m.cssNumber[a]||"px"!==f&&+d)&&bc.exec(m.css(c.elem,a)),h=1,i=20;if(g&&g[3]!==f){f=f||g[3],e=e||[],g=+d||1;do h=h||".5",g/=h,m.style(c.elem,a,g+f);while(h!==(h=c.cur()/d)&&1!==h&&--i)}return e&&(g=c.start=+g||+d||0,c.unit=f,c.end=e[1]?g+(e[1]+1)*e[2]:+e[2]),c}]};function fc(){return setTimeout(function(){$b=void 0}),$b=m.now()}function gc(a,b){var c,d={height:a},e=0;for(b=b?1:0;4>e;e+=2-b)c=T[e],d["margin"+c]=d["padding"+c]=a;return b&&(d.opacity=d.width=a),d}function hc(a,b,c){for(var d,e=(ec[b]||[]).concat(ec["*"]),f=0,g=e.length;g>f;f++)if(d=e[f].call(c,b,a))return d}function ic(a,b,c){var d,e,f,g,h,i,j,l,n=this,o={},p=a.style,q=a.nodeType&&U(a),r=m._data(a,"fxshow");c.queue||(h=m._queueHooks(a,"fx"),null==h.unqueued&&(h.unqueued=0,i=h.empty.fire,h.empty.fire=function(){h.unqueued||i()}),h.unqueued++,n.always(function(){n.always(function(){h.unqueued--,m.queue(a,"fx").length||h.empty.fire()})})),1===a.nodeType&&("height"in b||"width"in b)&&(c.overflow=[p.overflow,p.overflowX,p.overflowY],j=m.css(a,"display"),l="none"===j?m._data(a,"olddisplay")||Fb(a.nodeName):j,"inline"===l&&"none"===m.css(a,"float")&&(k.inlineBlockNeedsLayout&&"inline"!==Fb(a.nodeName)?p.zoom=1:p.display="inline-block")),c.overflow&&(p.overflow="hidden",k.shrinkWrapBlocks()||n.always(function(){p.overflow=c.overflow[0],p.overflowX=c.overflow[1],p.overflowY=c.overflow[2]}));for(d in b)if(e=b[d],ac.exec(e)){if(delete b[d],f=f||"toggle"===e,e===(q?"hide":"show")){if("show"!==e||!r||void 0===r[d])continue;q=!0}o[d]=r&&r[d]||m.style(a,d)}else j=void 0;if(m.isEmptyObject(o))"inline"===("none"===j?Fb(a.nodeName):j)&&(p.display=j);else{r?"hidden"in r&&(q=r.hidden):r=m._data(a,"fxshow",{}),f&&(r.hidden=!q),q?m(a).show():n.done(function(){m(a).hide()}),n.done(function(){var b;m._removeData(a,"fxshow");for(b in o)m.style(a,b,o[b])});for(d in o)g=hc(q?r[d]:0,d,n),d in r||(r[d]=g.start,q&&(g.end=g.start,g.start="width"===d||"height"===d?1:0))}}function jc(a,b){var c,d,e,f,g;for(c in a)if(d=m.camelCase(c),e=b[d],f=a[c],m.isArray(f)&&(e=f[1],f=a[c]=f[0]),c!==d&&(a[d]=f,delete a[c]),g=m.cssHooks[d],g&&"expand"in g){f=g.expand(f),delete a[d];for(c in f)c in a||(a[c]=f[c],b[c]=e)}else b[d]=e}function kc(a,b,c){var d,e,f=0,g=dc.length,h=m.Deferred().always(function(){delete i.elem}),i=function(){if(e)return!1;for(var b=$b||fc(),c=Math.max(0,j.startTime+j.duration-b),d=c/j.duration||0,f=1-d,g=0,i=j.tweens.length;i>g;g++)j.tweens[g].run(f);return h.notifyWith(a,[j,f,c]),1>f&&i?c:(h.resolveWith(a,[j]),!1)},j=h.promise({elem:a,props:m.extend({},b),opts:m.extend(!0,{specialEasing:{}},c),originalProperties:b,originalOptions:c,startTime:$b||fc(),duration:c.duration,tweens:[],createTween:function(b,c){var d=m.Tween(a,j.opts,b,c,j.opts.specialEasing[b]||j.opts.easing);return j.tweens.push(d),d},stop:function(b){var c=0,d=b?j.tweens.length:0;if(e)return this;for(e=!0;d>c;c++)j.tweens[c].run(1);return b?h.resolveWith(a,[j,b]):h.rejectWith(a,[j,b]),this}}),k=j.props;for(jc(k,j.opts.specialEasing);g>f;f++)if(d=dc[f].call(j,a,k,j.opts))return d;return m.map(k,hc,j),m.isFunction(j.opts.start)&&j.opts.start.call(a,j),m.fx.timer(m.extend(i,{elem:a,anim:j,queue:j.opts.queue})),j.progress(j.opts.progress).done(j.opts.done,j.opts.complete).fail(j.opts.fail).always(j.opts.always)}m.Animation=m.extend(kc,{tweener:function(a,b){m.isFunction(a)?(b=a,a=["*"]):a=a.split(" ");for(var c,d=0,e=a.length;e>d;d++)c=a[d],ec[c]=ec[c]||[],ec[c].unshift(b)},prefilter:function(a,b){b?dc.unshift(a):dc.push(a)}}),m.speed=function(a,b,c){var d=a&&"object"==typeof a?m.extend({},a):{complete:c||!c&&b||m.isFunction(a)&&a,duration:a,easing:c&&b||b&&!m.isFunction(b)&&b};return d.duration=m.fLine truncated
|
||||
Whitespace-only changes.
@@ -0,0 +1,29 @@
|
||||
import org.specs2.mutable._
|
||||
import org.specs2.runner._
|
||||
import org.junit.runner._
|
||||
|
||||
import play.api.test._
|
||||
import play.api.test.Helpers._
|
||||
|
||||
/**
|
||||
* Add your spec here.
|
||||
* You can mock out a whole application including requests, plugins etc.
|
||||
* For more information, consult the wiki.
|
||||
*/
|
||||
@RunWith(classOf[JUnitRunner])
|
||||
class ApplicationSpec extends Specification {
|
||||
|
||||
"Application" should {
|
||||
|
||||
"send 404 on a bad request" in new WithApplication{
|
||||
route(FakeRequest(GET, "/boum")) must beNone
|
||||
}
|
||||
|
||||
"render the index page" in new WithApplication{
|
||||
val home = route(FakeRequest(GET, "/")).get
|
||||
|
||||
status(home) must equalTo(OK)
|
||||
contentType(home) must beSome.which(_ == "text/html")
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,24 @@
|
||||
import org.specs2.mutable._
|
||||
import org.specs2.runner._
|
||||
import org.junit.runner._
|
||||
|
||||
import play.api.test._
|
||||
import play.api.test.Helpers._
|
||||
|
||||
/**
|
||||
* add your integration spec here.
|
||||
* An integration test will fire up a whole play application in a real (or headless) browser
|
||||
*/
|
||||
@RunWith(classOf[JUnitRunner])
|
||||
class IntegrationSpec extends Specification {
|
||||
|
||||
"Application" should {
|
||||
|
||||
"work from within a browser" in new WithBrowser {
|
||||
|
||||
browser.goTo("http://localhost:" + port)
|
||||
|
||||
browser.pageSource must contain("Add Person")
|
||||
}
|
||||
}
|
||||
}
|
||||
Reference in new issue
Block a user