Showing
19 changed files
with
455 additions
and
0 deletions
app/controllers/HomeController.java
0 → 100644
| 1 | +package controllers; | ||
| 2 | + | ||
| 3 | +import play.mvc.*; | ||
| 4 | + | ||
| 5 | +/** | ||
| 6 | + * This controller contains an action to handle HTTP requests | ||
| 7 | + * to the application's home page. | ||
| 8 | + */ | ||
| 9 | +public class HomeController extends Controller { | ||
| 10 | + | ||
| 11 | + /** | ||
| 12 | + * An action that renders an HTML page with a welcome message. | ||
| 13 | + * The configuration in the <code>routes</code> file means that | ||
| 14 | + * this method will be called when the application receives a | ||
| 15 | + * <code>GET</code> request with a path of <code>/</code>. | ||
| 16 | + */ | ||
| 17 | + public Result index() { | ||
| 18 | + return ok(views.html.index.render()); | ||
| 19 | + } | ||
| 20 | + | ||
| 21 | +} |
app/views/index.scala.html
0 → 100644
app/views/main.scala.html
0 → 100644
| 1 | +@* | ||
| 2 | + * This template is called from the `index` template. This template | ||
| 3 | + * handles the rendering of the page header and body tags. It takes | ||
| 4 | + * two arguments, a `String` for the title of the page and an `Html` | ||
| 5 | + * object to insert into the body of the page. | ||
| 6 | + *@ | ||
| 7 | +@(title: String)(content: Html) | ||
| 8 | + | ||
| 9 | +<!DOCTYPE html> | ||
| 10 | +<html lang="en"> | ||
| 11 | + <head> | ||
| 12 | + @* Here's where we render the page title `String`. *@ | ||
| 13 | + <title>@title</title> | ||
| 14 | + <link rel="stylesheet" media="screen" href="@routes.Assets.versioned("stylesheets/main.css")"> | ||
| 15 | + <link rel="shortcut icon" type="image/png" href="@routes.Assets.versioned("images/favicon.png")"> | ||
| 16 | + </head> | ||
| 17 | + <body> | ||
| 18 | + @* And here's where we render the `Html` object containing | ||
| 19 | + * the page content. *@ | ||
| 20 | + @content | ||
| 21 | + | ||
| 22 | + <script src="@routes.Assets.versioned("javascripts/main.js")" type="text/javascript"></script> | ||
| 23 | + </body> | ||
| 24 | +</html> |
build.gradle
0 → 100644
| 1 | +plugins { | ||
| 2 | + id 'play' | ||
| 3 | + id 'idea' | ||
| 4 | +} | ||
| 5 | + | ||
| 6 | +def playVersion = '2.6.12' | ||
| 7 | +def scalaVersion = System.getProperty("scala.binary.version", /* default = */ "2.12") | ||
| 8 | + | ||
| 9 | +model { | ||
| 10 | + components { | ||
| 11 | + play { | ||
| 12 | + platform play: playVersion, scala: scalaVersion, java: '1.8' | ||
| 13 | + injectedRoutesGenerator = true | ||
| 14 | + | ||
| 15 | + sources { | ||
| 16 | + twirlTemplates { | ||
| 17 | + defaultImports = TwirlImports.JAVA | ||
| 18 | + } | ||
| 19 | + } | ||
| 20 | + } | ||
| 21 | + } | ||
| 22 | +} | ||
| 23 | + | ||
| 24 | +dependencies { | ||
| 25 | + play "com.typesafe.play:play-guice_$scalaVersion:$playVersion" | ||
| 26 | + play "com.typesafe.play:play-logback_$scalaVersion:$playVersion" | ||
| 27 | + play "com.typesafe.play:filters-helpers_$scalaVersion:$playVersion" | ||
| 28 | +} | ||
| 29 | + | ||
| 30 | +repositories { | ||
| 31 | + jcenter() | ||
| 32 | + maven { | ||
| 33 | + name "lightbend-maven-releases" | ||
| 34 | + url "https://repo.lightbend.com/lightbend/maven-release" | ||
| 35 | + } | ||
| 36 | + ivy { | ||
| 37 | + name "lightbend-ivy-release" | ||
| 38 | + url "https://repo.lightbend.com/lightbend/ivy-releases" | ||
| 39 | + layout "ivy" | ||
| 40 | + } | ||
| 41 | +} |
build.sbt
0 → 100644
conf/application.conf
0 → 100644
conf/logback.xml
0 → 100644
| 1 | +<!-- https://www.playframework.com/documentation/latest/SettingsLogger --> | ||
| 2 | +<configuration> | ||
| 3 | + | ||
| 4 | + <conversionRule conversionWord="coloredLevel" converterClass="play.api.libs.logback.ColoredLevel" /> | ||
| 5 | + | ||
| 6 | + <appender name="FILE" class="ch.qos.logback.core.FileAppender"> | ||
| 7 | + <file>${application.home:-.}/logs/application.log</file> | ||
| 8 | + <encoder> | ||
| 9 | + <pattern>%date [%level] from %logger in %thread - %message%n%xException</pattern> | ||
| 10 | + </encoder> | ||
| 11 | + </appender> | ||
| 12 | + | ||
| 13 | + <appender name="STDOUT" class="ch.qos.logback.core.ConsoleAppender"> | ||
| 14 | + <encoder> | ||
| 15 | + <pattern>%coloredLevel %logger{15} - %message%n%xException{10}</pattern> | ||
| 16 | + </encoder> | ||
| 17 | + </appender> | ||
| 18 | + | ||
| 19 | + <appender name="ASYNCFILE" class="ch.qos.logback.classic.AsyncAppender"> | ||
| 20 | + <appender-ref ref="FILE" /> | ||
| 21 | + </appender> | ||
| 22 | + | ||
| 23 | + <appender name="ASYNCSTDOUT" class="ch.qos.logback.classic.AsyncAppender"> | ||
| 24 | + <appender-ref ref="STDOUT" /> | ||
| 25 | + </appender> | ||
| 26 | + | ||
| 27 | + <logger name="play" level="INFO" /> | ||
| 28 | + <logger name="application" level="DEBUG" /> | ||
| 29 | + | ||
| 30 | + <!-- Off these ones as they are annoying, and anyway we manage configuration ourselves --> | ||
| 31 | + <logger name="com.avaje.ebean.config.PropertyMapLoader" level="OFF" /> | ||
| 32 | + <logger name="com.avaje.ebeaninternal.server.core.XmlConfigLoader" level="OFF" /> | ||
| 33 | + <logger name="com.avaje.ebeaninternal.server.lib.BackgroundThread" level="OFF" /> | ||
| 34 | + <logger name="com.gargoylesoftware.htmlunit.javascript" level="OFF" /> | ||
| 35 | + | ||
| 36 | + <root level="WARN"> | ||
| 37 | + <appender-ref ref="ASYNCFILE" /> | ||
| 38 | + <appender-ref ref="ASYNCSTDOUT" /> | ||
| 39 | + </root> | ||
| 40 | + | ||
| 41 | +</configuration> |
conf/routes
0 → 100644
| 1 | +# Routes | ||
| 2 | +# This file defines all application routes (Higher priority routes first) | ||
| 3 | +# ~~~~ | ||
| 4 | + | ||
| 5 | +# An example controller showing a sample home page | ||
| 6 | +GET / controllers.HomeController.index | ||
| 7 | + | ||
| 8 | +# Map static resources from the /public folder to the /assets URL path | ||
| 9 | +GET /assets/*file controllers.Assets.versioned(path="/public", file: Asset) |
gradle/wrapper/gradle-wrapper.jar
0 → 100644
No preview for this file type
gradle/wrapper/gradle-wrapper.properties
0 → 100644
gradlew
0 → 100755
| 1 | +#!/usr/bin/env sh | ||
| 2 | + | ||
| 3 | +############################################################################## | ||
| 4 | +## | ||
| 5 | +## Gradle start up script for UN*X | ||
| 6 | +## | ||
| 7 | +############################################################################## | ||
| 8 | + | ||
| 9 | +# Attempt to set APP_HOME | ||
| 10 | +# Resolve links: $0 may be a link | ||
| 11 | +PRG="$0" | ||
| 12 | +# Need this for relative symlinks. | ||
| 13 | +while [ -h "$PRG" ] ; do | ||
| 14 | + ls=`ls -ld "$PRG"` | ||
| 15 | + link=`expr "$ls" : '.*-> \(.*\)$'` | ||
| 16 | + if expr "$link" : '/.*' > /dev/null; then | ||
| 17 | + PRG="$link" | ||
| 18 | + else | ||
| 19 | + PRG=`dirname "$PRG"`"/$link" | ||
| 20 | + fi | ||
| 21 | +done | ||
| 22 | +SAVED="`pwd`" | ||
| 23 | +cd "`dirname \"$PRG\"`/" >/dev/null | ||
| 24 | +APP_HOME="`pwd -P`" | ||
| 25 | +cd "$SAVED" >/dev/null | ||
| 26 | + | ||
| 27 | +APP_NAME="Gradle" | ||
| 28 | +APP_BASE_NAME=`basename "$0"` | ||
| 29 | + | ||
| 30 | +# Add default JVM options here. You can also use JAVA_OPTS and GRADLE_OPTS to pass JVM options to this script. | ||
| 31 | +DEFAULT_JVM_OPTS="" | ||
| 32 | + | ||
| 33 | +# Use the maximum available, or set MAX_FD != -1 to use that value. | ||
| 34 | +MAX_FD="maximum" | ||
| 35 | + | ||
| 36 | +warn () { | ||
| 37 | + echo "$*" | ||
| 38 | +} | ||
| 39 | + | ||
| 40 | +die () { | ||
| 41 | + echo | ||
| 42 | + echo "$*" | ||
| 43 | + echo | ||
| 44 | + exit 1 | ||
| 45 | +} | ||
| 46 | + | ||
| 47 | +# OS specific support (must be 'true' or 'false'). | ||
| 48 | +cygwin=false | ||
| 49 | +msys=false | ||
| 50 | +darwin=false | ||
| 51 | +nonstop=false | ||
| 52 | +case "`uname`" in | ||
| 53 | + CYGWIN* ) | ||
| 54 | + cygwin=true | ||
| 55 | + ;; | ||
| 56 | + Darwin* ) | ||
| 57 | + darwin=true | ||
| 58 | + ;; | ||
| 59 | + MINGW* ) | ||
| 60 | + msys=true | ||
| 61 | + ;; | ||
| 62 | + NONSTOP* ) | ||
| 63 | + nonstop=true | ||
| 64 | + ;; | ||
| 65 | +esac | ||
| 66 | + | ||
| 67 | +CLASSPATH=$APP_HOME/gradle/wrapper/gradle-wrapper.jar | ||
| 68 | + | ||
| 69 | +# Determine the Java command to use to start the JVM. | ||
| 70 | +if [ -n "$JAVA_HOME" ] ; then | ||
| 71 | + if [ -x "$JAVA_HOME/jre/sh/java" ] ; then | ||
| 72 | + # IBM's JDK on AIX uses strange locations for the executables | ||
| 73 | + JAVACMD="$JAVA_HOME/jre/sh/java" | ||
| 74 | + else | ||
| 75 | + JAVACMD="$JAVA_HOME/bin/java" | ||
| 76 | + fi | ||
| 77 | + if [ ! -x "$JAVACMD" ] ; then | ||
| 78 | + die "ERROR: JAVA_HOME is set to an invalid directory: $JAVA_HOME | ||
| 79 | + | ||
| 80 | +Please set the JAVA_HOME variable in your environment to match the | ||
| 81 | +location of your Java installation." | ||
| 82 | + fi | ||
| 83 | +else | ||
| 84 | + JAVACMD="java" | ||
| 85 | + which java >/dev/null 2>&1 || die "ERROR: JAVA_HOME is not set and no 'java' command could be found in your PATH. | ||
| 86 | + | ||
| 87 | +Please set the JAVA_HOME variable in your environment to match the | ||
| 88 | +location of your Java installation." | ||
| 89 | +fi | ||
| 90 | + | ||
| 91 | +# Increase the maximum file descriptors if we can. | ||
| 92 | +if [ "$cygwin" = "false" -a "$darwin" = "false" -a "$nonstop" = "false" ] ; then | ||
| 93 | + MAX_FD_LIMIT=`ulimit -H -n` | ||
| 94 | + if [ $? -eq 0 ] ; then | ||
| 95 | + if [ "$MAX_FD" = "maximum" -o "$MAX_FD" = "max" ] ; then | ||
| 96 | + MAX_FD="$MAX_FD_LIMIT" | ||
| 97 | + fi | ||
| 98 | + ulimit -n $MAX_FD | ||
| 99 | + if [ $? -ne 0 ] ; then | ||
| 100 | + warn "Could not set maximum file descriptor limit: $MAX_FD" | ||
| 101 | + fi | ||
| 102 | + else | ||
| 103 | + warn "Could not query maximum file descriptor limit: $MAX_FD_LIMIT" | ||
| 104 | + fi | ||
| 105 | +fi | ||
| 106 | + | ||
| 107 | +# For Darwin, add options to specify how the application appears in the dock | ||
| 108 | +if $darwin; then | ||
| 109 | + GRADLE_OPTS="$GRADLE_OPTS \"-Xdock:name=$APP_NAME\" \"-Xdock:icon=$APP_HOME/media/gradle.icns\"" | ||
| 110 | +fi | ||
| 111 | + | ||
| 112 | +# For Cygwin, switch paths to Windows format before running java | ||
| 113 | +if $cygwin ; then | ||
| 114 | + APP_HOME=`cygpath --path --mixed "$APP_HOME"` | ||
| 115 | + CLASSPATH=`cygpath --path --mixed "$CLASSPATH"` | ||
| 116 | + JAVACMD=`cygpath --unix "$JAVACMD"` | ||
| 117 | + | ||
| 118 | + # We build the pattern for arguments to be converted via cygpath | ||
| 119 | + ROOTDIRSRAW=`find -L / -maxdepth 1 -mindepth 1 -type d 2>/dev/null` | ||
| 120 | + SEP="" | ||
| 121 | + for dir in $ROOTDIRSRAW ; do | ||
| 122 | + ROOTDIRS="$ROOTDIRS$SEP$dir" | ||
| 123 | + SEP="|" | ||
| 124 | + done | ||
| 125 | + OURCYGPATTERN="(^($ROOTDIRS))" | ||
| 126 | + # Add a user-defined pattern to the cygpath arguments | ||
| 127 | + if [ "$GRADLE_CYGPATTERN" != "" ] ; then | ||
| 128 | + OURCYGPATTERN="$OURCYGPATTERN|($GRADLE_CYGPATTERN)" | ||
| 129 | + fi | ||
| 130 | + # Now convert the arguments - kludge to limit ourselves to /bin/sh | ||
| 131 | + i=0 | ||
| 132 | + for arg in "$@" ; do | ||
| 133 | + CHECK=`echo "$arg"|egrep -c "$OURCYGPATTERN" -` | ||
| 134 | + CHECK2=`echo "$arg"|egrep -c "^-"` ### Determine if an option | ||
| 135 | + | ||
| 136 | + if [ $CHECK -ne 0 ] && [ $CHECK2 -eq 0 ] ; then ### Added a condition | ||
| 137 | + eval `echo args$i`=`cygpath --path --ignore --mixed "$arg"` | ||
| 138 | + else | ||
| 139 | + eval `echo args$i`="\"$arg\"" | ||
| 140 | + fi | ||
| 141 | + i=$((i+1)) | ||
| 142 | + done | ||
| 143 | + case $i in | ||
| 144 | + (0) set -- ;; | ||
| 145 | + (1) set -- "$args0" ;; | ||
| 146 | + (2) set -- "$args0" "$args1" ;; | ||
| 147 | + (3) set -- "$args0" "$args1" "$args2" ;; | ||
| 148 | + (4) set -- "$args0" "$args1" "$args2" "$args3" ;; | ||
| 149 | + (5) set -- "$args0" "$args1" "$args2" "$args3" "$args4" ;; | ||
| 150 | + (6) set -- "$args0" "$args1" "$args2" "$args3" "$args4" "$args5" ;; | ||
| 151 | + (7) set -- "$args0" "$args1" "$args2" "$args3" "$args4" "$args5" "$args6" ;; | ||
| 152 | + (8) set -- "$args0" "$args1" "$args2" "$args3" "$args4" "$args5" "$args6" "$args7" ;; | ||
| 153 | + (9) set -- "$args0" "$args1" "$args2" "$args3" "$args4" "$args5" "$args6" "$args7" "$args8" ;; | ||
| 154 | + esac | ||
| 155 | +fi | ||
| 156 | + | ||
| 157 | +# Escape application args | ||
| 158 | +save () { | ||
| 159 | + for i do printf %s\\n "$i" | sed "s/'/'\\\\''/g;1s/^/'/;\$s/\$/' \\\\/" ; done | ||
| 160 | + echo " " | ||
| 161 | +} | ||
| 162 | +APP_ARGS=$(save "$@") | ||
| 163 | + | ||
| 164 | +# Collect all arguments for the java command, following the shell quoting and substitution rules | ||
| 165 | +eval set -- $DEFAULT_JVM_OPTS $JAVA_OPTS $GRADLE_OPTS "\"-Dorg.gradle.appname=$APP_BASE_NAME\"" -classpath "\"$CLASSPATH\"" org.gradle.wrapper.GradleWrapperMain "$APP_ARGS" | ||
| 166 | + | ||
| 167 | +# by default we should be in the correct project dir, but when run from Finder on Mac, the cwd is wrong | ||
| 168 | +if [ "$(uname)" = "Darwin" ] && [ "$HOME" = "$PWD" ]; then | ||
| 169 | + cd "$(dirname "$0")" | ||
| 170 | +fi | ||
| 171 | + | ||
| 172 | +exec "$JAVACMD" "$@" |
gradlew.bat
0 → 100644
| 1 | +@if "%DEBUG%" == "" @echo off | ||
| 2 | +@rem ########################################################################## | ||
| 3 | +@rem | ||
| 4 | +@rem Gradle startup script for Windows | ||
| 5 | +@rem | ||
| 6 | +@rem ########################################################################## | ||
| 7 | + | ||
| 8 | +@rem Set local scope for the variables with windows NT shell | ||
| 9 | +if "%OS%"=="Windows_NT" setlocal | ||
| 10 | + | ||
| 11 | +set DIRNAME=%~dp0 | ||
| 12 | +if "%DIRNAME%" == "" set DIRNAME=. | ||
| 13 | +set APP_BASE_NAME=%~n0 | ||
| 14 | +set APP_HOME=%DIRNAME% | ||
| 15 | + | ||
| 16 | +@rem Add default JVM options here. You can also use JAVA_OPTS and GRADLE_OPTS to pass JVM options to this script. | ||
| 17 | +set DEFAULT_JVM_OPTS= | ||
| 18 | + | ||
| 19 | +@rem Find java.exe | ||
| 20 | +if defined JAVA_HOME goto findJavaFromJavaHome | ||
| 21 | + | ||
| 22 | +set JAVA_EXE=java.exe | ||
| 23 | +%JAVA_EXE% -version >NUL 2>&1 | ||
| 24 | +if "%ERRORLEVEL%" == "0" goto init | ||
| 25 | + | ||
| 26 | +echo. | ||
| 27 | +echo ERROR: JAVA_HOME is not set and no 'java' command could be found in your PATH. | ||
| 28 | +echo. | ||
| 29 | +echo Please set the JAVA_HOME variable in your environment to match the | ||
| 30 | +echo location of your Java installation. | ||
| 31 | + | ||
| 32 | +goto fail | ||
| 33 | + | ||
| 34 | +:findJavaFromJavaHome | ||
| 35 | +set JAVA_HOME=%JAVA_HOME:"=% | ||
| 36 | +set JAVA_EXE=%JAVA_HOME%/bin/java.exe | ||
| 37 | + | ||
| 38 | +if exist "%JAVA_EXE%" goto init | ||
| 39 | + | ||
| 40 | +echo. | ||
| 41 | +echo ERROR: JAVA_HOME is set to an invalid directory: %JAVA_HOME% | ||
| 42 | +echo. | ||
| 43 | +echo Please set the JAVA_HOME variable in your environment to match the | ||
| 44 | +echo location of your Java installation. | ||
| 45 | + | ||
| 46 | +goto fail | ||
| 47 | + | ||
| 48 | +:init | ||
| 49 | +@rem Get command-line arguments, handling Windows variants | ||
| 50 | + | ||
| 51 | +if not "%OS%" == "Windows_NT" goto win9xME_args | ||
| 52 | + | ||
| 53 | +:win9xME_args | ||
| 54 | +@rem Slurp the command line arguments. | ||
| 55 | +set CMD_LINE_ARGS= | ||
| 56 | +set _SKIP=2 | ||
| 57 | + | ||
| 58 | +:win9xME_args_slurp | ||
| 59 | +if "x%~1" == "x" goto execute | ||
| 60 | + | ||
| 61 | +set CMD_LINE_ARGS=%* | ||
| 62 | + | ||
| 63 | +:execute | ||
| 64 | +@rem Setup the command line | ||
| 65 | + | ||
| 66 | +set CLASSPATH=%APP_HOME%\gradle\wrapper\gradle-wrapper.jar | ||
| 67 | + | ||
| 68 | +@rem Execute Gradle | ||
| 69 | +"%JAVA_EXE%" %DEFAULT_JVM_OPTS% %JAVA_OPTS% %GRADLE_OPTS% "-Dorg.gradle.appname=%APP_BASE_NAME%" -classpath "%CLASSPATH%" org.gradle.wrapper.GradleWrapperMain %CMD_LINE_ARGS% | ||
| 70 | + | ||
| 71 | +:end | ||
| 72 | +@rem End local scope for the variables with windows NT shell | ||
| 73 | +if "%ERRORLEVEL%"=="0" goto mainEnd | ||
| 74 | + | ||
| 75 | +:fail | ||
| 76 | +rem Set variable GRADLE_EXIT_CONSOLE if you need the _script_ return code instead of | ||
| 77 | +rem the _cmd.exe /c_ return code! | ||
| 78 | +if not "" == "%GRADLE_EXIT_CONSOLE%" exit 1 | ||
| 79 | +exit /b 1 | ||
| 80 | + | ||
| 81 | +:mainEnd | ||
| 82 | +if "%OS%"=="Windows_NT" endlocal | ||
| 83 | + | ||
| 84 | +:omega |
project/build.properties
0 → 100644
| 1 | +sbt.version=1.0.4 |
project/plugins.sbt
0 → 100644
project/scaffold.sbt
0 → 100644
public/images/favicon.png
0 → 100644
687 Bytes
public/javascripts/main.js
0 → 100644
File mode changed
public/stylesheets/main.css
0 → 100644
File mode changed
test/controllers/HomeControllerTest.java
0 → 100644
| 1 | +package controllers; | ||
| 2 | + | ||
| 3 | +import org.junit.Test; | ||
| 4 | +import play.Application; | ||
| 5 | +import play.inject.guice.GuiceApplicationBuilder; | ||
| 6 | +import play.mvc.Http; | ||
| 7 | +import play.mvc.Result; | ||
| 8 | +import play.test.WithApplication; | ||
| 9 | + | ||
| 10 | +import static org.junit.Assert.assertEquals; | ||
| 11 | +import static play.mvc.Http.Status.OK; | ||
| 12 | +import static play.test.Helpers.GET; | ||
| 13 | +import static play.test.Helpers.route; | ||
| 14 | + | ||
| 15 | +public class HomeControllerTest extends WithApplication { | ||
| 16 | + | ||
| 17 | + @Override | ||
| 18 | + protected Application provideApplication() { | ||
| 19 | + return new GuiceApplicationBuilder().build(); | ||
| 20 | + } | ||
| 21 | + | ||
| 22 | + @Test | ||
| 23 | + public void testIndex() { | ||
| 24 | + Http.RequestBuilder request = new Http.RequestBuilder() | ||
| 25 | + .method(GET) | ||
| 26 | + .uri("/"); | ||
| 27 | + | ||
| 28 | + Result result = route(app, request); | ||
| 29 | + assertEquals(OK, result.status()); | ||
| 30 | + } | ||
| 31 | + | ||
| 32 | +} |
-
Please register or login to post a comment