From 583f101a0c7a1005c2b3da21b89d997fb02aaa37 Mon Sep 17 00:00:00 2001 From: Alexander Sharov Date: Tue, 25 Sep 2018 20:37:21 +0400 Subject: [PATCH 01/15] Reorganize project --- .gitignore | 44 +++- .mvn/wrapper/maven-wrapper.jar | Bin 49519 -> 0 bytes .mvn/wrapper/maven-wrapper.properties | 1 - .travis.yml | 2 - .vscode/launch.json | 26 -- .vscode/settings.json | 3 - .vscode/tasks.json | 19 -- docker-compose.yml | 9 - mvnw | 234 ------------------ mvnw.cmd | 145 ----------- pom.xml | 224 ++--------------- sonar-project.properties | 13 - udc-backend/pom.xml | 216 ++++++++++++++++ .../petclinic/PetClinicApplication.java | 2 +- .../samples/petclinic/model/BaseEntity.java | 2 +- .../samples/petclinic/model/NamedEntity.java | 2 +- .../samples/petclinic/model/Person.java | 2 +- .../samples/petclinic/model/package-info.java | 2 +- .../samples/petclinic/owner/Owner.java | 2 +- .../petclinic/owner/OwnerController.java | 2 +- .../petclinic/owner/OwnerRepository.java | 2 +- .../samples/petclinic/owner/Pet.java | 4 +- .../petclinic/owner/PetController.java | 2 +- .../petclinic/owner/PetRepository.java | 2 +- .../samples/petclinic/owner/PetType.java | 2 +- .../petclinic/owner/PetTypeFormatter.java | 2 +- .../samples/petclinic/owner/PetValidator.java | 2 +- .../petclinic/owner/VisitController.java | 6 +- .../petclinic/system/CacheConfiguration.java | 2 +- .../petclinic/system/CrashController.java | 2 +- .../petclinic/system/WelcomeController.java | 2 +- .../samples/petclinic/vet/Specialty.java | 4 +- .../samples/petclinic/vet/Vet.java | 4 +- .../samples/petclinic/vet/VetController.java | 2 +- .../samples/petclinic/vet/VetRepository.java | 2 +- .../samples/petclinic/vet/Vets.java | 2 +- .../samples/petclinic/visit/Visit.java | 2 +- .../petclinic/visit/VisitRepository.java | 2 +- .../src}/main/less/header.less | 0 .../src}/main/less/petclinic.less | 0 .../src}/main/less/responsive.less | 0 .../src}/main/less/typography.less | 0 .../resources/application-mysql.properties | 0 .../main/resources/application.properties | 0 .../src}/main/resources/banner.txt | 0 .../src}/main/resources/db/hsqldb/data.sql | 0 .../src}/main/resources/db/hsqldb/schema.sql | 0 .../src}/main/resources/db/mysql/data.sql | 0 .../db/mysql/petclinic_db_setup_mysql.txt | 0 .../src}/main/resources/db/mysql/schema.sql | 0 .../resources/messages/messages.properties | 0 .../resources/messages/messages_de.properties | 0 .../resources/messages/messages_en.properties | 0 .../resources/fonts/montserrat-webfont.eot | Bin .../resources/fonts/montserrat-webfont.svg | 0 .../resources/fonts/montserrat-webfont.ttf | Bin .../resources/fonts/montserrat-webfont.woff | Bin .../resources/fonts/varela_round-webfont.eot | Bin .../resources/fonts/varela_round-webfont.svg | 0 .../resources/fonts/varela_round-webfont.ttf | Bin .../resources/fonts/varela_round-webfont.woff | Bin .../static/resources/images/favicon.png | Bin .../static/resources/images/pets.png | Bin .../static/resources/images/platform-bg.png | Bin .../images/spring-logo-dataflow-mobile.png | Bin .../resources/images/spring-logo-dataflow.png | Bin .../resources/images/spring-pivotal-logo.png | Bin .../src}/main/resources/templates/error.html | 0 .../templates/fragments/inputField.html | 0 .../resources/templates/fragments/layout.html | 0 .../templates/fragments/selectField.html | 0 .../owners/createOrUpdateOwnerForm.html | 0 .../templates/owners/findOwners.html | 0 .../templates/owners/ownerDetails.html | 0 .../templates/owners/ownersList.html | 0 .../templates/pets/createOrUpdatePetForm.html | 0 .../pets/createOrUpdateVisitForm.html | 0 .../resources/templates/vets/vetList.html | 0 .../main/resources/templates/welcome.html | 0 .../src}/main/wro/wro.properties | 0 {src => udc-backend/src}/main/wro/wro.xml | 0 .../petclinic/PetclinicIntegrationTests.java | 2 +- .../petclinic/model/ValidatorTests.java | 2 +- .../petclinic/owner/OwnerControllerTests.java | 2 +- .../petclinic/owner/PetControllerTests.java | 2 +- .../owner/PetTypeFormatterTests.java | 2 +- .../petclinic/owner/VisitControllerTests.java | 2 +- .../petclinic/service/ClinicServiceTests.java | 2 +- .../petclinic/service/EntityUtils.java | 2 +- .../system/CrashControllerTests.java | 2 +- .../petclinic/vet/VetControllerTests.java | 2 +- .../samples/petclinic/vet/VetTests.java | 2 +- .../src}/test/jmeter/petclinic_test_plan.jmx | 0 93 files changed, 305 insertions(+), 713 deletions(-) delete mode 100644 .mvn/wrapper/maven-wrapper.jar delete mode 100644 .mvn/wrapper/maven-wrapper.properties delete mode 100644 .travis.yml delete mode 100644 .vscode/launch.json delete mode 100644 .vscode/settings.json delete mode 100644 .vscode/tasks.json delete mode 100644 docker-compose.yml delete mode 100755 mvnw delete mode 100644 mvnw.cmd delete mode 100755 sonar-project.properties create mode 100644 udc-backend/pom.xml rename {src => udc-backend/src}/main/java/org/springframework/samples/petclinic/PetClinicApplication.java (94%) rename {src => udc-backend/src}/main/java/org/springframework/samples/petclinic/model/BaseEntity.java (95%) rename {src => udc-backend/src}/main/java/org/springframework/samples/petclinic/model/NamedEntity.java (95%) rename {src => udc-backend/src}/main/java/org/springframework/samples/petclinic/model/Person.java (95%) rename {src => udc-backend/src}/main/java/org/springframework/samples/petclinic/model/package-info.java (55%) rename {src => udc-backend/src}/main/java/org/springframework/samples/petclinic/owner/Owner.java (98%) rename {src => udc-backend/src}/main/java/org/springframework/samples/petclinic/owner/OwnerController.java (98%) rename {src => udc-backend/src}/main/java/org/springframework/samples/petclinic/owner/OwnerRepository.java (97%) rename {src => udc-backend/src}/main/java/org/springframework/samples/petclinic/owner/Pet.java (95%) rename {src => udc-backend/src}/main/java/org/springframework/samples/petclinic/owner/PetController.java (98%) rename {src => udc-backend/src}/main/java/org/springframework/samples/petclinic/owner/PetRepository.java (96%) rename {src => udc-backend/src}/main/java/org/springframework/samples/petclinic/owner/PetType.java (93%) rename {src => udc-backend/src}/main/java/org/springframework/samples/petclinic/owner/PetTypeFormatter.java (97%) rename {src => udc-backend/src}/main/java/org/springframework/samples/petclinic/owner/PetValidator.java (96%) rename {src => udc-backend/src}/main/java/org/springframework/samples/petclinic/owner/VisitController.java (92%) rename {src => udc-backend/src}/main/java/org/springframework/samples/petclinic/system/CacheConfiguration.java (95%) rename {src => udc-backend/src}/main/java/org/springframework/samples/petclinic/system/CrashController.java (94%) rename {src => udc-backend/src}/main/java/org/springframework/samples/petclinic/system/WelcomeController.java (78%) rename {src => udc-backend/src}/main/java/org/springframework/samples/petclinic/vet/Specialty.java (87%) rename {src => udc-backend/src}/main/java/org/springframework/samples/petclinic/vet/Vet.java (94%) rename {src => udc-backend/src}/main/java/org/springframework/samples/petclinic/vet/VetController.java (96%) rename {src => udc-backend/src}/main/java/org/springframework/samples/petclinic/vet/VetRepository.java (96%) rename {src => udc-backend/src}/main/java/org/springframework/samples/petclinic/vet/Vets.java (95%) rename {src => udc-backend/src}/main/java/org/springframework/samples/petclinic/visit/Visit.java (96%) rename {src => udc-backend/src}/main/java/org/springframework/samples/petclinic/visit/VisitRepository.java (96%) rename {src => udc-backend/src}/main/less/header.less (100%) rename {src => udc-backend/src}/main/less/petclinic.less (100%) rename {src => udc-backend/src}/main/less/responsive.less (100%) rename {src => udc-backend/src}/main/less/typography.less (100%) rename {src => udc-backend/src}/main/resources/application-mysql.properties (100%) rename {src => udc-backend/src}/main/resources/application.properties (100%) rename {src => udc-backend/src}/main/resources/banner.txt (100%) rename {src => udc-backend/src}/main/resources/db/hsqldb/data.sql (100%) rename {src => udc-backend/src}/main/resources/db/hsqldb/schema.sql (100%) rename {src => udc-backend/src}/main/resources/db/mysql/data.sql (100%) rename {src => udc-backend/src}/main/resources/db/mysql/petclinic_db_setup_mysql.txt (100%) rename {src => udc-backend/src}/main/resources/db/mysql/schema.sql (100%) rename {src => udc-backend/src}/main/resources/messages/messages.properties (100%) rename {src => udc-backend/src}/main/resources/messages/messages_de.properties (100%) rename {src => udc-backend/src}/main/resources/messages/messages_en.properties (100%) rename {src => udc-backend/src}/main/resources/static/resources/fonts/montserrat-webfont.eot (100%) rename {src => udc-backend/src}/main/resources/static/resources/fonts/montserrat-webfont.svg (100%) rename {src => udc-backend/src}/main/resources/static/resources/fonts/montserrat-webfont.ttf (100%) rename {src => udc-backend/src}/main/resources/static/resources/fonts/montserrat-webfont.woff (100%) rename {src => udc-backend/src}/main/resources/static/resources/fonts/varela_round-webfont.eot (100%) rename {src => udc-backend/src}/main/resources/static/resources/fonts/varela_round-webfont.svg (100%) rename {src => udc-backend/src}/main/resources/static/resources/fonts/varela_round-webfont.ttf (100%) rename {src => udc-backend/src}/main/resources/static/resources/fonts/varela_round-webfont.woff (100%) rename {src => udc-backend/src}/main/resources/static/resources/images/favicon.png (100%) rename {src => udc-backend/src}/main/resources/static/resources/images/pets.png (100%) rename {src => udc-backend/src}/main/resources/static/resources/images/platform-bg.png (100%) rename {src => udc-backend/src}/main/resources/static/resources/images/spring-logo-dataflow-mobile.png (100%) rename {src => udc-backend/src}/main/resources/static/resources/images/spring-logo-dataflow.png (100%) rename {src => udc-backend/src}/main/resources/static/resources/images/spring-pivotal-logo.png (100%) rename {src => udc-backend/src}/main/resources/templates/error.html (100%) rename {src => udc-backend/src}/main/resources/templates/fragments/inputField.html (100%) rename {src => udc-backend/src}/main/resources/templates/fragments/layout.html (100%) rename {src => udc-backend/src}/main/resources/templates/fragments/selectField.html (100%) rename {src => udc-backend/src}/main/resources/templates/owners/createOrUpdateOwnerForm.html (100%) rename {src => udc-backend/src}/main/resources/templates/owners/findOwners.html (100%) rename {src => udc-backend/src}/main/resources/templates/owners/ownerDetails.html (100%) rename {src => udc-backend/src}/main/resources/templates/owners/ownersList.html (100%) rename {src => udc-backend/src}/main/resources/templates/pets/createOrUpdatePetForm.html (100%) rename {src => udc-backend/src}/main/resources/templates/pets/createOrUpdateVisitForm.html (100%) rename {src => udc-backend/src}/main/resources/templates/vets/vetList.html (100%) rename {src => udc-backend/src}/main/resources/templates/welcome.html (100%) rename {src => udc-backend/src}/main/wro/wro.properties (100%) rename {src => udc-backend/src}/main/wro/wro.xml (100%) rename {src => udc-backend/src}/test/java/org/springframework/samples/petclinic/PetclinicIntegrationTests.java (95%) rename {src => udc-backend/src}/test/java/org/springframework/samples/petclinic/model/ValidatorTests.java (95%) rename {src => udc-backend/src}/test/java/org/springframework/samples/petclinic/owner/OwnerControllerTests.java (99%) rename {src => udc-backend/src}/test/java/org/springframework/samples/petclinic/owner/PetControllerTests.java (98%) rename {src => udc-backend/src}/test/java/org/springframework/samples/petclinic/owner/PetTypeFormatterTests.java (96%) rename {src => udc-backend/src}/test/java/org/springframework/samples/petclinic/owner/VisitControllerTests.java (97%) rename {src => udc-backend/src}/test/java/org/springframework/samples/petclinic/service/ClinicServiceTests.java (99%) rename {src => udc-backend/src}/test/java/org/springframework/samples/petclinic/service/EntityUtils.java (96%) rename {src => udc-backend/src}/test/java/org/springframework/samples/petclinic/system/CrashControllerTests.java (95%) rename {src => udc-backend/src}/test/java/org/springframework/samples/petclinic/vet/VetControllerTests.java (97%) rename {src => udc-backend/src}/test/java/org/springframework/samples/petclinic/vet/VetTests.java (95%) rename {src => udc-backend/src}/test/jmeter/petclinic_test_plan.jmx (100%) diff --git a/.gitignore b/.gitignore index 8cdbd1ff4..33a6a411c 100644 --- a/.gitignore +++ b/.gitignore @@ -1,14 +1,36 @@ -target/* -.settings/* -.classpath +#.gitignore .project +.sts4-cache/ +_site/ + +test-output/ + +# MacOS +.DS_Store + +# Maven +target/* +.classpath +.settings/* + +# IDEA .idea *.iml -/target -.sts4-cache/ -.vscode/* -!.vscode/settings.json -!.vscode/tasks.json -!.vscode/launch.json -!.vscode/extensions.json -_site/ +*.log + +# vim +*~ +*.swp +*.swo +*.swn +*.swl +*.swm +*.swj +*.swk + + + + + + + diff --git a/.mvn/wrapper/maven-wrapper.jar b/.mvn/wrapper/maven-wrapper.jar deleted file mode 100644 index c6feb8bb6f76f2553e266ff8bf8867105154237e..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 49519 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%0A$pwhjXzyA0ZzErH{1@M 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 diff --git a/.mvn/wrapper/maven-wrapper.properties b/.mvn/wrapper/maven-wrapper.properties deleted file mode 100644 index 25cc8af3c..000000000 --- a/.mvn/wrapper/maven-wrapper.properties +++ /dev/null @@ -1 +0,0 @@ -distributionUrl=https://repo1.maven.org/maven2/org/apache/maven/apache-maven/3.3.3/apache-maven-3.3.3-bin.zip diff --git a/.travis.yml b/.travis.yml deleted file mode 100644 index c0f28cfa4..000000000 --- a/.travis.yml +++ /dev/null @@ -1,2 +0,0 @@ -language: java -jdk: oraclejdk8 diff --git a/.vscode/launch.json b/.vscode/launch.json deleted file mode 100644 index 559c53805..000000000 --- a/.vscode/launch.json +++ /dev/null @@ -1,26 +0,0 @@ -{ - // Use IntelliSense to learn about possible attributes. - // Hover to view descriptions of existing attributes. - // For more information, visit: https://go.microsoft.com/fwlink/?linkid=830387 - "version": "0.2.0", - "configurations": [ - { - "type": "java", - "name": "Debug (Launch)-PetClinicApplication", - "request": "launch", - "cwd": "${workspaceFolder}", - "console": "internalConsole", - "stopOnEntry": false, - "mainClass": "org.springframework.samples.petclinic.PetClinicApplication", - "projectName": "spring-petclinic", - "args": "" - }, - { - "type": "java", - "name": "Debug (Attach)", - "request": "attach", - "hostName": "localhost", - "port": 0 - } - ] -} \ No newline at end of file diff --git a/.vscode/settings.json b/.vscode/settings.json deleted file mode 100644 index c5f3f6b9c..000000000 --- a/.vscode/settings.json +++ /dev/null @@ -1,3 +0,0 @@ -{ - "java.configuration.updateBuildConfiguration": "interactive" -} \ No newline at end of file diff --git a/.vscode/tasks.json b/.vscode/tasks.json deleted file mode 100644 index fabd5c416..000000000 --- a/.vscode/tasks.json +++ /dev/null @@ -1,19 +0,0 @@ -{ - // See https://go.microsoft.com/fwlink/?LinkId=733558 - // for the documentation about the tasks.json format - "version": "2.0.0", - "tasks": [ - { - "label": "verify", - "type": "shell", - "command": "mvn -B verify", - "group": "build" - }, - { - "label": "test", - "type": "shell", - "command": "mvn -B test", - "group": "test" - } - ] -} diff --git a/docker-compose.yml b/docker-compose.yml deleted file mode 100644 index 0f4a7fc30..000000000 --- a/docker-compose.yml +++ /dev/null @@ -1,9 +0,0 @@ -mysql: - image: mysql:5.7 - ports: - - "3306:3306" - environment: - - MYSQL_ROOT_PASSWORD=petclinic - - MYSQL_DATABASE=petclinic - volumes: - - "./conf.d:/etc/mysql/conf.d:ro" diff --git a/mvnw b/mvnw deleted file mode 100755 index fc7efd17d..000000000 --- a/mvnw +++ /dev/null @@ -1,234 +0,0 @@ -#!/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 -# -# http://www.apache.org/licenses/LICENSE-2.0 -# -# Unless required by applicable law or agreed to in writing, -# software distributed under the License is distributed on an -# "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY -# KIND, either express or implied. See the License for the -# specific language governing permissions and limitations -# under the License. -# ---------------------------------------------------------------------------- - -# ---------------------------------------------------------------------------- -# Maven2 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 - # - # Look for the Apple JDKs first to preserve the existing behaviour, and then look - # for the new JDKs provided by Oracle. - # - if [ -z "$JAVA_HOME" ] && [ -L /System/Library/Frameworks/JavaVM.framework/Versions/CurrentJDK ] ; then - # - # Apple JDKs - # - export JAVA_HOME=/System/Library/Frameworks/JavaVM.framework/Versions/CurrentJDK/Home - fi - - if [ -z "$JAVA_HOME" ] && [ -L /System/Library/Java/JavaVirtualMachines/CurrentJDK ] ; then - # - # Apple JDKs - # - export JAVA_HOME=/System/Library/Java/JavaVirtualMachines/CurrentJDK/Contents/Home - fi - - if [ -z "$JAVA_HOME" ] && [ -L "/Library/Java/JavaVirtualMachines/CurrentJDK" ] ; then - # - # Oracle JDKs - # - export JAVA_HOME=/Library/Java/JavaVirtualMachines/CurrentJDK/Contents/Home - fi - - if [ -z "$JAVA_HOME" ] && [ -x "/usr/libexec/java_home" ]; then - # - # Apple JDKs - # - export JAVA_HOME=`/usr/libexec/java_home` - 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 Migwn, 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)`" - # TODO classpath? -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 - -# 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"` -fi - -# traverses directory structure from process work directory to filesystem root -# first directory with .mvn subdirectory is considered project base directory -find_maven_basedir() { - local basedir=$(pwd) - local wdir=$(pwd) - while [ "$wdir" != '/' ] ; do - if [ -d "$wdir"/.mvn ] ; then - basedir=$wdir - break - fi - wdir=$(cd "$wdir/.."; pwd) - done - echo "${basedir}" -} - -# concatenates all lines of a file -concat_lines() { - if [ -f "$1" ]; then - echo "$(tr -s '\n' ' ' < "$1")" - fi -} - -export MAVEN_PROJECTBASEDIR=${MAVEN_BASEDIR:-$(find_maven_basedir)} -MAVEN_OPTS="$(concat_lines "$MAVEN_PROJECTBASEDIR/.mvn/jvm.config") $MAVEN_OPTS" - -# 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_CMD_LINE_ARGS - diff --git a/mvnw.cmd b/mvnw.cmd deleted file mode 100644 index 0d49a2de0..000000000 --- a/mvnw.cmd +++ /dev/null @@ -1,145 +0,0 @@ -@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 http://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 Maven2 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 key stroke 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 enable echoing my 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 - -set MAVEN_CMD_LINE_ARGS=%MAVEN_CONFIG% %* - -@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 - -%MAVEN_JAVA_EXE% %JVM_CONFIG_MAVEN_PROPS% %MAVEN_OPTS% %MAVEN_DEBUG_OPTS% -classpath %WRAPPER_JAR% "-Dmaven.multiModuleProjectDirectory=%MAVEN_PROJECTBASEDIR%" %WRAPPER_LAUNCHER% %MAVEN_CMD_LINE_ARGS% -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/pom.xml b/pom.xml index 0469ceaf7..2c8b7574d 100644 --- a/pom.xml +++ b/pom.xml @@ -1,216 +1,22 @@ - 4.0.0 - org.springframework.samples - spring-petclinic - 2.0.0.BUILD-SNAPSHOT + xmlns="http://maven.apache.org/POM/4.0.0" + xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd"> + 4.0.0 - - org.springframework.boot - spring-boot-starter-parent - 2.0.4.RELEASE - - petclinic + org.springframework.samples + udc-petclinic + pom + 1.0.0-SNAPSHOT + UDC :: Petclinic - - - - 1.8 - UTF-8 - UTF-8 - - - 3.3.6 - 1.11.4 - 2.2.4 - 1.8.0 - - 0.8.1 - - - - - - - org.springframework.boot - spring-boot-starter-actuator - - - org.springframework.boot - spring-boot-starter-cache - - - org.springframework.boot - spring-boot-starter-data-jpa - - - org.springframework.boot - spring-boot-starter-web - - - org.springframework.boot - spring-boot-starter-thymeleaf - - - org.springframework.boot - spring-boot-starter-test - test - - - - - org.hsqldb - hsqldb - runtime - - - mysql - mysql-connector-java - runtime - - - - - javax.cache - cache-api - - - org.ehcache - ehcache - - - - - org.webjars - webjars-locator-core - - - org.webjars - jquery - ${webjars-jquery.version} - - - org.webjars - jquery-ui - ${webjars-jquery-ui.version} - - - org.webjars - bootstrap - ${webjars-bootstrap.version} - - - - - org.springframework.boot - spring-boot-devtools - true - - - - - - + org.springframework.boot - spring-boot-maven-plugin - - - - - build-info - - - - ${project.build.sourceEncoding} - ${project.reporting.outputEncoding} - ${maven.compiler.source} - ${maven.compiler.target} - - - - - - - org.jacoco - jacoco-maven-plugin - ${jacoco.version} - - - - prepare-agent - - - - report - prepare-package - - report - - - - - - - - pl.project13.maven - git-commit-id-plugin - - - - revision - - - - - true - yyyy-MM-dd'T'HH:mm:ssZ - true - ${project.build.outputDirectory}/git.properties - - false - - - - - ro.isdc.wro4j - wro4j-maven-plugin - ${wro4j.version} - - - generate-resources - - run - - - - - ro.isdc.wro.maven.plugin.manager.factory.ConfigurableWroManagerFactory - ${project.build.directory}/classes/static/resources/css - ${basedir}/src/main/wro/wro.xml - ${basedir}/src/main/wro/wro.properties - ${basedir}/src/main/less - - - - org.webjars - bootstrap - ${webjars-bootstrap.version} - - - - - - - - - - Apache License, Version 2.0 - http://www.apache.org/licenses/LICENSE-2.0 - - + spring-boot-starter-parent + 2.0.4.RELEASE + + + udc-backend + diff --git a/sonar-project.properties b/sonar-project.properties deleted file mode 100755 index d84ed7c2d..000000000 --- a/sonar-project.properties +++ /dev/null @@ -1,13 +0,0 @@ -# Required metadata -sonar.projectKey=java-sonar-runner-simple -sonar.projectName=Simple Java project analyzed with the SonarQube Runner -sonar.projectVersion=1.0 - -# Comma-separated paths to directories with sources (required) -sonar.sources=src - -# Language -sonar.language=java - -# Encoding of the source files -sonar.sourceEncoding=UTF-8 \ No newline at end of file diff --git a/udc-backend/pom.xml b/udc-backend/pom.xml new file mode 100644 index 000000000..3cf4c0404 --- /dev/null +++ b/udc-backend/pom.xml @@ -0,0 +1,216 @@ + + + 4.0.0 + + org.springframework.samples + udc-backend + 1.0.0-SNAPSHOT + UDC :: Petclinic :: Backend + + + org.springframework.samples + udc-petclinic + 1.0.0-SNAPSHOT + + + + + 1.8 + UTF-8 + UTF-8 + + + 3.3.6 + 1.11.4 + 2.2.4 + 1.8.0 + + 0.8.1 + + + + + + org.springframework.boot + spring-boot-starter-actuator + + + org.springframework.boot + spring-boot-starter-cache + + + org.springframework.boot + spring-boot-starter-data-jpa + + + org.springframework.boot + spring-boot-starter-web + + + org.springframework.boot + spring-boot-starter-thymeleaf + + + org.springframework.boot + spring-boot-starter-test + test + + + + + org.hsqldb + hsqldb + runtime + + + mysql + mysql-connector-java + runtime + + + + + javax.cache + cache-api + + + org.ehcache + ehcache + + + + + org.webjars + webjars-locator-core + + + org.webjars + jquery + ${webjars-jquery.version} + + + org.webjars + jquery-ui + ${webjars-jquery-ui.version} + + + org.webjars + bootstrap + ${webjars-bootstrap.version} + + + + + org.springframework.boot + spring-boot-devtools + true + + + + + + + org.springframework.boot + spring-boot-maven-plugin + + + + + build-info + + + + ${project.build.sourceEncoding} + ${project.reporting.outputEncoding} + ${maven.compiler.source} + ${maven.compiler.target} + + + + + + + org.jacoco + jacoco-maven-plugin + ${jacoco.version} + + + + prepare-agent + + + + report + prepare-package + + report + + + + + + + + pl.project13.maven + git-commit-id-plugin + + + + revision + + + + + true + yyyy-MM-dd'T'HH:mm:ssZ + true + ${project.build.outputDirectory}/git.properties + + false + + + + + ro.isdc.wro4j + wro4j-maven-plugin + ${wro4j.version} + + + generate-resources + + run + + + + + ro.isdc.wro.maven.plugin.manager.factory.ConfigurableWroManagerFactory + + ${project.build.directory}/classes/static/resources/css + udc-backend/src/main/wro/wro.xml + udc-backend/src/main/wro/wro.properties + ${basedir}/src/main/less + + + + org.webjars + bootstrap + ${webjars-bootstrap.version} + + + + + + + + + + Apache License, Version 2.0 + http://www.apache.org/licenses/LICENSE-2.0 + + + + diff --git a/src/main/java/org/springframework/samples/petclinic/PetClinicApplication.java b/udc-backend/src/main/java/org/springframework/samples/petclinic/PetClinicApplication.java similarity index 94% rename from src/main/java/org/springframework/samples/petclinic/PetClinicApplication.java rename to udc-backend/src/main/java/org/springframework/samples/petclinic/PetClinicApplication.java index 83b118095..f9cfc8f31 100644 --- a/src/main/java/org/springframework/samples/petclinic/PetClinicApplication.java +++ b/udc-backend/src/main/java/org/springframework/samples/petclinic/PetClinicApplication.java @@ -14,7 +14,7 @@ * limitations under the License. */ -package org.springframework.samples.petclinic; +package main.java.org.springframework.samples.petclinic; import org.springframework.boot.SpringApplication; import org.springframework.boot.autoconfigure.SpringBootApplication; diff --git a/src/main/java/org/springframework/samples/petclinic/model/BaseEntity.java b/udc-backend/src/main/java/org/springframework/samples/petclinic/model/BaseEntity.java similarity index 95% rename from src/main/java/org/springframework/samples/petclinic/model/BaseEntity.java rename to udc-backend/src/main/java/org/springframework/samples/petclinic/model/BaseEntity.java index 86cc21092..177fb321e 100644 --- a/src/main/java/org/springframework/samples/petclinic/model/BaseEntity.java +++ b/udc-backend/src/main/java/org/springframework/samples/petclinic/model/BaseEntity.java @@ -13,7 +13,7 @@ * See the License for the specific language governing permissions and * limitations under the License. */ -package org.springframework.samples.petclinic.model; +package main.java.org.springframework.samples.petclinic.model; import java.io.Serializable; diff --git a/src/main/java/org/springframework/samples/petclinic/model/NamedEntity.java b/udc-backend/src/main/java/org/springframework/samples/petclinic/model/NamedEntity.java similarity index 95% rename from src/main/java/org/springframework/samples/petclinic/model/NamedEntity.java rename to udc-backend/src/main/java/org/springframework/samples/petclinic/model/NamedEntity.java index d66c97ae7..4becea667 100644 --- a/src/main/java/org/springframework/samples/petclinic/model/NamedEntity.java +++ b/udc-backend/src/main/java/org/springframework/samples/petclinic/model/NamedEntity.java @@ -13,7 +13,7 @@ * See the License for the specific language governing permissions and * limitations under the License. */ -package org.springframework.samples.petclinic.model; +package main.java.org.springframework.samples.petclinic.model; import javax.persistence.Column; import javax.persistence.MappedSuperclass; diff --git a/src/main/java/org/springframework/samples/petclinic/model/Person.java b/udc-backend/src/main/java/org/springframework/samples/petclinic/model/Person.java similarity index 95% rename from src/main/java/org/springframework/samples/petclinic/model/Person.java rename to udc-backend/src/main/java/org/springframework/samples/petclinic/model/Person.java index 5d23523bd..195bb79b0 100644 --- a/src/main/java/org/springframework/samples/petclinic/model/Person.java +++ b/udc-backend/src/main/java/org/springframework/samples/petclinic/model/Person.java @@ -13,7 +13,7 @@ * See the License for the specific language governing permissions and * limitations under the License. */ -package org.springframework.samples.petclinic.model; +package main.java.org.springframework.samples.petclinic.model; import javax.persistence.Column; import javax.persistence.MappedSuperclass; diff --git a/src/main/java/org/springframework/samples/petclinic/model/package-info.java b/udc-backend/src/main/java/org/springframework/samples/petclinic/model/package-info.java similarity index 55% rename from src/main/java/org/springframework/samples/petclinic/model/package-info.java rename to udc-backend/src/main/java/org/springframework/samples/petclinic/model/package-info.java index 78294d130..4060bedbb 100644 --- a/src/main/java/org/springframework/samples/petclinic/model/package-info.java +++ b/udc-backend/src/main/java/org/springframework/samples/petclinic/model/package-info.java @@ -1,5 +1,5 @@ /** * The classes in this package represent utilities used by the domain. */ -package org.springframework.samples.petclinic.model; +package main.java.org.springframework.samples.petclinic.model; diff --git a/src/main/java/org/springframework/samples/petclinic/owner/Owner.java b/udc-backend/src/main/java/org/springframework/samples/petclinic/owner/Owner.java similarity index 98% rename from src/main/java/org/springframework/samples/petclinic/owner/Owner.java rename to udc-backend/src/main/java/org/springframework/samples/petclinic/owner/Owner.java index 89aad2c2c..7293116c7 100644 --- a/src/main/java/org/springframework/samples/petclinic/owner/Owner.java +++ b/udc-backend/src/main/java/org/springframework/samples/petclinic/owner/Owner.java @@ -13,7 +13,7 @@ * See the License for the specific language governing permissions and * limitations under the License. */ -package org.springframework.samples.petclinic.owner; +package main.java.org.springframework.samples.petclinic.owner; import java.util.ArrayList; import java.util.Collections; diff --git a/src/main/java/org/springframework/samples/petclinic/owner/OwnerController.java b/udc-backend/src/main/java/org/springframework/samples/petclinic/owner/OwnerController.java similarity index 98% rename from src/main/java/org/springframework/samples/petclinic/owner/OwnerController.java rename to udc-backend/src/main/java/org/springframework/samples/petclinic/owner/OwnerController.java index 5d11bff4c..157cc24ef 100644 --- a/src/main/java/org/springframework/samples/petclinic/owner/OwnerController.java +++ b/udc-backend/src/main/java/org/springframework/samples/petclinic/owner/OwnerController.java @@ -13,7 +13,7 @@ * See the License for the specific language governing permissions and * limitations under the License. */ -package org.springframework.samples.petclinic.owner; +package main.java.org.springframework.samples.petclinic.owner; import org.springframework.stereotype.Controller; import org.springframework.ui.Model; diff --git a/src/main/java/org/springframework/samples/petclinic/owner/OwnerRepository.java b/udc-backend/src/main/java/org/springframework/samples/petclinic/owner/OwnerRepository.java similarity index 97% rename from src/main/java/org/springframework/samples/petclinic/owner/OwnerRepository.java rename to udc-backend/src/main/java/org/springframework/samples/petclinic/owner/OwnerRepository.java index 068f5245d..e152b9320 100644 --- a/src/main/java/org/springframework/samples/petclinic/owner/OwnerRepository.java +++ b/udc-backend/src/main/java/org/springframework/samples/petclinic/owner/OwnerRepository.java @@ -13,7 +13,7 @@ * See the License for the specific language governing permissions and * limitations under the License. */ -package org.springframework.samples.petclinic.owner; +package main.java.org.springframework.samples.petclinic.owner; import java.util.Collection; diff --git a/src/main/java/org/springframework/samples/petclinic/owner/Pet.java b/udc-backend/src/main/java/org/springframework/samples/petclinic/owner/Pet.java similarity index 95% rename from src/main/java/org/springframework/samples/petclinic/owner/Pet.java rename to udc-backend/src/main/java/org/springframework/samples/petclinic/owner/Pet.java index c225b8d8a..f29ee770c 100755 --- a/src/main/java/org/springframework/samples/petclinic/owner/Pet.java +++ b/udc-backend/src/main/java/org/springframework/samples/petclinic/owner/Pet.java @@ -13,7 +13,7 @@ * See the License for the specific language governing permissions and * limitations under the License. */ -package org.springframework.samples.petclinic.owner; +package main.java.org.springframework.samples.petclinic.owner; import java.time.LocalDate; import java.util.ArrayList; @@ -36,7 +36,7 @@ import org.springframework.beans.support.MutableSortDefinition; import org.springframework.beans.support.PropertyComparator; import org.springframework.format.annotation.DateTimeFormat; import org.springframework.samples.petclinic.model.NamedEntity; -import org.springframework.samples.petclinic.visit.Visit; +import main.java.org.springframework.samples.petclinic.visit.Visit; /** * Simple business object representing a pet. diff --git a/src/main/java/org/springframework/samples/petclinic/owner/PetController.java b/udc-backend/src/main/java/org/springframework/samples/petclinic/owner/PetController.java similarity index 98% rename from src/main/java/org/springframework/samples/petclinic/owner/PetController.java rename to udc-backend/src/main/java/org/springframework/samples/petclinic/owner/PetController.java index e0c1feeed..41b043398 100644 --- a/src/main/java/org/springframework/samples/petclinic/owner/PetController.java +++ b/udc-backend/src/main/java/org/springframework/samples/petclinic/owner/PetController.java @@ -13,7 +13,7 @@ * See the License for the specific language governing permissions and * limitations under the License. */ -package org.springframework.samples.petclinic.owner; +package main.java.org.springframework.samples.petclinic.owner; import org.springframework.stereotype.Controller; import org.springframework.ui.ModelMap; diff --git a/src/main/java/org/springframework/samples/petclinic/owner/PetRepository.java b/udc-backend/src/main/java/org/springframework/samples/petclinic/owner/PetRepository.java similarity index 96% rename from src/main/java/org/springframework/samples/petclinic/owner/PetRepository.java rename to udc-backend/src/main/java/org/springframework/samples/petclinic/owner/PetRepository.java index b0ec5db23..bcaa4a55d 100644 --- a/src/main/java/org/springframework/samples/petclinic/owner/PetRepository.java +++ b/udc-backend/src/main/java/org/springframework/samples/petclinic/owner/PetRepository.java @@ -13,7 +13,7 @@ * See the License for the specific language governing permissions and * limitations under the License. */ -package org.springframework.samples.petclinic.owner; +package main.java.org.springframework.samples.petclinic.owner; import java.util.List; diff --git a/src/main/java/org/springframework/samples/petclinic/owner/PetType.java b/udc-backend/src/main/java/org/springframework/samples/petclinic/owner/PetType.java similarity index 93% rename from src/main/java/org/springframework/samples/petclinic/owner/PetType.java rename to udc-backend/src/main/java/org/springframework/samples/petclinic/owner/PetType.java index ac827b310..fdfb73728 100644 --- a/src/main/java/org/springframework/samples/petclinic/owner/PetType.java +++ b/udc-backend/src/main/java/org/springframework/samples/petclinic/owner/PetType.java @@ -13,7 +13,7 @@ * See the License for the specific language governing permissions and * limitations under the License. */ -package org.springframework.samples.petclinic.owner; +package main.java.org.springframework.samples.petclinic.owner; import javax.persistence.Entity; import javax.persistence.Table; diff --git a/src/main/java/org/springframework/samples/petclinic/owner/PetTypeFormatter.java b/udc-backend/src/main/java/org/springframework/samples/petclinic/owner/PetTypeFormatter.java similarity index 97% rename from src/main/java/org/springframework/samples/petclinic/owner/PetTypeFormatter.java rename to udc-backend/src/main/java/org/springframework/samples/petclinic/owner/PetTypeFormatter.java index 78451ca28..dacebd941 100644 --- a/src/main/java/org/springframework/samples/petclinic/owner/PetTypeFormatter.java +++ b/udc-backend/src/main/java/org/springframework/samples/petclinic/owner/PetTypeFormatter.java @@ -13,7 +13,7 @@ * See the License for the specific language governing permissions and * limitations under the License. */ -package org.springframework.samples.petclinic.owner; +package main.java.org.springframework.samples.petclinic.owner; import java.text.ParseException; diff --git a/src/main/java/org/springframework/samples/petclinic/owner/PetValidator.java b/udc-backend/src/main/java/org/springframework/samples/petclinic/owner/PetValidator.java similarity index 96% rename from src/main/java/org/springframework/samples/petclinic/owner/PetValidator.java rename to udc-backend/src/main/java/org/springframework/samples/petclinic/owner/PetValidator.java index 1a3d92e9e..0c5f35080 100644 --- a/src/main/java/org/springframework/samples/petclinic/owner/PetValidator.java +++ b/udc-backend/src/main/java/org/springframework/samples/petclinic/owner/PetValidator.java @@ -13,7 +13,7 @@ * See the License for the specific language governing permissions and * limitations under the License. */ -package org.springframework.samples.petclinic.owner; +package main.java.org.springframework.samples.petclinic.owner; import org.springframework.util.StringUtils; import org.springframework.validation.Errors; diff --git a/src/main/java/org/springframework/samples/petclinic/owner/VisitController.java b/udc-backend/src/main/java/org/springframework/samples/petclinic/owner/VisitController.java similarity index 92% rename from src/main/java/org/springframework/samples/petclinic/owner/VisitController.java rename to udc-backend/src/main/java/org/springframework/samples/petclinic/owner/VisitController.java index 19e42c78e..9441c2876 100644 --- a/src/main/java/org/springframework/samples/petclinic/owner/VisitController.java +++ b/udc-backend/src/main/java/org/springframework/samples/petclinic/owner/VisitController.java @@ -13,10 +13,10 @@ * See the License for the specific language governing permissions and * limitations under the License. */ -package org.springframework.samples.petclinic.owner; +package main.java.org.springframework.samples.petclinic.owner; -import org.springframework.samples.petclinic.visit.Visit; -import org.springframework.samples.petclinic.visit.VisitRepository; +import main.java.org.springframework.samples.petclinic.visit.Visit; +import main.java.org.springframework.samples.petclinic.visit.VisitRepository; import org.springframework.stereotype.Controller; import org.springframework.validation.BindingResult; import org.springframework.web.bind.WebDataBinder; diff --git a/src/main/java/org/springframework/samples/petclinic/system/CacheConfiguration.java b/udc-backend/src/main/java/org/springframework/samples/petclinic/system/CacheConfiguration.java similarity index 95% rename from src/main/java/org/springframework/samples/petclinic/system/CacheConfiguration.java rename to udc-backend/src/main/java/org/springframework/samples/petclinic/system/CacheConfiguration.java index f5f659482..d92e7f5c7 100755 --- a/src/main/java/org/springframework/samples/petclinic/system/CacheConfiguration.java +++ b/udc-backend/src/main/java/org/springframework/samples/petclinic/system/CacheConfiguration.java @@ -1,4 +1,4 @@ -package org.springframework.samples.petclinic.system; +package main.java.org.springframework.samples.petclinic.system; import org.springframework.boot.autoconfigure.cache.JCacheManagerCustomizer; import org.springframework.cache.annotation.EnableCaching; diff --git a/src/main/java/org/springframework/samples/petclinic/system/CrashController.java b/udc-backend/src/main/java/org/springframework/samples/petclinic/system/CrashController.java similarity index 94% rename from src/main/java/org/springframework/samples/petclinic/system/CrashController.java rename to udc-backend/src/main/java/org/springframework/samples/petclinic/system/CrashController.java index 2f5e7a348..f8e19771d 100644 --- a/src/main/java/org/springframework/samples/petclinic/system/CrashController.java +++ b/udc-backend/src/main/java/org/springframework/samples/petclinic/system/CrashController.java @@ -13,7 +13,7 @@ * See the License for the specific language governing permissions and * limitations under the License. */ -package org.springframework.samples.petclinic.system; +package main.java.org.springframework.samples.petclinic.system; import org.springframework.stereotype.Controller; import org.springframework.web.bind.annotation.GetMapping; diff --git a/src/main/java/org/springframework/samples/petclinic/system/WelcomeController.java b/udc-backend/src/main/java/org/springframework/samples/petclinic/system/WelcomeController.java similarity index 78% rename from src/main/java/org/springframework/samples/petclinic/system/WelcomeController.java rename to udc-backend/src/main/java/org/springframework/samples/petclinic/system/WelcomeController.java index 00430a790..5cd34df02 100644 --- a/src/main/java/org/springframework/samples/petclinic/system/WelcomeController.java +++ b/udc-backend/src/main/java/org/springframework/samples/petclinic/system/WelcomeController.java @@ -1,4 +1,4 @@ -package org.springframework.samples.petclinic.system; +package main.java.org.springframework.samples.petclinic.system; import org.springframework.stereotype.Controller; diff --git a/src/main/java/org/springframework/samples/petclinic/vet/Specialty.java b/udc-backend/src/main/java/org/springframework/samples/petclinic/vet/Specialty.java similarity index 87% rename from src/main/java/org/springframework/samples/petclinic/vet/Specialty.java rename to udc-backend/src/main/java/org/springframework/samples/petclinic/vet/Specialty.java index 5691c2434..38e4a0eac 100644 --- a/src/main/java/org/springframework/samples/petclinic/vet/Specialty.java +++ b/udc-backend/src/main/java/org/springframework/samples/petclinic/vet/Specialty.java @@ -13,14 +13,14 @@ * See the License for the specific language governing permissions and * limitations under the License. */ -package org.springframework.samples.petclinic.vet; +package main.java.org.springframework.samples.petclinic.vet; import java.io.Serializable; import javax.persistence.Entity; import javax.persistence.Table; -import org.springframework.samples.petclinic.model.NamedEntity; +import main.java.org.springframework.samples.petclinic.model.NamedEntity; /** * Models a {@link Vet Vet's} specialty (for example, dentistry). diff --git a/src/main/java/org/springframework/samples/petclinic/vet/Vet.java b/udc-backend/src/main/java/org/springframework/samples/petclinic/vet/Vet.java similarity index 94% rename from src/main/java/org/springframework/samples/petclinic/vet/Vet.java rename to udc-backend/src/main/java/org/springframework/samples/petclinic/vet/Vet.java index 43aecc41e..237b24d08 100644 --- a/src/main/java/org/springframework/samples/petclinic/vet/Vet.java +++ b/udc-backend/src/main/java/org/springframework/samples/petclinic/vet/Vet.java @@ -13,7 +13,7 @@ * See the License for the specific language governing permissions and * limitations under the License. */ -package org.springframework.samples.petclinic.vet; +package main.java.org.springframework.samples.petclinic.vet; import java.util.ArrayList; import java.util.Collections; @@ -31,7 +31,7 @@ import javax.xml.bind.annotation.XmlElement; import org.springframework.beans.support.MutableSortDefinition; import org.springframework.beans.support.PropertyComparator; -import org.springframework.samples.petclinic.model.Person; +import main.java.org.springframework.samples.petclinic.model.Person; /** * Simple JavaBean domain object representing a veterinarian. diff --git a/src/main/java/org/springframework/samples/petclinic/vet/VetController.java b/udc-backend/src/main/java/org/springframework/samples/petclinic/vet/VetController.java similarity index 96% rename from src/main/java/org/springframework/samples/petclinic/vet/VetController.java rename to udc-backend/src/main/java/org/springframework/samples/petclinic/vet/VetController.java index c54b3b92d..b2012e244 100644 --- a/src/main/java/org/springframework/samples/petclinic/vet/VetController.java +++ b/udc-backend/src/main/java/org/springframework/samples/petclinic/vet/VetController.java @@ -13,7 +13,7 @@ * See the License for the specific language governing permissions and * limitations under the License. */ -package org.springframework.samples.petclinic.vet; +package main.java.org.springframework.samples.petclinic.vet; import org.springframework.stereotype.Controller; import org.springframework.web.bind.annotation.GetMapping; diff --git a/src/main/java/org/springframework/samples/petclinic/vet/VetRepository.java b/udc-backend/src/main/java/org/springframework/samples/petclinic/vet/VetRepository.java similarity index 96% rename from src/main/java/org/springframework/samples/petclinic/vet/VetRepository.java rename to udc-backend/src/main/java/org/springframework/samples/petclinic/vet/VetRepository.java index 20863ce76..4513a7d79 100644 --- a/src/main/java/org/springframework/samples/petclinic/vet/VetRepository.java +++ b/udc-backend/src/main/java/org/springframework/samples/petclinic/vet/VetRepository.java @@ -13,7 +13,7 @@ * See the License for the specific language governing permissions and * limitations under the License. */ -package org.springframework.samples.petclinic.vet; +package main.java.org.springframework.samples.petclinic.vet; import java.util.Collection; diff --git a/src/main/java/org/springframework/samples/petclinic/vet/Vets.java b/udc-backend/src/main/java/org/springframework/samples/petclinic/vet/Vets.java similarity index 95% rename from src/main/java/org/springframework/samples/petclinic/vet/Vets.java rename to udc-backend/src/main/java/org/springframework/samples/petclinic/vet/Vets.java index f5b24c3fc..bb3c0454c 100644 --- a/src/main/java/org/springframework/samples/petclinic/vet/Vets.java +++ b/udc-backend/src/main/java/org/springframework/samples/petclinic/vet/Vets.java @@ -13,7 +13,7 @@ * See the License for the specific language governing permissions and * limitations under the License. */ -package org.springframework.samples.petclinic.vet; +package main.java.org.springframework.samples.petclinic.vet; import java.util.ArrayList; import java.util.List; diff --git a/src/main/java/org/springframework/samples/petclinic/visit/Visit.java b/udc-backend/src/main/java/org/springframework/samples/petclinic/visit/Visit.java similarity index 96% rename from src/main/java/org/springframework/samples/petclinic/visit/Visit.java rename to udc-backend/src/main/java/org/springframework/samples/petclinic/visit/Visit.java index ab6e3319c..5735c0ab0 100755 --- a/src/main/java/org/springframework/samples/petclinic/visit/Visit.java +++ b/udc-backend/src/main/java/org/springframework/samples/petclinic/visit/Visit.java @@ -13,7 +13,7 @@ * See the License for the specific language governing permissions and * limitations under the License. */ -package org.springframework.samples.petclinic.visit; +package main.java.org.springframework.samples.petclinic.visit; import java.time.LocalDate; diff --git a/src/main/java/org/springframework/samples/petclinic/visit/VisitRepository.java b/udc-backend/src/main/java/org/springframework/samples/petclinic/visit/VisitRepository.java similarity index 96% rename from src/main/java/org/springframework/samples/petclinic/visit/VisitRepository.java rename to udc-backend/src/main/java/org/springframework/samples/petclinic/visit/VisitRepository.java index c7853d170..ab04602ec 100644 --- a/src/main/java/org/springframework/samples/petclinic/visit/VisitRepository.java +++ b/udc-backend/src/main/java/org/springframework/samples/petclinic/visit/VisitRepository.java @@ -13,7 +13,7 @@ * See the License for the specific language governing permissions and * limitations under the License. */ -package org.springframework.samples.petclinic.visit; +package main.java.org.springframework.samples.petclinic.visit; import java.util.List; diff --git a/src/main/less/header.less b/udc-backend/src/main/less/header.less similarity index 100% rename from src/main/less/header.less rename to udc-backend/src/main/less/header.less diff --git a/src/main/less/petclinic.less b/udc-backend/src/main/less/petclinic.less similarity index 100% rename from src/main/less/petclinic.less rename to udc-backend/src/main/less/petclinic.less diff --git a/src/main/less/responsive.less b/udc-backend/src/main/less/responsive.less similarity index 100% rename from src/main/less/responsive.less rename to udc-backend/src/main/less/responsive.less diff --git a/src/main/less/typography.less b/udc-backend/src/main/less/typography.less similarity index 100% rename from src/main/less/typography.less rename to udc-backend/src/main/less/typography.less diff --git a/src/main/resources/application-mysql.properties b/udc-backend/src/main/resources/application-mysql.properties similarity index 100% rename from src/main/resources/application-mysql.properties rename to udc-backend/src/main/resources/application-mysql.properties diff --git a/src/main/resources/application.properties b/udc-backend/src/main/resources/application.properties similarity index 100% rename from src/main/resources/application.properties rename to udc-backend/src/main/resources/application.properties diff --git a/src/main/resources/banner.txt b/udc-backend/src/main/resources/banner.txt similarity index 100% rename from src/main/resources/banner.txt rename to udc-backend/src/main/resources/banner.txt diff --git a/src/main/resources/db/hsqldb/data.sql b/udc-backend/src/main/resources/db/hsqldb/data.sql similarity index 100% rename from src/main/resources/db/hsqldb/data.sql rename to udc-backend/src/main/resources/db/hsqldb/data.sql diff --git a/src/main/resources/db/hsqldb/schema.sql b/udc-backend/src/main/resources/db/hsqldb/schema.sql similarity index 100% rename from src/main/resources/db/hsqldb/schema.sql rename to udc-backend/src/main/resources/db/hsqldb/schema.sql diff --git a/src/main/resources/db/mysql/data.sql b/udc-backend/src/main/resources/db/mysql/data.sql similarity index 100% rename from src/main/resources/db/mysql/data.sql rename to udc-backend/src/main/resources/db/mysql/data.sql diff --git a/src/main/resources/db/mysql/petclinic_db_setup_mysql.txt b/udc-backend/src/main/resources/db/mysql/petclinic_db_setup_mysql.txt similarity index 100% rename from src/main/resources/db/mysql/petclinic_db_setup_mysql.txt rename to udc-backend/src/main/resources/db/mysql/petclinic_db_setup_mysql.txt diff --git a/src/main/resources/db/mysql/schema.sql b/udc-backend/src/main/resources/db/mysql/schema.sql similarity index 100% rename from src/main/resources/db/mysql/schema.sql rename to udc-backend/src/main/resources/db/mysql/schema.sql diff --git a/src/main/resources/messages/messages.properties b/udc-backend/src/main/resources/messages/messages.properties similarity index 100% rename from src/main/resources/messages/messages.properties rename to udc-backend/src/main/resources/messages/messages.properties diff --git a/src/main/resources/messages/messages_de.properties b/udc-backend/src/main/resources/messages/messages_de.properties similarity index 100% rename from src/main/resources/messages/messages_de.properties rename to udc-backend/src/main/resources/messages/messages_de.properties diff --git a/src/main/resources/messages/messages_en.properties b/udc-backend/src/main/resources/messages/messages_en.properties similarity index 100% rename from src/main/resources/messages/messages_en.properties rename to udc-backend/src/main/resources/messages/messages_en.properties diff --git a/src/main/resources/static/resources/fonts/montserrat-webfont.eot b/udc-backend/src/main/resources/static/resources/fonts/montserrat-webfont.eot similarity index 100% rename from src/main/resources/static/resources/fonts/montserrat-webfont.eot rename to udc-backend/src/main/resources/static/resources/fonts/montserrat-webfont.eot diff --git a/src/main/resources/static/resources/fonts/montserrat-webfont.svg b/udc-backend/src/main/resources/static/resources/fonts/montserrat-webfont.svg similarity index 100% rename from src/main/resources/static/resources/fonts/montserrat-webfont.svg rename to udc-backend/src/main/resources/static/resources/fonts/montserrat-webfont.svg diff --git a/src/main/resources/static/resources/fonts/montserrat-webfont.ttf b/udc-backend/src/main/resources/static/resources/fonts/montserrat-webfont.ttf similarity index 100% rename from src/main/resources/static/resources/fonts/montserrat-webfont.ttf rename to udc-backend/src/main/resources/static/resources/fonts/montserrat-webfont.ttf diff --git a/src/main/resources/static/resources/fonts/montserrat-webfont.woff b/udc-backend/src/main/resources/static/resources/fonts/montserrat-webfont.woff similarity index 100% rename from src/main/resources/static/resources/fonts/montserrat-webfont.woff rename to udc-backend/src/main/resources/static/resources/fonts/montserrat-webfont.woff diff --git a/src/main/resources/static/resources/fonts/varela_round-webfont.eot b/udc-backend/src/main/resources/static/resources/fonts/varela_round-webfont.eot similarity index 100% rename from src/main/resources/static/resources/fonts/varela_round-webfont.eot rename to udc-backend/src/main/resources/static/resources/fonts/varela_round-webfont.eot diff --git a/src/main/resources/static/resources/fonts/varela_round-webfont.svg b/udc-backend/src/main/resources/static/resources/fonts/varela_round-webfont.svg similarity index 100% rename from src/main/resources/static/resources/fonts/varela_round-webfont.svg rename to udc-backend/src/main/resources/static/resources/fonts/varela_round-webfont.svg diff --git a/src/main/resources/static/resources/fonts/varela_round-webfont.ttf b/udc-backend/src/main/resources/static/resources/fonts/varela_round-webfont.ttf similarity index 100% rename from src/main/resources/static/resources/fonts/varela_round-webfont.ttf rename to udc-backend/src/main/resources/static/resources/fonts/varela_round-webfont.ttf diff --git a/src/main/resources/static/resources/fonts/varela_round-webfont.woff b/udc-backend/src/main/resources/static/resources/fonts/varela_round-webfont.woff similarity index 100% rename from src/main/resources/static/resources/fonts/varela_round-webfont.woff rename to udc-backend/src/main/resources/static/resources/fonts/varela_round-webfont.woff diff --git a/src/main/resources/static/resources/images/favicon.png b/udc-backend/src/main/resources/static/resources/images/favicon.png similarity index 100% rename from src/main/resources/static/resources/images/favicon.png rename to udc-backend/src/main/resources/static/resources/images/favicon.png diff --git a/src/main/resources/static/resources/images/pets.png b/udc-backend/src/main/resources/static/resources/images/pets.png similarity index 100% rename from src/main/resources/static/resources/images/pets.png rename to udc-backend/src/main/resources/static/resources/images/pets.png diff --git a/src/main/resources/static/resources/images/platform-bg.png b/udc-backend/src/main/resources/static/resources/images/platform-bg.png similarity index 100% rename from src/main/resources/static/resources/images/platform-bg.png rename to udc-backend/src/main/resources/static/resources/images/platform-bg.png diff --git a/src/main/resources/static/resources/images/spring-logo-dataflow-mobile.png b/udc-backend/src/main/resources/static/resources/images/spring-logo-dataflow-mobile.png similarity index 100% rename from src/main/resources/static/resources/images/spring-logo-dataflow-mobile.png rename to udc-backend/src/main/resources/static/resources/images/spring-logo-dataflow-mobile.png diff --git a/src/main/resources/static/resources/images/spring-logo-dataflow.png b/udc-backend/src/main/resources/static/resources/images/spring-logo-dataflow.png similarity index 100% rename from src/main/resources/static/resources/images/spring-logo-dataflow.png rename to udc-backend/src/main/resources/static/resources/images/spring-logo-dataflow.png diff --git a/src/main/resources/static/resources/images/spring-pivotal-logo.png b/udc-backend/src/main/resources/static/resources/images/spring-pivotal-logo.png similarity index 100% rename from src/main/resources/static/resources/images/spring-pivotal-logo.png rename to udc-backend/src/main/resources/static/resources/images/spring-pivotal-logo.png diff --git a/src/main/resources/templates/error.html b/udc-backend/src/main/resources/templates/error.html similarity index 100% rename from src/main/resources/templates/error.html rename to udc-backend/src/main/resources/templates/error.html diff --git a/src/main/resources/templates/fragments/inputField.html b/udc-backend/src/main/resources/templates/fragments/inputField.html similarity index 100% rename from src/main/resources/templates/fragments/inputField.html rename to udc-backend/src/main/resources/templates/fragments/inputField.html diff --git a/src/main/resources/templates/fragments/layout.html b/udc-backend/src/main/resources/templates/fragments/layout.html similarity index 100% rename from src/main/resources/templates/fragments/layout.html rename to udc-backend/src/main/resources/templates/fragments/layout.html diff --git a/src/main/resources/templates/fragments/selectField.html b/udc-backend/src/main/resources/templates/fragments/selectField.html similarity index 100% rename from src/main/resources/templates/fragments/selectField.html rename to udc-backend/src/main/resources/templates/fragments/selectField.html diff --git a/src/main/resources/templates/owners/createOrUpdateOwnerForm.html b/udc-backend/src/main/resources/templates/owners/createOrUpdateOwnerForm.html similarity index 100% rename from src/main/resources/templates/owners/createOrUpdateOwnerForm.html rename to udc-backend/src/main/resources/templates/owners/createOrUpdateOwnerForm.html diff --git a/src/main/resources/templates/owners/findOwners.html b/udc-backend/src/main/resources/templates/owners/findOwners.html similarity index 100% rename from src/main/resources/templates/owners/findOwners.html rename to udc-backend/src/main/resources/templates/owners/findOwners.html diff --git a/src/main/resources/templates/owners/ownerDetails.html b/udc-backend/src/main/resources/templates/owners/ownerDetails.html similarity index 100% rename from src/main/resources/templates/owners/ownerDetails.html rename to udc-backend/src/main/resources/templates/owners/ownerDetails.html diff --git a/src/main/resources/templates/owners/ownersList.html b/udc-backend/src/main/resources/templates/owners/ownersList.html similarity index 100% rename from src/main/resources/templates/owners/ownersList.html rename to udc-backend/src/main/resources/templates/owners/ownersList.html diff --git a/src/main/resources/templates/pets/createOrUpdatePetForm.html b/udc-backend/src/main/resources/templates/pets/createOrUpdatePetForm.html similarity index 100% rename from src/main/resources/templates/pets/createOrUpdatePetForm.html rename to udc-backend/src/main/resources/templates/pets/createOrUpdatePetForm.html diff --git a/src/main/resources/templates/pets/createOrUpdateVisitForm.html b/udc-backend/src/main/resources/templates/pets/createOrUpdateVisitForm.html similarity index 100% rename from src/main/resources/templates/pets/createOrUpdateVisitForm.html rename to udc-backend/src/main/resources/templates/pets/createOrUpdateVisitForm.html diff --git a/src/main/resources/templates/vets/vetList.html b/udc-backend/src/main/resources/templates/vets/vetList.html similarity index 100% rename from src/main/resources/templates/vets/vetList.html rename to udc-backend/src/main/resources/templates/vets/vetList.html diff --git a/src/main/resources/templates/welcome.html b/udc-backend/src/main/resources/templates/welcome.html similarity index 100% rename from src/main/resources/templates/welcome.html rename to udc-backend/src/main/resources/templates/welcome.html diff --git a/src/main/wro/wro.properties b/udc-backend/src/main/wro/wro.properties similarity index 100% rename from src/main/wro/wro.properties rename to udc-backend/src/main/wro/wro.properties diff --git a/src/main/wro/wro.xml b/udc-backend/src/main/wro/wro.xml similarity index 100% rename from src/main/wro/wro.xml rename to udc-backend/src/main/wro/wro.xml diff --git a/src/test/java/org/springframework/samples/petclinic/PetclinicIntegrationTests.java b/udc-backend/src/test/java/org/springframework/samples/petclinic/PetclinicIntegrationTests.java similarity index 95% rename from src/test/java/org/springframework/samples/petclinic/PetclinicIntegrationTests.java rename to udc-backend/src/test/java/org/springframework/samples/petclinic/PetclinicIntegrationTests.java index 3f48c0d4a..99988b731 100644 --- a/src/test/java/org/springframework/samples/petclinic/PetclinicIntegrationTests.java +++ b/udc-backend/src/test/java/org/springframework/samples/petclinic/PetclinicIntegrationTests.java @@ -14,7 +14,7 @@ * limitations under the License. */ -package org.springframework.samples.petclinic; +package test.java.org.springframework.samples.petclinic; import org.junit.Test; import org.junit.runner.RunWith; diff --git a/src/test/java/org/springframework/samples/petclinic/model/ValidatorTests.java b/udc-backend/src/test/java/org/springframework/samples/petclinic/model/ValidatorTests.java similarity index 95% rename from src/test/java/org/springframework/samples/petclinic/model/ValidatorTests.java rename to udc-backend/src/test/java/org/springframework/samples/petclinic/model/ValidatorTests.java index 7da0d3dea..971f952f1 100644 --- a/src/test/java/org/springframework/samples/petclinic/model/ValidatorTests.java +++ b/udc-backend/src/test/java/org/springframework/samples/petclinic/model/ValidatorTests.java @@ -1,4 +1,4 @@ -package org.springframework.samples.petclinic.model; +package test.java.org.springframework.samples.petclinic.model; import java.util.Locale; import java.util.Set; diff --git a/src/test/java/org/springframework/samples/petclinic/owner/OwnerControllerTests.java b/udc-backend/src/test/java/org/springframework/samples/petclinic/owner/OwnerControllerTests.java similarity index 99% rename from src/test/java/org/springframework/samples/petclinic/owner/OwnerControllerTests.java rename to udc-backend/src/test/java/org/springframework/samples/petclinic/owner/OwnerControllerTests.java index 7fccb3b04..8f558c26f 100644 --- a/src/test/java/org/springframework/samples/petclinic/owner/OwnerControllerTests.java +++ b/udc-backend/src/test/java/org/springframework/samples/petclinic/owner/OwnerControllerTests.java @@ -1,4 +1,4 @@ -package org.springframework.samples.petclinic.owner; +package test.java.org.springframework.samples.petclinic.owner; import static org.hamcrest.Matchers.hasProperty; import static org.hamcrest.Matchers.is; diff --git a/src/test/java/org/springframework/samples/petclinic/owner/PetControllerTests.java b/udc-backend/src/test/java/org/springframework/samples/petclinic/owner/PetControllerTests.java similarity index 98% rename from src/test/java/org/springframework/samples/petclinic/owner/PetControllerTests.java rename to udc-backend/src/test/java/org/springframework/samples/petclinic/owner/PetControllerTests.java index f95d7c87c..0e5cce9f8 100755 --- a/src/test/java/org/springframework/samples/petclinic/owner/PetControllerTests.java +++ b/udc-backend/src/test/java/org/springframework/samples/petclinic/owner/PetControllerTests.java @@ -1,4 +1,4 @@ -package org.springframework.samples.petclinic.owner; +package test.java.org.springframework.samples.petclinic.owner; import static org.mockito.BDDMockito.given; import static org.springframework.test.web.servlet.request.MockMvcRequestBuilders.get; diff --git a/src/test/java/org/springframework/samples/petclinic/owner/PetTypeFormatterTests.java b/udc-backend/src/test/java/org/springframework/samples/petclinic/owner/PetTypeFormatterTests.java similarity index 96% rename from src/test/java/org/springframework/samples/petclinic/owner/PetTypeFormatterTests.java rename to udc-backend/src/test/java/org/springframework/samples/petclinic/owner/PetTypeFormatterTests.java index 4e8e36c14..306338b09 100644 --- a/src/test/java/org/springframework/samples/petclinic/owner/PetTypeFormatterTests.java +++ b/udc-backend/src/test/java/org/springframework/samples/petclinic/owner/PetTypeFormatterTests.java @@ -1,4 +1,4 @@ -package org.springframework.samples.petclinic.owner; +package test.java.org.springframework.samples.petclinic.owner; import java.text.ParseException; import java.util.ArrayList; diff --git a/src/test/java/org/springframework/samples/petclinic/owner/VisitControllerTests.java b/udc-backend/src/test/java/org/springframework/samples/petclinic/owner/VisitControllerTests.java similarity index 97% rename from src/test/java/org/springframework/samples/petclinic/owner/VisitControllerTests.java rename to udc-backend/src/test/java/org/springframework/samples/petclinic/owner/VisitControllerTests.java index 08d61360e..044ace0a6 100644 --- a/src/test/java/org/springframework/samples/petclinic/owner/VisitControllerTests.java +++ b/udc-backend/src/test/java/org/springframework/samples/petclinic/owner/VisitControllerTests.java @@ -1,4 +1,4 @@ -package org.springframework.samples.petclinic.owner; +package test.java.org.springframework.samples.petclinic.owner; import static org.mockito.BDDMockito.given; import static org.springframework.test.web.servlet.request.MockMvcRequestBuilders.get; diff --git a/src/test/java/org/springframework/samples/petclinic/service/ClinicServiceTests.java b/udc-backend/src/test/java/org/springframework/samples/petclinic/service/ClinicServiceTests.java similarity index 99% rename from src/test/java/org/springframework/samples/petclinic/service/ClinicServiceTests.java rename to udc-backend/src/test/java/org/springframework/samples/petclinic/service/ClinicServiceTests.java index 9f12151d9..ca247c192 100644 --- a/src/test/java/org/springframework/samples/petclinic/service/ClinicServiceTests.java +++ b/udc-backend/src/test/java/org/springframework/samples/petclinic/service/ClinicServiceTests.java @@ -14,7 +14,7 @@ * limitations under the License. */ -package org.springframework.samples.petclinic.service; +package test.java.org.springframework.samples.petclinic.service; import static org.assertj.core.api.Assertions.assertThat; diff --git a/src/test/java/org/springframework/samples/petclinic/service/EntityUtils.java b/udc-backend/src/test/java/org/springframework/samples/petclinic/service/EntityUtils.java similarity index 96% rename from src/test/java/org/springframework/samples/petclinic/service/EntityUtils.java rename to udc-backend/src/test/java/org/springframework/samples/petclinic/service/EntityUtils.java index 44dc6b1c2..0eb130a4a 100644 --- a/src/test/java/org/springframework/samples/petclinic/service/EntityUtils.java +++ b/udc-backend/src/test/java/org/springframework/samples/petclinic/service/EntityUtils.java @@ -14,7 +14,7 @@ * limitations under the License. */ -package org.springframework.samples.petclinic.service; +package test.java.org.springframework.samples.petclinic.service; import java.util.Collection; diff --git a/src/test/java/org/springframework/samples/petclinic/system/CrashControllerTests.java b/udc-backend/src/test/java/org/springframework/samples/petclinic/system/CrashControllerTests.java similarity index 95% rename from src/test/java/org/springframework/samples/petclinic/system/CrashControllerTests.java rename to udc-backend/src/test/java/org/springframework/samples/petclinic/system/CrashControllerTests.java index 3f108bfe9..1c2377f3b 100644 --- a/src/test/java/org/springframework/samples/petclinic/system/CrashControllerTests.java +++ b/udc-backend/src/test/java/org/springframework/samples/petclinic/system/CrashControllerTests.java @@ -1,4 +1,4 @@ -package org.springframework.samples.petclinic.system; +package test.java.org.springframework.samples.petclinic.system; import org.junit.Ignore; import org.junit.Test; diff --git a/src/test/java/org/springframework/samples/petclinic/vet/VetControllerTests.java b/udc-backend/src/test/java/org/springframework/samples/petclinic/vet/VetControllerTests.java similarity index 97% rename from src/test/java/org/springframework/samples/petclinic/vet/VetControllerTests.java rename to udc-backend/src/test/java/org/springframework/samples/petclinic/vet/VetControllerTests.java index bd20ca79a..f860c8224 100644 --- a/src/test/java/org/springframework/samples/petclinic/vet/VetControllerTests.java +++ b/udc-backend/src/test/java/org/springframework/samples/petclinic/vet/VetControllerTests.java @@ -1,4 +1,4 @@ -package org.springframework.samples.petclinic.vet; +package test.java.org.springframework.samples.petclinic.vet; import static org.hamcrest.xml.HasXPath.hasXPath; import static org.mockito.BDDMockito.given; diff --git a/src/test/java/org/springframework/samples/petclinic/vet/VetTests.java b/udc-backend/src/test/java/org/springframework/samples/petclinic/vet/VetTests.java similarity index 95% rename from src/test/java/org/springframework/samples/petclinic/vet/VetTests.java rename to udc-backend/src/test/java/org/springframework/samples/petclinic/vet/VetTests.java index de3a7b9bb..ed15c61de 100644 --- a/src/test/java/org/springframework/samples/petclinic/vet/VetTests.java +++ b/udc-backend/src/test/java/org/springframework/samples/petclinic/vet/VetTests.java @@ -13,7 +13,7 @@ * See the License for the specific language governing permissions and * limitations under the License. */ -package org.springframework.samples.petclinic.vet; +package test.java.org.springframework.samples.petclinic.vet; import org.junit.Test; diff --git a/src/test/jmeter/petclinic_test_plan.jmx b/udc-backend/src/test/jmeter/petclinic_test_plan.jmx similarity index 100% rename from src/test/jmeter/petclinic_test_plan.jmx rename to udc-backend/src/test/jmeter/petclinic_test_plan.jmx From 465a4c841d728437a00d70ab0ca4c41fb28869ac Mon Sep 17 00:00:00 2001 From: Alexander Sharov Date: Tue, 25 Sep 2018 21:04:31 +0400 Subject: [PATCH 02/15] Add container module & helm charts --- pom.xml | 13 +- udc-backend/pom.xml | 8 +- udc-containers/pom.xml | 117 ++++++++++++++++++ udc-containers/udc-backend-service/pom.xml | 75 +++++++++++ .../src/main/resources/Dockerfile | 14 +++ .../src/main/resources/docker-entrypoint.sh | 1 + .../src/main/resources/Dockerfile | 15 +++ udc-helm/cicd/jenkins/Chart.yaml | 11 ++ .../cicd/jenkins/templates/deployment.yaml | 45 +++++++ udc-helm/cicd/jenkins/templates/svc.yaml | 37 ++++++ udc-helm/cicd/jenkins/templates/volume.yaml | 37 ++++++ udc-helm/cicd/jenkins/values.yaml | 10 ++ 12 files changed, 372 insertions(+), 11 deletions(-) create mode 100644 udc-containers/pom.xml create mode 100644 udc-containers/udc-backend-service/pom.xml create mode 100644 udc-containers/udc-backend-service/src/main/resources/Dockerfile create mode 100644 udc-containers/udc-backend-service/src/main/resources/docker-entrypoint.sh create mode 100644 udc-containers/udc-jenkins-slave/src/main/resources/Dockerfile create mode 100644 udc-helm/cicd/jenkins/Chart.yaml create mode 100644 udc-helm/cicd/jenkins/templates/deployment.yaml create mode 100644 udc-helm/cicd/jenkins/templates/svc.yaml create mode 100644 udc-helm/cicd/jenkins/templates/volume.yaml create mode 100644 udc-helm/cicd/jenkins/values.yaml diff --git a/pom.xml b/pom.xml index 2c8b7574d..4a738eb42 100644 --- a/pom.xml +++ b/pom.xml @@ -4,19 +4,20 @@ xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd"> 4.0.0 - org.springframework.samples - udc-petclinic - pom - 1.0.0-SNAPSHOT - UDC :: Petclinic - org.springframework.boot spring-boot-starter-parent 2.0.4.RELEASE + org.springframework.samples + udc-petclinic + pom + 1.0.0-SNAPSHOT + UDC :: Petclinic + udc-backend + diff --git a/udc-backend/pom.xml b/udc-backend/pom.xml index 3cf4c0404..807535791 100644 --- a/udc-backend/pom.xml +++ b/udc-backend/pom.xml @@ -4,17 +4,15 @@ xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd"> 4.0.0 - org.springframework.samples - udc-backend - 1.0.0-SNAPSHOT - UDC :: Petclinic :: Backend - org.springframework.samples udc-petclinic 1.0.0-SNAPSHOT + udc-backend + UDC :: Petclinic :: Backend + 1.8 diff --git a/udc-containers/pom.xml b/udc-containers/pom.xml new file mode 100644 index 000000000..fb303d24e --- /dev/null +++ b/udc-containers/pom.xml @@ -0,0 +1,117 @@ + + + 4.0.0 + + + org.springframework.samples + udc-petclinic + 1.0.0-SNAPSHOT + + + udc-containers + UDC :: Containers :: Parent + pom + + + udc-backend-service + + + + UTF-8 + UTF-8 + + true + true + TODO + university-course + localhost + + + + + + + org.apache.maven.plugins + maven-resources-plugin + + + copy-docker-resources + none + + resources + + + ${project.build.directory}/context + true + + + src/main/resources + true + + + + + + + + org.codehaus.mojo + exec-maven-plugin + + + docker-build + none + + exec + + + ${docker.skip.build} + docker + + build + -t + + ${docker.registry.host}/${docker.repository}/${project.artifactId}:${project.version} + + ${project.build.directory}/context + + + + + docker-push + none + + exec + + + ${docker.skip.push} + docker + + push + + ${docker.registry.host}/${docker.repository}/${project.artifactId}:${project.version} + + + + + + + + + + + + + image + + false + + + + false + false + + + + diff --git a/udc-containers/udc-backend-service/pom.xml b/udc-containers/udc-backend-service/pom.xml new file mode 100644 index 000000000..ed5aaf49b --- /dev/null +++ b/udc-containers/udc-backend-service/pom.xml @@ -0,0 +1,75 @@ + + + 4.0.0 + + + org.springframework.samples + udc-containers + 1.0.0-SNAPSHOT + + + udc-backend-service + UDC :: Containers :: Backend + + + + + org.apache.maven.plugins + maven-resources-plugin + + + copy-docker-resources + install + + resources + + + + + + org.apache.maven.plugins + maven-dependency-plugin + + + copy + package + + copy + + + + + TODO + TODO + ${project.version} + jar + true + ${project.basedir}/target/context + ${project.artifactId}.jar + + + false + true + + + + + + org.codehaus.mojo + exec-maven-plugin + + + docker-build + install + + + docker-push + deploy + + + + + + diff --git a/udc-containers/udc-backend-service/src/main/resources/Dockerfile b/udc-containers/udc-backend-service/src/main/resources/Dockerfile new file mode 100644 index 000000000..f0e025cb5 --- /dev/null +++ b/udc-containers/udc-backend-service/src/main/resources/Dockerfile @@ -0,0 +1,14 @@ +FROM ${docker.baseImage} + +EXPOSE 8080 +ENTRYPOINT ["/docker-entrypoint.sh"] +WORKDIR "/udc/apps/petclinic" + +COPY docker-entrypoint.sh /docker-entrypoint.sh +RUN chmod +x /docker-entrypoint.sh + +COPY todo.jar /udc/apps/petclinic/todo.jar + +LABEL project.groupid="${project.groupId}" \ + project.artifactid="${project.artifactId}" \ + project.version="${project.version}" diff --git a/udc-containers/udc-backend-service/src/main/resources/docker-entrypoint.sh b/udc-containers/udc-backend-service/src/main/resources/docker-entrypoint.sh new file mode 100644 index 000000000..a9bf588e2 --- /dev/null +++ b/udc-containers/udc-backend-service/src/main/resources/docker-entrypoint.sh @@ -0,0 +1 @@ +#!/bin/bash diff --git a/udc-containers/udc-jenkins-slave/src/main/resources/Dockerfile b/udc-containers/udc-jenkins-slave/src/main/resources/Dockerfile new file mode 100644 index 000000000..17a7d46ee --- /dev/null +++ b/udc-containers/udc-jenkins-slave/src/main/resources/Dockerfile @@ -0,0 +1,15 @@ +FROM jenkinsci/jnlp-slave + +ENV CLOUDSDK_CORE_DISABLE_PROMPTS 1 +ENV PATH /opt/google-cloud-sdk/bin:${PATH} + +USER root + +RUN apt-get update -y +RUN apt-get install -y jq \ + libapparmor-dev \ + libseccomp-dev \ + unzip +RUN curl https://sdk.cloud.google.com | bash && mv google-cloud-sdk /opt +RUN gcloud components install kubectl +RUN curl -sfSL https://raw.githubusercontent.com/kubernetes/helm/master/scripts/get | bash diff --git a/udc-helm/cicd/jenkins/Chart.yaml b/udc-helm/cicd/jenkins/Chart.yaml new file mode 100644 index 000000000..6662ee80a --- /dev/null +++ b/udc-helm/cicd/jenkins/Chart.yaml @@ -0,0 +1,11 @@ +name: jenkins +description: Jenkins CI for UDC +version: 1.0.0 +keywords: + - cicd +sources: + - https://github.com/kvendingoldo/udc-petclinic +maintainers: + - name: Alex Sharov + email: kvendingoldo@gmail.com +engine: gotpl diff --git a/udc-helm/cicd/jenkins/templates/deployment.yaml b/udc-helm/cicd/jenkins/templates/deployment.yaml new file mode 100644 index 000000000..69fba6c77 --- /dev/null +++ b/udc-helm/cicd/jenkins/templates/deployment.yaml @@ -0,0 +1,45 @@ +--- +apiVersion: extensions/v1beta1 +kind: Deployment +metadata: + name: {{ .Values.component.name }} + labels: + heritage: {{ .Release.Service }} + release: {{ .Release.Name }} + chart: {{ .Chart.Name }}-{{ .Chart.Version }} + component: {{ .Values.component.name }} +spec: + replicas: 1 + template: + metadata: + name: {{ .Values.component.name }} + labels: + heritage: {{ .Release.Service }} + release: {{ .Release.Name }} + chart: {{ .Chart.Name }}-{{ .Chart.Version }} + component: {{ .Values.component.name }} + spec: + containers: + - name: {{ .Values.component.container.name }} + image: {{ .Values.component.container.image }} + imagePullPolicy: Always + ports: + - containerPort: 8080 + protocol: TCP + - containerPort: 50000 + protocol: TCP + env: + - name: JENKINS_SLAVEPORT + value: '50000' + - name: JAVA_VM_PARAMETERS + value: '-Xmx3072m -Xms256m' + - name: JAVA_OPTS + value: '-Djava.util.logging.config.file=/var/jenkins_home/log.properties' + volumeMounts: + - name: jenkins-persistent-storage + mountPath: /var/jenkins_home + subPath: jenkins_home + volumes: + - name: jenkins-persistent-storage + persistentVolumeClaim: + claimName: {{ .Values.component.name }}-pvc diff --git a/udc-helm/cicd/jenkins/templates/svc.yaml b/udc-helm/cicd/jenkins/templates/svc.yaml new file mode 100644 index 000000000..f78d01854 --- /dev/null +++ b/udc-helm/cicd/jenkins/templates/svc.yaml @@ -0,0 +1,37 @@ +--- +apiVersion: v1 +kind: Service +metadata: + name: {{ .Values.component.name }}-ui +spec: + type: LoadBalancer + loadBalancerIP: {{ .Values.component.external.ip }} + selector: + heritage: {{ .Release.Service }} + release: {{ .Release.Name }} + chart: {{ .Chart.Name }}-{{ .Chart.Version }} + component: {{ .Values.component.name }} + ports: + - protocol: TCP + port: {{ .Values.component.external.port }} + targetPort: 8080 + name: ui + +--- +apiVersion: v1 +kind: Service +metadata: + name: {{ .Values.component.name }}-discovery +spec: + type: LoadBalancer + loadBalancerIP: {{ .Values.component.external.ip }} + selector: + heritage: {{ .Release.Service }} + release: {{ .Release.Name }} + chart: {{ .Chart.Name }}-{{ .Chart.Version }} + component: {{ .Values.component.name }} + ports: + - protocol: TCP + port: 50000 + targetPort: 50000 + name: slaves diff --git a/udc-helm/cicd/jenkins/templates/volume.yaml b/udc-helm/cicd/jenkins/templates/volume.yaml new file mode 100644 index 000000000..e143f1d80 --- /dev/null +++ b/udc-helm/cicd/jenkins/templates/volume.yaml @@ -0,0 +1,37 @@ +--- +apiVersion: v1 +kind: PersistentVolume +metadata: + name: {{ .Values.component.name }}-pv + labels: + heritage: {{ .Release.Service }} + release: {{ .Release.Name }} + chart: {{ .Chart.Name }}-{{ .Chart.Version }} + component: {{ .Values.component.name }} +spec: + capacity: + storage: 15Gi + accessModes: + - ReadWriteMany + gcePersistentDisk: + pdName: {{ .Values.component.volume.name }} + fsType: ext4 + +--- +apiVersion: v1 +kind: PersistentVolumeClaim +metadata: + name: {{ .Values.component.name }}-pvc +spec: + accessModes: + - ReadWriteMany + storageClassName: "" + resources: + requests: + storage: 15Gi + selector: + matchLabels: + heritage: {{ .Release.Service }} + release: {{ .Release.Name }} + chart: {{ .Chart.Name }}-{{ .Chart.Version }} + component: {{ .Values.component.name }} diff --git a/udc-helm/cicd/jenkins/values.yaml b/udc-helm/cicd/jenkins/values.yaml new file mode 100644 index 000000000..73b526147 --- /dev/null +++ b/udc-helm/cicd/jenkins/values.yaml @@ -0,0 +1,10 @@ +component: + name: jenkins + container: + name: udc-jenkins + image: jenkins/jenkins:lts + external: + ip: 104.199.74.83 + port: 8080 + volume: + name: udc-infra-jenkins-pd From 5807b8cfe501e267c16857e5eacfbaa666cb89fc Mon Sep 17 00:00:00 2001 From: Alexander Sharov Date: Tue, 25 Sep 2018 21:14:02 +0400 Subject: [PATCH 03/15] Fix path to wro file --- udc-backend/pom.xml | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/udc-backend/pom.xml b/udc-backend/pom.xml index 807535791..220935e83 100644 --- a/udc-backend/pom.xml +++ b/udc-backend/pom.xml @@ -188,8 +188,8 @@ ro.isdc.wro.maven.plugin.manager.factory.ConfigurableWroManagerFactory ${project.build.directory}/classes/static/resources/css - udc-backend/src/main/wro/wro.xml - udc-backend/src/main/wro/wro.properties + src/main/wro/wro.xml + src/main/wro/wro.properties ${basedir}/src/main/less From 611b0b150725f2bafbca3fae2615745b45cabcfa Mon Sep 17 00:00:00 2001 From: Alexander Sharov Date: Tue, 25 Sep 2018 21:20:33 +0400 Subject: [PATCH 04/15] Fix packages --- .../samples/petclinic/PetClinicApplication.java | 2 +- .../springframework/samples/petclinic/model/BaseEntity.java | 2 +- .../samples/petclinic/model/NamedEntity.java | 2 +- .../org/springframework/samples/petclinic/model/Person.java | 2 +- .../samples/petclinic/model/package-info.java | 2 +- .../org/springframework/samples/petclinic/owner/Owner.java | 2 +- .../samples/petclinic/owner/OwnerController.java | 2 +- .../samples/petclinic/owner/OwnerRepository.java | 2 +- .../org/springframework/samples/petclinic/owner/Pet.java | 4 ++-- .../samples/petclinic/owner/PetController.java | 2 +- .../samples/petclinic/owner/PetRepository.java | 2 +- .../springframework/samples/petclinic/owner/PetType.java | 2 +- .../samples/petclinic/owner/PetTypeFormatter.java | 2 +- .../samples/petclinic/owner/PetValidator.java | 2 +- .../samples/petclinic/owner/VisitController.java | 6 +++--- .../samples/petclinic/system/CacheConfiguration.java | 2 +- .../samples/petclinic/system/CrashController.java | 2 +- .../samples/petclinic/system/WelcomeController.java | 2 +- .../springframework/samples/petclinic/vet/Specialty.java | 4 ++-- .../java/org/springframework/samples/petclinic/vet/Vet.java | 4 ++-- .../samples/petclinic/vet/VetController.java | 2 +- .../samples/petclinic/vet/VetRepository.java | 2 +- .../org/springframework/samples/petclinic/vet/Vets.java | 2 +- .../org/springframework/samples/petclinic/visit/Visit.java | 2 +- .../samples/petclinic/visit/VisitRepository.java | 2 +- 25 files changed, 30 insertions(+), 30 deletions(-) diff --git a/udc-backend/src/main/java/org/springframework/samples/petclinic/PetClinicApplication.java b/udc-backend/src/main/java/org/springframework/samples/petclinic/PetClinicApplication.java index f9cfc8f31..83b118095 100644 --- a/udc-backend/src/main/java/org/springframework/samples/petclinic/PetClinicApplication.java +++ b/udc-backend/src/main/java/org/springframework/samples/petclinic/PetClinicApplication.java @@ -14,7 +14,7 @@ * limitations under the License. */ -package main.java.org.springframework.samples.petclinic; +package org.springframework.samples.petclinic; import org.springframework.boot.SpringApplication; import org.springframework.boot.autoconfigure.SpringBootApplication; diff --git a/udc-backend/src/main/java/org/springframework/samples/petclinic/model/BaseEntity.java b/udc-backend/src/main/java/org/springframework/samples/petclinic/model/BaseEntity.java index 177fb321e..86cc21092 100644 --- a/udc-backend/src/main/java/org/springframework/samples/petclinic/model/BaseEntity.java +++ b/udc-backend/src/main/java/org/springframework/samples/petclinic/model/BaseEntity.java @@ -13,7 +13,7 @@ * See the License for the specific language governing permissions and * limitations under the License. */ -package main.java.org.springframework.samples.petclinic.model; +package org.springframework.samples.petclinic.model; import java.io.Serializable; diff --git a/udc-backend/src/main/java/org/springframework/samples/petclinic/model/NamedEntity.java b/udc-backend/src/main/java/org/springframework/samples/petclinic/model/NamedEntity.java index 4becea667..d66c97ae7 100644 --- a/udc-backend/src/main/java/org/springframework/samples/petclinic/model/NamedEntity.java +++ b/udc-backend/src/main/java/org/springframework/samples/petclinic/model/NamedEntity.java @@ -13,7 +13,7 @@ * See the License for the specific language governing permissions and * limitations under the License. */ -package main.java.org.springframework.samples.petclinic.model; +package org.springframework.samples.petclinic.model; import javax.persistence.Column; import javax.persistence.MappedSuperclass; diff --git a/udc-backend/src/main/java/org/springframework/samples/petclinic/model/Person.java b/udc-backend/src/main/java/org/springframework/samples/petclinic/model/Person.java index 195bb79b0..5d23523bd 100644 --- a/udc-backend/src/main/java/org/springframework/samples/petclinic/model/Person.java +++ b/udc-backend/src/main/java/org/springframework/samples/petclinic/model/Person.java @@ -13,7 +13,7 @@ * See the License for the specific language governing permissions and * limitations under the License. */ -package main.java.org.springframework.samples.petclinic.model; +package org.springframework.samples.petclinic.model; import javax.persistence.Column; import javax.persistence.MappedSuperclass; diff --git a/udc-backend/src/main/java/org/springframework/samples/petclinic/model/package-info.java b/udc-backend/src/main/java/org/springframework/samples/petclinic/model/package-info.java index 4060bedbb..78294d130 100644 --- a/udc-backend/src/main/java/org/springframework/samples/petclinic/model/package-info.java +++ b/udc-backend/src/main/java/org/springframework/samples/petclinic/model/package-info.java @@ -1,5 +1,5 @@ /** * The classes in this package represent utilities used by the domain. */ -package main.java.org.springframework.samples.petclinic.model; +package org.springframework.samples.petclinic.model; diff --git a/udc-backend/src/main/java/org/springframework/samples/petclinic/owner/Owner.java b/udc-backend/src/main/java/org/springframework/samples/petclinic/owner/Owner.java index 7293116c7..89aad2c2c 100644 --- a/udc-backend/src/main/java/org/springframework/samples/petclinic/owner/Owner.java +++ b/udc-backend/src/main/java/org/springframework/samples/petclinic/owner/Owner.java @@ -13,7 +13,7 @@ * See the License for the specific language governing permissions and * limitations under the License. */ -package main.java.org.springframework.samples.petclinic.owner; +package org.springframework.samples.petclinic.owner; import java.util.ArrayList; import java.util.Collections; diff --git a/udc-backend/src/main/java/org/springframework/samples/petclinic/owner/OwnerController.java b/udc-backend/src/main/java/org/springframework/samples/petclinic/owner/OwnerController.java index 157cc24ef..5d11bff4c 100644 --- a/udc-backend/src/main/java/org/springframework/samples/petclinic/owner/OwnerController.java +++ b/udc-backend/src/main/java/org/springframework/samples/petclinic/owner/OwnerController.java @@ -13,7 +13,7 @@ * See the License for the specific language governing permissions and * limitations under the License. */ -package main.java.org.springframework.samples.petclinic.owner; +package org.springframework.samples.petclinic.owner; import org.springframework.stereotype.Controller; import org.springframework.ui.Model; diff --git a/udc-backend/src/main/java/org/springframework/samples/petclinic/owner/OwnerRepository.java b/udc-backend/src/main/java/org/springframework/samples/petclinic/owner/OwnerRepository.java index e152b9320..068f5245d 100644 --- a/udc-backend/src/main/java/org/springframework/samples/petclinic/owner/OwnerRepository.java +++ b/udc-backend/src/main/java/org/springframework/samples/petclinic/owner/OwnerRepository.java @@ -13,7 +13,7 @@ * See the License for the specific language governing permissions and * limitations under the License. */ -package main.java.org.springframework.samples.petclinic.owner; +package org.springframework.samples.petclinic.owner; import java.util.Collection; diff --git a/udc-backend/src/main/java/org/springframework/samples/petclinic/owner/Pet.java b/udc-backend/src/main/java/org/springframework/samples/petclinic/owner/Pet.java index f29ee770c..c225b8d8a 100755 --- a/udc-backend/src/main/java/org/springframework/samples/petclinic/owner/Pet.java +++ b/udc-backend/src/main/java/org/springframework/samples/petclinic/owner/Pet.java @@ -13,7 +13,7 @@ * See the License for the specific language governing permissions and * limitations under the License. */ -package main.java.org.springframework.samples.petclinic.owner; +package org.springframework.samples.petclinic.owner; import java.time.LocalDate; import java.util.ArrayList; @@ -36,7 +36,7 @@ import org.springframework.beans.support.MutableSortDefinition; import org.springframework.beans.support.PropertyComparator; import org.springframework.format.annotation.DateTimeFormat; import org.springframework.samples.petclinic.model.NamedEntity; -import main.java.org.springframework.samples.petclinic.visit.Visit; +import org.springframework.samples.petclinic.visit.Visit; /** * Simple business object representing a pet. diff --git a/udc-backend/src/main/java/org/springframework/samples/petclinic/owner/PetController.java b/udc-backend/src/main/java/org/springframework/samples/petclinic/owner/PetController.java index 41b043398..e0c1feeed 100644 --- a/udc-backend/src/main/java/org/springframework/samples/petclinic/owner/PetController.java +++ b/udc-backend/src/main/java/org/springframework/samples/petclinic/owner/PetController.java @@ -13,7 +13,7 @@ * See the License for the specific language governing permissions and * limitations under the License. */ -package main.java.org.springframework.samples.petclinic.owner; +package org.springframework.samples.petclinic.owner; import org.springframework.stereotype.Controller; import org.springframework.ui.ModelMap; diff --git a/udc-backend/src/main/java/org/springframework/samples/petclinic/owner/PetRepository.java b/udc-backend/src/main/java/org/springframework/samples/petclinic/owner/PetRepository.java index bcaa4a55d..b0ec5db23 100644 --- a/udc-backend/src/main/java/org/springframework/samples/petclinic/owner/PetRepository.java +++ b/udc-backend/src/main/java/org/springframework/samples/petclinic/owner/PetRepository.java @@ -13,7 +13,7 @@ * See the License for the specific language governing permissions and * limitations under the License. */ -package main.java.org.springframework.samples.petclinic.owner; +package org.springframework.samples.petclinic.owner; import java.util.List; diff --git a/udc-backend/src/main/java/org/springframework/samples/petclinic/owner/PetType.java b/udc-backend/src/main/java/org/springframework/samples/petclinic/owner/PetType.java index fdfb73728..ac827b310 100644 --- a/udc-backend/src/main/java/org/springframework/samples/petclinic/owner/PetType.java +++ b/udc-backend/src/main/java/org/springframework/samples/petclinic/owner/PetType.java @@ -13,7 +13,7 @@ * See the License for the specific language governing permissions and * limitations under the License. */ -package main.java.org.springframework.samples.petclinic.owner; +package org.springframework.samples.petclinic.owner; import javax.persistence.Entity; import javax.persistence.Table; diff --git a/udc-backend/src/main/java/org/springframework/samples/petclinic/owner/PetTypeFormatter.java b/udc-backend/src/main/java/org/springframework/samples/petclinic/owner/PetTypeFormatter.java index dacebd941..78451ca28 100644 --- a/udc-backend/src/main/java/org/springframework/samples/petclinic/owner/PetTypeFormatter.java +++ b/udc-backend/src/main/java/org/springframework/samples/petclinic/owner/PetTypeFormatter.java @@ -13,7 +13,7 @@ * See the License for the specific language governing permissions and * limitations under the License. */ -package main.java.org.springframework.samples.petclinic.owner; +package org.springframework.samples.petclinic.owner; import java.text.ParseException; diff --git a/udc-backend/src/main/java/org/springframework/samples/petclinic/owner/PetValidator.java b/udc-backend/src/main/java/org/springframework/samples/petclinic/owner/PetValidator.java index 0c5f35080..1a3d92e9e 100644 --- a/udc-backend/src/main/java/org/springframework/samples/petclinic/owner/PetValidator.java +++ b/udc-backend/src/main/java/org/springframework/samples/petclinic/owner/PetValidator.java @@ -13,7 +13,7 @@ * See the License for the specific language governing permissions and * limitations under the License. */ -package main.java.org.springframework.samples.petclinic.owner; +package org.springframework.samples.petclinic.owner; import org.springframework.util.StringUtils; import org.springframework.validation.Errors; diff --git a/udc-backend/src/main/java/org/springframework/samples/petclinic/owner/VisitController.java b/udc-backend/src/main/java/org/springframework/samples/petclinic/owner/VisitController.java index 9441c2876..19e42c78e 100644 --- a/udc-backend/src/main/java/org/springframework/samples/petclinic/owner/VisitController.java +++ b/udc-backend/src/main/java/org/springframework/samples/petclinic/owner/VisitController.java @@ -13,10 +13,10 @@ * See the License for the specific language governing permissions and * limitations under the License. */ -package main.java.org.springframework.samples.petclinic.owner; +package org.springframework.samples.petclinic.owner; -import main.java.org.springframework.samples.petclinic.visit.Visit; -import main.java.org.springframework.samples.petclinic.visit.VisitRepository; +import org.springframework.samples.petclinic.visit.Visit; +import org.springframework.samples.petclinic.visit.VisitRepository; import org.springframework.stereotype.Controller; import org.springframework.validation.BindingResult; import org.springframework.web.bind.WebDataBinder; diff --git a/udc-backend/src/main/java/org/springframework/samples/petclinic/system/CacheConfiguration.java b/udc-backend/src/main/java/org/springframework/samples/petclinic/system/CacheConfiguration.java index d92e7f5c7..f5f659482 100755 --- a/udc-backend/src/main/java/org/springframework/samples/petclinic/system/CacheConfiguration.java +++ b/udc-backend/src/main/java/org/springframework/samples/petclinic/system/CacheConfiguration.java @@ -1,4 +1,4 @@ -package main.java.org.springframework.samples.petclinic.system; +package org.springframework.samples.petclinic.system; import org.springframework.boot.autoconfigure.cache.JCacheManagerCustomizer; import org.springframework.cache.annotation.EnableCaching; diff --git a/udc-backend/src/main/java/org/springframework/samples/petclinic/system/CrashController.java b/udc-backend/src/main/java/org/springframework/samples/petclinic/system/CrashController.java index f8e19771d..2f5e7a348 100644 --- a/udc-backend/src/main/java/org/springframework/samples/petclinic/system/CrashController.java +++ b/udc-backend/src/main/java/org/springframework/samples/petclinic/system/CrashController.java @@ -13,7 +13,7 @@ * See the License for the specific language governing permissions and * limitations under the License. */ -package main.java.org.springframework.samples.petclinic.system; +package org.springframework.samples.petclinic.system; import org.springframework.stereotype.Controller; import org.springframework.web.bind.annotation.GetMapping; diff --git a/udc-backend/src/main/java/org/springframework/samples/petclinic/system/WelcomeController.java b/udc-backend/src/main/java/org/springframework/samples/petclinic/system/WelcomeController.java index 5cd34df02..00430a790 100644 --- a/udc-backend/src/main/java/org/springframework/samples/petclinic/system/WelcomeController.java +++ b/udc-backend/src/main/java/org/springframework/samples/petclinic/system/WelcomeController.java @@ -1,4 +1,4 @@ -package main.java.org.springframework.samples.petclinic.system; +package org.springframework.samples.petclinic.system; import org.springframework.stereotype.Controller; diff --git a/udc-backend/src/main/java/org/springframework/samples/petclinic/vet/Specialty.java b/udc-backend/src/main/java/org/springframework/samples/petclinic/vet/Specialty.java index 38e4a0eac..5691c2434 100644 --- a/udc-backend/src/main/java/org/springframework/samples/petclinic/vet/Specialty.java +++ b/udc-backend/src/main/java/org/springframework/samples/petclinic/vet/Specialty.java @@ -13,14 +13,14 @@ * See the License for the specific language governing permissions and * limitations under the License. */ -package main.java.org.springframework.samples.petclinic.vet; +package org.springframework.samples.petclinic.vet; import java.io.Serializable; import javax.persistence.Entity; import javax.persistence.Table; -import main.java.org.springframework.samples.petclinic.model.NamedEntity; +import org.springframework.samples.petclinic.model.NamedEntity; /** * Models a {@link Vet Vet's} specialty (for example, dentistry). diff --git a/udc-backend/src/main/java/org/springframework/samples/petclinic/vet/Vet.java b/udc-backend/src/main/java/org/springframework/samples/petclinic/vet/Vet.java index 237b24d08..43aecc41e 100644 --- a/udc-backend/src/main/java/org/springframework/samples/petclinic/vet/Vet.java +++ b/udc-backend/src/main/java/org/springframework/samples/petclinic/vet/Vet.java @@ -13,7 +13,7 @@ * See the License for the specific language governing permissions and * limitations under the License. */ -package main.java.org.springframework.samples.petclinic.vet; +package org.springframework.samples.petclinic.vet; import java.util.ArrayList; import java.util.Collections; @@ -31,7 +31,7 @@ import javax.xml.bind.annotation.XmlElement; import org.springframework.beans.support.MutableSortDefinition; import org.springframework.beans.support.PropertyComparator; -import main.java.org.springframework.samples.petclinic.model.Person; +import org.springframework.samples.petclinic.model.Person; /** * Simple JavaBean domain object representing a veterinarian. diff --git a/udc-backend/src/main/java/org/springframework/samples/petclinic/vet/VetController.java b/udc-backend/src/main/java/org/springframework/samples/petclinic/vet/VetController.java index b2012e244..c54b3b92d 100644 --- a/udc-backend/src/main/java/org/springframework/samples/petclinic/vet/VetController.java +++ b/udc-backend/src/main/java/org/springframework/samples/petclinic/vet/VetController.java @@ -13,7 +13,7 @@ * See the License for the specific language governing permissions and * limitations under the License. */ -package main.java.org.springframework.samples.petclinic.vet; +package org.springframework.samples.petclinic.vet; import org.springframework.stereotype.Controller; import org.springframework.web.bind.annotation.GetMapping; diff --git a/udc-backend/src/main/java/org/springframework/samples/petclinic/vet/VetRepository.java b/udc-backend/src/main/java/org/springframework/samples/petclinic/vet/VetRepository.java index 4513a7d79..20863ce76 100644 --- a/udc-backend/src/main/java/org/springframework/samples/petclinic/vet/VetRepository.java +++ b/udc-backend/src/main/java/org/springframework/samples/petclinic/vet/VetRepository.java @@ -13,7 +13,7 @@ * See the License for the specific language governing permissions and * limitations under the License. */ -package main.java.org.springframework.samples.petclinic.vet; +package org.springframework.samples.petclinic.vet; import java.util.Collection; diff --git a/udc-backend/src/main/java/org/springframework/samples/petclinic/vet/Vets.java b/udc-backend/src/main/java/org/springframework/samples/petclinic/vet/Vets.java index bb3c0454c..f5b24c3fc 100644 --- a/udc-backend/src/main/java/org/springframework/samples/petclinic/vet/Vets.java +++ b/udc-backend/src/main/java/org/springframework/samples/petclinic/vet/Vets.java @@ -13,7 +13,7 @@ * See the License for the specific language governing permissions and * limitations under the License. */ -package main.java.org.springframework.samples.petclinic.vet; +package org.springframework.samples.petclinic.vet; import java.util.ArrayList; import java.util.List; diff --git a/udc-backend/src/main/java/org/springframework/samples/petclinic/visit/Visit.java b/udc-backend/src/main/java/org/springframework/samples/petclinic/visit/Visit.java index 5735c0ab0..ab6e3319c 100755 --- a/udc-backend/src/main/java/org/springframework/samples/petclinic/visit/Visit.java +++ b/udc-backend/src/main/java/org/springframework/samples/petclinic/visit/Visit.java @@ -13,7 +13,7 @@ * See the License for the specific language governing permissions and * limitations under the License. */ -package main.java.org.springframework.samples.petclinic.visit; +package org.springframework.samples.petclinic.visit; import java.time.LocalDate; diff --git a/udc-backend/src/main/java/org/springframework/samples/petclinic/visit/VisitRepository.java b/udc-backend/src/main/java/org/springframework/samples/petclinic/visit/VisitRepository.java index ab04602ec..c7853d170 100644 --- a/udc-backend/src/main/java/org/springframework/samples/petclinic/visit/VisitRepository.java +++ b/udc-backend/src/main/java/org/springframework/samples/petclinic/visit/VisitRepository.java @@ -13,7 +13,7 @@ * See the License for the specific language governing permissions and * limitations under the License. */ -package main.java.org.springframework.samples.petclinic.visit; +package org.springframework.samples.petclinic.visit; import java.util.List; From 5cb9afadd9c39d734b270009eef9be3278045ceb Mon Sep 17 00:00:00 2001 From: Alexander Sharov Date: Tue, 25 Sep 2018 21:22:49 +0400 Subject: [PATCH 05/15] Update README.md --- README.md | 1 + readme.md | 120 ------------------------------------------------------ 2 files changed, 1 insertion(+), 120 deletions(-) create mode 100644 README.md delete mode 100644 readme.md diff --git a/README.md b/README.md new file mode 100644 index 000000000..26fb3dee0 --- /dev/null +++ b/README.md @@ -0,0 +1 @@ +# Spring PetClinic Sample Application for university devOps course diff --git a/readme.md b/readme.md deleted file mode 100644 index 29565ec43..000000000 --- a/readme.md +++ /dev/null @@ -1,120 +0,0 @@ -# Spring PetClinic Sample Application [![Build Status](https://travis-ci.org/spring-projects/spring-petclinic.png?branch=master)](https://travis-ci.org/spring-projects/spring-petclinic/) - -## Understanding the Spring Petclinic application with a few diagrams -See the presentation here - -## Running petclinic locally -``` - git clone https://github.com/spring-projects/spring-petclinic.git - cd spring-petclinic - ./mvnw spring-boot:run -``` - -You can then access petclinic here: http://localhost:8080/ - -petclinic-screenshot - -## In case you find a bug/suggested improvement for Spring Petclinic -Our issue tracker is available here: https://github.com/spring-projects/spring-petclinic/issues - - -## Database configuration - -In its default configuration, Petclinic uses an in-memory database (HSQLDB) which -gets populated at startup with data. A similar setup is provided for MySql in case a persistent database configuration is needed. -Note that whenever the database type is changed, the data-access.properties file needs to be updated and the mysql-connector-java artifact from the pom.xml needs to be uncommented. - -You could start a MySql database with docker: - -``` -docker run -e MYSQL_ROOT_PASSWORD=petclinic -e MYSQL_DATABASE=petclinic -p 3306:3306 mysql:5.7.8 -``` - -## Working with Petclinic in Eclipse/STS - -### prerequisites -The following items should be installed in your system: -* Apache Maven (https://maven.apache.org/install.html) -* git command line tool (https://help.github.com/articles/set-up-git) -* Eclipse with the m2e plugin (m2e is installed by default when using the STS (http://www.springsource.org/sts) distribution of Eclipse) - -Note: when m2e is available, there is an m2 icon in Help -> About dialog. -If m2e is not there, just follow the install process here: http://www.eclipse.org/m2e/m2e-downloads.html - - -### Steps: - -1) In the command line -``` -git clone https://github.com/spring-projects/spring-petclinic.git -``` -2) Inside Eclipse -``` -File -> Import -> Maven -> Existing Maven project -``` - - -## Looking for something in particular? - -|Spring Boot Configuration | Class or Java property files | -|--------------------------|---| -|The Main Class | [PetClinicApplication](https://github.com/spring-projects/spring-petclinic/blob/master/src/main/java/org/springframework/samples/petclinic/PetClinicApplication.java) | -|Properties Files | [application.properties](https://github.com/spring-projects/spring-petclinic/blob/master/src/main/resources) | -|Caching | [CacheConfiguration](https://github.com/spring-projects/spring-petclinic/blob/master/src/main/java/org/springframework/samples/petclinic/system/CacheConfiguration.java) | - -## Interesting Spring Petclinic branches and forks - -The Spring Petclinic master branch in the main -[spring-projects](https://github.com/spring-projects/spring-petclinic) -GitHub org is the "canonical" implementation, currently based on -Spring Boot and Thymeleaf. There are quite a few forks in a special -GitHub org [spring-petclinic](https://github.com/spring-petclinic). If -you have a special interest in a different technology stack that could -be used to implement the Pet Clinic then please join the community -there. - -| Link | Main technologies | -|------------------------------------|-------------------| -| [spring-framework-petclinic][] | Spring Framework XML configuration, JSP pages, 3 persistence layers: JDBC, JPA and Spring Data JPA | -| [javaconfig branch][] | Same frameworks as the [spring-framework-petclinic][] but with Java Configuration instead of XML | -| [spring-petclinic-angularjs][] | AngularJS 1.x, Spring Boot and Spring Data JPA | -| [spring-petclinic-angular][] | Angular 4 front-end of the Petclinic REST API [spring-petclinic-rest][] | -| [spring-petclinic-microservices][] | Distributed version of Spring Petclinic built with Spring Cloud | -| [spring-petclinic-reactjs][] | ReactJS (with TypeScript) and Spring Boot | -| [spring-petclinic-graphql][] | GraphQL version based on React Appolo, TypeScript and GraphQL Spring boot starter | -| [spring-petclinic-kotlin][] | Kotlin version of [spring-petclinic][] | -| [spring-petclinic-rest][] | Backend REST API | - - -## Interaction with other open source projects - -One of the best parts about working on the Spring Petclinic application is that we have the opportunity to work in direct contact with many Open Source projects. We found some bugs/suggested improvements on various topics such as Spring, Spring Data, Bean Validation and even Eclipse! In many cases, they've been fixed/implemented in just a few days. -Here is a list of them: - -| Name | Issue | -|------|-------| -| Spring JDBC: simplify usage of NamedParameterJdbcTemplate | [SPR-10256](https://jira.springsource.org/browse/SPR-10256) and [SPR-10257](https://jira.springsource.org/browse/SPR-10257) | -| Bean Validation / Hibernate Validator: simplify Maven dependencies and backward compatibility |[HV-790](https://hibernate.atlassian.net/browse/HV-790) and [HV-792](https://hibernate.atlassian.net/browse/HV-792) | -| Spring Data: provide more flexibility when working with JPQL queries | [DATAJPA-292](https://jira.springsource.org/browse/DATAJPA-292) | - - -# Contributing - -The [issue tracker](https://github.com/spring-projects/spring-petclinic/issues) is the preferred channel for bug reports, features requests and submitting pull requests. - -For pull requests, editor preferences are available in the [editor config](.editorconfig) for easy use in common text editors. Read more and download plugins at . If you have not previously done so, please fill out and submit the https://cla.pivotal.io/sign/spring[Contributor License Agreement]. - -# License - -The Spring PetClinic sample application is released under version 2.0 of the [Apache License](http://www.apache.org/licenses/LICENSE-2.0). - -[spring-petclinic]: https://github.com/spring-projects/spring-petclinic -[spring-framework-petclinic]: https://github.com/spring-petclinic/spring-framework-petclinic -[spring-petclinic-angularjs]: https://github.com/spring-petclinic/spring-petclinic-angularjs -[javaconfig branch]: https://github.com/spring-petclinic/spring-framework-petclinic/tree/javaconfig -[spring-petclinic-angular]: https://github.com/spring-petclinic/spring-petclinic-angular -[spring-petclinic-microservices]: https://github.com/spring-petclinic/spring-petclinic-microservices -[spring-petclinic-reactjs]: https://github.com/spring-petclinic/spring-petclinic-reactjs -[spring-petclinic-graphql]: https://github.com/spring-petclinic/spring-petclinic-graphql -[spring-petclinic-kotlin]: https://github.com/spring-petclinic/spring-petclinic-kotlin -[spring-petclinic-rest]: https://github.com/spring-petclinic/spring-petclinic-rest From 583cf2f00fac754d3065f2929a981c46b4ca5af9 Mon Sep 17 00:00:00 2001 From: Alexander Sharov Date: Tue, 25 Sep 2018 21:25:14 +0400 Subject: [PATCH 06/15] Fix petclinic sources --- udc-backend/pom.xml | 4 ++-- .../samples/petclinic/PetclinicIntegrationTests.java | 2 +- .../samples/petclinic/model/ValidatorTests.java | 2 +- .../samples/petclinic/owner/OwnerControllerTests.java | 2 +- .../samples/petclinic/owner/PetControllerTests.java | 2 +- .../samples/petclinic/owner/PetTypeFormatterTests.java | 2 +- .../samples/petclinic/owner/VisitControllerTests.java | 2 +- .../samples/petclinic/service/ClinicServiceTests.java | 2 +- .../samples/petclinic/service/EntityUtils.java | 2 +- .../samples/petclinic/system/CrashControllerTests.java | 2 +- .../samples/petclinic/vet/VetControllerTests.java | 2 +- .../org/springframework/samples/petclinic/vet/VetTests.java | 2 +- 12 files changed, 13 insertions(+), 13 deletions(-) diff --git a/udc-backend/pom.xml b/udc-backend/pom.xml index 220935e83..3852ab0b9 100644 --- a/udc-backend/pom.xml +++ b/udc-backend/pom.xml @@ -188,8 +188,8 @@ ro.isdc.wro.maven.plugin.manager.factory.ConfigurableWroManagerFactory ${project.build.directory}/classes/static/resources/css - src/main/wro/wro.xml - src/main/wro/wro.properties + ${basedir}/src/main/wro/wro.xml + ${basedir}/src/main/wro/wro.properties ${basedir}/src/main/less diff --git a/udc-backend/src/test/java/org/springframework/samples/petclinic/PetclinicIntegrationTests.java b/udc-backend/src/test/java/org/springframework/samples/petclinic/PetclinicIntegrationTests.java index 99988b731..3f48c0d4a 100644 --- a/udc-backend/src/test/java/org/springframework/samples/petclinic/PetclinicIntegrationTests.java +++ b/udc-backend/src/test/java/org/springframework/samples/petclinic/PetclinicIntegrationTests.java @@ -14,7 +14,7 @@ * limitations under the License. */ -package test.java.org.springframework.samples.petclinic; +package org.springframework.samples.petclinic; import org.junit.Test; import org.junit.runner.RunWith; diff --git a/udc-backend/src/test/java/org/springframework/samples/petclinic/model/ValidatorTests.java b/udc-backend/src/test/java/org/springframework/samples/petclinic/model/ValidatorTests.java index 971f952f1..7da0d3dea 100644 --- a/udc-backend/src/test/java/org/springframework/samples/petclinic/model/ValidatorTests.java +++ b/udc-backend/src/test/java/org/springframework/samples/petclinic/model/ValidatorTests.java @@ -1,4 +1,4 @@ -package test.java.org.springframework.samples.petclinic.model; +package org.springframework.samples.petclinic.model; import java.util.Locale; import java.util.Set; diff --git a/udc-backend/src/test/java/org/springframework/samples/petclinic/owner/OwnerControllerTests.java b/udc-backend/src/test/java/org/springframework/samples/petclinic/owner/OwnerControllerTests.java index 8f558c26f..7fccb3b04 100644 --- a/udc-backend/src/test/java/org/springframework/samples/petclinic/owner/OwnerControllerTests.java +++ b/udc-backend/src/test/java/org/springframework/samples/petclinic/owner/OwnerControllerTests.java @@ -1,4 +1,4 @@ -package test.java.org.springframework.samples.petclinic.owner; +package org.springframework.samples.petclinic.owner; import static org.hamcrest.Matchers.hasProperty; import static org.hamcrest.Matchers.is; diff --git a/udc-backend/src/test/java/org/springframework/samples/petclinic/owner/PetControllerTests.java b/udc-backend/src/test/java/org/springframework/samples/petclinic/owner/PetControllerTests.java index 0e5cce9f8..f95d7c87c 100755 --- a/udc-backend/src/test/java/org/springframework/samples/petclinic/owner/PetControllerTests.java +++ b/udc-backend/src/test/java/org/springframework/samples/petclinic/owner/PetControllerTests.java @@ -1,4 +1,4 @@ -package test.java.org.springframework.samples.petclinic.owner; +package org.springframework.samples.petclinic.owner; import static org.mockito.BDDMockito.given; import static org.springframework.test.web.servlet.request.MockMvcRequestBuilders.get; diff --git a/udc-backend/src/test/java/org/springframework/samples/petclinic/owner/PetTypeFormatterTests.java b/udc-backend/src/test/java/org/springframework/samples/petclinic/owner/PetTypeFormatterTests.java index 306338b09..4e8e36c14 100644 --- a/udc-backend/src/test/java/org/springframework/samples/petclinic/owner/PetTypeFormatterTests.java +++ b/udc-backend/src/test/java/org/springframework/samples/petclinic/owner/PetTypeFormatterTests.java @@ -1,4 +1,4 @@ -package test.java.org.springframework.samples.petclinic.owner; +package org.springframework.samples.petclinic.owner; import java.text.ParseException; import java.util.ArrayList; diff --git a/udc-backend/src/test/java/org/springframework/samples/petclinic/owner/VisitControllerTests.java b/udc-backend/src/test/java/org/springframework/samples/petclinic/owner/VisitControllerTests.java index 044ace0a6..08d61360e 100644 --- a/udc-backend/src/test/java/org/springframework/samples/petclinic/owner/VisitControllerTests.java +++ b/udc-backend/src/test/java/org/springframework/samples/petclinic/owner/VisitControllerTests.java @@ -1,4 +1,4 @@ -package test.java.org.springframework.samples.petclinic.owner; +package org.springframework.samples.petclinic.owner; import static org.mockito.BDDMockito.given; import static org.springframework.test.web.servlet.request.MockMvcRequestBuilders.get; diff --git a/udc-backend/src/test/java/org/springframework/samples/petclinic/service/ClinicServiceTests.java b/udc-backend/src/test/java/org/springframework/samples/petclinic/service/ClinicServiceTests.java index ca247c192..9f12151d9 100644 --- a/udc-backend/src/test/java/org/springframework/samples/petclinic/service/ClinicServiceTests.java +++ b/udc-backend/src/test/java/org/springframework/samples/petclinic/service/ClinicServiceTests.java @@ -14,7 +14,7 @@ * limitations under the License. */ -package test.java.org.springframework.samples.petclinic.service; +package org.springframework.samples.petclinic.service; import static org.assertj.core.api.Assertions.assertThat; diff --git a/udc-backend/src/test/java/org/springframework/samples/petclinic/service/EntityUtils.java b/udc-backend/src/test/java/org/springframework/samples/petclinic/service/EntityUtils.java index 0eb130a4a..44dc6b1c2 100644 --- a/udc-backend/src/test/java/org/springframework/samples/petclinic/service/EntityUtils.java +++ b/udc-backend/src/test/java/org/springframework/samples/petclinic/service/EntityUtils.java @@ -14,7 +14,7 @@ * limitations under the License. */ -package test.java.org.springframework.samples.petclinic.service; +package org.springframework.samples.petclinic.service; import java.util.Collection; diff --git a/udc-backend/src/test/java/org/springframework/samples/petclinic/system/CrashControllerTests.java b/udc-backend/src/test/java/org/springframework/samples/petclinic/system/CrashControllerTests.java index 1c2377f3b..3f108bfe9 100644 --- a/udc-backend/src/test/java/org/springframework/samples/petclinic/system/CrashControllerTests.java +++ b/udc-backend/src/test/java/org/springframework/samples/petclinic/system/CrashControllerTests.java @@ -1,4 +1,4 @@ -package test.java.org.springframework.samples.petclinic.system; +package org.springframework.samples.petclinic.system; import org.junit.Ignore; import org.junit.Test; diff --git a/udc-backend/src/test/java/org/springframework/samples/petclinic/vet/VetControllerTests.java b/udc-backend/src/test/java/org/springframework/samples/petclinic/vet/VetControllerTests.java index f860c8224..bd20ca79a 100644 --- a/udc-backend/src/test/java/org/springframework/samples/petclinic/vet/VetControllerTests.java +++ b/udc-backend/src/test/java/org/springframework/samples/petclinic/vet/VetControllerTests.java @@ -1,4 +1,4 @@ -package test.java.org.springframework.samples.petclinic.vet; +package org.springframework.samples.petclinic.vet; import static org.hamcrest.xml.HasXPath.hasXPath; import static org.mockito.BDDMockito.given; diff --git a/udc-backend/src/test/java/org/springframework/samples/petclinic/vet/VetTests.java b/udc-backend/src/test/java/org/springframework/samples/petclinic/vet/VetTests.java index ed15c61de..de3a7b9bb 100644 --- a/udc-backend/src/test/java/org/springframework/samples/petclinic/vet/VetTests.java +++ b/udc-backend/src/test/java/org/springframework/samples/petclinic/vet/VetTests.java @@ -13,7 +13,7 @@ * See the License for the specific language governing permissions and * limitations under the License. */ -package test.java.org.springframework.samples.petclinic.vet; +package org.springframework.samples.petclinic.vet; import org.junit.Test; From 57a49ce3f26a96f786eaeb236066f887ffe0e98f Mon Sep 17 00:00:00 2001 From: Alexander Sharov Date: Tue, 25 Sep 2018 21:45:42 +0400 Subject: [PATCH 07/15] Update containers module --- pom.xml | 16 +++++++++++++++- udc-containers/pom.xml | 2 +- udc-containers/udc-backend-service/pom.xml | 4 ++-- .../src/main/resources/Dockerfile | 15 +++++++++++---- .../{docker-entrypoint.sh => entrypoint.sh} | 0 5 files changed, 29 insertions(+), 8 deletions(-) rename udc-containers/udc-backend-service/src/main/resources/{docker-entrypoint.sh => entrypoint.sh} (100%) diff --git a/pom.xml b/pom.xml index 4a738eb42..c19c31ace 100644 --- a/pom.xml +++ b/pom.xml @@ -18,6 +18,20 @@ udc-backend - + udc-containers + + + + + + org.apache.maven.plugins + maven-deploy-plugin + + true + + + + + diff --git a/udc-containers/pom.xml b/udc-containers/pom.xml index fb303d24e..6d7904768 100644 --- a/udc-containers/pom.xml +++ b/udc-containers/pom.xml @@ -24,7 +24,7 @@ true true - TODO + openjdk:8-jre university-course localhost diff --git a/udc-containers/udc-backend-service/pom.xml b/udc-containers/udc-backend-service/pom.xml index ed5aaf49b..a8569cbca 100644 --- a/udc-containers/udc-backend-service/pom.xml +++ b/udc-containers/udc-backend-service/pom.xml @@ -41,8 +41,8 @@ - TODO - TODO + org.springframework.samples + udc-backend ${project.version} jar true diff --git a/udc-containers/udc-backend-service/src/main/resources/Dockerfile b/udc-containers/udc-backend-service/src/main/resources/Dockerfile index f0e025cb5..e3442f0f9 100644 --- a/udc-containers/udc-backend-service/src/main/resources/Dockerfile +++ b/udc-containers/udc-backend-service/src/main/resources/Dockerfile @@ -1,10 +1,17 @@ FROM ${docker.baseImage} -EXPOSE 8080 -ENTRYPOINT ["/docker-entrypoint.sh"] -WORKDIR "/udc/apps/petclinic" +ENV LANG=en_US.UTF-8 \ + LANGUAGE=en_US.UTF-8 \ + LC_ALL=en_US.UTF-8 -COPY docker-entrypoint.sh /docker-entrypoint.sh +ENV BASE_DIR='/udc/apps/petclinic' + +EXPOSE 8080 +ENTRYPOINT ["/entrypoint.sh"] + +RUN mkdir -p ${BASE_DIR} + +COPY entrypoint.sh /entrypoint.sh RUN chmod +x /docker-entrypoint.sh COPY todo.jar /udc/apps/petclinic/todo.jar diff --git a/udc-containers/udc-backend-service/src/main/resources/docker-entrypoint.sh b/udc-containers/udc-backend-service/src/main/resources/entrypoint.sh similarity index 100% rename from udc-containers/udc-backend-service/src/main/resources/docker-entrypoint.sh rename to udc-containers/udc-backend-service/src/main/resources/entrypoint.sh From f89bd304c8639573a958e8d0cfe6dea5bbd5492d Mon Sep 17 00:00:00 2001 From: Alexander Sharov Date: Tue, 25 Sep 2018 22:18:37 +0400 Subject: [PATCH 08/15] Add help chart for petclinic --- udc-containers/pom.xml | 2 +- udc-helm/udc/Chart.yaml | 8 ++++++ udc-helm/udc/templates/_helpers.tpl | 10 +++++++ udc-helm/udc/templates/autoscale.yaml | 12 ++++++++ udc-helm/udc/templates/configmap.yaml | 14 +++++++++ udc-helm/udc/templates/deployment.yaml | 39 ++++++++++++++++++++++++++ udc-helm/udc/templates/svc.yaml | 23 +++++++++++++++ udc-helm/udc/values.yaml | 6 ++++ 8 files changed, 113 insertions(+), 1 deletion(-) create mode 100644 udc-helm/udc/Chart.yaml create mode 100644 udc-helm/udc/templates/_helpers.tpl create mode 100644 udc-helm/udc/templates/autoscale.yaml create mode 100644 udc-helm/udc/templates/configmap.yaml create mode 100644 udc-helm/udc/templates/deployment.yaml create mode 100644 udc-helm/udc/templates/svc.yaml create mode 100644 udc-helm/udc/values.yaml diff --git a/udc-containers/pom.xml b/udc-containers/pom.xml index 6d7904768..e44612a27 100644 --- a/udc-containers/pom.xml +++ b/udc-containers/pom.xml @@ -11,7 +11,7 @@ udc-containers - UDC :: Containers :: Parent + UDC :: Containers pom diff --git a/udc-helm/udc/Chart.yaml b/udc-helm/udc/Chart.yaml new file mode 100644 index 000000000..e216d06db --- /dev/null +++ b/udc-helm/udc/Chart.yaml @@ -0,0 +1,8 @@ +name: udc +version: 1.0.0 +sources: + - https://github.com/kvendingoldo/udc-petclinic +maintainers: + - name: Alex Sharov + email: kvendingoldo@gmail.com +engine: gotpl diff --git a/udc-helm/udc/templates/_helpers.tpl b/udc-helm/udc/templates/_helpers.tpl new file mode 100644 index 000000000..d3dfc2415 --- /dev/null +++ b/udc-helm/udc/templates/_helpers.tpl @@ -0,0 +1,10 @@ +{{/* vim: set filetype=mustache: */}} + +{{- define "name" -}} +{{- default .Chart.Name .Values.nameOverride | trunc 63 | trimSuffix "-" -}} +{{- end -}} + +{{- define "fullname" -}} +{{- $name := default .Chart.Name .Values.nameOverride -}} +{{- printf "%s-%s" .Release.Name $name | trunc 63 | trimSuffix "-" -}} +{{- end -}} diff --git a/udc-helm/udc/templates/autoscale.yaml b/udc-helm/udc/templates/autoscale.yaml new file mode 100644 index 000000000..457e3928d --- /dev/null +++ b/udc-helm/udc/templates/autoscale.yaml @@ -0,0 +1,12 @@ +--- +kind: HorizontalPodAutoscaler +apiVersion: autoscaling/v1 +metadata: + name: {{ template "fullname" . }} +spec: + scaleTargetRef: + kind: Deployment + name: {{ template "fullname" . }} + maxReplicas: {{ .Values.scale.maxReplicas }} + minReplicas: {{ .Values.scale.minReplicas }} + targetCPUUtilizationPercentage: 70 diff --git a/udc-helm/udc/templates/configmap.yaml b/udc-helm/udc/templates/configmap.yaml new file mode 100644 index 000000000..7418f4017 --- /dev/null +++ b/udc-helm/udc/templates/configmap.yaml @@ -0,0 +1,14 @@ +--- +apiVersion: v1 +kind: ConfigMap +metadata: + labels: + component: {{ template "name" . }} + chart: {{ .Chart.Name }}-{{ .Chart.Version }} + environment: {{ .Values.global.environment }} + heritage: {{ .Release.Service }} + release: {{ .Release.Name }} + name: {{ template "fullname" . }} +data: + application.properties: |- +{{ .Files.Get "files/application.properties" | indent 4 }} diff --git a/udc-helm/udc/templates/deployment.yaml b/udc-helm/udc/templates/deployment.yaml new file mode 100644 index 000000000..f3a78c206 --- /dev/null +++ b/udc-helm/udc/templates/deployment.yaml @@ -0,0 +1,39 @@ +--- +kind: Deployment +apiVersion: extensions/v1beta1 +metadata: + labels: + component: {{ template "name" . }} + chart: {{ .Chart.Name }} + environment: {{ .Values.global.environment }} + heritage: {{ .Release.Service }} + release: {{ .Release.Name }} + version: {{ .Values.global.version }} + name: {{ template "fullname" . }} +spec: + replicas: 1 + template: + metadata: + labels: + component: {{ template "name" . }} + chart: {{ .Chart.Name }} + environment: {{ .Values.global.environment }} + heritage: {{ .Release.Service }} + release: {{ .Release.Name }} + version: {{ .Values.global.version }} + name: {{ template "fullname" . }} + spec: + containers: + - name: {{ .Values.container.name }} + image: '{{ .Values.container.image }}:{{ .Values.global.version }}' + imagePullPolicy: Always + ports: + - containerPort: 8080 + protocol: TCP + volumeMounts: + - mountPath: /udc/apps/petclinic/properties + name: config-volume + volumes: + - name: config-volume + configMap: + name: {{ template "fullname" . }} diff --git a/udc-helm/udc/templates/svc.yaml b/udc-helm/udc/templates/svc.yaml new file mode 100644 index 000000000..932c1f8c8 --- /dev/null +++ b/udc-helm/udc/templates/svc.yaml @@ -0,0 +1,23 @@ +--- +kind: Service +apiVersion: v1 +metadata: + labels: + component: {{ template "name" . }} + chart: {{ .Chart.Name }} + environment: {{ .Values.global.environment }} + heritage: {{ .Release.Service }} + release: {{ .Release.Name }} + version: {{ .Values.global.version }} + name: {{ template "fullname" . }} +spec: + ports: + - protocol: TCP + port: 8080 + targetPort: 8080 + selector: + component: {{ template "name" . }} + chart: {{ .Chart.Name }} + environment: {{ .Values.global.environment }} + heritage: {{ .Release.Service }} + release: {{ .Release.Name }} diff --git a/udc-helm/udc/values.yaml b/udc-helm/udc/values.yaml new file mode 100644 index 000000000..8062db8e4 --- /dev/null +++ b/udc-helm/udc/values.yaml @@ -0,0 +1,6 @@ +container: + name: udc-backend + image: gcr.io/TODO +scale: + maxReplicas: 3 + minReplicas: 1 From b4967831d976e03626d3332ac5fa204376b3b06a Mon Sep 17 00:00:00 2001 From: Alexander Sharov Date: Tue, 25 Sep 2018 23:35:07 +0400 Subject: [PATCH 09/15] Update jenkins image --- .../src/main/resources/Dockerfile | 20 ++++++++++++++++--- 1 file changed, 17 insertions(+), 3 deletions(-) diff --git a/udc-containers/udc-jenkins-slave/src/main/resources/Dockerfile b/udc-containers/udc-jenkins-slave/src/main/resources/Dockerfile index 17a7d46ee..5af468702 100644 --- a/udc-containers/udc-jenkins-slave/src/main/resources/Dockerfile +++ b/udc-containers/udc-jenkins-slave/src/main/resources/Dockerfile @@ -7,9 +7,23 @@ USER root RUN apt-get update -y RUN apt-get install -y jq \ - libapparmor-dev \ - libseccomp-dev \ - unzip + unzip \ + maven \ + apt-transport-https \ + ca-certificates \ + gnupg2 \ + software-properties-common + +RUN curl -fsSL https://download.docker.com/linux/$(. /etc/os-release; echo "${ID}")/gpg > /tmp/dkey; apt-key add /tmp/dkey \ + && add-apt-repository \ + "deb [arch=amd64] https://download.docker.com/linux/$(. /etc/os-release; echo "${ID}") \ + $(lsb_release -cs) \ + stable" \ + && apt-get update \ + && apt-get -y install docker-ce + RUN curl https://sdk.cloud.google.com | bash && mv google-cloud-sdk /opt RUN gcloud components install kubectl RUN curl -sfSL https://raw.githubusercontent.com/kubernetes/helm/master/scripts/get | bash + +USER jenkins From 421b823a0198a22152f797ac35c26c5ee5c0fb1c Mon Sep 17 00:00:00 2001 From: Alexander Sharov Date: Thu, 27 Sep 2018 00:41:52 +0400 Subject: [PATCH 10/15] Add Jenkinsfile --- Jenkinsfile | 71 +++++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 71 insertions(+) create mode 100644 Jenkinsfile diff --git a/Jenkinsfile b/Jenkinsfile new file mode 100644 index 000000000..178433a13 --- /dev/null +++ b/Jenkinsfile @@ -0,0 +1,71 @@ +pipeline { + agent { + label 'k8s' + } + + options { + buildDiscarder(logRotator(numToKeepStr: '15', daysToKeepStr: '30')) + } + + environment { + DOCKER_REGISTRY_HOST = 'gcr.io' + } + + stages { + stage ('Pre-Build :: Set Version') { + steps { + script { + env.POM_VERSION = readMavenPom(file: "${WORKSPACE}/pom.xml").version + env.RELEASE_VERSION = env.POM_VERSION.replace("-SNAPSHOT", "") + env.BUILD_VERSION = "${env.RELEASE_VERSION}-${env.BUILD_TIMESTAMP}-${env.BUILD_NUMBER}" + + currentBuild.displayName = "${env.BRANCH_NAME} - ${env.BUILD_VERSION}" + } + + sh 'cd ${WORKSPACE} && mvn versions:set -DnewVersion=${BUILD_VERSION}' + } + } + + stage ('Build :: Build Artifacts') { + steps { + sh 'cd ${WORKSPACE} && mvn -C -B clean install -Ddocker.registry.host=${DOCKER_REGISTRY_HOST} -Pimage' + } + } + + stage ('Publish code coverage results') { + steps { + jacoco() + } + } + + stage ('Promote :: Push Docker Images to GCR') { + when { + branch 'master' + } + + steps { + sh 'gcloud docker -a' + sh 'mvn -C -B deploy -DskipTests -Ddocker.skip.build=true -Ddocker.registry.host=${DOCKER_REGISTRY_HOST} -Pimage' + } + } + + stage('Deploy :: Deploy to STAGE env') { + when { + branch 'master' + environment name: 'STAGE_FREEZE', value: 'false' + } + + steps { + build job: 'TODO' + } + } + } + + post { + always { + sh 'docker rmi $(docker images | grep ${BUILD_VERSION} | awk \'{ print $3 }\')' + + deleteDir() + } + } +} From 869ab6127470a196948037224cd1a2f3f63ca2d5 Mon Sep 17 00:00:00 2001 From: Alexander Sharov Date: Thu, 27 Sep 2018 04:18:46 +0400 Subject: [PATCH 11/15] Switch backend to openjdk:8-jre --- .../udc-backend-service/src/main/resources/Dockerfile | 2 +- udc-helm/cicd/jenkins/templates/deployment.yaml | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/udc-containers/udc-backend-service/src/main/resources/Dockerfile b/udc-containers/udc-backend-service/src/main/resources/Dockerfile index e3442f0f9..72063016a 100644 --- a/udc-containers/udc-backend-service/src/main/resources/Dockerfile +++ b/udc-containers/udc-backend-service/src/main/resources/Dockerfile @@ -1,4 +1,4 @@ -FROM ${docker.baseImage} +FROM openjdk:8-jre ENV LANG=en_US.UTF-8 \ LANGUAGE=en_US.UTF-8 \ diff --git a/udc-helm/cicd/jenkins/templates/deployment.yaml b/udc-helm/cicd/jenkins/templates/deployment.yaml index 69fba6c77..802373ba5 100644 --- a/udc-helm/cicd/jenkins/templates/deployment.yaml +++ b/udc-helm/cicd/jenkins/templates/deployment.yaml @@ -32,7 +32,7 @@ spec: - name: JENKINS_SLAVEPORT value: '50000' - name: JAVA_VM_PARAMETERS - value: '-Xmx3072m -Xms256m' + value: '-Xmx3072m -Xms1024m' - name: JAVA_OPTS value: '-Djava.util.logging.config.file=/var/jenkins_home/log.properties' volumeMounts: From 164a8d37017e7186e03f91107419bd87d9c705d5 Mon Sep 17 00:00:00 2001 From: Alexander Sharov Date: Sat, 29 Sep 2018 01:35:46 +0400 Subject: [PATCH 12/15] Rework jnlp container --- .../src/main/resources/Dockerfile | 4 +-- .../src/main/resources/Dockerfile | 25 ++----------------- 2 files changed, 4 insertions(+), 25 deletions(-) diff --git a/udc-containers/udc-backend-service/src/main/resources/Dockerfile b/udc-containers/udc-backend-service/src/main/resources/Dockerfile index 72063016a..c48efd2c7 100644 --- a/udc-containers/udc-backend-service/src/main/resources/Dockerfile +++ b/udc-containers/udc-backend-service/src/main/resources/Dockerfile @@ -12,9 +12,9 @@ ENTRYPOINT ["/entrypoint.sh"] RUN mkdir -p ${BASE_DIR} COPY entrypoint.sh /entrypoint.sh -RUN chmod +x /docker-entrypoint.sh +RUN chmod +x /entrypoint.sh -COPY todo.jar /udc/apps/petclinic/todo.jar +COPY udc-backend-*.jar /udc/apps/petclinic/todo.jar LABEL project.groupid="${project.groupId}" \ project.artifactid="${project.artifactId}" \ diff --git a/udc-containers/udc-jenkins-slave/src/main/resources/Dockerfile b/udc-containers/udc-jenkins-slave/src/main/resources/Dockerfile index 5af468702..3860bf2e3 100644 --- a/udc-containers/udc-jenkins-slave/src/main/resources/Dockerfile +++ b/udc-containers/udc-jenkins-slave/src/main/resources/Dockerfile @@ -1,29 +1,8 @@ -FROM jenkinsci/jnlp-slave - -ENV CLOUDSDK_CORE_DISABLE_PROMPTS 1 -ENV PATH /opt/google-cloud-sdk/bin:${PATH} - -USER root +FROM gcr.io/cloud-solutions-images/jenkins-k8s-slave RUN apt-get update -y RUN apt-get install -y jq \ unzip \ - maven \ - apt-transport-https \ - ca-certificates \ - gnupg2 \ - software-properties-common + maven -RUN curl -fsSL https://download.docker.com/linux/$(. /etc/os-release; echo "${ID}")/gpg > /tmp/dkey; apt-key add /tmp/dkey \ - && add-apt-repository \ - "deb [arch=amd64] https://download.docker.com/linux/$(. /etc/os-release; echo "${ID}") \ - $(lsb_release -cs) \ - stable" \ - && apt-get update \ - && apt-get -y install docker-ce - -RUN curl https://sdk.cloud.google.com | bash && mv google-cloud-sdk /opt -RUN gcloud components install kubectl RUN curl -sfSL https://raw.githubusercontent.com/kubernetes/helm/master/scripts/get | bash - -USER jenkins From e2d5fac2ed3004fdfbd05950e71c21b57129968c Mon Sep 17 00:00:00 2001 From: Alexander Sharov Date: Sat, 29 Sep 2018 02:02:13 +0400 Subject: [PATCH 13/15] Update root pom.xml for docker udc-containers --- udc-containers/pom.xml | 49 +++++++++++++----- udc-containers/udc-backend-service/pom.xml | 44 +++++++--------- .../src/main/resources/Dockerfile | 8 +-- .../src/main/resources/entrypoint.sh | 10 +++- .../target/classes/Dockerfile | 17 ++++++ .../target/classes/entrypoint.sh | 9 ++++ .../target/context/Dockerfile | 17 ++++++ .../target/context/entrypoint.sh | 9 ++++ .../target/maven-archiver/pom.properties | 4 ++ .../udc-backend-service-1.0.0-SNAPSHOT.jar | Bin 0 -> 2670 bytes 10 files changed, 122 insertions(+), 45 deletions(-) create mode 100644 udc-containers/udc-backend-service/target/classes/Dockerfile create mode 100644 udc-containers/udc-backend-service/target/classes/entrypoint.sh create mode 100644 udc-containers/udc-backend-service/target/context/Dockerfile create mode 100644 udc-containers/udc-backend-service/target/context/entrypoint.sh create mode 100644 udc-containers/udc-backend-service/target/maven-archiver/pom.properties create mode 100644 udc-containers/udc-backend-service/target/udc-backend-service-1.0.0-SNAPSHOT.jar diff --git a/udc-containers/pom.xml b/udc-containers/pom.xml index e44612a27..1989cd2c4 100644 --- a/udc-containers/pom.xml +++ b/udc-containers/pom.xml @@ -27,9 +27,19 @@ openjdk:8-jre university-course localhost + + + docker + + + src/main/resources + true + + + @@ -37,20 +47,31 @@ maven-resources-plugin - copy-docker-resources + docker-resources none resources ${project.build.directory}/context - true - - - src/main/resources - true - - + + + + + + org.apache.maven.plugins + maven-dependency-plugin + + + docker-dependencies + none + + copy-dependencies + + + true + true + ${project.build.directory}/context @@ -67,12 +88,14 @@ ${docker.skip.build} - docker + ${dockerCli} build - -t - - ${docker.registry.host}/${docker.repository}/${project.artifactId}:${project.version} + --force-rm + --label=project.groupid=${project.groupId} + --label=project.artifactid=${project.artifactId} + --label=project.version=${project.version} + --tag=${docker.registry.host}/${docker.repository}/${project.artifactId}:${project.version} ${project.build.directory}/context @@ -86,7 +109,7 @@ ${docker.skip.push} - docker + ${dockerCli} push diff --git a/udc-containers/udc-backend-service/pom.xml b/udc-containers/udc-backend-service/pom.xml index a8569cbca..858541c6c 100644 --- a/udc-containers/udc-backend-service/pom.xml +++ b/udc-containers/udc-backend-service/pom.xml @@ -13,6 +13,21 @@ udc-backend-service UDC :: Containers :: Backend + + + org.springframework.samples + udc-backend + ${project.version} + jar + + + * + * + + + + + @@ -20,11 +35,8 @@ maven-resources-plugin - copy-docker-resources - install - - resources - + docker-resources + process-resources @@ -33,26 +45,8 @@ maven-dependency-plugin - copy - package - - copy - - - - - org.springframework.samples - udc-backend - ${project.version} - jar - true - ${project.basedir}/target/context - ${project.artifactId}.jar - - - false - true - + docker-dependencies + process-sources diff --git a/udc-containers/udc-backend-service/src/main/resources/Dockerfile b/udc-containers/udc-backend-service/src/main/resources/Dockerfile index c48efd2c7..cd3c83cf7 100644 --- a/udc-containers/udc-backend-service/src/main/resources/Dockerfile +++ b/udc-containers/udc-backend-service/src/main/resources/Dockerfile @@ -1,4 +1,4 @@ -FROM openjdk:8-jre +FROM @docker.baseImage@ ENV LANG=en_US.UTF-8 \ LANGUAGE=en_US.UTF-8 \ @@ -14,8 +14,4 @@ RUN mkdir -p ${BASE_DIR} COPY entrypoint.sh /entrypoint.sh RUN chmod +x /entrypoint.sh -COPY udc-backend-*.jar /udc/apps/petclinic/todo.jar - -LABEL project.groupid="${project.groupId}" \ - project.artifactid="${project.artifactId}" \ - project.version="${project.version}" +COPY udc-backend.jar ${BASE_DIR}/udc-backend-service.jar diff --git a/udc-containers/udc-backend-service/src/main/resources/entrypoint.sh b/udc-containers/udc-backend-service/src/main/resources/entrypoint.sh index a9bf588e2..9cb425b51 100644 --- a/udc-containers/udc-backend-service/src/main/resources/entrypoint.sh +++ b/udc-containers/udc-backend-service/src/main/resources/entrypoint.sh @@ -1 +1,9 @@ -#!/bin/bash +#!/usr/bin/env bash + +######################################################## +# +# Name: entrypoint.sh +# +########################################################## + +java -jar ${BASE_DIR}/udc-backend-service.jar diff --git a/udc-containers/udc-backend-service/target/classes/Dockerfile b/udc-containers/udc-backend-service/target/classes/Dockerfile new file mode 100644 index 000000000..370aa4dec --- /dev/null +++ b/udc-containers/udc-backend-service/target/classes/Dockerfile @@ -0,0 +1,17 @@ +FROM openjdk:8-jre + +ENV LANG=en_US.UTF-8 \ + LANGUAGE=en_US.UTF-8 \ + LC_ALL=en_US.UTF-8 + +ENV BASE_DIR='/udc/apps/petclinic' + +EXPOSE 8080 +ENTRYPOINT ["/entrypoint.sh"] + +RUN mkdir -p ${BASE_DIR} + +COPY entrypoint.sh /entrypoint.sh +RUN chmod +x /entrypoint.sh + +COPY udc-backend-*.jar ${BASE_DIR}/udc-backend-service.jar diff --git a/udc-containers/udc-backend-service/target/classes/entrypoint.sh b/udc-containers/udc-backend-service/target/classes/entrypoint.sh new file mode 100644 index 000000000..9cb425b51 --- /dev/null +++ b/udc-containers/udc-backend-service/target/classes/entrypoint.sh @@ -0,0 +1,9 @@ +#!/usr/bin/env bash + +######################################################## +# +# Name: entrypoint.sh +# +########################################################## + +java -jar ${BASE_DIR}/udc-backend-service.jar diff --git a/udc-containers/udc-backend-service/target/context/Dockerfile b/udc-containers/udc-backend-service/target/context/Dockerfile new file mode 100644 index 000000000..370aa4dec --- /dev/null +++ b/udc-containers/udc-backend-service/target/context/Dockerfile @@ -0,0 +1,17 @@ +FROM openjdk:8-jre + +ENV LANG=en_US.UTF-8 \ + LANGUAGE=en_US.UTF-8 \ + LC_ALL=en_US.UTF-8 + +ENV BASE_DIR='/udc/apps/petclinic' + +EXPOSE 8080 +ENTRYPOINT ["/entrypoint.sh"] + +RUN mkdir -p ${BASE_DIR} + +COPY entrypoint.sh /entrypoint.sh +RUN chmod +x /entrypoint.sh + +COPY udc-backend-*.jar ${BASE_DIR}/udc-backend-service.jar diff --git a/udc-containers/udc-backend-service/target/context/entrypoint.sh b/udc-containers/udc-backend-service/target/context/entrypoint.sh new file mode 100644 index 000000000..9cb425b51 --- /dev/null +++ b/udc-containers/udc-backend-service/target/context/entrypoint.sh @@ -0,0 +1,9 @@ +#!/usr/bin/env bash + +######################################################## +# +# Name: entrypoint.sh +# +########################################################## + +java -jar ${BASE_DIR}/udc-backend-service.jar diff --git a/udc-containers/udc-backend-service/target/maven-archiver/pom.properties b/udc-containers/udc-backend-service/target/maven-archiver/pom.properties new file mode 100644 index 000000000..068339cfe --- /dev/null +++ b/udc-containers/udc-backend-service/target/maven-archiver/pom.properties @@ -0,0 +1,4 @@ +#Created by Apache Maven 3.5.4 +version=1.0.0-SNAPSHOT +groupId=org.springframework.samples +artifactId=udc-backend-service diff --git a/udc-containers/udc-backend-service/target/udc-backend-service-1.0.0-SNAPSHOT.jar b/udc-containers/udc-backend-service/target/udc-backend-service-1.0.0-SNAPSHOT.jar new file mode 100644 index 0000000000000000000000000000000000000000..dac76203e31bdf33787579e83ed791a02452fd2c GIT binary patch literal 2670 zcmWIWW@h1H;Nak3_$6fPEB#XH+BXIUhI&Q@1`#0b>l)&y>*?pF@9XI2>E;?7qUYA^3J#Dw`bO* zt=oIsLFpscjF=By{wWhTMoLR(9Gtu?PjgzIR6tE>bm7tp(Or8#&t0%QXtvZI+lzlp zr?f`c_{|qD_dne;wfg!5jr}6md29YH{%p2jM&wcEywt82f6AJ7we~k`_1R_bFS%O4 zq*1nKS>SBh4?FD|o{N9-it95ByK{Tj{|9bj`IBFNp1k4e>E=h)i)Mt(bLV-Vpz$}w zOZ-!z&}#t=``=4@J~}8(bYl_;OirKieyyP336pcy#uF^XOdnL`c&Qv{HlDDtr!2u_b1rIme%J`9$%C$$)lLH48>RGN~ko0OQGotl@TTbx={mYJLiH5`^=+L|S&UjQ2F z2uv|tK-wiAsJbXEGbc5-FLrg4gFxH+@8LXxEb72eO=hc{)7t|Cb{A;PxX>V4QvZMUe}P#QbxiqodydbKtg@KO^Xt0*w=VPh z4{P1H^(6lpe)8GwKf!G6j(r@b0Jgn6_fU?5Pn;76iS0BJoD*{Ugbc)$y|?t(iS##+S#Dpyk6y)dXRpjQJ z4UNseY#>tmem#ev|74l%2bfpI_#3o1+`6$OuOs~Y&g{FYWhv@^1s?4`zjgApmzUP@ zWG?nUyYu_6dDZ87o&Ba)ik)?oUid^qPUWu!)5%b+Cn+NLW9nVy9|zx3ZVfYjkeaf2 zspQein{?VFp6BoxC9*ya_Lws7!Rpi8e-vNd4z3FPT&#L{so?BQN0TP%+}qt${`Vil z|6LaHw}p$^T1-?Y%N#0FZae0BUNn8_;-4wMGvbe3S|aD7r@!&MVd+_qbwMZUs#I5W z3*9+XWw$;-D#g>B=cLQ(RX^qhRo5kPyz`qJIK?8TOGJtVRYeY(_7h5gDYX)m zTB(y_3ySg!Qj1D5Q;T^|ZR9(oAi!{8?s|p7XFqC3I5>*M>c zXWthj9&+;YkH4F~CI3?S8j-J@=Ps=B(osD6j)T`Et>(+&irRfso^N?R`?XN@gfoi2 zW)?2?f5ghNea|F~Cqijkp58A@Kig8a@I{Zn^#sqqVDBP(D!`kONrYJhXWa|*GZ-vs z1X1t|i&PUsOaPX;IBFq?egTHJjuybu8EyhTZJ=5Sp)DR+8?253xf;8jpjrx{xd&4- zzG4QSt3b6D!r-f<8H}y`LJxc7avfBQ!N8J6BVeJ4sMFB(As4uyQXdAEG+HsE)d9#_ xv6aXOtv7*M;gLmA`HXBQwmgNfvzv`7b|P|EfHy19NCpN@AiM_*!zy+V4*)24xxD}Y literal 0 HcmV?d00001 From 0bfc257a0194cc6f4644ed29a6368c5b3afc53be Mon Sep 17 00:00:00 2001 From: Alexander Sharov Date: Sat, 29 Sep 2018 03:22:11 +0400 Subject: [PATCH 14/15] Add create-k8s-node-pool.sh script --- udc-misc/create-k8s-node-pool.sh | 26 ++++++++++++++++++++++++++ 1 file changed, 26 insertions(+) create mode 100755 udc-misc/create-k8s-node-pool.sh diff --git a/udc-misc/create-k8s-node-pool.sh b/udc-misc/create-k8s-node-pool.sh new file mode 100755 index 000000000..89f6de348 --- /dev/null +++ b/udc-misc/create-k8s-node-pool.sh @@ -0,0 +1,26 @@ +#!/usr/bin/env bash + +######################################################## +# +# Name: create-k8s-node-pool.sh +# +########################################################## + +POOL_NAME='cicd-k8s-pool' +CLUSTER_NAME='cicd' +CLUSTER_ZONE='europe-west1-b' +SCOPES='compute-rw,storage-rw,logging-write,monitoring-write' + +gcloud container node-pools create "${POOL_NAME}" \ + --cluster="${CLUSTER_NAME}" \ + --disk-size='15' \ + --disk-type='pd-standard' \ + --enable-autorepair \ + --enable-autoupgrade \ + --image-type='COS' \ + --machine-type='custom-1-3072' \ + --min-cpu-platform='Automatic' \ + --node-version='1.10.7-gke.2' \ + --num-nodes='3' \ + --zone="${CLUSTER_ZONE}" \ + --scopes="${SCOPES}" From fa890de5ed370406415838bbc7036b476d39b669 Mon Sep 17 00:00:00 2001 From: Alexander Sharov Date: Sat, 29 Sep 2018 03:37:21 +0400 Subject: [PATCH 15/15] Test precommit --- test_branch | 1 + 1 file changed, 1 insertion(+) create mode 100644 test_branch diff --git a/test_branch b/test_branch new file mode 100644 index 000000000..cb857070d --- /dev/null +++ b/test_branch @@ -0,0 +1 @@ +test_brach