Martin Schipflinger

initial commit

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 +}
1 +@()
2 +
3 +@main("Welcome to Play") {
4 + <h1>Welcome to Play!</h1>
5 +}
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>
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 +}
1 +name := """play-java-seed"""
2 +organization := "com.example"
3 +
4 +version := "1.0-SNAPSHOT"
5 +
6 +lazy val root = (project in file(".")).enablePlugins(PlayJava)
7 +
8 +scalaVersion := "2.12.4"
9 +
10 +libraryDependencies += guice
1 +# This is the main configuration file for the application.
2 +# https://www.playframework.com/documentation/latest/ConfigFile
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>
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)
No preview for this file type
1 +distributionUrl=https\://services.gradle.org/distributions/gradle-4.4-bin.zip
2 +distributionBase=GRADLE_USER_HOME
3 +distributionPath=wrapper/dists
4 +zipStorePath=wrapper/dists
5 +zipStoreBase=GRADLE_USER_HOME
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" "$@"
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
1 +sbt.version=1.0.4
1 +// The Play plugin
2 +addSbtPlugin("com.typesafe.play" % "sbt-plugin" % "2.6.12")
1 +// Defines scaffolding (found under .g8 folder)
2 +// http://www.foundweekends.org/giter8/scaffolding.html
3 +// sbt "g8Scaffold form"
4 +
5 +// not working yet with sbt 1
6 +//addSbtPlugin("org.foundweekends.giter8" % "sbt-giter8-scaffold" % "0.8.0")
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 +}