From 9280e8ea7da9172a7322af8b0dff1287a956968f Mon Sep 17 00:00:00 2001 From: Pekka Helenius Date: Tue, 1 Sep 2020 11:43:01 +0300 Subject: [PATCH] Exercise: add chapter 0 --- exercises/chapter_0/chapter0_helloworld.zip | Bin 0 -> 96210 bytes .../chapter_0/chapter0_helloworld/.gitignore | 33 ++ .../.mvn/wrapper/MavenWrapperDownloader.java | 117 +++++++ .../.mvn/wrapper/maven-wrapper.jar | Bin 0 -> 50710 bytes .../.mvn/wrapper/maven-wrapper.properties | 2 + exercises/chapter_0/chapter0_helloworld/mvnw | 310 ++++++++++++++++++ .../chapter_0/chapter0_helloworld/mvnw.cmd | 182 ++++++++++ .../chapter_0/chapter0_helloworld/pom.xml | 55 ++++ .../Chapter0HelloworldApplication.java | 15 + .../web/HelloController.java | 18 + .../src/main/resources/application.properties | 1 + .../Chapter0HelloworldApplicationTests.java | 13 + 12 files changed, 746 insertions(+) create mode 100644 exercises/chapter_0/chapter0_helloworld.zip create mode 100644 exercises/chapter_0/chapter0_helloworld/.gitignore create mode 100644 exercises/chapter_0/chapter0_helloworld/.mvn/wrapper/MavenWrapperDownloader.java create mode 100644 exercises/chapter_0/chapter0_helloworld/.mvn/wrapper/maven-wrapper.jar create mode 100644 exercises/chapter_0/chapter0_helloworld/.mvn/wrapper/maven-wrapper.properties create mode 100755 exercises/chapter_0/chapter0_helloworld/mvnw create mode 100644 exercises/chapter_0/chapter0_helloworld/mvnw.cmd create mode 100644 exercises/chapter_0/chapter0_helloworld/pom.xml create mode 100644 exercises/chapter_0/chapter0_helloworld/src/main/java/com/fjordtek/chapter0_helloworld/Chapter0HelloworldApplication.java create mode 100644 exercises/chapter_0/chapter0_helloworld/src/main/java/com/fjordtek/chapter0_helloworld/web/HelloController.java create mode 100644 exercises/chapter_0/chapter0_helloworld/src/main/resources/application.properties create mode 100644 exercises/chapter_0/chapter0_helloworld/src/test/java/com/fjordtek/chapter0_helloworld/Chapter0HelloworldApplicationTests.java diff --git a/exercises/chapter_0/chapter0_helloworld.zip b/exercises/chapter_0/chapter0_helloworld.zip new file mode 100644 index 0000000000000000000000000000000000000000..7e68c5d7d3ba3348ece1375bba3fc9b35e713cc5 GIT binary patch literal 96210 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 QE%=EB`=QP9AckT81GB$X#Q*>R literal 0 HcmV?d00001 diff --git a/exercises/chapter_0/chapter0_helloworld/.gitignore b/exercises/chapter_0/chapter0_helloworld/.gitignore new file mode 100644 index 0000000..549e00a --- /dev/null +++ b/exercises/chapter_0/chapter0_helloworld/.gitignore @@ -0,0 +1,33 @@ +HELP.md +target/ +!.mvn/wrapper/maven-wrapper.jar +!**/src/main/**/target/ +!**/src/test/**/target/ + +### STS ### +.apt_generated +.classpath +.factorypath +.project +.settings +.springBeans +.sts4-cache + +### IntelliJ IDEA ### +.idea +*.iws +*.iml +*.ipr + +### NetBeans ### +/nbproject/private/ +/nbbuild/ +/dist/ +/nbdist/ +/.nb-gradle/ +build/ +!**/src/main/**/build/ +!**/src/test/**/build/ + +### VS Code ### +.vscode/ diff --git a/exercises/chapter_0/chapter0_helloworld/.mvn/wrapper/MavenWrapperDownloader.java b/exercises/chapter_0/chapter0_helloworld/.mvn/wrapper/MavenWrapperDownloader.java new file mode 100644 index 0000000..e76d1f3 --- /dev/null +++ b/exercises/chapter_0/chapter0_helloworld/.mvn/wrapper/MavenWrapperDownloader.java @@ -0,0 +1,117 @@ +/* + * Copyright 2007-present the original author or authors. + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * https://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. + */ +import java.net.*; +import java.io.*; +import java.nio.channels.*; +import java.util.Properties; + +public class MavenWrapperDownloader { + + private static final String WRAPPER_VERSION = "0.5.6"; + /** + * Default URL to download the maven-wrapper.jar from, if no 'downloadUrl' is provided. + */ + private static final String DEFAULT_DOWNLOAD_URL = "https://repo.maven.apache.org/maven2/io/takari/maven-wrapper/" + + WRAPPER_VERSION + "/maven-wrapper-" + WRAPPER_VERSION + ".jar"; + + /** + * Path to the maven-wrapper.properties file, which might contain a downloadUrl property to + * use instead of the default one. + */ + private static final String MAVEN_WRAPPER_PROPERTIES_PATH = + ".mvn/wrapper/maven-wrapper.properties"; + + /** + * Path where the maven-wrapper.jar will be saved to. + */ + private static final String MAVEN_WRAPPER_JAR_PATH = + ".mvn/wrapper/maven-wrapper.jar"; + + /** + * Name of the property which should be used to override the default download url for the wrapper. + */ + private static final String PROPERTY_NAME_WRAPPER_URL = "wrapperUrl"; + + public static void main(String args[]) { + System.out.println("- Downloader started"); + File baseDirectory = new File(args[0]); + System.out.println("- Using base directory: " + baseDirectory.getAbsolutePath()); + + // If the maven-wrapper.properties exists, read it and check if it contains a custom + // wrapperUrl parameter. + File mavenWrapperPropertyFile = new File(baseDirectory, MAVEN_WRAPPER_PROPERTIES_PATH); + String url = DEFAULT_DOWNLOAD_URL; + if(mavenWrapperPropertyFile.exists()) { + FileInputStream mavenWrapperPropertyFileInputStream = null; + try { + mavenWrapperPropertyFileInputStream = new FileInputStream(mavenWrapperPropertyFile); + Properties mavenWrapperProperties = new Properties(); + mavenWrapperProperties.load(mavenWrapperPropertyFileInputStream); + url = mavenWrapperProperties.getProperty(PROPERTY_NAME_WRAPPER_URL, url); + } catch (IOException e) { + System.out.println("- ERROR loading '" + MAVEN_WRAPPER_PROPERTIES_PATH + "'"); + } finally { + try { + if(mavenWrapperPropertyFileInputStream != null) { + mavenWrapperPropertyFileInputStream.close(); + } + } catch (IOException e) { + // Ignore ... + } + } + } + System.out.println("- Downloading from: " + url); + + File outputFile = new File(baseDirectory.getAbsolutePath(), MAVEN_WRAPPER_JAR_PATH); + if(!outputFile.getParentFile().exists()) { + if(!outputFile.getParentFile().mkdirs()) { + System.out.println( + "- ERROR creating output directory '" + outputFile.getParentFile().getAbsolutePath() + "'"); + } + } + System.out.println("- Downloading to: " + outputFile.getAbsolutePath()); + try { + downloadFileFromURL(url, outputFile); + System.out.println("Done"); + System.exit(0); + } catch (Throwable e) { + System.out.println("- Error downloading"); + e.printStackTrace(); + System.exit(1); + } + } + + private static void downloadFileFromURL(String urlString, File destination) throws Exception { + if (System.getenv("MVNW_USERNAME") != null && System.getenv("MVNW_PASSWORD") != null) { + String username = System.getenv("MVNW_USERNAME"); + char[] password = System.getenv("MVNW_PASSWORD").toCharArray(); + Authenticator.setDefault(new Authenticator() { + @Override + protected PasswordAuthentication getPasswordAuthentication() { + return new PasswordAuthentication(username, password); + } + }); + } + URL website = new URL(urlString); + ReadableByteChannel rbc; + rbc = Channels.newChannel(website.openStream()); + FileOutputStream fos = new FileOutputStream(destination); + fos.getChannel().transferFrom(rbc, 0, Long.MAX_VALUE); + fos.close(); + rbc.close(); + } + +} diff --git a/exercises/chapter_0/chapter0_helloworld/.mvn/wrapper/maven-wrapper.jar b/exercises/chapter_0/chapter0_helloworld/.mvn/wrapper/maven-wrapper.jar new file mode 100644 index 0000000000000000000000000000000000000000..2cc7d4a55c0cd0092912bf49ae38b3a9e3fd0054 GIT binary patch literal 50710 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 EfAhh=DF6Tf literal 0 HcmV?d00001 diff --git a/exercises/chapter_0/chapter0_helloworld/.mvn/wrapper/maven-wrapper.properties b/exercises/chapter_0/chapter0_helloworld/.mvn/wrapper/maven-wrapper.properties new file mode 100644 index 0000000..642d572 --- /dev/null +++ b/exercises/chapter_0/chapter0_helloworld/.mvn/wrapper/maven-wrapper.properties @@ -0,0 +1,2 @@ +distributionUrl=https://repo.maven.apache.org/maven2/org/apache/maven/apache-maven/3.6.3/apache-maven-3.6.3-bin.zip +wrapperUrl=https://repo.maven.apache.org/maven2/io/takari/maven-wrapper/0.5.6/maven-wrapper-0.5.6.jar diff --git a/exercises/chapter_0/chapter0_helloworld/mvnw b/exercises/chapter_0/chapter0_helloworld/mvnw new file mode 100755 index 0000000..a16b543 --- /dev/null +++ b/exercises/chapter_0/chapter0_helloworld/mvnw @@ -0,0 +1,310 @@ +#!/bin/sh +# ---------------------------------------------------------------------------- +# Licensed to the Apache Software Foundation (ASF) under one +# or more contributor license agreements. See the NOTICE file +# distributed with this work for additional information +# regarding copyright ownership. The ASF licenses this file +# to you under the Apache License, Version 2.0 (the +# "License"); you may not use this file except in compliance +# with the License. You may obtain a copy of the License at +# +# https://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. +# ---------------------------------------------------------------------------- + +# ---------------------------------------------------------------------------- +# Maven Start Up Batch script +# +# Required ENV vars: +# ------------------ +# JAVA_HOME - location of a JDK home dir +# +# Optional ENV vars +# ----------------- +# M2_HOME - location of maven2's installed home dir +# MAVEN_OPTS - parameters passed to the Java VM when running Maven +# e.g. to debug Maven itself, use +# set MAVEN_OPTS=-Xdebug -Xrunjdwp:transport=dt_socket,server=y,suspend=y,address=8000 +# MAVEN_SKIP_RC - flag to disable loading of mavenrc files +# ---------------------------------------------------------------------------- + +if [ -z "$MAVEN_SKIP_RC" ] ; then + + if [ -f /etc/mavenrc ] ; then + . /etc/mavenrc + fi + + if [ -f "$HOME/.mavenrc" ] ; then + . "$HOME/.mavenrc" + fi + +fi + +# OS specific support. $var _must_ be set to either true or false. +cygwin=false; +darwin=false; +mingw=false +case "`uname`" in + CYGWIN*) cygwin=true ;; + MINGW*) mingw=true;; + Darwin*) darwin=true + # Use /usr/libexec/java_home if available, otherwise fall back to /Library/Java/Home + # See https://developer.apple.com/library/mac/qa/qa1170/_index.html + if [ -z "$JAVA_HOME" ]; then + if [ -x "/usr/libexec/java_home" ]; then + export JAVA_HOME="`/usr/libexec/java_home`" + else + export JAVA_HOME="/Library/Java/Home" + fi + fi + ;; +esac + +if [ -z "$JAVA_HOME" ] ; then + if [ -r /etc/gentoo-release ] ; then + JAVA_HOME=`java-config --jre-home` + fi +fi + +if [ -z "$M2_HOME" ] ; then + ## resolve links - $0 may be a link to maven's home + PRG="$0" + + # need this for relative symlinks + while [ -h "$PRG" ] ; do + ls=`ls -ld "$PRG"` + link=`expr "$ls" : '.*-> \(.*\)$'` + if expr "$link" : '/.*' > /dev/null; then + PRG="$link" + else + PRG="`dirname "$PRG"`/$link" + fi + done + + saveddir=`pwd` + + M2_HOME=`dirname "$PRG"`/.. + + # make it fully qualified + M2_HOME=`cd "$M2_HOME" && pwd` + + cd "$saveddir" + # echo Using m2 at $M2_HOME +fi + +# For Cygwin, ensure paths are in UNIX format before anything is touched +if $cygwin ; then + [ -n "$M2_HOME" ] && + M2_HOME=`cygpath --unix "$M2_HOME"` + [ -n "$JAVA_HOME" ] && + JAVA_HOME=`cygpath --unix "$JAVA_HOME"` + [ -n "$CLASSPATH" ] && + CLASSPATH=`cygpath --path --unix "$CLASSPATH"` +fi + +# For Mingw, ensure paths are in UNIX format before anything is touched +if $mingw ; then + [ -n "$M2_HOME" ] && + M2_HOME="`(cd "$M2_HOME"; pwd)`" + [ -n "$JAVA_HOME" ] && + JAVA_HOME="`(cd "$JAVA_HOME"; pwd)`" +fi + +if [ -z "$JAVA_HOME" ]; then + javaExecutable="`which javac`" + if [ -n "$javaExecutable" ] && ! [ "`expr \"$javaExecutable\" : '\([^ ]*\)'`" = "no" ]; then + # readlink(1) is not available as standard on Solaris 10. + readLink=`which readlink` + if [ ! `expr "$readLink" : '\([^ ]*\)'` = "no" ]; then + if $darwin ; then + javaHome="`dirname \"$javaExecutable\"`" + javaExecutable="`cd \"$javaHome\" && pwd -P`/javac" + else + javaExecutable="`readlink -f \"$javaExecutable\"`" + fi + javaHome="`dirname \"$javaExecutable\"`" + javaHome=`expr "$javaHome" : '\(.*\)/bin'` + JAVA_HOME="$javaHome" + export JAVA_HOME + fi + fi +fi + +if [ -z "$JAVACMD" ] ; then + if [ -n "$JAVA_HOME" ] ; then + if [ -x "$JAVA_HOME/jre/sh/java" ] ; then + # IBM's JDK on AIX uses strange locations for the executables + JAVACMD="$JAVA_HOME/jre/sh/java" + else + JAVACMD="$JAVA_HOME/bin/java" + fi + else + JAVACMD="`which java`" + fi +fi + +if [ ! -x "$JAVACMD" ] ; then + echo "Error: JAVA_HOME is not defined correctly." >&2 + echo " We cannot execute $JAVACMD" >&2 + exit 1 +fi + +if [ -z "$JAVA_HOME" ] ; then + echo "Warning: JAVA_HOME environment variable is not set." +fi + +CLASSWORLDS_LAUNCHER=org.codehaus.plexus.classworlds.launcher.Launcher + +# traverses directory structure from process work directory to filesystem root +# first directory with .mvn subdirectory is considered project base directory +find_maven_basedir() { + + if [ -z "$1" ] + then + echo "Path not specified to find_maven_basedir" + return 1 + fi + + basedir="$1" + wdir="$1" + while [ "$wdir" != '/' ] ; do + if [ -d "$wdir"/.mvn ] ; then + basedir=$wdir + break + fi + # workaround for JBEAP-8937 (on Solaris 10/Sparc) + if [ -d "${wdir}" ]; then + wdir=`cd "$wdir/.."; pwd` + fi + # end of workaround + done + echo "${basedir}" +} + +# concatenates all lines of a file +concat_lines() { + if [ -f "$1" ]; then + echo "$(tr -s '\n' ' ' < "$1")" + fi +} + +BASE_DIR=`find_maven_basedir "$(pwd)"` +if [ -z "$BASE_DIR" ]; then + exit 1; +fi + +########################################################################################## +# Extension to allow automatically downloading the maven-wrapper.jar from Maven-central +# This allows using the maven wrapper in projects that prohibit checking in binary data. +########################################################################################## +if [ -r "$BASE_DIR/.mvn/wrapper/maven-wrapper.jar" ]; then + if [ "$MVNW_VERBOSE" = true ]; then + echo "Found .mvn/wrapper/maven-wrapper.jar" + fi +else + if [ "$MVNW_VERBOSE" = true ]; then + echo "Couldn't find .mvn/wrapper/maven-wrapper.jar, downloading it ..." + fi + if [ -n "$MVNW_REPOURL" ]; then + jarUrl="$MVNW_REPOURL/io/takari/maven-wrapper/0.5.6/maven-wrapper-0.5.6.jar" + else + jarUrl="https://repo.maven.apache.org/maven2/io/takari/maven-wrapper/0.5.6/maven-wrapper-0.5.6.jar" + fi + while IFS="=" read key value; do + case "$key" in (wrapperUrl) jarUrl="$value"; break ;; + esac + done < "$BASE_DIR/.mvn/wrapper/maven-wrapper.properties" + if [ "$MVNW_VERBOSE" = true ]; then + echo "Downloading from: $jarUrl" + fi + wrapperJarPath="$BASE_DIR/.mvn/wrapper/maven-wrapper.jar" + if $cygwin; then + wrapperJarPath=`cygpath --path --windows "$wrapperJarPath"` + fi + + if command -v wget > /dev/null; then + if [ "$MVNW_VERBOSE" = true ]; then + echo "Found wget ... using wget" + fi + if [ -z "$MVNW_USERNAME" ] || [ -z "$MVNW_PASSWORD" ]; then + wget "$jarUrl" -O "$wrapperJarPath" + else + wget --http-user=$MVNW_USERNAME --http-password=$MVNW_PASSWORD "$jarUrl" -O "$wrapperJarPath" + fi + elif command -v curl > /dev/null; then + if [ "$MVNW_VERBOSE" = true ]; then + echo "Found curl ... using curl" + fi + if [ -z "$MVNW_USERNAME" ] || [ -z "$MVNW_PASSWORD" ]; then + curl -o "$wrapperJarPath" "$jarUrl" -f + else + curl --user $MVNW_USERNAME:$MVNW_PASSWORD -o "$wrapperJarPath" "$jarUrl" -f + fi + + else + if [ "$MVNW_VERBOSE" = true ]; then + echo "Falling back to using Java to download" + fi + javaClass="$BASE_DIR/.mvn/wrapper/MavenWrapperDownloader.java" + # For Cygwin, switch paths to Windows format before running javac + if $cygwin; then + javaClass=`cygpath --path --windows "$javaClass"` + fi + if [ -e "$javaClass" ]; then + if [ ! -e "$BASE_DIR/.mvn/wrapper/MavenWrapperDownloader.class" ]; then + if [ "$MVNW_VERBOSE" = true ]; then + echo " - Compiling MavenWrapperDownloader.java ..." + fi + # Compiling the Java class + ("$JAVA_HOME/bin/javac" "$javaClass") + fi + if [ -e "$BASE_DIR/.mvn/wrapper/MavenWrapperDownloader.class" ]; then + # Running the downloader + if [ "$MVNW_VERBOSE" = true ]; then + echo " - Running MavenWrapperDownloader.java ..." + fi + ("$JAVA_HOME/bin/java" -cp .mvn/wrapper MavenWrapperDownloader "$MAVEN_PROJECTBASEDIR") + fi + fi + fi +fi +########################################################################################## +# End of extension +########################################################################################## + +export MAVEN_PROJECTBASEDIR=${MAVEN_BASEDIR:-"$BASE_DIR"} +if [ "$MVNW_VERBOSE" = true ]; then + echo $MAVEN_PROJECTBASEDIR +fi +MAVEN_OPTS="$(concat_lines "$MAVEN_PROJECTBASEDIR/.mvn/jvm.config") $MAVEN_OPTS" + +# For Cygwin, switch paths to Windows format before running java +if $cygwin; then + [ -n "$M2_HOME" ] && + M2_HOME=`cygpath --path --windows "$M2_HOME"` + [ -n "$JAVA_HOME" ] && + JAVA_HOME=`cygpath --path --windows "$JAVA_HOME"` + [ -n "$CLASSPATH" ] && + CLASSPATH=`cygpath --path --windows "$CLASSPATH"` + [ -n "$MAVEN_PROJECTBASEDIR" ] && + MAVEN_PROJECTBASEDIR=`cygpath --path --windows "$MAVEN_PROJECTBASEDIR"` +fi + +# Provide a "standardized" way to retrieve the CLI args that will +# work with both Windows and non-Windows executions. +MAVEN_CMD_LINE_ARGS="$MAVEN_CONFIG $@" +export MAVEN_CMD_LINE_ARGS + +WRAPPER_LAUNCHER=org.apache.maven.wrapper.MavenWrapperMain + +exec "$JAVACMD" \ + $MAVEN_OPTS \ + -classpath "$MAVEN_PROJECTBASEDIR/.mvn/wrapper/maven-wrapper.jar" \ + "-Dmaven.home=${M2_HOME}" "-Dmaven.multiModuleProjectDirectory=${MAVEN_PROJECTBASEDIR}" \ + ${WRAPPER_LAUNCHER} $MAVEN_CONFIG "$@" diff --git a/exercises/chapter_0/chapter0_helloworld/mvnw.cmd b/exercises/chapter_0/chapter0_helloworld/mvnw.cmd new file mode 100644 index 0000000..c8d4337 --- /dev/null +++ b/exercises/chapter_0/chapter0_helloworld/mvnw.cmd @@ -0,0 +1,182 @@ +@REM ---------------------------------------------------------------------------- +@REM Licensed to the Apache Software Foundation (ASF) under one +@REM or more contributor license agreements. See the NOTICE file +@REM distributed with this work for additional information +@REM regarding copyright ownership. The ASF licenses this file +@REM to you under the Apache License, Version 2.0 (the +@REM "License"); you may not use this file except in compliance +@REM with the License. You may obtain a copy of the License at +@REM +@REM https://www.apache.org/licenses/LICENSE-2.0 +@REM +@REM Unless required by applicable law or agreed to in writing, +@REM software distributed under the License is distributed on an +@REM "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY +@REM KIND, either express or implied. See the License for the +@REM specific language governing permissions and limitations +@REM under the License. +@REM ---------------------------------------------------------------------------- + +@REM ---------------------------------------------------------------------------- +@REM Maven Start Up Batch script +@REM +@REM Required ENV vars: +@REM JAVA_HOME - location of a JDK home dir +@REM +@REM Optional ENV vars +@REM M2_HOME - location of maven2's installed home dir +@REM MAVEN_BATCH_ECHO - set to 'on' to enable the echoing of the batch commands +@REM MAVEN_BATCH_PAUSE - set to 'on' to wait for a keystroke before ending +@REM MAVEN_OPTS - parameters passed to the Java VM when running Maven +@REM e.g. to debug Maven itself, use +@REM set MAVEN_OPTS=-Xdebug -Xrunjdwp:transport=dt_socket,server=y,suspend=y,address=8000 +@REM MAVEN_SKIP_RC - flag to disable loading of mavenrc files +@REM ---------------------------------------------------------------------------- + +@REM Begin all REM lines with '@' in case MAVEN_BATCH_ECHO is 'on' +@echo off +@REM set title of command window +title %0 +@REM enable echoing by setting MAVEN_BATCH_ECHO to 'on' +@if "%MAVEN_BATCH_ECHO%" == "on" echo %MAVEN_BATCH_ECHO% + +@REM set %HOME% to equivalent of $HOME +if "%HOME%" == "" (set "HOME=%HOMEDRIVE%%HOMEPATH%") + +@REM Execute a user defined script before this one +if not "%MAVEN_SKIP_RC%" == "" goto skipRcPre +@REM check for pre script, once with legacy .bat ending and once with .cmd ending +if exist "%HOME%\mavenrc_pre.bat" call "%HOME%\mavenrc_pre.bat" +if exist "%HOME%\mavenrc_pre.cmd" call "%HOME%\mavenrc_pre.cmd" +:skipRcPre + +@setlocal + +set ERROR_CODE=0 + +@REM To isolate internal variables from possible post scripts, we use another setlocal +@setlocal + +@REM ==== START VALIDATION ==== +if not "%JAVA_HOME%" == "" goto OkJHome + +echo. +echo Error: JAVA_HOME not found in your environment. >&2 +echo Please set the JAVA_HOME variable in your environment to match the >&2 +echo location of your Java installation. >&2 +echo. +goto error + +:OkJHome +if exist "%JAVA_HOME%\bin\java.exe" goto init + +echo. +echo Error: JAVA_HOME is set to an invalid directory. >&2 +echo JAVA_HOME = "%JAVA_HOME%" >&2 +echo Please set the JAVA_HOME variable in your environment to match the >&2 +echo location of your Java installation. >&2 +echo. +goto error + +@REM ==== END VALIDATION ==== + +:init + +@REM Find the project base dir, i.e. the directory that contains the folder ".mvn". +@REM Fallback to current working directory if not found. + +set MAVEN_PROJECTBASEDIR=%MAVEN_BASEDIR% +IF NOT "%MAVEN_PROJECTBASEDIR%"=="" goto endDetectBaseDir + +set EXEC_DIR=%CD% +set WDIR=%EXEC_DIR% +:findBaseDir +IF EXIST "%WDIR%"\.mvn goto baseDirFound +cd .. +IF "%WDIR%"=="%CD%" goto baseDirNotFound +set WDIR=%CD% +goto findBaseDir + +:baseDirFound +set MAVEN_PROJECTBASEDIR=%WDIR% +cd "%EXEC_DIR%" +goto endDetectBaseDir + +:baseDirNotFound +set MAVEN_PROJECTBASEDIR=%EXEC_DIR% +cd "%EXEC_DIR%" + +:endDetectBaseDir + +IF NOT EXIST "%MAVEN_PROJECTBASEDIR%\.mvn\jvm.config" goto endReadAdditionalConfig + +@setlocal EnableExtensions EnableDelayedExpansion +for /F "usebackq delims=" %%a in ("%MAVEN_PROJECTBASEDIR%\.mvn\jvm.config") do set JVM_CONFIG_MAVEN_PROPS=!JVM_CONFIG_MAVEN_PROPS! %%a +@endlocal & set JVM_CONFIG_MAVEN_PROPS=%JVM_CONFIG_MAVEN_PROPS% + +:endReadAdditionalConfig + +SET MAVEN_JAVA_EXE="%JAVA_HOME%\bin\java.exe" +set WRAPPER_JAR="%MAVEN_PROJECTBASEDIR%\.mvn\wrapper\maven-wrapper.jar" +set WRAPPER_LAUNCHER=org.apache.maven.wrapper.MavenWrapperMain + +set DOWNLOAD_URL="https://repo.maven.apache.org/maven2/io/takari/maven-wrapper/0.5.6/maven-wrapper-0.5.6.jar" + +FOR /F "tokens=1,2 delims==" %%A IN ("%MAVEN_PROJECTBASEDIR%\.mvn\wrapper\maven-wrapper.properties") DO ( + IF "%%A"=="wrapperUrl" SET DOWNLOAD_URL=%%B +) + +@REM Extension to allow automatically downloading the maven-wrapper.jar from Maven-central +@REM This allows using the maven wrapper in projects that prohibit checking in binary data. +if exist %WRAPPER_JAR% ( + if "%MVNW_VERBOSE%" == "true" ( + echo Found %WRAPPER_JAR% + ) +) else ( + if not "%MVNW_REPOURL%" == "" ( + SET DOWNLOAD_URL="%MVNW_REPOURL%/io/takari/maven-wrapper/0.5.6/maven-wrapper-0.5.6.jar" + ) + if "%MVNW_VERBOSE%" == "true" ( + echo Couldn't find %WRAPPER_JAR%, downloading it ... + echo Downloading from: %DOWNLOAD_URL% + ) + + powershell -Command "&{"^ + "$webclient = new-object System.Net.WebClient;"^ + "if (-not ([string]::IsNullOrEmpty('%MVNW_USERNAME%') -and [string]::IsNullOrEmpty('%MVNW_PASSWORD%'))) {"^ + "$webclient.Credentials = new-object System.Net.NetworkCredential('%MVNW_USERNAME%', '%MVNW_PASSWORD%');"^ + "}"^ + "[Net.ServicePointManager]::SecurityProtocol = [Net.SecurityProtocolType]::Tls12; $webclient.DownloadFile('%DOWNLOAD_URL%', '%WRAPPER_JAR%')"^ + "}" + if "%MVNW_VERBOSE%" == "true" ( + echo Finished downloading %WRAPPER_JAR% + ) +) +@REM End of extension + +@REM Provide a "standardized" way to retrieve the CLI args that will +@REM work with both Windows and non-Windows executions. +set MAVEN_CMD_LINE_ARGS=%* + +%MAVEN_JAVA_EXE% %JVM_CONFIG_MAVEN_PROPS% %MAVEN_OPTS% %MAVEN_DEBUG_OPTS% -classpath %WRAPPER_JAR% "-Dmaven.multiModuleProjectDirectory=%MAVEN_PROJECTBASEDIR%" %WRAPPER_LAUNCHER% %MAVEN_CONFIG% %* +if ERRORLEVEL 1 goto error +goto end + +:error +set ERROR_CODE=1 + +:end +@endlocal & set ERROR_CODE=%ERROR_CODE% + +if not "%MAVEN_SKIP_RC%" == "" goto skipRcPost +@REM check for post script, once with legacy .bat ending and once with .cmd ending +if exist "%HOME%\mavenrc_post.bat" call "%HOME%\mavenrc_post.bat" +if exist "%HOME%\mavenrc_post.cmd" call "%HOME%\mavenrc_post.cmd" +:skipRcPost + +@REM pause the script if MAVEN_BATCH_PAUSE is set to 'on' +if "%MAVEN_BATCH_PAUSE%" == "on" pause + +if "%MAVEN_TERMINATE_CMD%" == "on" exit %ERROR_CODE% + +exit /B %ERROR_CODE% diff --git a/exercises/chapter_0/chapter0_helloworld/pom.xml b/exercises/chapter_0/chapter0_helloworld/pom.xml new file mode 100644 index 0000000..a3e5bcb --- /dev/null +++ b/exercises/chapter_0/chapter0_helloworld/pom.xml @@ -0,0 +1,55 @@ + + + 4.0.0 + + org.springframework.boot + spring-boot-starter-parent + 2.3.3.RELEASE + + + com.fjordtek + chapter0_helloworld + 0.0.1-SNAPSHOT + chapter0_helloworld + Very simple Hello World app + + + 1.8 + + + + + org.springframework.boot + spring-boot-starter-web + + + + org.springframework.boot + spring-boot-devtools + runtime + true + + + org.springframework.boot + spring-boot-starter-test + test + + + org.junit.vintage + junit-vintage-engine + + + + + + + + + org.springframework.boot + spring-boot-maven-plugin + + + + + diff --git a/exercises/chapter_0/chapter0_helloworld/src/main/java/com/fjordtek/chapter0_helloworld/Chapter0HelloworldApplication.java b/exercises/chapter_0/chapter0_helloworld/src/main/java/com/fjordtek/chapter0_helloworld/Chapter0HelloworldApplication.java new file mode 100644 index 0000000..45208ab --- /dev/null +++ b/exercises/chapter_0/chapter0_helloworld/src/main/java/com/fjordtek/chapter0_helloworld/Chapter0HelloworldApplication.java @@ -0,0 +1,15 @@ +// Pekka Helenius , Fjordtek 2020 + +package com.fjordtek.chapter0_helloworld; + +import org.springframework.boot.SpringApplication; +import org.springframework.boot.autoconfigure.SpringBootApplication; + +@SpringBootApplication +public class Chapter0HelloworldApplication { + + public static void main(String[] args) { + SpringApplication.run(Chapter0HelloworldApplication.class, args); + } + +} diff --git a/exercises/chapter_0/chapter0_helloworld/src/main/java/com/fjordtek/chapter0_helloworld/web/HelloController.java b/exercises/chapter_0/chapter0_helloworld/src/main/java/com/fjordtek/chapter0_helloworld/web/HelloController.java new file mode 100644 index 0000000..9bb162f --- /dev/null +++ b/exercises/chapter_0/chapter0_helloworld/src/main/java/com/fjordtek/chapter0_helloworld/web/HelloController.java @@ -0,0 +1,18 @@ +// Pekka Helenius , Fjordtek 2020 + +package com.fjordtek.chapter0_helloworld.web; + +import org.springframework.stereotype.Controller; +import org.springframework.web.bind.annotation.RequestMapping; +import org.springframework.web.bind.annotation.ResponseBody; + +@Controller +@ResponseBody +public class HelloController { + + @RequestMapping("*") + public String hello() { + return "Hello Spring\n"; + } + +} \ No newline at end of file diff --git a/exercises/chapter_0/chapter0_helloworld/src/main/resources/application.properties b/exercises/chapter_0/chapter0_helloworld/src/main/resources/application.properties new file mode 100644 index 0000000..8b13789 --- /dev/null +++ b/exercises/chapter_0/chapter0_helloworld/src/main/resources/application.properties @@ -0,0 +1 @@ + diff --git a/exercises/chapter_0/chapter0_helloworld/src/test/java/com/fjordtek/chapter0_helloworld/Chapter0HelloworldApplicationTests.java b/exercises/chapter_0/chapter0_helloworld/src/test/java/com/fjordtek/chapter0_helloworld/Chapter0HelloworldApplicationTests.java new file mode 100644 index 0000000..31f82ce --- /dev/null +++ b/exercises/chapter_0/chapter0_helloworld/src/test/java/com/fjordtek/chapter0_helloworld/Chapter0HelloworldApplicationTests.java @@ -0,0 +1,13 @@ +package com.fjordtek.chapter0_helloworld; + +import org.junit.jupiter.api.Test; +import org.springframework.boot.test.context.SpringBootTest; + +@SpringBootTest +class Chapter0HelloworldApplicationTests { + + @Test + void contextLoads() { + } + +}