From f1c11281dc67e5c61a5d0c66cfdb6d6aca9c1eba Mon Sep 17 00:00:00 2001 From: Tyson Gern Date: Fri, 21 Jul 2017 09:26:37 -0600 Subject: [PATCH 01/19] Initial commit --- .gitignore | 5 +++++ 1 file changed, 5 insertions(+) create mode 100644 .gitignore diff --git a/.gitignore b/.gitignore new file mode 100644 index 000000000..4fa332f5c --- /dev/null +++ b/.gitignore @@ -0,0 +1,5 @@ +build +.gradle +.idea +*.iml +ci/variables.yml From c1b944ab4f5c6545262c61b8141e8044f07fdbfc Mon Sep 17 00:00:00 2001 From: Tyson Gern Date: Thu, 20 Jul 2017 09:34:22 -0600 Subject: [PATCH 02/19] Simple Spring Boot app --- build.gradle | 12 ++ gradle/wrapper/gradle-wrapper.jar | Bin 0 -> 54706 bytes gradle/wrapper/gradle-wrapper.properties | 6 + gradlew | 172 ++++++++++++++++++ gradlew.bat | 84 +++++++++ settings.gradle | 1 + .../pal/tracker/PalTrackerApplication.java | 12 ++ .../pal/tracker/WelcomeController.java | 13 ++ 8 files changed, 300 insertions(+) create mode 100644 build.gradle create mode 100644 gradle/wrapper/gradle-wrapper.jar create mode 100644 gradle/wrapper/gradle-wrapper.properties create mode 100755 gradlew create mode 100644 gradlew.bat create mode 100644 settings.gradle create mode 100644 src/main/java/io/pivotal/pal/tracker/PalTrackerApplication.java create mode 100644 src/main/java/io/pivotal/pal/tracker/WelcomeController.java diff --git a/build.gradle b/build.gradle new file mode 100644 index 000000000..bf82fb8f5 --- /dev/null +++ b/build.gradle @@ -0,0 +1,12 @@ +plugins { + id "java" + id "org.springframework.boot" version "1.5.4.RELEASE" +} + +repositories { + mavenCentral() +} + +dependencies { + compile("org.springframework.boot:spring-boot-starter-web") +} diff --git a/gradle/wrapper/gradle-wrapper.jar b/gradle/wrapper/gradle-wrapper.jar new file mode 100644 index 0000000000000000000000000000000000000000..1a98bfa24cb2ab2e5b1b78189abfdde5d4828663 GIT binary patch literal 54706 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 literal 0 HcmV?d00001 diff --git a/gradle/wrapper/gradle-wrapper.properties b/gradle/wrapper/gradle-wrapper.properties new file mode 100644 index 000000000..26cc55834 --- /dev/null +++ b/gradle/wrapper/gradle-wrapper.properties @@ -0,0 +1,6 @@ +#Thu Jul 20 09:14:39 MDT 2017 +distributionBase=GRADLE_USER_HOME +distributionPath=wrapper/dists +zipStoreBase=GRADLE_USER_HOME +zipStorePath=wrapper/dists +distributionUrl=https\://services.gradle.org/distributions/gradle-4.0-all.zip diff --git a/gradlew b/gradlew new file mode 100755 index 000000000..cccdd3d51 --- /dev/null +++ b/gradlew @@ -0,0 +1,172 @@ +#!/usr/bin/env sh + +############################################################################## +## +## Gradle start up script for UN*X +## +############################################################################## + +# Attempt to set APP_HOME +# Resolve links: $0 may be a link +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 +SAVED="`pwd`" +cd "`dirname \"$PRG\"`/" >/dev/null +APP_HOME="`pwd -P`" +cd "$SAVED" >/dev/null + +APP_NAME="Gradle" +APP_BASE_NAME=`basename "$0"` + +# Add default JVM options here. You can also use JAVA_OPTS and GRADLE_OPTS to pass JVM options to this script. +DEFAULT_JVM_OPTS="" + +# Use the maximum available, or set MAX_FD != -1 to use that value. +MAX_FD="maximum" + +warn () { + echo "$*" +} + +die () { + echo + echo "$*" + echo + exit 1 +} + +# OS specific support (must be 'true' or 'false'). +cygwin=false +msys=false +darwin=false +nonstop=false +case "`uname`" in + CYGWIN* ) + cygwin=true + ;; + Darwin* ) + darwin=true + ;; + MINGW* ) + msys=true + ;; + NONSTOP* ) + nonstop=true + ;; +esac + +CLASSPATH=$APP_HOME/gradle/wrapper/gradle-wrapper.jar + +# Determine the Java command to use to start the JVM. +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 + if [ ! -x "$JAVACMD" ] ; then + die "ERROR: JAVA_HOME is set to an invalid directory: $JAVA_HOME + +Please set the JAVA_HOME variable in your environment to match the +location of your Java installation." + fi +else + JAVACMD="java" + which java >/dev/null 2>&1 || die "ERROR: JAVA_HOME is not set and no 'java' command could be found in your PATH. + +Please set the JAVA_HOME variable in your environment to match the +location of your Java installation." +fi + +# Increase the maximum file descriptors if we can. +if [ "$cygwin" = "false" -a "$darwin" = "false" -a "$nonstop" = "false" ] ; then + MAX_FD_LIMIT=`ulimit -H -n` + if [ $? -eq 0 ] ; then + if [ "$MAX_FD" = "maximum" -o "$MAX_FD" = "max" ] ; then + MAX_FD="$MAX_FD_LIMIT" + fi + ulimit -n $MAX_FD + if [ $? -ne 0 ] ; then + warn "Could not set maximum file descriptor limit: $MAX_FD" + fi + else + warn "Could not query maximum file descriptor limit: $MAX_FD_LIMIT" + fi +fi + +# For Darwin, add options to specify how the application appears in the dock +if $darwin; then + GRADLE_OPTS="$GRADLE_OPTS \"-Xdock:name=$APP_NAME\" \"-Xdock:icon=$APP_HOME/media/gradle.icns\"" +fi + +# For Cygwin, switch paths to Windows format before running java +if $cygwin ; then + APP_HOME=`cygpath --path --mixed "$APP_HOME"` + CLASSPATH=`cygpath --path --mixed "$CLASSPATH"` + JAVACMD=`cygpath --unix "$JAVACMD"` + + # We build the pattern for arguments to be converted via cygpath + ROOTDIRSRAW=`find -L / -maxdepth 1 -mindepth 1 -type d 2>/dev/null` + SEP="" + for dir in $ROOTDIRSRAW ; do + ROOTDIRS="$ROOTDIRS$SEP$dir" + SEP="|" + done + OURCYGPATTERN="(^($ROOTDIRS))" + # Add a user-defined pattern to the cygpath arguments + if [ "$GRADLE_CYGPATTERN" != "" ] ; then + OURCYGPATTERN="$OURCYGPATTERN|($GRADLE_CYGPATTERN)" + fi + # Now convert the arguments - kludge to limit ourselves to /bin/sh + i=0 + for arg in "$@" ; do + CHECK=`echo "$arg"|egrep -c "$OURCYGPATTERN" -` + CHECK2=`echo "$arg"|egrep -c "^-"` ### Determine if an option + + if [ $CHECK -ne 0 ] && [ $CHECK2 -eq 0 ] ; then ### Added a condition + eval `echo args$i`=`cygpath --path --ignore --mixed "$arg"` + else + eval `echo args$i`="\"$arg\"" + fi + i=$((i+1)) + done + case $i in + (0) set -- ;; + (1) set -- "$args0" ;; + (2) set -- "$args0" "$args1" ;; + (3) set -- "$args0" "$args1" "$args2" ;; + (4) set -- "$args0" "$args1" "$args2" "$args3" ;; + (5) set -- "$args0" "$args1" "$args2" "$args3" "$args4" ;; + (6) set -- "$args0" "$args1" "$args2" "$args3" "$args4" "$args5" ;; + (7) set -- "$args0" "$args1" "$args2" "$args3" "$args4" "$args5" "$args6" ;; + (8) set -- "$args0" "$args1" "$args2" "$args3" "$args4" "$args5" "$args6" "$args7" ;; + (9) set -- "$args0" "$args1" "$args2" "$args3" "$args4" "$args5" "$args6" "$args7" "$args8" ;; + esac +fi + +# Escape application args +save () { + for i do printf %s\\n "$i" | sed "s/'/'\\\\''/g;1s/^/'/;\$s/\$/' \\\\/" ; done + echo " " +} +APP_ARGS=$(save "$@") + +# Collect all arguments for the java command, following the shell quoting and substitution rules +eval set -- $DEFAULT_JVM_OPTS $JAVA_OPTS $GRADLE_OPTS "\"-Dorg.gradle.appname=$APP_BASE_NAME\"" -classpath "\"$CLASSPATH\"" org.gradle.wrapper.GradleWrapperMain "$APP_ARGS" + +# by default we should be in the correct project dir, but when run from Finder on Mac, the cwd is wrong +if [ "$(uname)" = "Darwin" ] && [ "$HOME" = "$PWD" ]; then + cd "$(dirname "$0")" +fi + +exec "$JAVACMD" "$@" diff --git a/gradlew.bat b/gradlew.bat new file mode 100644 index 000000000..e95643d6a --- /dev/null +++ b/gradlew.bat @@ -0,0 +1,84 @@ +@if "%DEBUG%" == "" @echo off +@rem ########################################################################## +@rem +@rem Gradle startup script for Windows +@rem +@rem ########################################################################## + +@rem Set local scope for the variables with windows NT shell +if "%OS%"=="Windows_NT" setlocal + +set DIRNAME=%~dp0 +if "%DIRNAME%" == "" set DIRNAME=. +set APP_BASE_NAME=%~n0 +set APP_HOME=%DIRNAME% + +@rem Add default JVM options here. You can also use JAVA_OPTS and GRADLE_OPTS to pass JVM options to this script. +set DEFAULT_JVM_OPTS= + +@rem Find java.exe +if defined JAVA_HOME goto findJavaFromJavaHome + +set JAVA_EXE=java.exe +%JAVA_EXE% -version >NUL 2>&1 +if "%ERRORLEVEL%" == "0" goto init + +echo. +echo ERROR: JAVA_HOME is not set and no 'java' command could be found in your PATH. +echo. +echo Please set the JAVA_HOME variable in your environment to match the +echo location of your Java installation. + +goto fail + +:findJavaFromJavaHome +set JAVA_HOME=%JAVA_HOME:"=% +set JAVA_EXE=%JAVA_HOME%/bin/java.exe + +if exist "%JAVA_EXE%" goto init + +echo. +echo ERROR: JAVA_HOME is set to an invalid directory: %JAVA_HOME% +echo. +echo Please set the JAVA_HOME variable in your environment to match the +echo location of your Java installation. + +goto fail + +:init +@rem Get command-line arguments, handling Windows variants + +if not "%OS%" == "Windows_NT" goto win9xME_args + +:win9xME_args +@rem Slurp the command line arguments. +set CMD_LINE_ARGS= +set _SKIP=2 + +:win9xME_args_slurp +if "x%~1" == "x" goto execute + +set CMD_LINE_ARGS=%* + +:execute +@rem Setup the command line + +set CLASSPATH=%APP_HOME%\gradle\wrapper\gradle-wrapper.jar + +@rem Execute Gradle +"%JAVA_EXE%" %DEFAULT_JVM_OPTS% %JAVA_OPTS% %GRADLE_OPTS% "-Dorg.gradle.appname=%APP_BASE_NAME%" -classpath "%CLASSPATH%" org.gradle.wrapper.GradleWrapperMain %CMD_LINE_ARGS% + +:end +@rem End local scope for the variables with windows NT shell +if "%ERRORLEVEL%"=="0" goto mainEnd + +:fail +rem Set variable GRADLE_EXIT_CONSOLE if you need the _script_ return code instead of +rem the _cmd.exe /c_ return code! +if not "" == "%GRADLE_EXIT_CONSOLE%" exit 1 +exit /b 1 + +:mainEnd +if "%OS%"=="Windows_NT" endlocal + +:omega diff --git a/settings.gradle b/settings.gradle new file mode 100644 index 000000000..ef961960e --- /dev/null +++ b/settings.gradle @@ -0,0 +1 @@ +rootProject.name = "pal-tracker" \ No newline at end of file diff --git a/src/main/java/io/pivotal/pal/tracker/PalTrackerApplication.java b/src/main/java/io/pivotal/pal/tracker/PalTrackerApplication.java new file mode 100644 index 000000000..e33c3526e --- /dev/null +++ b/src/main/java/io/pivotal/pal/tracker/PalTrackerApplication.java @@ -0,0 +1,12 @@ +package io.pivotal.pal.tracker; + +import org.springframework.boot.SpringApplication; +import org.springframework.boot.autoconfigure.SpringBootApplication; + +@SpringBootApplication +public class PalTrackerApplication { + + public static void main(String[] args) { + SpringApplication.run(PalTrackerApplication.class, args); + } +} diff --git a/src/main/java/io/pivotal/pal/tracker/WelcomeController.java b/src/main/java/io/pivotal/pal/tracker/WelcomeController.java new file mode 100644 index 000000000..4670637ec --- /dev/null +++ b/src/main/java/io/pivotal/pal/tracker/WelcomeController.java @@ -0,0 +1,13 @@ +package io.pivotal.pal.tracker; + +import org.springframework.web.bind.annotation.GetMapping; +import org.springframework.web.bind.annotation.RestController; + +@RestController +public class WelcomeController { + + @GetMapping("/") + public String sayHello() { + return "hello"; + } +} From e25ddc9dd03c839119983b855264cce89b027953 Mon Sep 17 00:00:00 2001 From: Mike Gehard Date: Wed, 3 Jan 2018 16:17:48 -0700 Subject: [PATCH 03/19] Add deployment pipeline --- .travis.yml | 39 +++++++++++++++++++++++++++++++++++++++ 1 file changed, 39 insertions(+) create mode 100644 .travis.yml diff --git a/.travis.yml b/.travis.yml new file mode 100644 index 000000000..4cbb91300 --- /dev/null +++ b/.travis.yml @@ -0,0 +1,39 @@ +dist: trusty +sudo: false +notifications: + email: false +env: + - RELEASE_TAG="release-$TRAVIS_BUILD_NUMBER" +if: tag IS blank + + +jobs: + include: + - stage: build and publish + language: java + jdk: oraclejdk8 + install: skip + script: ./gradlew clean build + before_deploy: + - git config --local user.name "Travis CI" + - git config --local user.email "travis@example.com" + - git tag -f $RELEASE_TAG + deploy: + provider: releases + api_key: $GITHUB_OAUTH_TOKEN + file: "build/libs/pal-tracker.jar" + skip_cleanup: true + - stage: deploy to review + language: bash + script: + - echo "Downloading $RELEASE_TAG" + - wget -P build/libs https://github.com/$GITHUB_USERNAME/pal-tracker/releases/download/$RELEASE_TAG/pal-tracker.jar + before_deploy: + - echo "Deploying $RELEASE_TAG to review" + deploy: + provider: cloudfoundry + api: $CF_API_URL + username: $CF_USERNAME + password: $CF_PASSWORD + organization: $CF_ORG + space: review From e4c9e609daff66596692edfc78a8b3d27f722f88 Mon Sep 17 00:00:00 2001 From: "Leo Hee Hai Richard (NCS)" Date: Thu, 26 Jul 2018 13:14:20 +0800 Subject: [PATCH 04/19] pipeline --- manifest.yml | 8 ++++++++ 1 file changed, 8 insertions(+) create mode 100644 manifest.yml diff --git a/manifest.yml b/manifest.yml new file mode 100644 index 000000000..fbe256e96 --- /dev/null +++ b/manifest.yml @@ -0,0 +1,8 @@ +--- +applications: +- name: pal-tracker + path: build/libs/pal-tracker.jar + routes: + - route: richard-pal-tracker-review.apps.evans.pal.pivotal.io + env: + WELCOME_MESSAGE: Hello from the review environment \ No newline at end of file From acb45f1d03151bedd83a977bb17bc1160b14e5e6 Mon Sep 17 00:00:00 2001 From: "Leo Hee Hai Richard (NCS)" Date: Thu, 26 Jul 2018 13:27:18 +0800 Subject: [PATCH 05/19] pipeline --- manifest.yml | 10 +++++++++- 1 file changed, 9 insertions(+), 1 deletion(-) diff --git a/manifest.yml b/manifest.yml index fbe256e96..401f5c40c 100644 --- a/manifest.yml +++ b/manifest.yml @@ -5,4 +5,12 @@ applications: routes: - route: richard-pal-tracker-review.apps.evans.pal.pivotal.io env: - WELCOME_MESSAGE: Hello from the review environment \ No newline at end of file + WELCOME_MESSAGE: Hello from the review environment + + CF_API_URL: https://api.sys.evans.pal.pivotal.io + CF_ORG: leo-hee-hai-richard + CF_USERNAME: richardleo@ncs.com.sg + CF_PASSWORD: py75s23c + + GITHUB_USERNAME: fullydead@github.com + GITHUB_OAUTH_TOKEN: b3a7083e2c34deecfb179b97aa4c641c08a32835 From e8a3c1a3a6484a16e61113696624f7f8b560d987 Mon Sep 17 00:00:00 2001 From: "Leo Hee Hai Richard (NCS)" Date: Thu, 26 Jul 2018 13:33:41 +0800 Subject: [PATCH 06/19] pipeline --- manifest.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/manifest.yml b/manifest.yml index 401f5c40c..694dc87a6 100644 --- a/manifest.yml +++ b/manifest.yml @@ -12,5 +12,5 @@ applications: CF_USERNAME: richardleo@ncs.com.sg CF_PASSWORD: py75s23c - GITHUB_USERNAME: fullydead@github.com + GITHUB_USERNAME: fullydead GITHUB_OAUTH_TOKEN: b3a7083e2c34deecfb179b97aa4c641c08a32835 From 3ffe66d0001e7a35d1e29459f21f86d7ea047869 Mon Sep 17 00:00:00 2001 From: "Leo Hee Hai Richard (NCS)" Date: Thu, 26 Jul 2018 13:37:12 +0800 Subject: [PATCH 07/19] pipeline --- manifest.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/manifest.yml b/manifest.yml index 694dc87a6..401f5c40c 100644 --- a/manifest.yml +++ b/manifest.yml @@ -12,5 +12,5 @@ applications: CF_USERNAME: richardleo@ncs.com.sg CF_PASSWORD: py75s23c - GITHUB_USERNAME: fullydead + GITHUB_USERNAME: fullydead@github.com GITHUB_OAUTH_TOKEN: b3a7083e2c34deecfb179b97aa4c641c08a32835 From 7519f4e1d65c2150025f0427049364e546c47895 Mon Sep 17 00:00:00 2001 From: "Leo Hee Hai Richard (NCS)" Date: Thu, 26 Jul 2018 13:49:03 +0800 Subject: [PATCH 08/19] pipeline --- manifest.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/manifest.yml b/manifest.yml index 401f5c40c..097c81f0c 100644 --- a/manifest.yml +++ b/manifest.yml @@ -13,4 +13,4 @@ applications: CF_PASSWORD: py75s23c GITHUB_USERNAME: fullydead@github.com - GITHUB_OAUTH_TOKEN: b3a7083e2c34deecfb179b97aa4c641c08a32835 + GITHUB_OAUTH_TOKEN: bf9f27eb4e7701dd67a84b1fd2dd276387d75d9c From 57af4f20e4266a98d3d2e38d464e550abbfd240b Mon Sep 17 00:00:00 2001 From: "Leo Hee Hai Richard (NCS)" Date: Thu, 26 Jul 2018 13:53:41 +0800 Subject: [PATCH 09/19] pipeline --- .travis.yml | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/.travis.yml b/.travis.yml index 4cbb91300..f87d279f7 100644 --- a/.travis.yml +++ b/.travis.yml @@ -15,8 +15,8 @@ jobs: install: skip script: ./gradlew clean build before_deploy: - - git config --local user.name "Travis CI" - - git config --local user.email "travis@example.com" + - git config --local user.name "richard" + - git config --local user.email "fullydead@hotmail.com" - git tag -f $RELEASE_TAG deploy: provider: releases From c5ab3bcaf4e7349e83b8eec2009b4f17fc017fc2 Mon Sep 17 00:00:00 2001 From: richard Date: Thu, 26 Jul 2018 14:00:01 +0800 Subject: [PATCH 10/19] pipeline --- manifest.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/manifest.yml b/manifest.yml index 097c81f0c..135e7e720 100644 --- a/manifest.yml +++ b/manifest.yml @@ -13,4 +13,4 @@ applications: CF_PASSWORD: py75s23c GITHUB_USERNAME: fullydead@github.com - GITHUB_OAUTH_TOKEN: bf9f27eb4e7701dd67a84b1fd2dd276387d75d9c + GITHUB_OAUTH_TOKEN: 29018fc6733fcd67254337629a3ba3a542db9c29 From 88a2a3e40f105648aff2a6610401be58e677286e Mon Sep 17 00:00:00 2001 From: richard Date: Thu, 26 Jul 2018 14:27:09 +0800 Subject: [PATCH 11/19] pipeline --- manifest.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/manifest.yml b/manifest.yml index 135e7e720..f88bfb511 100644 --- a/manifest.yml +++ b/manifest.yml @@ -1,6 +1,6 @@ --- applications: -- name: pal-tracker +- name: pal-tracker-richard path: build/libs/pal-tracker.jar routes: - route: richard-pal-tracker-review.apps.evans.pal.pivotal.io From 50a27060ae3e1079b4c9cc205c40e29c3ab6782b Mon Sep 17 00:00:00 2001 From: richard Date: Thu, 26 Jul 2018 14:28:52 +0800 Subject: [PATCH 12/19] pipeline --- manifest.yml | 7 ------- 1 file changed, 7 deletions(-) diff --git a/manifest.yml b/manifest.yml index f88bfb511..bfc85a3b4 100644 --- a/manifest.yml +++ b/manifest.yml @@ -7,10 +7,3 @@ applications: env: WELCOME_MESSAGE: Hello from the review environment - CF_API_URL: https://api.sys.evans.pal.pivotal.io - CF_ORG: leo-hee-hai-richard - CF_USERNAME: richardleo@ncs.com.sg - CF_PASSWORD: py75s23c - - GITHUB_USERNAME: fullydead@github.com - GITHUB_OAUTH_TOKEN: 29018fc6733fcd67254337629a3ba3a542db9c29 From 1b217a9d8f5232d6dbbe20f224e6b1ca45ab184c Mon Sep 17 00:00:00 2001 From: richard Date: Thu, 26 Jul 2018 14:47:50 +0800 Subject: [PATCH 13/19] pipeline --- manifest.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/manifest.yml b/manifest.yml index bfc85a3b4..4e87b8387 100644 --- a/manifest.yml +++ b/manifest.yml @@ -6,4 +6,4 @@ applications: - route: richard-pal-tracker-review.apps.evans.pal.pivotal.io env: WELCOME_MESSAGE: Hello from the review environment - + RELEASE_TAG: pal-tracker-review From 94f5c63ba8e15f81d23908a9013a92505a24e247 Mon Sep 17 00:00:00 2001 From: richard Date: Thu, 26 Jul 2018 14:59:22 +0800 Subject: [PATCH 14/19] pipeline --- manifest.yml | 1 - src/main/java/io/pivotal/pal/tracker/WelcomeController.java | 3 +++ 2 files changed, 3 insertions(+), 1 deletion(-) diff --git a/manifest.yml b/manifest.yml index 4e87b8387..391b473a6 100644 --- a/manifest.yml +++ b/manifest.yml @@ -6,4 +6,3 @@ applications: - route: richard-pal-tracker-review.apps.evans.pal.pivotal.io env: WELCOME_MESSAGE: Hello from the review environment - RELEASE_TAG: pal-tracker-review diff --git a/src/main/java/io/pivotal/pal/tracker/WelcomeController.java b/src/main/java/io/pivotal/pal/tracker/WelcomeController.java index 4670637ec..85bd59205 100644 --- a/src/main/java/io/pivotal/pal/tracker/WelcomeController.java +++ b/src/main/java/io/pivotal/pal/tracker/WelcomeController.java @@ -6,6 +6,9 @@ @RestController public class WelcomeController { + WelcomeController(@Value("${WELCOME_MESSAGE}")){ + } + @GetMapping("/") public String sayHello() { return "hello"; From 54ee8faafc8137416c46a4f6442fac1bef8d63a9 Mon Sep 17 00:00:00 2001 From: richard Date: Thu, 26 Jul 2018 15:03:15 +0800 Subject: [PATCH 15/19] pipeline --- .../java/io/pivotal/pal/tracker/WelcomeController.java | 7 +++++-- 1 file changed, 5 insertions(+), 2 deletions(-) diff --git a/src/main/java/io/pivotal/pal/tracker/WelcomeController.java b/src/main/java/io/pivotal/pal/tracker/WelcomeController.java index 85bd59205..ddb02e29a 100644 --- a/src/main/java/io/pivotal/pal/tracker/WelcomeController.java +++ b/src/main/java/io/pivotal/pal/tracker/WelcomeController.java @@ -6,11 +6,14 @@ @RestController public class WelcomeController { - WelcomeController(@Value("${WELCOME_MESSAGE}")){ + private String msg; + + WelcomeController(@Value("${WELCOME_MESSAGE}") String msg){ + } @GetMapping("/") public String sayHello() { - return "hello"; + return msg; } } From 4866e4e4fedeed4800b8c3b99a954a3ab2a6ad4b Mon Sep 17 00:00:00 2001 From: richard Date: Fri, 27 Jul 2018 09:51:42 +0800 Subject: [PATCH 16/19] pipeline --- .gitignore | 5 - .gradle/4.4/fileChanges/last-build.bin | Bin 0 -> 1 bytes .../4.4/fileContent/annotation-processors.bin | Bin 0 -> 19037 bytes .gradle/4.4/fileContent/fileContent.lock | Bin 0 -> 17 bytes .gradle/4.4/fileHashes/fileHashes.bin | Bin 0 -> 20747 bytes .gradle/4.4/fileHashes/fileHashes.lock | Bin 0 -> 17 bytes .../4.4/fileHashes/resourceHashesCache.bin | Bin 0 -> 19517 bytes .gradle/4.4/taskHistory/taskHistory.bin | Bin 0 -> 28671 bytes .gradle/4.4/taskHistory/taskHistory.lock | Bin 0 -> 17 bytes .../buildOutputCleanup.lock | Bin 0 -> 17 bytes .gradle/buildOutputCleanup/cache.properties | 2 + .gradle/buildOutputCleanup/outputFiles.bin | Bin 0 -> 18803 bytes .idea/.name | 1 + .idea/compiler.xml | 9 + .idea/gradle.xml | 16 + .idea/misc.xml | 7 + .idea/vcs.xml | 6 + .idea/workspace.xml | 607 ++++++++++++++++++ .../pal/tracker/PalTrackerApplication.class | Bin 0 -> 734 bytes .../pal/tracker/WelcomeController.class | Bin 0 -> 817 bytes build/libs/pal-tracker.jar | Bin 0 -> 14421881 bytes build/libs/pal-tracker.jar.original | Bin 0 -> 1884 bytes build/tmp/jar/MANIFEST.MF | 2 + gradle/wrapper/gradle-wrapper.jar | Bin 54706 -> 54329 bytes gradle/wrapper/gradle-wrapper.properties | 3 +- manifest.yml | 8 - .../pal/tracker/WelcomeController.java | 1 + 27 files changed, 652 insertions(+), 15 deletions(-) delete mode 100644 .gitignore create mode 100644 .gradle/4.4/fileChanges/last-build.bin create mode 100644 .gradle/4.4/fileContent/annotation-processors.bin create mode 100644 .gradle/4.4/fileContent/fileContent.lock create mode 100644 .gradle/4.4/fileHashes/fileHashes.bin create mode 100644 .gradle/4.4/fileHashes/fileHashes.lock create mode 100644 .gradle/4.4/fileHashes/resourceHashesCache.bin create mode 100644 .gradle/4.4/taskHistory/taskHistory.bin create mode 100644 .gradle/4.4/taskHistory/taskHistory.lock create mode 100644 .gradle/buildOutputCleanup/buildOutputCleanup.lock create mode 100644 .gradle/buildOutputCleanup/cache.properties create mode 100644 .gradle/buildOutputCleanup/outputFiles.bin create mode 100644 .idea/.name create mode 100644 .idea/compiler.xml create mode 100644 .idea/gradle.xml create mode 100644 .idea/misc.xml create mode 100644 .idea/vcs.xml create mode 100644 .idea/workspace.xml create mode 100644 build/classes/java/main/io/pivotal/pal/tracker/PalTrackerApplication.class create mode 100644 build/classes/java/main/io/pivotal/pal/tracker/WelcomeController.class create mode 100644 build/libs/pal-tracker.jar create mode 100644 build/libs/pal-tracker.jar.original create mode 100644 build/tmp/jar/MANIFEST.MF delete mode 100644 manifest.yml diff --git a/.gitignore b/.gitignore deleted file mode 100644 index 4fa332f5c..000000000 --- a/.gitignore +++ /dev/null @@ -1,5 +0,0 @@ -build -.gradle -.idea -*.iml -ci/variables.yml diff --git a/.gradle/4.4/fileChanges/last-build.bin b/.gradle/4.4/fileChanges/last-build.bin new file mode 100644 index 0000000000000000000000000000000000000000..f76dd238ade08917e6712764a16a22005a50573d GIT binary patch literal 1 IcmZPo000310RR91 literal 0 HcmV?d00001 diff --git a/.gradle/4.4/fileContent/annotation-processors.bin b/.gradle/4.4/fileContent/annotation-processors.bin new file mode 100644 index 0000000000000000000000000000000000000000..13a9647663075baf47e10a29e4c0cbb9dcea1cd9 GIT binary patch literal 19037 zcmeI&-Aj{U7{~F)=~`-~7@PB;EOCU^K|@JWL`H^l84X`zp%YR(5?%G4q4NC4m3KLWP4;t%f|9$R0voer(!@zxt`&`zF!a4KG zO#3f$U%9*ZXwB`Pr+$a~YTomZcHTcJy1s$CeB|xd-zA|P>c6-r1W#&v7A*>z)5Se8 zUbkLpjpOfsiF^9rPP1n9^9!-xaGks6`(vx!8}ZQmUhewbV7M=L=W!(57bm*)K8UcTA5y#0RXCGC&>-?t(KHrW8rpWt5M_^_AUaW;nLRB*2u zZ?b6jZw`rG`iy)1TDB+L<=vxR$laosUua%%k5W(L-l1AnS1K~AX?~bHe@c=pB<|rI z0uX=z1Rwwb2tWV=5P$##AOHafKmY;|fB*y_009U<00Izz00bZa0SG_<0uX=z1Rwwb g2tWV=5P-n(6Ud1kDL(o-d}#aMgWG3Npdo$<2iJ+4fB*mh literal 0 HcmV?d00001 diff --git a/.gradle/4.4/fileContent/fileContent.lock b/.gradle/4.4/fileContent/fileContent.lock new file mode 100644 index 0000000000000000000000000000000000000000..a4267c5f121b164100ecee3e1396b30a070b54d0 GIT binary patch literal 17 UcmZR6cKY!HA^r>d7$86a07AY6M*si- literal 0 HcmV?d00001 diff --git a/.gradle/4.4/fileHashes/fileHashes.bin b/.gradle/4.4/fileHashes/fileHashes.bin new file mode 100644 index 0000000000000000000000000000000000000000..f925a9637e767fe2936c91d44ca752913031a54f GIT binary patch literal 20747 zcmeI3c~BHr9)KG;70>|>*Z=~8SyArWfQ+0D!zrtvfGDUK(Qt{u5CjL2Bb+KoSPTxJ z0VE)oAQHi7j9DchN*H8!2Mi!8qTy1A0^2>mewA8!w<>?_A6u`h=BRJ_oA>(b>ERFN zIS_<0Yo6YS-?x>&KgG{*0bBqVzy)vtTmToq1#kge02jaoZ~n@_6EQ=-xLpkz^UhaVBEiU_p8@%k?iT;1U4^{tMFuukLxX0&+ zmpxA#FR6__1Kh0%@v6|kEd#GL4QRd{@tT}^W_++}R58Cvj)y%a2k!Kok&r-zoO%>d|om6~*bMGT=D05Fs*uwFm-^T-SBSArbgmgq9aF0I3 zZTmYlA`6u}fOC!@ZqMI1KhRV28n~+t;!ZtACD8{}=>DEZ5$CeiJJlBR==12VhWHNI zd%-)B_ilpsaT`H==i^NiX3d+UfIBZn{J?vnwe8@^I(q+P#1FgMG#pFT_!u~M7V!uR zC(}9$6Z(DJhY&wfsqJ$~P#OdKd)gy@^n@@^P_ZW%xXT^HW3tX?Ca^bD(flpq$Damg z=7u-c19!fFc$~25P7BYv9Jq%P;^>heB%I+je2)v@0=NJ!fD7OPxBxDI3*Z8{04{(F z-~zY+E`ST*0=NJ!fD7OPxBxDI3*Z8{04{(F-~zY+E`ST*0=NJ!fD7OPxBxDI3*Z9( z%K|3kU^?VYle)2H3;r5ZZ9L$s_GbKt<6d);1R=Ihki9w;W+b+jeANGUqx|ekL38aF z*5MI{Dl>oc+eR5(!-r$RAT*f9>XZ6Ez5-=^nl z%D?1&H=~LD5De=XFo>U+#)jz*AAjLF-KMamYxoMLV)Pilfw7{RX?Tylw@6*ru75)) zIP~}I(J?UCDqzU{QRB3L{)P7+Hu98C{P!^`SP4=`ajpTJ0m z6%}#`=}eZ^oZc;(70cd-Y5c`(c4F^2ucFqL>xFgG--m*c z^@Ye-!r99-YHfIt-rHxay)5#z_tno_0OL%v$RHL=GmW72_9=$Vg=#j>Z`n3#Cfb2< z3049q1bZ+IPL*` z$oW%7$*5>nvKKEijlkGUmYOo_N?l5eXHAMKxgLcwzJ_xyArZ|qG>UrEvO)~j4%w%L z4c}@wMHzutYG9>0E(?B64`RiX75xyFGSqd;6VEAi?FOylP_astH% zS4|~2vWYF5^XT*OC3POiD4ON+86`$n&$% zs2Wm^)|MDCDQ&#m(EaF@Bpk;>1Cc?@Xfln_qgqA3Ci+NPm+4v_7_)4FF~0H>8De6? zOe1|&yOD2XsZ`%Khske8g2-<+s#W({7-N>aCKt{sysg+S#IV=6_UHGH<`Xl>^;VS8 zL(PWV9zP@R7JM@-xzSv|>N;=m=J7hUq()=9Rgt_%knnI~8lQSr$=dlFtZRWJudm%kdT*hfRGL;kx>X&a%F)LB9Yt`B|looYe?p@F$o?@BOh@ zt(}*zWxBm?DBHzpF literal 0 HcmV?d00001 diff --git a/.gradle/4.4/fileHashes/resourceHashesCache.bin b/.gradle/4.4/fileHashes/resourceHashesCache.bin new file mode 100644 index 0000000000000000000000000000000000000000..830b7171a1b4351e2031b7d6f8bfd41dc4980df9 GIT binary patch literal 19517 zcmeI)T})GV9LDid93m}ieZdxxQh{MnTxr}?GJz;aXiFxAxqu9`6sIzQRoDOv3(6#l zRcIMwL~yQ*q8Cg+r_E~FWCFv{F#*Mi78n`fMQ9eNrSdkqbN(~wS+bj5nO~E_$+u5V zb3TMCdI%$tnDj;bL3;6Ud2t9wAOHd&00JNY0w4eaAOHd&00JNY0w4eaAOHd&00JNY z0xyfe-lYq1!Y+pCPqrS=vPh%=>e2x#zk7simi`%ry&UO|{(f*SZb8D7wJcy=(1v<( zguUa4qud_r{F|tkxE)^JQ!6`xcW2bES18JJJyUA19#M;W%PNy{*Ry&t)`fde??0CB z!hX{dgP&&>^ZZ;$0O;fDa zR;&vts8f85!O1kg8GL^V^_5$V?URS%doJptis%o;Ne_16`%=^sUg@f{n@W=5eKYF&gTA0r zIOD(L=P5(|zyqmBD)JodB%=e-SlxJ_v(!8I%O>}|hSlW@<_m#v&Mc0=_MIAS*IflwLfvLCC zh>IPPKK`}fyu$QI-PO1JT(=V!>2X8cO?SUzPfNDTs&-&?on}sI#npaH|zeJ}Eao%dsS?>q1 zS!f6A;~SQB+KI1lh1Ghwk+|ryZ~TFgsp<}6tlRdK@s$H{A(M7^Fq+Rcn^Zk#3Q3VY z#D(_$dI2vctM5V3p6qQ$^-SWz>7p#Tbhr0dzTdqp=B(;p&as=r`}(2Ovx}E4F&~KX zvEEx^b1lL{?53jEPDhn`7*1l8r3)qh{@ EUl3T982|tP literal 0 HcmV?d00001 diff --git a/.gradle/4.4/taskHistory/taskHistory.bin b/.gradle/4.4/taskHistory/taskHistory.bin new file mode 100644 index 0000000000000000000000000000000000000000..16660e63a1b5f7cbd7407f2173ab20e3fcbbf946 GIT binary patch literal 28671 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 literal 0 HcmV?d00001 diff --git a/.gradle/buildOutputCleanup/cache.properties b/.gradle/buildOutputCleanup/cache.properties new file mode 100644 index 000000000..d6bb7e901 --- /dev/null +++ b/.gradle/buildOutputCleanup/cache.properties @@ -0,0 +1,2 @@ +#Fri Jul 27 01:08:31 SGT 2018 +gradle.version=4.4 diff --git a/.gradle/buildOutputCleanup/outputFiles.bin b/.gradle/buildOutputCleanup/outputFiles.bin new file mode 100644 index 0000000000000000000000000000000000000000..11c50f7e37ab6662e007f60b235d31751623690d GIT binary patch literal 18803 zcmeI%Pbha_7bzjplyXvt%mF2F5U0h7 zgFhD%QBDdIjd^F!(~_Hu()X?R-LLO{J$rwj>naQ*H6b9E5x!EwOI8RVfB*srAbsyvNPVJes+rB67%$f9E?M>(Q$C910e(B}f_0upSWL9VgPXrJ^009ILKmY**5I_I{ z1Q0*~0R#|0009ILKmY**5I_I{1Q0*~0R#|0009ILKmY**5I_I{1d2_9X!DK;-oZ!Q Ww_=7rEI;4pcjb4d`1xC3b3OqwIP**Z literal 0 HcmV?d00001 diff --git a/.idea/.name b/.idea/.name new file mode 100644 index 000000000..3fdb09331 --- /dev/null +++ b/.idea/.name @@ -0,0 +1 @@ +pal-tracker \ No newline at end of file diff --git a/.idea/compiler.xml b/.idea/compiler.xml new file mode 100644 index 000000000..fa227eb5a --- /dev/null +++ b/.idea/compiler.xml @@ -0,0 +1,9 @@ + + + + + + + + + \ No newline at end of file diff --git a/.idea/gradle.xml b/.idea/gradle.xml new file mode 100644 index 000000000..ba1ec5c7e --- /dev/null +++ b/.idea/gradle.xml @@ -0,0 +1,16 @@ + + + + + + \ No newline at end of file diff --git a/.idea/misc.xml b/.idea/misc.xml new file mode 100644 index 000000000..bc8d0a3a6 --- /dev/null +++ b/.idea/misc.xml @@ -0,0 +1,7 @@ + + + + + + + \ No newline at end of file diff --git a/.idea/vcs.xml b/.idea/vcs.xml new file mode 100644 index 000000000..94a25f7f4 --- /dev/null +++ b/.idea/vcs.xml @@ -0,0 +1,6 @@ + + + + + + \ No newline at end of file diff --git a/.idea/workspace.xml b/.idea/workspace.xml new file mode 100644 index 000000000..d2eef8112 --- /dev/null +++ b/.idea/workspace.xml @@ -0,0 +1,607 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + - - @@ -544,34 +535,35 @@ + - + - - - - - - + + + + + - - - + + + + - - + - - - + + - - + + + + @@ -580,14 +572,79 @@ - + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/.travis.yml b/.travis.yml index f87d279f7..a68a2c74c 100644 --- a/.travis.yml +++ b/.travis.yml @@ -23,17 +23,3 @@ jobs: api_key: $GITHUB_OAUTH_TOKEN file: "build/libs/pal-tracker.jar" skip_cleanup: true - - stage: deploy to review - language: bash - script: - - echo "Downloading $RELEASE_TAG" - - wget -P build/libs https://github.com/$GITHUB_USERNAME/pal-tracker/releases/download/$RELEASE_TAG/pal-tracker.jar - before_deploy: - - echo "Deploying $RELEASE_TAG to review" - deploy: - provider: cloudfoundry - api: $CF_API_URL - username: $CF_USERNAME - password: $CF_PASSWORD - organization: $CF_ORG - space: review diff --git a/build/classes/java/main/io/pivotal/pal/tracker/WelcomeController.class b/build/classes/java/main/io/pivotal/pal/tracker/WelcomeController.class index 1839f90ff7e81623c603f2390ea62bb10ff02087..c8c1555a8a3308ef5b0bce2f2c63b24c0e854e08 100644 GIT binary patch delta 77 zcmdnUwu@~;6_cYI0}~K3FmP#YXJFLQ-patV5y)d=-~y6-49q~1hk=EGmw^+=;|B7? RAgY0)yg(jM-{eh9^#GD52tNP- delta 68 zcmdnRwvlZ^6_bT610w?y0|NuA)^-NQjX(wy0~e6w0t@mmurTm3a0B^b5Je0;47@-d KQ2FHDO!WXKvcH&iK2pl=0)-Th5@9m`}ur7v-3ay^Pe+k&dhnV zz0rK_jz)7$Y>c3=H&dxpWr8{-1s6FBpu%5!llC(oUfgy zcVePoCig=}^fTV(hCeUt&j&p(yn+vZUib_@T|n(agM}i_S{lZT2h*#raAsy9#tVuV zgLK*4NfQ?L9;SV7V)Lb}mdseIU*iYZL~U%`V=+iO$zjj0WxMu{WWu^LU%iu=Sevw> zc(TLK;cFC;KUdn`80%KEb+3KFD4RpWx36gaZ9)3#C+$tWD;;&0<7$dMUbwNy`eEwP zi)H?2)@jb)96es~<2RZ|m7(*p{QB+MxxZJ|$_toSC>?>7lv!yROXdZNq{+*55bo zTw}FgQ@X;Ss4`twHh2sUXkDf+Op!cqNxOIQ{+!0rkDJrutSh!w_V2k6+s2#q_*vtB zWTwVqoyLL#9t2Q;63jtrQ-LK|ff_Vm4K`p4TIdCK&>QT*0UV(Z^aUqyhJN4zuAqbd zFaX@Z9R|W6@BmL33|`<3KHv*4zz`S;e&7$oAOMELi|`TzLJ;U77(yTv!r)~X0pSn< zBOww-!Dx5|#=uw@2T>3WF)$t`z(jZzVj&JDK|D-`DKHhLK?1x6(;*RNz)VPjWS9lB zVGg9gT$l&*;dOWe7C1pk14!eKZ9N8w9224BH(sDQ8G1XRLF z_y(%rTd0N_sD)E-8qUC3I0xt90$hYTxCGz9zu9pce7UwO(2p|i zFfYEvsVkr|hP#>@{hjS;z#V2~95v8h{p=eUN!q(?rjQe;rh_fak+SZxFu}%EM+S!% z`qI_AESy_NuJ_nfVZ;_aJ!RvZY2!T>CERA?q_ZJXO&i)eC|)alOgn#tgW@|y>ic`96yfe0+0ggl~>J8SbNxXF?t&6`kxy)%V#5A=1()pSd-& zU?IBbq;%#(>^@56H!~eKl**b}g0Lm5hDyR}hLFC6d2zKgyM;~Q7#(O~(*$*&)AIE6 zZ)JLJ6D72=$=qxzZDsMC7jX|*9G67#57-o*yFmLNuvl&jwLM_|@@mU)aCLS(Q)V(- zy!3UyuIJwQP?H}r7ook(L~q^GIZ&l-iqaB`uCsBM)EIftL~ixL&SZMXG;+bZDd(Mq zoUXW5C925#59Tefu29)olLcwZO*(1|an;byKQLpa!<}`I?@X8}RleJ7wf-FAym~qOH)(Hf0>Wa z=Tv8?E)r|TzsaN^Wg80+)}DQqiZwR@Bks7|sy1A1&DEZrDz2K;bgm7>_WaT_-ciis zF^VPr_Nl+zS& z;%r{$DTO>c23}Ak26A%>E{QYvmjdMQq5$SXTFO?^RfVXgHJs?o2L*N)SJUc1W=~HC zs+Ck{iG)@paFwLxQMx@u$_t|XycouR94Vayl1>o)`CD;v^^V!f5=0mIVa__5;;58f z>D_cv5GQeuq=OfQDa0r~CRys@E`59bx(DRJo6qkKJ5z*G)bmlP-4O>erZNY*YIVBv z0bf>PbiJraDW>uHOMB!MnqyS<%j5{wv16fy=+Cv%FbgpWFWg28F@;~4DL3!TWX|$3 z?^rY=vAX%0S#ldzXB1zNBcC*=L|6I7+#>Xj=F*LY<`HKt`cS;3=))U3PwMh;UtLq^ z!Qb2@<-}0?l5Dj+sR>rNL|~B=9z{p2Fw}k9UirNa$B}q ze3>7&vpdm-mOjA;w~q$J`j$%JU`o@VnB`$P=afba;%*jNi|hH*$K+7-4rWc&)?y%U zd0dKwP>_u{j2~9fJr#De-A1%~_WU|-^Y%5leZY05q=z=R*NE#qBGI;@w|QJW!-V_~ D;89+H delta 3461 zcmZwJ30zHS9|!Qxx%XD8tF+v--Kazxm6XV|AlVXSNreoem+V_JwAl615dBfIjC~DJ zvgKv6X2}@zoL886c`IqLWN&`w9vXby&*%F&_rE;Pea<;g=ajmsR{Kp(t#3pSNIX(79Y`;Bvm)vo#*kZg8?X^IT(Twv;bo;0aGvo6_`UyumDT20&B1VHP}KcXbpB?4-U`<9HA|= z11E3>7jOkPXb&C09X!AjI)WE;0&nnv&fp7Opey)6H~0bkApim)2)aWL=n28l3qqhb z^nt$65BftW41h2g2!kLTB498KfuS%AB4Id0K{Uj`2p9>YAQnc$k1z(t!Z?V7@h}16 z;a@NjCP4yBhAA)=ronWW0W)D1%!WBI7ZTwo_!;KGd`N<1NP$#X01IIeEQTep6qdnq zNP~aF3Rns0@C&Sh)sO*eU@c?t!U;GDr{FZ4fg(5y|ABLG9)5#jxBwU75?qEW za1~168eE4Pa1%=57W@vk;Sab2ci~>XTBq#TZp}-8lKs=%rEl&VIy;d2p)zZ{11R)R zSuZIaYnx$80ddhrre8t7G-5D5`pBu&2c9g2Me}%Zv zlv8C2+N3AwQtC`I>->%BY}f#Cdh~hbJC!ppJuw&x+`TBcgki-|T?vcT`Bv*og?HAW7VX1TG-X|91tnB7T{5m_{`_vE zuhZT6DvK{N*Q!|`-q${3guNGqK4a~;RGR&aMaUF3>WmhaW)xtfwxkaz$VQvFYBJqw zn7^#ky3PnJDXJn^NjqwopX?C}(PSEHSXbE!hj0XT6y_GLLxMxNDb-dpJz7}H)Uu~; zV$F;SYgu>M;x%J5fmt0Uo$zBk0u@cFV*#>g-C3Fn>CRG%3(%wLI*e|uOw^>Km5D8- zbkBM*?UF{lT+-}lX+6%th7Q%UD9)FZ&)E=J;D)m_vRQ@|r95XoTpK$6oDGwu`xVns zzhXBEe1QR{DgFiP&y`Za3pSMF$>=2uQb7oE_I@ZFVSgBdau|(ZZJi^ zVuNL`OG@eBxDs=^@``ol(n;RHKJE3`2NP7*;ypT>Tc$O6T3mA_nziknM;@7M@#4sCwNMsnGi?~xlsvG3Uw{@hckeUu|J zB6W3{k_>We3^Ly`IXQk{mYj+LKd^Yds#a`sqhxQa;LorUV@*c`I{3*P)$xK8o#JrM z*B}2hc*sW#PNAtESsb5iE_Qg6Q6ux@hgeAMlNy;f-)JQT*BV(@US=Z(judKxr5JF6 z(b|E6C2!^^WwAi(wFd=fKGID}aGcPIclDHl5u6arxAztUC%VoFz4?4!sS>~oUHF$> z#K4=vx-t`D2A8B0yv+-i+9nuY0h~VF&=w}}Pk)vQF*-t5-ZohZPU;8&{OAQz zfc@5kk60`P*ip8Wpd%R25nVye=cP&McWJDJCjIFhaNb9y5O=yKc{CFSbIZkp3)N&Z zL;8O@&ZpHrJq1ls3i|X{Gn`QQYH1og`CC(eB_96+GMM%kU9o!Ta@)|n36W@3+|jh-PFg)8SZbYn$ukaK}Bf>m`LkbQyRZ?41?|);L?@nH>EYJ z2;qwgn=+c&EvUQ^yRT9yPI9uT){+963m$yCQ&I*O%$UaO2*%RIXxb!??o0J|&4muU RPq`F?8Vc>TLn;_9*56REHctQm diff --git a/build/libs/pal-tracker.jar.original b/build/libs/pal-tracker.jar.original index 95c92fcd8d04e3731b568d1fa5bf99366572a2a5..5c9d9916e4e357a7f9f63ca30acb0eb296af791a 100644 GIT binary patch delta 688 zcmcb^_mqz(z?+$ci-CcIgMoR|L>_e}AZhBY%Dm~f4+9V|fe0XA2I9ipOTJ5Si-Cx7m1J z<>zOaWp#i5eH1<*CU-6H*j!be2YI~Tvv!={U~sCP=j;m?AC~KfczzzRPHoedSfxKT z@So`6v)8T`S=Xm&l)s&r645(lV*atkF1yN=E*f398S)~+LiFC|l$-Sdmd@%y)6%n& z_Fk}2{_MA8`K6D{D}${k#b)o>9OdmUB=^3*H(XhAb&TN2=!ZuD)=xV{)Se$#`g(0{apA=S$qSE9+MzvJV8RV``Fj4U!1DF?t>1iS zYkqt8o_gESm^u5WMMbxL4f|bx`{tkUTQXheQVt2H_UU!soVrhcQ;ye33+LK|<9buA zwbtZ3KIJ!$Rh8%bbGZ%r#r2s>d9Qp}(8#rlXKiIY%i&x1S>LFt8+|RYSX|17)a^A~BacrKs0`?Rlco2;mxxj}n}+xlM3S({Ef z2(pH`g*sho+TgWq+GDGoYI$dt6|@KiysUA3`T1x=*2EmKBfXjlZhPW-mLKNJd4KRz z(ucK+K9>dZ?wx%=KERuiNrV}ef>2WpCphgeFiiGjl?SGd$yuxpAZiV(K8U)@Y7U~r b*sMWRFq<=on!y%_mVTJogW2?0K_&qJH6|XV delta 657 zcmaFLcZZKBz?+$ci-CcIgCW*$B9A%~kTmsHjrIHO!vF+KAOZ-OfjBc?pP2zg`BF`g z@(a2k^1msN+-$~pmys8w`R1H=h8Gwa7z`&XFq_p+I-MtMDAHEHeCHO$Evj2ui$ptI zFR|V$X*}Y(YEgigaF>)x?1mLK!R9-@-catJyvk{hu!o0-P6dM;SD{U(S72mH;j!b- zKmEKu^YiQP{qq^NecaHg^-d>|v0Qq`^#iqSt!pFgeYftZRyLW6$htl=NOWX!-k*gN% zOlZy7dVtsJ)(*?&;+BwxdgrI7S@*=T-B#UUsyn0c`iW_po8&U&4|IKc7@hk3t&wz< zd82)RHzSh>Gc4guwqXTD|Kws;2N1QDRUbq>V>Jg+@@&>1Du&G&L@i{CLrWk$?7?iR Ite{i|0E|Tz$^ZZW diff --git a/manifests.yml b/manifests.yml new file mode 100644 index 000000000..7646099ee --- /dev/null +++ b/manifests.yml @@ -0,0 +1,8 @@ +--- +applications: +- name: pal-tracker + path: build/libs/pal-tracker.jar + routes: + - route: ps-pal-tracker-review.local.pcfdev.io + env: + WELCOME_MESSAGE: Hello from the review environment \ No newline at end of file diff --git a/src/main/java/io/pivotal/pal/tracker/WelcomeController.java b/src/main/java/io/pivotal/pal/tracker/WelcomeController.java index 4138ffc94..ba1a485c8 100644 --- a/src/main/java/io/pivotal/pal/tracker/WelcomeController.java +++ b/src/main/java/io/pivotal/pal/tracker/WelcomeController.java @@ -10,7 +10,7 @@ public class WelcomeController { private String msg; WelcomeController(@Value("${WELCOME_MESSAGE}") String msg){ - + this.msg = msg; } @GetMapping("/") From 5dee4fbdb53fd0d80a00ce24872c5333da91cf61 Mon Sep 17 00:00:00 2001 From: Tyson Gern Date: Thu, 20 Jul 2017 15:04:20 -0600 Subject: [PATCH 18/19] Add tests for MVC lab --- .../InMemoryTimeEntryRepositoryTest.java | 71 ++++++++++ .../pal/tracker/TimeEntryControllerTest.java | 116 ++++++++++++++++ .../pal/trackerapi/TimeEntryApiTest.java | 126 ++++++++++++++++++ 3 files changed, 313 insertions(+) create mode 100644 src/test/java/test/pivotal/pal/tracker/InMemoryTimeEntryRepositoryTest.java create mode 100644 src/test/java/test/pivotal/pal/tracker/TimeEntryControllerTest.java create mode 100644 src/test/java/test/pivotal/pal/trackerapi/TimeEntryApiTest.java diff --git a/src/test/java/test/pivotal/pal/tracker/InMemoryTimeEntryRepositoryTest.java b/src/test/java/test/pivotal/pal/tracker/InMemoryTimeEntryRepositoryTest.java new file mode 100644 index 000000000..d0ae6cbe6 --- /dev/null +++ b/src/test/java/test/pivotal/pal/tracker/InMemoryTimeEntryRepositoryTest.java @@ -0,0 +1,71 @@ +package test.pivotal.pal.tracker; + +import io.pivotal.pal.tracker.InMemoryTimeEntryRepository; +import io.pivotal.pal.tracker.TimeEntry; +import org.junit.Test; + +import java.time.LocalDate; +import java.util.List; + +import static java.util.Arrays.asList; +import static org.assertj.core.api.Assertions.assertThat; + +public class InMemoryTimeEntryRepositoryTest { + @Test + public void create() throws Exception { + InMemoryTimeEntryRepository repo = new InMemoryTimeEntryRepository(); + TimeEntry createdTimeEntry = repo.create(new TimeEntry(123L, 456L, LocalDate.parse("2017-01-08"), 8)); + + TimeEntry expected = new TimeEntry(1L, 123L, 456L, LocalDate.parse("2017-01-08"), 8); + assertThat(createdTimeEntry).isEqualTo(expected); + + TimeEntry readEntry = repo.find(createdTimeEntry.getId()); + assertThat(readEntry).isEqualTo(expected); + } + + @Test + public void find() throws Exception { + InMemoryTimeEntryRepository repo = new InMemoryTimeEntryRepository(); + repo.create(new TimeEntry(123L, 456L, LocalDate.parse("2017-01-08"), 8)); + + TimeEntry expected = new TimeEntry(1L, 123L, 456L, LocalDate.parse("2017-01-08"), 8); + TimeEntry readEntry = repo.find(1L); + assertThat(readEntry).isEqualTo(expected); + } + + @Test + public void list() throws Exception { + InMemoryTimeEntryRepository repo = new InMemoryTimeEntryRepository(); + repo.create(new TimeEntry(123L, 456L, LocalDate.parse("2017-01-08"), 8)); + repo.create(new TimeEntry(789L, 654L, LocalDate.parse("2017-01-07"), 4)); + + List expected = asList( + new TimeEntry(1L, 123L, 456L, LocalDate.parse("2017-01-08"), 8), + new TimeEntry(2L, 789L, 654L, LocalDate.parse("2017-01-07"), 4) + ); + assertThat(repo.list()).isEqualTo(expected); + } + + @Test + public void update() throws Exception { + InMemoryTimeEntryRepository repo = new InMemoryTimeEntryRepository(); + TimeEntry created = repo.create(new TimeEntry(123L, 456L, LocalDate.parse("2017-01-08"), 8)); + + TimeEntry updatedEntry = repo.update( + created.getId(), + new TimeEntry(321L, 654L, LocalDate.parse("2017-01-09"), 5)); + + TimeEntry expected = new TimeEntry(created.getId(), 321L, 654L, LocalDate.parse("2017-01-09"), 5); + assertThat(updatedEntry).isEqualTo(expected); + assertThat(repo.find(created.getId())).isEqualTo(expected); + } + + @Test + public void delete() throws Exception { + InMemoryTimeEntryRepository repo = new InMemoryTimeEntryRepository(); + TimeEntry created = repo.create(new TimeEntry(123L, 456L, LocalDate.parse("2017-01-08"), 8)); + + repo.delete(created.getId()); + assertThat(repo.list()).isEmpty(); + } +} diff --git a/src/test/java/test/pivotal/pal/tracker/TimeEntryControllerTest.java b/src/test/java/test/pivotal/pal/tracker/TimeEntryControllerTest.java new file mode 100644 index 000000000..d80f2b999 --- /dev/null +++ b/src/test/java/test/pivotal/pal/tracker/TimeEntryControllerTest.java @@ -0,0 +1,116 @@ +package test.pivotal.pal.tracker; + +import io.pivotal.pal.tracker.TimeEntry; +import io.pivotal.pal.tracker.TimeEntryController; +import io.pivotal.pal.tracker.TimeEntryRepository; +import org.junit.Before; +import org.junit.Test; +import org.springframework.http.HttpStatus; +import org.springframework.http.ResponseEntity; + +import java.time.LocalDate; +import java.util.List; + +import static java.util.Arrays.asList; +import static org.assertj.core.api.Assertions.assertThat; +import static org.mockito.Matchers.any; +import static org.mockito.Matchers.eq; +import static org.mockito.Mockito.*; + +public class TimeEntryControllerTest { + private TimeEntryRepository timeEntryRepository; + private TimeEntryController controller; + + @Before + public void setUp() throws Exception { + timeEntryRepository = mock(TimeEntryRepository.class); + controller = new TimeEntryController(timeEntryRepository); + } + + @Test + public void testCreate() throws Exception { + TimeEntry timeEntryToCreate = new TimeEntry(123L, 456L, LocalDate.parse("2017-01-08"), 8); + TimeEntry expectedResult = new TimeEntry(1L, 123L, 456L, LocalDate.parse("2017-01-08"), 8); + doReturn(expectedResult) + .when(timeEntryRepository) + .create(any(TimeEntry.class)); + + + ResponseEntity response = controller.create(timeEntryToCreate); + + + verify(timeEntryRepository).create(timeEntryToCreate); + assertThat(response.getStatusCode()).isEqualTo(HttpStatus.CREATED); + assertThat(response.getBody()).isEqualTo(expectedResult); + } + + @Test + public void testRead() throws Exception { + TimeEntry expected = new TimeEntry(1L, 123L, 456L, LocalDate.parse("2017-01-08"), 8); + doReturn(expected) + .when(timeEntryRepository) + .find(1L); + + ResponseEntity response = controller.read(1L); + + verify(timeEntryRepository).find(1L); + assertThat(response.getStatusCode()).isEqualTo(HttpStatus.OK); + assertThat(response.getBody()).isEqualTo(expected); + } + + @Test + public void testRead_NotFound() throws Exception { + doReturn(null) + .when(timeEntryRepository) + .find(1L); + + ResponseEntity response = controller.read(1L); + assertThat(response.getStatusCode()).isEqualTo(HttpStatus.NOT_FOUND); + } + + @Test + public void testList() throws Exception { + List expected = asList( + new TimeEntry(1L, 123L, 456L, LocalDate.parse("2017-01-08"), 8), + new TimeEntry(2L, 789L, 321L, LocalDate.parse("2017-01-07"), 4) + ); + doReturn(expected).when(timeEntryRepository).list(); + + ResponseEntity> response = controller.list(); + + verify(timeEntryRepository).list(); + assertThat(response.getStatusCode()).isEqualTo(HttpStatus.OK); + assertThat(response.getBody()).isEqualTo(expected); + } + + @Test + public void testUpdate() throws Exception { + TimeEntry expected = new TimeEntry(1L, 987L, 654L, LocalDate.parse("2017-01-07"), 4); + doReturn(expected) + .when(timeEntryRepository) + .update(eq(1L), any(TimeEntry.class)); + + ResponseEntity response = controller.update(1L, expected); + + verify(timeEntryRepository).update(1L, expected); + assertThat(response.getStatusCode()).isEqualTo(HttpStatus.OK); + assertThat(response.getBody()).isEqualTo(expected); + } + + @Test + public void testUpdate_NotFound() throws Exception { + doReturn(null) + .when(timeEntryRepository) + .update(eq(1L), any(TimeEntry.class)); + + ResponseEntity response = controller.update(1L, new TimeEntry()); + assertThat(response.getStatusCode()).isEqualTo(HttpStatus.NOT_FOUND); + } + + @Test + public void testDelete() throws Exception { + ResponseEntity response = controller.delete(1L); + verify(timeEntryRepository).delete(1L); + assertThat(response.getStatusCode()).isEqualTo(HttpStatus.NO_CONTENT); + } +} diff --git a/src/test/java/test/pivotal/pal/trackerapi/TimeEntryApiTest.java b/src/test/java/test/pivotal/pal/trackerapi/TimeEntryApiTest.java new file mode 100644 index 000000000..91e271b45 --- /dev/null +++ b/src/test/java/test/pivotal/pal/trackerapi/TimeEntryApiTest.java @@ -0,0 +1,126 @@ +package test.pivotal.pal.trackerapi; + +import com.jayway.jsonpath.DocumentContext; +import io.pivotal.pal.tracker.PalTrackerApplication; +import io.pivotal.pal.tracker.TimeEntry; +import org.junit.Test; +import org.junit.runner.RunWith; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.boot.test.context.SpringBootTest; +import org.springframework.boot.test.web.client.TestRestTemplate; +import org.springframework.http.HttpEntity; +import org.springframework.http.HttpMethod; +import org.springframework.http.HttpStatus; +import org.springframework.http.ResponseEntity; +import org.springframework.test.context.junit4.SpringRunner; + +import java.time.LocalDate; +import java.util.Collection; + +import static com.jayway.jsonpath.JsonPath.parse; +import static org.assertj.core.api.Assertions.assertThat; +import static org.springframework.boot.test.context.SpringBootTest.WebEnvironment.RANDOM_PORT; + +@RunWith(SpringRunner.class) +@SpringBootTest(classes = PalTrackerApplication.class, webEnvironment = RANDOM_PORT) +public class TimeEntryApiTest { + + @Autowired + private TestRestTemplate restTemplate; + + private TimeEntry timeEntry = new TimeEntry(123L, 456L, LocalDate.parse("2017-01-08"), 8); + + @Test + public void testCreate() throws Exception { + ResponseEntity createResponse = restTemplate.postForEntity("/time-entries", timeEntry, String.class); + + + assertThat(createResponse.getStatusCode()).isEqualTo(HttpStatus.CREATED); + + DocumentContext createJson = parse(createResponse.getBody()); + assertThat(createJson.read("$.id", Long.class)).isGreaterThan(0); + assertThat(createJson.read("$.projectId", Long.class)).isEqualTo(123L); + assertThat(createJson.read("$.userId", Long.class)).isEqualTo(456L); + assertThat(createJson.read("$.date", String.class)).isEqualTo("2017-01-08"); + assertThat(createJson.read("$.hours", Long.class)).isEqualTo(8); + } + + @Test + public void testList() throws Exception { + Long id = createTimeEntry(); + + + ResponseEntity listResponse = restTemplate.getForEntity("/time-entries", String.class); + + + assertThat(listResponse.getStatusCode()).isEqualTo(HttpStatus.OK); + + DocumentContext listJson = parse(listResponse.getBody()); + + Collection timeEntries = listJson.read("$[*]", Collection.class); + assertThat(timeEntries.size()).isEqualTo(1); + + Long readId = listJson.read("$[0].id", Long.class); + assertThat(readId).isEqualTo(id); + } + + @Test + public void testRead() throws Exception { + Long id = createTimeEntry(); + + + ResponseEntity readResponse = this.restTemplate.getForEntity("/time-entries/" + id, String.class); + + + assertThat(readResponse.getStatusCode()).isEqualTo(HttpStatus.OK); + DocumentContext readJson = parse(readResponse.getBody()); + assertThat(readJson.read("$.id", Long.class)).isEqualTo(id); + assertThat(readJson.read("$.projectId", Long.class)).isEqualTo(123L); + assertThat(readJson.read("$.userId", Long.class)).isEqualTo(456L); + assertThat(readJson.read("$.date", String.class)).isEqualTo("2017-01-08"); + assertThat(readJson.read("$.hours", Long.class)).isEqualTo(8); + } + + @Test + public void testUpdate() throws Exception { + Long id = createTimeEntry(); + TimeEntry updatedTimeEntry = new TimeEntry(2L, 3L, LocalDate.parse("2017-01-09"), 9); + + + ResponseEntity updateResponse = restTemplate.exchange("/time-entries/" + id, HttpMethod.PUT, new HttpEntity<>(updatedTimeEntry, null), String.class); + + + assertThat(updateResponse.getStatusCode()).isEqualTo(HttpStatus.OK); + + DocumentContext updateJson = parse(updateResponse.getBody()); + assertThat(updateJson.read("$.id", Long.class)).isEqualTo(id); + assertThat(updateJson.read("$.projectId", Long.class)).isEqualTo(2L); + assertThat(updateJson.read("$.userId", Long.class)).isEqualTo(3L); + assertThat(updateJson.read("$.date", String.class)).isEqualTo("2017-01-09"); + assertThat(updateJson.read("$.hours", Long.class)).isEqualTo(9); + } + + @Test + public void testDelete() throws Exception { + Long id = createTimeEntry(); + + + ResponseEntity deleteResponse = restTemplate.exchange("/time-entries/" + id, HttpMethod.DELETE, null, String.class); + + + assertThat(deleteResponse.getStatusCode()).isEqualTo(HttpStatus.NO_CONTENT); + + ResponseEntity deletedReadResponse = this.restTemplate.getForEntity("/time-entries/" + id, String.class); + assertThat(deletedReadResponse.getStatusCode()).isEqualTo(HttpStatus.NOT_FOUND); + } + + private Long createTimeEntry() { + HttpEntity entity = new HttpEntity<>(timeEntry); + + ResponseEntity response = restTemplate.exchange("/time-entries", HttpMethod.POST, entity, TimeEntry.class); + + assertThat(response.getStatusCode()).isEqualTo(HttpStatus.CREATED); + + return response.getBody().getId(); + } +} From 4028dfe019ad97633ec17303ff4f5f8e03bc8c61 Mon Sep 17 00:00:00 2001 From: richard Date: Thu, 2 Aug 2018 15:16:07 +0800 Subject: [PATCH 19/19] MVC --- .../4.4/fileContent/annotation-processors.bin | Bin 19037 -> 19379 bytes .gradle/4.4/fileContent/fileContent.lock | Bin 17 -> 17 bytes .gradle/4.4/fileHashes/fileHashes.bin | Bin 20747 -> 23347 bytes .gradle/4.4/fileHashes/fileHashes.lock | Bin 17 -> 17 bytes .../4.4/fileHashes/resourceHashesCache.bin | Bin 19517 -> 22475 bytes .gradle/4.4/taskHistory/taskHistory.bin | Bin 28671 -> 134084 bytes .gradle/4.4/taskHistory/taskHistory.lock | Bin 17 -> 17 bytes .../buildOutputCleanup.lock | Bin 17 -> 17 bytes .gradle/buildOutputCleanup/outputFiles.bin | Bin 18803 -> 18929 bytes .idea/workspace.xml | 376 +++++++++++------- build.gradle | 14 + .../pal/tracker/PalTrackerApplication.class | Bin 734 -> 2276 bytes build/libs/pal-tracker.jar | Bin 14421890 -> 14523067 bytes build/libs/pal-tracker.jar.original | Bin 1893 -> 6642 bytes .../tracker/InMemoryTimeEntryRepository.java | 62 +++ .../pal/tracker/PalTrackerApplication.java | 20 + .../io/pivotal/pal/tracker/TimeEntry.java | 87 ++++ .../pal/tracker/TimeEntryController.java | 57 +++ .../pal/tracker/TimeEntryRepository.java | 13 + .../pal/tracker/TimeEntryControllerTest.java | 12 +- 20 files changed, 496 insertions(+), 145 deletions(-) create mode 100644 src/main/java/io/pivotal/pal/tracker/InMemoryTimeEntryRepository.java create mode 100644 src/main/java/io/pivotal/pal/tracker/TimeEntry.java create mode 100644 src/main/java/io/pivotal/pal/tracker/TimeEntryController.java create mode 100644 src/main/java/io/pivotal/pal/tracker/TimeEntryRepository.java diff --git a/.gradle/4.4/fileContent/annotation-processors.bin b/.gradle/4.4/fileContent/annotation-processors.bin index 13a9647663075baf47e10a29e4c0cbb9dcea1cd9..4ccb76e12325977b5d8077200a02e8bcb6c61654 100644 GIT binary patch delta 471 zcmcaRg>mzA#tkMCj)vWWIby;Nzh5wbf!FQ-P%zmh>P*^`$_SO{#_xn%mbj%B^3EtFMUaUM_aISJ_aJ1yz|p zxmHp^;A7zy^=Ho;o1rQfPM#_mpdqw#ecU^r=xb2HNSN~_yZh%Rb7_5siuX^xE2*HN zyqL4@sPo@IsIezuik06_SNl3?!7Hfv(#c;X6(Tg^*;UVPd;l}S9i~`Uly&ml#*2rb zCM(0ljn_O<>@<{1h8hwJ6LMIGI;!hCq}<@6vknP4Q4c)5&wC0tCuS oDqp0ho#BU?@PG1CDJ>?Jl^Yd*h;K9~5Z>(QA;YwJzegA&0N)q4wg3PC delta 83 zcmV-Z0IdJBmjT_B0kAX}0Unc07#Nd%7+{n27%-DP85xsq85fhC88DOO8Ay{w8W@vx p8c37v8W@u`8yJ(V8<3M#97vP393lb&;jtn37qKun6|+G|90Jt49P$7F diff --git a/.gradle/4.4/fileContent/fileContent.lock b/.gradle/4.4/fileContent/fileContent.lock index da927bf5d12ba03dc746214f0d39818b26e4a0f4..b15af2766a7f6c5aa1a5338eacc0b82756c4c575 100644 GIT binary patch literal 17 UcmZR6cKY!HA^r>d7$CqA07BmdXaE2J literal 17 UcmZR6cKY!HA^r>d7$86i07Ae8NdN!< diff --git a/.gradle/4.4/fileHashes/fileHashes.bin b/.gradle/4.4/fileHashes/fileHashes.bin index fc48a6e2dc70ae9974ddb5f20fa74f914b1081e5..a8dc49062c74e7d29d449ca94ca22c974111cfe7 100644 GIT binary patch delta 4019 zcmZve2{@E(7sstJ8W~Z{2!qO+t(2r1B4nGv$PzC}qO6(ZebY!KMUkg0$^OZbU9?EF zYLgdVX;CT47l|T?%6C7{{XBi&JLA5tc`n!A`JHp_?VLNYK(MYsuzH0&*Y{w%$(+O_ z_B{b?IL#2_5Ou^>#{7I4)SbWo)(65ihTUZ3K;6ZQ(BsV;gAS!f9}W4f>aYc66bPp6#wZhGGz6yjcUtrn-Y`$CMa&MBK%e#RU5Qi7ZQbgs7HF+x?96Q_i#&1>T29LhA_UYRxkYr`Q1F+IQzH$XYjq6 z>4UmZcPl0ICPQ*=e9ura)Y+SnCV6AZ^)P3*FOjHqf3HF~fnE=dfE&IW|rzT`9IZ3&s%q0T-^ z=pW`rhrDl_?18#RJ93&zXN+2TyfC~{@)(M&P{Mfhi9*Y>k7aha^V5Vry=~1`n!*=L zs5^-w6;u_eW4D}Sl&fw-&3!#`8#orwd#XoH53R!uvj_)*S^HEBhYF0K?q*5oA~}y* zt*o-~MRICGUQz?4LMS`(=1kzzW-me3(qbv9!A|5#r_m{z63vx&Q|#75 z(PJmlMq@Gz&9oTCik{(k3af}vhB0hGow)FyxE@I8tC)U;Rz0luP| z%2-zZ42o`1h?fH0%^}LbeeG8=4T`KT!h^%4(u1WDuhgNw`3<2v7LIh6)#u}ra~b=s zw+lB1{-UKodymx!MQ`D#~ zUrjIl6bl9mlnKFY6F!!UAx*AALai<63qJR(Ji!V4xW8~3@m*O8Y6fbg@f;cn9YFG} zW$NBri;2{XyCHEmjjjEkA2S?S+;i*APjj1>NL7$v&?Q>@K#Mj75!Y zWL9JDw)z`GBk_JDoViqFVynLylEu_T|JZ@FF=<@to9EANB_sV8W24{x-RKMM2*_fq zKkl3Q1>iiB8&Q8Xq%P_Zc+y~=u~Df0Bub2=e|EwG2}Z5pCw~02_e%}__@OAGe%XQa zg!w2jmOj!AEV z{^92=S*zStibC&KqC{cK;b{yIkeG$g9rD+VmseHIY@69`^!6o42PKXdVT8z|<+ChT z{HySQ5?3wNb4xsbvc&y-QDh{;sQ^R7lk<@4wlZ90xgF~YiZZsu3=g(Q{+NI^D)36p zujlZmPR)@a_eS)&9XWiaAUJzk8zzz#2~%%(;3vk<*X`~i>lt{5#dHQZZB~QCX{;rH zeXHu_N6L@BiA|1P^skyi<;%wVwsc}?WoFL7f-KvOmN=djHQTt-Qm5iT_#MaPZ*ICw zf^|VBtA<*FQ78#MJVbxTZpH+6|GbFrC5u+a1;lAVMDs942s}H)k0iuzVAnm|HPmL! z%nD@tf+mG-LL#g+g0Inw%M;`#byTr$5BtZbCQhu|{pA-SaTKHnhLCX+dTx0TmyeoV zz3tIyTKidMPoK=sMG@bM))EX6)&Oh4OFV0!)CR>}Y4JRrn%H|mRTu`z*n|-R;b>vv ziBV{5V_NE`*S&&k;FA+^1j&X-W*LT%G{IW%BC^-Ck4$C(v= zGgy!+F<9^f*Pxw=XC`rnMeRi!&UD)J9w$#oD}t^MR;%)x2n^Cb!cPocsYV{3uxq?Q zE7b{=Npnj=k+G9OHV~O>4l0}sx3Ah~C@l4Mt%<)M*C=cuYBMf9gFoOXXf@@P8&V`^Y zKXRa4c3W<5+>1Y@4WH|`i+iF7sIusGfgz+1K0IlWyeAL655A!uW>{_(x9E}{7Np9Z zgaHC#oB0XuhWOG;+yv`ZA!Wo?>e65x9%LOvBxk7!Z5qj6!X3~0>rTntI2&5chD3lX zB*+K(gOH>&rb_MxH6~3q&wb(Fcn2r&hmmaJEcc=!?PfdUjS4*=G3oJv&SF0t0eu4< zRCL*R=Kk{QwjHl7(x_3tZg+&3&s=~6#{vTcHiC`kCH4%EtY@g+XN9=c58k?OsuRT# z&^NGwmJ^;JQaiu1Ez4=*W$f*w+Eg9zghsc7gP*3^wj`gGKOB74JZ0^A)0p;d)@z*b zfgwoEXbhfv5$xnqHniA&Ccnq8q57wKJdSLEhy>{5ylK@~cB{!R>u))?L}7`>Bg z`ECUh0F`QC2ay(bn*Ld2_a^)pjo}_nS4t&GQ<9W6cw<3)YsO%ZIcTThN$bdbi}O=Q y+{bGFVlp`MBG*Eq`937%&}za%WPT~0l4vPfcuU8A1J8?-O(hj3=SoUUo(sfJfml~cV)9ZcgUN4! z*jHL&@>C!`3dCQf4JPNxNK8H}BRTn>jQHeO*~H1$WXmU~$^q5Lc}!N7_n6!&FERPA ze8uEm1)zQf$;onxmP{<38x?{&@0j2=hHe*1K+Hs~KK z0|R5q^$BvFV23d2kKTo7&SsX$r} E0R3ruN&o-= diff --git a/.gradle/4.4/fileHashes/fileHashes.lock b/.gradle/4.4/fileHashes/fileHashes.lock index 3a36244d1035e9e88f2813e341546488866c2c89..4cb1829afe571520e4c5466853c89f1f0d83fe25 100644 GIT binary patch literal 17 VcmZR!dlbO%=^Fb91~6bg3IH-?1k(Tj literal 17 UcmZR!dlbO%=^Fb91_)>X05Tc`ivR!s diff --git a/.gradle/4.4/fileHashes/resourceHashesCache.bin b/.gradle/4.4/fileHashes/resourceHashesCache.bin index 830b7171a1b4351e2031b7d6f8bfd41dc4980df9..c9380f10479abe19bdf1eacb15af2a6d598fdf1e 100644 GIT binary patch literal 22475 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 delta 139 zcmX@To^kIC#tkMCf^rR)Uod?y{OG~}20qf0StS)F+e%7I&IRI9DT&E@f%vGj#N@9) z94aF*c`gwD1>#;=iOE-iSXRzsGOxVBWKji)$+1AZ6o}sf@mfWR$#)eECaWq*P7YHN dpFCFys76_diRs}+#UJ7u4J<@AJ9_+K1^~hDE}H-V diff --git a/.gradle/4.4/taskHistory/taskHistory.bin b/.gradle/4.4/taskHistory/taskHistory.bin index 9892dbe04b9fddea33e1ee2688cfcdda19e224ae..cf0250d4fb22cc187f9108e1c0ae09db87eeeac0 100644 GIT binary patch literal 134084 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 XO*iynRG9QpYV$N7VaClZnbm9n-zrvs diff --git a/.gradle/4.4/taskHistory/taskHistory.lock b/.gradle/4.4/taskHistory/taskHistory.lock index 944ce6c0fb804cc78eb306bd8355193a23f73dbe..3b57e75396fa968aab84b224f5e9a487346cd676 100644 GIT binary patch literal 17 UcmZQ}k$2csdXYnb0Rr{{03!1PbN~PV literal 17 TcmZQ}k$2csdXYnb0RrR!B2@y` diff --git a/.gradle/buildOutputCleanup/buildOutputCleanup.lock b/.gradle/buildOutputCleanup/buildOutputCleanup.lock index 3b6c2d0315e81be6a013cb15d414f86b2ddfa8d6..0235f401e5263d48fcf4e96abe5946c43d8e9d4c 100644 GIT binary patch literal 17 UcmZQ(ecbSH=G$pT3=r@M06IAZjQ{`u literal 17 UcmZQ(ecbSH=G$pT3=p6P06BF8$p8QV diff --git a/.gradle/buildOutputCleanup/outputFiles.bin b/.gradle/buildOutputCleanup/outputFiles.bin index 11c50f7e37ab6662e007f60b235d31751623690d..cc55b5c6070216766fbb695c1d3aec9f9c7f1573 100644 GIT binary patch delta 229 zcmex7iSgrP#tkMCkrF*uSUOj-<=8QRfoJi5DCiBJ`uB9Vzgy?2R4 - - + + + + + + + - + + - + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + - - - - - - - - - - - - - - - + - - - - - - - - - - - - - - - - - - - - - - - - - - - - + + + + + @@ -284,9 +295,9 @@ @@ -398,8 +409,6 @@ @@ -424,6 +433,16 @@ @@ -440,21 +459,24 @@ + - +