From 5a042b6f80be92564624504084385e67fe3e490a Mon Sep 17 00:00:00 2001
From: Ankur Gupta <ankur.gupta@jda.com>
Date: Wed, 25 Mar 2020 21:53:40 +0530
Subject: [PATCH 001/156] Java Example of Hexagonal Architecture

---
 hexagonaljava/.gitignore                      |  31 ++
 .../.mvn/wrapper/MavenWrapperDownloader.java  | 117 +++++++
 hexagonaljava/.mvn/wrapper/maven-wrapper.jar  | Bin 0 -> 50710 bytes
 .../.mvn/wrapper/maven-wrapper.properties     |   2 +
 hexagonaljava/mvnw                            | 310 ++++++++++++++++++
 hexagonaljava/mvnw.cmd                        | 182 ++++++++++
 hexagonaljava/pom.xml                         |  60 ++++
 .../HexagonaljavaApplication.java             |  13 +
 .../controller/StudentResultController.java   |  29 ++
 .../hexagonaljava/entity/Student.java         |  37 +++
 .../repository/StudentResultJdbcRepoImpl.java |  84 +++++
 .../repository/StudentResultRepo.java         |  11 +
 .../repository/StudentResultRepoImpl.java     |  26 ++
 .../service/StudentResultService.java         |  11 +
 .../service/StudentResultServiceImpl.java     |  32 ++
 .../src/main/resources/application.properties |   5 +
 hexagonaljava/src/main/resources/schema.sql   |  11 +
 .../HexagonaljavaApplicationTests.java        |  13 +
 18 files changed, 974 insertions(+)
 create mode 100644 hexagonaljava/.gitignore
 create mode 100644 hexagonaljava/.mvn/wrapper/MavenWrapperDownloader.java
 create mode 100644 hexagonaljava/.mvn/wrapper/maven-wrapper.jar
 create mode 100644 hexagonaljava/.mvn/wrapper/maven-wrapper.properties
 create mode 100755 hexagonaljava/mvnw
 create mode 100644 hexagonaljava/mvnw.cmd
 create mode 100644 hexagonaljava/pom.xml
 create mode 100644 hexagonaljava/src/main/java/com/baeldung/hexagonaljava/HexagonaljavaApplication.java
 create mode 100644 hexagonaljava/src/main/java/com/baeldung/hexagonaljava/controller/StudentResultController.java
 create mode 100644 hexagonaljava/src/main/java/com/baeldung/hexagonaljava/entity/Student.java
 create mode 100644 hexagonaljava/src/main/java/com/baeldung/hexagonaljava/repository/StudentResultJdbcRepoImpl.java
 create mode 100644 hexagonaljava/src/main/java/com/baeldung/hexagonaljava/repository/StudentResultRepo.java
 create mode 100644 hexagonaljava/src/main/java/com/baeldung/hexagonaljava/repository/StudentResultRepoImpl.java
 create mode 100644 hexagonaljava/src/main/java/com/baeldung/hexagonaljava/service/StudentResultService.java
 create mode 100644 hexagonaljava/src/main/java/com/baeldung/hexagonaljava/service/StudentResultServiceImpl.java
 create mode 100644 hexagonaljava/src/main/resources/application.properties
 create mode 100644 hexagonaljava/src/main/resources/schema.sql
 create mode 100644 hexagonaljava/src/test/java/com/baeldung/hexagonaljava/HexagonaljavaApplicationTests.java

diff --git a/hexagonaljava/.gitignore b/hexagonaljava/.gitignore
new file mode 100644
index 0000000000..a2a3040aa8
--- /dev/null
+++ b/hexagonaljava/.gitignore
@@ -0,0 +1,31 @@
+HELP.md
+target/
+!.mvn/wrapper/maven-wrapper.jar
+!**/src/main/**
+!**/src/test/**
+
+### STS ###
+.apt_generated
+.classpath
+.factorypath
+.project
+.settings
+.springBeans
+.sts4-cache
+
+### IntelliJ IDEA ###
+.idea
+*.iws
+*.iml
+*.ipr
+
+### NetBeans ###
+/nbproject/private/
+/nbbuild/
+/dist/
+/nbdist/
+/.nb-gradle/
+build/
+
+### VS Code ###
+.vscode/
diff --git a/hexagonaljava/.mvn/wrapper/MavenWrapperDownloader.java b/hexagonaljava/.mvn/wrapper/MavenWrapperDownloader.java
new file mode 100644
index 0000000000..e76d1f3241
--- /dev/null
+++ b/hexagonaljava/.mvn/wrapper/MavenWrapperDownloader.java
@@ -0,0 +1,117 @@
+/*
+ * Copyright 2007-present the original author or authors.
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      https://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+import java.net.*;
+import java.io.*;
+import java.nio.channels.*;
+import java.util.Properties;
+
+public class MavenWrapperDownloader {
+
+    private static final String WRAPPER_VERSION = "0.5.6";
+    /**
+     * Default URL to download the maven-wrapper.jar from, if no 'downloadUrl' is provided.
+     */
+    private static final String DEFAULT_DOWNLOAD_URL = "https://repo.maven.apache.org/maven2/io/takari/maven-wrapper/"
+        + WRAPPER_VERSION + "/maven-wrapper-" + WRAPPER_VERSION + ".jar";
+
+    /**
+     * Path to the maven-wrapper.properties file, which might contain a downloadUrl property to
+     * use instead of the default one.
+     */
+    private static final String MAVEN_WRAPPER_PROPERTIES_PATH =
+            ".mvn/wrapper/maven-wrapper.properties";
+
+    /**
+     * Path where the maven-wrapper.jar will be saved to.
+     */
+    private static final String MAVEN_WRAPPER_JAR_PATH =
+            ".mvn/wrapper/maven-wrapper.jar";
+
+    /**
+     * Name of the property which should be used to override the default download url for the wrapper.
+     */
+    private static final String PROPERTY_NAME_WRAPPER_URL = "wrapperUrl";
+
+    public static void main(String args[]) {
+        System.out.println("- Downloader started");
+        File baseDirectory = new File(args[0]);
+        System.out.println("- Using base directory: " + baseDirectory.getAbsolutePath());
+
+        // If the maven-wrapper.properties exists, read it and check if it contains a custom
+        // wrapperUrl parameter.
+        File mavenWrapperPropertyFile = new File(baseDirectory, MAVEN_WRAPPER_PROPERTIES_PATH);
+        String url = DEFAULT_DOWNLOAD_URL;
+        if(mavenWrapperPropertyFile.exists()) {
+            FileInputStream mavenWrapperPropertyFileInputStream = null;
+            try {
+                mavenWrapperPropertyFileInputStream = new FileInputStream(mavenWrapperPropertyFile);
+                Properties mavenWrapperProperties = new Properties();
+                mavenWrapperProperties.load(mavenWrapperPropertyFileInputStream);
+                url = mavenWrapperProperties.getProperty(PROPERTY_NAME_WRAPPER_URL, url);
+            } catch (IOException e) {
+                System.out.println("- ERROR loading '" + MAVEN_WRAPPER_PROPERTIES_PATH + "'");
+            } finally {
+                try {
+                    if(mavenWrapperPropertyFileInputStream != null) {
+                        mavenWrapperPropertyFileInputStream.close();
+                    }
+                } catch (IOException e) {
+                    // Ignore ...
+                }
+            }
+        }
+        System.out.println("- Downloading from: " + url);
+
+        File outputFile = new File(baseDirectory.getAbsolutePath(), MAVEN_WRAPPER_JAR_PATH);
+        if(!outputFile.getParentFile().exists()) {
+            if(!outputFile.getParentFile().mkdirs()) {
+                System.out.println(
+                        "- ERROR creating output directory '" + outputFile.getParentFile().getAbsolutePath() + "'");
+            }
+        }
+        System.out.println("- Downloading to: " + outputFile.getAbsolutePath());
+        try {
+            downloadFileFromURL(url, outputFile);
+            System.out.println("Done");
+            System.exit(0);
+        } catch (Throwable e) {
+            System.out.println("- Error downloading");
+            e.printStackTrace();
+            System.exit(1);
+        }
+    }
+
+    private static void downloadFileFromURL(String urlString, File destination) throws Exception {
+        if (System.getenv("MVNW_USERNAME") != null && System.getenv("MVNW_PASSWORD") != null) {
+            String username = System.getenv("MVNW_USERNAME");
+            char[] password = System.getenv("MVNW_PASSWORD").toCharArray();
+            Authenticator.setDefault(new Authenticator() {
+                @Override
+                protected PasswordAuthentication getPasswordAuthentication() {
+                    return new PasswordAuthentication(username, password);
+                }
+            });
+        }
+        URL website = new URL(urlString);
+        ReadableByteChannel rbc;
+        rbc = Channels.newChannel(website.openStream());
+        FileOutputStream fos = new FileOutputStream(destination);
+        fos.getChannel().transferFrom(rbc, 0, Long.MAX_VALUE);
+        fos.close();
+        rbc.close();
+    }
+
+}
diff --git a/hexagonaljava/.mvn/wrapper/maven-wrapper.jar b/hexagonaljava/.mvn/wrapper/maven-wrapper.jar
new file mode 100644
index 0000000000000000000000000000000000000000..2cc7d4a55c0cd0092912bf49ae38b3a9e3fd0054
GIT binary patch
literal 50710
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
EfAhh=DF6Tf

literal 0
HcmV?d00001

diff --git a/hexagonaljava/.mvn/wrapper/maven-wrapper.properties b/hexagonaljava/.mvn/wrapper/maven-wrapper.properties
new file mode 100644
index 0000000000..642d572ce9
--- /dev/null
+++ b/hexagonaljava/.mvn/wrapper/maven-wrapper.properties
@@ -0,0 +1,2 @@
+distributionUrl=https://repo.maven.apache.org/maven2/org/apache/maven/apache-maven/3.6.3/apache-maven-3.6.3-bin.zip
+wrapperUrl=https://repo.maven.apache.org/maven2/io/takari/maven-wrapper/0.5.6/maven-wrapper-0.5.6.jar
diff --git a/hexagonaljava/mvnw b/hexagonaljava/mvnw
new file mode 100755
index 0000000000..a16b5431b4
--- /dev/null
+++ b/hexagonaljava/mvnw
@@ -0,0 +1,310 @@
+#!/bin/sh
+# ----------------------------------------------------------------------------
+# Licensed to the Apache Software Foundation (ASF) under one
+# or more contributor license agreements.  See the NOTICE file
+# distributed with this work for additional information
+# regarding copyright ownership.  The ASF licenses this file
+# to you under the Apache License, Version 2.0 (the
+# "License"); you may not use this file except in compliance
+# with the License.  You may obtain a copy of the License at
+#
+#    https://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing,
+# software distributed under the License is distributed on an
+# "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+# KIND, either express or implied.  See the License for the
+# specific language governing permissions and limitations
+# under the License.
+# ----------------------------------------------------------------------------
+
+# ----------------------------------------------------------------------------
+# Maven Start Up Batch script
+#
+# Required ENV vars:
+# ------------------
+#   JAVA_HOME - location of a JDK home dir
+#
+# Optional ENV vars
+# -----------------
+#   M2_HOME - location of maven2's installed home dir
+#   MAVEN_OPTS - parameters passed to the Java VM when running Maven
+#     e.g. to debug Maven itself, use
+#       set MAVEN_OPTS=-Xdebug -Xrunjdwp:transport=dt_socket,server=y,suspend=y,address=8000
+#   MAVEN_SKIP_RC - flag to disable loading of mavenrc files
+# ----------------------------------------------------------------------------
+
+if [ -z "$MAVEN_SKIP_RC" ] ; then
+
+  if [ -f /etc/mavenrc ] ; then
+    . /etc/mavenrc
+  fi
+
+  if [ -f "$HOME/.mavenrc" ] ; then
+    . "$HOME/.mavenrc"
+  fi
+
+fi
+
+# OS specific support.  $var _must_ be set to either true or false.
+cygwin=false;
+darwin=false;
+mingw=false
+case "`uname`" in
+  CYGWIN*) cygwin=true ;;
+  MINGW*) mingw=true;;
+  Darwin*) darwin=true
+    # Use /usr/libexec/java_home if available, otherwise fall back to /Library/Java/Home
+    # See https://developer.apple.com/library/mac/qa/qa1170/_index.html
+    if [ -z "$JAVA_HOME" ]; then
+      if [ -x "/usr/libexec/java_home" ]; then
+        export JAVA_HOME="`/usr/libexec/java_home`"
+      else
+        export JAVA_HOME="/Library/Java/Home"
+      fi
+    fi
+    ;;
+esac
+
+if [ -z "$JAVA_HOME" ] ; then
+  if [ -r /etc/gentoo-release ] ; then
+    JAVA_HOME=`java-config --jre-home`
+  fi
+fi
+
+if [ -z "$M2_HOME" ] ; then
+  ## resolve links - $0 may be a link to maven's home
+  PRG="$0"
+
+  # need this for relative symlinks
+  while [ -h "$PRG" ] ; do
+    ls=`ls -ld "$PRG"`
+    link=`expr "$ls" : '.*-> \(.*\)$'`
+    if expr "$link" : '/.*' > /dev/null; then
+      PRG="$link"
+    else
+      PRG="`dirname "$PRG"`/$link"
+    fi
+  done
+
+  saveddir=`pwd`
+
+  M2_HOME=`dirname "$PRG"`/..
+
+  # make it fully qualified
+  M2_HOME=`cd "$M2_HOME" && pwd`
+
+  cd "$saveddir"
+  # echo Using m2 at $M2_HOME
+fi
+
+# For Cygwin, ensure paths are in UNIX format before anything is touched
+if $cygwin ; then
+  [ -n "$M2_HOME" ] &&
+    M2_HOME=`cygpath --unix "$M2_HOME"`
+  [ -n "$JAVA_HOME" ] &&
+    JAVA_HOME=`cygpath --unix "$JAVA_HOME"`
+  [ -n "$CLASSPATH" ] &&
+    CLASSPATH=`cygpath --path --unix "$CLASSPATH"`
+fi
+
+# For Mingw, ensure paths are in UNIX format before anything is touched
+if $mingw ; then
+  [ -n "$M2_HOME" ] &&
+    M2_HOME="`(cd "$M2_HOME"; pwd)`"
+  [ -n "$JAVA_HOME" ] &&
+    JAVA_HOME="`(cd "$JAVA_HOME"; pwd)`"
+fi
+
+if [ -z "$JAVA_HOME" ]; then
+  javaExecutable="`which javac`"
+  if [ -n "$javaExecutable" ] && ! [ "`expr \"$javaExecutable\" : '\([^ ]*\)'`" = "no" ]; then
+    # readlink(1) is not available as standard on Solaris 10.
+    readLink=`which readlink`
+    if [ ! `expr "$readLink" : '\([^ ]*\)'` = "no" ]; then
+      if $darwin ; then
+        javaHome="`dirname \"$javaExecutable\"`"
+        javaExecutable="`cd \"$javaHome\" && pwd -P`/javac"
+      else
+        javaExecutable="`readlink -f \"$javaExecutable\"`"
+      fi
+      javaHome="`dirname \"$javaExecutable\"`"
+      javaHome=`expr "$javaHome" : '\(.*\)/bin'`
+      JAVA_HOME="$javaHome"
+      export JAVA_HOME
+    fi
+  fi
+fi
+
+if [ -z "$JAVACMD" ] ; then
+  if [ -n "$JAVA_HOME"  ] ; then
+    if [ -x "$JAVA_HOME/jre/sh/java" ] ; then
+      # IBM's JDK on AIX uses strange locations for the executables
+      JAVACMD="$JAVA_HOME/jre/sh/java"
+    else
+      JAVACMD="$JAVA_HOME/bin/java"
+    fi
+  else
+    JAVACMD="`which java`"
+  fi
+fi
+
+if [ ! -x "$JAVACMD" ] ; then
+  echo "Error: JAVA_HOME is not defined correctly." >&2
+  echo "  We cannot execute $JAVACMD" >&2
+  exit 1
+fi
+
+if [ -z "$JAVA_HOME" ] ; then
+  echo "Warning: JAVA_HOME environment variable is not set."
+fi
+
+CLASSWORLDS_LAUNCHER=org.codehaus.plexus.classworlds.launcher.Launcher
+
+# traverses directory structure from process work directory to filesystem root
+# first directory with .mvn subdirectory is considered project base directory
+find_maven_basedir() {
+
+  if [ -z "$1" ]
+  then
+    echo "Path not specified to find_maven_basedir"
+    return 1
+  fi
+
+  basedir="$1"
+  wdir="$1"
+  while [ "$wdir" != '/' ] ; do
+    if [ -d "$wdir"/.mvn ] ; then
+      basedir=$wdir
+      break
+    fi
+    # workaround for JBEAP-8937 (on Solaris 10/Sparc)
+    if [ -d "${wdir}" ]; then
+      wdir=`cd "$wdir/.."; pwd`
+    fi
+    # end of workaround
+  done
+  echo "${basedir}"
+}
+
+# concatenates all lines of a file
+concat_lines() {
+  if [ -f "$1" ]; then
+    echo "$(tr -s '\n' ' ' < "$1")"
+  fi
+}
+
+BASE_DIR=`find_maven_basedir "$(pwd)"`
+if [ -z "$BASE_DIR" ]; then
+  exit 1;
+fi
+
+##########################################################################################
+# Extension to allow automatically downloading the maven-wrapper.jar from Maven-central
+# This allows using the maven wrapper in projects that prohibit checking in binary data.
+##########################################################################################
+if [ -r "$BASE_DIR/.mvn/wrapper/maven-wrapper.jar" ]; then
+    if [ "$MVNW_VERBOSE" = true ]; then
+      echo "Found .mvn/wrapper/maven-wrapper.jar"
+    fi
+else
+    if [ "$MVNW_VERBOSE" = true ]; then
+      echo "Couldn't find .mvn/wrapper/maven-wrapper.jar, downloading it ..."
+    fi
+    if [ -n "$MVNW_REPOURL" ]; then
+      jarUrl="$MVNW_REPOURL/io/takari/maven-wrapper/0.5.6/maven-wrapper-0.5.6.jar"
+    else
+      jarUrl="https://repo.maven.apache.org/maven2/io/takari/maven-wrapper/0.5.6/maven-wrapper-0.5.6.jar"
+    fi
+    while IFS="=" read key value; do
+      case "$key" in (wrapperUrl) jarUrl="$value"; break ;;
+      esac
+    done < "$BASE_DIR/.mvn/wrapper/maven-wrapper.properties"
+    if [ "$MVNW_VERBOSE" = true ]; then
+      echo "Downloading from: $jarUrl"
+    fi
+    wrapperJarPath="$BASE_DIR/.mvn/wrapper/maven-wrapper.jar"
+    if $cygwin; then
+      wrapperJarPath=`cygpath --path --windows "$wrapperJarPath"`
+    fi
+
+    if command -v wget > /dev/null; then
+        if [ "$MVNW_VERBOSE" = true ]; then
+          echo "Found wget ... using wget"
+        fi
+        if [ -z "$MVNW_USERNAME" ] || [ -z "$MVNW_PASSWORD" ]; then
+            wget "$jarUrl" -O "$wrapperJarPath"
+        else
+            wget --http-user=$MVNW_USERNAME --http-password=$MVNW_PASSWORD "$jarUrl" -O "$wrapperJarPath"
+        fi
+    elif command -v curl > /dev/null; then
+        if [ "$MVNW_VERBOSE" = true ]; then
+          echo "Found curl ... using curl"
+        fi
+        if [ -z "$MVNW_USERNAME" ] || [ -z "$MVNW_PASSWORD" ]; then
+            curl -o "$wrapperJarPath" "$jarUrl" -f
+        else
+            curl --user $MVNW_USERNAME:$MVNW_PASSWORD -o "$wrapperJarPath" "$jarUrl" -f
+        fi
+
+    else
+        if [ "$MVNW_VERBOSE" = true ]; then
+          echo "Falling back to using Java to download"
+        fi
+        javaClass="$BASE_DIR/.mvn/wrapper/MavenWrapperDownloader.java"
+        # For Cygwin, switch paths to Windows format before running javac
+        if $cygwin; then
+          javaClass=`cygpath --path --windows "$javaClass"`
+        fi
+        if [ -e "$javaClass" ]; then
+            if [ ! -e "$BASE_DIR/.mvn/wrapper/MavenWrapperDownloader.class" ]; then
+                if [ "$MVNW_VERBOSE" = true ]; then
+                  echo " - Compiling MavenWrapperDownloader.java ..."
+                fi
+                # Compiling the Java class
+                ("$JAVA_HOME/bin/javac" "$javaClass")
+            fi
+            if [ -e "$BASE_DIR/.mvn/wrapper/MavenWrapperDownloader.class" ]; then
+                # Running the downloader
+                if [ "$MVNW_VERBOSE" = true ]; then
+                  echo " - Running MavenWrapperDownloader.java ..."
+                fi
+                ("$JAVA_HOME/bin/java" -cp .mvn/wrapper MavenWrapperDownloader "$MAVEN_PROJECTBASEDIR")
+            fi
+        fi
+    fi
+fi
+##########################################################################################
+# End of extension
+##########################################################################################
+
+export MAVEN_PROJECTBASEDIR=${MAVEN_BASEDIR:-"$BASE_DIR"}
+if [ "$MVNW_VERBOSE" = true ]; then
+  echo $MAVEN_PROJECTBASEDIR
+fi
+MAVEN_OPTS="$(concat_lines "$MAVEN_PROJECTBASEDIR/.mvn/jvm.config") $MAVEN_OPTS"
+
+# For Cygwin, switch paths to Windows format before running java
+if $cygwin; then
+  [ -n "$M2_HOME" ] &&
+    M2_HOME=`cygpath --path --windows "$M2_HOME"`
+  [ -n "$JAVA_HOME" ] &&
+    JAVA_HOME=`cygpath --path --windows "$JAVA_HOME"`
+  [ -n "$CLASSPATH" ] &&
+    CLASSPATH=`cygpath --path --windows "$CLASSPATH"`
+  [ -n "$MAVEN_PROJECTBASEDIR" ] &&
+    MAVEN_PROJECTBASEDIR=`cygpath --path --windows "$MAVEN_PROJECTBASEDIR"`
+fi
+
+# Provide a "standardized" way to retrieve the CLI args that will
+# work with both Windows and non-Windows executions.
+MAVEN_CMD_LINE_ARGS="$MAVEN_CONFIG $@"
+export MAVEN_CMD_LINE_ARGS
+
+WRAPPER_LAUNCHER=org.apache.maven.wrapper.MavenWrapperMain
+
+exec "$JAVACMD" \
+  $MAVEN_OPTS \
+  -classpath "$MAVEN_PROJECTBASEDIR/.mvn/wrapper/maven-wrapper.jar" \
+  "-Dmaven.home=${M2_HOME}" "-Dmaven.multiModuleProjectDirectory=${MAVEN_PROJECTBASEDIR}" \
+  ${WRAPPER_LAUNCHER} $MAVEN_CONFIG "$@"
diff --git a/hexagonaljava/mvnw.cmd b/hexagonaljava/mvnw.cmd
new file mode 100644
index 0000000000..c8d43372c9
--- /dev/null
+++ b/hexagonaljava/mvnw.cmd
@@ -0,0 +1,182 @@
+@REM ----------------------------------------------------------------------------
+@REM Licensed to the Apache Software Foundation (ASF) under one
+@REM or more contributor license agreements.  See the NOTICE file
+@REM distributed with this work for additional information
+@REM regarding copyright ownership.  The ASF licenses this file
+@REM to you under the Apache License, Version 2.0 (the
+@REM "License"); you may not use this file except in compliance
+@REM with the License.  You may obtain a copy of the License at
+@REM
+@REM    https://www.apache.org/licenses/LICENSE-2.0
+@REM
+@REM Unless required by applicable law or agreed to in writing,
+@REM software distributed under the License is distributed on an
+@REM "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+@REM KIND, either express or implied.  See the License for the
+@REM specific language governing permissions and limitations
+@REM under the License.
+@REM ----------------------------------------------------------------------------
+
+@REM ----------------------------------------------------------------------------
+@REM Maven Start Up Batch script
+@REM
+@REM Required ENV vars:
+@REM JAVA_HOME - location of a JDK home dir
+@REM
+@REM Optional ENV vars
+@REM M2_HOME - location of maven2's installed home dir
+@REM MAVEN_BATCH_ECHO - set to 'on' to enable the echoing of the batch commands
+@REM MAVEN_BATCH_PAUSE - set to 'on' to wait for a keystroke before ending
+@REM MAVEN_OPTS - parameters passed to the Java VM when running Maven
+@REM     e.g. to debug Maven itself, use
+@REM set MAVEN_OPTS=-Xdebug -Xrunjdwp:transport=dt_socket,server=y,suspend=y,address=8000
+@REM MAVEN_SKIP_RC - flag to disable loading of mavenrc files
+@REM ----------------------------------------------------------------------------
+
+@REM Begin all REM lines with '@' in case MAVEN_BATCH_ECHO is 'on'
+@echo off
+@REM set title of command window
+title %0
+@REM enable echoing by setting MAVEN_BATCH_ECHO to 'on'
+@if "%MAVEN_BATCH_ECHO%" == "on"  echo %MAVEN_BATCH_ECHO%
+
+@REM set %HOME% to equivalent of $HOME
+if "%HOME%" == "" (set "HOME=%HOMEDRIVE%%HOMEPATH%")
+
+@REM Execute a user defined script before this one
+if not "%MAVEN_SKIP_RC%" == "" goto skipRcPre
+@REM check for pre script, once with legacy .bat ending and once with .cmd ending
+if exist "%HOME%\mavenrc_pre.bat" call "%HOME%\mavenrc_pre.bat"
+if exist "%HOME%\mavenrc_pre.cmd" call "%HOME%\mavenrc_pre.cmd"
+:skipRcPre
+
+@setlocal
+
+set ERROR_CODE=0
+
+@REM To isolate internal variables from possible post scripts, we use another setlocal
+@setlocal
+
+@REM ==== START VALIDATION ====
+if not "%JAVA_HOME%" == "" goto OkJHome
+
+echo.
+echo Error: JAVA_HOME not found in your environment. >&2
+echo Please set the JAVA_HOME variable in your environment to match the >&2
+echo location of your Java installation. >&2
+echo.
+goto error
+
+:OkJHome
+if exist "%JAVA_HOME%\bin\java.exe" goto init
+
+echo.
+echo Error: JAVA_HOME is set to an invalid directory. >&2
+echo JAVA_HOME = "%JAVA_HOME%" >&2
+echo Please set the JAVA_HOME variable in your environment to match the >&2
+echo location of your Java installation. >&2
+echo.
+goto error
+
+@REM ==== END VALIDATION ====
+
+:init
+
+@REM Find the project base dir, i.e. the directory that contains the folder ".mvn".
+@REM Fallback to current working directory if not found.
+
+set MAVEN_PROJECTBASEDIR=%MAVEN_BASEDIR%
+IF NOT "%MAVEN_PROJECTBASEDIR%"=="" goto endDetectBaseDir
+
+set EXEC_DIR=%CD%
+set WDIR=%EXEC_DIR%
+:findBaseDir
+IF EXIST "%WDIR%"\.mvn goto baseDirFound
+cd ..
+IF "%WDIR%"=="%CD%" goto baseDirNotFound
+set WDIR=%CD%
+goto findBaseDir
+
+:baseDirFound
+set MAVEN_PROJECTBASEDIR=%WDIR%
+cd "%EXEC_DIR%"
+goto endDetectBaseDir
+
+:baseDirNotFound
+set MAVEN_PROJECTBASEDIR=%EXEC_DIR%
+cd "%EXEC_DIR%"
+
+:endDetectBaseDir
+
+IF NOT EXIST "%MAVEN_PROJECTBASEDIR%\.mvn\jvm.config" goto endReadAdditionalConfig
+
+@setlocal EnableExtensions EnableDelayedExpansion
+for /F "usebackq delims=" %%a in ("%MAVEN_PROJECTBASEDIR%\.mvn\jvm.config") do set JVM_CONFIG_MAVEN_PROPS=!JVM_CONFIG_MAVEN_PROPS! %%a
+@endlocal & set JVM_CONFIG_MAVEN_PROPS=%JVM_CONFIG_MAVEN_PROPS%
+
+:endReadAdditionalConfig
+
+SET MAVEN_JAVA_EXE="%JAVA_HOME%\bin\java.exe"
+set WRAPPER_JAR="%MAVEN_PROJECTBASEDIR%\.mvn\wrapper\maven-wrapper.jar"
+set WRAPPER_LAUNCHER=org.apache.maven.wrapper.MavenWrapperMain
+
+set DOWNLOAD_URL="https://repo.maven.apache.org/maven2/io/takari/maven-wrapper/0.5.6/maven-wrapper-0.5.6.jar"
+
+FOR /F "tokens=1,2 delims==" %%A IN ("%MAVEN_PROJECTBASEDIR%\.mvn\wrapper\maven-wrapper.properties") DO (
+    IF "%%A"=="wrapperUrl" SET DOWNLOAD_URL=%%B
+)
+
+@REM Extension to allow automatically downloading the maven-wrapper.jar from Maven-central
+@REM This allows using the maven wrapper in projects that prohibit checking in binary data.
+if exist %WRAPPER_JAR% (
+    if "%MVNW_VERBOSE%" == "true" (
+        echo Found %WRAPPER_JAR%
+    )
+) else (
+    if not "%MVNW_REPOURL%" == "" (
+        SET DOWNLOAD_URL="%MVNW_REPOURL%/io/takari/maven-wrapper/0.5.6/maven-wrapper-0.5.6.jar"
+    )
+    if "%MVNW_VERBOSE%" == "true" (
+        echo Couldn't find %WRAPPER_JAR%, downloading it ...
+        echo Downloading from: %DOWNLOAD_URL%
+    )
+
+    powershell -Command "&{"^
+		"$webclient = new-object System.Net.WebClient;"^
+		"if (-not ([string]::IsNullOrEmpty('%MVNW_USERNAME%') -and [string]::IsNullOrEmpty('%MVNW_PASSWORD%'))) {"^
+		"$webclient.Credentials = new-object System.Net.NetworkCredential('%MVNW_USERNAME%', '%MVNW_PASSWORD%');"^
+		"}"^
+		"[Net.ServicePointManager]::SecurityProtocol = [Net.SecurityProtocolType]::Tls12; $webclient.DownloadFile('%DOWNLOAD_URL%', '%WRAPPER_JAR%')"^
+		"}"
+    if "%MVNW_VERBOSE%" == "true" (
+        echo Finished downloading %WRAPPER_JAR%
+    )
+)
+@REM End of extension
+
+@REM Provide a "standardized" way to retrieve the CLI args that will
+@REM work with both Windows and non-Windows executions.
+set MAVEN_CMD_LINE_ARGS=%*
+
+%MAVEN_JAVA_EXE% %JVM_CONFIG_MAVEN_PROPS% %MAVEN_OPTS% %MAVEN_DEBUG_OPTS% -classpath %WRAPPER_JAR% "-Dmaven.multiModuleProjectDirectory=%MAVEN_PROJECTBASEDIR%" %WRAPPER_LAUNCHER% %MAVEN_CONFIG% %*
+if ERRORLEVEL 1 goto error
+goto end
+
+:error
+set ERROR_CODE=1
+
+:end
+@endlocal & set ERROR_CODE=%ERROR_CODE%
+
+if not "%MAVEN_SKIP_RC%" == "" goto skipRcPost
+@REM check for post script, once with legacy .bat ending and once with .cmd ending
+if exist "%HOME%\mavenrc_post.bat" call "%HOME%\mavenrc_post.bat"
+if exist "%HOME%\mavenrc_post.cmd" call "%HOME%\mavenrc_post.cmd"
+:skipRcPost
+
+@REM pause the script if MAVEN_BATCH_PAUSE is set to 'on'
+if "%MAVEN_BATCH_PAUSE%" == "on" pause
+
+if "%MAVEN_TERMINATE_CMD%" == "on" exit %ERROR_CODE%
+
+exit /B %ERROR_CODE%
diff --git a/hexagonaljava/pom.xml b/hexagonaljava/pom.xml
new file mode 100644
index 0000000000..d9ca173888
--- /dev/null
+++ b/hexagonaljava/pom.xml
@@ -0,0 +1,60 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+	xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 https://maven.apache.org/xsd/maven-4.0.0.xsd">
+	<modelVersion>4.0.0</modelVersion>
+	<parent>
+		<groupId>org.springframework.boot</groupId>
+		<artifactId>spring-boot-starter-parent</artifactId>
+		<version>2.2.5.RELEASE</version>
+		<relativePath/> <!-- lookup parent from repository -->
+	</parent>
+	<groupId>com.baeldung.</groupId>
+	<artifactId>hexagonaljava</artifactId>
+	<version>0.0.1-SNAPSHOT</version>
+	<name>hexagonaljava</name>
+	<description>Demo project for Spring Boot</description>
+
+	<properties>
+		<java.version>1.8</java.version>
+	</properties>
+
+	<dependencies>
+		<dependency>
+			<groupId>org.springframework.boot</groupId>
+			<artifactId>spring-boot-starter-web</artifactId>
+		</dependency>
+
+		<dependency>
+			<groupId>org.springframework.boot</groupId>
+			<artifactId>spring-boot-starter-test</artifactId>
+			<scope>test</scope>
+			<exclusions>
+				<exclusion>
+					<groupId>org.junit.vintage</groupId>
+					<artifactId>junit-vintage-engine</artifactId>
+				</exclusion>
+			</exclusions>
+		</dependency>
+		
+		<dependency>
+   		 	<groupId>org.springframework.boot</groupId>
+    	 	<artifactId>spring-boot-starter-jdbc</artifactId>
+		</dependency>
+
+		<dependency>
+    		<groupId>com.h2database</groupId>
+   			<artifactId>h2</artifactId>
+    		<scope>runtime</scope>
+		</dependency>
+	</dependencies>
+
+	<build>
+		<plugins>
+			<plugin>
+				<groupId>org.springframework.boot</groupId>
+				<artifactId>spring-boot-maven-plugin</artifactId>
+			</plugin>
+		</plugins>
+	</build>
+
+</project>
diff --git a/hexagonaljava/src/main/java/com/baeldung/hexagonaljava/HexagonaljavaApplication.java b/hexagonaljava/src/main/java/com/baeldung/hexagonaljava/HexagonaljavaApplication.java
new file mode 100644
index 0000000000..603f8297d1
--- /dev/null
+++ b/hexagonaljava/src/main/java/com/baeldung/hexagonaljava/HexagonaljavaApplication.java
@@ -0,0 +1,13 @@
+package com.baeldung.hexagonaljava;
+
+import org.springframework.boot.SpringApplication;
+import org.springframework.boot.autoconfigure.SpringBootApplication;
+
+@SpringBootApplication
+public class HexagonaljavaApplication {
+
+    public static void main(String[] args) {
+        SpringApplication.run(HexagonaljavaApplication.class, args);
+    }
+
+}
diff --git a/hexagonaljava/src/main/java/com/baeldung/hexagonaljava/controller/StudentResultController.java b/hexagonaljava/src/main/java/com/baeldung/hexagonaljava/controller/StudentResultController.java
new file mode 100644
index 0000000000..7db6117f83
--- /dev/null
+++ b/hexagonaljava/src/main/java/com/baeldung/hexagonaljava/controller/StudentResultController.java
@@ -0,0 +1,29 @@
+package com.baeldung.hexagonaljava.controller;
+
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.web.bind.annotation.GetMapping;
+import org.springframework.web.bind.annotation.PathVariable;
+import org.springframework.web.bind.annotation.PostMapping;
+import org.springframework.web.bind.annotation.RequestBody;
+import org.springframework.web.bind.annotation.RestController;
+
+import com.baeldung.hexagonaljava.entity.Student;
+import com.baeldung.hexagonaljava.service.StudentResultService;
+
+@RestController
+public class StudentResultController {
+
+    @Autowired
+    private StudentResultService studentResultService;
+
+    @PostMapping(value = "/save")
+    public void saveStudent(@RequestBody Student student) {
+        studentResultService.save(student);
+    }
+
+    @GetMapping(value = "/getTotalMarks/{id}")
+    public Double getTotalMarks(@PathVariable Integer id) {
+        return studentResultService.getTotalMarks(id);
+    }
+
+}
diff --git a/hexagonaljava/src/main/java/com/baeldung/hexagonaljava/entity/Student.java b/hexagonaljava/src/main/java/com/baeldung/hexagonaljava/entity/Student.java
new file mode 100644
index 0000000000..ef721e6eda
--- /dev/null
+++ b/hexagonaljava/src/main/java/com/baeldung/hexagonaljava/entity/Student.java
@@ -0,0 +1,37 @@
+package com.baeldung.hexagonaljava.entity;
+
+import java.util.Map;
+
+public class Student {
+
+    private Integer id;
+
+    private String name;
+
+    private Map<String, Double> marks;
+
+    public Integer getId() {
+        return id;
+    }
+
+    public void setId(Integer id) {
+        this.id = id;
+    }
+
+    public String getName() {
+        return name;
+    }
+
+    public void setName(String name) {
+        this.name = name;
+    }
+
+    public Map<String, Double> getMarks() {
+        return marks;
+    }
+
+    public void setMarks(Map<String, Double> marks) {
+        this.marks = marks;
+    }
+
+}
diff --git a/hexagonaljava/src/main/java/com/baeldung/hexagonaljava/repository/StudentResultJdbcRepoImpl.java b/hexagonaljava/src/main/java/com/baeldung/hexagonaljava/repository/StudentResultJdbcRepoImpl.java
new file mode 100644
index 0000000000..1d347346a2
--- /dev/null
+++ b/hexagonaljava/src/main/java/com/baeldung/hexagonaljava/repository/StudentResultJdbcRepoImpl.java
@@ -0,0 +1,84 @@
+package com.baeldung.hexagonaljava.repository;
+
+import java.sql.PreparedStatement;
+import java.sql.ResultSet;
+import java.sql.SQLException;
+import java.util.HashMap;
+import java.util.Map;
+
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.context.annotation.Primary;
+import org.springframework.jdbc.core.BatchPreparedStatementSetter;
+import org.springframework.jdbc.core.JdbcTemplate;
+import org.springframework.jdbc.core.RowCallbackHandler;
+import org.springframework.stereotype.Component;
+
+import com.baeldung.hexagonaljava.entity.Student;
+
+@Primary
+@Component
+public class StudentResultJdbcRepoImpl implements StudentResultRepo {
+
+    @Autowired
+    JdbcTemplate jdbcTemplate;
+
+    @Override
+    public void save(Student student) {
+
+        jdbcTemplate.update("insert into student (id, name) " + "values(?,  ?)", new Object[] { student.getId(), student.getName() });
+        insertResult(student);
+
+    }
+
+    public void insertResult(Student student) {
+
+        String insertQuery = "insert into " + "studentresult " + "(subject,marks,id) " + "values " + "(?,?,?)";
+
+        for (final Map.Entry<String, Double> entry : student.getMarks()
+            .entrySet()) {
+
+            this.jdbcTemplate.batchUpdate(insertQuery, new BatchPreparedStatementSetter() {
+
+                @Override
+                public void setValues(final PreparedStatement ps, final int i) throws SQLException {
+
+                    ps.setString(1, entry.getKey());
+                    ps.setDouble(2, entry.getValue());
+                    ps.setInt(3, student.getId());
+                }
+
+                public int getBatchSize() {
+                    return student.getMarks()
+                        .size();
+                }
+            });
+        }
+
+    }
+
+    @Override
+    public Student getStudent(Integer id) {
+
+        String selectQuery = "select * from ( select * from student where id = ? ) s left join studentresult on s.id = studentresult.id";
+        Student student = new Student();
+        jdbcTemplate.query(selectQuery, new Object[] { id }, new RowCallbackHandler() {
+            public void processRow(ResultSet rs) throws SQLException {
+                while (rs.next()) {
+
+                    if (student.getId() == null) {
+                        student.setId(rs.getInt("id"));
+                        student.setName(rs.getString("name"));
+                        student.setMarks(new HashMap<String, Double>());
+                    }
+                    String subject = rs.getString("subject");
+                    Double marks = rs.getDouble("marks");
+                    student.getMarks()
+                        .put(subject, marks);
+
+                }
+            }
+        });
+        return student;
+    }
+
+}
diff --git a/hexagonaljava/src/main/java/com/baeldung/hexagonaljava/repository/StudentResultRepo.java b/hexagonaljava/src/main/java/com/baeldung/hexagonaljava/repository/StudentResultRepo.java
new file mode 100644
index 0000000000..1ee4e2b9e5
--- /dev/null
+++ b/hexagonaljava/src/main/java/com/baeldung/hexagonaljava/repository/StudentResultRepo.java
@@ -0,0 +1,11 @@
+package com.baeldung.hexagonaljava.repository;
+
+import com.baeldung.hexagonaljava.entity.Student;
+
+public interface StudentResultRepo {
+
+    void save(Student student);
+
+    Student getStudent(Integer id);
+
+}
diff --git a/hexagonaljava/src/main/java/com/baeldung/hexagonaljava/repository/StudentResultRepoImpl.java b/hexagonaljava/src/main/java/com/baeldung/hexagonaljava/repository/StudentResultRepoImpl.java
new file mode 100644
index 0000000000..6c94aa0083
--- /dev/null
+++ b/hexagonaljava/src/main/java/com/baeldung/hexagonaljava/repository/StudentResultRepoImpl.java
@@ -0,0 +1,26 @@
+package com.baeldung.hexagonaljava.repository;
+
+import java.util.HashMap;
+import java.util.Map;
+
+import org.springframework.stereotype.Repository;
+
+import com.baeldung.hexagonaljava.entity.Student;
+
+@Repository
+public class StudentResultRepoImpl implements StudentResultRepo {
+
+    private Map<Integer, Student> studentsMap = new HashMap<Integer, Student>();
+
+    @Override
+    public void save(Student student) {
+        studentsMap.put(student.getId(), student);
+
+    }
+
+    @Override
+    public Student getStudent(Integer id) {
+        return studentsMap.get(id);
+    }
+
+}
diff --git a/hexagonaljava/src/main/java/com/baeldung/hexagonaljava/service/StudentResultService.java b/hexagonaljava/src/main/java/com/baeldung/hexagonaljava/service/StudentResultService.java
new file mode 100644
index 0000000000..d77ac5dca8
--- /dev/null
+++ b/hexagonaljava/src/main/java/com/baeldung/hexagonaljava/service/StudentResultService.java
@@ -0,0 +1,11 @@
+package com.baeldung.hexagonaljava.service;
+
+import com.baeldung.hexagonaljava.entity.Student;
+
+public interface StudentResultService {
+
+    public void save(Student student);
+
+    public Double getTotalMarks(Integer id);
+
+}
diff --git a/hexagonaljava/src/main/java/com/baeldung/hexagonaljava/service/StudentResultServiceImpl.java b/hexagonaljava/src/main/java/com/baeldung/hexagonaljava/service/StudentResultServiceImpl.java
new file mode 100644
index 0000000000..d0b53e79f6
--- /dev/null
+++ b/hexagonaljava/src/main/java/com/baeldung/hexagonaljava/service/StudentResultServiceImpl.java
@@ -0,0 +1,32 @@
+package com.baeldung.hexagonaljava.service;
+
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.stereotype.Component;
+
+import com.baeldung.hexagonaljava.entity.Student;
+import com.baeldung.hexagonaljava.repository.StudentResultRepo;
+
+@Component
+public class StudentResultServiceImpl implements StudentResultService {
+
+    @Autowired
+    private StudentResultRepo studentResultRepo;
+
+    @Override
+    public void save(Student student) {
+        studentResultRepo.save(student);
+
+    }
+
+    @Override
+    public Double getTotalMarks(Integer id) {
+        Student student = studentResultRepo.getStudent(id);
+        double totalMarks = 0;
+        for (double marks : student.getMarks()
+            .values()) {
+            totalMarks += marks;
+        }
+        return totalMarks;
+    }
+
+}
diff --git a/hexagonaljava/src/main/resources/application.properties b/hexagonaljava/src/main/resources/application.properties
new file mode 100644
index 0000000000..5952b7eb01
--- /dev/null
+++ b/hexagonaljava/src/main/resources/application.properties
@@ -0,0 +1,5 @@
+spring.datasource.url=jdbc:h2:mem:testdb
+spring.datasource.driverClassName=org.h2.Driver
+spring.datasource.username=sa
+spring.datasource.password=
+spring.h2.console.enabled=false
diff --git a/hexagonaljava/src/main/resources/schema.sql b/hexagonaljava/src/main/resources/schema.sql
new file mode 100644
index 0000000000..4dab9fbb1f
--- /dev/null
+++ b/hexagonaljava/src/main/resources/schema.sql
@@ -0,0 +1,11 @@
+CREATE TABLE STUDENT (
+  id INT PRIMARY KEY,
+  name VARCHAR(250) NOT NULL
+);
+
+CREATE TABLE STUDENTRESULT(
+subject VARCHAR(250) NOT NULL,
+marks NUMERIC(8,2),
+id VARCHAR(250),
+FOREIGN KEY (id) references STUDENT(id)
+);
\ No newline at end of file
diff --git a/hexagonaljava/src/test/java/com/baeldung/hexagonaljava/HexagonaljavaApplicationTests.java b/hexagonaljava/src/test/java/com/baeldung/hexagonaljava/HexagonaljavaApplicationTests.java
new file mode 100644
index 0000000000..c61c51f7b2
--- /dev/null
+++ b/hexagonaljava/src/test/java/com/baeldung/hexagonaljava/HexagonaljavaApplicationTests.java
@@ -0,0 +1,13 @@
+package com.baeldung.hexagonaljava;
+
+import org.junit.jupiter.api.Test;
+import org.springframework.boot.test.context.SpringBootTest;
+
+@SpringBootTest
+class HexagonaljavaApplicationTests {
+
+	@Test
+	void contextLoads() {
+	}
+
+}

From 635e2ae55c1bdc3c1ec74960d76abf96f2729bca Mon Sep 17 00:00:00 2001
From: Ankur Gupta <ankur.gupta@jda.com>
Date: Fri, 27 Mar 2020 00:40:04 +0530
Subject: [PATCH 002/156] removing unnecessary maven files from pull request
 and spaces in code

---
 hexagonaljava/.gitignore                      |  31 --
 .../.mvn/wrapper/MavenWrapperDownloader.java  | 117 -------
 hexagonaljava/.mvn/wrapper/maven-wrapper.jar  | Bin 50710 -> 0 bytes
 .../.mvn/wrapper/maven-wrapper.properties     |   2 -
 hexagonaljava/mvnw                            | 310 ------------------
 hexagonaljava/mvnw.cmd                        | 182 ----------
 .../HexagonaljavaApplication.java             |   1 -
 .../controller/StudentResultController.java   |   1 -
 .../hexagonaljava/entity/Student.java         |   1 -
 .../repository/StudentResultJdbcRepoImpl.java |  17 +-
 .../repository/StudentResultRepo.java         |   1 -
 .../repository/StudentResultRepoImpl.java     |   2 -
 .../service/StudentResultService.java         |   5 +-
 .../service/StudentResultServiceImpl.java     |   4 +-
 hexagonaljava/src/main/resources/schema.sql   |   2 +-
 15 files changed, 7 insertions(+), 669 deletions(-)
 delete mode 100644 hexagonaljava/.gitignore
 delete mode 100644 hexagonaljava/.mvn/wrapper/MavenWrapperDownloader.java
 delete mode 100644 hexagonaljava/.mvn/wrapper/maven-wrapper.jar
 delete mode 100644 hexagonaljava/.mvn/wrapper/maven-wrapper.properties
 delete mode 100755 hexagonaljava/mvnw
 delete mode 100644 hexagonaljava/mvnw.cmd

diff --git a/hexagonaljava/.gitignore b/hexagonaljava/.gitignore
deleted file mode 100644
index a2a3040aa8..0000000000
--- a/hexagonaljava/.gitignore
+++ /dev/null
@@ -1,31 +0,0 @@
-HELP.md
-target/
-!.mvn/wrapper/maven-wrapper.jar
-!**/src/main/**
-!**/src/test/**
-
-### STS ###
-.apt_generated
-.classpath
-.factorypath
-.project
-.settings
-.springBeans
-.sts4-cache
-
-### IntelliJ IDEA ###
-.idea
-*.iws
-*.iml
-*.ipr
-
-### NetBeans ###
-/nbproject/private/
-/nbbuild/
-/dist/
-/nbdist/
-/.nb-gradle/
-build/
-
-### VS Code ###
-.vscode/
diff --git a/hexagonaljava/.mvn/wrapper/MavenWrapperDownloader.java b/hexagonaljava/.mvn/wrapper/MavenWrapperDownloader.java
deleted file mode 100644
index e76d1f3241..0000000000
--- a/hexagonaljava/.mvn/wrapper/MavenWrapperDownloader.java
+++ /dev/null
@@ -1,117 +0,0 @@
-/*
- * Copyright 2007-present the original author or authors.
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- *      https://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-import java.net.*;
-import java.io.*;
-import java.nio.channels.*;
-import java.util.Properties;
-
-public class MavenWrapperDownloader {
-
-    private static final String WRAPPER_VERSION = "0.5.6";
-    /**
-     * Default URL to download the maven-wrapper.jar from, if no 'downloadUrl' is provided.
-     */
-    private static final String DEFAULT_DOWNLOAD_URL = "https://repo.maven.apache.org/maven2/io/takari/maven-wrapper/"
-        + WRAPPER_VERSION + "/maven-wrapper-" + WRAPPER_VERSION + ".jar";
-
-    /**
-     * Path to the maven-wrapper.properties file, which might contain a downloadUrl property to
-     * use instead of the default one.
-     */
-    private static final String MAVEN_WRAPPER_PROPERTIES_PATH =
-            ".mvn/wrapper/maven-wrapper.properties";
-
-    /**
-     * Path where the maven-wrapper.jar will be saved to.
-     */
-    private static final String MAVEN_WRAPPER_JAR_PATH =
-            ".mvn/wrapper/maven-wrapper.jar";
-
-    /**
-     * Name of the property which should be used to override the default download url for the wrapper.
-     */
-    private static final String PROPERTY_NAME_WRAPPER_URL = "wrapperUrl";
-
-    public static void main(String args[]) {
-        System.out.println("- Downloader started");
-        File baseDirectory = new File(args[0]);
-        System.out.println("- Using base directory: " + baseDirectory.getAbsolutePath());
-
-        // If the maven-wrapper.properties exists, read it and check if it contains a custom
-        // wrapperUrl parameter.
-        File mavenWrapperPropertyFile = new File(baseDirectory, MAVEN_WRAPPER_PROPERTIES_PATH);
-        String url = DEFAULT_DOWNLOAD_URL;
-        if(mavenWrapperPropertyFile.exists()) {
-            FileInputStream mavenWrapperPropertyFileInputStream = null;
-            try {
-                mavenWrapperPropertyFileInputStream = new FileInputStream(mavenWrapperPropertyFile);
-                Properties mavenWrapperProperties = new Properties();
-                mavenWrapperProperties.load(mavenWrapperPropertyFileInputStream);
-                url = mavenWrapperProperties.getProperty(PROPERTY_NAME_WRAPPER_URL, url);
-            } catch (IOException e) {
-                System.out.println("- ERROR loading '" + MAVEN_WRAPPER_PROPERTIES_PATH + "'");
-            } finally {
-                try {
-                    if(mavenWrapperPropertyFileInputStream != null) {
-                        mavenWrapperPropertyFileInputStream.close();
-                    }
-                } catch (IOException e) {
-                    // Ignore ...
-                }
-            }
-        }
-        System.out.println("- Downloading from: " + url);
-
-        File outputFile = new File(baseDirectory.getAbsolutePath(), MAVEN_WRAPPER_JAR_PATH);
-        if(!outputFile.getParentFile().exists()) {
-            if(!outputFile.getParentFile().mkdirs()) {
-                System.out.println(
-                        "- ERROR creating output directory '" + outputFile.getParentFile().getAbsolutePath() + "'");
-            }
-        }
-        System.out.println("- Downloading to: " + outputFile.getAbsolutePath());
-        try {
-            downloadFileFromURL(url, outputFile);
-            System.out.println("Done");
-            System.exit(0);
-        } catch (Throwable e) {
-            System.out.println("- Error downloading");
-            e.printStackTrace();
-            System.exit(1);
-        }
-    }
-
-    private static void downloadFileFromURL(String urlString, File destination) throws Exception {
-        if (System.getenv("MVNW_USERNAME") != null && System.getenv("MVNW_PASSWORD") != null) {
-            String username = System.getenv("MVNW_USERNAME");
-            char[] password = System.getenv("MVNW_PASSWORD").toCharArray();
-            Authenticator.setDefault(new Authenticator() {
-                @Override
-                protected PasswordAuthentication getPasswordAuthentication() {
-                    return new PasswordAuthentication(username, password);
-                }
-            });
-        }
-        URL website = new URL(urlString);
-        ReadableByteChannel rbc;
-        rbc = Channels.newChannel(website.openStream());
-        FileOutputStream fos = new FileOutputStream(destination);
-        fos.getChannel().transferFrom(rbc, 0, Long.MAX_VALUE);
-        fos.close();
-        rbc.close();
-    }
-
-}
diff --git a/hexagonaljava/.mvn/wrapper/maven-wrapper.jar b/hexagonaljava/.mvn/wrapper/maven-wrapper.jar
deleted file mode 100644
index 2cc7d4a55c0cd0092912bf49ae38b3a9e3fd0054..0000000000000000000000000000000000000000
GIT binary patch
literal 0
HcmV?d00001

literal 50710
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
EfAhh=DF6Tf

diff --git a/hexagonaljava/.mvn/wrapper/maven-wrapper.properties b/hexagonaljava/.mvn/wrapper/maven-wrapper.properties
deleted file mode 100644
index 642d572ce9..0000000000
--- a/hexagonaljava/.mvn/wrapper/maven-wrapper.properties
+++ /dev/null
@@ -1,2 +0,0 @@
-distributionUrl=https://repo.maven.apache.org/maven2/org/apache/maven/apache-maven/3.6.3/apache-maven-3.6.3-bin.zip
-wrapperUrl=https://repo.maven.apache.org/maven2/io/takari/maven-wrapper/0.5.6/maven-wrapper-0.5.6.jar
diff --git a/hexagonaljava/mvnw b/hexagonaljava/mvnw
deleted file mode 100755
index a16b5431b4..0000000000
--- a/hexagonaljava/mvnw
+++ /dev/null
@@ -1,310 +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
-#
-#    https://www.apache.org/licenses/LICENSE-2.0
-#
-# Unless required by applicable law or agreed to in writing,
-# software distributed under the License is distributed on an
-# "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
-# KIND, either express or implied.  See the License for the
-# specific language governing permissions and limitations
-# under the License.
-# ----------------------------------------------------------------------------
-
-# ----------------------------------------------------------------------------
-# Maven Start Up Batch script
-#
-# Required ENV vars:
-# ------------------
-#   JAVA_HOME - location of a JDK home dir
-#
-# Optional ENV vars
-# -----------------
-#   M2_HOME - location of maven2's installed home dir
-#   MAVEN_OPTS - parameters passed to the Java VM when running Maven
-#     e.g. to debug Maven itself, use
-#       set MAVEN_OPTS=-Xdebug -Xrunjdwp:transport=dt_socket,server=y,suspend=y,address=8000
-#   MAVEN_SKIP_RC - flag to disable loading of mavenrc files
-# ----------------------------------------------------------------------------
-
-if [ -z "$MAVEN_SKIP_RC" ] ; then
-
-  if [ -f /etc/mavenrc ] ; then
-    . /etc/mavenrc
-  fi
-
-  if [ -f "$HOME/.mavenrc" ] ; then
-    . "$HOME/.mavenrc"
-  fi
-
-fi
-
-# OS specific support.  $var _must_ be set to either true or false.
-cygwin=false;
-darwin=false;
-mingw=false
-case "`uname`" in
-  CYGWIN*) cygwin=true ;;
-  MINGW*) mingw=true;;
-  Darwin*) darwin=true
-    # Use /usr/libexec/java_home if available, otherwise fall back to /Library/Java/Home
-    # See https://developer.apple.com/library/mac/qa/qa1170/_index.html
-    if [ -z "$JAVA_HOME" ]; then
-      if [ -x "/usr/libexec/java_home" ]; then
-        export JAVA_HOME="`/usr/libexec/java_home`"
-      else
-        export JAVA_HOME="/Library/Java/Home"
-      fi
-    fi
-    ;;
-esac
-
-if [ -z "$JAVA_HOME" ] ; then
-  if [ -r /etc/gentoo-release ] ; then
-    JAVA_HOME=`java-config --jre-home`
-  fi
-fi
-
-if [ -z "$M2_HOME" ] ; then
-  ## resolve links - $0 may be a link to maven's home
-  PRG="$0"
-
-  # need this for relative symlinks
-  while [ -h "$PRG" ] ; do
-    ls=`ls -ld "$PRG"`
-    link=`expr "$ls" : '.*-> \(.*\)$'`
-    if expr "$link" : '/.*' > /dev/null; then
-      PRG="$link"
-    else
-      PRG="`dirname "$PRG"`/$link"
-    fi
-  done
-
-  saveddir=`pwd`
-
-  M2_HOME=`dirname "$PRG"`/..
-
-  # make it fully qualified
-  M2_HOME=`cd "$M2_HOME" && pwd`
-
-  cd "$saveddir"
-  # echo Using m2 at $M2_HOME
-fi
-
-# For Cygwin, ensure paths are in UNIX format before anything is touched
-if $cygwin ; then
-  [ -n "$M2_HOME" ] &&
-    M2_HOME=`cygpath --unix "$M2_HOME"`
-  [ -n "$JAVA_HOME" ] &&
-    JAVA_HOME=`cygpath --unix "$JAVA_HOME"`
-  [ -n "$CLASSPATH" ] &&
-    CLASSPATH=`cygpath --path --unix "$CLASSPATH"`
-fi
-
-# For Mingw, ensure paths are in UNIX format before anything is touched
-if $mingw ; then
-  [ -n "$M2_HOME" ] &&
-    M2_HOME="`(cd "$M2_HOME"; pwd)`"
-  [ -n "$JAVA_HOME" ] &&
-    JAVA_HOME="`(cd "$JAVA_HOME"; pwd)`"
-fi
-
-if [ -z "$JAVA_HOME" ]; then
-  javaExecutable="`which javac`"
-  if [ -n "$javaExecutable" ] && ! [ "`expr \"$javaExecutable\" : '\([^ ]*\)'`" = "no" ]; then
-    # readlink(1) is not available as standard on Solaris 10.
-    readLink=`which readlink`
-    if [ ! `expr "$readLink" : '\([^ ]*\)'` = "no" ]; then
-      if $darwin ; then
-        javaHome="`dirname \"$javaExecutable\"`"
-        javaExecutable="`cd \"$javaHome\" && pwd -P`/javac"
-      else
-        javaExecutable="`readlink -f \"$javaExecutable\"`"
-      fi
-      javaHome="`dirname \"$javaExecutable\"`"
-      javaHome=`expr "$javaHome" : '\(.*\)/bin'`
-      JAVA_HOME="$javaHome"
-      export JAVA_HOME
-    fi
-  fi
-fi
-
-if [ -z "$JAVACMD" ] ; then
-  if [ -n "$JAVA_HOME"  ] ; then
-    if [ -x "$JAVA_HOME/jre/sh/java" ] ; then
-      # IBM's JDK on AIX uses strange locations for the executables
-      JAVACMD="$JAVA_HOME/jre/sh/java"
-    else
-      JAVACMD="$JAVA_HOME/bin/java"
-    fi
-  else
-    JAVACMD="`which java`"
-  fi
-fi
-
-if [ ! -x "$JAVACMD" ] ; then
-  echo "Error: JAVA_HOME is not defined correctly." >&2
-  echo "  We cannot execute $JAVACMD" >&2
-  exit 1
-fi
-
-if [ -z "$JAVA_HOME" ] ; then
-  echo "Warning: JAVA_HOME environment variable is not set."
-fi
-
-CLASSWORLDS_LAUNCHER=org.codehaus.plexus.classworlds.launcher.Launcher
-
-# traverses directory structure from process work directory to filesystem root
-# first directory with .mvn subdirectory is considered project base directory
-find_maven_basedir() {
-
-  if [ -z "$1" ]
-  then
-    echo "Path not specified to find_maven_basedir"
-    return 1
-  fi
-
-  basedir="$1"
-  wdir="$1"
-  while [ "$wdir" != '/' ] ; do
-    if [ -d "$wdir"/.mvn ] ; then
-      basedir=$wdir
-      break
-    fi
-    # workaround for JBEAP-8937 (on Solaris 10/Sparc)
-    if [ -d "${wdir}" ]; then
-      wdir=`cd "$wdir/.."; pwd`
-    fi
-    # end of workaround
-  done
-  echo "${basedir}"
-}
-
-# concatenates all lines of a file
-concat_lines() {
-  if [ -f "$1" ]; then
-    echo "$(tr -s '\n' ' ' < "$1")"
-  fi
-}
-
-BASE_DIR=`find_maven_basedir "$(pwd)"`
-if [ -z "$BASE_DIR" ]; then
-  exit 1;
-fi
-
-##########################################################################################
-# Extension to allow automatically downloading the maven-wrapper.jar from Maven-central
-# This allows using the maven wrapper in projects that prohibit checking in binary data.
-##########################################################################################
-if [ -r "$BASE_DIR/.mvn/wrapper/maven-wrapper.jar" ]; then
-    if [ "$MVNW_VERBOSE" = true ]; then
-      echo "Found .mvn/wrapper/maven-wrapper.jar"
-    fi
-else
-    if [ "$MVNW_VERBOSE" = true ]; then
-      echo "Couldn't find .mvn/wrapper/maven-wrapper.jar, downloading it ..."
-    fi
-    if [ -n "$MVNW_REPOURL" ]; then
-      jarUrl="$MVNW_REPOURL/io/takari/maven-wrapper/0.5.6/maven-wrapper-0.5.6.jar"
-    else
-      jarUrl="https://repo.maven.apache.org/maven2/io/takari/maven-wrapper/0.5.6/maven-wrapper-0.5.6.jar"
-    fi
-    while IFS="=" read key value; do
-      case "$key" in (wrapperUrl) jarUrl="$value"; break ;;
-      esac
-    done < "$BASE_DIR/.mvn/wrapper/maven-wrapper.properties"
-    if [ "$MVNW_VERBOSE" = true ]; then
-      echo "Downloading from: $jarUrl"
-    fi
-    wrapperJarPath="$BASE_DIR/.mvn/wrapper/maven-wrapper.jar"
-    if $cygwin; then
-      wrapperJarPath=`cygpath --path --windows "$wrapperJarPath"`
-    fi
-
-    if command -v wget > /dev/null; then
-        if [ "$MVNW_VERBOSE" = true ]; then
-          echo "Found wget ... using wget"
-        fi
-        if [ -z "$MVNW_USERNAME" ] || [ -z "$MVNW_PASSWORD" ]; then
-            wget "$jarUrl" -O "$wrapperJarPath"
-        else
-            wget --http-user=$MVNW_USERNAME --http-password=$MVNW_PASSWORD "$jarUrl" -O "$wrapperJarPath"
-        fi
-    elif command -v curl > /dev/null; then
-        if [ "$MVNW_VERBOSE" = true ]; then
-          echo "Found curl ... using curl"
-        fi
-        if [ -z "$MVNW_USERNAME" ] || [ -z "$MVNW_PASSWORD" ]; then
-            curl -o "$wrapperJarPath" "$jarUrl" -f
-        else
-            curl --user $MVNW_USERNAME:$MVNW_PASSWORD -o "$wrapperJarPath" "$jarUrl" -f
-        fi
-
-    else
-        if [ "$MVNW_VERBOSE" = true ]; then
-          echo "Falling back to using Java to download"
-        fi
-        javaClass="$BASE_DIR/.mvn/wrapper/MavenWrapperDownloader.java"
-        # For Cygwin, switch paths to Windows format before running javac
-        if $cygwin; then
-          javaClass=`cygpath --path --windows "$javaClass"`
-        fi
-        if [ -e "$javaClass" ]; then
-            if [ ! -e "$BASE_DIR/.mvn/wrapper/MavenWrapperDownloader.class" ]; then
-                if [ "$MVNW_VERBOSE" = true ]; then
-                  echo " - Compiling MavenWrapperDownloader.java ..."
-                fi
-                # Compiling the Java class
-                ("$JAVA_HOME/bin/javac" "$javaClass")
-            fi
-            if [ -e "$BASE_DIR/.mvn/wrapper/MavenWrapperDownloader.class" ]; then
-                # Running the downloader
-                if [ "$MVNW_VERBOSE" = true ]; then
-                  echo " - Running MavenWrapperDownloader.java ..."
-                fi
-                ("$JAVA_HOME/bin/java" -cp .mvn/wrapper MavenWrapperDownloader "$MAVEN_PROJECTBASEDIR")
-            fi
-        fi
-    fi
-fi
-##########################################################################################
-# End of extension
-##########################################################################################
-
-export MAVEN_PROJECTBASEDIR=${MAVEN_BASEDIR:-"$BASE_DIR"}
-if [ "$MVNW_VERBOSE" = true ]; then
-  echo $MAVEN_PROJECTBASEDIR
-fi
-MAVEN_OPTS="$(concat_lines "$MAVEN_PROJECTBASEDIR/.mvn/jvm.config") $MAVEN_OPTS"
-
-# For Cygwin, switch paths to Windows format before running java
-if $cygwin; then
-  [ -n "$M2_HOME" ] &&
-    M2_HOME=`cygpath --path --windows "$M2_HOME"`
-  [ -n "$JAVA_HOME" ] &&
-    JAVA_HOME=`cygpath --path --windows "$JAVA_HOME"`
-  [ -n "$CLASSPATH" ] &&
-    CLASSPATH=`cygpath --path --windows "$CLASSPATH"`
-  [ -n "$MAVEN_PROJECTBASEDIR" ] &&
-    MAVEN_PROJECTBASEDIR=`cygpath --path --windows "$MAVEN_PROJECTBASEDIR"`
-fi
-
-# Provide a "standardized" way to retrieve the CLI args that will
-# work with both Windows and non-Windows executions.
-MAVEN_CMD_LINE_ARGS="$MAVEN_CONFIG $@"
-export MAVEN_CMD_LINE_ARGS
-
-WRAPPER_LAUNCHER=org.apache.maven.wrapper.MavenWrapperMain
-
-exec "$JAVACMD" \
-  $MAVEN_OPTS \
-  -classpath "$MAVEN_PROJECTBASEDIR/.mvn/wrapper/maven-wrapper.jar" \
-  "-Dmaven.home=${M2_HOME}" "-Dmaven.multiModuleProjectDirectory=${MAVEN_PROJECTBASEDIR}" \
-  ${WRAPPER_LAUNCHER} $MAVEN_CONFIG "$@"
diff --git a/hexagonaljava/mvnw.cmd b/hexagonaljava/mvnw.cmd
deleted file mode 100644
index c8d43372c9..0000000000
--- a/hexagonaljava/mvnw.cmd
+++ /dev/null
@@ -1,182 +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    https://www.apache.org/licenses/LICENSE-2.0
-@REM
-@REM Unless required by applicable law or agreed to in writing,
-@REM software distributed under the License is distributed on an
-@REM "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
-@REM KIND, either express or implied.  See the License for the
-@REM specific language governing permissions and limitations
-@REM under the License.
-@REM ----------------------------------------------------------------------------
-
-@REM ----------------------------------------------------------------------------
-@REM Maven Start Up Batch script
-@REM
-@REM Required ENV vars:
-@REM JAVA_HOME - location of a JDK home dir
-@REM
-@REM Optional ENV vars
-@REM M2_HOME - location of maven2's installed home dir
-@REM MAVEN_BATCH_ECHO - set to 'on' to enable the echoing of the batch commands
-@REM MAVEN_BATCH_PAUSE - set to 'on' to wait for a keystroke before ending
-@REM MAVEN_OPTS - parameters passed to the Java VM when running Maven
-@REM     e.g. to debug Maven itself, use
-@REM set MAVEN_OPTS=-Xdebug -Xrunjdwp:transport=dt_socket,server=y,suspend=y,address=8000
-@REM MAVEN_SKIP_RC - flag to disable loading of mavenrc files
-@REM ----------------------------------------------------------------------------
-
-@REM Begin all REM lines with '@' in case MAVEN_BATCH_ECHO is 'on'
-@echo off
-@REM set title of command window
-title %0
-@REM enable echoing by setting MAVEN_BATCH_ECHO to 'on'
-@if "%MAVEN_BATCH_ECHO%" == "on"  echo %MAVEN_BATCH_ECHO%
-
-@REM set %HOME% to equivalent of $HOME
-if "%HOME%" == "" (set "HOME=%HOMEDRIVE%%HOMEPATH%")
-
-@REM Execute a user defined script before this one
-if not "%MAVEN_SKIP_RC%" == "" goto skipRcPre
-@REM check for pre script, once with legacy .bat ending and once with .cmd ending
-if exist "%HOME%\mavenrc_pre.bat" call "%HOME%\mavenrc_pre.bat"
-if exist "%HOME%\mavenrc_pre.cmd" call "%HOME%\mavenrc_pre.cmd"
-:skipRcPre
-
-@setlocal
-
-set ERROR_CODE=0
-
-@REM To isolate internal variables from possible post scripts, we use another setlocal
-@setlocal
-
-@REM ==== START VALIDATION ====
-if not "%JAVA_HOME%" == "" goto OkJHome
-
-echo.
-echo Error: JAVA_HOME not found in your environment. >&2
-echo Please set the JAVA_HOME variable in your environment to match the >&2
-echo location of your Java installation. >&2
-echo.
-goto error
-
-:OkJHome
-if exist "%JAVA_HOME%\bin\java.exe" goto init
-
-echo.
-echo Error: JAVA_HOME is set to an invalid directory. >&2
-echo JAVA_HOME = "%JAVA_HOME%" >&2
-echo Please set the JAVA_HOME variable in your environment to match the >&2
-echo location of your Java installation. >&2
-echo.
-goto error
-
-@REM ==== END VALIDATION ====
-
-:init
-
-@REM Find the project base dir, i.e. the directory that contains the folder ".mvn".
-@REM Fallback to current working directory if not found.
-
-set MAVEN_PROJECTBASEDIR=%MAVEN_BASEDIR%
-IF NOT "%MAVEN_PROJECTBASEDIR%"=="" goto endDetectBaseDir
-
-set EXEC_DIR=%CD%
-set WDIR=%EXEC_DIR%
-:findBaseDir
-IF EXIST "%WDIR%"\.mvn goto baseDirFound
-cd ..
-IF "%WDIR%"=="%CD%" goto baseDirNotFound
-set WDIR=%CD%
-goto findBaseDir
-
-:baseDirFound
-set MAVEN_PROJECTBASEDIR=%WDIR%
-cd "%EXEC_DIR%"
-goto endDetectBaseDir
-
-:baseDirNotFound
-set MAVEN_PROJECTBASEDIR=%EXEC_DIR%
-cd "%EXEC_DIR%"
-
-:endDetectBaseDir
-
-IF NOT EXIST "%MAVEN_PROJECTBASEDIR%\.mvn\jvm.config" goto endReadAdditionalConfig
-
-@setlocal EnableExtensions EnableDelayedExpansion
-for /F "usebackq delims=" %%a in ("%MAVEN_PROJECTBASEDIR%\.mvn\jvm.config") do set JVM_CONFIG_MAVEN_PROPS=!JVM_CONFIG_MAVEN_PROPS! %%a
-@endlocal & set JVM_CONFIG_MAVEN_PROPS=%JVM_CONFIG_MAVEN_PROPS%
-
-:endReadAdditionalConfig
-
-SET MAVEN_JAVA_EXE="%JAVA_HOME%\bin\java.exe"
-set WRAPPER_JAR="%MAVEN_PROJECTBASEDIR%\.mvn\wrapper\maven-wrapper.jar"
-set WRAPPER_LAUNCHER=org.apache.maven.wrapper.MavenWrapperMain
-
-set DOWNLOAD_URL="https://repo.maven.apache.org/maven2/io/takari/maven-wrapper/0.5.6/maven-wrapper-0.5.6.jar"
-
-FOR /F "tokens=1,2 delims==" %%A IN ("%MAVEN_PROJECTBASEDIR%\.mvn\wrapper\maven-wrapper.properties") DO (
-    IF "%%A"=="wrapperUrl" SET DOWNLOAD_URL=%%B
-)
-
-@REM Extension to allow automatically downloading the maven-wrapper.jar from Maven-central
-@REM This allows using the maven wrapper in projects that prohibit checking in binary data.
-if exist %WRAPPER_JAR% (
-    if "%MVNW_VERBOSE%" == "true" (
-        echo Found %WRAPPER_JAR%
-    )
-) else (
-    if not "%MVNW_REPOURL%" == "" (
-        SET DOWNLOAD_URL="%MVNW_REPOURL%/io/takari/maven-wrapper/0.5.6/maven-wrapper-0.5.6.jar"
-    )
-    if "%MVNW_VERBOSE%" == "true" (
-        echo Couldn't find %WRAPPER_JAR%, downloading it ...
-        echo Downloading from: %DOWNLOAD_URL%
-    )
-
-    powershell -Command "&{"^
-		"$webclient = new-object System.Net.WebClient;"^
-		"if (-not ([string]::IsNullOrEmpty('%MVNW_USERNAME%') -and [string]::IsNullOrEmpty('%MVNW_PASSWORD%'))) {"^
-		"$webclient.Credentials = new-object System.Net.NetworkCredential('%MVNW_USERNAME%', '%MVNW_PASSWORD%');"^
-		"}"^
-		"[Net.ServicePointManager]::SecurityProtocol = [Net.SecurityProtocolType]::Tls12; $webclient.DownloadFile('%DOWNLOAD_URL%', '%WRAPPER_JAR%')"^
-		"}"
-    if "%MVNW_VERBOSE%" == "true" (
-        echo Finished downloading %WRAPPER_JAR%
-    )
-)
-@REM End of extension
-
-@REM Provide a "standardized" way to retrieve the CLI args that will
-@REM work with both Windows and non-Windows executions.
-set MAVEN_CMD_LINE_ARGS=%*
-
-%MAVEN_JAVA_EXE% %JVM_CONFIG_MAVEN_PROPS% %MAVEN_OPTS% %MAVEN_DEBUG_OPTS% -classpath %WRAPPER_JAR% "-Dmaven.multiModuleProjectDirectory=%MAVEN_PROJECTBASEDIR%" %WRAPPER_LAUNCHER% %MAVEN_CONFIG% %*
-if ERRORLEVEL 1 goto error
-goto end
-
-:error
-set ERROR_CODE=1
-
-:end
-@endlocal & set ERROR_CODE=%ERROR_CODE%
-
-if not "%MAVEN_SKIP_RC%" == "" goto skipRcPost
-@REM check for post script, once with legacy .bat ending and once with .cmd ending
-if exist "%HOME%\mavenrc_post.bat" call "%HOME%\mavenrc_post.bat"
-if exist "%HOME%\mavenrc_post.cmd" call "%HOME%\mavenrc_post.cmd"
-:skipRcPost
-
-@REM pause the script if MAVEN_BATCH_PAUSE is set to 'on'
-if "%MAVEN_BATCH_PAUSE%" == "on" pause
-
-if "%MAVEN_TERMINATE_CMD%" == "on" exit %ERROR_CODE%
-
-exit /B %ERROR_CODE%
diff --git a/hexagonaljava/src/main/java/com/baeldung/hexagonaljava/HexagonaljavaApplication.java b/hexagonaljava/src/main/java/com/baeldung/hexagonaljava/HexagonaljavaApplication.java
index 603f8297d1..89bcfb6510 100644
--- a/hexagonaljava/src/main/java/com/baeldung/hexagonaljava/HexagonaljavaApplication.java
+++ b/hexagonaljava/src/main/java/com/baeldung/hexagonaljava/HexagonaljavaApplication.java
@@ -9,5 +9,4 @@ public class HexagonaljavaApplication {
     public static void main(String[] args) {
         SpringApplication.run(HexagonaljavaApplication.class, args);
     }
-
 }
diff --git a/hexagonaljava/src/main/java/com/baeldung/hexagonaljava/controller/StudentResultController.java b/hexagonaljava/src/main/java/com/baeldung/hexagonaljava/controller/StudentResultController.java
index 7db6117f83..7a5ba70c51 100644
--- a/hexagonaljava/src/main/java/com/baeldung/hexagonaljava/controller/StudentResultController.java
+++ b/hexagonaljava/src/main/java/com/baeldung/hexagonaljava/controller/StudentResultController.java
@@ -25,5 +25,4 @@ public class StudentResultController {
     public Double getTotalMarks(@PathVariable Integer id) {
         return studentResultService.getTotalMarks(id);
     }
-
 }
diff --git a/hexagonaljava/src/main/java/com/baeldung/hexagonaljava/entity/Student.java b/hexagonaljava/src/main/java/com/baeldung/hexagonaljava/entity/Student.java
index ef721e6eda..040faa03a7 100644
--- a/hexagonaljava/src/main/java/com/baeldung/hexagonaljava/entity/Student.java
+++ b/hexagonaljava/src/main/java/com/baeldung/hexagonaljava/entity/Student.java
@@ -33,5 +33,4 @@ public class Student {
     public void setMarks(Map<String, Double> marks) {
         this.marks = marks;
     }
-
 }
diff --git a/hexagonaljava/src/main/java/com/baeldung/hexagonaljava/repository/StudentResultJdbcRepoImpl.java b/hexagonaljava/src/main/java/com/baeldung/hexagonaljava/repository/StudentResultJdbcRepoImpl.java
index 1d347346a2..541c70d757 100644
--- a/hexagonaljava/src/main/java/com/baeldung/hexagonaljava/repository/StudentResultJdbcRepoImpl.java
+++ b/hexagonaljava/src/main/java/com/baeldung/hexagonaljava/repository/StudentResultJdbcRepoImpl.java
@@ -24,21 +24,15 @@ public class StudentResultJdbcRepoImpl implements StudentResultRepo {
 
     @Override
     public void save(Student student) {
-
         jdbcTemplate.update("insert into student (id, name) " + "values(?,  ?)", new Object[] { student.getId(), student.getName() });
         insertResult(student);
-
     }
 
     public void insertResult(Student student) {
-
         String insertQuery = "insert into " + "studentresult " + "(subject,marks,id) " + "values " + "(?,?,?)";
-
         for (final Map.Entry<String, Double> entry : student.getMarks()
-            .entrySet()) {
-
+          .entrySet()) {
             this.jdbcTemplate.batchUpdate(insertQuery, new BatchPreparedStatementSetter() {
-
                 @Override
                 public void setValues(final PreparedStatement ps, final int i) throws SQLException {
 
@@ -49,22 +43,19 @@ public class StudentResultJdbcRepoImpl implements StudentResultRepo {
 
                 public int getBatchSize() {
                     return student.getMarks()
-                        .size();
+                      .size();
                 }
             });
         }
-
     }
 
     @Override
     public Student getStudent(Integer id) {
-
         String selectQuery = "select * from ( select * from student where id = ? ) s left join studentresult on s.id = studentresult.id";
         Student student = new Student();
         jdbcTemplate.query(selectQuery, new Object[] { id }, new RowCallbackHandler() {
             public void processRow(ResultSet rs) throws SQLException {
                 while (rs.next()) {
-
                     if (student.getId() == null) {
                         student.setId(rs.getInt("id"));
                         student.setName(rs.getString("name"));
@@ -73,12 +64,10 @@ public class StudentResultJdbcRepoImpl implements StudentResultRepo {
                     String subject = rs.getString("subject");
                     Double marks = rs.getDouble("marks");
                     student.getMarks()
-                        .put(subject, marks);
-
+                      .put(subject, marks);
                 }
             }
         });
         return student;
     }
-
 }
diff --git a/hexagonaljava/src/main/java/com/baeldung/hexagonaljava/repository/StudentResultRepo.java b/hexagonaljava/src/main/java/com/baeldung/hexagonaljava/repository/StudentResultRepo.java
index 1ee4e2b9e5..96cf105600 100644
--- a/hexagonaljava/src/main/java/com/baeldung/hexagonaljava/repository/StudentResultRepo.java
+++ b/hexagonaljava/src/main/java/com/baeldung/hexagonaljava/repository/StudentResultRepo.java
@@ -7,5 +7,4 @@ public interface StudentResultRepo {
     void save(Student student);
 
     Student getStudent(Integer id);
-
 }
diff --git a/hexagonaljava/src/main/java/com/baeldung/hexagonaljava/repository/StudentResultRepoImpl.java b/hexagonaljava/src/main/java/com/baeldung/hexagonaljava/repository/StudentResultRepoImpl.java
index 6c94aa0083..46fd37a5f2 100644
--- a/hexagonaljava/src/main/java/com/baeldung/hexagonaljava/repository/StudentResultRepoImpl.java
+++ b/hexagonaljava/src/main/java/com/baeldung/hexagonaljava/repository/StudentResultRepoImpl.java
@@ -15,12 +15,10 @@ public class StudentResultRepoImpl implements StudentResultRepo {
     @Override
     public void save(Student student) {
         studentsMap.put(student.getId(), student);
-
     }
 
     @Override
     public Student getStudent(Integer id) {
         return studentsMap.get(id);
     }
-
 }
diff --git a/hexagonaljava/src/main/java/com/baeldung/hexagonaljava/service/StudentResultService.java b/hexagonaljava/src/main/java/com/baeldung/hexagonaljava/service/StudentResultService.java
index d77ac5dca8..91a25f3809 100644
--- a/hexagonaljava/src/main/java/com/baeldung/hexagonaljava/service/StudentResultService.java
+++ b/hexagonaljava/src/main/java/com/baeldung/hexagonaljava/service/StudentResultService.java
@@ -4,8 +4,7 @@ import com.baeldung.hexagonaljava.entity.Student;
 
 public interface StudentResultService {
 
-    public void save(Student student);
-
-    public Double getTotalMarks(Integer id);
+    void save(Student student);
 
+    Double getTotalMarks(Integer id);
 }
diff --git a/hexagonaljava/src/main/java/com/baeldung/hexagonaljava/service/StudentResultServiceImpl.java b/hexagonaljava/src/main/java/com/baeldung/hexagonaljava/service/StudentResultServiceImpl.java
index d0b53e79f6..f8c163fdf4 100644
--- a/hexagonaljava/src/main/java/com/baeldung/hexagonaljava/service/StudentResultServiceImpl.java
+++ b/hexagonaljava/src/main/java/com/baeldung/hexagonaljava/service/StudentResultServiceImpl.java
@@ -15,7 +15,6 @@ public class StudentResultServiceImpl implements StudentResultService {
     @Override
     public void save(Student student) {
         studentResultRepo.save(student);
-
     }
 
     @Override
@@ -23,10 +22,9 @@ public class StudentResultServiceImpl implements StudentResultService {
         Student student = studentResultRepo.getStudent(id);
         double totalMarks = 0;
         for (double marks : student.getMarks()
-            .values()) {
+          .values()) {
             totalMarks += marks;
         }
         return totalMarks;
     }
-
 }
diff --git a/hexagonaljava/src/main/resources/schema.sql b/hexagonaljava/src/main/resources/schema.sql
index 4dab9fbb1f..40ba01ec02 100644
--- a/hexagonaljava/src/main/resources/schema.sql
+++ b/hexagonaljava/src/main/resources/schema.sql
@@ -8,4 +8,4 @@ subject VARCHAR(250) NOT NULL,
 marks NUMERIC(8,2),
 id VARCHAR(250),
 FOREIGN KEY (id) references STUDENT(id)
-);
\ No newline at end of file
+);

From 8e7655f0b8ebabfaf7e4ddba28ef9c5da611c9e9 Mon Sep 17 00:00:00 2001
From: Ankur Gupta <ankur.gupta@jda.com>
Date: Fri, 27 Mar 2020 00:43:33 +0530
Subject: [PATCH 003/156] Removing unnecessary lines

---
 .../hexagonaljava/repository/StudentResultJdbcRepoImpl.java      | 1 -
 .../baeldung/hexagonaljava/HexagonaljavaApplicationTests.java    | 1 -
 2 files changed, 2 deletions(-)

diff --git a/hexagonaljava/src/main/java/com/baeldung/hexagonaljava/repository/StudentResultJdbcRepoImpl.java b/hexagonaljava/src/main/java/com/baeldung/hexagonaljava/repository/StudentResultJdbcRepoImpl.java
index 541c70d757..7b970462e3 100644
--- a/hexagonaljava/src/main/java/com/baeldung/hexagonaljava/repository/StudentResultJdbcRepoImpl.java
+++ b/hexagonaljava/src/main/java/com/baeldung/hexagonaljava/repository/StudentResultJdbcRepoImpl.java
@@ -35,7 +35,6 @@ public class StudentResultJdbcRepoImpl implements StudentResultRepo {
             this.jdbcTemplate.batchUpdate(insertQuery, new BatchPreparedStatementSetter() {
                 @Override
                 public void setValues(final PreparedStatement ps, final int i) throws SQLException {
-
                     ps.setString(1, entry.getKey());
                     ps.setDouble(2, entry.getValue());
                     ps.setInt(3, student.getId());
diff --git a/hexagonaljava/src/test/java/com/baeldung/hexagonaljava/HexagonaljavaApplicationTests.java b/hexagonaljava/src/test/java/com/baeldung/hexagonaljava/HexagonaljavaApplicationTests.java
index c61c51f7b2..eed2f7e6a3 100644
--- a/hexagonaljava/src/test/java/com/baeldung/hexagonaljava/HexagonaljavaApplicationTests.java
+++ b/hexagonaljava/src/test/java/com/baeldung/hexagonaljava/HexagonaljavaApplicationTests.java
@@ -9,5 +9,4 @@ class HexagonaljavaApplicationTests {
 	@Test
 	void contextLoads() {
 	}
-
 }

From a9ab80c75ebcc997e93119a4e95626eb5e33a31a Mon Sep 17 00:00:00 2001
From: Ankur Gupta <ankur.gupta@jda.com>
Date: Fri, 10 Apr 2020 03:57:55 +0530
Subject: [PATCH 004/156] Example code for using Multiple Cache Manager in
 SpringBoot

---
 .../HexagonaljavaApplication.java             | 12 ----
 .../controller/StudentResultController.java   | 28 --------
 .../hexagonaljava/entity/Student.java         | 36 ----------
 .../repository/StudentResultJdbcRepoImpl.java | 72 -------------------
 .../repository/StudentResultRepo.java         | 10 ---
 .../repository/StudentResultRepoImpl.java     | 24 -------
 .../service/StudentResultService.java         | 10 ---
 .../service/StudentResultServiceImpl.java     | 30 --------
 hexagonaljava/src/main/resources/schema.sql   | 11 ---
 .../pom.xml                                   | 41 ++++++-----
 .../MultiplecachemanagerApplication.java      | 45 ++++++++++++
 .../bo/CustomerDetailBO.java                  | 28 ++++++++
 .../bo/OrderDetailBO.java                     | 25 +++++++
 .../config/MultipleCacheResolver.java         | 38 ++++++++++
 .../MultipleCacheManagerController.java       | 43 +++++++++++
 .../multiplecachemanager/entity/Customer.java | 24 +++++++
 .../multiplecachemanager/entity/Item.java     | 34 +++++++++
 .../multiplecachemanager/entity/Order.java    | 44 ++++++++++++
 .../repository/CustomerDetailRepository.java  | 49 +++++++++++++
 .../repository/OrderDetailRepository.java     | 53 ++++++++++++++
 .../src/main/resources/application.properties |  7 +-
 .../src/main/resources/data.sql               |  7 ++
 .../src/main/resources/schema.sql             | 19 +++++
 .../MultiplecachemanagerApplicationTests.java |  5 +-
 24 files changed, 443 insertions(+), 252 deletions(-)
 delete mode 100644 hexagonaljava/src/main/java/com/baeldung/hexagonaljava/HexagonaljavaApplication.java
 delete mode 100644 hexagonaljava/src/main/java/com/baeldung/hexagonaljava/controller/StudentResultController.java
 delete mode 100644 hexagonaljava/src/main/java/com/baeldung/hexagonaljava/entity/Student.java
 delete mode 100644 hexagonaljava/src/main/java/com/baeldung/hexagonaljava/repository/StudentResultJdbcRepoImpl.java
 delete mode 100644 hexagonaljava/src/main/java/com/baeldung/hexagonaljava/repository/StudentResultRepo.java
 delete mode 100644 hexagonaljava/src/main/java/com/baeldung/hexagonaljava/repository/StudentResultRepoImpl.java
 delete mode 100644 hexagonaljava/src/main/java/com/baeldung/hexagonaljava/service/StudentResultService.java
 delete mode 100644 hexagonaljava/src/main/java/com/baeldung/hexagonaljava/service/StudentResultServiceImpl.java
 delete mode 100644 hexagonaljava/src/main/resources/schema.sql
 rename {hexagonaljava => multiplecachemanager}/pom.xml (64%)
 create mode 100644 multiplecachemanager/src/main/java/com/baeldung/multiplecachemanager/MultiplecachemanagerApplication.java
 create mode 100644 multiplecachemanager/src/main/java/com/baeldung/multiplecachemanager/bo/CustomerDetailBO.java
 create mode 100644 multiplecachemanager/src/main/java/com/baeldung/multiplecachemanager/bo/OrderDetailBO.java
 create mode 100644 multiplecachemanager/src/main/java/com/baeldung/multiplecachemanager/config/MultipleCacheResolver.java
 create mode 100644 multiplecachemanager/src/main/java/com/baeldung/multiplecachemanager/controller/MultipleCacheManagerController.java
 create mode 100644 multiplecachemanager/src/main/java/com/baeldung/multiplecachemanager/entity/Customer.java
 create mode 100644 multiplecachemanager/src/main/java/com/baeldung/multiplecachemanager/entity/Item.java
 create mode 100644 multiplecachemanager/src/main/java/com/baeldung/multiplecachemanager/entity/Order.java
 create mode 100644 multiplecachemanager/src/main/java/com/baeldung/multiplecachemanager/repository/CustomerDetailRepository.java
 create mode 100644 multiplecachemanager/src/main/java/com/baeldung/multiplecachemanager/repository/OrderDetailRepository.java
 rename {hexagonaljava => multiplecachemanager}/src/main/resources/application.properties (56%)
 create mode 100644 multiplecachemanager/src/main/resources/data.sql
 create mode 100644 multiplecachemanager/src/main/resources/schema.sql
 rename hexagonaljava/src/test/java/com/baeldung/hexagonaljava/HexagonaljavaApplicationTests.java => multiplecachemanager/src/test/java/com/baeldung/multiplecachemanager/MultiplecachemanagerApplicationTests.java (62%)

diff --git a/hexagonaljava/src/main/java/com/baeldung/hexagonaljava/HexagonaljavaApplication.java b/hexagonaljava/src/main/java/com/baeldung/hexagonaljava/HexagonaljavaApplication.java
deleted file mode 100644
index 89bcfb6510..0000000000
--- a/hexagonaljava/src/main/java/com/baeldung/hexagonaljava/HexagonaljavaApplication.java
+++ /dev/null
@@ -1,12 +0,0 @@
-package com.baeldung.hexagonaljava;
-
-import org.springframework.boot.SpringApplication;
-import org.springframework.boot.autoconfigure.SpringBootApplication;
-
-@SpringBootApplication
-public class HexagonaljavaApplication {
-
-    public static void main(String[] args) {
-        SpringApplication.run(HexagonaljavaApplication.class, args);
-    }
-}
diff --git a/hexagonaljava/src/main/java/com/baeldung/hexagonaljava/controller/StudentResultController.java b/hexagonaljava/src/main/java/com/baeldung/hexagonaljava/controller/StudentResultController.java
deleted file mode 100644
index 7a5ba70c51..0000000000
--- a/hexagonaljava/src/main/java/com/baeldung/hexagonaljava/controller/StudentResultController.java
+++ /dev/null
@@ -1,28 +0,0 @@
-package com.baeldung.hexagonaljava.controller;
-
-import org.springframework.beans.factory.annotation.Autowired;
-import org.springframework.web.bind.annotation.GetMapping;
-import org.springframework.web.bind.annotation.PathVariable;
-import org.springframework.web.bind.annotation.PostMapping;
-import org.springframework.web.bind.annotation.RequestBody;
-import org.springframework.web.bind.annotation.RestController;
-
-import com.baeldung.hexagonaljava.entity.Student;
-import com.baeldung.hexagonaljava.service.StudentResultService;
-
-@RestController
-public class StudentResultController {
-
-    @Autowired
-    private StudentResultService studentResultService;
-
-    @PostMapping(value = "/save")
-    public void saveStudent(@RequestBody Student student) {
-        studentResultService.save(student);
-    }
-
-    @GetMapping(value = "/getTotalMarks/{id}")
-    public Double getTotalMarks(@PathVariable Integer id) {
-        return studentResultService.getTotalMarks(id);
-    }
-}
diff --git a/hexagonaljava/src/main/java/com/baeldung/hexagonaljava/entity/Student.java b/hexagonaljava/src/main/java/com/baeldung/hexagonaljava/entity/Student.java
deleted file mode 100644
index 040faa03a7..0000000000
--- a/hexagonaljava/src/main/java/com/baeldung/hexagonaljava/entity/Student.java
+++ /dev/null
@@ -1,36 +0,0 @@
-package com.baeldung.hexagonaljava.entity;
-
-import java.util.Map;
-
-public class Student {
-
-    private Integer id;
-
-    private String name;
-
-    private Map<String, Double> marks;
-
-    public Integer getId() {
-        return id;
-    }
-
-    public void setId(Integer id) {
-        this.id = id;
-    }
-
-    public String getName() {
-        return name;
-    }
-
-    public void setName(String name) {
-        this.name = name;
-    }
-
-    public Map<String, Double> getMarks() {
-        return marks;
-    }
-
-    public void setMarks(Map<String, Double> marks) {
-        this.marks = marks;
-    }
-}
diff --git a/hexagonaljava/src/main/java/com/baeldung/hexagonaljava/repository/StudentResultJdbcRepoImpl.java b/hexagonaljava/src/main/java/com/baeldung/hexagonaljava/repository/StudentResultJdbcRepoImpl.java
deleted file mode 100644
index 7b970462e3..0000000000
--- a/hexagonaljava/src/main/java/com/baeldung/hexagonaljava/repository/StudentResultJdbcRepoImpl.java
+++ /dev/null
@@ -1,72 +0,0 @@
-package com.baeldung.hexagonaljava.repository;
-
-import java.sql.PreparedStatement;
-import java.sql.ResultSet;
-import java.sql.SQLException;
-import java.util.HashMap;
-import java.util.Map;
-
-import org.springframework.beans.factory.annotation.Autowired;
-import org.springframework.context.annotation.Primary;
-import org.springframework.jdbc.core.BatchPreparedStatementSetter;
-import org.springframework.jdbc.core.JdbcTemplate;
-import org.springframework.jdbc.core.RowCallbackHandler;
-import org.springframework.stereotype.Component;
-
-import com.baeldung.hexagonaljava.entity.Student;
-
-@Primary
-@Component
-public class StudentResultJdbcRepoImpl implements StudentResultRepo {
-
-    @Autowired
-    JdbcTemplate jdbcTemplate;
-
-    @Override
-    public void save(Student student) {
-        jdbcTemplate.update("insert into student (id, name) " + "values(?,  ?)", new Object[] { student.getId(), student.getName() });
-        insertResult(student);
-    }
-
-    public void insertResult(Student student) {
-        String insertQuery = "insert into " + "studentresult " + "(subject,marks,id) " + "values " + "(?,?,?)";
-        for (final Map.Entry<String, Double> entry : student.getMarks()
-          .entrySet()) {
-            this.jdbcTemplate.batchUpdate(insertQuery, new BatchPreparedStatementSetter() {
-                @Override
-                public void setValues(final PreparedStatement ps, final int i) throws SQLException {
-                    ps.setString(1, entry.getKey());
-                    ps.setDouble(2, entry.getValue());
-                    ps.setInt(3, student.getId());
-                }
-
-                public int getBatchSize() {
-                    return student.getMarks()
-                      .size();
-                }
-            });
-        }
-    }
-
-    @Override
-    public Student getStudent(Integer id) {
-        String selectQuery = "select * from ( select * from student where id = ? ) s left join studentresult on s.id = studentresult.id";
-        Student student = new Student();
-        jdbcTemplate.query(selectQuery, new Object[] { id }, new RowCallbackHandler() {
-            public void processRow(ResultSet rs) throws SQLException {
-                while (rs.next()) {
-                    if (student.getId() == null) {
-                        student.setId(rs.getInt("id"));
-                        student.setName(rs.getString("name"));
-                        student.setMarks(new HashMap<String, Double>());
-                    }
-                    String subject = rs.getString("subject");
-                    Double marks = rs.getDouble("marks");
-                    student.getMarks()
-                      .put(subject, marks);
-                }
-            }
-        });
-        return student;
-    }
-}
diff --git a/hexagonaljava/src/main/java/com/baeldung/hexagonaljava/repository/StudentResultRepo.java b/hexagonaljava/src/main/java/com/baeldung/hexagonaljava/repository/StudentResultRepo.java
deleted file mode 100644
index 96cf105600..0000000000
--- a/hexagonaljava/src/main/java/com/baeldung/hexagonaljava/repository/StudentResultRepo.java
+++ /dev/null
@@ -1,10 +0,0 @@
-package com.baeldung.hexagonaljava.repository;
-
-import com.baeldung.hexagonaljava.entity.Student;
-
-public interface StudentResultRepo {
-
-    void save(Student student);
-
-    Student getStudent(Integer id);
-}
diff --git a/hexagonaljava/src/main/java/com/baeldung/hexagonaljava/repository/StudentResultRepoImpl.java b/hexagonaljava/src/main/java/com/baeldung/hexagonaljava/repository/StudentResultRepoImpl.java
deleted file mode 100644
index 46fd37a5f2..0000000000
--- a/hexagonaljava/src/main/java/com/baeldung/hexagonaljava/repository/StudentResultRepoImpl.java
+++ /dev/null
@@ -1,24 +0,0 @@
-package com.baeldung.hexagonaljava.repository;
-
-import java.util.HashMap;
-import java.util.Map;
-
-import org.springframework.stereotype.Repository;
-
-import com.baeldung.hexagonaljava.entity.Student;
-
-@Repository
-public class StudentResultRepoImpl implements StudentResultRepo {
-
-    private Map<Integer, Student> studentsMap = new HashMap<Integer, Student>();
-
-    @Override
-    public void save(Student student) {
-        studentsMap.put(student.getId(), student);
-    }
-
-    @Override
-    public Student getStudent(Integer id) {
-        return studentsMap.get(id);
-    }
-}
diff --git a/hexagonaljava/src/main/java/com/baeldung/hexagonaljava/service/StudentResultService.java b/hexagonaljava/src/main/java/com/baeldung/hexagonaljava/service/StudentResultService.java
deleted file mode 100644
index 91a25f3809..0000000000
--- a/hexagonaljava/src/main/java/com/baeldung/hexagonaljava/service/StudentResultService.java
+++ /dev/null
@@ -1,10 +0,0 @@
-package com.baeldung.hexagonaljava.service;
-
-import com.baeldung.hexagonaljava.entity.Student;
-
-public interface StudentResultService {
-
-    void save(Student student);
-
-    Double getTotalMarks(Integer id);
-}
diff --git a/hexagonaljava/src/main/java/com/baeldung/hexagonaljava/service/StudentResultServiceImpl.java b/hexagonaljava/src/main/java/com/baeldung/hexagonaljava/service/StudentResultServiceImpl.java
deleted file mode 100644
index f8c163fdf4..0000000000
--- a/hexagonaljava/src/main/java/com/baeldung/hexagonaljava/service/StudentResultServiceImpl.java
+++ /dev/null
@@ -1,30 +0,0 @@
-package com.baeldung.hexagonaljava.service;
-
-import org.springframework.beans.factory.annotation.Autowired;
-import org.springframework.stereotype.Component;
-
-import com.baeldung.hexagonaljava.entity.Student;
-import com.baeldung.hexagonaljava.repository.StudentResultRepo;
-
-@Component
-public class StudentResultServiceImpl implements StudentResultService {
-
-    @Autowired
-    private StudentResultRepo studentResultRepo;
-
-    @Override
-    public void save(Student student) {
-        studentResultRepo.save(student);
-    }
-
-    @Override
-    public Double getTotalMarks(Integer id) {
-        Student student = studentResultRepo.getStudent(id);
-        double totalMarks = 0;
-        for (double marks : student.getMarks()
-          .values()) {
-            totalMarks += marks;
-        }
-        return totalMarks;
-    }
-}
diff --git a/hexagonaljava/src/main/resources/schema.sql b/hexagonaljava/src/main/resources/schema.sql
deleted file mode 100644
index 40ba01ec02..0000000000
--- a/hexagonaljava/src/main/resources/schema.sql
+++ /dev/null
@@ -1,11 +0,0 @@
-CREATE TABLE STUDENT (
-  id INT PRIMARY KEY,
-  name VARCHAR(250) NOT NULL
-);
-
-CREATE TABLE STUDENTRESULT(
-subject VARCHAR(250) NOT NULL,
-marks NUMERIC(8,2),
-id VARCHAR(250),
-FOREIGN KEY (id) references STUDENT(id)
-);
diff --git a/hexagonaljava/pom.xml b/multiplecachemanager/pom.xml
similarity index 64%
rename from hexagonaljava/pom.xml
rename to multiplecachemanager/pom.xml
index d9ca173888..22daf6e87d 100644
--- a/hexagonaljava/pom.xml
+++ b/multiplecachemanager/pom.xml
@@ -5,25 +5,45 @@
 	<parent>
 		<groupId>org.springframework.boot</groupId>
 		<artifactId>spring-boot-starter-parent</artifactId>
-		<version>2.2.5.RELEASE</version>
+		<version>2.2.6.RELEASE</version>
 		<relativePath/> <!-- lookup parent from repository -->
 	</parent>
-	<groupId>com.baeldung.</groupId>
-	<artifactId>hexagonaljava</artifactId>
+	<groupId>com.baeldung</groupId>
+	<artifactId>multiplecachemanager</artifactId>
 	<version>0.0.1-SNAPSHOT</version>
-	<name>hexagonaljava</name>
-	<description>Demo project for Spring Boot</description>
+	<name>multiplecachemanager</name>
+	<description>sample project for configuring multiple cache managers</description>
 
 	<properties>
 		<java.version>1.8</java.version>
 	</properties>
 
 	<dependencies>
+		<dependency>
+			<groupId>org.springframework.boot</groupId>
+			<artifactId>spring-boot-starter-jdbc</artifactId>
+		</dependency>
 		<dependency>
 			<groupId>org.springframework.boot</groupId>
 			<artifactId>spring-boot-starter-web</artifactId>
 		</dependency>
 
+		<dependency>
+			<groupId>com.h2database</groupId>
+			<artifactId>h2</artifactId>
+			<scope>runtime</scope>
+		</dependency>
+		
+		<dependency>
+    		<groupId>org.springframework.boot</groupId>
+    		<artifactId>spring-boot-starter-cache</artifactId>
+		</dependency>
+		
+		<dependency>
+    		<groupId>com.github.ben-manes.caffeine</groupId>
+    		<artifactId>caffeine</artifactId>
+    	</dependency>
+
 		<dependency>
 			<groupId>org.springframework.boot</groupId>
 			<artifactId>spring-boot-starter-test</artifactId>
@@ -35,17 +55,6 @@
 				</exclusion>
 			</exclusions>
 		</dependency>
-		
-		<dependency>
-   		 	<groupId>org.springframework.boot</groupId>
-    	 	<artifactId>spring-boot-starter-jdbc</artifactId>
-		</dependency>
-
-		<dependency>
-    		<groupId>com.h2database</groupId>
-   			<artifactId>h2</artifactId>
-    		<scope>runtime</scope>
-		</dependency>
 	</dependencies>
 
 	<build>
diff --git a/multiplecachemanager/src/main/java/com/baeldung/multiplecachemanager/MultiplecachemanagerApplication.java b/multiplecachemanager/src/main/java/com/baeldung/multiplecachemanager/MultiplecachemanagerApplication.java
new file mode 100644
index 0000000000..4c7efc98bd
--- /dev/null
+++ b/multiplecachemanager/src/main/java/com/baeldung/multiplecachemanager/MultiplecachemanagerApplication.java
@@ -0,0 +1,45 @@
+package com.baeldung.multiplecachemanager;
+
+import org.springframework.boot.SpringApplication;
+import org.springframework.boot.autoconfigure.SpringBootApplication;
+import org.springframework.cache.CacheManager;
+import org.springframework.cache.annotation.CachingConfigurerSupport;
+import org.springframework.cache.annotation.EnableCaching;
+import org.springframework.cache.caffeine.CaffeineCacheManager;
+import org.springframework.cache.concurrent.ConcurrentMapCacheManager;
+import org.springframework.cache.interceptor.CacheResolver;
+import org.springframework.context.annotation.Bean;
+
+import com.baeldung.multiplecachemanager.config.MultipleCacheResolver;
+import com.github.benmanes.caffeine.cache.Caffeine;
+
+@SpringBootApplication
+@EnableCaching
+public class MultiplecachemanagerApplication extends CachingConfigurerSupport {
+
+    public static void main(String[] args) {
+        SpringApplication.run(MultiplecachemanagerApplication.class, args);
+    }
+
+    @Bean
+    // @Primary
+    public CacheManager cacheManager() {
+        CaffeineCacheManager cacheManager = new CaffeineCacheManager("customers", "orders");
+        cacheManager.setCaffeine(Caffeine.newBuilder()
+            .initialCapacity(200)
+            .maximumSize(500)
+            .weakKeys()
+            .recordStats());
+        return cacheManager;
+    }
+
+    @Bean
+    public CacheManager alternateCacheManager() {
+        return new ConcurrentMapCacheManager("customerOrders", "orderprice");
+    }
+
+    @Bean
+    public CacheResolver cacheResolver() {
+        return new MultipleCacheResolver(alternateCacheManager(), cacheManager());
+    }
+}
diff --git a/multiplecachemanager/src/main/java/com/baeldung/multiplecachemanager/bo/CustomerDetailBO.java b/multiplecachemanager/src/main/java/com/baeldung/multiplecachemanager/bo/CustomerDetailBO.java
new file mode 100644
index 0000000000..3da4c23e28
--- /dev/null
+++ b/multiplecachemanager/src/main/java/com/baeldung/multiplecachemanager/bo/CustomerDetailBO.java
@@ -0,0 +1,28 @@
+package com.baeldung.multiplecachemanager.bo;
+
+import java.util.List;
+
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.cache.annotation.Cacheable;
+import org.springframework.stereotype.Component;
+
+import com.baeldung.multiplecachemanager.entity.Customer;
+import com.baeldung.multiplecachemanager.entity.Order;
+import com.baeldung.multiplecachemanager.repository.CustomerDetailRepository;
+
+@Component
+public class CustomerDetailBO {
+
+    @Autowired
+    private CustomerDetailRepository customerDetailRepository;
+
+    @Cacheable(cacheNames = "customers")
+    public Customer getCustomerDetail(Integer customerId) {
+        return customerDetailRepository.getCustomerDetail(customerId);
+    }
+
+    @Cacheable(cacheNames = "customerOrders", cacheManager = "alternateCacheManager")
+    public List<Order> getCustomerOrders(Integer customerId) {
+        return customerDetailRepository.getCustomerOrders(customerId);
+    }
+}
diff --git a/multiplecachemanager/src/main/java/com/baeldung/multiplecachemanager/bo/OrderDetailBO.java b/multiplecachemanager/src/main/java/com/baeldung/multiplecachemanager/bo/OrderDetailBO.java
new file mode 100644
index 0000000000..cb9e301fcb
--- /dev/null
+++ b/multiplecachemanager/src/main/java/com/baeldung/multiplecachemanager/bo/OrderDetailBO.java
@@ -0,0 +1,25 @@
+package com.baeldung.multiplecachemanager.bo;
+
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.cache.annotation.Cacheable;
+import org.springframework.stereotype.Component;
+
+import com.baeldung.multiplecachemanager.entity.Order;
+import com.baeldung.multiplecachemanager.repository.OrderDetailRepository;
+
+@Component
+public class OrderDetailBO {
+
+    @Autowired
+    private OrderDetailRepository orderDetailRepository;
+
+    @Cacheable(cacheNames = "orders", cacheResolver = "cacheResolver")
+    public Order getOrderDetail(Integer orderId) {
+        return orderDetailRepository.getOrderDetail(orderId);
+    }
+
+    @Cacheable(cacheNames = "orderprice", cacheResolver = "cacheResolver")
+    public double getOrderPrice(Integer orderId) {
+        return orderDetailRepository.getOrderPrice(orderId);
+    }
+}
diff --git a/multiplecachemanager/src/main/java/com/baeldung/multiplecachemanager/config/MultipleCacheResolver.java b/multiplecachemanager/src/main/java/com/baeldung/multiplecachemanager/config/MultipleCacheResolver.java
new file mode 100644
index 0000000000..1bd869d98e
--- /dev/null
+++ b/multiplecachemanager/src/main/java/com/baeldung/multiplecachemanager/config/MultipleCacheResolver.java
@@ -0,0 +1,38 @@
+package com.baeldung.multiplecachemanager.config;
+
+import java.util.ArrayList;
+import java.util.Collection;
+
+import org.springframework.cache.Cache;
+import org.springframework.cache.CacheManager;
+import org.springframework.cache.interceptor.CacheOperationInvocationContext;
+import org.springframework.cache.interceptor.CacheResolver;
+
+public class MultipleCacheResolver implements CacheResolver {
+
+    private final CacheManager simpleCacheManager;
+
+    private final CacheManager caffeineCacheManager;
+
+    private static final String ORDER_CACHE = "orders";
+
+    private static final String ORDER_PRICE_CACHE = "orderprice";
+
+    public MultipleCacheResolver(CacheManager simpleCacheManager, CacheManager caffeineCacheManager) {
+        this.simpleCacheManager = simpleCacheManager;
+        this.caffeineCacheManager = caffeineCacheManager;
+
+    }
+
+    @Override
+    public Collection<? extends Cache> resolveCaches(CacheOperationInvocationContext<?> context) {
+        Collection<Cache> caches = new ArrayList<Cache>();
+        if ("getOrderDetail".equals(context.getMethod()
+            .getName())) {
+            caches.add(caffeineCacheManager.getCache(ORDER_CACHE));
+        } else {
+            caches.add(simpleCacheManager.getCache(ORDER_PRICE_CACHE));
+        }
+        return caches;
+    }
+}
diff --git a/multiplecachemanager/src/main/java/com/baeldung/multiplecachemanager/controller/MultipleCacheManagerController.java b/multiplecachemanager/src/main/java/com/baeldung/multiplecachemanager/controller/MultipleCacheManagerController.java
new file mode 100644
index 0000000000..17a73bb27a
--- /dev/null
+++ b/multiplecachemanager/src/main/java/com/baeldung/multiplecachemanager/controller/MultipleCacheManagerController.java
@@ -0,0 +1,43 @@
+package com.baeldung.multiplecachemanager.controller;
+
+import java.util.List;
+
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.web.bind.annotation.GetMapping;
+import org.springframework.web.bind.annotation.PathVariable;
+import org.springframework.web.bind.annotation.RestController;
+
+import com.baeldung.multiplecachemanager.bo.CustomerDetailBO;
+import com.baeldung.multiplecachemanager.bo.OrderDetailBO;
+import com.baeldung.multiplecachemanager.entity.Customer;
+import com.baeldung.multiplecachemanager.entity.Order;
+
+@RestController
+public class MultipleCacheManagerController {
+
+    @Autowired
+    private CustomerDetailBO customerDetailBO;
+
+    @Autowired
+    private OrderDetailBO orderDetailBO;
+
+    @GetMapping(value = "/getCustomer/{customerid}")
+    public Customer getCustomer(@PathVariable Integer customerid) {
+        return customerDetailBO.getCustomerDetail(customerid);
+    }
+
+    @GetMapping(value = "/getCustomerOrders/{customerid}")
+    public List<Order> getCustomerOrders(@PathVariable Integer customerid) {
+        return customerDetailBO.getCustomerOrders(customerid);
+    }
+
+    @GetMapping(value = "/getOrder/{orderid}")
+    public Order getOrder(@PathVariable Integer orderid) {
+        return orderDetailBO.getOrderDetail(orderid);
+    }
+
+    @GetMapping(value = "/getOrderPrice/{orderid}")
+    public double getOrderPrice(@PathVariable Integer orderid) {
+        return orderDetailBO.getOrderPrice(orderid);
+    }
+}
diff --git a/multiplecachemanager/src/main/java/com/baeldung/multiplecachemanager/entity/Customer.java b/multiplecachemanager/src/main/java/com/baeldung/multiplecachemanager/entity/Customer.java
new file mode 100644
index 0000000000..cfae15f4e9
--- /dev/null
+++ b/multiplecachemanager/src/main/java/com/baeldung/multiplecachemanager/entity/Customer.java
@@ -0,0 +1,24 @@
+package com.baeldung.multiplecachemanager.entity;
+
+public class Customer {
+
+    private int customerId;
+
+    private String customerName;
+
+    public int getCustomerId() {
+        return customerId;
+    }
+
+    public void setCustomerId(int customerId) {
+        this.customerId = customerId;
+    }
+
+    public String getCustomerName() {
+        return customerName;
+    }
+
+    public void setCustomerName(String customerName) {
+        this.customerName = customerName;
+    }
+}
diff --git a/multiplecachemanager/src/main/java/com/baeldung/multiplecachemanager/entity/Item.java b/multiplecachemanager/src/main/java/com/baeldung/multiplecachemanager/entity/Item.java
new file mode 100644
index 0000000000..4131464981
--- /dev/null
+++ b/multiplecachemanager/src/main/java/com/baeldung/multiplecachemanager/entity/Item.java
@@ -0,0 +1,34 @@
+package com.baeldung.multiplecachemanager.entity;
+
+public class Item {
+
+    private int itemId;
+
+    private String itemDesc;
+
+    private double itemPrice;
+
+    public int getItemId() {
+        return itemId;
+    }
+
+    public void setItemId(int itemId) {
+        this.itemId = itemId;
+    }
+
+    public String getItemDesc() {
+        return itemDesc;
+    }
+
+    public void setItemDesc(String itemDesc) {
+        this.itemDesc = itemDesc;
+    }
+
+    public double getItemPrice() {
+        return itemPrice;
+    }
+
+    public void setItemPrice(double itemPrice) {
+        this.itemPrice = itemPrice;
+    }
+}
diff --git a/multiplecachemanager/src/main/java/com/baeldung/multiplecachemanager/entity/Order.java b/multiplecachemanager/src/main/java/com/baeldung/multiplecachemanager/entity/Order.java
new file mode 100644
index 0000000000..15da60d6ea
--- /dev/null
+++ b/multiplecachemanager/src/main/java/com/baeldung/multiplecachemanager/entity/Order.java
@@ -0,0 +1,44 @@
+package com.baeldung.multiplecachemanager.entity;
+
+public class Order {
+
+    private int orderId;
+
+    private int itemId;
+
+    private int quantity;
+
+    private int customerId;
+
+    public int getOrderId() {
+        return orderId;
+    }
+
+    public void setOrderId(int orderId) {
+        this.orderId = orderId;
+    }
+
+    public int getItemId() {
+        return itemId;
+    }
+
+    public void setItemId(int itemId) {
+        this.itemId = itemId;
+    }
+
+    public int getQuantity() {
+        return quantity;
+    }
+
+    public void setQuantity(int quantity) {
+        this.quantity = quantity;
+    }
+
+    public int getCustomerId() {
+        return customerId;
+    }
+
+    public void setCustomerId(int customerId) {
+        this.customerId = customerId;
+    }
+}
diff --git a/multiplecachemanager/src/main/java/com/baeldung/multiplecachemanager/repository/CustomerDetailRepository.java b/multiplecachemanager/src/main/java/com/baeldung/multiplecachemanager/repository/CustomerDetailRepository.java
new file mode 100644
index 0000000000..aab011427d
--- /dev/null
+++ b/multiplecachemanager/src/main/java/com/baeldung/multiplecachemanager/repository/CustomerDetailRepository.java
@@ -0,0 +1,49 @@
+package com.baeldung.multiplecachemanager.repository;
+
+import java.sql.ResultSet;
+import java.sql.SQLException;
+import java.util.ArrayList;
+import java.util.List;
+
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.jdbc.core.JdbcTemplate;
+import org.springframework.jdbc.core.RowCallbackHandler;
+import org.springframework.stereotype.Repository;
+
+import com.baeldung.multiplecachemanager.entity.Customer;
+import com.baeldung.multiplecachemanager.entity.Order;
+
+@Repository
+public class CustomerDetailRepository {
+
+    @Autowired
+    private JdbcTemplate jdbcTemplate;
+
+    public Customer getCustomerDetail(Integer customerId) {
+        String customerQuery = "select * from customer where customerid = ? ";
+        Customer customer = new Customer();
+        jdbcTemplate.query(customerQuery, new Object[] { customerId }, new RowCallbackHandler() {
+            public void processRow(ResultSet rs) throws SQLException {
+                customer.setCustomerId(rs.getInt("customerid"));
+                customer.setCustomerName(rs.getString("customername"));
+            }
+        });
+        return customer;
+    }
+
+    public List<Order> getCustomerOrders(Integer customerId) {
+        String customerOrderQuery = "select * from orderdetail where customerid = ? ";
+        List<Order> orders = new ArrayList<Order>();
+        jdbcTemplate.query(customerOrderQuery, new Object[] { customerId }, new RowCallbackHandler() {
+            public void processRow(ResultSet rs) throws SQLException {
+                Order order = new Order();
+                order.setCustomerId(rs.getInt("customerid"));
+                order.setItemId(rs.getInt("orderid"));
+                order.setOrderId(rs.getInt("orderid"));
+                order.setQuantity(rs.getInt("quantity"));
+                orders.add(order);
+            }
+        });
+        return orders;
+    }
+}
diff --git a/multiplecachemanager/src/main/java/com/baeldung/multiplecachemanager/repository/OrderDetailRepository.java b/multiplecachemanager/src/main/java/com/baeldung/multiplecachemanager/repository/OrderDetailRepository.java
new file mode 100644
index 0000000000..58c0968e48
--- /dev/null
+++ b/multiplecachemanager/src/main/java/com/baeldung/multiplecachemanager/repository/OrderDetailRepository.java
@@ -0,0 +1,53 @@
+package com.baeldung.multiplecachemanager.repository;
+
+import java.sql.ResultSet;
+import java.sql.SQLException;
+
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.jdbc.core.JdbcTemplate;
+import org.springframework.jdbc.core.RowCallbackHandler;
+import org.springframework.stereotype.Repository;
+
+import com.baeldung.multiplecachemanager.entity.Item;
+import com.baeldung.multiplecachemanager.entity.Order;
+
+@Repository
+public class OrderDetailRepository {
+
+    @Autowired
+    private JdbcTemplate jdbcTemplate;
+
+    public Order getOrderDetail(Integer orderId) {
+        String orderDetailQuery = "select * from orderdetail where orderid = ? ";
+        Order order = new Order();
+        jdbcTemplate.query(orderDetailQuery, new Object[] { orderId }, new RowCallbackHandler() {
+            public void processRow(ResultSet rs) throws SQLException {
+                order.setCustomerId(rs.getInt("customerid"));
+                order.setOrderId(rs.getInt("orderid"));
+                order.setItemId(rs.getInt("itemid"));
+                order.setQuantity(rs.getInt("quantity"));
+            }
+        });
+        return order;
+    }
+
+    public double getOrderPrice(Integer orderId) {
+
+        String orderItemJoinQuery = "select * from ( select * from orderdetail where orderid = ? ) o left join item on o.itemid = ITEM.itemid";
+        Order order = new Order();
+        Item item = new Item();
+
+        jdbcTemplate.query(orderItemJoinQuery, new Object[] { orderId }, new RowCallbackHandler() {
+            public void processRow(ResultSet rs) throws SQLException {
+                order.setCustomerId(rs.getInt("customerid"));
+                order.setOrderId(rs.getInt("orderid"));
+                order.setItemId(rs.getInt("itemid"));
+                order.setQuantity(rs.getInt("quantity"));
+                item.setItemDesc("itemdesc");
+                item.setItemId(rs.getInt("itemid"));
+                item.setItemPrice(rs.getDouble("price"));
+            }
+        });
+        return order.getQuantity() * item.getItemPrice();
+    }
+}
diff --git a/hexagonaljava/src/main/resources/application.properties b/multiplecachemanager/src/main/resources/application.properties
similarity index 56%
rename from hexagonaljava/src/main/resources/application.properties
rename to multiplecachemanager/src/main/resources/application.properties
index 5952b7eb01..53a3ac93b4 100644
--- a/hexagonaljava/src/main/resources/application.properties
+++ b/multiplecachemanager/src/main/resources/application.properties
@@ -2,4 +2,9 @@ spring.datasource.url=jdbc:h2:mem:testdb
 spring.datasource.driverClassName=org.h2.Driver
 spring.datasource.username=sa
 spring.datasource.password=
-spring.h2.console.enabled=false
+#spring.h2.console.enabled=false
+
+
+# Enabling H2 Console
+spring.h2.console.enabled=true
+spring.h2.console.path=/h2
diff --git a/multiplecachemanager/src/main/resources/data.sql b/multiplecachemanager/src/main/resources/data.sql
new file mode 100644
index 0000000000..e4165ae71f
--- /dev/null
+++ b/multiplecachemanager/src/main/resources/data.sql
@@ -0,0 +1,7 @@
+INSERT INTO CUSTOMER VALUES(1001,'BAELDUNG');
+
+INSERT INTO ITEM VALUES(10001,'ITEM1',50.0);
+INSERT INTO ITEM VALUES(10002,'ITEM2',100.0);
+
+INSERT INTO ORDERDETAIL VALUES(300001,1001,10001,2);
+INSERT INTO ORDERDETAIL VALUES(300002,1001,10002,5);
\ No newline at end of file
diff --git a/multiplecachemanager/src/main/resources/schema.sql b/multiplecachemanager/src/main/resources/schema.sql
new file mode 100644
index 0000000000..5862499bc0
--- /dev/null
+++ b/multiplecachemanager/src/main/resources/schema.sql
@@ -0,0 +1,19 @@
+CREATE TABLE CUSTOMER(
+  CUSTOMERID INT PRIMARY KEY,
+  CUSTOMERNAME VARCHAR(250) NOT NULL
+);
+
+CREATE TABLE ITEM(
+ITEMID INT PRIMARY KEY,
+ITEMDESC VARCHAR(250),
+PRICE DOUBLE
+);
+
+CREATE TABLE ORDERDETAIL(
+ORDERID INT PRIMARY KEY,
+CUSTOMERID INT NOT NULL,
+ITEMID INT NOT NULL,
+QUANTITY INT,
+FOREIGN KEY (customerid) references CUSTOMER(customerid),
+FOREIGN KEY (itemid) references ITEM(itemid)
+);
\ No newline at end of file
diff --git a/hexagonaljava/src/test/java/com/baeldung/hexagonaljava/HexagonaljavaApplicationTests.java b/multiplecachemanager/src/test/java/com/baeldung/multiplecachemanager/MultiplecachemanagerApplicationTests.java
similarity index 62%
rename from hexagonaljava/src/test/java/com/baeldung/hexagonaljava/HexagonaljavaApplicationTests.java
rename to multiplecachemanager/src/test/java/com/baeldung/multiplecachemanager/MultiplecachemanagerApplicationTests.java
index eed2f7e6a3..adf69309f2 100644
--- a/hexagonaljava/src/test/java/com/baeldung/hexagonaljava/HexagonaljavaApplicationTests.java
+++ b/multiplecachemanager/src/test/java/com/baeldung/multiplecachemanager/MultiplecachemanagerApplicationTests.java
@@ -1,12 +1,13 @@
-package com.baeldung.hexagonaljava;
+package com.baeldung.multiplecachemanager;
 
 import org.junit.jupiter.api.Test;
 import org.springframework.boot.test.context.SpringBootTest;
 
 @SpringBootTest
-class HexagonaljavaApplicationTests {
+class MultiplecachemanagerApplicationTests {
 
 	@Test
 	void contextLoads() {
 	}
+
 }

From a00e511eb3b0eb13244894f1a622782d273fe049 Mon Sep 17 00:00:00 2001
From: Ankur Gupta <ankur.gupta@jda.com>
Date: Sat, 18 Apr 2020 03:47:11 +0530
Subject: [PATCH 005/156] BAEL-3963:Using multiple cache managers in Spring

---
 spring-caching/pom.xml                        | 17 +++++
 .../caching/boot/CacheApplication.java        |  4 ++
 .../bo/CustomerDetailBO.java                  | 28 ++++++++
 .../bo/OrderDetailBO.java                     | 25 ++++++++
 .../config/MultipleCacheManagerConfig.java    | 40 ++++++++++++
 .../config/MultipleCacheResolver.java         | 38 +++++++++++
 .../MultipleCacheManagerController.java       | 43 +++++++++++++
 .../multiplecachemanager/entity/Customer.java | 24 +++++++
 .../multiplecachemanager/entity/Item.java     | 34 ++++++++++
 .../multiplecachemanager/entity/Order.java    | 44 +++++++++++++
 .../repository/CustomerDetailRepository.java  | 49 ++++++++++++++
 .../repository/OrderDetailRepository.java     | 53 +++++++++++++++
 .../src/main/resources/application.properties | 10 +++
 spring-caching/src/main/resources/data.sql    |  7 ++
 spring-caching/src/main/resources/schema.sql  | 19 ++++++
 ...ltipleCacheManagerIntegrationUnitTest.java | 64 +++++++++++++++++++
 16 files changed, 499 insertions(+)
 create mode 100644 spring-caching/src/main/java/com/baeldung/multiplecachemanager/bo/CustomerDetailBO.java
 create mode 100644 spring-caching/src/main/java/com/baeldung/multiplecachemanager/bo/OrderDetailBO.java
 create mode 100644 spring-caching/src/main/java/com/baeldung/multiplecachemanager/config/MultipleCacheManagerConfig.java
 create mode 100644 spring-caching/src/main/java/com/baeldung/multiplecachemanager/config/MultipleCacheResolver.java
 create mode 100644 spring-caching/src/main/java/com/baeldung/multiplecachemanager/controller/MultipleCacheManagerController.java
 create mode 100644 spring-caching/src/main/java/com/baeldung/multiplecachemanager/entity/Customer.java
 create mode 100644 spring-caching/src/main/java/com/baeldung/multiplecachemanager/entity/Item.java
 create mode 100644 spring-caching/src/main/java/com/baeldung/multiplecachemanager/entity/Order.java
 create mode 100644 spring-caching/src/main/java/com/baeldung/multiplecachemanager/repository/CustomerDetailRepository.java
 create mode 100644 spring-caching/src/main/java/com/baeldung/multiplecachemanager/repository/OrderDetailRepository.java
 create mode 100644 spring-caching/src/main/resources/application.properties
 create mode 100644 spring-caching/src/main/resources/data.sql
 create mode 100644 spring-caching/src/main/resources/schema.sql
 create mode 100644 spring-caching/src/test/java/com/baeldung/multiplecachemanager/MultipleCacheManagerIntegrationUnitTest.java

diff --git a/spring-caching/pom.xml b/spring-caching/pom.xml
index d33f24de1f..11dd9a8873 100644
--- a/spring-caching/pom.xml
+++ b/spring-caching/pom.xml
@@ -15,6 +15,10 @@
     </parent>
 
     <dependencies>
+    	<dependency>
+			<groupId>org.springframework.boot</groupId>
+			<artifactId>spring-boot-starter-web</artifactId>
+		</dependency>
         <dependency>
             <groupId>org.springframework</groupId>
             <artifactId>spring-context</artifactId>
@@ -40,6 +44,19 @@
             <artifactId>spring-test</artifactId>
             <scope>test</scope>
         </dependency>
+        <dependency>
+    		<groupId>com.github.ben-manes.caffeine</groupId>
+    		<artifactId>caffeine</artifactId>
+    	</dependency>
+    	<dependency>
+			<groupId>com.h2database</groupId>
+			<artifactId>h2</artifactId>
+			<scope>runtime</scope>
+		</dependency>
+		<dependency>
+			<groupId>org.springframework.boot</groupId>
+			<artifactId>spring-boot-starter-jdbc</artifactId>
+		</dependency>
     </dependencies>
 
     <properties>
diff --git a/spring-caching/src/main/java/com/baeldung/caching/boot/CacheApplication.java b/spring-caching/src/main/java/com/baeldung/caching/boot/CacheApplication.java
index 714dc443e0..afa1d0ec99 100644
--- a/spring-caching/src/main/java/com/baeldung/caching/boot/CacheApplication.java
+++ b/spring-caching/src/main/java/com/baeldung/caching/boot/CacheApplication.java
@@ -3,9 +3,13 @@ package com.baeldung.caching.boot;
 import org.springframework.boot.SpringApplication;
 import org.springframework.boot.autoconfigure.SpringBootApplication;
 import org.springframework.cache.annotation.EnableCaching;
+//import org.springframework.context.annotation.ComponentScan;
 
 @SpringBootApplication
 @EnableCaching
+//to run any module like ehcache,caching or multiplecachemanager in local machine 
+//add it's package for ComponentScan like below
+//@ComponentScan("com.baeldung.multiplecachemanager")
 public class CacheApplication {
 
     public static void main(String[] args) {
diff --git a/spring-caching/src/main/java/com/baeldung/multiplecachemanager/bo/CustomerDetailBO.java b/spring-caching/src/main/java/com/baeldung/multiplecachemanager/bo/CustomerDetailBO.java
new file mode 100644
index 0000000000..3da4c23e28
--- /dev/null
+++ b/spring-caching/src/main/java/com/baeldung/multiplecachemanager/bo/CustomerDetailBO.java
@@ -0,0 +1,28 @@
+package com.baeldung.multiplecachemanager.bo;
+
+import java.util.List;
+
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.cache.annotation.Cacheable;
+import org.springframework.stereotype.Component;
+
+import com.baeldung.multiplecachemanager.entity.Customer;
+import com.baeldung.multiplecachemanager.entity.Order;
+import com.baeldung.multiplecachemanager.repository.CustomerDetailRepository;
+
+@Component
+public class CustomerDetailBO {
+
+    @Autowired
+    private CustomerDetailRepository customerDetailRepository;
+
+    @Cacheable(cacheNames = "customers")
+    public Customer getCustomerDetail(Integer customerId) {
+        return customerDetailRepository.getCustomerDetail(customerId);
+    }
+
+    @Cacheable(cacheNames = "customerOrders", cacheManager = "alternateCacheManager")
+    public List<Order> getCustomerOrders(Integer customerId) {
+        return customerDetailRepository.getCustomerOrders(customerId);
+    }
+}
diff --git a/spring-caching/src/main/java/com/baeldung/multiplecachemanager/bo/OrderDetailBO.java b/spring-caching/src/main/java/com/baeldung/multiplecachemanager/bo/OrderDetailBO.java
new file mode 100644
index 0000000000..390881167f
--- /dev/null
+++ b/spring-caching/src/main/java/com/baeldung/multiplecachemanager/bo/OrderDetailBO.java
@@ -0,0 +1,25 @@
+package com.baeldung.multiplecachemanager.bo;
+
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.cache.annotation.Cacheable;
+import org.springframework.stereotype.Component;
+
+import com.baeldung.multiplecachemanager.entity.Order;
+import com.baeldung.multiplecachemanager.repository.OrderDetailRepository;
+
+@Component
+public class OrderDetailBO {
+
+    @Autowired
+    private OrderDetailRepository orderDetailRepository;
+    
+    @Cacheable(cacheNames = "orders", cacheResolver = "cacheResolver")
+    public Order getOrderDetail(Integer orderId) {
+        return orderDetailRepository.getOrderDetail(orderId);
+    }
+
+    @Cacheable(cacheNames = "orderprice", cacheResolver = "cacheResolver")
+    public double getOrderPrice(Integer orderId) {
+        return orderDetailRepository.getOrderPrice(orderId);
+    }
+}
diff --git a/spring-caching/src/main/java/com/baeldung/multiplecachemanager/config/MultipleCacheManagerConfig.java b/spring-caching/src/main/java/com/baeldung/multiplecachemanager/config/MultipleCacheManagerConfig.java
new file mode 100644
index 0000000000..247a9b596b
--- /dev/null
+++ b/spring-caching/src/main/java/com/baeldung/multiplecachemanager/config/MultipleCacheManagerConfig.java
@@ -0,0 +1,40 @@
+package com.baeldung.multiplecachemanager.config;
+
+import org.springframework.cache.CacheManager;
+import org.springframework.cache.annotation.CachingConfigurerSupport;
+import org.springframework.cache.annotation.EnableCaching;
+import org.springframework.cache.caffeine.CaffeineCacheManager;
+import org.springframework.cache.concurrent.ConcurrentMapCacheManager;
+import org.springframework.cache.interceptor.CacheResolver;
+import org.springframework.context.annotation.Bean;
+import org.springframework.context.annotation.Configuration;
+//import org.springframework.context.annotation.Primary;
+
+import com.github.benmanes.caffeine.cache.Caffeine;
+
+@Configuration
+@EnableCaching
+public class MultipleCacheManagerConfig extends CachingConfigurerSupport {
+
+    @Bean
+    //@Primary
+    public CacheManager cacheManager() {
+        CaffeineCacheManager cacheManager = new CaffeineCacheManager("customers", "orders");
+        cacheManager.setCaffeine(Caffeine.newBuilder()
+            .initialCapacity(200)
+            .maximumSize(500)
+            .weakKeys()
+            .recordStats());
+        return cacheManager;
+    }
+
+    @Bean
+    public CacheManager alternateCacheManager() {
+        return new ConcurrentMapCacheManager("customerOrders", "orderprice");
+    }
+
+    @Bean
+    public CacheResolver cacheResolver() {
+        return new MultipleCacheResolver(alternateCacheManager(), cacheManager());
+    }
+}
diff --git a/spring-caching/src/main/java/com/baeldung/multiplecachemanager/config/MultipleCacheResolver.java b/spring-caching/src/main/java/com/baeldung/multiplecachemanager/config/MultipleCacheResolver.java
new file mode 100644
index 0000000000..1bd869d98e
--- /dev/null
+++ b/spring-caching/src/main/java/com/baeldung/multiplecachemanager/config/MultipleCacheResolver.java
@@ -0,0 +1,38 @@
+package com.baeldung.multiplecachemanager.config;
+
+import java.util.ArrayList;
+import java.util.Collection;
+
+import org.springframework.cache.Cache;
+import org.springframework.cache.CacheManager;
+import org.springframework.cache.interceptor.CacheOperationInvocationContext;
+import org.springframework.cache.interceptor.CacheResolver;
+
+public class MultipleCacheResolver implements CacheResolver {
+
+    private final CacheManager simpleCacheManager;
+
+    private final CacheManager caffeineCacheManager;
+
+    private static final String ORDER_CACHE = "orders";
+
+    private static final String ORDER_PRICE_CACHE = "orderprice";
+
+    public MultipleCacheResolver(CacheManager simpleCacheManager, CacheManager caffeineCacheManager) {
+        this.simpleCacheManager = simpleCacheManager;
+        this.caffeineCacheManager = caffeineCacheManager;
+
+    }
+
+    @Override
+    public Collection<? extends Cache> resolveCaches(CacheOperationInvocationContext<?> context) {
+        Collection<Cache> caches = new ArrayList<Cache>();
+        if ("getOrderDetail".equals(context.getMethod()
+            .getName())) {
+            caches.add(caffeineCacheManager.getCache(ORDER_CACHE));
+        } else {
+            caches.add(simpleCacheManager.getCache(ORDER_PRICE_CACHE));
+        }
+        return caches;
+    }
+}
diff --git a/spring-caching/src/main/java/com/baeldung/multiplecachemanager/controller/MultipleCacheManagerController.java b/spring-caching/src/main/java/com/baeldung/multiplecachemanager/controller/MultipleCacheManagerController.java
new file mode 100644
index 0000000000..17a73bb27a
--- /dev/null
+++ b/spring-caching/src/main/java/com/baeldung/multiplecachemanager/controller/MultipleCacheManagerController.java
@@ -0,0 +1,43 @@
+package com.baeldung.multiplecachemanager.controller;
+
+import java.util.List;
+
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.web.bind.annotation.GetMapping;
+import org.springframework.web.bind.annotation.PathVariable;
+import org.springframework.web.bind.annotation.RestController;
+
+import com.baeldung.multiplecachemanager.bo.CustomerDetailBO;
+import com.baeldung.multiplecachemanager.bo.OrderDetailBO;
+import com.baeldung.multiplecachemanager.entity.Customer;
+import com.baeldung.multiplecachemanager.entity.Order;
+
+@RestController
+public class MultipleCacheManagerController {
+
+    @Autowired
+    private CustomerDetailBO customerDetailBO;
+
+    @Autowired
+    private OrderDetailBO orderDetailBO;
+
+    @GetMapping(value = "/getCustomer/{customerid}")
+    public Customer getCustomer(@PathVariable Integer customerid) {
+        return customerDetailBO.getCustomerDetail(customerid);
+    }
+
+    @GetMapping(value = "/getCustomerOrders/{customerid}")
+    public List<Order> getCustomerOrders(@PathVariable Integer customerid) {
+        return customerDetailBO.getCustomerOrders(customerid);
+    }
+
+    @GetMapping(value = "/getOrder/{orderid}")
+    public Order getOrder(@PathVariable Integer orderid) {
+        return orderDetailBO.getOrderDetail(orderid);
+    }
+
+    @GetMapping(value = "/getOrderPrice/{orderid}")
+    public double getOrderPrice(@PathVariable Integer orderid) {
+        return orderDetailBO.getOrderPrice(orderid);
+    }
+}
diff --git a/spring-caching/src/main/java/com/baeldung/multiplecachemanager/entity/Customer.java b/spring-caching/src/main/java/com/baeldung/multiplecachemanager/entity/Customer.java
new file mode 100644
index 0000000000..cfae15f4e9
--- /dev/null
+++ b/spring-caching/src/main/java/com/baeldung/multiplecachemanager/entity/Customer.java
@@ -0,0 +1,24 @@
+package com.baeldung.multiplecachemanager.entity;
+
+public class Customer {
+
+    private int customerId;
+
+    private String customerName;
+
+    public int getCustomerId() {
+        return customerId;
+    }
+
+    public void setCustomerId(int customerId) {
+        this.customerId = customerId;
+    }
+
+    public String getCustomerName() {
+        return customerName;
+    }
+
+    public void setCustomerName(String customerName) {
+        this.customerName = customerName;
+    }
+}
diff --git a/spring-caching/src/main/java/com/baeldung/multiplecachemanager/entity/Item.java b/spring-caching/src/main/java/com/baeldung/multiplecachemanager/entity/Item.java
new file mode 100644
index 0000000000..4131464981
--- /dev/null
+++ b/spring-caching/src/main/java/com/baeldung/multiplecachemanager/entity/Item.java
@@ -0,0 +1,34 @@
+package com.baeldung.multiplecachemanager.entity;
+
+public class Item {
+
+    private int itemId;
+
+    private String itemDesc;
+
+    private double itemPrice;
+
+    public int getItemId() {
+        return itemId;
+    }
+
+    public void setItemId(int itemId) {
+        this.itemId = itemId;
+    }
+
+    public String getItemDesc() {
+        return itemDesc;
+    }
+
+    public void setItemDesc(String itemDesc) {
+        this.itemDesc = itemDesc;
+    }
+
+    public double getItemPrice() {
+        return itemPrice;
+    }
+
+    public void setItemPrice(double itemPrice) {
+        this.itemPrice = itemPrice;
+    }
+}
diff --git a/spring-caching/src/main/java/com/baeldung/multiplecachemanager/entity/Order.java b/spring-caching/src/main/java/com/baeldung/multiplecachemanager/entity/Order.java
new file mode 100644
index 0000000000..15da60d6ea
--- /dev/null
+++ b/spring-caching/src/main/java/com/baeldung/multiplecachemanager/entity/Order.java
@@ -0,0 +1,44 @@
+package com.baeldung.multiplecachemanager.entity;
+
+public class Order {
+
+    private int orderId;
+
+    private int itemId;
+
+    private int quantity;
+
+    private int customerId;
+
+    public int getOrderId() {
+        return orderId;
+    }
+
+    public void setOrderId(int orderId) {
+        this.orderId = orderId;
+    }
+
+    public int getItemId() {
+        return itemId;
+    }
+
+    public void setItemId(int itemId) {
+        this.itemId = itemId;
+    }
+
+    public int getQuantity() {
+        return quantity;
+    }
+
+    public void setQuantity(int quantity) {
+        this.quantity = quantity;
+    }
+
+    public int getCustomerId() {
+        return customerId;
+    }
+
+    public void setCustomerId(int customerId) {
+        this.customerId = customerId;
+    }
+}
diff --git a/spring-caching/src/main/java/com/baeldung/multiplecachemanager/repository/CustomerDetailRepository.java b/spring-caching/src/main/java/com/baeldung/multiplecachemanager/repository/CustomerDetailRepository.java
new file mode 100644
index 0000000000..aab011427d
--- /dev/null
+++ b/spring-caching/src/main/java/com/baeldung/multiplecachemanager/repository/CustomerDetailRepository.java
@@ -0,0 +1,49 @@
+package com.baeldung.multiplecachemanager.repository;
+
+import java.sql.ResultSet;
+import java.sql.SQLException;
+import java.util.ArrayList;
+import java.util.List;
+
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.jdbc.core.JdbcTemplate;
+import org.springframework.jdbc.core.RowCallbackHandler;
+import org.springframework.stereotype.Repository;
+
+import com.baeldung.multiplecachemanager.entity.Customer;
+import com.baeldung.multiplecachemanager.entity.Order;
+
+@Repository
+public class CustomerDetailRepository {
+
+    @Autowired
+    private JdbcTemplate jdbcTemplate;
+
+    public Customer getCustomerDetail(Integer customerId) {
+        String customerQuery = "select * from customer where customerid = ? ";
+        Customer customer = new Customer();
+        jdbcTemplate.query(customerQuery, new Object[] { customerId }, new RowCallbackHandler() {
+            public void processRow(ResultSet rs) throws SQLException {
+                customer.setCustomerId(rs.getInt("customerid"));
+                customer.setCustomerName(rs.getString("customername"));
+            }
+        });
+        return customer;
+    }
+
+    public List<Order> getCustomerOrders(Integer customerId) {
+        String customerOrderQuery = "select * from orderdetail where customerid = ? ";
+        List<Order> orders = new ArrayList<Order>();
+        jdbcTemplate.query(customerOrderQuery, new Object[] { customerId }, new RowCallbackHandler() {
+            public void processRow(ResultSet rs) throws SQLException {
+                Order order = new Order();
+                order.setCustomerId(rs.getInt("customerid"));
+                order.setItemId(rs.getInt("orderid"));
+                order.setOrderId(rs.getInt("orderid"));
+                order.setQuantity(rs.getInt("quantity"));
+                orders.add(order);
+            }
+        });
+        return orders;
+    }
+}
diff --git a/spring-caching/src/main/java/com/baeldung/multiplecachemanager/repository/OrderDetailRepository.java b/spring-caching/src/main/java/com/baeldung/multiplecachemanager/repository/OrderDetailRepository.java
new file mode 100644
index 0000000000..58c0968e48
--- /dev/null
+++ b/spring-caching/src/main/java/com/baeldung/multiplecachemanager/repository/OrderDetailRepository.java
@@ -0,0 +1,53 @@
+package com.baeldung.multiplecachemanager.repository;
+
+import java.sql.ResultSet;
+import java.sql.SQLException;
+
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.jdbc.core.JdbcTemplate;
+import org.springframework.jdbc.core.RowCallbackHandler;
+import org.springframework.stereotype.Repository;
+
+import com.baeldung.multiplecachemanager.entity.Item;
+import com.baeldung.multiplecachemanager.entity.Order;
+
+@Repository
+public class OrderDetailRepository {
+
+    @Autowired
+    private JdbcTemplate jdbcTemplate;
+
+    public Order getOrderDetail(Integer orderId) {
+        String orderDetailQuery = "select * from orderdetail where orderid = ? ";
+        Order order = new Order();
+        jdbcTemplate.query(orderDetailQuery, new Object[] { orderId }, new RowCallbackHandler() {
+            public void processRow(ResultSet rs) throws SQLException {
+                order.setCustomerId(rs.getInt("customerid"));
+                order.setOrderId(rs.getInt("orderid"));
+                order.setItemId(rs.getInt("itemid"));
+                order.setQuantity(rs.getInt("quantity"));
+            }
+        });
+        return order;
+    }
+
+    public double getOrderPrice(Integer orderId) {
+
+        String orderItemJoinQuery = "select * from ( select * from orderdetail where orderid = ? ) o left join item on o.itemid = ITEM.itemid";
+        Order order = new Order();
+        Item item = new Item();
+
+        jdbcTemplate.query(orderItemJoinQuery, new Object[] { orderId }, new RowCallbackHandler() {
+            public void processRow(ResultSet rs) throws SQLException {
+                order.setCustomerId(rs.getInt("customerid"));
+                order.setOrderId(rs.getInt("orderid"));
+                order.setItemId(rs.getInt("itemid"));
+                order.setQuantity(rs.getInt("quantity"));
+                item.setItemDesc("itemdesc");
+                item.setItemId(rs.getInt("itemid"));
+                item.setItemPrice(rs.getDouble("price"));
+            }
+        });
+        return order.getQuantity() * item.getItemPrice();
+    }
+}
diff --git a/spring-caching/src/main/resources/application.properties b/spring-caching/src/main/resources/application.properties
new file mode 100644
index 0000000000..53a3ac93b4
--- /dev/null
+++ b/spring-caching/src/main/resources/application.properties
@@ -0,0 +1,10 @@
+spring.datasource.url=jdbc:h2:mem:testdb
+spring.datasource.driverClassName=org.h2.Driver
+spring.datasource.username=sa
+spring.datasource.password=
+#spring.h2.console.enabled=false
+
+
+# Enabling H2 Console
+spring.h2.console.enabled=true
+spring.h2.console.path=/h2
diff --git a/spring-caching/src/main/resources/data.sql b/spring-caching/src/main/resources/data.sql
new file mode 100644
index 0000000000..e4165ae71f
--- /dev/null
+++ b/spring-caching/src/main/resources/data.sql
@@ -0,0 +1,7 @@
+INSERT INTO CUSTOMER VALUES(1001,'BAELDUNG');
+
+INSERT INTO ITEM VALUES(10001,'ITEM1',50.0);
+INSERT INTO ITEM VALUES(10002,'ITEM2',100.0);
+
+INSERT INTO ORDERDETAIL VALUES(300001,1001,10001,2);
+INSERT INTO ORDERDETAIL VALUES(300002,1001,10002,5);
\ No newline at end of file
diff --git a/spring-caching/src/main/resources/schema.sql b/spring-caching/src/main/resources/schema.sql
new file mode 100644
index 0000000000..5862499bc0
--- /dev/null
+++ b/spring-caching/src/main/resources/schema.sql
@@ -0,0 +1,19 @@
+CREATE TABLE CUSTOMER(
+  CUSTOMERID INT PRIMARY KEY,
+  CUSTOMERNAME VARCHAR(250) NOT NULL
+);
+
+CREATE TABLE ITEM(
+ITEMID INT PRIMARY KEY,
+ITEMDESC VARCHAR(250),
+PRICE DOUBLE
+);
+
+CREATE TABLE ORDERDETAIL(
+ORDERID INT PRIMARY KEY,
+CUSTOMERID INT NOT NULL,
+ITEMID INT NOT NULL,
+QUANTITY INT,
+FOREIGN KEY (customerid) references CUSTOMER(customerid),
+FOREIGN KEY (itemid) references ITEM(itemid)
+);
\ No newline at end of file
diff --git a/spring-caching/src/test/java/com/baeldung/multiplecachemanager/MultipleCacheManagerIntegrationUnitTest.java b/spring-caching/src/test/java/com/baeldung/multiplecachemanager/MultipleCacheManagerIntegrationUnitTest.java
new file mode 100644
index 0000000000..4bcbdb4d68
--- /dev/null
+++ b/spring-caching/src/test/java/com/baeldung/multiplecachemanager/MultipleCacheManagerIntegrationUnitTest.java
@@ -0,0 +1,64 @@
+package com.baeldung.multiplecachemanager;
+
+import org.junit.jupiter.api.Test;
+import org.mockito.Mockito;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.boot.autoconfigure.SpringBootApplication;
+import org.springframework.boot.test.context.SpringBootTest;
+import org.springframework.boot.test.mock.mockito.MockBean;
+import org.springframework.cache.Cache;
+import org.springframework.cache.CacheManager;
+import org.springframework.cache.caffeine.CaffeineCache;
+import org.springframework.util.Assert;
+
+import com.baeldung.multiplecachemanager.bo.OrderDetailBO;
+import com.baeldung.multiplecachemanager.entity.Order;
+import com.baeldung.multiplecachemanager.repository.OrderDetailRepository;
+
+@SpringBootApplication
+@SpringBootTest
+public class MultipleCacheManagerIntegrationUnitTest {
+
+    @MockBean
+    private OrderDetailRepository orderDetailRepository;
+
+    @Autowired
+    private OrderDetailBO orderDetailBO;
+
+    @Autowired
+    private CacheManager cacheManager;
+
+    @Autowired
+    private CacheManager alternateCacheManager;
+
+    @Test
+    public void whenCallGetOrderDetail_thenDataShouldBeInCaffieneCacheManager() {
+        Integer key = 30001;
+        cacheManager.getCache("orders")
+            .evict(key);
+        Order order = new Order();
+        order.setCustomerId(1001);
+        order.setItemId(10001);
+        order.setOrderId(30001);
+        order.setQuantity(2);
+        Mockito.when(orderDetailRepository.getOrderDetail(key))
+            .thenReturn(order);
+        orderDetailBO.getOrderDetail(key);
+        org.springframework.cache.caffeine.CaffeineCache cache = (CaffeineCache) cacheManager.getCache("orders");
+        Assert.notNull(cache.get(key)
+            .get(), "caffieneCache should have had the data");
+    }
+
+    @Test
+    public void whenCallGetOrderPrice_thenDataShouldBeInAlternateCacheManager() {
+        Integer key = 30001;
+        alternateCacheManager.getCache("orderprice")
+            .evict(key);
+        Mockito.when(orderDetailRepository.getOrderPrice(key))
+            .thenReturn(500.0);
+        orderDetailBO.getOrderPrice(key);
+        Cache cache = alternateCacheManager.getCache("orderprice");
+        Assert.notNull(cache.get(key)
+            .get(), "alternateCache should have had the data");
+    }
+}

From a6dc19343777ab7b6b2ecb6496b1ee7b1f027b19 Mon Sep 17 00:00:00 2001
From: Ankur Gupta <ankur.gupta@jda.com>
Date: Sat, 18 Apr 2020 03:52:29 +0530
Subject: [PATCH 006/156] removing new module created in last pull request

---
 multiplecachemanager/pom.xml                  | 69 -------------------
 .../MultiplecachemanagerApplication.java      | 45 ------------
 .../bo/CustomerDetailBO.java                  | 28 --------
 .../bo/OrderDetailBO.java                     | 25 -------
 .../config/MultipleCacheResolver.java         | 38 ----------
 .../MultipleCacheManagerController.java       | 43 ------------
 .../multiplecachemanager/entity/Customer.java | 24 -------
 .../multiplecachemanager/entity/Item.java     | 34 ---------
 .../multiplecachemanager/entity/Order.java    | 44 ------------
 .../repository/CustomerDetailRepository.java  | 49 -------------
 .../repository/OrderDetailRepository.java     | 53 --------------
 .../src/main/resources/application.properties | 10 ---
 .../src/main/resources/data.sql               |  7 --
 .../src/main/resources/schema.sql             | 19 -----
 .../MultiplecachemanagerApplicationTests.java | 13 ----
 15 files changed, 501 deletions(-)
 delete mode 100644 multiplecachemanager/pom.xml
 delete mode 100644 multiplecachemanager/src/main/java/com/baeldung/multiplecachemanager/MultiplecachemanagerApplication.java
 delete mode 100644 multiplecachemanager/src/main/java/com/baeldung/multiplecachemanager/bo/CustomerDetailBO.java
 delete mode 100644 multiplecachemanager/src/main/java/com/baeldung/multiplecachemanager/bo/OrderDetailBO.java
 delete mode 100644 multiplecachemanager/src/main/java/com/baeldung/multiplecachemanager/config/MultipleCacheResolver.java
 delete mode 100644 multiplecachemanager/src/main/java/com/baeldung/multiplecachemanager/controller/MultipleCacheManagerController.java
 delete mode 100644 multiplecachemanager/src/main/java/com/baeldung/multiplecachemanager/entity/Customer.java
 delete mode 100644 multiplecachemanager/src/main/java/com/baeldung/multiplecachemanager/entity/Item.java
 delete mode 100644 multiplecachemanager/src/main/java/com/baeldung/multiplecachemanager/entity/Order.java
 delete mode 100644 multiplecachemanager/src/main/java/com/baeldung/multiplecachemanager/repository/CustomerDetailRepository.java
 delete mode 100644 multiplecachemanager/src/main/java/com/baeldung/multiplecachemanager/repository/OrderDetailRepository.java
 delete mode 100644 multiplecachemanager/src/main/resources/application.properties
 delete mode 100644 multiplecachemanager/src/main/resources/data.sql
 delete mode 100644 multiplecachemanager/src/main/resources/schema.sql
 delete mode 100644 multiplecachemanager/src/test/java/com/baeldung/multiplecachemanager/MultiplecachemanagerApplicationTests.java

diff --git a/multiplecachemanager/pom.xml b/multiplecachemanager/pom.xml
deleted file mode 100644
index 22daf6e87d..0000000000
--- a/multiplecachemanager/pom.xml
+++ /dev/null
@@ -1,69 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
-	xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 https://maven.apache.org/xsd/maven-4.0.0.xsd">
-	<modelVersion>4.0.0</modelVersion>
-	<parent>
-		<groupId>org.springframework.boot</groupId>
-		<artifactId>spring-boot-starter-parent</artifactId>
-		<version>2.2.6.RELEASE</version>
-		<relativePath/> <!-- lookup parent from repository -->
-	</parent>
-	<groupId>com.baeldung</groupId>
-	<artifactId>multiplecachemanager</artifactId>
-	<version>0.0.1-SNAPSHOT</version>
-	<name>multiplecachemanager</name>
-	<description>sample project for configuring multiple cache managers</description>
-
-	<properties>
-		<java.version>1.8</java.version>
-	</properties>
-
-	<dependencies>
-		<dependency>
-			<groupId>org.springframework.boot</groupId>
-			<artifactId>spring-boot-starter-jdbc</artifactId>
-		</dependency>
-		<dependency>
-			<groupId>org.springframework.boot</groupId>
-			<artifactId>spring-boot-starter-web</artifactId>
-		</dependency>
-
-		<dependency>
-			<groupId>com.h2database</groupId>
-			<artifactId>h2</artifactId>
-			<scope>runtime</scope>
-		</dependency>
-		
-		<dependency>
-    		<groupId>org.springframework.boot</groupId>
-    		<artifactId>spring-boot-starter-cache</artifactId>
-		</dependency>
-		
-		<dependency>
-    		<groupId>com.github.ben-manes.caffeine</groupId>
-    		<artifactId>caffeine</artifactId>
-    	</dependency>
-
-		<dependency>
-			<groupId>org.springframework.boot</groupId>
-			<artifactId>spring-boot-starter-test</artifactId>
-			<scope>test</scope>
-			<exclusions>
-				<exclusion>
-					<groupId>org.junit.vintage</groupId>
-					<artifactId>junit-vintage-engine</artifactId>
-				</exclusion>
-			</exclusions>
-		</dependency>
-	</dependencies>
-
-	<build>
-		<plugins>
-			<plugin>
-				<groupId>org.springframework.boot</groupId>
-				<artifactId>spring-boot-maven-plugin</artifactId>
-			</plugin>
-		</plugins>
-	</build>
-
-</project>
diff --git a/multiplecachemanager/src/main/java/com/baeldung/multiplecachemanager/MultiplecachemanagerApplication.java b/multiplecachemanager/src/main/java/com/baeldung/multiplecachemanager/MultiplecachemanagerApplication.java
deleted file mode 100644
index 4c7efc98bd..0000000000
--- a/multiplecachemanager/src/main/java/com/baeldung/multiplecachemanager/MultiplecachemanagerApplication.java
+++ /dev/null
@@ -1,45 +0,0 @@
-package com.baeldung.multiplecachemanager;
-
-import org.springframework.boot.SpringApplication;
-import org.springframework.boot.autoconfigure.SpringBootApplication;
-import org.springframework.cache.CacheManager;
-import org.springframework.cache.annotation.CachingConfigurerSupport;
-import org.springframework.cache.annotation.EnableCaching;
-import org.springframework.cache.caffeine.CaffeineCacheManager;
-import org.springframework.cache.concurrent.ConcurrentMapCacheManager;
-import org.springframework.cache.interceptor.CacheResolver;
-import org.springframework.context.annotation.Bean;
-
-import com.baeldung.multiplecachemanager.config.MultipleCacheResolver;
-import com.github.benmanes.caffeine.cache.Caffeine;
-
-@SpringBootApplication
-@EnableCaching
-public class MultiplecachemanagerApplication extends CachingConfigurerSupport {
-
-    public static void main(String[] args) {
-        SpringApplication.run(MultiplecachemanagerApplication.class, args);
-    }
-
-    @Bean
-    // @Primary
-    public CacheManager cacheManager() {
-        CaffeineCacheManager cacheManager = new CaffeineCacheManager("customers", "orders");
-        cacheManager.setCaffeine(Caffeine.newBuilder()
-            .initialCapacity(200)
-            .maximumSize(500)
-            .weakKeys()
-            .recordStats());
-        return cacheManager;
-    }
-
-    @Bean
-    public CacheManager alternateCacheManager() {
-        return new ConcurrentMapCacheManager("customerOrders", "orderprice");
-    }
-
-    @Bean
-    public CacheResolver cacheResolver() {
-        return new MultipleCacheResolver(alternateCacheManager(), cacheManager());
-    }
-}
diff --git a/multiplecachemanager/src/main/java/com/baeldung/multiplecachemanager/bo/CustomerDetailBO.java b/multiplecachemanager/src/main/java/com/baeldung/multiplecachemanager/bo/CustomerDetailBO.java
deleted file mode 100644
index 3da4c23e28..0000000000
--- a/multiplecachemanager/src/main/java/com/baeldung/multiplecachemanager/bo/CustomerDetailBO.java
+++ /dev/null
@@ -1,28 +0,0 @@
-package com.baeldung.multiplecachemanager.bo;
-
-import java.util.List;
-
-import org.springframework.beans.factory.annotation.Autowired;
-import org.springframework.cache.annotation.Cacheable;
-import org.springframework.stereotype.Component;
-
-import com.baeldung.multiplecachemanager.entity.Customer;
-import com.baeldung.multiplecachemanager.entity.Order;
-import com.baeldung.multiplecachemanager.repository.CustomerDetailRepository;
-
-@Component
-public class CustomerDetailBO {
-
-    @Autowired
-    private CustomerDetailRepository customerDetailRepository;
-
-    @Cacheable(cacheNames = "customers")
-    public Customer getCustomerDetail(Integer customerId) {
-        return customerDetailRepository.getCustomerDetail(customerId);
-    }
-
-    @Cacheable(cacheNames = "customerOrders", cacheManager = "alternateCacheManager")
-    public List<Order> getCustomerOrders(Integer customerId) {
-        return customerDetailRepository.getCustomerOrders(customerId);
-    }
-}
diff --git a/multiplecachemanager/src/main/java/com/baeldung/multiplecachemanager/bo/OrderDetailBO.java b/multiplecachemanager/src/main/java/com/baeldung/multiplecachemanager/bo/OrderDetailBO.java
deleted file mode 100644
index cb9e301fcb..0000000000
--- a/multiplecachemanager/src/main/java/com/baeldung/multiplecachemanager/bo/OrderDetailBO.java
+++ /dev/null
@@ -1,25 +0,0 @@
-package com.baeldung.multiplecachemanager.bo;
-
-import org.springframework.beans.factory.annotation.Autowired;
-import org.springframework.cache.annotation.Cacheable;
-import org.springframework.stereotype.Component;
-
-import com.baeldung.multiplecachemanager.entity.Order;
-import com.baeldung.multiplecachemanager.repository.OrderDetailRepository;
-
-@Component
-public class OrderDetailBO {
-
-    @Autowired
-    private OrderDetailRepository orderDetailRepository;
-
-    @Cacheable(cacheNames = "orders", cacheResolver = "cacheResolver")
-    public Order getOrderDetail(Integer orderId) {
-        return orderDetailRepository.getOrderDetail(orderId);
-    }
-
-    @Cacheable(cacheNames = "orderprice", cacheResolver = "cacheResolver")
-    public double getOrderPrice(Integer orderId) {
-        return orderDetailRepository.getOrderPrice(orderId);
-    }
-}
diff --git a/multiplecachemanager/src/main/java/com/baeldung/multiplecachemanager/config/MultipleCacheResolver.java b/multiplecachemanager/src/main/java/com/baeldung/multiplecachemanager/config/MultipleCacheResolver.java
deleted file mode 100644
index 1bd869d98e..0000000000
--- a/multiplecachemanager/src/main/java/com/baeldung/multiplecachemanager/config/MultipleCacheResolver.java
+++ /dev/null
@@ -1,38 +0,0 @@
-package com.baeldung.multiplecachemanager.config;
-
-import java.util.ArrayList;
-import java.util.Collection;
-
-import org.springframework.cache.Cache;
-import org.springframework.cache.CacheManager;
-import org.springframework.cache.interceptor.CacheOperationInvocationContext;
-import org.springframework.cache.interceptor.CacheResolver;
-
-public class MultipleCacheResolver implements CacheResolver {
-
-    private final CacheManager simpleCacheManager;
-
-    private final CacheManager caffeineCacheManager;
-
-    private static final String ORDER_CACHE = "orders";
-
-    private static final String ORDER_PRICE_CACHE = "orderprice";
-
-    public MultipleCacheResolver(CacheManager simpleCacheManager, CacheManager caffeineCacheManager) {
-        this.simpleCacheManager = simpleCacheManager;
-        this.caffeineCacheManager = caffeineCacheManager;
-
-    }
-
-    @Override
-    public Collection<? extends Cache> resolveCaches(CacheOperationInvocationContext<?> context) {
-        Collection<Cache> caches = new ArrayList<Cache>();
-        if ("getOrderDetail".equals(context.getMethod()
-            .getName())) {
-            caches.add(caffeineCacheManager.getCache(ORDER_CACHE));
-        } else {
-            caches.add(simpleCacheManager.getCache(ORDER_PRICE_CACHE));
-        }
-        return caches;
-    }
-}
diff --git a/multiplecachemanager/src/main/java/com/baeldung/multiplecachemanager/controller/MultipleCacheManagerController.java b/multiplecachemanager/src/main/java/com/baeldung/multiplecachemanager/controller/MultipleCacheManagerController.java
deleted file mode 100644
index 17a73bb27a..0000000000
--- a/multiplecachemanager/src/main/java/com/baeldung/multiplecachemanager/controller/MultipleCacheManagerController.java
+++ /dev/null
@@ -1,43 +0,0 @@
-package com.baeldung.multiplecachemanager.controller;
-
-import java.util.List;
-
-import org.springframework.beans.factory.annotation.Autowired;
-import org.springframework.web.bind.annotation.GetMapping;
-import org.springframework.web.bind.annotation.PathVariable;
-import org.springframework.web.bind.annotation.RestController;
-
-import com.baeldung.multiplecachemanager.bo.CustomerDetailBO;
-import com.baeldung.multiplecachemanager.bo.OrderDetailBO;
-import com.baeldung.multiplecachemanager.entity.Customer;
-import com.baeldung.multiplecachemanager.entity.Order;
-
-@RestController
-public class MultipleCacheManagerController {
-
-    @Autowired
-    private CustomerDetailBO customerDetailBO;
-
-    @Autowired
-    private OrderDetailBO orderDetailBO;
-
-    @GetMapping(value = "/getCustomer/{customerid}")
-    public Customer getCustomer(@PathVariable Integer customerid) {
-        return customerDetailBO.getCustomerDetail(customerid);
-    }
-
-    @GetMapping(value = "/getCustomerOrders/{customerid}")
-    public List<Order> getCustomerOrders(@PathVariable Integer customerid) {
-        return customerDetailBO.getCustomerOrders(customerid);
-    }
-
-    @GetMapping(value = "/getOrder/{orderid}")
-    public Order getOrder(@PathVariable Integer orderid) {
-        return orderDetailBO.getOrderDetail(orderid);
-    }
-
-    @GetMapping(value = "/getOrderPrice/{orderid}")
-    public double getOrderPrice(@PathVariable Integer orderid) {
-        return orderDetailBO.getOrderPrice(orderid);
-    }
-}
diff --git a/multiplecachemanager/src/main/java/com/baeldung/multiplecachemanager/entity/Customer.java b/multiplecachemanager/src/main/java/com/baeldung/multiplecachemanager/entity/Customer.java
deleted file mode 100644
index cfae15f4e9..0000000000
--- a/multiplecachemanager/src/main/java/com/baeldung/multiplecachemanager/entity/Customer.java
+++ /dev/null
@@ -1,24 +0,0 @@
-package com.baeldung.multiplecachemanager.entity;
-
-public class Customer {
-
-    private int customerId;
-
-    private String customerName;
-
-    public int getCustomerId() {
-        return customerId;
-    }
-
-    public void setCustomerId(int customerId) {
-        this.customerId = customerId;
-    }
-
-    public String getCustomerName() {
-        return customerName;
-    }
-
-    public void setCustomerName(String customerName) {
-        this.customerName = customerName;
-    }
-}
diff --git a/multiplecachemanager/src/main/java/com/baeldung/multiplecachemanager/entity/Item.java b/multiplecachemanager/src/main/java/com/baeldung/multiplecachemanager/entity/Item.java
deleted file mode 100644
index 4131464981..0000000000
--- a/multiplecachemanager/src/main/java/com/baeldung/multiplecachemanager/entity/Item.java
+++ /dev/null
@@ -1,34 +0,0 @@
-package com.baeldung.multiplecachemanager.entity;
-
-public class Item {
-
-    private int itemId;
-
-    private String itemDesc;
-
-    private double itemPrice;
-
-    public int getItemId() {
-        return itemId;
-    }
-
-    public void setItemId(int itemId) {
-        this.itemId = itemId;
-    }
-
-    public String getItemDesc() {
-        return itemDesc;
-    }
-
-    public void setItemDesc(String itemDesc) {
-        this.itemDesc = itemDesc;
-    }
-
-    public double getItemPrice() {
-        return itemPrice;
-    }
-
-    public void setItemPrice(double itemPrice) {
-        this.itemPrice = itemPrice;
-    }
-}
diff --git a/multiplecachemanager/src/main/java/com/baeldung/multiplecachemanager/entity/Order.java b/multiplecachemanager/src/main/java/com/baeldung/multiplecachemanager/entity/Order.java
deleted file mode 100644
index 15da60d6ea..0000000000
--- a/multiplecachemanager/src/main/java/com/baeldung/multiplecachemanager/entity/Order.java
+++ /dev/null
@@ -1,44 +0,0 @@
-package com.baeldung.multiplecachemanager.entity;
-
-public class Order {
-
-    private int orderId;
-
-    private int itemId;
-
-    private int quantity;
-
-    private int customerId;
-
-    public int getOrderId() {
-        return orderId;
-    }
-
-    public void setOrderId(int orderId) {
-        this.orderId = orderId;
-    }
-
-    public int getItemId() {
-        return itemId;
-    }
-
-    public void setItemId(int itemId) {
-        this.itemId = itemId;
-    }
-
-    public int getQuantity() {
-        return quantity;
-    }
-
-    public void setQuantity(int quantity) {
-        this.quantity = quantity;
-    }
-
-    public int getCustomerId() {
-        return customerId;
-    }
-
-    public void setCustomerId(int customerId) {
-        this.customerId = customerId;
-    }
-}
diff --git a/multiplecachemanager/src/main/java/com/baeldung/multiplecachemanager/repository/CustomerDetailRepository.java b/multiplecachemanager/src/main/java/com/baeldung/multiplecachemanager/repository/CustomerDetailRepository.java
deleted file mode 100644
index aab011427d..0000000000
--- a/multiplecachemanager/src/main/java/com/baeldung/multiplecachemanager/repository/CustomerDetailRepository.java
+++ /dev/null
@@ -1,49 +0,0 @@
-package com.baeldung.multiplecachemanager.repository;
-
-import java.sql.ResultSet;
-import java.sql.SQLException;
-import java.util.ArrayList;
-import java.util.List;
-
-import org.springframework.beans.factory.annotation.Autowired;
-import org.springframework.jdbc.core.JdbcTemplate;
-import org.springframework.jdbc.core.RowCallbackHandler;
-import org.springframework.stereotype.Repository;
-
-import com.baeldung.multiplecachemanager.entity.Customer;
-import com.baeldung.multiplecachemanager.entity.Order;
-
-@Repository
-public class CustomerDetailRepository {
-
-    @Autowired
-    private JdbcTemplate jdbcTemplate;
-
-    public Customer getCustomerDetail(Integer customerId) {
-        String customerQuery = "select * from customer where customerid = ? ";
-        Customer customer = new Customer();
-        jdbcTemplate.query(customerQuery, new Object[] { customerId }, new RowCallbackHandler() {
-            public void processRow(ResultSet rs) throws SQLException {
-                customer.setCustomerId(rs.getInt("customerid"));
-                customer.setCustomerName(rs.getString("customername"));
-            }
-        });
-        return customer;
-    }
-
-    public List<Order> getCustomerOrders(Integer customerId) {
-        String customerOrderQuery = "select * from orderdetail where customerid = ? ";
-        List<Order> orders = new ArrayList<Order>();
-        jdbcTemplate.query(customerOrderQuery, new Object[] { customerId }, new RowCallbackHandler() {
-            public void processRow(ResultSet rs) throws SQLException {
-                Order order = new Order();
-                order.setCustomerId(rs.getInt("customerid"));
-                order.setItemId(rs.getInt("orderid"));
-                order.setOrderId(rs.getInt("orderid"));
-                order.setQuantity(rs.getInt("quantity"));
-                orders.add(order);
-            }
-        });
-        return orders;
-    }
-}
diff --git a/multiplecachemanager/src/main/java/com/baeldung/multiplecachemanager/repository/OrderDetailRepository.java b/multiplecachemanager/src/main/java/com/baeldung/multiplecachemanager/repository/OrderDetailRepository.java
deleted file mode 100644
index 58c0968e48..0000000000
--- a/multiplecachemanager/src/main/java/com/baeldung/multiplecachemanager/repository/OrderDetailRepository.java
+++ /dev/null
@@ -1,53 +0,0 @@
-package com.baeldung.multiplecachemanager.repository;
-
-import java.sql.ResultSet;
-import java.sql.SQLException;
-
-import org.springframework.beans.factory.annotation.Autowired;
-import org.springframework.jdbc.core.JdbcTemplate;
-import org.springframework.jdbc.core.RowCallbackHandler;
-import org.springframework.stereotype.Repository;
-
-import com.baeldung.multiplecachemanager.entity.Item;
-import com.baeldung.multiplecachemanager.entity.Order;
-
-@Repository
-public class OrderDetailRepository {
-
-    @Autowired
-    private JdbcTemplate jdbcTemplate;
-
-    public Order getOrderDetail(Integer orderId) {
-        String orderDetailQuery = "select * from orderdetail where orderid = ? ";
-        Order order = new Order();
-        jdbcTemplate.query(orderDetailQuery, new Object[] { orderId }, new RowCallbackHandler() {
-            public void processRow(ResultSet rs) throws SQLException {
-                order.setCustomerId(rs.getInt("customerid"));
-                order.setOrderId(rs.getInt("orderid"));
-                order.setItemId(rs.getInt("itemid"));
-                order.setQuantity(rs.getInt("quantity"));
-            }
-        });
-        return order;
-    }
-
-    public double getOrderPrice(Integer orderId) {
-
-        String orderItemJoinQuery = "select * from ( select * from orderdetail where orderid = ? ) o left join item on o.itemid = ITEM.itemid";
-        Order order = new Order();
-        Item item = new Item();
-
-        jdbcTemplate.query(orderItemJoinQuery, new Object[] { orderId }, new RowCallbackHandler() {
-            public void processRow(ResultSet rs) throws SQLException {
-                order.setCustomerId(rs.getInt("customerid"));
-                order.setOrderId(rs.getInt("orderid"));
-                order.setItemId(rs.getInt("itemid"));
-                order.setQuantity(rs.getInt("quantity"));
-                item.setItemDesc("itemdesc");
-                item.setItemId(rs.getInt("itemid"));
-                item.setItemPrice(rs.getDouble("price"));
-            }
-        });
-        return order.getQuantity() * item.getItemPrice();
-    }
-}
diff --git a/multiplecachemanager/src/main/resources/application.properties b/multiplecachemanager/src/main/resources/application.properties
deleted file mode 100644
index 53a3ac93b4..0000000000
--- a/multiplecachemanager/src/main/resources/application.properties
+++ /dev/null
@@ -1,10 +0,0 @@
-spring.datasource.url=jdbc:h2:mem:testdb
-spring.datasource.driverClassName=org.h2.Driver
-spring.datasource.username=sa
-spring.datasource.password=
-#spring.h2.console.enabled=false
-
-
-# Enabling H2 Console
-spring.h2.console.enabled=true
-spring.h2.console.path=/h2
diff --git a/multiplecachemanager/src/main/resources/data.sql b/multiplecachemanager/src/main/resources/data.sql
deleted file mode 100644
index e4165ae71f..0000000000
--- a/multiplecachemanager/src/main/resources/data.sql
+++ /dev/null
@@ -1,7 +0,0 @@
-INSERT INTO CUSTOMER VALUES(1001,'BAELDUNG');
-
-INSERT INTO ITEM VALUES(10001,'ITEM1',50.0);
-INSERT INTO ITEM VALUES(10002,'ITEM2',100.0);
-
-INSERT INTO ORDERDETAIL VALUES(300001,1001,10001,2);
-INSERT INTO ORDERDETAIL VALUES(300002,1001,10002,5);
\ No newline at end of file
diff --git a/multiplecachemanager/src/main/resources/schema.sql b/multiplecachemanager/src/main/resources/schema.sql
deleted file mode 100644
index 5862499bc0..0000000000
--- a/multiplecachemanager/src/main/resources/schema.sql
+++ /dev/null
@@ -1,19 +0,0 @@
-CREATE TABLE CUSTOMER(
-  CUSTOMERID INT PRIMARY KEY,
-  CUSTOMERNAME VARCHAR(250) NOT NULL
-);
-
-CREATE TABLE ITEM(
-ITEMID INT PRIMARY KEY,
-ITEMDESC VARCHAR(250),
-PRICE DOUBLE
-);
-
-CREATE TABLE ORDERDETAIL(
-ORDERID INT PRIMARY KEY,
-CUSTOMERID INT NOT NULL,
-ITEMID INT NOT NULL,
-QUANTITY INT,
-FOREIGN KEY (customerid) references CUSTOMER(customerid),
-FOREIGN KEY (itemid) references ITEM(itemid)
-);
\ No newline at end of file
diff --git a/multiplecachemanager/src/test/java/com/baeldung/multiplecachemanager/MultiplecachemanagerApplicationTests.java b/multiplecachemanager/src/test/java/com/baeldung/multiplecachemanager/MultiplecachemanagerApplicationTests.java
deleted file mode 100644
index adf69309f2..0000000000
--- a/multiplecachemanager/src/test/java/com/baeldung/multiplecachemanager/MultiplecachemanagerApplicationTests.java
+++ /dev/null
@@ -1,13 +0,0 @@
-package com.baeldung.multiplecachemanager;
-
-import org.junit.jupiter.api.Test;
-import org.springframework.boot.test.context.SpringBootTest;
-
-@SpringBootTest
-class MultiplecachemanagerApplicationTests {
-
-	@Test
-	void contextLoads() {
-	}
-
-}

From d7ee1a96991f4f2854ed388861797f1a8f4765be Mon Sep 17 00:00:00 2001
From: Ankur Gupta <ankur.gupta@jda.com>
Date: Sat, 18 Apr 2020 15:52:19 +0530
Subject: [PATCH 007/156] Fixes as per editor Suggestions

---
 spring-caching/pom.xml                        | 101 +++++++++---------
 .../src/main/resources/application.properties |   2 -
 ...ltipleCacheManagerIntegrationUnitTest.java |   4 +-
 3 files changed, 53 insertions(+), 54 deletions(-)

diff --git a/spring-caching/pom.xml b/spring-caching/pom.xml
index 11dd9a8873..f56d3cf328 100644
--- a/spring-caching/pom.xml
+++ b/spring-caching/pom.xml
@@ -1,54 +1,55 @@
 <?xml version="1.0" encoding="UTF-8"?>
-<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
-         xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
-    <modelVersion>4.0.0</modelVersion>
-    <artifactId>spring-caching</artifactId>
-    <version>0.1-SNAPSHOT</version>
-    <name>spring-caching</name>
-    <packaging>war</packaging>
+<project xmlns="http://maven.apache.org/POM/4.0.0"
+	xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+	xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
+	<modelVersion>4.0.0</modelVersion>
+	<artifactId>spring-caching</artifactId>
+	<version>0.1-SNAPSHOT</version>
+	<name>spring-caching</name>
+	<packaging>war</packaging>
 
-    <parent>
-        <groupId>com.baeldung</groupId>
-        <artifactId>parent-boot-2</artifactId>
-        <version>0.0.1-SNAPSHOT</version>
-        <relativePath>../parent-boot-2</relativePath>
-    </parent>
+	<parent>
+		<groupId>com.baeldung</groupId>
+		<artifactId>parent-boot-2</artifactId>
+		<version>0.0.1-SNAPSHOT</version>
+		<relativePath>../parent-boot-2</relativePath>
+	</parent>
 
-    <dependencies>
-    	<dependency>
+	<dependencies>
+		<dependency>
 			<groupId>org.springframework.boot</groupId>
 			<artifactId>spring-boot-starter-web</artifactId>
 		</dependency>
-        <dependency>
-            <groupId>org.springframework</groupId>
-            <artifactId>spring-context</artifactId>
-        </dependency>
-        <dependency>
-            <groupId>org.springframework.boot</groupId>
-            <artifactId>spring-boot-starter-cache</artifactId>
-        </dependency>
-        <dependency>
-            <groupId>org.springframework</groupId>
-            <artifactId>spring-web</artifactId>
-        </dependency>
-        <dependency>
-            <groupId>org.springframework</groupId>
-            <artifactId>spring-webmvc</artifactId>
-        </dependency>
-        <dependency>
-            <groupId>org.ehcache</groupId>
-            <artifactId>ehcache</artifactId>
-        </dependency>
-        <dependency>
-            <groupId>org.springframework</groupId>
-            <artifactId>spring-test</artifactId>
-            <scope>test</scope>
-        </dependency>
-        <dependency>
-    		<groupId>com.github.ben-manes.caffeine</groupId>
-    		<artifactId>caffeine</artifactId>
-    	</dependency>
-    	<dependency>
+		<dependency>
+			<groupId>org.springframework</groupId>
+			<artifactId>spring-context</artifactId>
+		</dependency>
+		<dependency>
+			<groupId>org.springframework.boot</groupId>
+			<artifactId>spring-boot-starter-cache</artifactId>
+		</dependency>
+		<dependency>
+			<groupId>org.springframework</groupId>
+			<artifactId>spring-web</artifactId>
+		</dependency>
+		<dependency>
+			<groupId>org.springframework</groupId>
+			<artifactId>spring-webmvc</artifactId>
+		</dependency>
+		<dependency>
+			<groupId>org.ehcache</groupId>
+			<artifactId>ehcache</artifactId>
+		</dependency>
+		<dependency>
+			<groupId>org.springframework</groupId>
+			<artifactId>spring-test</artifactId>
+			<scope>test</scope>
+		</dependency>
+		<dependency>
+			<groupId>com.github.ben-manes.caffeine</groupId>
+			<artifactId>caffeine</artifactId>
+		</dependency>
+		<dependency>
 			<groupId>com.h2database</groupId>
 			<artifactId>h2</artifactId>
 			<scope>runtime</scope>
@@ -57,10 +58,10 @@
 			<groupId>org.springframework.boot</groupId>
 			<artifactId>spring-boot-starter-jdbc</artifactId>
 		</dependency>
-    </dependencies>
+	</dependencies>
+
+	<properties>
+		<ehcache.version>3.5.2</ehcache.version>
+	</properties>
 
-    <properties>
-        <ehcache.version>3.5.2</ehcache.version>
-    </properties>
-    
 </project>
\ No newline at end of file
diff --git a/spring-caching/src/main/resources/application.properties b/spring-caching/src/main/resources/application.properties
index 53a3ac93b4..ee7b5e62c0 100644
--- a/spring-caching/src/main/resources/application.properties
+++ b/spring-caching/src/main/resources/application.properties
@@ -2,8 +2,6 @@ spring.datasource.url=jdbc:h2:mem:testdb
 spring.datasource.driverClassName=org.h2.Driver
 spring.datasource.username=sa
 spring.datasource.password=
-#spring.h2.console.enabled=false
-
 
 # Enabling H2 Console
 spring.h2.console.enabled=true
diff --git a/spring-caching/src/test/java/com/baeldung/multiplecachemanager/MultipleCacheManagerIntegrationUnitTest.java b/spring-caching/src/test/java/com/baeldung/multiplecachemanager/MultipleCacheManagerIntegrationUnitTest.java
index 4bcbdb4d68..e02e5da246 100644
--- a/spring-caching/src/test/java/com/baeldung/multiplecachemanager/MultipleCacheManagerIntegrationUnitTest.java
+++ b/spring-caching/src/test/java/com/baeldung/multiplecachemanager/MultipleCacheManagerIntegrationUnitTest.java
@@ -32,7 +32,7 @@ public class MultipleCacheManagerIntegrationUnitTest {
     private CacheManager alternateCacheManager;
 
     @Test
-    public void whenCallGetOrderDetail_thenDataShouldBeInCaffieneCacheManager() {
+    public void givenCacheResolverIsConfigured_whenCallGetOrderDetail_thenDataShouldBeInCaffieneCacheManager() {
         Integer key = 30001;
         cacheManager.getCache("orders")
             .evict(key);
@@ -50,7 +50,7 @@ public class MultipleCacheManagerIntegrationUnitTest {
     }
 
     @Test
-    public void whenCallGetOrderPrice_thenDataShouldBeInAlternateCacheManager() {
+    public void givenCacheResolverIsConfigured_whenCallGetOrderPrice_thenDataShouldBeInAlternateCacheManager() {
         Integer key = 30001;
         alternateCacheManager.getCache("orderprice")
             .evict(key);

From 5d04769c759824fb6d39eff874eda44339337830 Mon Sep 17 00:00:00 2001
From: Ankur Gupta <ankur.gupta@jda.com>
Date: Mon, 27 Apr 2020 01:54:51 +0530
Subject: [PATCH 008/156] fixing spacing issue in pom.xml

---
 spring-caching/pom.xml | 3 +--
 1 file changed, 1 insertion(+), 2 deletions(-)

diff --git a/spring-caching/pom.xml b/spring-caching/pom.xml
index f56d3cf328..e62ebd501b 100644
--- a/spring-caching/pom.xml
+++ b/spring-caching/pom.xml
@@ -63,5 +63,4 @@
 	<properties>
 		<ehcache.version>3.5.2</ehcache.version>
 	</properties>
-
-</project>
\ No newline at end of file
+</project>

From 4103e9a75c991125c2f919925a0c4c77dc036b32 Mon Sep 17 00:00:00 2001
From: Ankur Gupta <ankurguptajec@gmail.com>
Date: Mon, 27 Apr 2020 02:10:04 +0530
Subject: [PATCH 009/156] Fixing spacing issue in pom.xml

---
 spring-caching/pom.xml | 116 ++++++++++++++++++++---------------------
 1 file changed, 58 insertions(+), 58 deletions(-)

diff --git a/spring-caching/pom.xml b/spring-caching/pom.xml
index e62ebd501b..3c594ee8ab 100644
--- a/spring-caching/pom.xml
+++ b/spring-caching/pom.xml
@@ -2,65 +2,65 @@
 <project xmlns="http://maven.apache.org/POM/4.0.0"
 	xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
 	xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
-	<modelVersion>4.0.0</modelVersion>
-	<artifactId>spring-caching</artifactId>
-	<version>0.1-SNAPSHOT</version>
-	<name>spring-caching</name>
-	<packaging>war</packaging>
+     <modelVersion>4.0.0</modelVersion>
+     <artifactId>spring-caching</artifactId>
+     <version>0.1-SNAPSHOT</version>
+     <name>spring-caching</name>
+     <packaging>war</packaging>
 
-	<parent>
-		<groupId>com.baeldung</groupId>
-		<artifactId>parent-boot-2</artifactId>
-		<version>0.0.1-SNAPSHOT</version>
-		<relativePath>../parent-boot-2</relativePath>
-	</parent>
+     <parent>
+	 <groupId>com.baeldung</groupId>
+	 <artifactId>parent-boot-2</artifactId>
+	 <version>0.0.1-SNAPSHOT</version>
+	 <relativePath>../parent-boot-2</relativePath>
+     </parent>
 
-	<dependencies>
-		<dependency>
-			<groupId>org.springframework.boot</groupId>
-			<artifactId>spring-boot-starter-web</artifactId>
-		</dependency>
-		<dependency>
-			<groupId>org.springframework</groupId>
-			<artifactId>spring-context</artifactId>
-		</dependency>
-		<dependency>
-			<groupId>org.springframework.boot</groupId>
-			<artifactId>spring-boot-starter-cache</artifactId>
-		</dependency>
-		<dependency>
-			<groupId>org.springframework</groupId>
-			<artifactId>spring-web</artifactId>
-		</dependency>
-		<dependency>
-			<groupId>org.springframework</groupId>
-			<artifactId>spring-webmvc</artifactId>
-		</dependency>
-		<dependency>
-			<groupId>org.ehcache</groupId>
-			<artifactId>ehcache</artifactId>
-		</dependency>
-		<dependency>
-			<groupId>org.springframework</groupId>
-			<artifactId>spring-test</artifactId>
-			<scope>test</scope>
-		</dependency>
-		<dependency>
-			<groupId>com.github.ben-manes.caffeine</groupId>
-			<artifactId>caffeine</artifactId>
-		</dependency>
-		<dependency>
-			<groupId>com.h2database</groupId>
-			<artifactId>h2</artifactId>
-			<scope>runtime</scope>
-		</dependency>
-		<dependency>
-			<groupId>org.springframework.boot</groupId>
-			<artifactId>spring-boot-starter-jdbc</artifactId>
-		</dependency>
-	</dependencies>
+     <dependencies>
+	<dependency>
+	    <groupId>org.springframework.boot</groupId>
+	    <artifactId>spring-boot-starter-web</artifactId>
+	</dependency>
+	<dependency>
+	    <groupId>org.springframework</groupId>
+	    <artifactId>spring-context</artifactId>
+	</dependency>
+	<dependency>
+	    <groupId>org.springframework.boot</groupId>
+	    <artifactId>spring-boot-starter-cache</artifactId>
+	</dependency>
+	<dependency>
+	    <groupId>org.springframework</groupId>
+	    <artifactId>spring-web</artifactId>
+        </dependency>
+	<dependency>
+	    <groupId>org.springframework</groupId>
+	    <artifactId>spring-webmvc</artifactId>
+	</dependency>
+	<dependency>
+	    <groupId>org.ehcache</groupId>
+	    <artifactId>ehcache</artifactId>
+	</dependency>
+	<dependency>
+	    <groupId>org.springframework</groupId>
+	    <artifactId>spring-test</artifactId>
+	    <scope>test</scope>
+	</dependency>
+	<dependency>
+	    <groupId>com.github.ben-manes.caffeine</groupId>
+	    <artifactId>caffeine</artifactId>
+	</dependency>
+	<dependency>
+	    <groupId>com.h2database</groupId>
+	    <artifactId>h2</artifactId>
+	    <scope>runtime</scope>
+	</dependency>
+	<dependency>
+	    <groupId>org.springframework.boot</groupId>
+	    <artifactId>spring-boot-starter-jdbc</artifactId>
+	</dependency>
+     </dependencies>
 
-	<properties>
-		<ehcache.version>3.5.2</ehcache.version>
-	</properties>
+     <properties>
+	 <ehcache.version>3.5.2</ehcache.version>
+     </properties>
 </project>

From f9a771d6952cf968f597f4bc4beb7c3575ef2d21 Mon Sep 17 00:00:00 2001
From: Ankur Gupta <ankurguptajec@gmail.com>
Date: Mon, 27 Apr 2020 02:51:43 +0530
Subject: [PATCH 010/156] Fixing spacing issue 2

---
 spring-caching/pom.xml | 32 ++++++++++++++++----------------
 1 file changed, 16 insertions(+), 16 deletions(-)

diff --git a/spring-caching/pom.xml b/spring-caching/pom.xml
index 3c594ee8ab..f443919b42 100644
--- a/spring-caching/pom.xml
+++ b/spring-caching/pom.xml
@@ -2,20 +2,20 @@
 <project xmlns="http://maven.apache.org/POM/4.0.0"
 	xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
 	xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
-     <modelVersion>4.0.0</modelVersion>
-     <artifactId>spring-caching</artifactId>
-     <version>0.1-SNAPSHOT</version>
-     <name>spring-caching</name>
-     <packaging>war</packaging>
+    <modelVersion>4.0.0</modelVersion>
+    <artifactId>spring-caching</artifactId>
+    <version>0.1-SNAPSHOT</version>
+    <name>spring-caching</name>
+    <packaging>war</packaging>
 
-     <parent>
-	 <groupId>com.baeldung</groupId>
-	 <artifactId>parent-boot-2</artifactId>
-	 <version>0.0.1-SNAPSHOT</version>
-	 <relativePath>../parent-boot-2</relativePath>
-     </parent>
+    <parent>
+	<groupId>com.baeldung</groupId>
+	<artifactId>parent-boot-2</artifactId>
+	<version>0.0.1-SNAPSHOT</version>
+	<relativePath>../parent-boot-2</relativePath>
+    </parent>
 
-     <dependencies>
+    <dependencies>
 	<dependency>
 	    <groupId>org.springframework.boot</groupId>
 	    <artifactId>spring-boot-starter-web</artifactId>
@@ -58,9 +58,9 @@
 	    <groupId>org.springframework.boot</groupId>
 	    <artifactId>spring-boot-starter-jdbc</artifactId>
 	</dependency>
-     </dependencies>
+    </dependencies>
 
-     <properties>
-	 <ehcache.version>3.5.2</ehcache.version>
-     </properties>
+    <properties>
+	<ehcache.version>3.5.2</ehcache.version>
+    </properties>
 </project>

From cdc79108444d58fed34227222e9cf1a79e63a675 Mon Sep 17 00:00:00 2001
From: Ankur Gupta <ankurguptajec@gmail.com>
Date: Mon, 27 Apr 2020 03:30:41 +0530
Subject: [PATCH 011/156] Formatting space issues in pom.xml

---
 spring-caching/pom.xml | 93 +++++++++++++++++++++---------------------
 1 file changed, 46 insertions(+), 47 deletions(-)

diff --git a/spring-caching/pom.xml b/spring-caching/pom.xml
index f443919b42..80644f8a5f 100644
--- a/spring-caching/pom.xml
+++ b/spring-caching/pom.xml
@@ -9,58 +9,57 @@
     <packaging>war</packaging>
 
     <parent>
-	<groupId>com.baeldung</groupId>
-	<artifactId>parent-boot-2</artifactId>
-	<version>0.0.1-SNAPSHOT</version>
-	<relativePath>../parent-boot-2</relativePath>
+        <groupId>com.baeldung</groupId>
+        <artifactId>parent-boot-2</artifactId>
+        <version>0.0.1-SNAPSHOT</version>
+        <relativePath>../parent-boot-2</relativePath>
     </parent>
 
     <dependencies>
-	<dependency>
-	    <groupId>org.springframework.boot</groupId>
-	    <artifactId>spring-boot-starter-web</artifactId>
-	</dependency>
-	<dependency>
-	    <groupId>org.springframework</groupId>
-	    <artifactId>spring-context</artifactId>
-	</dependency>
-	<dependency>
-	    <groupId>org.springframework.boot</groupId>
-	    <artifactId>spring-boot-starter-cache</artifactId>
-	</dependency>
-	<dependency>
-	    <groupId>org.springframework</groupId>
-	    <artifactId>spring-web</artifactId>
+        <dependency>
+            <groupId>org.springframework.boot</groupId>
+            <artifactId>spring-boot-starter-web</artifactId>
+        </dependency>
+        <dependency>
+            <groupId>org.springframework</groupId>
+            <artifactId>spring-context</artifactId>
+        </dependency>
+        <dependency>
+            <groupId>org.springframework.boot</groupId>
+            <artifactId>spring-boot-starter-cache</artifactId>
+        </dependency>
+        <dependency>
+            <groupId>org.springframework</groupId>
+            <artifactId>spring-web</artifactId>
+        </dependency>
+        <dependency>
+            <groupId>org.springframework</groupId>
+            <artifactId>spring-webmvc</artifactId>
+        </dependency>
+        <dependency>
+            <groupId>org.ehcache</groupId>
+            <artifactId>ehcache</artifactId>
+        </dependency>
+        <dependency>
+            <groupId>org.springframework</groupId>
+            <artifactId>spring-test</artifactId>
+            <scope>test</scope>
+        </dependency>
+        <dependency>
+            <groupId>com.github.ben-manes.caffeine</groupId>
+            <artifactId>caffeine</artifactId>
+        </dependency>
+        <dependency>
+            <groupId>com.h2database</groupId>
+            <artifactId>h2</artifactId>
+            <scope>runtime</scope>
+        </dependency>
+        <dependency>
+            <groupId>org.springframework.boot</groupId>
+            <artifactId>spring-boot-starter-jdbc</artifactId>
         </dependency>
-	<dependency>
-	    <groupId>org.springframework</groupId>
-	    <artifactId>spring-webmvc</artifactId>
-	</dependency>
-	<dependency>
-	    <groupId>org.ehcache</groupId>
-	    <artifactId>ehcache</artifactId>
-	</dependency>
-	<dependency>
-	    <groupId>org.springframework</groupId>
-	    <artifactId>spring-test</artifactId>
-	    <scope>test</scope>
-	</dependency>
-	<dependency>
-	    <groupId>com.github.ben-manes.caffeine</groupId>
-	    <artifactId>caffeine</artifactId>
-	</dependency>
-	<dependency>
-	    <groupId>com.h2database</groupId>
-	    <artifactId>h2</artifactId>
-	    <scope>runtime</scope>
-	</dependency>
-	<dependency>
-	    <groupId>org.springframework.boot</groupId>
-	    <artifactId>spring-boot-starter-jdbc</artifactId>
-	</dependency>
     </dependencies>
-
     <properties>
-	<ehcache.version>3.5.2</ehcache.version>
+        <ehcache.version>3.5.2</ehcache.version>
     </properties>
 </project>

From a11b2d812be30138e980285d2ebc76fdaa864e87 Mon Sep 17 00:00:00 2001
From: andrebrowne <42154231+andrebrowne@users.noreply.github.com>
Date: Tue, 1 Oct 2019 12:56:55 -0400
Subject: [PATCH 012/156] Add architecture module with Hexagonal example

---
 architecture/README.md                        |  3 ++
 architecture/pom.xml                          | 33 ++++++++++++
 .../HexagonalArchitectureTaskApplication.java | 12 +++++
 .../application/task/AddNewDailyTask.java     | 29 ++++++++++
 .../application/task/AddNewTask.java          | 22 ++++++++
 .../application/task/GetTasks.java            | 22 ++++++++
 .../commands/task/CreateTask.java             |  7 +++
 .../commands/task/GetAllTasks.java            |  7 +++
 .../architecture/domain/task/Task.java        | 53 +++++++++++++++++++
 .../domain/task/TaskRepository.java           |  7 +++
 .../architecture/domain/task/TaskService.java | 22 ++++++++
 .../framework/cli/StartupRunner.java          | 25 +++++++++
 .../http/task/TaskApiController.java          | 42 +++++++++++++++
 .../framework/http/task/TaskRequest.java      | 29 ++++++++++
 14 files changed, 313 insertions(+)
 create mode 100644 architecture/README.md
 create mode 100644 architecture/pom.xml
 create mode 100644 architecture/src/main/java/com/baeldung/architecture/HexagonalArchitectureTaskApplication.java
 create mode 100644 architecture/src/main/java/com/baeldung/architecture/application/task/AddNewDailyTask.java
 create mode 100644 architecture/src/main/java/com/baeldung/architecture/application/task/AddNewTask.java
 create mode 100644 architecture/src/main/java/com/baeldung/architecture/application/task/GetTasks.java
 create mode 100644 architecture/src/main/java/com/baeldung/architecture/commands/task/CreateTask.java
 create mode 100644 architecture/src/main/java/com/baeldung/architecture/commands/task/GetAllTasks.java
 create mode 100644 architecture/src/main/java/com/baeldung/architecture/domain/task/Task.java
 create mode 100644 architecture/src/main/java/com/baeldung/architecture/domain/task/TaskRepository.java
 create mode 100644 architecture/src/main/java/com/baeldung/architecture/domain/task/TaskService.java
 create mode 100644 architecture/src/main/java/com/baeldung/architecture/framework/cli/StartupRunner.java
 create mode 100644 architecture/src/main/java/com/baeldung/architecture/framework/http/task/TaskApiController.java
 create mode 100644 architecture/src/main/java/com/baeldung/architecture/framework/http/task/TaskRequest.java

diff --git a/architecture/README.md b/architecture/README.md
new file mode 100644
index 0000000000..be093f25ed
--- /dev/null
+++ b/architecture/README.md
@@ -0,0 +1,3 @@
+### Relevant articles
+
+- [A Quick and Practical Example of Hexagonal Architecture in Java](https://www.baeldung.com/a-quick-and-practical-example-of-hexagonal-architecture-in-java-3/)
diff --git a/architecture/pom.xml b/architecture/pom.xml
new file mode 100644
index 0000000000..4ad104293e
--- /dev/null
+++ b/architecture/pom.xml
@@ -0,0 +1,33 @@
+<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+    xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
+    <modelVersion>4.0.0</modelVersion>
+    <groupId>com.baeldung.architecture</groupId>
+    <artifactId>architecture</artifactId>
+    <version>0.0.1-SNAPSHOT</version>
+    <name>architecture</name>
+    <packaging>jar</packaging>
+    <description>A Quick and Practical Example of Hexagonal Architecture in Java</description>
+
+    <parent>
+        <artifactId>parent-boot-2</artifactId>
+        <groupId>com.baeldung</groupId>
+        <version>0.0.1-SNAPSHOT</version>
+        <relativePath>../parent-boot-2</relativePath>
+    </parent>
+
+    <dependencies>
+        <dependency>
+            <groupId>org.springframework.boot</groupId>
+            <artifactId>spring-boot-starter-data-jpa</artifactId>
+        </dependency>
+        <dependency>
+            <groupId>com.h2database</groupId>
+            <artifactId>h2</artifactId>
+            <scope>runtime</scope>
+        </dependency>
+        <dependency>
+            <groupId>org.springframework.boot</groupId>
+            <artifactId>spring-boot-starter-web</artifactId>
+        </dependency>
+    </dependencies>
+</project>
diff --git a/architecture/src/main/java/com/baeldung/architecture/HexagonalArchitectureTaskApplication.java b/architecture/src/main/java/com/baeldung/architecture/HexagonalArchitectureTaskApplication.java
new file mode 100644
index 0000000000..83e4fc4c0b
--- /dev/null
+++ b/architecture/src/main/java/com/baeldung/architecture/HexagonalArchitectureTaskApplication.java
@@ -0,0 +1,12 @@
+package com.baeldung.architecture;
+
+import org.springframework.boot.SpringApplication;
+import org.springframework.boot.autoconfigure.SpringBootApplication;
+
+@SpringBootApplication
+public class HexagonalArchitectureTaskApplication {
+	public static void main(String[] args) {
+		SpringApplication.run(HexagonalArchitectureTaskApplication.class, args);
+	}
+
+}
diff --git a/architecture/src/main/java/com/baeldung/architecture/application/task/AddNewDailyTask.java b/architecture/src/main/java/com/baeldung/architecture/application/task/AddNewDailyTask.java
new file mode 100644
index 0000000000..208d1bfcc9
--- /dev/null
+++ b/architecture/src/main/java/com/baeldung/architecture/application/task/AddNewDailyTask.java
@@ -0,0 +1,29 @@
+package com.baeldung.architecture.application.task;
+
+import java.time.Instant;
+import java.time.temporal.ChronoUnit;
+
+import com.baeldung.architecture.commands.task.CreateTask;
+import com.baeldung.architecture.domain.task.Task;
+
+import org.springframework.stereotype.Component;
+
+@Component
+public class AddNewDailyTask implements CreateTask {
+
+    private AddNewTask addNewTask;
+
+    public AddNewDailyTask(AddNewTask addNewTask) {
+        this.addNewTask = addNewTask;
+    }
+
+    @Override
+    public void create(Task newTask) {
+        Instant initialDueDate = newTask.getDueDate();
+        String description = newTask.getDescription();
+        for (int i = 1; i <= 5; i++) {
+            Task task = new Task(initialDueDate.plus(i, ChronoUnit.DAYS), description);
+            addNewTask.create(task);
+        }
+    }
+};
diff --git a/architecture/src/main/java/com/baeldung/architecture/application/task/AddNewTask.java b/architecture/src/main/java/com/baeldung/architecture/application/task/AddNewTask.java
new file mode 100644
index 0000000000..2e5aff4a53
--- /dev/null
+++ b/architecture/src/main/java/com/baeldung/architecture/application/task/AddNewTask.java
@@ -0,0 +1,22 @@
+package com.baeldung.architecture.application.task;
+
+import com.baeldung.architecture.domain.task.Task;
+import com.baeldung.architecture.domain.task.TaskService;
+import com.baeldung.architecture.commands.task.*;
+
+import org.springframework.stereotype.Component;
+
+@Component
+public class AddNewTask implements CreateTask {
+
+    private TaskService taskService;
+
+    public AddNewTask(TaskService taskService) {
+        this.taskService = taskService;
+    }
+
+    @Override
+    public void create(Task newTask) {
+        taskService.createTask(newTask);
+    }
+};
diff --git a/architecture/src/main/java/com/baeldung/architecture/application/task/GetTasks.java b/architecture/src/main/java/com/baeldung/architecture/application/task/GetTasks.java
new file mode 100644
index 0000000000..54539290ba
--- /dev/null
+++ b/architecture/src/main/java/com/baeldung/architecture/application/task/GetTasks.java
@@ -0,0 +1,22 @@
+package com.baeldung.architecture.application.task;
+
+import com.baeldung.architecture.domain.task.Task;
+import com.baeldung.architecture.domain.task.TaskService;
+import com.baeldung.architecture.commands.task.*;
+
+import org.springframework.stereotype.Component;
+
+@Component
+public class GetTasks implements GetAllTasks {
+
+    private TaskService taskService;
+
+    public GetTasks(TaskService taskService) {
+        this.taskService = taskService;
+    }
+
+    @Override
+    public Iterable<Task> getAll() {
+        return taskService.getAllTasks();
+    }
+};
diff --git a/architecture/src/main/java/com/baeldung/architecture/commands/task/CreateTask.java b/architecture/src/main/java/com/baeldung/architecture/commands/task/CreateTask.java
new file mode 100644
index 0000000000..26e6da10e2
--- /dev/null
+++ b/architecture/src/main/java/com/baeldung/architecture/commands/task/CreateTask.java
@@ -0,0 +1,7 @@
+package com.baeldung.architecture.commands.task;
+
+import com.baeldung.architecture.domain.task.Task;
+
+public interface CreateTask {
+    public void create(Task newTask);
+};
diff --git a/architecture/src/main/java/com/baeldung/architecture/commands/task/GetAllTasks.java b/architecture/src/main/java/com/baeldung/architecture/commands/task/GetAllTasks.java
new file mode 100644
index 0000000000..d3c40db92f
--- /dev/null
+++ b/architecture/src/main/java/com/baeldung/architecture/commands/task/GetAllTasks.java
@@ -0,0 +1,7 @@
+package com.baeldung.architecture.commands.task;
+
+import com.baeldung.architecture.domain.task.Task;
+
+public interface GetAllTasks {
+    public Iterable<Task> getAll();
+};
diff --git a/architecture/src/main/java/com/baeldung/architecture/domain/task/Task.java b/architecture/src/main/java/com/baeldung/architecture/domain/task/Task.java
new file mode 100644
index 0000000000..240dc33571
--- /dev/null
+++ b/architecture/src/main/java/com/baeldung/architecture/domain/task/Task.java
@@ -0,0 +1,53 @@
+package com.baeldung.architecture.domain.task;
+
+import java.time.Instant;
+
+import javax.persistence.Entity;
+import javax.persistence.GeneratedValue;
+import javax.persistence.GenerationType;
+import javax.persistence.Id;
+
+@Entity
+public class Task {
+    @Id
+    @GeneratedValue(strategy=GenerationType.AUTO)
+    private Long id;
+    private Instant dueDate = Instant.now();
+    private String description;
+
+    public Task() {}
+
+    public Task(Instant dueDate, String description) {
+        this.dueDate = dueDate;
+        this.description = description;
+    }
+
+    public Task(Long id, Instant dueDate, String description) {
+        this(dueDate, description);
+        this.id = id;
+    }
+
+    public Long getId() {
+        return id;
+    }
+
+    public void setId(Long id) {
+        this.id = id;
+    }
+
+    public Instant getDueDate() {
+        return dueDate;
+    }
+
+    public void setDueDate(Instant dueDate) {
+        this.dueDate = dueDate;
+    }
+
+    public String getDescription() {
+        return description;
+    }
+
+    public void setDescription(String description) {
+        this.description = description;
+    }
+}
diff --git a/architecture/src/main/java/com/baeldung/architecture/domain/task/TaskRepository.java b/architecture/src/main/java/com/baeldung/architecture/domain/task/TaskRepository.java
new file mode 100644
index 0000000000..d896212714
--- /dev/null
+++ b/architecture/src/main/java/com/baeldung/architecture/domain/task/TaskRepository.java
@@ -0,0 +1,7 @@
+package com.baeldung.architecture.domain.task;
+
+import org.springframework.data.repository.CrudRepository;
+import org.springframework.stereotype.Repository;
+
+@Repository
+public interface TaskRepository extends CrudRepository<Task, Long> {};
diff --git a/architecture/src/main/java/com/baeldung/architecture/domain/task/TaskService.java b/architecture/src/main/java/com/baeldung/architecture/domain/task/TaskService.java
new file mode 100644
index 0000000000..cace0614ad
--- /dev/null
+++ b/architecture/src/main/java/com/baeldung/architecture/domain/task/TaskService.java
@@ -0,0 +1,22 @@
+package com.baeldung.architecture.domain.task;
+
+import org.springframework.stereotype.Service;
+
+@Service
+public class TaskService {
+
+    private TaskRepository taskRepository;
+
+    public TaskService(TaskRepository taskRepository) {
+        this.taskRepository = taskRepository;
+    }
+
+    public void createTask(Task task) {
+        taskRepository.save(task);
+    }
+
+    public Iterable<Task> getAllTasks() {
+        return taskRepository.findAll();
+    }
+
+};
diff --git a/architecture/src/main/java/com/baeldung/architecture/framework/cli/StartupRunner.java b/architecture/src/main/java/com/baeldung/architecture/framework/cli/StartupRunner.java
new file mode 100644
index 0000000000..260c033b71
--- /dev/null
+++ b/architecture/src/main/java/com/baeldung/architecture/framework/cli/StartupRunner.java
@@ -0,0 +1,25 @@
+package com.baeldung.architecture.framework.cli;
+
+import com.baeldung.architecture.application.task.AddNewDailyTask;
+import com.baeldung.architecture.domain.task.Task;
+
+import org.springframework.boot.ApplicationArguments;
+import org.springframework.boot.ApplicationRunner;
+import org.springframework.stereotype.Component;
+
+@Component
+public class StartupRunner implements ApplicationRunner {
+
+    AddNewDailyTask addNewDailyTask;
+
+    public StartupRunner(AddNewDailyTask addNewDailyTask) {
+        this.addNewDailyTask = addNewDailyTask;
+    }
+    @Override
+    public void run(ApplicationArguments args) throws Exception {
+        System.out.println("Adding daily tasks");
+        Task task = new Task();
+        task.setDescription("Startup Task");
+        addNewDailyTask.create(task);
+    }
+}
\ No newline at end of file
diff --git a/architecture/src/main/java/com/baeldung/architecture/framework/http/task/TaskApiController.java b/architecture/src/main/java/com/baeldung/architecture/framework/http/task/TaskApiController.java
new file mode 100644
index 0000000000..c6f7bff2dd
--- /dev/null
+++ b/architecture/src/main/java/com/baeldung/architecture/framework/http/task/TaskApiController.java
@@ -0,0 +1,42 @@
+package com.baeldung.architecture.framework.http.task;
+
+import java.time.Instant;
+
+import com.baeldung.architecture.application.task.AddNewTask;
+import com.baeldung.architecture.application.task.GetTasks;
+import com.baeldung.architecture.domain.task.Task;
+
+import org.springframework.web.bind.annotation.GetMapping;
+import org.springframework.web.bind.annotation.PostMapping;
+import org.springframework.web.bind.annotation.RequestBody;
+import org.springframework.web.bind.annotation.RequestMapping;
+import org.springframework.web.bind.annotation.RestController;
+
+@RestController
+@RequestMapping("task")
+public class TaskApiController {
+
+    private AddNewTask addNewTask;
+    private GetTasks getTasks;
+
+    public TaskApiController(
+        AddNewTask addNewTask,
+        GetTasks getTasks
+    ) {
+        this.addNewTask = addNewTask;
+        this.getTasks = getTasks;
+    }
+
+    @GetMapping
+    Iterable<Task> listTasks() {
+        return getTasks.getAll();
+    }
+
+    @PostMapping(consumes = "application/json", produces = "application/json")
+    void createTask(@RequestBody TaskRequest taskRequest) {
+        Task task = new Task();
+        task.setDescription(taskRequest.getDescription());
+        task.setDueDate(Instant.parse(taskRequest.getDueDate()));
+        addNewTask.create(task);
+    }
+}
\ No newline at end of file
diff --git a/architecture/src/main/java/com/baeldung/architecture/framework/http/task/TaskRequest.java b/architecture/src/main/java/com/baeldung/architecture/framework/http/task/TaskRequest.java
new file mode 100644
index 0000000000..2e353b079a
--- /dev/null
+++ b/architecture/src/main/java/com/baeldung/architecture/framework/http/task/TaskRequest.java
@@ -0,0 +1,29 @@
+package com.baeldung.architecture.framework.http.task;
+
+import com.fasterxml.jackson.annotation.JsonInclude;
+import com.fasterxml.jackson.annotation.JsonInclude.Include;
+
+public class TaskRequest {
+    @JsonInclude(Include.NON_NULL)
+    private String description;
+
+    @JsonInclude(Include.NON_NULL)
+    private String dueDate;
+
+    public String getDescription() {
+        return description;
+    }
+
+    public void setDescription(String description) {
+        this.description = description;
+    }
+
+    public String getDueDate() {
+        return dueDate;
+    }
+
+    public void setDueDate(String dueDate) {
+        this.dueDate = dueDate;
+    }
+
+} 
\ No newline at end of file

From 8ed374c4b073fe83d326401bee41dca828d7d1e7 Mon Sep 17 00:00:00 2001
From: andrebrowne <42154231+andrebrowne@users.noreply.github.com>
Date: Tue, 1 Oct 2019 20:15:39 -0400
Subject: [PATCH 013/156] Fixup styling

---
 .../architecture/HexagonalArchitectureTaskApplication.java  | 6 +++---
 .../baeldung/architecture/application/task/AddNewTask.java  | 2 +-
 .../baeldung/architecture/application/task/GetTasks.java    | 2 +-
 .../baeldung/architecture/framework/cli/StartupRunner.java  | 1 -
 4 files changed, 5 insertions(+), 6 deletions(-)

diff --git a/architecture/src/main/java/com/baeldung/architecture/HexagonalArchitectureTaskApplication.java b/architecture/src/main/java/com/baeldung/architecture/HexagonalArchitectureTaskApplication.java
index 83e4fc4c0b..69c6f4b276 100644
--- a/architecture/src/main/java/com/baeldung/architecture/HexagonalArchitectureTaskApplication.java
+++ b/architecture/src/main/java/com/baeldung/architecture/HexagonalArchitectureTaskApplication.java
@@ -5,8 +5,8 @@ import org.springframework.boot.autoconfigure.SpringBootApplication;
 
 @SpringBootApplication
 public class HexagonalArchitectureTaskApplication {
-	public static void main(String[] args) {
-		SpringApplication.run(HexagonalArchitectureTaskApplication.class, args);
-	}
+    public static void main(String[] args) {
+        SpringApplication.run(HexagonalArchitectureTaskApplication.class, args);
+    }
 
 }
diff --git a/architecture/src/main/java/com/baeldung/architecture/application/task/AddNewTask.java b/architecture/src/main/java/com/baeldung/architecture/application/task/AddNewTask.java
index 2e5aff4a53..70638378f9 100644
--- a/architecture/src/main/java/com/baeldung/architecture/application/task/AddNewTask.java
+++ b/architecture/src/main/java/com/baeldung/architecture/application/task/AddNewTask.java
@@ -19,4 +19,4 @@ public class AddNewTask implements CreateTask {
     public void create(Task newTask) {
         taskService.createTask(newTask);
     }
-};
+}
diff --git a/architecture/src/main/java/com/baeldung/architecture/application/task/GetTasks.java b/architecture/src/main/java/com/baeldung/architecture/application/task/GetTasks.java
index 54539290ba..c876f7de85 100644
--- a/architecture/src/main/java/com/baeldung/architecture/application/task/GetTasks.java
+++ b/architecture/src/main/java/com/baeldung/architecture/application/task/GetTasks.java
@@ -19,4 +19,4 @@ public class GetTasks implements GetAllTasks {
     public Iterable<Task> getAll() {
         return taskService.getAllTasks();
     }
-};
+}
diff --git a/architecture/src/main/java/com/baeldung/architecture/framework/cli/StartupRunner.java b/architecture/src/main/java/com/baeldung/architecture/framework/cli/StartupRunner.java
index 260c033b71..cf38e5ee5e 100644
--- a/architecture/src/main/java/com/baeldung/architecture/framework/cli/StartupRunner.java
+++ b/architecture/src/main/java/com/baeldung/architecture/framework/cli/StartupRunner.java
@@ -17,7 +17,6 @@ public class StartupRunner implements ApplicationRunner {
     }
     @Override
     public void run(ApplicationArguments args) throws Exception {
-        System.out.println("Adding daily tasks");
         Task task = new Task();
         task.setDescription("Startup Task");
         addNewDailyTask.create(task);

From f830524b20cf2dde5a8667779c39ac07ad84e095 Mon Sep 17 00:00:00 2001
From: andrebrowne <42154231+andrebrowne@users.noreply.github.com>
Date: Tue, 1 Oct 2019 20:15:39 -0400
Subject: [PATCH 014/156] Fixup styling

---
 .../architecture/application/task/AddNewDailyTask.java         | 2 +-
 .../com/baeldung/architecture/commands/task/CreateTask.java    | 2 +-
 .../com/baeldung/architecture/commands/task/GetAllTasks.java   | 2 +-
 .../com/baeldung/architecture/domain/task/TaskService.java     | 2 +-
 .../com/baeldung/architecture/framework/cli/StartupRunner.java | 2 +-
 .../architecture/framework/http/task/TaskApiController.java    | 2 +-
 .../baeldung/architecture/framework/http/task/TaskRequest.java | 3 +--
 7 files changed, 7 insertions(+), 8 deletions(-)

diff --git a/architecture/src/main/java/com/baeldung/architecture/application/task/AddNewDailyTask.java b/architecture/src/main/java/com/baeldung/architecture/application/task/AddNewDailyTask.java
index 208d1bfcc9..f9ee97542c 100644
--- a/architecture/src/main/java/com/baeldung/architecture/application/task/AddNewDailyTask.java
+++ b/architecture/src/main/java/com/baeldung/architecture/application/task/AddNewDailyTask.java
@@ -26,4 +26,4 @@ public class AddNewDailyTask implements CreateTask {
             addNewTask.create(task);
         }
     }
-};
+}
diff --git a/architecture/src/main/java/com/baeldung/architecture/commands/task/CreateTask.java b/architecture/src/main/java/com/baeldung/architecture/commands/task/CreateTask.java
index 26e6da10e2..ec60868a22 100644
--- a/architecture/src/main/java/com/baeldung/architecture/commands/task/CreateTask.java
+++ b/architecture/src/main/java/com/baeldung/architecture/commands/task/CreateTask.java
@@ -4,4 +4,4 @@ import com.baeldung.architecture.domain.task.Task;
 
 public interface CreateTask {
     public void create(Task newTask);
-};
+}
diff --git a/architecture/src/main/java/com/baeldung/architecture/commands/task/GetAllTasks.java b/architecture/src/main/java/com/baeldung/architecture/commands/task/GetAllTasks.java
index d3c40db92f..c9aa1be5f8 100644
--- a/architecture/src/main/java/com/baeldung/architecture/commands/task/GetAllTasks.java
+++ b/architecture/src/main/java/com/baeldung/architecture/commands/task/GetAllTasks.java
@@ -4,4 +4,4 @@ import com.baeldung.architecture.domain.task.Task;
 
 public interface GetAllTasks {
     public Iterable<Task> getAll();
-};
+}
diff --git a/architecture/src/main/java/com/baeldung/architecture/domain/task/TaskService.java b/architecture/src/main/java/com/baeldung/architecture/domain/task/TaskService.java
index cace0614ad..11ef0f3e19 100644
--- a/architecture/src/main/java/com/baeldung/architecture/domain/task/TaskService.java
+++ b/architecture/src/main/java/com/baeldung/architecture/domain/task/TaskService.java
@@ -19,4 +19,4 @@ public class TaskService {
         return taskRepository.findAll();
     }
 
-};
+}
diff --git a/architecture/src/main/java/com/baeldung/architecture/framework/cli/StartupRunner.java b/architecture/src/main/java/com/baeldung/architecture/framework/cli/StartupRunner.java
index cf38e5ee5e..449bc9386e 100644
--- a/architecture/src/main/java/com/baeldung/architecture/framework/cli/StartupRunner.java
+++ b/architecture/src/main/java/com/baeldung/architecture/framework/cli/StartupRunner.java
@@ -21,4 +21,4 @@ public class StartupRunner implements ApplicationRunner {
         task.setDescription("Startup Task");
         addNewDailyTask.create(task);
     }
-}
\ No newline at end of file
+}
diff --git a/architecture/src/main/java/com/baeldung/architecture/framework/http/task/TaskApiController.java b/architecture/src/main/java/com/baeldung/architecture/framework/http/task/TaskApiController.java
index c6f7bff2dd..87a8f5fe4b 100644
--- a/architecture/src/main/java/com/baeldung/architecture/framework/http/task/TaskApiController.java
+++ b/architecture/src/main/java/com/baeldung/architecture/framework/http/task/TaskApiController.java
@@ -39,4 +39,4 @@ public class TaskApiController {
         task.setDueDate(Instant.parse(taskRequest.getDueDate()));
         addNewTask.create(task);
     }
-}
\ No newline at end of file
+}
diff --git a/architecture/src/main/java/com/baeldung/architecture/framework/http/task/TaskRequest.java b/architecture/src/main/java/com/baeldung/architecture/framework/http/task/TaskRequest.java
index 2e353b079a..70b98a32f9 100644
--- a/architecture/src/main/java/com/baeldung/architecture/framework/http/task/TaskRequest.java
+++ b/architecture/src/main/java/com/baeldung/architecture/framework/http/task/TaskRequest.java
@@ -25,5 +25,4 @@ public class TaskRequest {
     public void setDueDate(String dueDate) {
         this.dueDate = dueDate;
     }
-
-} 
\ No newline at end of file
+} 

From b4be5f28a1da02c3501d43c56b8c508daf900b59 Mon Sep 17 00:00:00 2001
From: Ankur Gupta <ankur.gupta@jda.com>
Date: Sun, 31 May 2020 03:00:18 +0530
Subject: [PATCH 015/156] Changing the Test class name from IntegrationUnitTest
 to IntegrationTest

---
 ...onUnitTest.java => MultipleCacheManagerIntegrationTest.java} | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)
 rename spring-caching/src/test/java/com/baeldung/multiplecachemanager/{MultipleCacheManagerIntegrationUnitTest.java => MultipleCacheManagerIntegrationTest.java} (97%)

diff --git a/spring-caching/src/test/java/com/baeldung/multiplecachemanager/MultipleCacheManagerIntegrationUnitTest.java b/spring-caching/src/test/java/com/baeldung/multiplecachemanager/MultipleCacheManagerIntegrationTest.java
similarity index 97%
rename from spring-caching/src/test/java/com/baeldung/multiplecachemanager/MultipleCacheManagerIntegrationUnitTest.java
rename to spring-caching/src/test/java/com/baeldung/multiplecachemanager/MultipleCacheManagerIntegrationTest.java
index e02e5da246..c83d4f9e96 100644
--- a/spring-caching/src/test/java/com/baeldung/multiplecachemanager/MultipleCacheManagerIntegrationUnitTest.java
+++ b/spring-caching/src/test/java/com/baeldung/multiplecachemanager/MultipleCacheManagerIntegrationTest.java
@@ -17,7 +17,7 @@ import com.baeldung.multiplecachemanager.repository.OrderDetailRepository;
 
 @SpringBootApplication
 @SpringBootTest
-public class MultipleCacheManagerIntegrationUnitTest {
+public class MultipleCacheManagerIntegrationTest {
 
     @MockBean
     private OrderDetailRepository orderDetailRepository;

From e8d8dd085f0b215f5680b20ab9b3a77547c23960 Mon Sep 17 00:00:00 2001
From: Ankur Gupta <ankur.gupta@jda.com>
Date: Sun, 21 Jun 2020 02:13:35 +0530
Subject: [PATCH 016/156] Fixing UT failure in build

---
 spring-caching/src/main/resources/schema.sql | 3 +++
 1 file changed, 3 insertions(+)

diff --git a/spring-caching/src/main/resources/schema.sql b/spring-caching/src/main/resources/schema.sql
index 5862499bc0..7d5cb36d66 100644
--- a/spring-caching/src/main/resources/schema.sql
+++ b/spring-caching/src/main/resources/schema.sql
@@ -1,3 +1,6 @@
+DROP TABLE ORDERDETAIL IF EXISTS;
+DROP TABLE ITEM IF EXISTS;
+DROP TABLE CUSTOMER IF EXISTS;
 CREATE TABLE CUSTOMER(
   CUSTOMERID INT PRIMARY KEY,
   CUSTOMERNAME VARCHAR(250) NOT NULL

From 2d37d4ce87d6c279d6a5ec0f662efa04df82161f Mon Sep 17 00:00:00 2001
From: Jonathan Cook <jcook@sciops.esa.int>
Date: Mon, 29 Jun 2020 12:05:57 +0200
Subject: [PATCH 017/156] BAEL-4198 - Fix Selenium Live Tests

---
 testing-modules/selenium-junit-testng/pom.xml | 37 +++++--------
 .../baeldung/selenium/SeleniumExample.java    | 53 +++++++++++--------
 .../selenium/config/SeleniumConfig.java       | 22 ++++----
 .../selenium/models/BaeldungAbout.java        |  6 +--
 .../selenium/pages/BaeldungAboutPage.java     |  2 +-
 .../selenium/pages/BaeldungHomePage.java      |  6 +--
 .../selenium/pages/StartHerePage.java         |  4 +-
 ...a => SeleniumJavaScriptClickLiveTest.java} | 22 ++++----
 .../SeleniumCookiesJUnitLiveTest.java         | 32 ++++++++---
 .../junit/SeleniumWithJUnitLiveTest.java      | 25 +++++----
 .../SeleniumPageObjectLiveTest.java           | 10 ++--
 .../testng/SeleniumWithTestNGLiveTest.java    | 13 +++--
 12 files changed, 129 insertions(+), 103 deletions(-)
 rename testing-modules/selenium-junit-testng/src/test/java/com/baeldung/selenium/clickusingjavascript/{SeleniumJavaScriptClickTest.java => SeleniumJavaScriptClickLiveTest.java} (74%)
 rename testing-modules/selenium-junit-testng/src/test/java/com/baeldung/selenium/{junit => cookies}/SeleniumCookiesJUnitLiveTest.java (80%)
 rename testing-modules/selenium-junit-testng/src/test/java/com/baeldung/selenium/{junit => pages}/SeleniumPageObjectLiveTest.java (79%)

diff --git a/testing-modules/selenium-junit-testng/pom.xml b/testing-modules/selenium-junit-testng/pom.xml
index 3734bf72c9..44af047bdd 100644
--- a/testing-modules/selenium-junit-testng/pom.xml
+++ b/testing-modules/selenium-junit-testng/pom.xml
@@ -1,6 +1,7 @@
 <?xml version="1.0" encoding="UTF-8"?>
-<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
-         xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
+<project xmlns="http://maven.apache.org/POM/4.0.0"
+    xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+    xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
     <modelVersion>4.0.0</modelVersion>
     <artifactId>selenium-junit-testng</artifactId>
     <version>0.0.1-SNAPSHOT</version>
@@ -43,32 +44,22 @@
     </dependencies>
 
     <build>
-        <sourceDirectory>src</sourceDirectory>
+        <resources>
+            <resource>
+                <directory>src/main/resources</directory>
+                <filtering>true</filtering>
+            </resource>
+            <resource>
+                <directory>src/test/resources</directory>
+                <filtering>true</filtering>
+            </resource>
+        </resources>
     </build>
 
-    <profiles>
-        <profile>
-            <id>live</id>
-            <build>
-                <plugins>
-                    <plugin>
-                        <groupId>org.apache.maven.plugins</groupId>
-                        <artifactId>maven-surefire-plugin</artifactId>
-                        <version>${maven-surefire-plugin.version}</version>
-                        <configuration>
-                            <includes>
-                                <include>**/*LiveTest.java</include>
-                            </includes>
-                        </configuration>
-                    </plugin>
-                </plugins>
-            </build>
-        </profile>
-    </profiles>
-
     <properties>
         <testng.version>6.10</testng.version>
         <selenium-java.version>3.4.0</selenium-java.version>
+        <ashot.version>1.5.4</ashot.version>
     </properties>
 
 </project>
diff --git a/testing-modules/selenium-junit-testng/src/main/java/com/baeldung/selenium/SeleniumExample.java b/testing-modules/selenium-junit-testng/src/main/java/com/baeldung/selenium/SeleniumExample.java
index c5ad5182ff..b32e51d250 100644
--- a/testing-modules/selenium-junit-testng/src/main/java/com/baeldung/selenium/SeleniumExample.java
+++ b/testing-modules/selenium-junit-testng/src/main/java/com/baeldung/selenium/SeleniumExample.java
@@ -1,14 +1,12 @@
-package main.java.com.baeldung.selenium;
-
-import main.java.com.baeldung.selenium.config.SeleniumConfig;
-import org.openqa.selenium.By;
-import org.openqa.selenium.WebDriver;
-import org.openqa.selenium.WebElement;
-import org.openqa.selenium.firefox.FirefoxDriver;
-import org.openqa.selenium.interactions.Actions;
+package com.baeldung.selenium;
 
 import java.util.List;
-import java.util.concurrent.TimeUnit;
+
+import org.openqa.selenium.By;
+import org.openqa.selenium.WebElement;
+import org.openqa.selenium.interactions.Actions;
+
+import com.baeldung.selenium.config.SeleniumConfig;
 
 public class SeleniumExample {
 
@@ -17,15 +15,18 @@ public class SeleniumExample {
 
     public SeleniumExample() {
         config = new SeleniumConfig();
-        config.getDriver().get(url);
+        config.getDriver()
+            .get(url);
     }
 
     public void closeWindow() {
-        this.config.getDriver().close();
+        this.config.getDriver()
+            .close();
     }
 
     public String getTitle() {
-        return this.config.getDriver().getTitle();
+        return this.config.getDriver()
+            .getTitle();
     }
 
     public void getAboutBaeldungPage() {
@@ -35,29 +36,35 @@ public class SeleniumExample {
     }
 
     private void closeOverlay() {
-        List<WebElement> webElementList = this.config.getDriver().findElements(By.tagName("a"));
+        List<WebElement> webElementList = this.config.getDriver()
+            .findElements(By.tagName("a"));
         if (webElementList != null) {
             webElementList.stream()
-              .filter(webElement -> "Close".equalsIgnoreCase(webElement.getAttribute("title")))
-              .filter(WebElement::isDisplayed)
-              .findAny()
-              .ifPresent(WebElement::click);
+                .filter(webElement -> "Close".equalsIgnoreCase(webElement.getAttribute("title")))
+                .filter(WebElement::isDisplayed)
+                .findAny()
+                .ifPresent(WebElement::click);
         }
     }
 
     private void clickAboutLink() {
-        this.config.getDriver().findElement(By.partialLinkText("About")).click();
+        Actions actions = new Actions(config.getDriver());
+        WebElement aboutElement = this.config.getDriver()
+            .findElement(By.id("menu-item-6138"));
+        
+        actions.moveToElement(aboutElement).perform();
     }
 
     private void clickAboutUsLink() {
-        Actions builder = new Actions(config.getDriver());
-        WebElement element = this.config.getDriver().findElement(By.partialLinkText("About Baeldung."));
-        builder.moveToElement(element).build().perform();
+        WebElement element = this.config.getDriver()
+            .findElement(By.partialLinkText("About Baeldung."));
+        element.click();
     }
 
     public boolean isAuthorInformationAvailable() {
         return this.config.getDriver()
-                .findElement(By.cssSelector("article > .row > div"))
-                .isDisplayed();
+            .getPageSource()
+            .contains("Hey ! I'm Eugen");
     }
+
 }
diff --git a/testing-modules/selenium-junit-testng/src/main/java/com/baeldung/selenium/config/SeleniumConfig.java b/testing-modules/selenium-junit-testng/src/main/java/com/baeldung/selenium/config/SeleniumConfig.java
index c84283b76b..b1b7754648 100644
--- a/testing-modules/selenium-junit-testng/src/main/java/com/baeldung/selenium/config/SeleniumConfig.java
+++ b/testing-modules/selenium-junit-testng/src/main/java/com/baeldung/selenium/config/SeleniumConfig.java
@@ -1,17 +1,14 @@
-package main.java.com.baeldung.selenium.config;
+package com.baeldung.selenium.config;
+
+import java.io.File;
+import java.util.concurrent.TimeUnit;
 
 import org.openqa.selenium.Capabilities;
 import org.openqa.selenium.WebDriver;
 import org.openqa.selenium.WebElement;
-import org.openqa.selenium.chrome.ChromeDriver;
 import org.openqa.selenium.firefox.FirefoxDriver;
 import org.openqa.selenium.remote.DesiredCapabilities;
 
-import java.io.File;
-import java.util.concurrent.TimeUnit;
-import java.util.regex.Matcher;
-import java.util.regex.Pattern;
-
 public class SeleniumConfig {
 
     private WebDriver driver;
@@ -19,15 +16,17 @@ public class SeleniumConfig {
     public SeleniumConfig() {
         Capabilities capabilities = DesiredCapabilities.firefox();
         driver = new FirefoxDriver(capabilities);
-        driver.manage().timeouts().implicitlyWait(5, TimeUnit.SECONDS);
+        driver.manage()
+            .timeouts()
+            .implicitlyWait(5, TimeUnit.SECONDS);
     }
 
     static {
         System.setProperty("webdriver.gecko.driver", findFile("geckodriver.mac"));
     }
 
-    static private String findFile(String filename) {
-        String paths[] = {"", "bin/", "target/classes"}; // if you have chromedriver somewhere else on the path, then put it here.
+    private static String findFile(String filename) {
+        String[] paths = { "", "bin/", "target/classes" }; // if you have chromedriver somewhere else on the path, then put it here.
         for (String path : paths) {
             if (new File(path + filename).exists())
                 return path + filename;
@@ -40,7 +39,8 @@ public class SeleniumConfig {
     }
 
     public void navigateTo(String url) {
-        driver.navigate().to(url);
+        driver.navigate()
+            .to(url);
     }
 
     public void clickElement(WebElement element) {
diff --git a/testing-modules/selenium-junit-testng/src/main/java/com/baeldung/selenium/models/BaeldungAbout.java b/testing-modules/selenium-junit-testng/src/main/java/com/baeldung/selenium/models/BaeldungAbout.java
index 838beb5326..580cbd1f2b 100644
--- a/testing-modules/selenium-junit-testng/src/main/java/com/baeldung/selenium/models/BaeldungAbout.java
+++ b/testing-modules/selenium-junit-testng/src/main/java/com/baeldung/selenium/models/BaeldungAbout.java
@@ -1,7 +1,7 @@
-package main.java.com.baeldung.selenium.models;
+package com.baeldung.selenium.models;
 
-import main.java.com.baeldung.selenium.config.SeleniumConfig;
-import main.java.com.baeldung.selenium.pages.BaeldungAboutPage;
+import com.baeldung.selenium.config.SeleniumConfig;
+import com.baeldung.selenium.pages.BaeldungAboutPage;
 import org.openqa.selenium.support.PageFactory;
 
 public class BaeldungAbout {
diff --git a/testing-modules/selenium-junit-testng/src/main/java/com/baeldung/selenium/pages/BaeldungAboutPage.java b/testing-modules/selenium-junit-testng/src/main/java/com/baeldung/selenium/pages/BaeldungAboutPage.java
index d33cb76398..064462fc10 100644
--- a/testing-modules/selenium-junit-testng/src/main/java/com/baeldung/selenium/pages/BaeldungAboutPage.java
+++ b/testing-modules/selenium-junit-testng/src/main/java/com/baeldung/selenium/pages/BaeldungAboutPage.java
@@ -1,4 +1,4 @@
-package main.java.com.baeldung.selenium.pages;
+package com.baeldung.selenium.pages;
 
 import org.openqa.selenium.WebElement;
 import org.openqa.selenium.support.FindBy;
diff --git a/testing-modules/selenium-junit-testng/src/main/java/com/baeldung/selenium/pages/BaeldungHomePage.java b/testing-modules/selenium-junit-testng/src/main/java/com/baeldung/selenium/pages/BaeldungHomePage.java
index 55a8044375..d901bf3c34 100644
--- a/testing-modules/selenium-junit-testng/src/main/java/com/baeldung/selenium/pages/BaeldungHomePage.java
+++ b/testing-modules/selenium-junit-testng/src/main/java/com/baeldung/selenium/pages/BaeldungHomePage.java
@@ -1,6 +1,6 @@
-package main.java.com.baeldung.selenium.pages;
+package com.baeldung.selenium.pages;
 
-import main.java.com.baeldung.selenium.config.SeleniumConfig;
+import com.baeldung.selenium.config.SeleniumConfig;
 import org.openqa.selenium.WebElement;
 import org.openqa.selenium.support.FindBy;
 import org.openqa.selenium.support.PageFactory;
@@ -8,7 +8,7 @@ import org.openqa.selenium.support.PageFactory;
 public class BaeldungHomePage {
 
     private SeleniumConfig config;
-    @FindBy(css=".header--menu > a")
+    @FindBy(css = ".nav--logo_mobile")
     private WebElement title;
     @FindBy(css = ".menu-start-here > a")
     private WebElement startHere;
diff --git a/testing-modules/selenium-junit-testng/src/main/java/com/baeldung/selenium/pages/StartHerePage.java b/testing-modules/selenium-junit-testng/src/main/java/com/baeldung/selenium/pages/StartHerePage.java
index 4f0ee9edcd..ccc166c351 100644
--- a/testing-modules/selenium-junit-testng/src/main/java/com/baeldung/selenium/pages/StartHerePage.java
+++ b/testing-modules/selenium-junit-testng/src/main/java/com/baeldung/selenium/pages/StartHerePage.java
@@ -1,6 +1,6 @@
-package main.java.com.baeldung.selenium.pages;
+package com.baeldung.selenium.pages;
 
-import main.java.com.baeldung.selenium.config.SeleniumConfig;
+import com.baeldung.selenium.config.SeleniumConfig;
 import org.openqa.selenium.WebElement;
 import org.openqa.selenium.support.FindBy;
 
diff --git a/testing-modules/selenium-junit-testng/src/test/java/com/baeldung/selenium/clickusingjavascript/SeleniumJavaScriptClickTest.java b/testing-modules/selenium-junit-testng/src/test/java/com/baeldung/selenium/clickusingjavascript/SeleniumJavaScriptClickLiveTest.java
similarity index 74%
rename from testing-modules/selenium-junit-testng/src/test/java/com/baeldung/selenium/clickusingjavascript/SeleniumJavaScriptClickTest.java
rename to testing-modules/selenium-junit-testng/src/test/java/com/baeldung/selenium/clickusingjavascript/SeleniumJavaScriptClickLiveTest.java
index 6d2ab8ef1f..de519a44fc 100644
--- a/testing-modules/selenium-junit-testng/src/test/java/com/baeldung/selenium/clickusingjavascript/SeleniumJavaScriptClickTest.java
+++ b/testing-modules/selenium-junit-testng/src/test/java/com/baeldung/selenium/clickusingjavascript/SeleniumJavaScriptClickLiveTest.java
@@ -1,4 +1,4 @@
-package java.com.baeldung.selenium.clickusingjavascript;
+package com.baeldung.selenium.clickusingjavascript;
 
 import org.junit.After;
 import org.junit.Before;
@@ -14,16 +14,18 @@ import org.openqa.selenium.support.ui.WebDriverWait;
 import static org.junit.Assert.assertEquals;
 import static org.junit.Assert.assertTrue;
 
-public class SeleniumJavaScriptClickTest {
+import java.io.File;
+
+public class SeleniumJavaScriptClickLiveTest {
 
     private WebDriver driver;
     private WebDriverWait wait;
 
     @Before
     public void setUp() {
-        System.setProperty("webdriver.chrome.driver", "chromedriver.exe");
+        System.setProperty("webdriver.chrome.driver", new File("src/main/resources/chromedriver.mac").getAbsolutePath());
         driver = new ChromeDriver();
-        wait = new WebDriverWait(driver, 5000);
+        wait = new WebDriverWait(driver, 20);
     }
 
     @After
@@ -37,19 +39,21 @@ public class SeleniumJavaScriptClickTest {
         String title = driver.getTitle();
         assertEquals("Baeldung | Java, Spring and Web Development tutorials", title);
 
-        wait.until(ExpectedConditions.elementToBeClickable(By.className("menu-search")));
-        WebElement searchButton = driver.findElement(By.className("menu-search"));
+        wait.until(ExpectedConditions.elementToBeClickable(By.className("nav--menu_item_anchor")));
+        WebElement searchButton = driver.findElement(By.className("nav--menu_item_anchor"));
         clickElement(searchButton);
 
         wait.until(ExpectedConditions.elementToBeClickable(By.id("search")));
         WebElement searchInput = driver.findElement(By.id("search"));
         searchInput.sendKeys("Selenium");
 
-        wait.until(ExpectedConditions.elementToBeClickable(By.className("btn-search")));
-        WebElement seeSearchResultsButton = driver.findElement(By.className("btn-search"));
+        wait.until(ExpectedConditions.elementToBeClickable(By.cssSelector(".btn-search")));
+        WebElement seeSearchResultsButton = driver.findElement(By.cssSelector(".btn-search"));
         clickElement(seeSearchResultsButton);
 
-        int seleniumPostsCount = driver.findElements(By.className("post")).size();
+        wait.until(ExpectedConditions.presenceOfAllElementsLocatedBy(By.className("post")));
+        int seleniumPostsCount = driver.findElements(By.className("post"))
+            .size();
         assertTrue(seleniumPostsCount > 0);
     }
 
diff --git a/testing-modules/selenium-junit-testng/src/test/java/com/baeldung/selenium/junit/SeleniumCookiesJUnitLiveTest.java b/testing-modules/selenium-junit-testng/src/test/java/com/baeldung/selenium/cookies/SeleniumCookiesJUnitLiveTest.java
similarity index 80%
rename from testing-modules/selenium-junit-testng/src/test/java/com/baeldung/selenium/junit/SeleniumCookiesJUnitLiveTest.java
rename to testing-modules/selenium-junit-testng/src/test/java/com/baeldung/selenium/cookies/SeleniumCookiesJUnitLiveTest.java
index 0cbbf52454..337e3b85fb 100644
--- a/testing-modules/selenium-junit-testng/src/test/java/com/baeldung/selenium/junit/SeleniumCookiesJUnitLiveTest.java
+++ b/testing-modules/selenium-junit-testng/src/test/java/com/baeldung/selenium/cookies/SeleniumCookiesJUnitLiveTest.java
@@ -1,4 +1,16 @@
-package test.java.com.baeldung.selenium.junit;
+package com.baeldung.selenium.cookies;
+
+import static org.hamcrest.MatcherAssert.assertThat;
+import static org.hamcrest.Matchers.containsString;
+import static org.hamcrest.Matchers.empty;
+import static org.hamcrest.Matchers.equalTo;
+import static org.hamcrest.Matchers.is;
+import static org.hamcrest.Matchers.not;
+import static org.hamcrest.Matchers.nullValue;
+
+import java.io.File;
+import java.util.Set;
+import java.util.concurrent.TimeUnit;
 
 import org.junit.After;
 import org.junit.Before;
@@ -9,12 +21,6 @@ import org.openqa.selenium.WebDriver;
 import org.openqa.selenium.firefox.FirefoxDriver;
 import org.openqa.selenium.remote.DesiredCapabilities;
 
-import java.util.Set;
-import java.util.concurrent.TimeUnit;
-
-import static org.hamcrest.MatcherAssert.assertThat;
-import static org.hamcrest.Matchers.*;
-
 public class SeleniumCookiesJUnitLiveTest {
 
     private WebDriver driver;
@@ -22,11 +28,21 @@ public class SeleniumCookiesJUnitLiveTest {
 
     @Before
     public void setUp() {
+        System.setProperty("webdriver.gecko.driver", findFile("geckodriver.mac"));
+        
         Capabilities capabilities = DesiredCapabilities.firefox();
         driver = new FirefoxDriver(capabilities);
         navUrl = "https://baeldung.com";
         driver.manage().timeouts().implicitlyWait(5, TimeUnit.SECONDS);
-        System.setProperty("webdriver.gecko.driver", "geckodriver.exe");
+    }
+    
+    private static String findFile(String filename) {
+        String[] paths = { "", "bin/", "target/classes" }; // if you have chromedriver somewhere else on the path, then put it here.
+        for (String path : paths) {
+            if (new File(path + filename).exists())
+                return path + filename;
+        }
+        return "";
     }
 
     @After
diff --git a/testing-modules/selenium-junit-testng/src/test/java/com/baeldung/selenium/junit/SeleniumWithJUnitLiveTest.java b/testing-modules/selenium-junit-testng/src/test/java/com/baeldung/selenium/junit/SeleniumWithJUnitLiveTest.java
index b1a4149358..1b1035cc6c 100644
--- a/testing-modules/selenium-junit-testng/src/test/java/com/baeldung/selenium/junit/SeleniumWithJUnitLiveTest.java
+++ b/testing-modules/selenium-junit-testng/src/test/java/com/baeldung/selenium/junit/SeleniumWithJUnitLiveTest.java
@@ -1,16 +1,21 @@
-package test.java.com.baeldung.selenium.junit;
+package com.baeldung.selenium.junit;
+
+import static org.junit.Assert.assertEquals;
+import static org.junit.Assert.assertNotNull;
+import static org.junit.Assert.assertTrue;
+
+import java.io.IOException;
 
-import main.java.com.baeldung.selenium.SeleniumExample;
 import org.junit.AfterClass;
 import org.junit.BeforeClass;
 import org.junit.Test;
 
-import static org.testng.Assert.*;
+import com.baeldung.selenium.SeleniumExample;
 
 public class SeleniumWithJUnitLiveTest {
 
     private static SeleniumExample seleniumExample;
-    private String expectedTitle = "Baeldung | Java, Spring and Web Development tutorials";
+    private String expectedTitle = "About Baeldung | Baeldung";
 
     @BeforeClass
     public static void setUp() {
@@ -18,17 +23,17 @@ public class SeleniumWithJUnitLiveTest {
     }
 
     @AfterClass
-    public static void tearDown() {
+    public static void tearDown() throws IOException {
         seleniumExample.closeWindow();
     }
 
     @Test
     public void whenAboutBaeldungIsLoaded_thenAboutEugenIsMentionedOnPage() {
-            seleniumExample.getAboutBaeldungPage();
-            String actualTitle = seleniumExample.getTitle();
-            assertNotNull(actualTitle);
-            assertEquals(expectedTitle, actualTitle);
-            assertTrue(seleniumExample.isAuthorInformationAvailable());
+        seleniumExample.getAboutBaeldungPage();
+        String actualTitle = seleniumExample.getTitle();
+        assertNotNull(actualTitle);
+        assertEquals(expectedTitle, actualTitle);
+        assertTrue(seleniumExample.isAuthorInformationAvailable());
     }
 
 }
diff --git a/testing-modules/selenium-junit-testng/src/test/java/com/baeldung/selenium/junit/SeleniumPageObjectLiveTest.java b/testing-modules/selenium-junit-testng/src/test/java/com/baeldung/selenium/pages/SeleniumPageObjectLiveTest.java
similarity index 79%
rename from testing-modules/selenium-junit-testng/src/test/java/com/baeldung/selenium/junit/SeleniumPageObjectLiveTest.java
rename to testing-modules/selenium-junit-testng/src/test/java/com/baeldung/selenium/pages/SeleniumPageObjectLiveTest.java
index 8493122414..96772821a9 100644
--- a/testing-modules/selenium-junit-testng/src/test/java/com/baeldung/selenium/junit/SeleniumPageObjectLiveTest.java
+++ b/testing-modules/selenium-junit-testng/src/test/java/com/baeldung/selenium/pages/SeleniumPageObjectLiveTest.java
@@ -1,9 +1,9 @@
-package test.java.com.baeldung.selenium.junit;
+package com.baeldung.selenium.pages;
 
-import main.java.com.baeldung.selenium.config.SeleniumConfig;
-import main.java.com.baeldung.selenium.models.BaeldungAbout;
-import main.java.com.baeldung.selenium.pages.BaeldungHomePage;
-import main.java.com.baeldung.selenium.pages.StartHerePage;
+import com.baeldung.selenium.config.SeleniumConfig;
+import com.baeldung.selenium.models.BaeldungAbout;
+import com.baeldung.selenium.pages.BaeldungHomePage;
+import com.baeldung.selenium.pages.StartHerePage;
 import org.junit.After;
 import org.junit.Before;
 import org.junit.Test;
diff --git a/testing-modules/selenium-junit-testng/src/test/java/com/baeldung/selenium/testng/SeleniumWithTestNGLiveTest.java b/testing-modules/selenium-junit-testng/src/test/java/com/baeldung/selenium/testng/SeleniumWithTestNGLiveTest.java
index 94426edc6d..85fa00c0ab 100644
--- a/testing-modules/selenium-junit-testng/src/test/java/com/baeldung/selenium/testng/SeleniumWithTestNGLiveTest.java
+++ b/testing-modules/selenium-junit-testng/src/test/java/com/baeldung/selenium/testng/SeleniumWithTestNGLiveTest.java
@@ -1,16 +1,19 @@
-package test.java.com.baeldung.selenium.testng;
+package com.baeldung.selenium.testng;
+
+import com.baeldung.selenium.SeleniumExample;
+
+import static org.junit.Assert.assertEquals;
+import static org.junit.Assert.assertNotNull;
+import static org.junit.Assert.assertTrue;
 
-import main.java.com.baeldung.selenium.SeleniumExample;
 import org.testng.annotations.AfterSuite;
 import org.testng.annotations.BeforeSuite;
 import org.testng.annotations.Test;
 
-import static org.testng.Assert.*;
-
 public class SeleniumWithTestNGLiveTest {
 
     private SeleniumExample seleniumExample;
-    private String expectedTitle = "Baeldung | Java, Spring and Web Development tutorials";
+    private String expectedTitle = "About Baeldung | Baeldung";
 
     @BeforeSuite
     public void setUp() {

From 35e88cd1c57be5eb25da73f48e9c7e1b6f1cef36 Mon Sep 17 00:00:00 2001
From: Jonathan Cook <jcook@sciops.esa.int>
Date: Mon, 29 Jun 2020 15:56:23 +0200
Subject: [PATCH 018/156] BAEL-4198

---
 testing-modules/selenium-junit-testng/pom.xml | 1 -
 1 file changed, 1 deletion(-)

diff --git a/testing-modules/selenium-junit-testng/pom.xml b/testing-modules/selenium-junit-testng/pom.xml
index 44af047bdd..210c2051da 100644
--- a/testing-modules/selenium-junit-testng/pom.xml
+++ b/testing-modules/selenium-junit-testng/pom.xml
@@ -59,7 +59,6 @@
     <properties>
         <testng.version>6.10</testng.version>
         <selenium-java.version>3.4.0</selenium-java.version>
-        <ashot.version>1.5.4</ashot.version>
     </properties>
 
 </project>

From a97a87735a6a95f98bb4b88dc750a577447a2e73 Mon Sep 17 00:00:00 2001
From: Jonathan Cook <jcook@sciops.esa.int>
Date: Tue, 30 Jun 2020 15:24:38 +0200
Subject: [PATCH 019/156] BAEL-4024 - Taking Screenshots with Selenium
 WebDriver

---
 testing-modules/selenium-junit-testng/pom.xml |  6 ++
 .../TakeScreenShotSeleniumLiveTest.java       | 85 +++++++++++++++++++
 2 files changed, 91 insertions(+)
 create mode 100644 testing-modules/selenium-junit-testng/src/test/java/com/baeldung/selenium/screenshot/TakeScreenShotSeleniumLiveTest.java

diff --git a/testing-modules/selenium-junit-testng/pom.xml b/testing-modules/selenium-junit-testng/pom.xml
index 210c2051da..8d661997f8 100644
--- a/testing-modules/selenium-junit-testng/pom.xml
+++ b/testing-modules/selenium-junit-testng/pom.xml
@@ -41,6 +41,11 @@
             <artifactId>hamcrest-all</artifactId>
             <version>${hamcrest-all.version}</version>
         </dependency>
+        <dependency>
+            <groupId>ru.yandex.qatools.ashot</groupId>
+            <artifactId>ashot</artifactId>
+            <version>${ashot.version}</version>
+        </dependency>
     </dependencies>
 
     <build>
@@ -59,6 +64,7 @@
     <properties>
         <testng.version>6.10</testng.version>
         <selenium-java.version>3.4.0</selenium-java.version>
+        <ashot.version>1.5.4</ashot.version>
     </properties>
 
 </project>
diff --git a/testing-modules/selenium-junit-testng/src/test/java/com/baeldung/selenium/screenshot/TakeScreenShotSeleniumLiveTest.java b/testing-modules/selenium-junit-testng/src/test/java/com/baeldung/selenium/screenshot/TakeScreenShotSeleniumLiveTest.java
new file mode 100644
index 0000000000..cf705bb81f
--- /dev/null
+++ b/testing-modules/selenium-junit-testng/src/test/java/com/baeldung/selenium/screenshot/TakeScreenShotSeleniumLiveTest.java
@@ -0,0 +1,85 @@
+package com.baeldung.selenium.screenshot;
+
+import static org.junit.Assert.assertTrue;
+
+import java.io.File;
+import java.io.IOException;
+import java.util.concurrent.TimeUnit;
+
+import javax.imageio.ImageIO;
+
+import org.apache.commons.io.FileUtils;
+import org.junit.AfterClass;
+import org.junit.BeforeClass;
+import org.junit.Test;
+import org.openqa.selenium.By;
+import org.openqa.selenium.Capabilities;
+import org.openqa.selenium.OutputType;
+import org.openqa.selenium.TakesScreenshot;
+import org.openqa.selenium.WebElement;
+import org.openqa.selenium.chrome.ChromeDriver;
+import org.openqa.selenium.remote.DesiredCapabilities;
+
+import ru.yandex.qatools.ashot.AShot;
+import ru.yandex.qatools.ashot.Screenshot;
+import ru.yandex.qatools.ashot.coordinates.WebDriverCoordsProvider;
+import ru.yandex.qatools.ashot.shooting.ShootingStrategies;
+
+public class TakeScreenShotSeleniumLiveTest {
+
+    private static ChromeDriver driver;
+
+    @BeforeClass
+    public static void setUp() {
+        System.setProperty("webdriver.chrome.driver", resolveResourcePath("chromedriver.mac"));
+
+        Capabilities capabilities = DesiredCapabilities.chrome();
+        driver = new ChromeDriver(capabilities);
+        driver.manage()
+            .timeouts()
+            .implicitlyWait(5, TimeUnit.SECONDS);
+
+        driver.get("http://www.google.com/");
+    }
+
+    @AfterClass
+    public static void tearDown() throws IOException {
+        driver.close();
+
+        System.clearProperty("webdriver.chrome.driver");
+    }
+
+    @Test
+    public void whenGoogleIsLoaded_thenCaptureScreenshot() throws IOException {
+        takeScreenshot(resolveTestResourcePath("google-home.png"));
+
+        assertTrue(new File(resolveTestResourcePath("google-home.png")).exists());
+    }
+
+    @Test
+    public void whenGoogleIsLoaded_thenCaptureLogo() throws IOException {
+        WebElement logo = driver.findElement(By.id("hplogo"));
+
+        Screenshot screenshot = new AShot().shootingStrategy(ShootingStrategies.viewportPasting(1000))
+            .coordsProvider(new WebDriverCoordsProvider())
+            .takeScreenshot(driver, logo);
+
+        ImageIO.write(screenshot.getImage(), "jpg", new File(resolveTestResourcePath("google-logo.png")));
+        assertTrue(new File(resolveTestResourcePath("google-logo.png")).exists());
+    }
+
+    public void takeScreenshot(String pathname) throws IOException {
+        File src = ((TakesScreenshot) driver).getScreenshotAs(OutputType.FILE);
+        FileUtils.copyFile(src, new File(pathname));
+    }
+
+    private static String resolveResourcePath(String filename) {
+        File file = new File("src/main/resources/" + filename);
+        return file.getAbsolutePath();
+    }
+
+    private static String resolveTestResourcePath(String filename) {
+        File file = new File("src/test/resources/" + filename);
+        return file.getAbsolutePath();
+    }
+}

From 48cdcb20fb46d3a8d48ad94e598851ff7ce9f556 Mon Sep 17 00:00:00 2001
From: luvarqpp <lubomir.varga@qpp.sk>
Date: Wed, 1 Jul 2020 15:39:19 +0200
Subject: [PATCH 020/156] Fix exception when receiving POISON_PILL

POISON_PILL is causing writing to closed client due to logic in code.
---
 .../src/main/java/com/baeldung/selector/EchoServer.java   | 8 ++++----
 1 file changed, 4 insertions(+), 4 deletions(-)

diff --git a/core-java-modules/core-java-nio-2/src/main/java/com/baeldung/selector/EchoServer.java b/core-java-modules/core-java-nio-2/src/main/java/com/baeldung/selector/EchoServer.java
index 8cf2e941fe..9e9edcd0ba 100644
--- a/core-java-modules/core-java-nio-2/src/main/java/com/baeldung/selector/EchoServer.java
+++ b/core-java-modules/core-java-nio-2/src/main/java/com/baeldung/selector/EchoServer.java
@@ -49,11 +49,11 @@ public class EchoServer {
         if (new String(buffer.array()).trim().equals(POISON_PILL)) {
             client.close();
             System.out.println("Not accepting client messages anymore");
+        } else {
+            buffer.flip();
+            client.write(buffer);
+            buffer.clear();
         }
-
-        buffer.flip();
-        client.write(buffer);
-        buffer.clear();
     }
 
     private static void register(Selector selector, ServerSocketChannel serverSocket) throws IOException {

From b2a0fcd76bcf6eaa70c99d530b383c6711239ec6 Mon Sep 17 00:00:00 2001
From: root <anmoldeep0123@gmail.com>
Date: Mon, 6 Jul 2020 16:10:46 +0000
Subject: [PATCH 021/156] BAEL-4302 : How can I list all classes loaded in a
 specific class loader

---
 .../loadedclasslisting/ClassLoaderType.java   |  6 +++
 .../baeldung/loadedclasslisting/Launcher.java | 51 +++++++++++++++++++
 .../ListLoadedClassesAgent.java               | 46 +++++++++++++++++
 .../baeldung/loadedclasslisting/MANIFEST.MF   |  1 +
 .../customLoader/ClassLoaderInfo.java         | 12 +++++
 .../customLoader/CustomClassLoader.java       | 32 ++++++++++++
 6 files changed, 148 insertions(+)
 create mode 100644 core-java-modules/core-java-jvm-2/src/main/java/com/baeldung/loadedclasslisting/ClassLoaderType.java
 create mode 100644 core-java-modules/core-java-jvm-2/src/main/java/com/baeldung/loadedclasslisting/Launcher.java
 create mode 100644 core-java-modules/core-java-jvm-2/src/main/java/com/baeldung/loadedclasslisting/ListLoadedClassesAgent.java
 create mode 100644 core-java-modules/core-java-jvm-2/src/main/java/com/baeldung/loadedclasslisting/MANIFEST.MF
 create mode 100644 core-java-modules/core-java-jvm-2/src/main/java/com/baeldung/loadedclasslisting/customLoader/ClassLoaderInfo.java
 create mode 100644 core-java-modules/core-java-jvm-2/src/main/java/com/baeldung/loadedclasslisting/customLoader/CustomClassLoader.java

diff --git a/core-java-modules/core-java-jvm-2/src/main/java/com/baeldung/loadedclasslisting/ClassLoaderType.java b/core-java-modules/core-java-jvm-2/src/main/java/com/baeldung/loadedclasslisting/ClassLoaderType.java
new file mode 100644
index 0000000000..1111fc21fe
--- /dev/null
+++ b/core-java-modules/core-java-jvm-2/src/main/java/com/baeldung/loadedclasslisting/ClassLoaderType.java
@@ -0,0 +1,6 @@
+package com.baeldung.loadedclasslisting;
+
+public enum ClassLoaderType {
+
+    SYSTEM, EXTENSION, BOOTSTRAP, CUSTOM
+}
diff --git a/core-java-modules/core-java-jvm-2/src/main/java/com/baeldung/loadedclasslisting/Launcher.java b/core-java-modules/core-java-jvm-2/src/main/java/com/baeldung/loadedclasslisting/Launcher.java
new file mode 100644
index 0000000000..19c42dfd8d
--- /dev/null
+++ b/core-java-modules/core-java-jvm-2/src/main/java/com/baeldung/loadedclasslisting/Launcher.java
@@ -0,0 +1,51 @@
+package com.baeldung.loadedclasslisting;
+
+import java.lang.reflect.Method;
+import java.util.Arrays;
+
+import com.baeldung.loadedclasslisting.customLoader.ClassLoaderInfo;
+import com.baeldung.loadedclasslisting.customLoader.CustomClassLoader;
+
+public class Launcher {
+
+    private static ClassLoader customClassLoader;
+
+    public static void main(String[] args) {
+        
+        printClassesLoadedBy(ClassLoaderType.BOOTSTRAP);
+
+        printClassesLoadedBy(ClassLoaderType.SYSTEM);
+
+        printClassesLoadedBy(ClassLoaderType.EXTENSION);
+
+        printClassesLoadedBy(ClassLoaderType.CUSTOM);
+    }
+
+    private static void printClassesLoadedBy(ClassLoaderType classLoaderType) {
+        Class<?>[] classes;
+        if (classLoaderType.equals(ClassLoaderType.CUSTOM)) {
+            customClassLoader = customClassLoading();
+            classes = ListLoadedClassesAgent.listLoadedClasses(customClassLoader);
+        } else {
+            classes = ListLoadedClassesAgent.listLoadedClasses(classLoaderType);
+        }
+        Arrays.asList(classes)
+            .forEach(clazz -> System.out.println(
+              classLoaderType + " ClassLoader : " + clazz.getCanonicalName()));
+    }
+    
+    private static CustomClassLoader customClassLoading() {
+        CustomClassLoader customClassLoader = new CustomClassLoader();
+        Class<?> c;
+        try {
+            c = customClassLoader.findClass(ClassLoaderInfo.class.getName());
+            Object ob = c.getDeclaredConstructor()
+                .newInstance();
+            Method md = c.getMethod("printClassLoaders");
+            md.invoke(ob);
+        } catch (Exception e) {
+            e.printStackTrace();
+        }
+        return customClassLoader;
+    }
+}
diff --git a/core-java-modules/core-java-jvm-2/src/main/java/com/baeldung/loadedclasslisting/ListLoadedClassesAgent.java b/core-java-modules/core-java-jvm-2/src/main/java/com/baeldung/loadedclasslisting/ListLoadedClassesAgent.java
new file mode 100644
index 0000000000..03907f8b04
--- /dev/null
+++ b/core-java-modules/core-java-jvm-2/src/main/java/com/baeldung/loadedclasslisting/ListLoadedClassesAgent.java
@@ -0,0 +1,46 @@
+package com.baeldung.loadedclasslisting;
+
+import java.lang.instrument.Instrumentation;
+
+public class ListLoadedClassesAgent {
+
+    private static Instrumentation instrumentation;
+
+    public static void premain(String agentArgs, Instrumentation instrumentation) {
+        ListLoadedClassesAgent.instrumentation = instrumentation;
+    }
+
+    public static Class<?>[] listLoadedClasses(ClassLoaderType classLoaderType) {
+        if (instrumentation == null) {
+            throw new IllegalStateException(
+              "ListLoadedClassesAgent is not initialized.");
+        }
+        return instrumentation.getInitiatedClasses(
+          getClassLoader(classLoaderType));
+    }
+
+    public static Class<?>[] listLoadedClasses(ClassLoader classLoader) {
+        if (instrumentation == null) {
+            throw new IllegalStateException(
+              "ListLoadedClassesAgent is not initialized.");
+        }
+        return instrumentation.getInitiatedClasses(classLoader);
+    }
+
+    private static ClassLoader getClassLoader(ClassLoaderType classLoaderType) {
+        ClassLoader classLoader = null;
+        switch (classLoaderType) {
+        case SYSTEM:
+            classLoader = ClassLoader.getSystemClassLoader();
+            break;
+        case EXTENSION:
+            classLoader = ClassLoader.getSystemClassLoader().getParent();
+            break;
+        case BOOTSTRAP:
+            break;
+        default:
+            break;
+        }
+        return classLoader;
+    }
+}
diff --git a/core-java-modules/core-java-jvm-2/src/main/java/com/baeldung/loadedclasslisting/MANIFEST.MF b/core-java-modules/core-java-jvm-2/src/main/java/com/baeldung/loadedclasslisting/MANIFEST.MF
new file mode 100644
index 0000000000..4a60bda0b7
--- /dev/null
+++ b/core-java-modules/core-java-jvm-2/src/main/java/com/baeldung/loadedclasslisting/MANIFEST.MF
@@ -0,0 +1 @@
+Premain-Class: com.baeldung.loadedclasslisting.ListLoadedClassesAgent
\ No newline at end of file
diff --git a/core-java-modules/core-java-jvm-2/src/main/java/com/baeldung/loadedclasslisting/customLoader/ClassLoaderInfo.java b/core-java-modules/core-java-jvm-2/src/main/java/com/baeldung/loadedclasslisting/customLoader/ClassLoaderInfo.java
new file mode 100644
index 0000000000..a787b062d5
--- /dev/null
+++ b/core-java-modules/core-java-jvm-2/src/main/java/com/baeldung/loadedclasslisting/customLoader/ClassLoaderInfo.java
@@ -0,0 +1,12 @@
+package com.baeldung.loadedclasslisting.customLoader;
+
+import java.util.ArrayList;
+
+public class ClassLoaderInfo {
+
+    public void printClassLoaders() throws ClassNotFoundException {
+
+        System.out.println("Classloader of this class:" + ClassLoaderInfo.class.getClassLoader());
+        System.out.println("Classloader of ArrayList:" + ArrayList.class.getClassLoader());
+    }
+}
diff --git a/core-java-modules/core-java-jvm-2/src/main/java/com/baeldung/loadedclasslisting/customLoader/CustomClassLoader.java b/core-java-modules/core-java-jvm-2/src/main/java/com/baeldung/loadedclasslisting/customLoader/CustomClassLoader.java
new file mode 100644
index 0000000000..a5f293f605
--- /dev/null
+++ b/core-java-modules/core-java-jvm-2/src/main/java/com/baeldung/loadedclasslisting/customLoader/CustomClassLoader.java
@@ -0,0 +1,32 @@
+package com.baeldung.loadedclasslisting.customLoader;
+
+import java.io.ByteArrayOutputStream;
+import java.io.File;
+import java.io.IOException;
+import java.io.InputStream;
+
+public class CustomClassLoader extends ClassLoader {
+
+    @Override
+    public Class<?> findClass(String name) throws ClassNotFoundException {
+        byte[] b = loadClassFromFile(name);
+        return defineClass(name, b, 0, b.length);
+    }
+
+    private byte[] loadClassFromFile(String fileName) {
+        InputStream inputStream = getClass().getClassLoader()
+            .getResourceAsStream(fileName.replace('.', File.separatorChar) + ".class");
+        byte[] buffer;
+        ByteArrayOutputStream byteStream = new ByteArrayOutputStream();
+        int nextValue = 0;
+        try {
+            while ((nextValue = inputStream.read()) != -1) {
+                byteStream.write(nextValue);
+            }
+        } catch (IOException e) {
+            e.printStackTrace();
+        }
+        buffer = byteStream.toByteArray();
+        return buffer;
+    }
+}

From 23dbbb579dd55ed73b47f15ea8bc8d45b9c386ba Mon Sep 17 00:00:00 2001
From: Jonathan Cook <jcook@sciops.esa.int>
Date: Mon, 13 Jul 2020 15:02:13 +0200
Subject: [PATCH 022/156] BAEL-4341 - JUnit test for System.out.println()

---
 testing-modules/testing-libraries/pom.xml     | 15 +++++-
 .../systemout/SystemOutPrintlnUnitTest.java   | 49 +++++++++++++++++++
 .../SystemOutPrintlnWithRuleUnitTest.java     | 27 ++++++++++
 3 files changed, 90 insertions(+), 1 deletion(-)
 create mode 100644 testing-modules/testing-libraries/src/test/java/com/baeldung/systemout/SystemOutPrintlnUnitTest.java
 create mode 100644 testing-modules/testing-libraries/src/test/java/com/baeldung/systemout/SystemOutPrintlnWithRuleUnitTest.java

diff --git a/testing-modules/testing-libraries/pom.xml b/testing-modules/testing-libraries/pom.xml
index 53b58cee17..aa22a5253e 100644
--- a/testing-modules/testing-libraries/pom.xml
+++ b/testing-modules/testing-libraries/pom.xml
@@ -42,7 +42,18 @@
             <artifactId>spring-boot-starter-web</artifactId>
             <version>2.2.0.RELEASE</version>
         </dependency>
-
+        <dependency>
+            <groupId>com.github.stefanbirkner</groupId>
+            <artifactId>system-rules</artifactId>
+            <version>${system-rules.version}</version>
+            <scope>test</scope>
+        </dependency>
+        <dependency>
+            <groupId>com.github.stefanbirkner</groupId>
+            <artifactId>system-lambda</artifactId>
+            <version>${system-lambda.version}</version>
+            <scope>test</scope>
+        </dependency>
     </dependencies>
 
     <build>
@@ -90,6 +101,8 @@
         <lambda-behave.version>0.4</lambda-behave.version>
         <cucumber.version>4.8.0</cucumber.version>
         <checkstyle-maven-plugin.version>3.0.0</checkstyle-maven-plugin.version>
+        <system-rules.version>1.19.0</system-rules.version>
+        <system-lambda.version>1.0.0</system-lambda.version>
     </properties>
 
 </project>
diff --git a/testing-modules/testing-libraries/src/test/java/com/baeldung/systemout/SystemOutPrintlnUnitTest.java b/testing-modules/testing-libraries/src/test/java/com/baeldung/systemout/SystemOutPrintlnUnitTest.java
new file mode 100644
index 0000000000..3ffc508fa5
--- /dev/null
+++ b/testing-modules/testing-libraries/src/test/java/com/baeldung/systemout/SystemOutPrintlnUnitTest.java
@@ -0,0 +1,49 @@
+package com.baeldung.systemout;
+
+import java.io.ByteArrayOutputStream;
+import java.io.PrintStream;
+
+import org.junit.Assert;
+import org.junit.jupiter.api.BeforeEach;
+import org.junit.jupiter.api.Test;
+
+import static com.github.stefanbirkner.systemlambda.SystemLambda.tapSystemOut;
+
+class SystemOutPrintlnUnitTest {
+
+    private final ByteArrayOutputStream outputStreamCaptor = new ByteArrayOutputStream();
+    private final PrintStream standardOut = System.out;
+
+    @BeforeEach
+    public void setUp() {
+        System.setOut(new PrintStream(outputStreamCaptor));
+    }
+
+    @BeforeEach
+    public void tearDown() {
+        System.setOut(standardOut);
+    }
+
+    @Test
+    void givenSystemOutRedirection_whenInvokePrintln_thenOutputCaptorSuccess() {
+        print("Hello Baeldung Readers!!");
+
+        Assert.assertEquals("Hello Baeldung Readers!!", outputStreamCaptor.toString()
+            .trim());
+    }
+
+    @Test
+    void givenTapSystemOut_whenInvokePrintln_thenOutputIsReturnedSuccessfully() throws Exception {
+
+        String text = tapSystemOut(() -> {
+            print("Hello Baeldung Readers!!");
+        });
+
+        Assert.assertEquals("Hello Baeldung Readers!!", text.trim());
+    }
+
+    private void print(String output) {
+        System.out.println(output);
+    }
+
+}
diff --git a/testing-modules/testing-libraries/src/test/java/com/baeldung/systemout/SystemOutPrintlnWithRuleUnitTest.java b/testing-modules/testing-libraries/src/test/java/com/baeldung/systemout/SystemOutPrintlnWithRuleUnitTest.java
new file mode 100644
index 0000000000..f15b71999e
--- /dev/null
+++ b/testing-modules/testing-libraries/src/test/java/com/baeldung/systemout/SystemOutPrintlnWithRuleUnitTest.java
@@ -0,0 +1,27 @@
+package com.baeldung.systemout;
+
+import org.junit.Assert;
+import org.junit.Rule;
+import org.junit.Test;
+import org.junit.contrib.java.lang.system.SystemOutRule;
+
+public class SystemOutPrintlnWithRuleUnitTest {
+
+    @Rule
+    public final SystemOutRule systemOutRule = new SystemOutRule().enableLog();
+
+    @Test
+    public void givenSystemOutRule_whenInvokePrintln_thenLogSuccess() {
+        print("Hello Baeldung Readers!!");
+
+        Assert.assertEquals("Hello Baeldung Readers!!", systemOutRule.getLog()
+            .trim());
+
+        Assert.assertEquals("Hello Baeldung Readers!!\n", systemOutRule.getLogWithNormalizedLineSeparator());
+    }
+
+    private void print(String output) {
+        System.out.println(output);
+    }
+
+}

From c5c128033deee4fe152b550d062007c3411915cc Mon Sep 17 00:00:00 2001
From: root <anmoldeep0123@gmail.com>
Date: Tue, 14 Jul 2020 18:59:16 +0000
Subject: [PATCH 023/156] Code Review BAEL-4302

---
 .../com/baeldung/loadedclasslisting/ClassLoaderType.java    | 6 ------
 .../main/java/com/baeldung/loadedclasslisting/Launcher.java | 5 +----
 .../baeldung/loadedclasslisting/ListLoadedClassesAgent.java | 4 ++++
 .../loadedclasslisting/customLoader/ClassLoaderInfo.java    | 1 -
 4 files changed, 5 insertions(+), 11 deletions(-)
 delete mode 100644 core-java-modules/core-java-jvm-2/src/main/java/com/baeldung/loadedclasslisting/ClassLoaderType.java

diff --git a/core-java-modules/core-java-jvm-2/src/main/java/com/baeldung/loadedclasslisting/ClassLoaderType.java b/core-java-modules/core-java-jvm-2/src/main/java/com/baeldung/loadedclasslisting/ClassLoaderType.java
deleted file mode 100644
index 1111fc21fe..0000000000
--- a/core-java-modules/core-java-jvm-2/src/main/java/com/baeldung/loadedclasslisting/ClassLoaderType.java
+++ /dev/null
@@ -1,6 +0,0 @@
-package com.baeldung.loadedclasslisting;
-
-public enum ClassLoaderType {
-
-    SYSTEM, EXTENSION, BOOTSTRAP, CUSTOM
-}
diff --git a/core-java-modules/core-java-jvm-2/src/main/java/com/baeldung/loadedclasslisting/Launcher.java b/core-java-modules/core-java-jvm-2/src/main/java/com/baeldung/loadedclasslisting/Launcher.java
index 19c42dfd8d..e1851275c9 100644
--- a/core-java-modules/core-java-jvm-2/src/main/java/com/baeldung/loadedclasslisting/Launcher.java
+++ b/core-java-modules/core-java-jvm-2/src/main/java/com/baeldung/loadedclasslisting/Launcher.java
@@ -3,6 +3,7 @@ package com.baeldung.loadedclasslisting;
 import java.lang.reflect.Method;
 import java.util.Arrays;
 
+import com.baeldung.loadedclasslisting.ListLoadedClassesAgent.ClassLoaderType;
 import com.baeldung.loadedclasslisting.customLoader.ClassLoaderInfo;
 import com.baeldung.loadedclasslisting.customLoader.CustomClassLoader;
 
@@ -11,13 +12,9 @@ public class Launcher {
     private static ClassLoader customClassLoader;
 
     public static void main(String[] args) {
-        
         printClassesLoadedBy(ClassLoaderType.BOOTSTRAP);
-
         printClassesLoadedBy(ClassLoaderType.SYSTEM);
-
         printClassesLoadedBy(ClassLoaderType.EXTENSION);
-
         printClassesLoadedBy(ClassLoaderType.CUSTOM);
     }
 
diff --git a/core-java-modules/core-java-jvm-2/src/main/java/com/baeldung/loadedclasslisting/ListLoadedClassesAgent.java b/core-java-modules/core-java-jvm-2/src/main/java/com/baeldung/loadedclasslisting/ListLoadedClassesAgent.java
index 03907f8b04..8f4b8ebd41 100644
--- a/core-java-modules/core-java-jvm-2/src/main/java/com/baeldung/loadedclasslisting/ListLoadedClassesAgent.java
+++ b/core-java-modules/core-java-jvm-2/src/main/java/com/baeldung/loadedclasslisting/ListLoadedClassesAgent.java
@@ -4,6 +4,10 @@ import java.lang.instrument.Instrumentation;
 
 public class ListLoadedClassesAgent {
 
+    public enum ClassLoaderType {
+        SYSTEM, EXTENSION, BOOTSTRAP, CUSTOM , PLATFORM
+    }
+    
     private static Instrumentation instrumentation;
 
     public static void premain(String agentArgs, Instrumentation instrumentation) {
diff --git a/core-java-modules/core-java-jvm-2/src/main/java/com/baeldung/loadedclasslisting/customLoader/ClassLoaderInfo.java b/core-java-modules/core-java-jvm-2/src/main/java/com/baeldung/loadedclasslisting/customLoader/ClassLoaderInfo.java
index a787b062d5..2574394c13 100644
--- a/core-java-modules/core-java-jvm-2/src/main/java/com/baeldung/loadedclasslisting/customLoader/ClassLoaderInfo.java
+++ b/core-java-modules/core-java-jvm-2/src/main/java/com/baeldung/loadedclasslisting/customLoader/ClassLoaderInfo.java
@@ -5,7 +5,6 @@ import java.util.ArrayList;
 public class ClassLoaderInfo {
 
     public void printClassLoaders() throws ClassNotFoundException {
-
         System.out.println("Classloader of this class:" + ClassLoaderInfo.class.getClassLoader());
         System.out.println("Classloader of ArrayList:" + ArrayList.class.getClassLoader());
     }

From 9e03b89e699d9dc567af844157dc9307fe3f8329 Mon Sep 17 00:00:00 2001
From: andrebrowne <42154231+andrebrowne@users.noreply.github.com>
Date: Wed, 15 Jul 2020 20:53:23 -0400
Subject: [PATCH 024/156] BAEL-4007 Add jpa data equality unit test specs

---
 persistence-modules/java-jpa-3/README.md      |   3 +
 persistence-modules/java-jpa-3/pom.xml        | 139 ++++++++++++++++++
 .../jpa/equality/EqualByBusinessKey.java      |  54 +++++++
 .../com/baeldung/jpa/equality/EqualById.java  |  54 +++++++
 .../jpa/equality/EqualByJavaDefault.java      |  38 +++++
 .../main/resources/META-INF/persistence.xml   |  25 ++++
 .../java-jpa-3/src/main/resources/logback.xml |  15 ++
 .../jpa/equality/EqualityUnitTest.java        |  74 ++++++++++
 8 files changed, 402 insertions(+)
 create mode 100644 persistence-modules/java-jpa-3/README.md
 create mode 100644 persistence-modules/java-jpa-3/pom.xml
 create mode 100644 persistence-modules/java-jpa-3/src/main/java/com/baeldung/jpa/equality/EqualByBusinessKey.java
 create mode 100644 persistence-modules/java-jpa-3/src/main/java/com/baeldung/jpa/equality/EqualById.java
 create mode 100644 persistence-modules/java-jpa-3/src/main/java/com/baeldung/jpa/equality/EqualByJavaDefault.java
 create mode 100644 persistence-modules/java-jpa-3/src/main/resources/META-INF/persistence.xml
 create mode 100644 persistence-modules/java-jpa-3/src/main/resources/logback.xml
 create mode 100644 persistence-modules/java-jpa-3/src/test/java/com/baeldung/jpa/equality/EqualityUnitTest.java

diff --git a/persistence-modules/java-jpa-3/README.md b/persistence-modules/java-jpa-3/README.md
new file mode 100644
index 0000000000..01fdf05b53
--- /dev/null
+++ b/persistence-modules/java-jpa-3/README.md
@@ -0,0 +1,3 @@
+## JPA in Java
+
+This module contains articles about the Java Persistence API (JPA) in Java.
diff --git a/persistence-modules/java-jpa-3/pom.xml b/persistence-modules/java-jpa-3/pom.xml
new file mode 100644
index 0000000000..562f337215
--- /dev/null
+++ b/persistence-modules/java-jpa-3/pom.xml
@@ -0,0 +1,139 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+         xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
+    <modelVersion>4.0.0</modelVersion>
+    <artifactId>java-jpa-3</artifactId>
+    <name>java-jpa-3</name>
+
+    <parent>
+        <groupId>com.baeldung</groupId>
+        <artifactId>persistence-modules</artifactId>
+        <version>1.0.0-SNAPSHOT</version>
+    </parent>
+
+    <dependencies>
+        <dependency>
+            <groupId>org.hibernate</groupId>
+            <artifactId>hibernate-core</artifactId>
+            <version>${hibernate.version}</version>
+        </dependency>
+        <dependency>
+            <groupId>org.hibernate</groupId>
+            <artifactId>hibernate-jpamodelgen</artifactId>
+            <version>${hibernate.version}</version>
+        </dependency>
+        <dependency>
+            <groupId>com.h2database</groupId>
+            <artifactId>h2</artifactId>
+            <version>${h2.version}</version>
+        </dependency>
+
+        <!--Compile time JPA API -->
+        <dependency>
+            <groupId>javax.persistence</groupId>
+            <artifactId>javax.persistence-api</artifactId>
+            <version>${javax.persistence-api.version}</version>
+        </dependency>
+
+        <!--Runtime JPA implementation -->
+        <dependency>
+            <groupId>org.eclipse.persistence</groupId>
+            <artifactId>eclipselink</artifactId>
+            <version>${eclipselink.version}</version>
+            <scope>runtime</scope>
+        </dependency>
+        <dependency>
+            <groupId>org.postgresql</groupId>
+            <artifactId>postgresql</artifactId>
+            <version>${postgres.version}</version>
+            <scope>runtime</scope>
+        </dependency>
+        <dependency>
+            <groupId>org.assertj</groupId>
+            <artifactId>assertj-core</artifactId>
+            <version>${assertj.version}</version>
+            <scope>test</scope>
+        </dependency>
+    </dependencies>
+
+    <build>
+        <plugins>
+            <plugin>
+                <groupId>org.apache.maven.plugins</groupId>
+                <artifactId>maven-compiler-plugin</artifactId>
+                <version>${maven-compiler-plugin.version}</version>
+                <configuration>
+                    <compilerArgument>-proc:none</compilerArgument>
+                </configuration>
+            </plugin>
+            <plugin>
+                <groupId>org.bsc.maven</groupId>
+                <artifactId>maven-processor-plugin</artifactId>
+                <version>${maven-processor-plugin.version}</version>
+                <executions>
+                    <execution>
+                        <id>process</id>
+                        <goals>
+                            <goal>process</goal>
+                        </goals>
+                        <phase>generate-sources</phase>
+                        <configuration>
+                            <outputDirectory>target/metamodel</outputDirectory>
+                            <processors>
+                                <processor>org.hibernate.jpamodelgen.JPAMetaModelEntityProcessor</processor>
+                            </processors>
+                        </configuration>
+                    </execution>
+                </executions>
+            </plugin>
+            <plugin>
+                <groupId>org.codehaus.mojo</groupId>
+                <artifactId>build-helper-maven-plugin</artifactId>
+                <version>${build-helper-maven-plugin.version}</version>
+                <executions>
+                    <execution>
+                        <id>add-source</id>
+                        <phase>generate-sources</phase>
+                        <goals>
+                            <goal>add-source</goal>
+                        </goals>
+                        <configuration>
+                            <sources>
+                                <source>target/metamodel</source>
+                                <source>${project.build.directory}/generated-sources/java/</source>
+                            </sources>
+                        </configuration>
+                    </execution>
+                </executions>
+            </plugin>
+            <plugin>
+                <groupId>com.mysema.maven</groupId>
+                <artifactId>apt-maven-plugin</artifactId>
+                <version>1.1.3</version>
+                <executions>
+                    <execution>
+                        <goals>
+                            <goal>process</goal>
+                        </goals>
+                        <configuration>
+                            <outputDirectory>target/generated-sources/java</outputDirectory>
+                            <processor>com.querydsl.apt.jpa.JPAAnnotationProcessor</processor>
+                        </configuration>
+                    </execution>
+                </executions>
+            </plugin>
+        </plugins>
+    </build>
+
+    <properties>
+        <hibernate.version>5.4.14.Final</hibernate.version>
+        <eclipselink.version>2.7.4</eclipselink.version>
+        <postgres.version>42.2.5</postgres.version>
+        <javax.persistence-api.version>2.2</javax.persistence-api.version>
+        <assertj.version>3.11.1</assertj.version>
+        <maven-compiler-plugin.version>3.5.1</maven-compiler-plugin.version>
+        <maven-processor-plugin.version>3.3.3</maven-processor-plugin.version>
+        <build-helper-maven-plugin.version>3.0.0</build-helper-maven-plugin.version>
+    </properties>
+
+</project>
diff --git a/persistence-modules/java-jpa-3/src/main/java/com/baeldung/jpa/equality/EqualByBusinessKey.java b/persistence-modules/java-jpa-3/src/main/java/com/baeldung/jpa/equality/EqualByBusinessKey.java
new file mode 100644
index 0000000000..3e34f97d77
--- /dev/null
+++ b/persistence-modules/java-jpa-3/src/main/java/com/baeldung/jpa/equality/EqualByBusinessKey.java
@@ -0,0 +1,54 @@
+package com.baeldung.jpa.equality;
+
+import javax.persistence.*;
+
+@Entity
+public class EqualByBusinessKey {
+
+    @Id
+    @GeneratedValue(strategy = GenerationType.AUTO)
+    private Long id;
+
+    private String email;
+
+    public EqualByBusinessKey() {
+    }
+
+    public Long getId() {
+        return id;
+    }
+
+    public void setId(Long id) {
+        this.id = id;
+    }
+
+    public String getEmail() {
+        return email;
+    }
+
+    public void setEmail(String email) {
+        this.email = email;
+    }
+
+    @Override
+    public int hashCode() {
+        final int prime = 31;
+        int result = 1;
+        result = prime * result + ((email == null) ? 0 : email.hashCode());
+        return result;
+    }
+
+    @Override
+    public boolean equals(Object obj) {
+        if (this == obj)
+            return true;
+        if (obj == null)
+            return false;
+        if (obj instanceof EqualByBusinessKey)
+            if (((EqualByBusinessKey) obj).getEmail() == getEmail())
+                return true;
+
+        return false;
+    }
+
+}
diff --git a/persistence-modules/java-jpa-3/src/main/java/com/baeldung/jpa/equality/EqualById.java b/persistence-modules/java-jpa-3/src/main/java/com/baeldung/jpa/equality/EqualById.java
new file mode 100644
index 0000000000..f29a152f3e
--- /dev/null
+++ b/persistence-modules/java-jpa-3/src/main/java/com/baeldung/jpa/equality/EqualById.java
@@ -0,0 +1,54 @@
+package com.baeldung.jpa.equality;
+
+import javax.persistence.*;
+
+@Entity
+public class EqualById {
+
+    @Id
+    @GeneratedValue(strategy = GenerationType.AUTO)
+    private Long id;
+
+    private String email;
+
+    public EqualById() {
+    }
+
+    public Long getId() {
+        return id;
+    }
+
+    public void setId(Long id) {
+        this.id = id;
+    }
+
+    public String getEmail() {
+        return email;
+    }
+
+    public void setEmail(String email) {
+        this.email = email;
+    }
+
+
+    @Override
+    public int hashCode() {
+        final int prime = 31;
+        int result = 1;
+        result = prime * result + ((id == null) ? 0 : id.hashCode());
+        return result;
+    }
+
+    @Override
+    public boolean equals(Object obj) {
+        if (this == obj)
+            return true;
+        if (obj == null)
+            return false;
+        if (obj instanceof EqualById)
+            return ((EqualById) obj).getId() == getId();
+
+        return false;
+    }
+
+}
diff --git a/persistence-modules/java-jpa-3/src/main/java/com/baeldung/jpa/equality/EqualByJavaDefault.java b/persistence-modules/java-jpa-3/src/main/java/com/baeldung/jpa/equality/EqualByJavaDefault.java
new file mode 100644
index 0000000000..04a81865c6
--- /dev/null
+++ b/persistence-modules/java-jpa-3/src/main/java/com/baeldung/jpa/equality/EqualByJavaDefault.java
@@ -0,0 +1,38 @@
+package com.baeldung.jpa.equality;
+
+import javax.persistence.*;
+
+@Entity
+public class EqualByJavaDefault implements Cloneable{
+
+    @Id
+    @GeneratedValue(strategy = GenerationType.AUTO)
+    private Long id;
+
+    private String email;
+
+    public EqualByJavaDefault() {
+    }
+
+    public Long getId() {
+        return id;
+    }
+
+    public void setId(Long id) {
+        this.id = id;
+    }
+
+    public String getEmail() {
+        return email;
+    }
+
+    public void setEmail(String email) {
+        this.email = email;
+    }
+
+    public Object clone() throws
+            CloneNotSupportedException
+    {
+        return super.clone();
+    }
+}
diff --git a/persistence-modules/java-jpa-3/src/main/resources/META-INF/persistence.xml b/persistence-modules/java-jpa-3/src/main/resources/META-INF/persistence.xml
new file mode 100644
index 0000000000..28a929f912
--- /dev/null
+++ b/persistence-modules/java-jpa-3/src/main/resources/META-INF/persistence.xml
@@ -0,0 +1,25 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<persistence xmlns="http://xmlns.jcp.org/xml/ns/persistence"
+	xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+	xsi:schemaLocation="http://xmlns.jcp.org/xml/ns/persistence
+             http://xmlns.jcp.org/xml/ns/persistence/persistence_2_2.xsd"
+	version="2.2">
+	<persistence-unit name="jpa-h2-equality">
+		<provider>org.hibernate.jpa.HibernatePersistenceProvider</provider>
+		<class>com.baeldung.jpa.equality.EqualByJavaDefault</class>
+		<class>com.baeldung.jpa.equality.EqualById</class>
+		<class>com.baeldung.jpa.equality.EqualByBusinessKey</class>
+		<exclude-unlisted-classes>true</exclude-unlisted-classes>
+		<properties>
+			<property name="javax.persistence.jdbc.driver" value="org.h2.Driver" />
+			<property name="javax.persistence.jdbc.url" value="jdbc:h2:mem:test" />
+			<property name="javax.persistence.jdbc.user" value="sa" />
+			<property name="javax.persistence.jdbc.password" value="" />
+			<property name="javax.persistence.jdbc.driver" value="org.h2.Driver" />
+			<property name="hibernate.dialect" value="org.hibernate.dialect.H2Dialect" />
+			<property name="hibernate.hbm2ddl.auto" value="create-drop" />
+			<property name="show_sql" value="false" />
+			<property name="hibernate.temp.use_jdbc_metadata_defaults" value="false" />
+		</properties>
+	</persistence-unit>
+</persistence>
diff --git a/persistence-modules/java-jpa-3/src/main/resources/logback.xml b/persistence-modules/java-jpa-3/src/main/resources/logback.xml
new file mode 100644
index 0000000000..2527fea245
--- /dev/null
+++ b/persistence-modules/java-jpa-3/src/main/resources/logback.xml
@@ -0,0 +1,15 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<configuration>
+    <appender name="STDOUT"
+        class="ch.qos.logback.core.ConsoleAppender">
+        <encoder>
+            <pattern>%d{HH:mm:ss.SSS} [%thread] %-5level %logger{36} -
+                %msg%n
+            </pattern>
+        </encoder>
+    </appender>
+
+    <root level="INFO">
+        <appender-ref ref="STDOUT" />
+    </root>
+</configuration>
\ No newline at end of file
diff --git a/persistence-modules/java-jpa-3/src/test/java/com/baeldung/jpa/equality/EqualityUnitTest.java b/persistence-modules/java-jpa-3/src/test/java/com/baeldung/jpa/equality/EqualityUnitTest.java
new file mode 100644
index 0000000000..c672c9e460
--- /dev/null
+++ b/persistence-modules/java-jpa-3/src/test/java/com/baeldung/jpa/equality/EqualityUnitTest.java
@@ -0,0 +1,74 @@
+package com.baeldung.jpa.equality;
+
+import javax.persistence.EntityManager;
+import javax.persistence.EntityManagerFactory;
+import javax.persistence.Persistence;
+
+import org.junit.Assert;
+import org.junit.BeforeClass;
+import org.junit.Test;
+
+public class EqualityUnitTest {
+
+    private static EntityManagerFactory factory;
+    private static EntityManager entityManager;
+
+    @BeforeClass
+    public static void setup() {
+        factory = Persistence.createEntityManagerFactory("jpa-h2-equality");
+        entityManager = factory.createEntityManager();
+    }
+
+    @Test
+    public void givenObjectBasedEquality_whenUsingEquals_thenEqualIsBasedOnInstance() throws CloneNotSupportedException {
+        EqualByJavaDefault object1 = new EqualByJavaDefault();
+        EqualByJavaDefault object2 = new EqualByJavaDefault();
+
+        object1.setEmail("test.user@domain.com");
+
+        entityManager.getTransaction().begin();
+        entityManager.persist(object1);
+        entityManager.getTransaction().commit();
+
+        object2 = (EqualByJavaDefault) object1.clone();
+
+        Assert.assertNotEquals(object1, object2);
+        Assert.assertEquals(object1.getId(), object2.getId());
+        Assert.assertEquals(object1.getEmail(), object2.getEmail());
+    }
+
+    @Test
+    public void givenIdBasedEquality_whenUsingEquals_thenEqualIsBasedOnId() {
+        EqualById object1 = new EqualById();
+        EqualById object2 = new EqualById();
+
+        object1.setEmail("test.user.1@domain.com");
+        object2.setEmail("test.user.2@domain.com");
+
+        entityManager.getTransaction().begin();
+        entityManager.persist(object1);
+        entityManager.getTransaction().commit();
+
+        object2.setId(object1.getId());
+
+        Assert.assertEquals(object1, object2);
+        Assert.assertEquals(object1.getId(), object2.getId());
+        Assert.assertNotEquals(object1.getEmail(), object2.getEmail());
+    }
+
+    @Test
+    public void givenBusinessKeyBasedEquality_whenUsingEquals_thenEqualIsBasedOnBusinessKey() {
+        EqualByBusinessKey object1 = new EqualByBusinessKey();
+        EqualByBusinessKey object2 = new EqualByBusinessKey();
+
+        object1.setEmail("test.user@test-domain.com");
+        object2.setEmail("test.user@test-domain.com");
+
+        entityManager.getTransaction().begin();
+        entityManager.persist(object1);
+        entityManager.getTransaction().commit();
+
+        Assert.assertEquals(object1, object2);
+        Assert.assertNotEquals(object1.getId(), object2.getId());
+    }
+}
\ No newline at end of file

From 1ba39d1b95e0d6984903a2f8755d2c1026e1fa7b Mon Sep 17 00:00:00 2001
From: andrebrowne <42154231+andrebrowne@users.noreply.github.com>
Date: Wed, 15 Jul 2020 21:16:31 -0400
Subject: [PATCH 025/156] Remove heagonal architecture

---
 architecture/README.md                        |  3 --
 architecture/pom.xml                          | 33 ------------
 .../HexagonalArchitectureTaskApplication.java | 12 -----
 .../application/task/AddNewDailyTask.java     | 29 ----------
 .../application/task/AddNewTask.java          | 22 --------
 .../application/task/GetTasks.java            | 22 --------
 .../commands/task/CreateTask.java             |  7 ---
 .../commands/task/GetAllTasks.java            |  7 ---
 .../architecture/domain/task/Task.java        | 53 -------------------
 .../domain/task/TaskRepository.java           |  7 ---
 .../architecture/domain/task/TaskService.java | 22 --------
 .../framework/cli/StartupRunner.java          | 24 ---------
 .../http/task/TaskApiController.java          | 42 ---------------
 .../framework/http/task/TaskRequest.java      | 28 ----------
 14 files changed, 311 deletions(-)
 delete mode 100644 architecture/README.md
 delete mode 100644 architecture/pom.xml
 delete mode 100644 architecture/src/main/java/com/baeldung/architecture/HexagonalArchitectureTaskApplication.java
 delete mode 100644 architecture/src/main/java/com/baeldung/architecture/application/task/AddNewDailyTask.java
 delete mode 100644 architecture/src/main/java/com/baeldung/architecture/application/task/AddNewTask.java
 delete mode 100644 architecture/src/main/java/com/baeldung/architecture/application/task/GetTasks.java
 delete mode 100644 architecture/src/main/java/com/baeldung/architecture/commands/task/CreateTask.java
 delete mode 100644 architecture/src/main/java/com/baeldung/architecture/commands/task/GetAllTasks.java
 delete mode 100644 architecture/src/main/java/com/baeldung/architecture/domain/task/Task.java
 delete mode 100644 architecture/src/main/java/com/baeldung/architecture/domain/task/TaskRepository.java
 delete mode 100644 architecture/src/main/java/com/baeldung/architecture/domain/task/TaskService.java
 delete mode 100644 architecture/src/main/java/com/baeldung/architecture/framework/cli/StartupRunner.java
 delete mode 100644 architecture/src/main/java/com/baeldung/architecture/framework/http/task/TaskApiController.java
 delete mode 100644 architecture/src/main/java/com/baeldung/architecture/framework/http/task/TaskRequest.java

diff --git a/architecture/README.md b/architecture/README.md
deleted file mode 100644
index be093f25ed..0000000000
--- a/architecture/README.md
+++ /dev/null
@@ -1,3 +0,0 @@
-### Relevant articles
-
-- [A Quick and Practical Example of Hexagonal Architecture in Java](https://www.baeldung.com/a-quick-and-practical-example-of-hexagonal-architecture-in-java-3/)
diff --git a/architecture/pom.xml b/architecture/pom.xml
deleted file mode 100644
index 4ad104293e..0000000000
--- a/architecture/pom.xml
+++ /dev/null
@@ -1,33 +0,0 @@
-<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
-    xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
-    <modelVersion>4.0.0</modelVersion>
-    <groupId>com.baeldung.architecture</groupId>
-    <artifactId>architecture</artifactId>
-    <version>0.0.1-SNAPSHOT</version>
-    <name>architecture</name>
-    <packaging>jar</packaging>
-    <description>A Quick and Practical Example of Hexagonal Architecture in Java</description>
-
-    <parent>
-        <artifactId>parent-boot-2</artifactId>
-        <groupId>com.baeldung</groupId>
-        <version>0.0.1-SNAPSHOT</version>
-        <relativePath>../parent-boot-2</relativePath>
-    </parent>
-
-    <dependencies>
-        <dependency>
-            <groupId>org.springframework.boot</groupId>
-            <artifactId>spring-boot-starter-data-jpa</artifactId>
-        </dependency>
-        <dependency>
-            <groupId>com.h2database</groupId>
-            <artifactId>h2</artifactId>
-            <scope>runtime</scope>
-        </dependency>
-        <dependency>
-            <groupId>org.springframework.boot</groupId>
-            <artifactId>spring-boot-starter-web</artifactId>
-        </dependency>
-    </dependencies>
-</project>
diff --git a/architecture/src/main/java/com/baeldung/architecture/HexagonalArchitectureTaskApplication.java b/architecture/src/main/java/com/baeldung/architecture/HexagonalArchitectureTaskApplication.java
deleted file mode 100644
index 69c6f4b276..0000000000
--- a/architecture/src/main/java/com/baeldung/architecture/HexagonalArchitectureTaskApplication.java
+++ /dev/null
@@ -1,12 +0,0 @@
-package com.baeldung.architecture;
-
-import org.springframework.boot.SpringApplication;
-import org.springframework.boot.autoconfigure.SpringBootApplication;
-
-@SpringBootApplication
-public class HexagonalArchitectureTaskApplication {
-    public static void main(String[] args) {
-        SpringApplication.run(HexagonalArchitectureTaskApplication.class, args);
-    }
-
-}
diff --git a/architecture/src/main/java/com/baeldung/architecture/application/task/AddNewDailyTask.java b/architecture/src/main/java/com/baeldung/architecture/application/task/AddNewDailyTask.java
deleted file mode 100644
index f9ee97542c..0000000000
--- a/architecture/src/main/java/com/baeldung/architecture/application/task/AddNewDailyTask.java
+++ /dev/null
@@ -1,29 +0,0 @@
-package com.baeldung.architecture.application.task;
-
-import java.time.Instant;
-import java.time.temporal.ChronoUnit;
-
-import com.baeldung.architecture.commands.task.CreateTask;
-import com.baeldung.architecture.domain.task.Task;
-
-import org.springframework.stereotype.Component;
-
-@Component
-public class AddNewDailyTask implements CreateTask {
-
-    private AddNewTask addNewTask;
-
-    public AddNewDailyTask(AddNewTask addNewTask) {
-        this.addNewTask = addNewTask;
-    }
-
-    @Override
-    public void create(Task newTask) {
-        Instant initialDueDate = newTask.getDueDate();
-        String description = newTask.getDescription();
-        for (int i = 1; i <= 5; i++) {
-            Task task = new Task(initialDueDate.plus(i, ChronoUnit.DAYS), description);
-            addNewTask.create(task);
-        }
-    }
-}
diff --git a/architecture/src/main/java/com/baeldung/architecture/application/task/AddNewTask.java b/architecture/src/main/java/com/baeldung/architecture/application/task/AddNewTask.java
deleted file mode 100644
index 70638378f9..0000000000
--- a/architecture/src/main/java/com/baeldung/architecture/application/task/AddNewTask.java
+++ /dev/null
@@ -1,22 +0,0 @@
-package com.baeldung.architecture.application.task;
-
-import com.baeldung.architecture.domain.task.Task;
-import com.baeldung.architecture.domain.task.TaskService;
-import com.baeldung.architecture.commands.task.*;
-
-import org.springframework.stereotype.Component;
-
-@Component
-public class AddNewTask implements CreateTask {
-
-    private TaskService taskService;
-
-    public AddNewTask(TaskService taskService) {
-        this.taskService = taskService;
-    }
-
-    @Override
-    public void create(Task newTask) {
-        taskService.createTask(newTask);
-    }
-}
diff --git a/architecture/src/main/java/com/baeldung/architecture/application/task/GetTasks.java b/architecture/src/main/java/com/baeldung/architecture/application/task/GetTasks.java
deleted file mode 100644
index c876f7de85..0000000000
--- a/architecture/src/main/java/com/baeldung/architecture/application/task/GetTasks.java
+++ /dev/null
@@ -1,22 +0,0 @@
-package com.baeldung.architecture.application.task;
-
-import com.baeldung.architecture.domain.task.Task;
-import com.baeldung.architecture.domain.task.TaskService;
-import com.baeldung.architecture.commands.task.*;
-
-import org.springframework.stereotype.Component;
-
-@Component
-public class GetTasks implements GetAllTasks {
-
-    private TaskService taskService;
-
-    public GetTasks(TaskService taskService) {
-        this.taskService = taskService;
-    }
-
-    @Override
-    public Iterable<Task> getAll() {
-        return taskService.getAllTasks();
-    }
-}
diff --git a/architecture/src/main/java/com/baeldung/architecture/commands/task/CreateTask.java b/architecture/src/main/java/com/baeldung/architecture/commands/task/CreateTask.java
deleted file mode 100644
index ec60868a22..0000000000
--- a/architecture/src/main/java/com/baeldung/architecture/commands/task/CreateTask.java
+++ /dev/null
@@ -1,7 +0,0 @@
-package com.baeldung.architecture.commands.task;
-
-import com.baeldung.architecture.domain.task.Task;
-
-public interface CreateTask {
-    public void create(Task newTask);
-}
diff --git a/architecture/src/main/java/com/baeldung/architecture/commands/task/GetAllTasks.java b/architecture/src/main/java/com/baeldung/architecture/commands/task/GetAllTasks.java
deleted file mode 100644
index c9aa1be5f8..0000000000
--- a/architecture/src/main/java/com/baeldung/architecture/commands/task/GetAllTasks.java
+++ /dev/null
@@ -1,7 +0,0 @@
-package com.baeldung.architecture.commands.task;
-
-import com.baeldung.architecture.domain.task.Task;
-
-public interface GetAllTasks {
-    public Iterable<Task> getAll();
-}
diff --git a/architecture/src/main/java/com/baeldung/architecture/domain/task/Task.java b/architecture/src/main/java/com/baeldung/architecture/domain/task/Task.java
deleted file mode 100644
index 240dc33571..0000000000
--- a/architecture/src/main/java/com/baeldung/architecture/domain/task/Task.java
+++ /dev/null
@@ -1,53 +0,0 @@
-package com.baeldung.architecture.domain.task;
-
-import java.time.Instant;
-
-import javax.persistence.Entity;
-import javax.persistence.GeneratedValue;
-import javax.persistence.GenerationType;
-import javax.persistence.Id;
-
-@Entity
-public class Task {
-    @Id
-    @GeneratedValue(strategy=GenerationType.AUTO)
-    private Long id;
-    private Instant dueDate = Instant.now();
-    private String description;
-
-    public Task() {}
-
-    public Task(Instant dueDate, String description) {
-        this.dueDate = dueDate;
-        this.description = description;
-    }
-
-    public Task(Long id, Instant dueDate, String description) {
-        this(dueDate, description);
-        this.id = id;
-    }
-
-    public Long getId() {
-        return id;
-    }
-
-    public void setId(Long id) {
-        this.id = id;
-    }
-
-    public Instant getDueDate() {
-        return dueDate;
-    }
-
-    public void setDueDate(Instant dueDate) {
-        this.dueDate = dueDate;
-    }
-
-    public String getDescription() {
-        return description;
-    }
-
-    public void setDescription(String description) {
-        this.description = description;
-    }
-}
diff --git a/architecture/src/main/java/com/baeldung/architecture/domain/task/TaskRepository.java b/architecture/src/main/java/com/baeldung/architecture/domain/task/TaskRepository.java
deleted file mode 100644
index d896212714..0000000000
--- a/architecture/src/main/java/com/baeldung/architecture/domain/task/TaskRepository.java
+++ /dev/null
@@ -1,7 +0,0 @@
-package com.baeldung.architecture.domain.task;
-
-import org.springframework.data.repository.CrudRepository;
-import org.springframework.stereotype.Repository;
-
-@Repository
-public interface TaskRepository extends CrudRepository<Task, Long> {};
diff --git a/architecture/src/main/java/com/baeldung/architecture/domain/task/TaskService.java b/architecture/src/main/java/com/baeldung/architecture/domain/task/TaskService.java
deleted file mode 100644
index 11ef0f3e19..0000000000
--- a/architecture/src/main/java/com/baeldung/architecture/domain/task/TaskService.java
+++ /dev/null
@@ -1,22 +0,0 @@
-package com.baeldung.architecture.domain.task;
-
-import org.springframework.stereotype.Service;
-
-@Service
-public class TaskService {
-
-    private TaskRepository taskRepository;
-
-    public TaskService(TaskRepository taskRepository) {
-        this.taskRepository = taskRepository;
-    }
-
-    public void createTask(Task task) {
-        taskRepository.save(task);
-    }
-
-    public Iterable<Task> getAllTasks() {
-        return taskRepository.findAll();
-    }
-
-}
diff --git a/architecture/src/main/java/com/baeldung/architecture/framework/cli/StartupRunner.java b/architecture/src/main/java/com/baeldung/architecture/framework/cli/StartupRunner.java
deleted file mode 100644
index 449bc9386e..0000000000
--- a/architecture/src/main/java/com/baeldung/architecture/framework/cli/StartupRunner.java
+++ /dev/null
@@ -1,24 +0,0 @@
-package com.baeldung.architecture.framework.cli;
-
-import com.baeldung.architecture.application.task.AddNewDailyTask;
-import com.baeldung.architecture.domain.task.Task;
-
-import org.springframework.boot.ApplicationArguments;
-import org.springframework.boot.ApplicationRunner;
-import org.springframework.stereotype.Component;
-
-@Component
-public class StartupRunner implements ApplicationRunner {
-
-    AddNewDailyTask addNewDailyTask;
-
-    public StartupRunner(AddNewDailyTask addNewDailyTask) {
-        this.addNewDailyTask = addNewDailyTask;
-    }
-    @Override
-    public void run(ApplicationArguments args) throws Exception {
-        Task task = new Task();
-        task.setDescription("Startup Task");
-        addNewDailyTask.create(task);
-    }
-}
diff --git a/architecture/src/main/java/com/baeldung/architecture/framework/http/task/TaskApiController.java b/architecture/src/main/java/com/baeldung/architecture/framework/http/task/TaskApiController.java
deleted file mode 100644
index 87a8f5fe4b..0000000000
--- a/architecture/src/main/java/com/baeldung/architecture/framework/http/task/TaskApiController.java
+++ /dev/null
@@ -1,42 +0,0 @@
-package com.baeldung.architecture.framework.http.task;
-
-import java.time.Instant;
-
-import com.baeldung.architecture.application.task.AddNewTask;
-import com.baeldung.architecture.application.task.GetTasks;
-import com.baeldung.architecture.domain.task.Task;
-
-import org.springframework.web.bind.annotation.GetMapping;
-import org.springframework.web.bind.annotation.PostMapping;
-import org.springframework.web.bind.annotation.RequestBody;
-import org.springframework.web.bind.annotation.RequestMapping;
-import org.springframework.web.bind.annotation.RestController;
-
-@RestController
-@RequestMapping("task")
-public class TaskApiController {
-
-    private AddNewTask addNewTask;
-    private GetTasks getTasks;
-
-    public TaskApiController(
-        AddNewTask addNewTask,
-        GetTasks getTasks
-    ) {
-        this.addNewTask = addNewTask;
-        this.getTasks = getTasks;
-    }
-
-    @GetMapping
-    Iterable<Task> listTasks() {
-        return getTasks.getAll();
-    }
-
-    @PostMapping(consumes = "application/json", produces = "application/json")
-    void createTask(@RequestBody TaskRequest taskRequest) {
-        Task task = new Task();
-        task.setDescription(taskRequest.getDescription());
-        task.setDueDate(Instant.parse(taskRequest.getDueDate()));
-        addNewTask.create(task);
-    }
-}
diff --git a/architecture/src/main/java/com/baeldung/architecture/framework/http/task/TaskRequest.java b/architecture/src/main/java/com/baeldung/architecture/framework/http/task/TaskRequest.java
deleted file mode 100644
index 70b98a32f9..0000000000
--- a/architecture/src/main/java/com/baeldung/architecture/framework/http/task/TaskRequest.java
+++ /dev/null
@@ -1,28 +0,0 @@
-package com.baeldung.architecture.framework.http.task;
-
-import com.fasterxml.jackson.annotation.JsonInclude;
-import com.fasterxml.jackson.annotation.JsonInclude.Include;
-
-public class TaskRequest {
-    @JsonInclude(Include.NON_NULL)
-    private String description;
-
-    @JsonInclude(Include.NON_NULL)
-    private String dueDate;
-
-    public String getDescription() {
-        return description;
-    }
-
-    public void setDescription(String description) {
-        this.description = description;
-    }
-
-    public String getDueDate() {
-        return dueDate;
-    }
-
-    public void setDueDate(String dueDate) {
-        this.dueDate = dueDate;
-    }
-} 

From c1a9c42194d7945b8c5162de41d6c92410437247 Mon Sep 17 00:00:00 2001
From: root <anmoldeep0123@gmail.com>
Date: Sat, 25 Jul 2020 18:23:39 +0000
Subject: [PATCH 026/156] Review - II Kevin Gilmore

---
 .../customLoader/ClassLoaderInfo.java         | 11 -------
 .../customLoader/CustomClassLoader.java       | 32 -------------------
 2 files changed, 43 deletions(-)
 delete mode 100644 core-java-modules/core-java-jvm-2/src/main/java/com/baeldung/loadedclasslisting/customLoader/ClassLoaderInfo.java
 delete mode 100644 core-java-modules/core-java-jvm-2/src/main/java/com/baeldung/loadedclasslisting/customLoader/CustomClassLoader.java

diff --git a/core-java-modules/core-java-jvm-2/src/main/java/com/baeldung/loadedclasslisting/customLoader/ClassLoaderInfo.java b/core-java-modules/core-java-jvm-2/src/main/java/com/baeldung/loadedclasslisting/customLoader/ClassLoaderInfo.java
deleted file mode 100644
index 2574394c13..0000000000
--- a/core-java-modules/core-java-jvm-2/src/main/java/com/baeldung/loadedclasslisting/customLoader/ClassLoaderInfo.java
+++ /dev/null
@@ -1,11 +0,0 @@
-package com.baeldung.loadedclasslisting.customLoader;
-
-import java.util.ArrayList;
-
-public class ClassLoaderInfo {
-
-    public void printClassLoaders() throws ClassNotFoundException {
-        System.out.println("Classloader of this class:" + ClassLoaderInfo.class.getClassLoader());
-        System.out.println("Classloader of ArrayList:" + ArrayList.class.getClassLoader());
-    }
-}
diff --git a/core-java-modules/core-java-jvm-2/src/main/java/com/baeldung/loadedclasslisting/customLoader/CustomClassLoader.java b/core-java-modules/core-java-jvm-2/src/main/java/com/baeldung/loadedclasslisting/customLoader/CustomClassLoader.java
deleted file mode 100644
index a5f293f605..0000000000
--- a/core-java-modules/core-java-jvm-2/src/main/java/com/baeldung/loadedclasslisting/customLoader/CustomClassLoader.java
+++ /dev/null
@@ -1,32 +0,0 @@
-package com.baeldung.loadedclasslisting.customLoader;
-
-import java.io.ByteArrayOutputStream;
-import java.io.File;
-import java.io.IOException;
-import java.io.InputStream;
-
-public class CustomClassLoader extends ClassLoader {
-
-    @Override
-    public Class<?> findClass(String name) throws ClassNotFoundException {
-        byte[] b = loadClassFromFile(name);
-        return defineClass(name, b, 0, b.length);
-    }
-
-    private byte[] loadClassFromFile(String fileName) {
-        InputStream inputStream = getClass().getClassLoader()
-            .getResourceAsStream(fileName.replace('.', File.separatorChar) + ".class");
-        byte[] buffer;
-        ByteArrayOutputStream byteStream = new ByteArrayOutputStream();
-        int nextValue = 0;
-        try {
-            while ((nextValue = inputStream.read()) != -1) {
-                byteStream.write(nextValue);
-            }
-        } catch (IOException e) {
-            e.printStackTrace();
-        }
-        buffer = byteStream.toByteArray();
-        return buffer;
-    }
-}

From 1299a22eb52b302b9585e369e5109d552a11ef44 Mon Sep 17 00:00:00 2001
From: root <anmoldeep0123@gmail.com>
Date: Sat, 25 Jul 2020 18:28:28 +0000
Subject: [PATCH 027/156] Review - II Kevin Gilmore Changes

---
 .../baeldung/loadedclasslisting/Launcher.java | 39 +++----------------
 .../ListLoadedClassesAgent.java               | 24 ++++--------
 2 files changed, 12 insertions(+), 51 deletions(-)

diff --git a/core-java-modules/core-java-jvm-2/src/main/java/com/baeldung/loadedclasslisting/Launcher.java b/core-java-modules/core-java-jvm-2/src/main/java/com/baeldung/loadedclasslisting/Launcher.java
index e1851275c9..30db6b0bb7 100644
--- a/core-java-modules/core-java-jvm-2/src/main/java/com/baeldung/loadedclasslisting/Launcher.java
+++ b/core-java-modules/core-java-jvm-2/src/main/java/com/baeldung/loadedclasslisting/Launcher.java
@@ -1,48 +1,19 @@
 package com.baeldung.loadedclasslisting;
 
-import java.lang.reflect.Method;
 import java.util.Arrays;
 
-import com.baeldung.loadedclasslisting.ListLoadedClassesAgent.ClassLoaderType;
-import com.baeldung.loadedclasslisting.customLoader.ClassLoaderInfo;
-import com.baeldung.loadedclasslisting.customLoader.CustomClassLoader;
-
 public class Launcher {
 
-    private static ClassLoader customClassLoader;
-
     public static void main(String[] args) {
-        printClassesLoadedBy(ClassLoaderType.BOOTSTRAP);
-        printClassesLoadedBy(ClassLoaderType.SYSTEM);
-        printClassesLoadedBy(ClassLoaderType.EXTENSION);
-        printClassesLoadedBy(ClassLoaderType.CUSTOM);
+        printClassesLoadedBy("BOOTSTRAP");
+        printClassesLoadedBy("SYSTEM");
+        printClassesLoadedBy("EXTENSION");
     }
 
-    private static void printClassesLoadedBy(ClassLoaderType classLoaderType) {
-        Class<?>[] classes;
-        if (classLoaderType.equals(ClassLoaderType.CUSTOM)) {
-            customClassLoader = customClassLoading();
-            classes = ListLoadedClassesAgent.listLoadedClasses(customClassLoader);
-        } else {
-            classes = ListLoadedClassesAgent.listLoadedClasses(classLoaderType);
-        }
+    private static void printClassesLoadedBy(String classLoaderType) {
+        Class<?>[] classes = ListLoadedClassesAgent.listLoadedClasses(classLoaderType);
         Arrays.asList(classes)
             .forEach(clazz -> System.out.println(
               classLoaderType + " ClassLoader : " + clazz.getCanonicalName()));
     }
-    
-    private static CustomClassLoader customClassLoading() {
-        CustomClassLoader customClassLoader = new CustomClassLoader();
-        Class<?> c;
-        try {
-            c = customClassLoader.findClass(ClassLoaderInfo.class.getName());
-            Object ob = c.getDeclaredConstructor()
-                .newInstance();
-            Method md = c.getMethod("printClassLoaders");
-            md.invoke(ob);
-        } catch (Exception e) {
-            e.printStackTrace();
-        }
-        return customClassLoader;
-    }
 }
diff --git a/core-java-modules/core-java-jvm-2/src/main/java/com/baeldung/loadedclasslisting/ListLoadedClassesAgent.java b/core-java-modules/core-java-jvm-2/src/main/java/com/baeldung/loadedclasslisting/ListLoadedClassesAgent.java
index 8f4b8ebd41..337214a664 100644
--- a/core-java-modules/core-java-jvm-2/src/main/java/com/baeldung/loadedclasslisting/ListLoadedClassesAgent.java
+++ b/core-java-modules/core-java-jvm-2/src/main/java/com/baeldung/loadedclasslisting/ListLoadedClassesAgent.java
@@ -4,17 +4,13 @@ import java.lang.instrument.Instrumentation;
 
 public class ListLoadedClassesAgent {
 
-    public enum ClassLoaderType {
-        SYSTEM, EXTENSION, BOOTSTRAP, CUSTOM , PLATFORM
-    }
-    
     private static Instrumentation instrumentation;
 
     public static void premain(String agentArgs, Instrumentation instrumentation) {
         ListLoadedClassesAgent.instrumentation = instrumentation;
     }
 
-    public static Class<?>[] listLoadedClasses(ClassLoaderType classLoaderType) {
+    public static Class<?>[] listLoadedClasses(String classLoaderType) {
         if (instrumentation == null) {
             throw new IllegalStateException(
               "ListLoadedClassesAgent is not initialized.");
@@ -23,24 +19,18 @@ public class ListLoadedClassesAgent {
           getClassLoader(classLoaderType));
     }
 
-    public static Class<?>[] listLoadedClasses(ClassLoader classLoader) {
-        if (instrumentation == null) {
-            throw new IllegalStateException(
-              "ListLoadedClassesAgent is not initialized.");
-        }
-        return instrumentation.getInitiatedClasses(classLoader);
-    }
-
-    private static ClassLoader getClassLoader(ClassLoaderType classLoaderType) {
+    private static ClassLoader getClassLoader(String classLoaderType) {
         ClassLoader classLoader = null;
         switch (classLoaderType) {
-        case SYSTEM:
+        case "SYSTEM":
             classLoader = ClassLoader.getSystemClassLoader();
             break;
-        case EXTENSION:
+        case "EXTENSION":
             classLoader = ClassLoader.getSystemClassLoader().getParent();
             break;
-        case BOOTSTRAP:
+        // passing a null value to the Instrumentation : getInitiatedClasses method
+        // defaults to the bootstrap class loader
+        case "BOOTSTRAP":
             break;
         default:
             break;

From c95dbf8135c7eb1cd42a3f28d13be22978a0a5c7 Mon Sep 17 00:00:00 2001
From: Ankur Gupta <ankur.gupta@jda.com>
Date: Sun, 26 Jul 2020 16:51:40 +0530
Subject: [PATCH 028/156] BAEL-4025:Spring Data Azure Cosmos DB

---
 .../spring-data-cosmosdb/pom.xml              | 48 +++++++++++++++
 .../cosmosdb/AzurecosmodbApplication.java     | 44 ++++++++++++++
 .../controller/ProductController.java         | 54 +++++++++++++++++
 .../spring/data/cosmosdb/entity/Product.java  | 58 +++++++++++++++++++
 .../repository/ProductRepository.java         | 15 +++++
 .../data/cosmosdb/service/ProductService.java | 39 +++++++++++++
 .../src/main/resources/application.properties |  4 ++
 ...zurecosmodbApplicationIntegrationTest.java | 40 +++++++++++++
 8 files changed, 302 insertions(+)
 create mode 100644 persistence-modules/spring-data-cosmosdb/pom.xml
 create mode 100644 persistence-modules/spring-data-cosmosdb/src/main/java/com/baeldung/spring/data/cosmosdb/AzurecosmodbApplication.java
 create mode 100644 persistence-modules/spring-data-cosmosdb/src/main/java/com/baeldung/spring/data/cosmosdb/controller/ProductController.java
 create mode 100644 persistence-modules/spring-data-cosmosdb/src/main/java/com/baeldung/spring/data/cosmosdb/entity/Product.java
 create mode 100644 persistence-modules/spring-data-cosmosdb/src/main/java/com/baeldung/spring/data/cosmosdb/repository/ProductRepository.java
 create mode 100644 persistence-modules/spring-data-cosmosdb/src/main/java/com/baeldung/spring/data/cosmosdb/service/ProductService.java
 create mode 100644 persistence-modules/spring-data-cosmosdb/src/main/resources/application.properties
 create mode 100644 persistence-modules/spring-data-cosmosdb/src/test/java/com/baeldung/spring/data/cosmosdb/AzurecosmodbApplicationIntegrationTest.java

diff --git a/persistence-modules/spring-data-cosmosdb/pom.xml b/persistence-modules/spring-data-cosmosdb/pom.xml
new file mode 100644
index 0000000000..8bb103879d
--- /dev/null
+++ b/persistence-modules/spring-data-cosmosdb/pom.xml
@@ -0,0 +1,48 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<project xmlns="http://maven.apache.org/POM/4.0.0"
+	xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+	xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 https://maven.apache.org/xsd/maven-4.0.0.xsd">
+	<modelVersion>4.0.0</modelVersion>
+	<artifactId>spring-data-cosmosdb</artifactId>
+	<name>spring-data-cosmos-db</name>
+	<description>tutorial for spring-data-cosmosdb</description>
+
+	<parent>
+		<groupId>com.baeldung</groupId>
+		<artifactId>parent-boot-2</artifactId>
+		<version>0.0.1-SNAPSHOT</version>
+		<relativePath>../../parent-boot-2</relativePath>
+	</parent>
+
+	<properties>
+		<java.version>1.8</java.version>
+	</properties>
+
+	<dependencies>
+		<dependency>
+			<groupId>org.springframework.boot</groupId>
+			<artifactId>spring-boot-starter-web</artifactId>
+		</dependency>
+		<dependency>
+			<groupId>com.microsoft.azure</groupId>
+			<artifactId>spring-data-cosmosdb</artifactId>
+			<version>2.3.0</version>
+		</dependency>
+
+		<dependency>
+			<groupId>org.springframework.boot</groupId>
+			<artifactId>spring-boot-starter-test</artifactId>
+			<scope>test</scope>
+		</dependency>
+	</dependencies>
+
+	<build>
+		<plugins>
+			<plugin>
+				<groupId>org.springframework.boot</groupId>
+				<artifactId>spring-boot-maven-plugin</artifactId>
+			</plugin>
+		</plugins>
+	</build>
+
+</project>
diff --git a/persistence-modules/spring-data-cosmosdb/src/main/java/com/baeldung/spring/data/cosmosdb/AzurecosmodbApplication.java b/persistence-modules/spring-data-cosmosdb/src/main/java/com/baeldung/spring/data/cosmosdb/AzurecosmodbApplication.java
new file mode 100644
index 0000000000..2b145d14cd
--- /dev/null
+++ b/persistence-modules/spring-data-cosmosdb/src/main/java/com/baeldung/spring/data/cosmosdb/AzurecosmodbApplication.java
@@ -0,0 +1,44 @@
+package com.baeldung.spring.data.cosmosdb;
+
+import com.azure.data.cosmos.CosmosKeyCredential;
+import com.baeldung.spring.data.cosmosdb.repository.ProductRepository;
+import com.microsoft.azure.spring.data.cosmosdb.config.AbstractCosmosConfiguration;
+import com.microsoft.azure.spring.data.cosmosdb.config.CosmosDBConfig;
+import com.microsoft.azure.spring.data.cosmosdb.repository.config.EnableCosmosRepositories;
+
+import org.springframework.beans.factory.annotation.Value;
+import org.springframework.boot.SpringApplication;
+import org.springframework.boot.autoconfigure.SpringBootApplication;
+import org.springframework.context.annotation.Bean;
+
+@SpringBootApplication
+@EnableCosmosRepositories(basePackageClasses = ProductRepository.class)
+public class AzurecosmodbApplication extends AbstractCosmosConfiguration {
+
+    public static void main(String[] args) {
+        SpringApplication.run(AzurecosmodbApplication.class, args);
+    }
+
+    @Value("${azure.cosmosdb.uri}")
+    private String uri;
+
+    @Value("${azure.cosmosdb.key}")
+    private String key;
+
+    @Value("${azure.cosmosdb.secondaryKey}")
+    private String secondaryKey;
+
+    @Value("${azure.cosmosdb.database}")
+    private String dbName;
+
+    private CosmosKeyCredential cosmosKeyCredential;
+
+    @Bean
+    public CosmosDBConfig getConfig() {
+        this.cosmosKeyCredential = new CosmosKeyCredential(key);
+        CosmosDBConfig cosmosdbConfig = CosmosDBConfig.builder(uri, this.cosmosKeyCredential, dbName)
+            .build();
+        return cosmosdbConfig;
+    }
+
+}
diff --git a/persistence-modules/spring-data-cosmosdb/src/main/java/com/baeldung/spring/data/cosmosdb/controller/ProductController.java b/persistence-modules/spring-data-cosmosdb/src/main/java/com/baeldung/spring/data/cosmosdb/controller/ProductController.java
new file mode 100644
index 0000000000..c1e38c9601
--- /dev/null
+++ b/persistence-modules/spring-data-cosmosdb/src/main/java/com/baeldung/spring/data/cosmosdb/controller/ProductController.java
@@ -0,0 +1,54 @@
+package com.baeldung.spring.data.cosmosdb.controller;
+
+import com.baeldung.spring.data.cosmosdb.entity.Product;
+import com.baeldung.spring.data.cosmosdb.service.ProductService;
+
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.http.HttpStatus;
+import org.springframework.web.bind.annotation.DeleteMapping;
+import org.springframework.web.bind.annotation.GetMapping;
+import org.springframework.web.bind.annotation.PathVariable;
+import org.springframework.web.bind.annotation.PostMapping;
+import org.springframework.web.bind.annotation.RequestBody;
+import org.springframework.web.bind.annotation.RequestMapping;
+import org.springframework.web.bind.annotation.RequestParam;
+import org.springframework.web.bind.annotation.ResponseStatus;
+import org.springframework.web.bind.annotation.RestController;
+
+import java.util.List;
+import java.util.Optional;
+
+@RestController
+@RequestMapping("/products")
+public class ProductController {
+
+    @Autowired
+    private ProductService productService;
+
+    @PostMapping
+    @ResponseStatus(HttpStatus.CREATED)
+    public void create(@RequestBody Product product) {
+        productService.saveProduct(product);
+    }
+
+    @GetMapping(value = "/{id}/category/{category}")
+    public Optional<Product> get(@PathVariable String id, @PathVariable String category) {
+        return productService.findById(id, category);
+    }
+
+    @DeleteMapping(value = "/{id}/category/{category}")
+    public void delete(@PathVariable String id, @PathVariable String category) {
+        productService.delete(id, category);
+    }
+
+    @GetMapping
+    public List<Product> getByName(@RequestParam String name) {
+        return productService.findProductByName(name);
+    }
+
+    @GetMapping(value = "/category/{category}")
+    public List<Product> getByCategory(@PathVariable String category) {
+        return productService.getProductsOfCategory(category);
+    }
+
+}
diff --git a/persistence-modules/spring-data-cosmosdb/src/main/java/com/baeldung/spring/data/cosmosdb/entity/Product.java b/persistence-modules/spring-data-cosmosdb/src/main/java/com/baeldung/spring/data/cosmosdb/entity/Product.java
new file mode 100644
index 0000000000..07bb8889f5
--- /dev/null
+++ b/persistence-modules/spring-data-cosmosdb/src/main/java/com/baeldung/spring/data/cosmosdb/entity/Product.java
@@ -0,0 +1,58 @@
+package com.baeldung.spring.data.cosmosdb.entity;
+
+import com.microsoft.azure.spring.data.cosmosdb.core.mapping.Document;
+import com.microsoft.azure.spring.data.cosmosdb.core.mapping.PartitionKey;
+
+import org.springframework.data.annotation.Id;
+
+@Document(collection = "products")
+public class Product {
+
+    @Id
+    private String productid;
+
+    private String productName;
+
+    private double price;
+
+    @PartitionKey
+    private String productCategory;
+
+    public String getProductid() {
+        return productid;
+    }
+
+    public void setProductid(String productid) {
+        this.productid = productid;
+    }
+
+    public String getProductName() {
+        return productName;
+    }
+
+    public void setProductName(String productName) {
+        this.productName = productName;
+    }
+
+    public String getProductCategory() {
+        return productCategory;
+    }
+
+    public void setProductCategory(String productCategory) {
+        this.productCategory = productCategory;
+    }
+
+    public double getPrice() {
+        return price;
+    }
+
+    public void setPrice(double price) {
+        this.price = price;
+    }
+
+    @Override
+    public String toString() {
+        return "Product [productid=" + productid + ", productName=" + productName + ", price=" + price + ", productCategory=" + productCategory + "]";
+    }
+
+}
diff --git a/persistence-modules/spring-data-cosmosdb/src/main/java/com/baeldung/spring/data/cosmosdb/repository/ProductRepository.java b/persistence-modules/spring-data-cosmosdb/src/main/java/com/baeldung/spring/data/cosmosdb/repository/ProductRepository.java
new file mode 100644
index 0000000000..29dc85a2cf
--- /dev/null
+++ b/persistence-modules/spring-data-cosmosdb/src/main/java/com/baeldung/spring/data/cosmosdb/repository/ProductRepository.java
@@ -0,0 +1,15 @@
+package com.baeldung.spring.data.cosmosdb.repository;
+
+import com.baeldung.spring.data.cosmosdb.entity.Product;
+import com.microsoft.azure.spring.data.cosmosdb.repository.CosmosRepository;
+
+import org.springframework.stereotype.Repository;
+
+import java.util.List;
+
+@Repository
+public interface ProductRepository extends CosmosRepository<Product, String> {
+    List<Product> findByProductName(String productName);
+
+    List<Product> findByProductCategory(String category);
+}
diff --git a/persistence-modules/spring-data-cosmosdb/src/main/java/com/baeldung/spring/data/cosmosdb/service/ProductService.java b/persistence-modules/spring-data-cosmosdb/src/main/java/com/baeldung/spring/data/cosmosdb/service/ProductService.java
new file mode 100644
index 0000000000..6846d5205c
--- /dev/null
+++ b/persistence-modules/spring-data-cosmosdb/src/main/java/com/baeldung/spring/data/cosmosdb/service/ProductService.java
@@ -0,0 +1,39 @@
+package com.baeldung.spring.data.cosmosdb.service;
+
+import com.azure.data.cosmos.PartitionKey;
+import com.baeldung.spring.data.cosmosdb.entity.Product;
+import com.baeldung.spring.data.cosmosdb.repository.ProductRepository;
+
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.stereotype.Component;
+
+import java.util.List;
+import java.util.Optional;
+
+@Component
+public class ProductService {
+
+    @Autowired
+    private ProductRepository repository;
+
+    public List<Product> findProductByName(String productName) {
+        return repository.findByProductName(productName);
+    }
+
+    public Optional<Product> findById(String productId, String category) {
+        return repository.findById(productId, new PartitionKey(category));
+    }
+
+    public List<Product> getProductsOfCategory(String category) {
+        List<Product> products = repository.findByProductCategory(category);
+        return products;
+    }
+
+    public void saveProduct(Product product) {
+        repository.save(product);
+    }
+
+    public void delete(String productId, String category) {
+        repository.deleteById(productId, new PartitionKey(category));
+    }
+}
diff --git a/persistence-modules/spring-data-cosmosdb/src/main/resources/application.properties b/persistence-modules/spring-data-cosmosdb/src/main/resources/application.properties
new file mode 100644
index 0000000000..ba99ea2e6e
--- /dev/null
+++ b/persistence-modules/spring-data-cosmosdb/src/main/resources/application.properties
@@ -0,0 +1,4 @@
+azure.cosmosdb.uri=cosmodb-uri
+azure.cosmosdb.key=cosmodb-primary-key
+azure.cosmosdb.secondaryKey=cosmodb-second-key
+azure.cosmosdb.database=cosmodb-name
\ No newline at end of file
diff --git a/persistence-modules/spring-data-cosmosdb/src/test/java/com/baeldung/spring/data/cosmosdb/AzurecosmodbApplicationIntegrationTest.java b/persistence-modules/spring-data-cosmosdb/src/test/java/com/baeldung/spring/data/cosmosdb/AzurecosmodbApplicationIntegrationTest.java
new file mode 100644
index 0000000000..0ef6af15e1
--- /dev/null
+++ b/persistence-modules/spring-data-cosmosdb/src/test/java/com/baeldung/spring/data/cosmosdb/AzurecosmodbApplicationIntegrationTest.java
@@ -0,0 +1,40 @@
+package com.baeldung.spring.data.cosmosdb;
+
+import com.azure.data.cosmos.PartitionKey;
+import com.baeldung.spring.data.cosmosdb.entity.Product;
+import com.baeldung.spring.data.cosmosdb.repository.ProductRepository;
+
+import org.junit.jupiter.api.Test;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.boot.test.context.SpringBootTest;
+import org.springframework.util.Assert;
+
+import java.util.Optional;
+
+//Uncomment this when configured URI and keys for Azure Cosmos DB in application.properties
+//to run the integration test
+//@SpringBootTest
+public class AzurecosmodbApplicationIntegrationTest {
+
+    @Autowired
+    ProductRepository productRepository;
+
+    // Uncomment this when configured URI and keys for Azure Cosmos DB in application.properties
+    // to run the integration test
+    // @Test
+    public void givenProductIsCreated_whenCallFindById_thenProductIsFound() {
+        Product product = new Product();
+        product.setProductid("1001");
+        product.setProductCategory("Shirt");
+        product.setPrice(110.0);
+        product.setProductName("Blue Shirt");
+
+        // Uncomment these lines when configured URI and keys for Azure Cosmos DB in application.properties
+        // to run the integration test
+        // productRepository.save(product);
+        // Optional<Product> retrievedProduct = productRepository.findById("1001", new PartitionKey("Shirt"));
+        // Assert.notNull(retrievedProduct, "Retrieved Product is Null");
+
+    }
+
+}

From b5eef05476b6c946c9f4c97fe9b8eef9dfb5f28b Mon Sep 17 00:00:00 2001
From: Ankur Gupta <ankur.gupta@jda.com>
Date: Sun, 26 Jul 2020 16:59:27 +0530
Subject: [PATCH 029/156] cleaning up unnecessary changes

---
 spring-caching/src/main/resources/schema.sql | 1 +
 1 file changed, 1 insertion(+)

diff --git a/spring-caching/src/main/resources/schema.sql b/spring-caching/src/main/resources/schema.sql
index 7d5cb36d66..35d02bb916 100644
--- a/spring-caching/src/main/resources/schema.sql
+++ b/spring-caching/src/main/resources/schema.sql
@@ -1,6 +1,7 @@
 DROP TABLE ORDERDETAIL IF EXISTS;
 DROP TABLE ITEM IF EXISTS;
 DROP TABLE CUSTOMER IF EXISTS;
+
 CREATE TABLE CUSTOMER(
   CUSTOMERID INT PRIMARY KEY,
   CUSTOMERNAME VARCHAR(250) NOT NULL

From 2dbb667128e3f370bc68b5d1dd4269d8cc6861ef Mon Sep 17 00:00:00 2001
From: Loredana <lore.crusoveanu@gmail.com>
Date: Mon, 27 Jul 2020 12:01:55 +0300
Subject: [PATCH 030/156] article was moved to mockito-2; remove duplicate
 methods from mockito module

---
 testing-modules/mockito-2/README.md           |  3 +-
 testing-modules/mockito/README.md             |  1 -
 .../mockito/MockitoAnnotationUnitTest.java    | 46 -------------------
 3 files changed, 2 insertions(+), 48 deletions(-)

diff --git a/testing-modules/mockito-2/README.md b/testing-modules/mockito-2/README.md
index 1a013f5de3..bb7235c2cc 100644
--- a/testing-modules/mockito-2/README.md
+++ b/testing-modules/mockito-2/README.md
@@ -5,4 +5,5 @@
 - [Mockito Strict Stubbing and The UnnecessaryStubbingException](https://www.baeldung.com/mockito-unnecessary-stubbing-exception)
 - [Mockito and Fluent APIs](https://www.baeldung.com/mockito-fluent-apis)
 - [Mocking the ObjectMapper readValue() Method](https://www.baeldung.com/mockito-mock-jackson-read-value)
-- [Introduction to Mockito’s AdditionalAnswers](https://www.baeldung.com/mockito-additionalanswers)
\ No newline at end of file
+- [Introduction to Mockito’s AdditionalAnswers](https://www.baeldung.com/mockito-additionalanswers)
+- [Mockito – Using Spies](https://www.baeldung.com/mockito-spy)
diff --git a/testing-modules/mockito/README.md b/testing-modules/mockito/README.md
index 5f307c2f0b..38fb8225a6 100644
--- a/testing-modules/mockito/README.md
+++ b/testing-modules/mockito/README.md
@@ -12,5 +12,4 @@
 - [Mocking Void Methods with Mockito](https://www.baeldung.com/mockito-void-methods)
 - [Mock Final Classes and Methods with Mockito](https://www.baeldung.com/mockito-final)
 - [Testing Callbacks with Mockito](https://www.baeldung.com/mockito-callbacks)
-- [Mockito – Using Spies](https://www.baeldung.com/mockito-spy)
 - [Quick Guide to BDDMockito](https://www.baeldung.com/bdd-mockito)
diff --git a/testing-modules/mockito/src/test/java/com/baeldung/mockito/MockitoAnnotationUnitTest.java b/testing-modules/mockito/src/test/java/com/baeldung/mockito/MockitoAnnotationUnitTest.java
index 27e3258efb..1d3d6b1428 100644
--- a/testing-modules/mockito/src/test/java/com/baeldung/mockito/MockitoAnnotationUnitTest.java
+++ b/testing-modules/mockito/src/test/java/com/baeldung/mockito/MockitoAnnotationUnitTest.java
@@ -76,52 +76,6 @@ public class MockitoAnnotationUnitTest {
         assertEquals(100, spiedList.size());
     }
     
-    @Test
-    public void whenSpyingOnList_thenCorrect() {
-        List<String> list = new ArrayList<String>();
-        List<String> spyList = Mockito.spy(list);
-     
-        spyList.add("one");
-        spyList.add("two");
-     
-        Mockito.verify(spyList).add("one");
-        Mockito.verify(spyList).add("two");
-     
-        assertEquals(2, spyList.size());
-    }
-
-    @Test
-    public void whenUsingTheSpyAnnotation_thenObjectIsSpied() {
-        spiedList.add("one");
-        spiedList.add("two");
-     
-        Mockito.verify(spiedList).add("one");
-        Mockito.verify(spiedList).add("two");
-     
-        assertEquals(2, spiedList.size());
-    }
-    
-    @Test
-    public void whenStubASpy_thenStubbed() {
-        List<String> list = new ArrayList<String>();
-        List<String> spyList = Mockito.spy(list);
-     
-        assertEquals(0, spyList.size());
-     
-        Mockito.doReturn(100).when(spyList).size();
-        assertEquals(100, spyList.size());
-    }
-    
-    @Test
-    public void whenCreateSpy_thenCreate() {
-        List<String> spyList = Mockito.spy(new ArrayList<>());
-     
-        spyList.add("one");
-        Mockito.verify(spyList).add("one");
-     
-        assertEquals(1, spyList.size());
-    }
-    
     @Test
     public void whenNotUseCaptorAnnotation_thenCorrect() {
         final List<String> mockList = Mockito.mock(List.class);

From 29112018323dc0d52ab616490979bd8fdde9641f Mon Sep 17 00:00:00 2001
From: Philippe <phil@lighthouse.com.br>
Date: Tue, 28 Jul 2020 10:26:00 -0300
Subject: [PATCH 031/156] [BAEL-4381] Intro to ArchUnit

---
 .../article-resources/archunit/figure1.drawio |   1 +
 .../article-resources/archunit/figure1.png    | Bin 0 -> 15103 bytes
 libraries-testing/pom.xml                     |  14 ++-
 .../smurfs/persistence/SmurfsRepository.java  |  49 ++++++++++
 .../smurfs/persistence/domain/Smurf.java      |  64 ++++++++++++
 .../smurfs/presentation/SmurfsController.java |  27 +++++
 .../smurfs/service/SmurfsService.java         |  41 ++++++++
 .../archunit/smurfs/service/dto/SmurfDTO.java |  64 ++++++++++++
 .../archunit/smurfs/SmurfsArchUnitTest.java   |  92 ++++++++++++++++++
 9 files changed, 349 insertions(+), 3 deletions(-)
 create mode 100644 libraries-testing/article-resources/archunit/figure1.drawio
 create mode 100644 libraries-testing/article-resources/archunit/figure1.png
 create mode 100644 libraries-testing/src/main/java/com/baldung/archunit/smurfs/persistence/SmurfsRepository.java
 create mode 100644 libraries-testing/src/main/java/com/baldung/archunit/smurfs/persistence/domain/Smurf.java
 create mode 100644 libraries-testing/src/main/java/com/baldung/archunit/smurfs/presentation/SmurfsController.java
 create mode 100644 libraries-testing/src/main/java/com/baldung/archunit/smurfs/service/SmurfsService.java
 create mode 100644 libraries-testing/src/main/java/com/baldung/archunit/smurfs/service/dto/SmurfDTO.java
 create mode 100644 libraries-testing/src/test/java/com/baeldung/archunit/smurfs/SmurfsArchUnitTest.java

diff --git a/libraries-testing/article-resources/archunit/figure1.drawio b/libraries-testing/article-resources/archunit/figure1.drawio
new file mode 100644
index 0000000000..859d9946a1
--- /dev/null
+++ b/libraries-testing/article-resources/archunit/figure1.drawio
@@ -0,0 +1 @@
+<mxfile host="Electron" modified="2020-07-26T17:57:12.410Z" agent="5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) draw.io/13.5.1 Chrome/83.0.4103.122 Electron/9.1.1 Safari/537.36" etag="taZU8w0iOhZ7shLjO8K-" version="13.5.1" type="device"><diagram name="Page-1" id="b5b7bab2-c9e2-2cf4-8b2a-24fd1a2a6d21">7VjbctowEP0aP9LBNgb3sSa3BzJNJ+2kk5eMsBdbrax1ZUEgX1/Jlm84YWgbKL3wwFhHa3l99pyVwHKn6fpSkCy5xgiY5QyjteWeWY7jj331rYFNCXjOsARiQaMSshvglj6BAauwJY0g7wRKRCZp1gVD5BxC2cGIEPjYDVsg6z41IzH0gNuQsD56RyOZGNQev20mroDGiXm070zKiTkJv8YCl9w8jyOHciYl1TLmHfOERPjYgtxzy50KRFlepespMM1qxVh538ULs3XKArjc54YrsrkffLj+Bp8ePr+/GTw409XdwKyyImxpqEg3JMsYDYmkyE3mclMRpV4i05eaYRCWGyyQy1szb6txnpGQ8vgjZhoYKkSSecXpyIxrKu1RCdxgTovnuWcMFmomSGTKzJIrEFLlw94xGusIqdcOiBmZeJ3HBUkp0wqcLUMaEZX5FHmOOreAkTmwoK7WFBmK4pXcRfHRS1DGWvhF8VF4n+iKNZUYrFuQIf4SMAUpNiqkmvWMCIw/7EoUj43aJr7BkpbQRq4BiVF4XK/dlFpdmGr/QOUnvcpbzpikmlomi7dujyLIgEd5DcadEDPa0gpEymNmiEImGCMn7LxBg6IUoLPUwmhiZljKR4FfQMqNaRhkKbErjYjkSXG//ToSeLHUOS5FCDvodE3XIiIGuSPOK+M0NzuFI4ApB666/enVReD2RJCDWNEQTsL4bUMWjbXn+udbwyGFsL/nPX/L837f8874Gc/bB/P8+N/26GhPj7on5VH/KI16ponvFq7yWqiILiy/7baURlGpEcjpE5kX62mVZEi5LHjwAss7O1Tdd2m859P68Gjy7JzCnvPvYPhG7dOmX+9darPcjWagtf9POq1gYHvdFXCxyJUkt6VSJ/Xz6hn11JOpaikKT+d892e3eXuyR5v3jtrmvX7NQeQ0l8BPZGc/Vn0PeKTf3t5Hw9++vVe/pk/Z7P+d/UsV7v9eP6UD+19o64Oe2tWw+f+n3PGbv9fc8+8=</diagram></mxfile>
\ No newline at end of file
diff --git a/libraries-testing/article-resources/archunit/figure1.png b/libraries-testing/article-resources/archunit/figure1.png
new file mode 100644
index 0000000000000000000000000000000000000000..8bd8e9647b07a46e7d8e363ba750fa838c07debb
GIT binary patch
literal 15103
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
JmKeML@n88<TTB1|

literal 0
HcmV?d00001

diff --git a/libraries-testing/pom.xml b/libraries-testing/pom.xml
index 5a5cb99238..8052680ea5 100644
--- a/libraries-testing/pom.xml
+++ b/libraries-testing/pom.xml
@@ -1,7 +1,7 @@
 <?xml version="1.0" encoding="UTF-8"?>
 <project xmlns="http://maven.apache.org/POM/4.0.0"
-         xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
-         xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
+    xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+    xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
     <modelVersion>4.0.0</modelVersion>
     <artifactId>libraries-testing</artifactId>
     <name>libraries-testing</name>
@@ -158,6 +158,13 @@
             <scope>test</scope>
         </dependency>
 
+        <dependency>
+            <groupId>com.tngtech.archunit</groupId>
+            <artifactId>archunit-junit5</artifactId>
+            <version>${archunit.version}</version>
+            <scope>test</scope>
+        </dependency>
+
     </dependencies>
 
     <build>
@@ -193,7 +200,7 @@
 
     <properties>
         <asciidoctor.version>1.5.7.1</asciidoctor.version>
-		<serenity.version>1.9.9</serenity.version>
+        <serenity.version>1.9.9</serenity.version>
         <serenity.jbehave.version>1.9.0</serenity.jbehave.version>
         <serenity.jira.version>1.9.0</serenity.jira.version>
         <serenity.plugin.version>1.9.27</serenity.plugin.version>
@@ -210,6 +217,7 @@
         <maven-compiler-plugin.target>1.8</maven-compiler-plugin.target>
         <maven-compiler-plugin.source>1.8</maven-compiler-plugin.source>
         <maven-compiler-plugin.version>3.8.1</maven-compiler-plugin.version>
+        <archunit.version>0.14.1</archunit.version>
     </properties>
 
 </project>
diff --git a/libraries-testing/src/main/java/com/baldung/archunit/smurfs/persistence/SmurfsRepository.java b/libraries-testing/src/main/java/com/baldung/archunit/smurfs/persistence/SmurfsRepository.java
new file mode 100644
index 0000000000..8107e6317a
--- /dev/null
+++ b/libraries-testing/src/main/java/com/baldung/archunit/smurfs/persistence/SmurfsRepository.java
@@ -0,0 +1,49 @@
+/**
+ * 
+ */
+package com.baldung.archunit.smurfs.persistence;
+
+import java.util.Collections;
+import java.util.List;
+import java.util.Map;
+import java.util.Optional;
+import java.util.TreeMap;
+
+import com.baldung.archunit.smurfs.persistence.domain.Smurf;
+
+import static java.util.stream.Collectors.toList;
+
+/**
+ * @author Philippe
+ *
+ */
+public class SmurfsRepository {
+    
+    private static Map<String,Smurf> smurfs = Collections.synchronizedMap(new TreeMap<>());
+    
+    static {
+        // Just a few here. A full list can be found 
+        // at https://smurfs.fandom.com/wiki/List_of_Smurf_characters
+        smurfs.put("Papa", new Smurf("Papa", true, true));
+        smurfs.put("Actor", new Smurf("Actor", true, true));
+        smurfs.put("Alchemist", new Smurf("Alchemist", true, true));
+        smurfs.put("Archeologist", new Smurf("Archeologist", true, true));
+        smurfs.put("Architect", new Smurf("Architect", true, true));
+        smurfs.put("Baby", new Smurf("Baby", true, true));
+        smurfs.put("Baker", new Smurf("Baker", true, true));
+        smurfs.put("Baker", new Smurf("Baker", true, true));
+    }
+    
+    public SmurfsRepository() {
+        
+    }
+    
+    public List<Smurf> findAll() {
+       return Collections.unmodifiableList(smurfs.values().stream().collect(toList()));
+    }
+    
+    public Optional<Smurf> findByName(String name) {
+        return Optional.of(smurfs.get(name));
+    }
+
+}
diff --git a/libraries-testing/src/main/java/com/baldung/archunit/smurfs/persistence/domain/Smurf.java b/libraries-testing/src/main/java/com/baldung/archunit/smurfs/persistence/domain/Smurf.java
new file mode 100644
index 0000000000..468266cf9a
--- /dev/null
+++ b/libraries-testing/src/main/java/com/baldung/archunit/smurfs/persistence/domain/Smurf.java
@@ -0,0 +1,64 @@
+/**
+ * 
+ */
+package com.baldung.archunit.smurfs.persistence.domain;
+
+/**
+ * @author Philippe
+ *
+ */
+public class Smurf {
+    private String name;
+    private boolean comic;
+    private boolean cartoon;
+
+    public Smurf() {}
+
+    public Smurf(String name, boolean comic, boolean cartoon) {
+        this.name = name;
+        this.comic = comic;
+        this.cartoon = cartoon;
+    }
+
+    /**
+     * @return the name
+     */
+    public String getName() {
+        return name;
+    }
+
+    /**
+     * @param name the name to set
+     */
+    public void setName(String name) {
+        this.name = name;
+    }
+
+    /**
+     * @return the commic
+     */
+    public boolean isComic() {
+        return comic;
+    }
+
+    /**
+     * @param commic the commic to set
+     */
+    public void setCommic(boolean comic) {
+        this.comic = comic;
+    }
+
+    /**
+     * @return the cartoon
+     */
+    public boolean isCartoon() {
+        return cartoon;
+    }
+
+    /**
+     * @param cartoon the cartoon to set
+     */
+    public void setCartoon(boolean cartoon) {
+        this.cartoon = cartoon;
+    }
+}
diff --git a/libraries-testing/src/main/java/com/baldung/archunit/smurfs/presentation/SmurfsController.java b/libraries-testing/src/main/java/com/baldung/archunit/smurfs/presentation/SmurfsController.java
new file mode 100644
index 0000000000..c0aff4ec03
--- /dev/null
+++ b/libraries-testing/src/main/java/com/baldung/archunit/smurfs/presentation/SmurfsController.java
@@ -0,0 +1,27 @@
+package com.baldung.archunit.smurfs.presentation;
+
+import java.util.List;
+
+import org.springframework.http.MediaType;
+import org.springframework.web.bind.annotation.GetMapping;
+import org.springframework.web.bind.annotation.RequestMapping;
+import org.springframework.web.bind.annotation.RestController;
+
+import com.baldung.archunit.smurfs.service.SmurfsService;
+import com.baldung.archunit.smurfs.service.dto.SmurfDTO;
+
+@RequestMapping(value = "/smurfs", produces = MediaType.APPLICATION_JSON_UTF8_VALUE)
+@RestController
+public class SmurfsController {
+    
+    private SmurfsService smurfs;
+    
+    public SmurfsController(SmurfsService smurfs) {
+        this.smurfs = smurfs;
+    }
+
+    @GetMapping
+    public List<SmurfDTO> getSmurfs() {
+        return smurfs.findAll();
+    }
+}
diff --git a/libraries-testing/src/main/java/com/baldung/archunit/smurfs/service/SmurfsService.java b/libraries-testing/src/main/java/com/baldung/archunit/smurfs/service/SmurfsService.java
new file mode 100644
index 0000000000..40ffcc955c
--- /dev/null
+++ b/libraries-testing/src/main/java/com/baldung/archunit/smurfs/service/SmurfsService.java
@@ -0,0 +1,41 @@
+/**
+ * 
+ */
+package com.baldung.archunit.smurfs.service;
+
+import java.util.List;
+import java.util.stream.Collectors;
+
+import org.springframework.stereotype.Component;
+
+import com.baldung.archunit.smurfs.persistence.SmurfsRepository;
+import com.baldung.archunit.smurfs.persistence.domain.Smurf;
+import com.baldung.archunit.smurfs.service.dto.SmurfDTO;
+
+/**
+ * @author Philippe
+ *
+ */
+@Component
+public class SmurfsService {
+    
+    private SmurfsRepository repository;
+    
+    public SmurfsService(SmurfsRepository repository) {
+        this.repository = repository;
+    }
+    
+    public List<SmurfDTO> findAll() {
+        
+        return repository.findAll()
+          .stream()
+          .map(SmurfsService::toDTO)
+          .collect(Collectors.toList());
+    }
+    
+    
+    public static SmurfDTO toDTO(Smurf smurf) {
+        return new SmurfDTO(smurf.getName(),smurf.isComic(), smurf.isCartoon());
+    }
+
+}
diff --git a/libraries-testing/src/main/java/com/baldung/archunit/smurfs/service/dto/SmurfDTO.java b/libraries-testing/src/main/java/com/baldung/archunit/smurfs/service/dto/SmurfDTO.java
new file mode 100644
index 0000000000..3c49262f9d
--- /dev/null
+++ b/libraries-testing/src/main/java/com/baldung/archunit/smurfs/service/dto/SmurfDTO.java
@@ -0,0 +1,64 @@
+/**
+ * 
+ */
+package com.baldung.archunit.smurfs.service.dto;
+
+import com.baldung.archunit.smurfs.persistence.domain.Smurf;
+
+/**
+ * @author Philippe
+ *
+ */
+public class SmurfDTO {
+    private String name;
+    private boolean comic;
+    private boolean cartoon;
+    
+    public SmurfDTO() {}
+    
+    public SmurfDTO(String name, boolean comic, boolean cartoon) {
+        this.name = name;
+        this.comic = comic;
+        this.cartoon = cartoon;
+    }
+    
+    
+    /**
+     * @return the name
+     */
+    public String getName() {
+        return name;
+    }
+    /**
+     * @param name the name to set
+     */
+    public void setName(String name) {
+        this.name = name;
+    }
+    /**
+     * @return the commic
+     */
+    public boolean isComic() {
+        return comic;
+    }
+    /**
+     * @param commic the commic to set
+     */
+    public void setCommic(boolean comic) {
+        this.comic = comic;
+    }
+    /**
+     * @return the cartoon
+     */
+    public boolean isCartoon() {
+        return cartoon;
+    }
+    /**
+     * @param cartoon the cartoon to set
+     */
+    public void setCartoon(boolean cartoon) {
+        this.cartoon = cartoon;
+    }
+    
+    
+}
diff --git a/libraries-testing/src/test/java/com/baeldung/archunit/smurfs/SmurfsArchUnitTest.java b/libraries-testing/src/test/java/com/baeldung/archunit/smurfs/SmurfsArchUnitTest.java
new file mode 100644
index 0000000000..b0c4397794
--- /dev/null
+++ b/libraries-testing/src/test/java/com/baeldung/archunit/smurfs/SmurfsArchUnitTest.java
@@ -0,0 +1,92 @@
+/**
+ * 
+ */
+package com.baeldung.archunit.smurfs;
+
+
+import com.tngtech.archunit.core.domain.JavaClasses;
+import com.tngtech.archunit.core.importer.ClassFileImporter;
+import com.tngtech.archunit.lang.ArchRule;
+import com.tngtech.archunit.library.Architectures.LayeredArchitecture;
+
+import static com.tngtech.archunit.lang.syntax.ArchRuleDefinition.classes;
+import static com.tngtech.archunit.lang.syntax.ArchRuleDefinition.noClasses;
+import static com.tngtech.archunit.library.Architectures.layeredArchitecture;
+
+import static org.junit.jupiter.api.Assertions.assertThrows;
+
+import org.junit.jupiter.api.Test;
+
+/**
+ * @author Philippe
+ *
+ */
+public class SmurfsArchUnitTest {
+    
+    @Test
+    public void givenPresentationLayerClasses_thenWrongCheckFails() {        
+        JavaClasses jc = new ClassFileImporter().importPackages("com.baldung.archunit.smurfs");
+        
+        ArchRule r1 = classes()
+          .that()
+            .resideInAPackage("..presentation..")
+          .should()
+            .onlyDependOnClassesThat()
+              .resideInAPackage("..service..");
+    
+        assertThrows(AssertionError.class, ()-> r1.check(jc)) ;
+    }
+    
+
+    @Test
+    public void givenPresentationLayerClasses_thenCheckWithFrameworkDependenciesSuccess() {        
+        JavaClasses jc = new ClassFileImporter().importPackages("com.baldung.archunit.smurfs");
+        
+        ArchRule r1 = classes()
+          .that()
+            .resideInAPackage("..presentation..")
+          .should()
+            .onlyDependOnClassesThat()
+              .resideInAnyPackage("..service..", "java..", "javax..", "org.springframework..");
+
+        r1.check(jc);
+    }
+
+    @Test
+    public void givenPresentationLayerClasses_thenNoPersistenceLayerAccess() {        
+        JavaClasses jc = new ClassFileImporter().importPackages("com.baldung.archunit.smurfs");
+        
+        ArchRule r1 = noClasses()
+          .that()
+            .resideInAPackage("..presentation..")
+          .should()
+            .dependOnClassesThat()
+              .resideInAPackage("..persistence..");
+          
+        
+        r1.check(jc);
+    }
+    
+    @Test
+    public void givenApplicationClasses_thenNoLayerViolationsShouldExist() {
+        
+        JavaClasses jc = new ClassFileImporter().importPackages("com.baldung.archunit.smurfs");
+        
+        LayeredArchitecture arch = layeredArchitecture()
+           // Define layers
+          .layer("Presentation").definedBy("..presentation..")
+          .layer("Service").definedBy("..service..")
+          .layer("Persistence").definedBy("..persistence..")
+          // Add constraints
+          .whereLayer("Presentation").mayNotBeAccessedByAnyLayer()
+          .whereLayer("Service").mayOnlyBeAccessedByLayers("Presentation")
+          .whereLayer("Persistence").mayOnlyBeAccessedByLayers("Service");
+          
+        
+        arch.check(jc);
+        
+    }
+    
+    
+
+}

From 4dcdc5964600b721eddc4947ec0190197a9ae50b Mon Sep 17 00:00:00 2001
From: Philippe <phil@lighthouse.com.br>
Date: Tue, 28 Jul 2020 10:30:33 -0300
Subject: [PATCH 032/156] [BAEL-4381] Intro to ArchUnit

Code formatting
---
 .../java/com/baeldung/archunit/smurfs/SmurfsArchUnitTest.java  | 3 ---
 1 file changed, 3 deletions(-)

diff --git a/libraries-testing/src/test/java/com/baeldung/archunit/smurfs/SmurfsArchUnitTest.java b/libraries-testing/src/test/java/com/baeldung/archunit/smurfs/SmurfsArchUnitTest.java
index b0c4397794..a89716fe9c 100644
--- a/libraries-testing/src/test/java/com/baeldung/archunit/smurfs/SmurfsArchUnitTest.java
+++ b/libraries-testing/src/test/java/com/baeldung/archunit/smurfs/SmurfsArchUnitTest.java
@@ -62,7 +62,6 @@ public class SmurfsArchUnitTest {
           .should()
             .dependOnClassesThat()
               .resideInAPackage("..persistence..");
-          
         
         r1.check(jc);
     }
@@ -81,10 +80,8 @@ public class SmurfsArchUnitTest {
           .whereLayer("Presentation").mayNotBeAccessedByAnyLayer()
           .whereLayer("Service").mayOnlyBeAccessedByLayers("Presentation")
           .whereLayer("Persistence").mayOnlyBeAccessedByLayers("Service");
-          
         
         arch.check(jc);
-        
     }
     
     

From 2355ccfb5e8bb4f7a886b7a8c12fe7b9fa37177a Mon Sep 17 00:00:00 2001
From: Philippe <phil@lighthouse.com.br>
Date: Tue, 28 Jul 2020 10:31:18 -0300
Subject: [PATCH 033/156] [BAEL-4381] Intro to ArchUnit

Code formatting
---
 .../java/com/baeldung/archunit/smurfs/SmurfsArchUnitTest.java  | 3 ---
 1 file changed, 3 deletions(-)

diff --git a/libraries-testing/src/test/java/com/baeldung/archunit/smurfs/SmurfsArchUnitTest.java b/libraries-testing/src/test/java/com/baeldung/archunit/smurfs/SmurfsArchUnitTest.java
index a89716fe9c..fa4428e599 100644
--- a/libraries-testing/src/test/java/com/baeldung/archunit/smurfs/SmurfsArchUnitTest.java
+++ b/libraries-testing/src/test/java/com/baeldung/archunit/smurfs/SmurfsArchUnitTest.java
@@ -83,7 +83,4 @@ public class SmurfsArchUnitTest {
         
         arch.check(jc);
     }
-    
-    
-
 }

From 751c60fb71266be15120d45871f7b00efac8e53f Mon Sep 17 00:00:00 2001
From: Philippe <phil@lighthouse.com.br>
Date: Tue, 28 Jul 2020 10:44:32 -0300
Subject: [PATCH 034/156] [BAEL-4381] Intro to ArchUnit

Package typo
---
 .../archunit/smurfs/persistence/SmurfsRepository.java     | 4 ++--
 .../archunit/smurfs/persistence/domain/Smurf.java         | 2 +-
 .../archunit/smurfs/presentation/SmurfsController.java    | 6 +++---
 .../archunit/smurfs/service/SmurfsService.java            | 8 ++++----
 .../archunit/smurfs/service/dto/SmurfDTO.java             | 4 ++--
 .../com/baeldung/archunit/smurfs/SmurfsArchUnitTest.java  | 8 ++++----
 6 files changed, 16 insertions(+), 16 deletions(-)
 rename libraries-testing/src/main/java/com/{baldung => baeldung}/archunit/smurfs/persistence/SmurfsRepository.java (92%)
 rename libraries-testing/src/main/java/com/{baldung => baeldung}/archunit/smurfs/persistence/domain/Smurf.java (94%)
 rename libraries-testing/src/main/java/com/{baldung => baeldung}/archunit/smurfs/presentation/SmurfsController.java (78%)
 rename libraries-testing/src/main/java/com/{baldung => baeldung}/archunit/smurfs/service/SmurfsService.java (74%)
 rename libraries-testing/src/main/java/com/{baldung => baeldung}/archunit/smurfs/service/dto/SmurfDTO.java (90%)

diff --git a/libraries-testing/src/main/java/com/baldung/archunit/smurfs/persistence/SmurfsRepository.java b/libraries-testing/src/main/java/com/baeldung/archunit/smurfs/persistence/SmurfsRepository.java
similarity index 92%
rename from libraries-testing/src/main/java/com/baldung/archunit/smurfs/persistence/SmurfsRepository.java
rename to libraries-testing/src/main/java/com/baeldung/archunit/smurfs/persistence/SmurfsRepository.java
index 8107e6317a..1dee45087a 100644
--- a/libraries-testing/src/main/java/com/baldung/archunit/smurfs/persistence/SmurfsRepository.java
+++ b/libraries-testing/src/main/java/com/baeldung/archunit/smurfs/persistence/SmurfsRepository.java
@@ -1,7 +1,7 @@
 /**
  * 
  */
-package com.baldung.archunit.smurfs.persistence;
+package com.baeldung.archunit.smurfs.persistence;
 
 import java.util.Collections;
 import java.util.List;
@@ -9,7 +9,7 @@ import java.util.Map;
 import java.util.Optional;
 import java.util.TreeMap;
 
-import com.baldung.archunit.smurfs.persistence.domain.Smurf;
+import com.baeldung.archunit.smurfs.persistence.domain.Smurf;
 
 import static java.util.stream.Collectors.toList;
 
diff --git a/libraries-testing/src/main/java/com/baldung/archunit/smurfs/persistence/domain/Smurf.java b/libraries-testing/src/main/java/com/baeldung/archunit/smurfs/persistence/domain/Smurf.java
similarity index 94%
rename from libraries-testing/src/main/java/com/baldung/archunit/smurfs/persistence/domain/Smurf.java
rename to libraries-testing/src/main/java/com/baeldung/archunit/smurfs/persistence/domain/Smurf.java
index 468266cf9a..6e0f586a5b 100644
--- a/libraries-testing/src/main/java/com/baldung/archunit/smurfs/persistence/domain/Smurf.java
+++ b/libraries-testing/src/main/java/com/baeldung/archunit/smurfs/persistence/domain/Smurf.java
@@ -1,7 +1,7 @@
 /**
  * 
  */
-package com.baldung.archunit.smurfs.persistence.domain;
+package com.baeldung.archunit.smurfs.persistence.domain;
 
 /**
  * @author Philippe
diff --git a/libraries-testing/src/main/java/com/baldung/archunit/smurfs/presentation/SmurfsController.java b/libraries-testing/src/main/java/com/baeldung/archunit/smurfs/presentation/SmurfsController.java
similarity index 78%
rename from libraries-testing/src/main/java/com/baldung/archunit/smurfs/presentation/SmurfsController.java
rename to libraries-testing/src/main/java/com/baeldung/archunit/smurfs/presentation/SmurfsController.java
index c0aff4ec03..7e31980d89 100644
--- a/libraries-testing/src/main/java/com/baldung/archunit/smurfs/presentation/SmurfsController.java
+++ b/libraries-testing/src/main/java/com/baeldung/archunit/smurfs/presentation/SmurfsController.java
@@ -1,4 +1,4 @@
-package com.baldung.archunit.smurfs.presentation;
+package com.baeldung.archunit.smurfs.presentation;
 
 import java.util.List;
 
@@ -7,8 +7,8 @@ import org.springframework.web.bind.annotation.GetMapping;
 import org.springframework.web.bind.annotation.RequestMapping;
 import org.springframework.web.bind.annotation.RestController;
 
-import com.baldung.archunit.smurfs.service.SmurfsService;
-import com.baldung.archunit.smurfs.service.dto.SmurfDTO;
+import com.baeldung.archunit.smurfs.service.SmurfsService;
+import com.baeldung.archunit.smurfs.service.dto.SmurfDTO;
 
 @RequestMapping(value = "/smurfs", produces = MediaType.APPLICATION_JSON_UTF8_VALUE)
 @RestController
diff --git a/libraries-testing/src/main/java/com/baldung/archunit/smurfs/service/SmurfsService.java b/libraries-testing/src/main/java/com/baeldung/archunit/smurfs/service/SmurfsService.java
similarity index 74%
rename from libraries-testing/src/main/java/com/baldung/archunit/smurfs/service/SmurfsService.java
rename to libraries-testing/src/main/java/com/baeldung/archunit/smurfs/service/SmurfsService.java
index 40ffcc955c..e2c73ef77e 100644
--- a/libraries-testing/src/main/java/com/baldung/archunit/smurfs/service/SmurfsService.java
+++ b/libraries-testing/src/main/java/com/baeldung/archunit/smurfs/service/SmurfsService.java
@@ -1,16 +1,16 @@
 /**
  * 
  */
-package com.baldung.archunit.smurfs.service;
+package com.baeldung.archunit.smurfs.service;
 
 import java.util.List;
 import java.util.stream.Collectors;
 
 import org.springframework.stereotype.Component;
 
-import com.baldung.archunit.smurfs.persistence.SmurfsRepository;
-import com.baldung.archunit.smurfs.persistence.domain.Smurf;
-import com.baldung.archunit.smurfs.service.dto.SmurfDTO;
+import com.baeldung.archunit.smurfs.persistence.SmurfsRepository;
+import com.baeldung.archunit.smurfs.persistence.domain.Smurf;
+import com.baeldung.archunit.smurfs.service.dto.SmurfDTO;
 
 /**
  * @author Philippe
diff --git a/libraries-testing/src/main/java/com/baldung/archunit/smurfs/service/dto/SmurfDTO.java b/libraries-testing/src/main/java/com/baeldung/archunit/smurfs/service/dto/SmurfDTO.java
similarity index 90%
rename from libraries-testing/src/main/java/com/baldung/archunit/smurfs/service/dto/SmurfDTO.java
rename to libraries-testing/src/main/java/com/baeldung/archunit/smurfs/service/dto/SmurfDTO.java
index 3c49262f9d..948d0b349a 100644
--- a/libraries-testing/src/main/java/com/baldung/archunit/smurfs/service/dto/SmurfDTO.java
+++ b/libraries-testing/src/main/java/com/baeldung/archunit/smurfs/service/dto/SmurfDTO.java
@@ -1,9 +1,9 @@
 /**
  * 
  */
-package com.baldung.archunit.smurfs.service.dto;
+package com.baeldung.archunit.smurfs.service.dto;
 
-import com.baldung.archunit.smurfs.persistence.domain.Smurf;
+import com.baeldung.archunit.smurfs.persistence.domain.Smurf;
 
 /**
  * @author Philippe
diff --git a/libraries-testing/src/test/java/com/baeldung/archunit/smurfs/SmurfsArchUnitTest.java b/libraries-testing/src/test/java/com/baeldung/archunit/smurfs/SmurfsArchUnitTest.java
index fa4428e599..0231a2c51a 100644
--- a/libraries-testing/src/test/java/com/baeldung/archunit/smurfs/SmurfsArchUnitTest.java
+++ b/libraries-testing/src/test/java/com/baeldung/archunit/smurfs/SmurfsArchUnitTest.java
@@ -25,7 +25,7 @@ public class SmurfsArchUnitTest {
     
     @Test
     public void givenPresentationLayerClasses_thenWrongCheckFails() {        
-        JavaClasses jc = new ClassFileImporter().importPackages("com.baldung.archunit.smurfs");
+        JavaClasses jc = new ClassFileImporter().importPackages("com.baeldung.archunit.smurfs");
         
         ArchRule r1 = classes()
           .that()
@@ -40,7 +40,7 @@ public class SmurfsArchUnitTest {
 
     @Test
     public void givenPresentationLayerClasses_thenCheckWithFrameworkDependenciesSuccess() {        
-        JavaClasses jc = new ClassFileImporter().importPackages("com.baldung.archunit.smurfs");
+        JavaClasses jc = new ClassFileImporter().importPackages("com.baeldung.archunit.smurfs");
         
         ArchRule r1 = classes()
           .that()
@@ -54,7 +54,7 @@ public class SmurfsArchUnitTest {
 
     @Test
     public void givenPresentationLayerClasses_thenNoPersistenceLayerAccess() {        
-        JavaClasses jc = new ClassFileImporter().importPackages("com.baldung.archunit.smurfs");
+        JavaClasses jc = new ClassFileImporter().importPackages("com.baeldung.archunit.smurfs");
         
         ArchRule r1 = noClasses()
           .that()
@@ -69,7 +69,7 @@ public class SmurfsArchUnitTest {
     @Test
     public void givenApplicationClasses_thenNoLayerViolationsShouldExist() {
         
-        JavaClasses jc = new ClassFileImporter().importPackages("com.baldung.archunit.smurfs");
+        JavaClasses jc = new ClassFileImporter().importPackages("com.baeldung.archunit.smurfs");
         
         LayeredArchitecture arch = layeredArchitecture()
            // Define layers

From eadd24ad5de2567d7dca6365715340b8c5258b05 Mon Sep 17 00:00:00 2001
From: andrebrowne <42154231+andrebrowne@users.noreply.github.com>
Date: Tue, 28 Jul 2020 18:03:57 -0400
Subject: [PATCH 035/156] Simplify hashcode example

---
 .../java/com/baeldung/jpa/equality/EqualByBusinessKey.java   | 5 +----
 1 file changed, 1 insertion(+), 4 deletions(-)

diff --git a/persistence-modules/java-jpa-3/src/main/java/com/baeldung/jpa/equality/EqualByBusinessKey.java b/persistence-modules/java-jpa-3/src/main/java/com/baeldung/jpa/equality/EqualByBusinessKey.java
index 3e34f97d77..78ba1ad1e9 100644
--- a/persistence-modules/java-jpa-3/src/main/java/com/baeldung/jpa/equality/EqualByBusinessKey.java
+++ b/persistence-modules/java-jpa-3/src/main/java/com/baeldung/jpa/equality/EqualByBusinessKey.java
@@ -32,10 +32,7 @@ public class EqualByBusinessKey {
 
     @Override
     public int hashCode() {
-        final int prime = 31;
-        int result = 1;
-        result = prime * result + ((email == null) ? 0 : email.hashCode());
-        return result;
+        return java.util.Objects.hashCode(email);
     }
 
     @Override

From da07a30a00cf92b2b251714f56684dd4a94d57fa Mon Sep 17 00:00:00 2001
From: andrebrowne <42154231+andrebrowne@users.noreply.github.com>
Date: Tue, 28 Jul 2020 18:40:29 -0400
Subject: [PATCH 036/156] Remove metamodel plugin

---
 persistence-modules/java-jpa-3/pom.xml | 20 --------------------
 1 file changed, 20 deletions(-)

diff --git a/persistence-modules/java-jpa-3/pom.xml b/persistence-modules/java-jpa-3/pom.xml
index 562f337215..57791f474e 100644
--- a/persistence-modules/java-jpa-3/pom.xml
+++ b/persistence-modules/java-jpa-3/pom.xml
@@ -66,26 +66,6 @@
                     <compilerArgument>-proc:none</compilerArgument>
                 </configuration>
             </plugin>
-            <plugin>
-                <groupId>org.bsc.maven</groupId>
-                <artifactId>maven-processor-plugin</artifactId>
-                <version>${maven-processor-plugin.version}</version>
-                <executions>
-                    <execution>
-                        <id>process</id>
-                        <goals>
-                            <goal>process</goal>
-                        </goals>
-                        <phase>generate-sources</phase>
-                        <configuration>
-                            <outputDirectory>target/metamodel</outputDirectory>
-                            <processors>
-                                <processor>org.hibernate.jpamodelgen.JPAMetaModelEntityProcessor</processor>
-                            </processors>
-                        </configuration>
-                    </execution>
-                </executions>
-            </plugin>
             <plugin>
                 <groupId>org.codehaus.mojo</groupId>
                 <artifactId>build-helper-maven-plugin</artifactId>

From 23f1333aaaca15c8bc662ef873c5b5f494284b9f Mon Sep 17 00:00:00 2001
From: Ankur Gupta <ankur.gupta@jda.com>
Date: Thu, 30 Jul 2020 01:43:57 +0530
Subject: [PATCH 037/156] Implementing Code Review comments

---
 .../spring-data-cosmosdb/pom.xml              | 84 ++++++++++---------
 .../controller/ProductController.java         | 10 ++-
 .../spring/data/cosmosdb/entity/Product.java  | 42 ++--------
 .../data/cosmosdb/service/ProductService.java |  3 +-
 ...=> AzurecosmodbApplicationManualTest.java} | 12 ++-
 5 files changed, 62 insertions(+), 89 deletions(-)
 rename persistence-modules/spring-data-cosmosdb/src/test/java/com/baeldung/spring/data/cosmosdb/{AzurecosmodbApplicationIntegrationTest.java => AzurecosmodbApplicationManualTest.java} (70%)

diff --git a/persistence-modules/spring-data-cosmosdb/pom.xml b/persistence-modules/spring-data-cosmosdb/pom.xml
index 8bb103879d..7de135cdb6 100644
--- a/persistence-modules/spring-data-cosmosdb/pom.xml
+++ b/persistence-modules/spring-data-cosmosdb/pom.xml
@@ -1,48 +1,52 @@
 <?xml version="1.0" encoding="UTF-8"?>
 <project xmlns="http://maven.apache.org/POM/4.0.0"
-	xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
-	xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 https://maven.apache.org/xsd/maven-4.0.0.xsd">
-	<modelVersion>4.0.0</modelVersion>
-	<artifactId>spring-data-cosmosdb</artifactId>
-	<name>spring-data-cosmos-db</name>
-	<description>tutorial for spring-data-cosmosdb</description>
+  xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+  xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 https://maven.apache.org/xsd/maven-4.0.0.xsd">
+  <modelVersion>4.0.0</modelVersion>
+  <artifactId>spring-data-cosmosdb</artifactId>
+  <name>spring-data-cosmos-db</name>
+  <description>tutorial for spring-data-cosmosdb</description>
 
-	<parent>
-		<groupId>com.baeldung</groupId>
-		<artifactId>parent-boot-2</artifactId>
-		<version>0.0.1-SNAPSHOT</version>
-		<relativePath>../../parent-boot-2</relativePath>
-	</parent>
+  <parent>
+    <groupId>com.baeldung</groupId>
+	<artifactId>parent-boot-2</artifactId>
+	<version>0.0.1-SNAPSHOT</version>
+	<relativePath>../../parent-boot-2</relativePath>
+  </parent>
 
-	<properties>
-		<java.version>1.8</java.version>
-	</properties>
+  <properties>
+	<java.version>1.8</java.version>
+	<cosmodb.version>2.3.0</cosmodb.version>
+  </properties>
 
-	<dependencies>
-		<dependency>
-			<groupId>org.springframework.boot</groupId>
-			<artifactId>spring-boot-starter-web</artifactId>
-		</dependency>
-		<dependency>
-			<groupId>com.microsoft.azure</groupId>
-			<artifactId>spring-data-cosmosdb</artifactId>
-			<version>2.3.0</version>
-		</dependency>
+  <dependencies>
+	<dependency>
+	  <groupId>org.springframework.boot</groupId>
+	  <artifactId>spring-boot-starter-web</artifactId>
+	</dependency>
+	<dependency>
+	  <groupId>com.microsoft.azure</groupId>
+	  <artifactId>spring-data-cosmosdb</artifactId>
+	  <version>${cosmodb.version}</version>
+	</dependency>
+    <dependency>
+	  <groupId>org.springframework.boot</groupId>
+	  <artifactId>spring-boot-starter-test</artifactId>
+	  <scope>test</scope>
+	</dependency>
+	<dependency>
+	  <groupId>org.projectlombok</groupId>
+	  <artifactId>lombok</artifactId>
+	</dependency>
+  </dependencies>
 
-		<dependency>
-			<groupId>org.springframework.boot</groupId>
-			<artifactId>spring-boot-starter-test</artifactId>
-			<scope>test</scope>
-		</dependency>
-	</dependencies>
-
-	<build>
-		<plugins>
-			<plugin>
-				<groupId>org.springframework.boot</groupId>
-				<artifactId>spring-boot-maven-plugin</artifactId>
-			</plugin>
-		</plugins>
-	</build>
+  <build>
+	<plugins>
+	  <plugin>
+		<groupId>org.springframework.boot</groupId>
+		<artifactId>spring-boot-maven-plugin</artifactId>
+	  </plugin>
+	</plugins>
+  </build>
 
 </project>
diff --git a/persistence-modules/spring-data-cosmosdb/src/main/java/com/baeldung/spring/data/cosmosdb/controller/ProductController.java b/persistence-modules/spring-data-cosmosdb/src/main/java/com/baeldung/spring/data/cosmosdb/controller/ProductController.java
index c1e38c9601..fe02be88ff 100644
--- a/persistence-modules/spring-data-cosmosdb/src/main/java/com/baeldung/spring/data/cosmosdb/controller/ProductController.java
+++ b/persistence-modules/spring-data-cosmosdb/src/main/java/com/baeldung/spring/data/cosmosdb/controller/ProductController.java
@@ -22,9 +22,13 @@ import java.util.Optional;
 @RequestMapping("/products")
 public class ProductController {
 
-    @Autowired
     private ProductService productService;
 
+    @Autowired
+    public ProductController(ProductService productService) {
+        this.productService = productService;
+    }
+
     @PostMapping
     @ResponseStatus(HttpStatus.CREATED)
     public void create(@RequestBody Product product) {
@@ -46,8 +50,8 @@ public class ProductController {
         return productService.findProductByName(name);
     }
 
-    @GetMapping(value = "/category/{category}")
-    public List<Product> getByCategory(@PathVariable String category) {
+    @GetMapping(value = "/category")
+    public List<Product> getByCategory(@RequestParam String category) {
         return productService.getProductsOfCategory(category);
     }
 
diff --git a/persistence-modules/spring-data-cosmosdb/src/main/java/com/baeldung/spring/data/cosmosdb/entity/Product.java b/persistence-modules/spring-data-cosmosdb/src/main/java/com/baeldung/spring/data/cosmosdb/entity/Product.java
index 07bb8889f5..10bbe1b9ae 100644
--- a/persistence-modules/spring-data-cosmosdb/src/main/java/com/baeldung/spring/data/cosmosdb/entity/Product.java
+++ b/persistence-modules/spring-data-cosmosdb/src/main/java/com/baeldung/spring/data/cosmosdb/entity/Product.java
@@ -5,6 +5,11 @@ import com.microsoft.azure.spring.data.cosmosdb.core.mapping.PartitionKey;
 
 import org.springframework.data.annotation.Id;
 
+import lombok.Getter;
+import lombok.Setter;
+
+@Getter
+@Setter
 @Document(collection = "products")
 public class Product {
 
@@ -18,41 +23,4 @@ public class Product {
     @PartitionKey
     private String productCategory;
 
-    public String getProductid() {
-        return productid;
-    }
-
-    public void setProductid(String productid) {
-        this.productid = productid;
-    }
-
-    public String getProductName() {
-        return productName;
-    }
-
-    public void setProductName(String productName) {
-        this.productName = productName;
-    }
-
-    public String getProductCategory() {
-        return productCategory;
-    }
-
-    public void setProductCategory(String productCategory) {
-        this.productCategory = productCategory;
-    }
-
-    public double getPrice() {
-        return price;
-    }
-
-    public void setPrice(double price) {
-        this.price = price;
-    }
-
-    @Override
-    public String toString() {
-        return "Product [productid=" + productid + ", productName=" + productName + ", price=" + price + ", productCategory=" + productCategory + "]";
-    }
-
 }
diff --git a/persistence-modules/spring-data-cosmosdb/src/main/java/com/baeldung/spring/data/cosmosdb/service/ProductService.java b/persistence-modules/spring-data-cosmosdb/src/main/java/com/baeldung/spring/data/cosmosdb/service/ProductService.java
index 6846d5205c..03f3ba39cd 100644
--- a/persistence-modules/spring-data-cosmosdb/src/main/java/com/baeldung/spring/data/cosmosdb/service/ProductService.java
+++ b/persistence-modules/spring-data-cosmosdb/src/main/java/com/baeldung/spring/data/cosmosdb/service/ProductService.java
@@ -25,8 +25,7 @@ public class ProductService {
     }
 
     public List<Product> getProductsOfCategory(String category) {
-        List<Product> products = repository.findByProductCategory(category);
-        return products;
+        return repository.findByProductCategory(category);
     }
 
     public void saveProduct(Product product) {
diff --git a/persistence-modules/spring-data-cosmosdb/src/test/java/com/baeldung/spring/data/cosmosdb/AzurecosmodbApplicationIntegrationTest.java b/persistence-modules/spring-data-cosmosdb/src/test/java/com/baeldung/spring/data/cosmosdb/AzurecosmodbApplicationManualTest.java
similarity index 70%
rename from persistence-modules/spring-data-cosmosdb/src/test/java/com/baeldung/spring/data/cosmosdb/AzurecosmodbApplicationIntegrationTest.java
rename to persistence-modules/spring-data-cosmosdb/src/test/java/com/baeldung/spring/data/cosmosdb/AzurecosmodbApplicationManualTest.java
index 0ef6af15e1..80cf17284a 100644
--- a/persistence-modules/spring-data-cosmosdb/src/test/java/com/baeldung/spring/data/cosmosdb/AzurecosmodbApplicationIntegrationTest.java
+++ b/persistence-modules/spring-data-cosmosdb/src/test/java/com/baeldung/spring/data/cosmosdb/AzurecosmodbApplicationManualTest.java
@@ -14,14 +14,14 @@ import java.util.Optional;
 //Uncomment this when configured URI and keys for Azure Cosmos DB in application.properties
 //to run the integration test
 //@SpringBootTest
-public class AzurecosmodbApplicationIntegrationTest {
+public class AzurecosmodbApplicationManualTest {
 
     @Autowired
     ProductRepository productRepository;
 
     // Uncomment this when configured URI and keys for Azure Cosmos DB in application.properties
     // to run the integration test
-    // @Test
+    //@Test
     public void givenProductIsCreated_whenCallFindById_thenProductIsFound() {
         Product product = new Product();
         product.setProductid("1001");
@@ -29,11 +29,9 @@ public class AzurecosmodbApplicationIntegrationTest {
         product.setPrice(110.0);
         product.setProductName("Blue Shirt");
 
-        // Uncomment these lines when configured URI and keys for Azure Cosmos DB in application.properties
-        // to run the integration test
-        // productRepository.save(product);
-        // Optional<Product> retrievedProduct = productRepository.findById("1001", new PartitionKey("Shirt"));
-        // Assert.notNull(retrievedProduct, "Retrieved Product is Null");
+        productRepository.save(product);
+        Optional<Product> retrievedProduct = productRepository.findById("1001", new PartitionKey("Shirt"));
+        Assert.notNull(retrievedProduct, "Retrieved Product is Null");
 
     }
 

From bb391a389f9fe800f76d94ddc3c13f2c4716b819 Mon Sep 17 00:00:00 2001
From: Ankur Gupta <ankur.gupta@jda.com>
Date: Thu, 30 Jul 2020 01:49:05 +0530
Subject: [PATCH 038/156] Implementing Code Review comments-2

---
 .../spring/data/cosmosdb/service/ProductService.java        | 6 +++++-
 1 file changed, 5 insertions(+), 1 deletion(-)

diff --git a/persistence-modules/spring-data-cosmosdb/src/main/java/com/baeldung/spring/data/cosmosdb/service/ProductService.java b/persistence-modules/spring-data-cosmosdb/src/main/java/com/baeldung/spring/data/cosmosdb/service/ProductService.java
index 03f3ba39cd..49d07ca5a2 100644
--- a/persistence-modules/spring-data-cosmosdb/src/main/java/com/baeldung/spring/data/cosmosdb/service/ProductService.java
+++ b/persistence-modules/spring-data-cosmosdb/src/main/java/com/baeldung/spring/data/cosmosdb/service/ProductService.java
@@ -13,8 +13,12 @@ import java.util.Optional;
 @Component
 public class ProductService {
 
-    @Autowired
     private ProductRepository repository;
+    
+    @Autowired
+    public ProductService(ProductRepository repository) {
+        this.repository = repository;
+    }
 
     public List<Product> findProductByName(String productName) {
         return repository.findByProductName(productName);

From 7693cbd8fe05a8c365e52c3cfa93c6d9a2f5a009 Mon Sep 17 00:00:00 2001
From: Ankur Gupta <ankurguptajec@gmail.com>
Date: Thu, 30 Jul 2020 01:54:23 +0530
Subject: [PATCH 039/156] Fixing indentation Issue in pom.xml

---
 .../spring-data-cosmosdb/pom.xml              | 56 +++++++++----------
 1 file changed, 28 insertions(+), 28 deletions(-)

diff --git a/persistence-modules/spring-data-cosmosdb/pom.xml b/persistence-modules/spring-data-cosmosdb/pom.xml
index 7de135cdb6..3bf19575dd 100644
--- a/persistence-modules/spring-data-cosmosdb/pom.xml
+++ b/persistence-modules/spring-data-cosmosdb/pom.xml
@@ -1,52 +1,52 @@
 <?xml version="1.0" encoding="UTF-8"?>
 <project xmlns="http://maven.apache.org/POM/4.0.0"
-  xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
-  xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 https://maven.apache.org/xsd/maven-4.0.0.xsd">
-  <modelVersion>4.0.0</modelVersion>
-  <artifactId>spring-data-cosmosdb</artifactId>
-  <name>spring-data-cosmos-db</name>
-  <description>tutorial for spring-data-cosmosdb</description>
+    xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+    xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 https://maven.apache.org/xsd/maven-4.0.0.xsd">
+    <modelVersion>4.0.0</modelVersion>
+    <artifactId>spring-data-cosmosdb</artifactId>
+    <name>spring-data-cosmos-db</name>
+    <description>tutorial for spring-data-cosmosdb</description>
 
-  <parent>
-    <groupId>com.baeldung</groupId>
+    <parent>
+        <groupId>com.baeldung</groupId>
 	<artifactId>parent-boot-2</artifactId>
 	<version>0.0.1-SNAPSHOT</version>
 	<relativePath>../../parent-boot-2</relativePath>
-  </parent>
+    </parent>
 
-  <properties>
+    <properties>
 	<java.version>1.8</java.version>
 	<cosmodb.version>2.3.0</cosmodb.version>
-  </properties>
+    </properties>
 
-  <dependencies>
+    <dependencies>
 	<dependency>
-	  <groupId>org.springframework.boot</groupId>
-	  <artifactId>spring-boot-starter-web</artifactId>
+	    <groupId>org.springframework.boot</groupId>
+	    <artifactId>spring-boot-starter-web</artifactId>
 	</dependency>
 	<dependency>
-	  <groupId>com.microsoft.azure</groupId>
-	  <artifactId>spring-data-cosmosdb</artifactId>
-	  <version>${cosmodb.version}</version>
+	    <groupId>com.microsoft.azure</groupId>
+	    <artifactId>spring-data-cosmosdb</artifactId>
+	    <version>${cosmodb.version}</version>
 	</dependency>
-    <dependency>
-	  <groupId>org.springframework.boot</groupId>
-	  <artifactId>spring-boot-starter-test</artifactId>
-	  <scope>test</scope>
+        <dependency>
+	    <groupId>org.springframework.boot</groupId>
+	    <artifactId>spring-boot-starter-test</artifactId>
+	    <scope>test</scope>
 	</dependency>
 	<dependency>
-	  <groupId>org.projectlombok</groupId>
-	  <artifactId>lombok</artifactId>
+	    <groupId>org.projectlombok</groupId>
+	    <artifactId>lombok</artifactId>
 	</dependency>
-  </dependencies>
+    </dependencies>
 
-  <build>
+    <build>
 	<plugins>
-	  <plugin>
+	    <plugin>
 		<groupId>org.springframework.boot</groupId>
 		<artifactId>spring-boot-maven-plugin</artifactId>
-	  </plugin>
+	    </plugin>
 	</plugins>
-  </build>
+    </build>
 
 </project>

From 251466b0a6a5b154b6e0f62ea42ec9a65eb927e1 Mon Sep 17 00:00:00 2001
From: Ankur Gupta <ankurguptajec@gmail.com>
Date: Thu, 30 Jul 2020 02:03:32 +0530
Subject: [PATCH 040/156] Fixing indentation issues

---
 .../spring-data-cosmosdb/pom.xml              | 58 +++++++++----------
 1 file changed, 29 insertions(+), 29 deletions(-)

diff --git a/persistence-modules/spring-data-cosmosdb/pom.xml b/persistence-modules/spring-data-cosmosdb/pom.xml
index 3bf19575dd..91fb53286a 100644
--- a/persistence-modules/spring-data-cosmosdb/pom.xml
+++ b/persistence-modules/spring-data-cosmosdb/pom.xml
@@ -6,47 +6,47 @@
     <artifactId>spring-data-cosmosdb</artifactId>
     <name>spring-data-cosmos-db</name>
     <description>tutorial for spring-data-cosmosdb</description>
-
+    
     <parent>
         <groupId>com.baeldung</groupId>
-	<artifactId>parent-boot-2</artifactId>
-	<version>0.0.1-SNAPSHOT</version>
-	<relativePath>../../parent-boot-2</relativePath>
+	    <artifactId>parent-boot-2</artifactId>
+	    <version>0.0.1-SNAPSHOT</version>
+	    <relativePath>../../parent-boot-2</relativePath>
     </parent>
 
     <properties>
-	<java.version>1.8</java.version>
-	<cosmodb.version>2.3.0</cosmodb.version>
+	    <java.version>1.8</java.version>
+	    <cosmodb.version>2.3.0</cosmodb.version>
     </properties>
 
     <dependencies>
-	<dependency>
-	    <groupId>org.springframework.boot</groupId>
-	    <artifactId>spring-boot-starter-web</artifactId>
-	</dependency>
-	<dependency>
-	    <groupId>com.microsoft.azure</groupId>
-	    <artifactId>spring-data-cosmosdb</artifactId>
-	    <version>${cosmodb.version}</version>
-	</dependency>
+	    <dependency>
+	        <groupId>org.springframework.boot</groupId>
+	        <artifactId>spring-boot-starter-web</artifactId>
+	    </dependency>
+	    <dependency>
+	        <groupId>com.microsoft.azure</groupId>
+	        <artifactId>spring-data-cosmosdb</artifactId>
+	        <version>${cosmodb.version}</version>
+	    </dependency>
         <dependency>
-	    <groupId>org.springframework.boot</groupId>
-	    <artifactId>spring-boot-starter-test</artifactId>
-	    <scope>test</scope>
-	</dependency>
-	<dependency>
-	    <groupId>org.projectlombok</groupId>
-	    <artifactId>lombok</artifactId>
-	</dependency>
+	        <groupId>org.springframework.boot</groupId>
+	        <artifactId>spring-boot-starter-test</artifactId>
+	        <scope>test</scope>
+	    </dependency>
+	    <dependency>
+	        <groupId>org.projectlombok</groupId>
+	        <artifactId>lombok</artifactId>
+	    </dependency>
     </dependencies>
 
     <build>
-	<plugins>
-	    <plugin>
-		<groupId>org.springframework.boot</groupId>
-		<artifactId>spring-boot-maven-plugin</artifactId>
-	    </plugin>
-	</plugins>
+        <plugins>
+            <plugin>
+                <groupId>org.springframework.boot</groupId>
+                <artifactId>spring-boot-maven-plugin</artifactId>
+            </plugin>
+        </plugins>
     </build>
 
 </project>

From 929ec03e4b603119b47df93ef1924aeabff16053 Mon Sep 17 00:00:00 2001
From: Ankur Gupta <ankurguptajec@gmail.com>
Date: Thu, 30 Jul 2020 02:09:15 +0530
Subject: [PATCH 041/156] Fixing Indentation Issues - 2

---
 .../spring-data-cosmosdb/pom.xml              | 44 +++++++++----------
 1 file changed, 22 insertions(+), 22 deletions(-)

diff --git a/persistence-modules/spring-data-cosmosdb/pom.xml b/persistence-modules/spring-data-cosmosdb/pom.xml
index 91fb53286a..1b21c6dd71 100644
--- a/persistence-modules/spring-data-cosmosdb/pom.xml
+++ b/persistence-modules/spring-data-cosmosdb/pom.xml
@@ -9,35 +9,35 @@
     
     <parent>
         <groupId>com.baeldung</groupId>
-	    <artifactId>parent-boot-2</artifactId>
-	    <version>0.0.1-SNAPSHOT</version>
-	    <relativePath>../../parent-boot-2</relativePath>
+	<artifactId>parent-boot-2</artifactId>
+	<version>0.0.1-SNAPSHOT</version>
+	<relativePath>../../parent-boot-2</relativePath>
     </parent>
 
     <properties>
-	    <java.version>1.8</java.version>
-	    <cosmodb.version>2.3.0</cosmodb.version>
+	<java.version>1.8</java.version>
+	<cosmodb.version>2.3.0</cosmodb.version>
     </properties>
 
     <dependencies>
-	    <dependency>
-	        <groupId>org.springframework.boot</groupId>
-	        <artifactId>spring-boot-starter-web</artifactId>
-	    </dependency>
-	    <dependency>
-	        <groupId>com.microsoft.azure</groupId>
-	        <artifactId>spring-data-cosmosdb</artifactId>
-	        <version>${cosmodb.version}</version>
-	    </dependency>
+	<dependency>
+	    <groupId>org.springframework.boot</groupId>
+	    <artifactId>spring-boot-starter-web</artifactId>
+	</dependency>
+	<dependency>
+	    <groupId>com.microsoft.azure</groupId>
+	    <artifactId>spring-data-cosmosdb</artifactId>
+	    <version>${cosmodb.version}</version>
+	</dependency>
         <dependency>
-	        <groupId>org.springframework.boot</groupId>
-	        <artifactId>spring-boot-starter-test</artifactId>
-	        <scope>test</scope>
-	    </dependency>
-	    <dependency>
-	        <groupId>org.projectlombok</groupId>
-	        <artifactId>lombok</artifactId>
-	    </dependency>
+	    <groupId>org.springframework.boot</groupId>
+	    <artifactId>spring-boot-starter-test</artifactId>
+	    <scope>test</scope>
+	</dependency>
+	<dependency>
+	    <groupId>org.projectlombok</groupId>
+	    <artifactId>lombok</artifactId>
+	</dependency>
     </dependencies>
 
     <build>

From 36279b05b48e78f50a8735adf38b458fa3b6ef16 Mon Sep 17 00:00:00 2001
From: Ankur Gupta <ankurguptajec@gmail.com>
Date: Thu, 30 Jul 2020 02:14:27 +0530
Subject: [PATCH 042/156] Fixing Indentation Issue -3

---
 .../spring-data-cosmosdb/pom.xml              | 51 +++++++++----------
 1 file changed, 25 insertions(+), 26 deletions(-)

diff --git a/persistence-modules/spring-data-cosmosdb/pom.xml b/persistence-modules/spring-data-cosmosdb/pom.xml
index 1b21c6dd71..75cc830578 100644
--- a/persistence-modules/spring-data-cosmosdb/pom.xml
+++ b/persistence-modules/spring-data-cosmosdb/pom.xml
@@ -6,40 +6,39 @@
     <artifactId>spring-data-cosmosdb</artifactId>
     <name>spring-data-cosmos-db</name>
     <description>tutorial for spring-data-cosmosdb</description>
-    
     <parent>
         <groupId>com.baeldung</groupId>
-	<artifactId>parent-boot-2</artifactId>
-	<version>0.0.1-SNAPSHOT</version>
-	<relativePath>../../parent-boot-2</relativePath>
+        <artifactId>parent-boot-2</artifactId>
+        <version>0.0.1-SNAPSHOT</version>
+        <relativePath>../../parent-boot-2</relativePath>
     </parent>
-
+    
     <properties>
-	<java.version>1.8</java.version>
-	<cosmodb.version>2.3.0</cosmodb.version>
+        <java.version>1.8</java.version>
+        <cosmodb.version>2.3.0</cosmodb.version>
     </properties>
-
+    
     <dependencies>
-	<dependency>
-	    <groupId>org.springframework.boot</groupId>
-	    <artifactId>spring-boot-starter-web</artifactId>
-	</dependency>
-	<dependency>
-	    <groupId>com.microsoft.azure</groupId>
-	    <artifactId>spring-data-cosmosdb</artifactId>
-	    <version>${cosmodb.version}</version>
-	</dependency>
         <dependency>
-	    <groupId>org.springframework.boot</groupId>
-	    <artifactId>spring-boot-starter-test</artifactId>
-	    <scope>test</scope>
-	</dependency>
-	<dependency>
-	    <groupId>org.projectlombok</groupId>
-	    <artifactId>lombok</artifactId>
-	</dependency>
+            <groupId>org.springframework.boot</groupId>
+            <artifactId>spring-boot-starter-web</artifactId>
+        </dependency>
+        <dependency>
+            <groupId>com.microsoft.azure</groupId>
+            <artifactId>spring-data-cosmosdb</artifactId>
+            <version>${cosmodb.version}</version>
+        </dependency>
+        <dependency>
+            <groupId>org.springframework.boot</groupId>
+            <artifactId>spring-boot-starter-test</artifactId>
+            <scope>test</scope>
+        </dependency>
+        <dependency>
+            <groupId>org.projectlombok</groupId>
+            <artifactId>lombok</artifactId>
+        </dependency>
     </dependencies>
-
+    
     <build>
         <plugins>
             <plugin>

From 204caa3219e220245475d699d89fd03a2200ea38 Mon Sep 17 00:00:00 2001
From: Ankur Gupta <ankur.gupta@jda.com>
Date: Thu, 30 Jul 2020 02:44:25 +0530
Subject: [PATCH 043/156] uncommenting the @SpringBootTest and @Test annotation

---
 .../data/cosmosdb/AzurecosmodbApplicationManualTest.java  | 8 ++------
 1 file changed, 2 insertions(+), 6 deletions(-)

diff --git a/persistence-modules/spring-data-cosmosdb/src/test/java/com/baeldung/spring/data/cosmosdb/AzurecosmodbApplicationManualTest.java b/persistence-modules/spring-data-cosmosdb/src/test/java/com/baeldung/spring/data/cosmosdb/AzurecosmodbApplicationManualTest.java
index 80cf17284a..0f42aadc6f 100644
--- a/persistence-modules/spring-data-cosmosdb/src/test/java/com/baeldung/spring/data/cosmosdb/AzurecosmodbApplicationManualTest.java
+++ b/persistence-modules/spring-data-cosmosdb/src/test/java/com/baeldung/spring/data/cosmosdb/AzurecosmodbApplicationManualTest.java
@@ -11,17 +11,13 @@ import org.springframework.util.Assert;
 
 import java.util.Optional;
 
-//Uncomment this when configured URI and keys for Azure Cosmos DB in application.properties
-//to run the integration test
-//@SpringBootTest
+@SpringBootTest
 public class AzurecosmodbApplicationManualTest {
 
     @Autowired
     ProductRepository productRepository;
 
-    // Uncomment this when configured URI and keys for Azure Cosmos DB in application.properties
-    // to run the integration test
-    //@Test
+    @Test
     public void givenProductIsCreated_whenCallFindById_thenProductIsFound() {
         Product product = new Product();
         product.setProductid("1001");

From 75df0b0778cdfd6e13c6ef34290d22c41a2c42ac Mon Sep 17 00:00:00 2001
From: Ankur Gupta <ankur.gupta@jda.com>
Date: Thu, 30 Jul 2020 03:05:16 +0530
Subject: [PATCH 044/156] retrieving the object from optional object

---
 .../spring/data/cosmosdb/AzurecosmodbApplicationManualTest.java | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/persistence-modules/spring-data-cosmosdb/src/test/java/com/baeldung/spring/data/cosmosdb/AzurecosmodbApplicationManualTest.java b/persistence-modules/spring-data-cosmosdb/src/test/java/com/baeldung/spring/data/cosmosdb/AzurecosmodbApplicationManualTest.java
index 0f42aadc6f..786b578501 100644
--- a/persistence-modules/spring-data-cosmosdb/src/test/java/com/baeldung/spring/data/cosmosdb/AzurecosmodbApplicationManualTest.java
+++ b/persistence-modules/spring-data-cosmosdb/src/test/java/com/baeldung/spring/data/cosmosdb/AzurecosmodbApplicationManualTest.java
@@ -27,7 +27,7 @@ public class AzurecosmodbApplicationManualTest {
 
         productRepository.save(product);
         Optional<Product> retrievedProduct = productRepository.findById("1001", new PartitionKey("Shirt"));
-        Assert.notNull(retrievedProduct, "Retrieved Product is Null");
+        Assert.notNull(retrievedProduct.get(), "Retrieved Product is Null");
 
     }
 

From 6092afb60a41d696ce0b838de7493269093ba58a Mon Sep 17 00:00:00 2001
From: Ankur Gupta <ankur.gupta@jda.com>
Date: Sat, 1 Aug 2020 22:41:28 +0530
Subject: [PATCH 045/156] Implementing Code Review comments -3

---
 .../spring/data/cosmosdb/controller/ProductController.java | 5 -----
 .../spring/data/cosmosdb/repository/ProductRepository.java | 1 -
 .../spring/data/cosmosdb/service/ProductService.java       | 6 +-----
 .../data/cosmosdb/AzurecosmodbApplicationManualTest.java   | 7 +++----
 4 files changed, 4 insertions(+), 15 deletions(-)

diff --git a/persistence-modules/spring-data-cosmosdb/src/main/java/com/baeldung/spring/data/cosmosdb/controller/ProductController.java b/persistence-modules/spring-data-cosmosdb/src/main/java/com/baeldung/spring/data/cosmosdb/controller/ProductController.java
index fe02be88ff..25f88bac72 100644
--- a/persistence-modules/spring-data-cosmosdb/src/main/java/com/baeldung/spring/data/cosmosdb/controller/ProductController.java
+++ b/persistence-modules/spring-data-cosmosdb/src/main/java/com/baeldung/spring/data/cosmosdb/controller/ProductController.java
@@ -50,9 +50,4 @@ public class ProductController {
         return productService.findProductByName(name);
     }
 
-    @GetMapping(value = "/category")
-    public List<Product> getByCategory(@RequestParam String category) {
-        return productService.getProductsOfCategory(category);
-    }
-
 }
diff --git a/persistence-modules/spring-data-cosmosdb/src/main/java/com/baeldung/spring/data/cosmosdb/repository/ProductRepository.java b/persistence-modules/spring-data-cosmosdb/src/main/java/com/baeldung/spring/data/cosmosdb/repository/ProductRepository.java
index 29dc85a2cf..1e4a2987a1 100644
--- a/persistence-modules/spring-data-cosmosdb/src/main/java/com/baeldung/spring/data/cosmosdb/repository/ProductRepository.java
+++ b/persistence-modules/spring-data-cosmosdb/src/main/java/com/baeldung/spring/data/cosmosdb/repository/ProductRepository.java
@@ -11,5 +11,4 @@ import java.util.List;
 public interface ProductRepository extends CosmosRepository<Product, String> {
     List<Product> findByProductName(String productName);
 
-    List<Product> findByProductCategory(String category);
 }
diff --git a/persistence-modules/spring-data-cosmosdb/src/main/java/com/baeldung/spring/data/cosmosdb/service/ProductService.java b/persistence-modules/spring-data-cosmosdb/src/main/java/com/baeldung/spring/data/cosmosdb/service/ProductService.java
index 49d07ca5a2..0d1cf7c6a6 100644
--- a/persistence-modules/spring-data-cosmosdb/src/main/java/com/baeldung/spring/data/cosmosdb/service/ProductService.java
+++ b/persistence-modules/spring-data-cosmosdb/src/main/java/com/baeldung/spring/data/cosmosdb/service/ProductService.java
@@ -14,7 +14,7 @@ import java.util.Optional;
 public class ProductService {
 
     private ProductRepository repository;
-    
+
     @Autowired
     public ProductService(ProductRepository repository) {
         this.repository = repository;
@@ -28,10 +28,6 @@ public class ProductService {
         return repository.findById(productId, new PartitionKey(category));
     }
 
-    public List<Product> getProductsOfCategory(String category) {
-        return repository.findByProductCategory(category);
-    }
-
     public void saveProduct(Product product) {
         repository.save(product);
     }
diff --git a/persistence-modules/spring-data-cosmosdb/src/test/java/com/baeldung/spring/data/cosmosdb/AzurecosmodbApplicationManualTest.java b/persistence-modules/spring-data-cosmosdb/src/test/java/com/baeldung/spring/data/cosmosdb/AzurecosmodbApplicationManualTest.java
index 786b578501..7ebdce279b 100644
--- a/persistence-modules/spring-data-cosmosdb/src/test/java/com/baeldung/spring/data/cosmosdb/AzurecosmodbApplicationManualTest.java
+++ b/persistence-modules/spring-data-cosmosdb/src/test/java/com/baeldung/spring/data/cosmosdb/AzurecosmodbApplicationManualTest.java
@@ -9,8 +9,6 @@ import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.boot.test.context.SpringBootTest;
 import org.springframework.util.Assert;
 
-import java.util.Optional;
-
 @SpringBootTest
 public class AzurecosmodbApplicationManualTest {
 
@@ -26,8 +24,9 @@ public class AzurecosmodbApplicationManualTest {
         product.setProductName("Blue Shirt");
 
         productRepository.save(product);
-        Optional<Product> retrievedProduct = productRepository.findById("1001", new PartitionKey("Shirt"));
-        Assert.notNull(retrievedProduct.get(), "Retrieved Product is Null");
+        Product retrievedProduct = productRepository.findById("1001", new PartitionKey("Shirt"))
+            .orElse(null);
+        Assert.notNull(retrievedProduct, "Retrieved Product is Null");
 
     }
 

From 8c0fc4830c736ba3300f42d2b71d0b943fb84ff4 Mon Sep 17 00:00:00 2001
From: Ankur Gupta <ankur.gupta@jda.com>
Date: Mon, 3 Aug 2020 01:00:01 +0530
Subject: [PATCH 046/156] Fixing Capitalization Issue in class names

---
 ...ecosmodbApplication.java => AzureCosmosDbApplication.java} | 4 ++--
 ...anualTest.java => AzureCosmosDbApplicationManualTest.java} | 2 +-
 2 files changed, 3 insertions(+), 3 deletions(-)
 rename persistence-modules/spring-data-cosmosdb/src/main/java/com/baeldung/spring/data/cosmosdb/{AzurecosmodbApplication.java => AzureCosmosDbApplication.java} (90%)
 rename persistence-modules/spring-data-cosmosdb/src/test/java/com/baeldung/spring/data/cosmosdb/{AzurecosmodbApplicationManualTest.java => AzureCosmosDbApplicationManualTest.java} (95%)

diff --git a/persistence-modules/spring-data-cosmosdb/src/main/java/com/baeldung/spring/data/cosmosdb/AzurecosmodbApplication.java b/persistence-modules/spring-data-cosmosdb/src/main/java/com/baeldung/spring/data/cosmosdb/AzureCosmosDbApplication.java
similarity index 90%
rename from persistence-modules/spring-data-cosmosdb/src/main/java/com/baeldung/spring/data/cosmosdb/AzurecosmodbApplication.java
rename to persistence-modules/spring-data-cosmosdb/src/main/java/com/baeldung/spring/data/cosmosdb/AzureCosmosDbApplication.java
index 2b145d14cd..7a91cd7d33 100644
--- a/persistence-modules/spring-data-cosmosdb/src/main/java/com/baeldung/spring/data/cosmosdb/AzurecosmodbApplication.java
+++ b/persistence-modules/spring-data-cosmosdb/src/main/java/com/baeldung/spring/data/cosmosdb/AzureCosmosDbApplication.java
@@ -13,10 +13,10 @@ import org.springframework.context.annotation.Bean;
 
 @SpringBootApplication
 @EnableCosmosRepositories(basePackageClasses = ProductRepository.class)
-public class AzurecosmodbApplication extends AbstractCosmosConfiguration {
+public class AzureCosmosDbApplication extends AbstractCosmosConfiguration {
 
     public static void main(String[] args) {
-        SpringApplication.run(AzurecosmodbApplication.class, args);
+        SpringApplication.run(AzureCosmosDbApplication.class, args);
     }
 
     @Value("${azure.cosmosdb.uri}")
diff --git a/persistence-modules/spring-data-cosmosdb/src/test/java/com/baeldung/spring/data/cosmosdb/AzurecosmodbApplicationManualTest.java b/persistence-modules/spring-data-cosmosdb/src/test/java/com/baeldung/spring/data/cosmosdb/AzureCosmosDbApplicationManualTest.java
similarity index 95%
rename from persistence-modules/spring-data-cosmosdb/src/test/java/com/baeldung/spring/data/cosmosdb/AzurecosmodbApplicationManualTest.java
rename to persistence-modules/spring-data-cosmosdb/src/test/java/com/baeldung/spring/data/cosmosdb/AzureCosmosDbApplicationManualTest.java
index 7ebdce279b..9170068173 100644
--- a/persistence-modules/spring-data-cosmosdb/src/test/java/com/baeldung/spring/data/cosmosdb/AzurecosmodbApplicationManualTest.java
+++ b/persistence-modules/spring-data-cosmosdb/src/test/java/com/baeldung/spring/data/cosmosdb/AzureCosmosDbApplicationManualTest.java
@@ -10,7 +10,7 @@ import org.springframework.boot.test.context.SpringBootTest;
 import org.springframework.util.Assert;
 
 @SpringBootTest
-public class AzurecosmodbApplicationManualTest {
+public class AzureCosmosDbApplicationManualTest {
 
     @Autowired
     ProductRepository productRepository;

From 3ac4049caee949f692185dd9b33245a4b8938e9a Mon Sep 17 00:00:00 2001
From: mikr <michael.krimgen@ximedes.com>
Date: Tue, 4 Aug 2020 22:39:30 +0200
Subject: [PATCH 047/156] Java-65 split persistence-modules/spring-jpa

---
 persistence-modules/spring-jpa-2/.gitignore   |  13 ++
 persistence-modules/spring-jpa-2/README.md    |  19 +++
 persistence-modules/spring-jpa-2/pom.xml      | 152 ++++++++++++++++++
 .../baeldung/config/PersistenceJPAConfig.java |  85 ++++++++++
 .../config/PersistenceJPAConfigXml.java       |  17 ++
 .../com/baeldung/config/SpringWebConfig.java  |  24 +++
 .../com/baeldung/config/StudentJpaConfig.java |  67 ++++++++
 .../com/baeldung/config/WebInitializer.java   |  20 +++
 .../com/baeldung/manytomany/model/Course.java |   0
 .../manytomany/model/CourseRating.java        |   0
 .../manytomany/model/CourseRatingKey.java     |   0
 .../manytomany/model/CourseRegistration.java  |   0
 .../baeldung/manytomany/model/Student.java    |   0
 .../src/main/resources/context.xml            |   1 +
 .../src/main/resources/logback.xml            |  19 +++
 .../main/resources/persistence-h2.properties  |  10 ++
 .../resources/persistence-student.properties  |  11 ++
 .../src/main/resources/persistence.xml        |  42 +++++
 .../src/main/resources/server.xml             |   6 +
 .../src/main/resources/sqlfiles.properties    |   1 +
 .../src/test/java/META-INF/persistence.xml    |  20 +++
 .../java/com/baeldung/SpringContextTest.java  |  21 +++
 .../manytomany/ManyToManyIntegrationTest.java |   0
 .../ManyToManyTestConfiguration.java          |   2 +-
 .../src/test/resources/.gitignore             |  13 ++
 .../src/test/resources/manytomany/db.sql      |   0
 .../test/resources/manytomany/test.properties |   0
 .../resources/persistence-student.properties  |   9 ++
 persistence-modules/spring-jpa/README.md      |   4 +-
 29 files changed, 552 insertions(+), 4 deletions(-)
 create mode 100644 persistence-modules/spring-jpa-2/.gitignore
 create mode 100644 persistence-modules/spring-jpa-2/README.md
 create mode 100644 persistence-modules/spring-jpa-2/pom.xml
 create mode 100644 persistence-modules/spring-jpa-2/src/main/java/com/baeldung/config/PersistenceJPAConfig.java
 create mode 100644 persistence-modules/spring-jpa-2/src/main/java/com/baeldung/config/PersistenceJPAConfigXml.java
 create mode 100644 persistence-modules/spring-jpa-2/src/main/java/com/baeldung/config/SpringWebConfig.java
 create mode 100644 persistence-modules/spring-jpa-2/src/main/java/com/baeldung/config/StudentJpaConfig.java
 create mode 100644 persistence-modules/spring-jpa-2/src/main/java/com/baeldung/config/WebInitializer.java
 rename persistence-modules/{spring-jpa => spring-jpa-2}/src/main/java/com/baeldung/manytomany/model/Course.java (100%)
 rename persistence-modules/{spring-jpa => spring-jpa-2}/src/main/java/com/baeldung/manytomany/model/CourseRating.java (100%)
 rename persistence-modules/{spring-jpa => spring-jpa-2}/src/main/java/com/baeldung/manytomany/model/CourseRatingKey.java (100%)
 rename persistence-modules/{spring-jpa => spring-jpa-2}/src/main/java/com/baeldung/manytomany/model/CourseRegistration.java (100%)
 rename persistence-modules/{spring-jpa => spring-jpa-2}/src/main/java/com/baeldung/manytomany/model/Student.java (100%)
 create mode 100644 persistence-modules/spring-jpa-2/src/main/resources/context.xml
 create mode 100644 persistence-modules/spring-jpa-2/src/main/resources/logback.xml
 create mode 100644 persistence-modules/spring-jpa-2/src/main/resources/persistence-h2.properties
 create mode 100644 persistence-modules/spring-jpa-2/src/main/resources/persistence-student.properties
 create mode 100644 persistence-modules/spring-jpa-2/src/main/resources/persistence.xml
 create mode 100644 persistence-modules/spring-jpa-2/src/main/resources/server.xml
 create mode 100644 persistence-modules/spring-jpa-2/src/main/resources/sqlfiles.properties
 create mode 100644 persistence-modules/spring-jpa-2/src/test/java/META-INF/persistence.xml
 create mode 100644 persistence-modules/spring-jpa-2/src/test/java/com/baeldung/SpringContextTest.java
 rename persistence-modules/{spring-jpa => spring-jpa-2}/src/test/java/com/baeldung/manytomany/ManyToManyIntegrationTest.java (100%)
 rename persistence-modules/{spring-jpa => spring-jpa-2}/src/test/java/com/baeldung/manytomany/ManyToManyTestConfiguration.java (97%)
 create mode 100644 persistence-modules/spring-jpa-2/src/test/resources/.gitignore
 rename persistence-modules/{spring-jpa => spring-jpa-2}/src/test/resources/manytomany/db.sql (100%)
 rename persistence-modules/{spring-jpa => spring-jpa-2}/src/test/resources/manytomany/test.properties (100%)
 create mode 100644 persistence-modules/spring-jpa-2/src/test/resources/persistence-student.properties

diff --git a/persistence-modules/spring-jpa-2/.gitignore b/persistence-modules/spring-jpa-2/.gitignore
new file mode 100644
index 0000000000..83c05e60c8
--- /dev/null
+++ b/persistence-modules/spring-jpa-2/.gitignore
@@ -0,0 +1,13 @@
+*.class
+
+#folders#
+/target
+/neoDb*
+/data
+/src/main/webapp/WEB-INF/classes
+*/META-INF/*
+
+# Packaged files #
+*.jar
+*.war
+*.ear
\ No newline at end of file
diff --git a/persistence-modules/spring-jpa-2/README.md b/persistence-modules/spring-jpa-2/README.md
new file mode 100644
index 0000000000..71b368b44a
--- /dev/null
+++ b/persistence-modules/spring-jpa-2/README.md
@@ -0,0 +1,19 @@
+=========
+
+## Spring JPA Example Project
+
+
+### Relevant Articles: 
+- [Many-To-Many Relationship in JPA](https://www.baeldung.com/jpa-many-to-many)
+- More articles: [[<-- prev]](/spring-jpa)
+
+
+### Eclipse Config 
+After importing the project into Eclipse, you may see the following error:  
+"No persistence xml file found in project"
+
+This can be ignored: 
+- Project -> Properties -> Java Persistance -> JPA -> Error/Warnings -> Select Ignore on "No persistence xml file found in project"
+Or: 
+- Eclipse -> Preferences - Validation - disable the "Build" execution of the JPA Validator 
+
diff --git a/persistence-modules/spring-jpa-2/pom.xml b/persistence-modules/spring-jpa-2/pom.xml
new file mode 100644
index 0000000000..410ed592b0
--- /dev/null
+++ b/persistence-modules/spring-jpa-2/pom.xml
@@ -0,0 +1,152 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+         xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
+    <modelVersion>4.0.0</modelVersion>
+    <artifactId>spring-jpa</artifactId>
+    <version>0.1-SNAPSHOT</version>
+    <name>spring-jpa</name>
+    <packaging>war</packaging>
+
+    <parent>
+        <groupId>com.baeldung</groupId>
+        <artifactId>persistence-modules</artifactId>
+        <version>1.0.0-SNAPSHOT</version>
+    </parent>
+
+    <dependencies>
+        <!-- Spring -->
+        <dependency>
+            <groupId>org.springframework</groupId>
+            <artifactId>spring-orm</artifactId>
+            <version>${org.springframework.version}</version>
+            <exclusions>
+                <exclusion>
+                    <artifactId>commons-logging</artifactId>
+                    <groupId>commons-logging</groupId>
+                </exclusion>
+            </exclusions>
+        </dependency>
+        <dependency>
+            <groupId>org.springframework</groupId>
+            <artifactId>spring-context</artifactId>
+            <version>${org.springframework.version}</version>
+        </dependency>
+        <dependency>
+            <groupId>org.springframework</groupId>
+            <artifactId>spring-webmvc</artifactId>
+            <version>${org.springframework.version}</version>
+        </dependency>
+
+        <!-- persistence -->
+
+        <dependency>
+            <groupId>org.hibernate</groupId>
+            <artifactId>hibernate-entitymanager</artifactId>
+            <version>${hibernate.version}</version>
+        </dependency>
+        <dependency>
+            <groupId>xml-apis</groupId>
+            <artifactId>xml-apis</artifactId>
+            <version>${xml-apis.version}</version>
+        </dependency>
+        <dependency>
+            <groupId>org.javassist</groupId>
+            <artifactId>javassist</artifactId>
+            <version>${javassist.version}</version>
+        </dependency>
+        <dependency>
+            <groupId>mysql</groupId>
+            <artifactId>mysql-connector-java</artifactId>
+            <version>${mysql-connector-java.version}</version>
+            <scope>runtime</scope>
+        </dependency>
+        <dependency>
+            <groupId>org.springframework.data</groupId>
+            <artifactId>spring-data-jpa</artifactId>
+            <version>${spring-data-jpa.version}</version>
+        </dependency>
+        <dependency>
+            <groupId>com.h2database</groupId>
+            <artifactId>h2</artifactId>
+            <version>${h2.version}</version>
+        </dependency>
+
+        <!-- validation -->
+
+        <dependency>
+            <groupId>org.hibernate</groupId>
+            <artifactId>hibernate-validator</artifactId>
+            <version>${hibernate-validator.version}</version>
+        </dependency>
+        <dependency>
+            <groupId>javax.el</groupId>
+            <artifactId>javax.el-api</artifactId>
+            <version>${javax.el-api.version}</version>
+        </dependency>
+
+        <!-- web -->
+        <dependency>
+            <groupId>javax.servlet</groupId>
+            <artifactId>jstl</artifactId>
+            <version>${jstl.version}</version>
+        </dependency>
+        <dependency>
+            <groupId>javax.servlet</groupId>
+            <artifactId>servlet-api</artifactId>
+            <scope>provided</scope>
+            <version>${javax.servlet.servlet-api.version}</version>
+        </dependency>
+
+        <!-- utils -->
+
+        <dependency>
+            <groupId>com.google.guava</groupId>
+            <artifactId>guava</artifactId>
+            <version>${guava.version}</version>
+        </dependency>
+        <dependency>
+            <groupId>org.assertj</groupId>
+            <artifactId>assertj-core</artifactId>
+            <version>${assertj.version}</version>
+        </dependency>
+
+        <!-- test scoped -->
+
+        <dependency>
+            <groupId>org.apache.commons</groupId>
+            <artifactId>commons-lang3</artifactId>
+            <version>${commons-lang3.version}</version>
+            <scope>test</scope>
+        </dependency>
+
+        <dependency>
+            <groupId>org.springframework</groupId>
+            <artifactId>spring-test</artifactId>
+            <version>${org.springframework.version}</version>
+            <scope>test</scope>
+        </dependency>
+
+    </dependencies>
+
+    <properties>
+        <!-- Spring -->
+        <org.springframework.version>5.1.5.RELEASE</org.springframework.version>
+        <javassist.version>3.21.0-GA</javassist.version>
+
+        <mysql-connector-java.version>6.0.6</mysql-connector-java.version>
+        <spring-data-jpa.version>2.1.5.RELEASE</spring-data-jpa.version>
+
+        <!-- web -->
+        <javax.servlet.servlet-api.version>2.5</javax.servlet.servlet-api.version>
+
+        <!-- various -->
+        <hibernate-validator.version>6.0.15.Final</hibernate-validator.version>
+        <xml-apis.version>1.4.01</xml-apis.version>
+        <javax.el-api.version>2.2.5</javax.el-api.version>
+
+        <!-- util -->
+        <guava.version>21.0</guava.version>
+        <assertj.version>3.8.0</assertj.version>
+    </properties>
+
+</project>
\ No newline at end of file
diff --git a/persistence-modules/spring-jpa-2/src/main/java/com/baeldung/config/PersistenceJPAConfig.java b/persistence-modules/spring-jpa-2/src/main/java/com/baeldung/config/PersistenceJPAConfig.java
new file mode 100644
index 0000000000..c489321122
--- /dev/null
+++ b/persistence-modules/spring-jpa-2/src/main/java/com/baeldung/config/PersistenceJPAConfig.java
@@ -0,0 +1,85 @@
+package com.baeldung.config;
+
+import com.google.common.base.Preconditions;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.context.annotation.Bean;
+import org.springframework.context.annotation.ComponentScan;
+import org.springframework.context.annotation.Configuration;
+import org.springframework.context.annotation.PropertySource;
+import org.springframework.core.env.Environment;
+import org.springframework.dao.annotation.PersistenceExceptionTranslationPostProcessor;
+import org.springframework.data.jpa.repository.config.EnableJpaRepositories;
+import org.springframework.jdbc.datasource.DriverManagerDataSource;
+import org.springframework.orm.jpa.JpaTransactionManager;
+import org.springframework.orm.jpa.LocalContainerEntityManagerFactoryBean;
+import org.springframework.orm.jpa.vendor.HibernateJpaVendorAdapter;
+import org.springframework.transaction.PlatformTransactionManager;
+import org.springframework.transaction.annotation.EnableTransactionManagement;
+
+import javax.persistence.EntityManagerFactory;
+import javax.sql.DataSource;
+import java.util.Properties;
+
+@Configuration
+@EnableTransactionManagement
+@PropertySource({ "classpath:persistence-h2.properties" })
+@ComponentScan({ "com.baeldung.persistence" })
+@EnableJpaRepositories(basePackages = "com.baeldung.persistence.dao")
+public class PersistenceJPAConfig {
+
+    @Autowired
+    private Environment env;
+
+    public PersistenceJPAConfig() {
+        super();
+    }
+
+    // beans
+
+    @Bean
+    public LocalContainerEntityManagerFactoryBean entityManagerFactory() {
+        final LocalContainerEntityManagerFactoryBean em = new LocalContainerEntityManagerFactoryBean();
+        em.setDataSource(dataSource());
+        em.setPackagesToScan(new String[] { "com.baeldung.persistence.model" });
+
+        final HibernateJpaVendorAdapter vendorAdapter = new HibernateJpaVendorAdapter();
+        em.setJpaVendorAdapter(vendorAdapter);
+        em.setJpaProperties(additionalProperties());
+
+        return em;
+    }
+
+    @Bean
+    public DataSource dataSource() {
+        final DriverManagerDataSource dataSource = new DriverManagerDataSource();
+        dataSource.setDriverClassName(Preconditions.checkNotNull(env.getProperty("jdbc.driverClassName")));
+        dataSource.setUrl(Preconditions.checkNotNull(env.getProperty("jdbc.url")));
+        dataSource.setUsername(Preconditions.checkNotNull(env.getProperty("jdbc.user")));
+        dataSource.setPassword(Preconditions.checkNotNull(env.getProperty("jdbc.pass")));
+
+        return dataSource;
+    }
+
+    @Bean
+    public PlatformTransactionManager transactionManager(final EntityManagerFactory emf) {
+        final JpaTransactionManager transactionManager = new JpaTransactionManager();
+        transactionManager.setEntityManagerFactory(emf);
+        return transactionManager;
+    }
+
+    @Bean
+    public PersistenceExceptionTranslationPostProcessor exceptionTranslation() {
+        return new PersistenceExceptionTranslationPostProcessor();
+    }
+
+    final Properties additionalProperties() {
+        final Properties hibernateProperties = new Properties();
+        hibernateProperties.setProperty("hibernate.hbm2ddl.auto", env.getProperty("hibernate.hbm2ddl.auto"));
+        hibernateProperties.setProperty("hibernate.dialect", env.getProperty("hibernate.dialect"));
+        hibernateProperties.setProperty("hibernate.cache.use_second_level_cache", "false");
+        
+    
+        return hibernateProperties;
+    }
+
+}
\ No newline at end of file
diff --git a/persistence-modules/spring-jpa-2/src/main/java/com/baeldung/config/PersistenceJPAConfigXml.java b/persistence-modules/spring-jpa-2/src/main/java/com/baeldung/config/PersistenceJPAConfigXml.java
new file mode 100644
index 0000000000..95224a4662
--- /dev/null
+++ b/persistence-modules/spring-jpa-2/src/main/java/com/baeldung/config/PersistenceJPAConfigXml.java
@@ -0,0 +1,17 @@
+package com.baeldung.config;
+
+import org.springframework.context.annotation.ComponentScan;
+import org.springframework.context.annotation.ImportResource;
+import org.springframework.transaction.annotation.EnableTransactionManagement;
+
+// @Configuration
+@EnableTransactionManagement
+@ComponentScan({ "com.baeldung.persistence" })
+@ImportResource({ "classpath:jpaConfig.xml" })
+public class PersistenceJPAConfigXml {
+
+    public PersistenceJPAConfigXml() {
+        super();
+    }
+
+}
\ No newline at end of file
diff --git a/persistence-modules/spring-jpa-2/src/main/java/com/baeldung/config/SpringWebConfig.java b/persistence-modules/spring-jpa-2/src/main/java/com/baeldung/config/SpringWebConfig.java
new file mode 100644
index 0000000000..475970d1f0
--- /dev/null
+++ b/persistence-modules/spring-jpa-2/src/main/java/com/baeldung/config/SpringWebConfig.java
@@ -0,0 +1,24 @@
+package com.baeldung.config;
+
+import org.springframework.context.annotation.Bean;
+import org.springframework.context.annotation.ComponentScan;
+import org.springframework.context.annotation.Configuration;
+import org.springframework.web.servlet.config.annotation.EnableWebMvc;
+import org.springframework.web.servlet.config.annotation.WebMvcConfigurerAdapter;
+import org.springframework.web.servlet.view.InternalResourceViewResolver;
+import org.springframework.web.servlet.view.JstlView;
+
+@EnableWebMvc
+@Configuration
+@ComponentScan({ "com.baeldung.web" })
+public class SpringWebConfig extends WebMvcConfigurerAdapter {
+
+    @Bean
+    public InternalResourceViewResolver viewResolver() {
+        InternalResourceViewResolver viewResolver = new InternalResourceViewResolver();
+        viewResolver.setViewClass(JstlView.class);
+        viewResolver.setPrefix("/WEB-INF/views/jsp/");
+        viewResolver.setSuffix(".jsp");
+        return viewResolver;
+    }
+}
diff --git a/persistence-modules/spring-jpa-2/src/main/java/com/baeldung/config/StudentJpaConfig.java b/persistence-modules/spring-jpa-2/src/main/java/com/baeldung/config/StudentJpaConfig.java
new file mode 100644
index 0000000000..54ced72dd1
--- /dev/null
+++ b/persistence-modules/spring-jpa-2/src/main/java/com/baeldung/config/StudentJpaConfig.java
@@ -0,0 +1,67 @@
+package com.baeldung.config;
+
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.context.annotation.Bean;
+import org.springframework.context.annotation.Configuration;
+import org.springframework.context.annotation.PropertySource;
+import org.springframework.core.env.Environment;
+import org.springframework.data.jpa.repository.config.EnableJpaRepositories;
+import org.springframework.jdbc.datasource.DriverManagerDataSource;
+import org.springframework.orm.jpa.JpaTransactionManager;
+import org.springframework.orm.jpa.LocalContainerEntityManagerFactoryBean;
+import org.springframework.orm.jpa.vendor.HibernateJpaVendorAdapter;
+import org.springframework.transaction.annotation.EnableTransactionManagement;
+
+import javax.persistence.EntityManagerFactory;
+import javax.sql.DataSource;
+import java.util.Properties;
+
+@Configuration
+@EnableJpaRepositories(basePackages = "com.baeldung.inmemory.persistence.dao")
+@PropertySource("persistence-student.properties")
+@EnableTransactionManagement
+public class StudentJpaConfig {
+
+    @Autowired
+    private Environment env;
+
+    @Bean
+    public DataSource dataSource() {
+        final DriverManagerDataSource dataSource = new DriverManagerDataSource();
+        dataSource.setDriverClassName(env.getProperty("jdbc.driverClassName"));
+        dataSource.setUrl(env.getProperty("jdbc.url"));
+        dataSource.setUsername(env.getProperty("jdbc.user"));
+        dataSource.setPassword(env.getProperty("jdbc.pass"));
+
+        return dataSource;
+    }
+
+    @Bean
+    public LocalContainerEntityManagerFactoryBean entityManagerFactory() {
+        final LocalContainerEntityManagerFactoryBean em = new LocalContainerEntityManagerFactoryBean();
+        em.setDataSource(dataSource());
+        em.setPackagesToScan(new String[] { "com.baeldung.inmemory.persistence.model" });
+        em.setJpaVendorAdapter(new HibernateJpaVendorAdapter());
+        em.setJpaProperties(additionalProperties());
+        return em;
+    }
+
+    @Bean
+    JpaTransactionManager transactionManager(EntityManagerFactory entityManagerFactory) {
+        JpaTransactionManager transactionManager = new JpaTransactionManager();
+        transactionManager.setEntityManagerFactory(entityManagerFactory);
+        return transactionManager;
+    }
+
+    final Properties additionalProperties() {
+        final Properties hibernateProperties = new Properties();
+
+        hibernateProperties.setProperty("hibernate.hbm2ddl.auto", env.getProperty("hibernate.hbm2ddl.auto"));
+        hibernateProperties.setProperty("hibernate.dialect", env.getProperty("hibernate.dialect"));
+        hibernateProperties.setProperty("hibernate.show_sql", env.getProperty("hibernate.show_sql"));
+        hibernateProperties.setProperty("hibernate.cache.use_second_level_cache", env.getProperty("hibernate.cache.use_second_level_cache"));
+        hibernateProperties.setProperty("hibernate.cache.use_query_cache", env.getProperty("hibernate.cache.use_query_cache"));
+
+        return hibernateProperties;
+    }
+}
diff --git a/persistence-modules/spring-jpa-2/src/main/java/com/baeldung/config/WebInitializer.java b/persistence-modules/spring-jpa-2/src/main/java/com/baeldung/config/WebInitializer.java
new file mode 100644
index 0000000000..be81cca76b
--- /dev/null
+++ b/persistence-modules/spring-jpa-2/src/main/java/com/baeldung/config/WebInitializer.java
@@ -0,0 +1,20 @@
+package com.baeldung.config;
+
+import org.springframework.web.servlet.support.AbstractAnnotationConfigDispatcherServletInitializer;
+
+public class WebInitializer extends AbstractAnnotationConfigDispatcherServletInitializer {
+    @Override
+    protected Class<?>[] getRootConfigClasses() {
+        return new Class[] { PersistenceJPAConfig.class };
+    }
+
+    @Override
+    protected Class<?>[] getServletConfigClasses() {
+        return new Class[] { SpringWebConfig.class };
+    }
+
+    @Override
+    protected String[] getServletMappings() {
+        return new String[] { "/" };
+    }
+}
diff --git a/persistence-modules/spring-jpa/src/main/java/com/baeldung/manytomany/model/Course.java b/persistence-modules/spring-jpa-2/src/main/java/com/baeldung/manytomany/model/Course.java
similarity index 100%
rename from persistence-modules/spring-jpa/src/main/java/com/baeldung/manytomany/model/Course.java
rename to persistence-modules/spring-jpa-2/src/main/java/com/baeldung/manytomany/model/Course.java
diff --git a/persistence-modules/spring-jpa/src/main/java/com/baeldung/manytomany/model/CourseRating.java b/persistence-modules/spring-jpa-2/src/main/java/com/baeldung/manytomany/model/CourseRating.java
similarity index 100%
rename from persistence-modules/spring-jpa/src/main/java/com/baeldung/manytomany/model/CourseRating.java
rename to persistence-modules/spring-jpa-2/src/main/java/com/baeldung/manytomany/model/CourseRating.java
diff --git a/persistence-modules/spring-jpa/src/main/java/com/baeldung/manytomany/model/CourseRatingKey.java b/persistence-modules/spring-jpa-2/src/main/java/com/baeldung/manytomany/model/CourseRatingKey.java
similarity index 100%
rename from persistence-modules/spring-jpa/src/main/java/com/baeldung/manytomany/model/CourseRatingKey.java
rename to persistence-modules/spring-jpa-2/src/main/java/com/baeldung/manytomany/model/CourseRatingKey.java
diff --git a/persistence-modules/spring-jpa/src/main/java/com/baeldung/manytomany/model/CourseRegistration.java b/persistence-modules/spring-jpa-2/src/main/java/com/baeldung/manytomany/model/CourseRegistration.java
similarity index 100%
rename from persistence-modules/spring-jpa/src/main/java/com/baeldung/manytomany/model/CourseRegistration.java
rename to persistence-modules/spring-jpa-2/src/main/java/com/baeldung/manytomany/model/CourseRegistration.java
diff --git a/persistence-modules/spring-jpa/src/main/java/com/baeldung/manytomany/model/Student.java b/persistence-modules/spring-jpa-2/src/main/java/com/baeldung/manytomany/model/Student.java
similarity index 100%
rename from persistence-modules/spring-jpa/src/main/java/com/baeldung/manytomany/model/Student.java
rename to persistence-modules/spring-jpa-2/src/main/java/com/baeldung/manytomany/model/Student.java
diff --git a/persistence-modules/spring-jpa-2/src/main/resources/context.xml b/persistence-modules/spring-jpa-2/src/main/resources/context.xml
new file mode 100644
index 0000000000..a64dfe9a61
--- /dev/null
+++ b/persistence-modules/spring-jpa-2/src/main/resources/context.xml
@@ -0,0 +1 @@
+ <ResourceLink name="jdbc/BaeldungDatabase" global="jdbc/BaeldungDatabase" type="javax.sql.DataSource"/>
\ No newline at end of file
diff --git a/persistence-modules/spring-jpa-2/src/main/resources/logback.xml b/persistence-modules/spring-jpa-2/src/main/resources/logback.xml
new file mode 100644
index 0000000000..ec0dc2469a
--- /dev/null
+++ b/persistence-modules/spring-jpa-2/src/main/resources/logback.xml
@@ -0,0 +1,19 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<configuration>
+    <appender name="STDOUT" class="ch.qos.logback.core.ConsoleAppender">
+        <encoder>
+            <pattern>web - %date [%thread] %-5level %logger{36} - %message%n
+            </pattern>
+        </encoder>
+    </appender>
+
+    <logger name="org.springframework" level="WARN" />
+    <logger name="org.springframework.transaction" level="WARN" />
+
+    <!-- in order to debug some marshalling issues, this needs to be TRACE -->
+    <logger name="org.springframework.web.servlet.mvc" level="WARN" />
+
+    <root level="INFO">
+        <appender-ref ref="STDOUT" />
+    </root>
+</configuration>
\ No newline at end of file
diff --git a/persistence-modules/spring-jpa-2/src/main/resources/persistence-h2.properties b/persistence-modules/spring-jpa-2/src/main/resources/persistence-h2.properties
new file mode 100644
index 0000000000..a3060cc796
--- /dev/null
+++ b/persistence-modules/spring-jpa-2/src/main/resources/persistence-h2.properties
@@ -0,0 +1,10 @@
+# jdbc.X
+jdbc.driverClassName=org.h2.Driver
+jdbc.url=jdbc:h2:mem:db;DB_CLOSE_DELAY=-1
+jdbc.user=sa
+jdbc.pass=
+
+# hibernate.X
+hibernate.dialect=org.hibernate.dialect.H2Dialect
+hibernate.show_sql=true
+hibernate.hbm2ddl.auto=create-drop
\ No newline at end of file
diff --git a/persistence-modules/spring-jpa-2/src/main/resources/persistence-student.properties b/persistence-modules/spring-jpa-2/src/main/resources/persistence-student.properties
new file mode 100644
index 0000000000..d4c82420de
--- /dev/null
+++ b/persistence-modules/spring-jpa-2/src/main/resources/persistence-student.properties
@@ -0,0 +1,11 @@
+jdbc.driverClassName=com.mysql.cj.jdbc.Driver
+jdbc.url=jdbc:mysql://localhost:3306/myDb
+jdbc.user=tutorialuser
+jdbc.pass=tutorialpass
+
+hibernate.dialect=org.hibernate.dialect.MySQL5Dialect
+hibernate.show_sql=true
+hibernate.hbm2ddl.auto=create-drop
+
+hibernate.cache.use_second_level_cache=false
+hibernate.cache.use_query_cache=false
\ No newline at end of file
diff --git a/persistence-modules/spring-jpa-2/src/main/resources/persistence.xml b/persistence-modules/spring-jpa-2/src/main/resources/persistence.xml
new file mode 100644
index 0000000000..57687c306d
--- /dev/null
+++ b/persistence-modules/spring-jpa-2/src/main/resources/persistence.xml
@@ -0,0 +1,42 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<beans xmlns="http://www.springframework.org/schema/beans" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:context="http://www.springframework.org/schema/context"
+    xmlns:tx="http://www.springframework.org/schema/tx"
+    xsi:schemaLocation="
+      http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-4.2.xsd
+      http://www.springframework.org/schema/tx http://www.springframework.org/schema/tx/spring-tx-4.2.xsd
+      http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context-4.2.xsd"
+>
+
+    <context:property-placeholder location="classpath:persistence-h2.properties"/>
+
+    <bean id="myEmf" class="org.springframework.orm.jpa.LocalContainerEntityManagerFactoryBean">
+        <property name="dataSource" ref="dataSource"/>
+        <property name="packagesToScan" value="com.baeldung.persistence.model"/>
+        <property name="jpaVendorAdapter">
+            <bean class="org.springframework.orm.jpa.vendor.HibernateJpaVendorAdapter"/>
+            <!-- <bean class="org.springframework.orm.jpa.vendor.HibernateJpaVendorAdapter" /> <property name="generateDdl" value="${jpa.generateDdl}" /> <property name="databasePlatform" 
+                value="${persistence.dialect}" /> </bean> -->
+        </property>
+        <property name="jpaProperties">
+            <props>
+                <prop key="hibernate.hbm2ddl.auto">${hibernate.hbm2ddl.auto}</prop>
+                <prop key="hibernate.dialect">${hibernate.dialect}</prop>
+            </props>
+        </property>
+    </bean>
+
+    <bean id="dataSource" class="org.springframework.jdbc.datasource.DriverManagerDataSource">
+        <property name="driverClassName" value="${jdbc.driverClassName}"/>
+        <property name="url" value="${jdbc.url}"/>
+        <property name="username" value="${jdbc.user}"/>
+        <property name="password" value="${jdbc.pass}"/>
+    </bean>
+
+    <bean id="transactionManager" class="org.springframework.orm.jpa.JpaTransactionManager">
+        <property name="entityManagerFactory" ref="myEmf"/>
+    </bean>
+    <tx:annotation-driven/>
+
+    <bean id="persistenceExceptionTranslationPostProcessor" class="org.springframework.dao.annotation.PersistenceExceptionTranslationPostProcessor"/>
+
+</beans>
\ No newline at end of file
diff --git a/persistence-modules/spring-jpa-2/src/main/resources/server.xml b/persistence-modules/spring-jpa-2/src/main/resources/server.xml
new file mode 100644
index 0000000000..5c61659018
--- /dev/null
+++ b/persistence-modules/spring-jpa-2/src/main/resources/server.xml
@@ -0,0 +1,6 @@
+
+
+    <Resource name="jdbc/BaeldungDatabase" auth="Container"
+              type="javax.sql.DataSource" driverClassName="org.postgresql.Driver"
+              url="jdbc:postgresql://localhost:5432/postgres"
+              username="baeldung" password="pass1234" maxActive="20" maxIdle="10" maxWait="-1"/>
\ No newline at end of file
diff --git a/persistence-modules/spring-jpa-2/src/main/resources/sqlfiles.properties b/persistence-modules/spring-jpa-2/src/main/resources/sqlfiles.properties
new file mode 100644
index 0000000000..0bea6adad1
--- /dev/null
+++ b/persistence-modules/spring-jpa-2/src/main/resources/sqlfiles.properties
@@ -0,0 +1 @@
+spring.jpa.hibernate.ddl-auto=none
\ No newline at end of file
diff --git a/persistence-modules/spring-jpa-2/src/test/java/META-INF/persistence.xml b/persistence-modules/spring-jpa-2/src/test/java/META-INF/persistence.xml
new file mode 100644
index 0000000000..495f076fef
--- /dev/null
+++ b/persistence-modules/spring-jpa-2/src/test/java/META-INF/persistence.xml
@@ -0,0 +1,20 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<persistence version="2.1" xmlns="http://xmlns.jcp.org/xml/ns/persistence"
+             xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+             xsi:schemaLocation="http://xmlns.jcp.org/xml/ns/persistence http://xmlns.jcp.org/xml/ns/persistence/persistence_2_1.xsd">
+    <persistence-unit name="punit">
+        <class>com.baeldung.persistence.model.Foo</class>
+        <class>com.baeldung.persistence.model.Bar</class>
+        <properties>
+            <property name="javax.persistence.jdbc.user" value="root"/>
+            <property name="javax.persistence.jdbc.driver" value="com.mysql.jdbc.Driver"/>
+            <property name="javax.persistence.jdbc.url" value="jdbc:mysql://localhost:3306/HIBERTEST"/>
+            <property name="javax.persistence.ddl-generation" value="drop-and-create-tables"/>
+            <property name="javax.persistence.logging.level" value="INFO"/>
+            <property name="hibernate.show_sql" value="true"/>
+            <property name="hibernate.cache.use_second_level_cache" value="false"/>
+            <property name="hibernate.cache.use_query_cache" value="false"/>
+        </properties>
+
+    </persistence-unit>
+</persistence>
diff --git a/persistence-modules/spring-jpa-2/src/test/java/com/baeldung/SpringContextTest.java b/persistence-modules/spring-jpa-2/src/test/java/com/baeldung/SpringContextTest.java
new file mode 100644
index 0000000000..abc73e250d
--- /dev/null
+++ b/persistence-modules/spring-jpa-2/src/test/java/com/baeldung/SpringContextTest.java
@@ -0,0 +1,21 @@
+package com.baeldung;
+
+import com.baeldung.config.PersistenceJPAConfig;
+import org.junit.Test;
+import org.junit.runner.RunWith;
+import org.springframework.test.annotation.DirtiesContext;
+import org.springframework.test.context.ContextConfiguration;
+import org.springframework.test.context.junit4.SpringJUnit4ClassRunner;
+import org.springframework.test.context.support.AnnotationConfigContextLoader;
+import org.springframework.test.context.web.WebAppConfiguration;
+
+@RunWith(SpringJUnit4ClassRunner.class)
+@ContextConfiguration(classes = { PersistenceJPAConfig.class }, loader = AnnotationConfigContextLoader.class)
+@WebAppConfiguration
+@DirtiesContext
+public class SpringContextTest {
+
+    @Test
+    public void whenSpringContextIsBootstrapped_thenNoExceptions() {
+    }
+}
diff --git a/persistence-modules/spring-jpa/src/test/java/com/baeldung/manytomany/ManyToManyIntegrationTest.java b/persistence-modules/spring-jpa-2/src/test/java/com/baeldung/manytomany/ManyToManyIntegrationTest.java
similarity index 100%
rename from persistence-modules/spring-jpa/src/test/java/com/baeldung/manytomany/ManyToManyIntegrationTest.java
rename to persistence-modules/spring-jpa-2/src/test/java/com/baeldung/manytomany/ManyToManyIntegrationTest.java
diff --git a/persistence-modules/spring-jpa/src/test/java/com/baeldung/manytomany/ManyToManyTestConfiguration.java b/persistence-modules/spring-jpa-2/src/test/java/com/baeldung/manytomany/ManyToManyTestConfiguration.java
similarity index 97%
rename from persistence-modules/spring-jpa/src/test/java/com/baeldung/manytomany/ManyToManyTestConfiguration.java
rename to persistence-modules/spring-jpa-2/src/test/java/com/baeldung/manytomany/ManyToManyTestConfiguration.java
index f4635b563a..1cc3621f0d 100644
--- a/persistence-modules/spring-jpa/src/test/java/com/baeldung/manytomany/ManyToManyTestConfiguration.java
+++ b/persistence-modules/spring-jpa-2/src/test/java/com/baeldung/manytomany/ManyToManyTestConfiguration.java
@@ -16,7 +16,7 @@ import org.springframework.orm.jpa.LocalContainerEntityManagerFactoryBean;
 import org.springframework.orm.jpa.vendor.HibernateJpaVendorAdapter;
 
 @Configuration
-@PropertySource("classpath:/manytomany/test.properties")
+@PropertySource("manytomany/test.properties")
 public class ManyToManyTestConfiguration {
 
     @Bean
diff --git a/persistence-modules/spring-jpa-2/src/test/resources/.gitignore b/persistence-modules/spring-jpa-2/src/test/resources/.gitignore
new file mode 100644
index 0000000000..83c05e60c8
--- /dev/null
+++ b/persistence-modules/spring-jpa-2/src/test/resources/.gitignore
@@ -0,0 +1,13 @@
+*.class
+
+#folders#
+/target
+/neoDb*
+/data
+/src/main/webapp/WEB-INF/classes
+*/META-INF/*
+
+# Packaged files #
+*.jar
+*.war
+*.ear
\ No newline at end of file
diff --git a/persistence-modules/spring-jpa/src/test/resources/manytomany/db.sql b/persistence-modules/spring-jpa-2/src/test/resources/manytomany/db.sql
similarity index 100%
rename from persistence-modules/spring-jpa/src/test/resources/manytomany/db.sql
rename to persistence-modules/spring-jpa-2/src/test/resources/manytomany/db.sql
diff --git a/persistence-modules/spring-jpa/src/test/resources/manytomany/test.properties b/persistence-modules/spring-jpa-2/src/test/resources/manytomany/test.properties
similarity index 100%
rename from persistence-modules/spring-jpa/src/test/resources/manytomany/test.properties
rename to persistence-modules/spring-jpa-2/src/test/resources/manytomany/test.properties
diff --git a/persistence-modules/spring-jpa-2/src/test/resources/persistence-student.properties b/persistence-modules/spring-jpa-2/src/test/resources/persistence-student.properties
new file mode 100644
index 0000000000..3b6b580630
--- /dev/null
+++ b/persistence-modules/spring-jpa-2/src/test/resources/persistence-student.properties
@@ -0,0 +1,9 @@
+jdbc.driverClassName=org.h2.Driver
+jdbc.url=jdbc:h2:mem:myDb;DB_CLOSE_DELAY=-1
+
+hibernate.dialect=org.hibernate.dialect.H2Dialect
+hibernate.show_sql=true
+hibernate.hbm2ddl.auto=create
+
+hibernate.cache.use_second_level_cache=false
+hibernate.cache.use_query_cache=false
\ No newline at end of file
diff --git a/persistence-modules/spring-jpa/README.md b/persistence-modules/spring-jpa/README.md
index 94a1e1f575..3eb8ae8d55 100644
--- a/persistence-modules/spring-jpa/README.md
+++ b/persistence-modules/spring-jpa/README.md
@@ -11,9 +11,7 @@
 - [A Guide to Spring AbstractRoutingDatasource](https://www.baeldung.com/spring-abstract-routing-data-source)
 - [Obtaining Auto-generated Keys in Spring JDBC](https://www.baeldung.com/spring-jdbc-autogenerated-keys)
 - [Use Criteria Queries in a Spring Data Application](https://www.baeldung.com/spring-data-criteria-queries)
-- [Many-To-Many Relationship in JPA](https://www.baeldung.com/jpa-many-to-many)
-- [Spring Persistence (Hibernate and JPA) with a JNDI datasource](https://www.baeldung.com/spring-persistence-hibernate-and-jpa-with-a-jndi-datasource-2)
-
+- More articles: [[next -->]](/spring-jpa-2)
 
 ### Eclipse Config 
 After importing the project into Eclipse, you may see the following error:  

From e176cc2d4226943d8c132fe3ca4f462bd5283747 Mon Sep 17 00:00:00 2001
From: Krzysiek <krzysztofwoyke@gmail.com>
Date: Tue, 4 Aug 2020 23:06:05 +0200
Subject: [PATCH 048/156] JAVA-1652: Get rid of the overriden
 spring-boot.version property

---
 spring-cloud/spring-cloud-zuul/pom.xml                        | 3 +--
 .../spring-cloud-zuul/spring-zuul-post-filter/pom.xml         | 4 ----
 .../spring-cloud-zuul/spring-zuul-rate-limiting/pom.xml       | 2 --
 3 files changed, 1 insertion(+), 8 deletions(-)

diff --git a/spring-cloud/spring-cloud-zuul/pom.xml b/spring-cloud/spring-cloud-zuul/pom.xml
index 140a1337b3..b3c66dd1c6 100644
--- a/spring-cloud/spring-cloud-zuul/pom.xml
+++ b/spring-cloud/spring-cloud-zuul/pom.xml
@@ -72,8 +72,7 @@
     </build>
 
     <properties>
-        <spring-cloud.version>Hoxton.RELEASE</spring-cloud.version>
-        <spring-boot.version>2.2.2.RELEASE</spring-boot.version>
+        <spring-cloud.version>Hoxton.SR4</spring-cloud.version>
     </properties>
 
 </project>
diff --git a/spring-cloud/spring-cloud-zuul/spring-zuul-post-filter/pom.xml b/spring-cloud/spring-cloud-zuul/spring-zuul-post-filter/pom.xml
index 8643309645..0ca9f0d050 100644
--- a/spring-cloud/spring-cloud-zuul/spring-zuul-post-filter/pom.xml
+++ b/spring-cloud/spring-cloud-zuul/spring-zuul-post-filter/pom.xml
@@ -18,8 +18,4 @@
         </dependency>
     </dependencies>
 
-    <properties>
-        <spring-cloud.version>Hoxton.SR1</spring-cloud.version>
-    </properties>
-
 </project>
\ No newline at end of file
diff --git a/spring-cloud/spring-cloud-zuul/spring-zuul-rate-limiting/pom.xml b/spring-cloud/spring-cloud-zuul/spring-zuul-rate-limiting/pom.xml
index fd6d18fc09..8873282d1e 100644
--- a/spring-cloud/spring-cloud-zuul/spring-zuul-rate-limiting/pom.xml
+++ b/spring-cloud/spring-cloud-zuul/spring-zuul-rate-limiting/pom.xml
@@ -48,8 +48,6 @@
     </build>
 
     <properties>
-        <spring-cloud.version>Finchley.SR1</spring-cloud.version>
-        <spring-boot.version>2.0.6.RELEASE</spring-boot.version>
         <rate.limit.version>2.2.0.RELEASE</rate.limit.version>
     </properties>
 

From 5db4e332b91e64a967fd7042021a225ce6df3f3a Mon Sep 17 00:00:00 2001
From: Rutuja Joshi <67615932+rutujavjoshi@users.noreply.github.com>
Date: Wed, 5 Aug 2020 15:07:34 +0530
Subject: [PATCH 049/156] Added New Classes

BAEL-4193 NoSuchMethodError
---
 .../nosuchmethoderror/MainMenu.java           | 20 +++++++++++++++++++
 .../nosuchmethoderror/SpecialToday.java       | 14 +++++++++++++
 2 files changed, 34 insertions(+)
 create mode 100644 core-java-modules/core-java-exceptions/src/main/java/com/baeldung/exceptions/nosuchmethoderror/MainMenu.java
 create mode 100644 core-java-modules/core-java-exceptions/src/main/java/com/baeldung/exceptions/nosuchmethoderror/SpecialToday.java

diff --git a/core-java-modules/core-java-exceptions/src/main/java/com/baeldung/exceptions/nosuchmethoderror/MainMenu.java b/core-java-modules/core-java-exceptions/src/main/java/com/baeldung/exceptions/nosuchmethoderror/MainMenu.java
new file mode 100644
index 0000000000..aec70cb843
--- /dev/null
+++ b/core-java-modules/core-java-exceptions/src/main/java/com/baeldung/exceptions/nosuchmethoderror/MainMenu.java
@@ -0,0 +1,20 @@
+package com.baeldung.exceptions.nosuchmethoderror;
+
+import java.util.StringJoiner;
+
+public class MainMenu {
+	public static void main(String[] args) {
+		System.out.println("Today's Specials: " + getSpecials());
+	}
+
+	public static StringJoiner getSpecials() {
+		StringJoiner specials = new StringJoiner(", ");
+		try {
+			specials.add(SpecialToday.getStarter());
+			specials.add(SpecialToday.getDesert());
+		} catch (Exception e) {
+			e.printStackTrace();
+		}
+		return specials;
+	}
+}
diff --git a/core-java-modules/core-java-exceptions/src/main/java/com/baeldung/exceptions/nosuchmethoderror/SpecialToday.java b/core-java-modules/core-java-exceptions/src/main/java/com/baeldung/exceptions/nosuchmethoderror/SpecialToday.java
new file mode 100644
index 0000000000..1f47a8934e
--- /dev/null
+++ b/core-java-modules/core-java-exceptions/src/main/java/com/baeldung/exceptions/nosuchmethoderror/SpecialToday.java
@@ -0,0 +1,14 @@
+package com.baeldung.exceptions.nosuchmethoderror;
+
+public class SpecialToday {
+	private static String desert = "Chocolate Cake";
+	private static String starter = "Caesar Salad";
+
+	public static String getDesert() {
+		return desert;
+	}
+
+	public static String getStarter() {
+		return starter;
+	}
+}

From 4c4cafde1eb732837f86fbb68581795cee758ac2 Mon Sep 17 00:00:00 2001
From: Rutuja Joshi <67615932+rutujavjoshi@users.noreply.github.com>
Date: Wed, 5 Aug 2020 15:16:51 +0530
Subject: [PATCH 050/156] Added New File(s) - BAEL-4193 NoSuchMethodError

---
 .../nosuchmethoderror/MainMenuUnitTest.java        | 14 ++++++++++++++
 1 file changed, 14 insertions(+)
 create mode 100644 core-java-modules/core-java-exceptions/src/test/java/com/baeldung/exceptions/nosuchmethoderror/MainMenuUnitTest.java

diff --git a/core-java-modules/core-java-exceptions/src/test/java/com/baeldung/exceptions/nosuchmethoderror/MainMenuUnitTest.java b/core-java-modules/core-java-exceptions/src/test/java/com/baeldung/exceptions/nosuchmethoderror/MainMenuUnitTest.java
new file mode 100644
index 0000000000..e9aef1b484
--- /dev/null
+++ b/core-java-modules/core-java-exceptions/src/test/java/com/baeldung/exceptions/nosuchmethoderror/MainMenuUnitTest.java
@@ -0,0 +1,14 @@
+package com.baeldung.exceptions.nosuchmethoderror;
+
+import static org.junit.Assert.assertNotNull;
+
+import org.junit.jupiter.api.Test;
+
+class MainMenuUnitTest {
+
+	@Test
+	void testgetSpecials() {
+		assertNotNull(MainMenu.getSpecials());
+	} 
+ 
+}

From d50a83197279a0fda143ac3f1bc66025c5873b42 Mon Sep 17 00:00:00 2001
From: andrebrowne <42154231+andrebrowne@users.noreply.github.com>
Date: Sat, 8 Aug 2020 21:05:32 -0400
Subject: [PATCH 051/156] BAEL-4077 Fixup styling

---
 .../baeldung/jpa/equality/EqualByBusinessKey.java  | 14 ++++++++------
 .../java/com/baeldung/jpa/equality/EqualById.java  | 13 +++++++------
 .../baeldung/jpa/equality/EqualByJavaDefault.java  |  4 +---
 .../baeldung/jpa/equality/EqualityUnitTest.java    |  2 +-
 4 files changed, 17 insertions(+), 16 deletions(-)

diff --git a/persistence-modules/java-jpa-3/src/main/java/com/baeldung/jpa/equality/EqualByBusinessKey.java b/persistence-modules/java-jpa-3/src/main/java/com/baeldung/jpa/equality/EqualByBusinessKey.java
index 3e34f97d77..655db4e575 100644
--- a/persistence-modules/java-jpa-3/src/main/java/com/baeldung/jpa/equality/EqualByBusinessKey.java
+++ b/persistence-modules/java-jpa-3/src/main/java/com/baeldung/jpa/equality/EqualByBusinessKey.java
@@ -40,15 +40,17 @@ public class EqualByBusinessKey {
 
     @Override
     public boolean equals(Object obj) {
-        if (this == obj)
+        if (this == obj) {
             return true;
-        if (obj == null)
+        }
+        if (obj == null) {
             return false;
-        if (obj instanceof EqualByBusinessKey)
-            if (((EqualByBusinessKey) obj).getEmail() == getEmail())
+        }
+        if (obj instanceof EqualByBusinessKey) {
+            if (((EqualByBusinessKey) obj).getEmail() == getEmail()) {
                 return true;
-
+            }
+        }
         return false;
     }
-
 }
diff --git a/persistence-modules/java-jpa-3/src/main/java/com/baeldung/jpa/equality/EqualById.java b/persistence-modules/java-jpa-3/src/main/java/com/baeldung/jpa/equality/EqualById.java
index f29a152f3e..cebfb5fcec 100644
--- a/persistence-modules/java-jpa-3/src/main/java/com/baeldung/jpa/equality/EqualById.java
+++ b/persistence-modules/java-jpa-3/src/main/java/com/baeldung/jpa/equality/EqualById.java
@@ -41,14 +41,15 @@ public class EqualById {
 
     @Override
     public boolean equals(Object obj) {
-        if (this == obj)
+        if (this == obj) {
             return true;
-        if (obj == null)
+        }
+        if (obj == null) {
             return false;
-        if (obj instanceof EqualById)
-            return ((EqualById) obj).getId() == getId();
-
+        }
+        if (obj instanceof EqualById) {
+            return ((EqualById) obj).getId().equals(getId());
+        }
         return false;
     }
-
 }
diff --git a/persistence-modules/java-jpa-3/src/main/java/com/baeldung/jpa/equality/EqualByJavaDefault.java b/persistence-modules/java-jpa-3/src/main/java/com/baeldung/jpa/equality/EqualByJavaDefault.java
index 04a81865c6..b312845b61 100644
--- a/persistence-modules/java-jpa-3/src/main/java/com/baeldung/jpa/equality/EqualByJavaDefault.java
+++ b/persistence-modules/java-jpa-3/src/main/java/com/baeldung/jpa/equality/EqualByJavaDefault.java
@@ -30,9 +30,7 @@ public class EqualByJavaDefault implements Cloneable{
         this.email = email;
     }
 
-    public Object clone() throws
-            CloneNotSupportedException
-    {
+    public Object clone() throws CloneNotSupportedException {
         return super.clone();
     }
 }
diff --git a/persistence-modules/java-jpa-3/src/test/java/com/baeldung/jpa/equality/EqualityUnitTest.java b/persistence-modules/java-jpa-3/src/test/java/com/baeldung/jpa/equality/EqualityUnitTest.java
index c672c9e460..03ac11b6fd 100644
--- a/persistence-modules/java-jpa-3/src/test/java/com/baeldung/jpa/equality/EqualityUnitTest.java
+++ b/persistence-modules/java-jpa-3/src/test/java/com/baeldung/jpa/equality/EqualityUnitTest.java
@@ -71,4 +71,4 @@ public class EqualityUnitTest {
         Assert.assertEquals(object1, object2);
         Assert.assertNotEquals(object1.getId(), object2.getId());
     }
-}
\ No newline at end of file
+}

From 18d7fc0bdc5b9b6b7f3de538a0a91485008df700 Mon Sep 17 00:00:00 2001
From: andrebrowne <42154231+andrebrowne@users.noreply.github.com>
Date: Sat, 8 Aug 2020 21:05:32 -0400
Subject: [PATCH 052/156] BAEL-4077 Fixup styling

---
 persistence-modules/java-jpa-3/pom.xml        | 56 -------------------
 .../jpa/equality/EqualByBusinessKey.java      | 14 +++--
 .../com/baeldung/jpa/equality/EqualById.java  | 13 +++--
 .../jpa/equality/EqualByJavaDefault.java      |  4 +-
 .../jpa/equality/EqualityUnitTest.java        |  2 +-
 5 files changed, 17 insertions(+), 72 deletions(-)

diff --git a/persistence-modules/java-jpa-3/pom.xml b/persistence-modules/java-jpa-3/pom.xml
index 562f337215..da18ae3046 100644
--- a/persistence-modules/java-jpa-3/pom.xml
+++ b/persistence-modules/java-jpa-3/pom.xml
@@ -66,62 +66,6 @@
                     <compilerArgument>-proc:none</compilerArgument>
                 </configuration>
             </plugin>
-            <plugin>
-                <groupId>org.bsc.maven</groupId>
-                <artifactId>maven-processor-plugin</artifactId>
-                <version>${maven-processor-plugin.version}</version>
-                <executions>
-                    <execution>
-                        <id>process</id>
-                        <goals>
-                            <goal>process</goal>
-                        </goals>
-                        <phase>generate-sources</phase>
-                        <configuration>
-                            <outputDirectory>target/metamodel</outputDirectory>
-                            <processors>
-                                <processor>org.hibernate.jpamodelgen.JPAMetaModelEntityProcessor</processor>
-                            </processors>
-                        </configuration>
-                    </execution>
-                </executions>
-            </plugin>
-            <plugin>
-                <groupId>org.codehaus.mojo</groupId>
-                <artifactId>build-helper-maven-plugin</artifactId>
-                <version>${build-helper-maven-plugin.version}</version>
-                <executions>
-                    <execution>
-                        <id>add-source</id>
-                        <phase>generate-sources</phase>
-                        <goals>
-                            <goal>add-source</goal>
-                        </goals>
-                        <configuration>
-                            <sources>
-                                <source>target/metamodel</source>
-                                <source>${project.build.directory}/generated-sources/java/</source>
-                            </sources>
-                        </configuration>
-                    </execution>
-                </executions>
-            </plugin>
-            <plugin>
-                <groupId>com.mysema.maven</groupId>
-                <artifactId>apt-maven-plugin</artifactId>
-                <version>1.1.3</version>
-                <executions>
-                    <execution>
-                        <goals>
-                            <goal>process</goal>
-                        </goals>
-                        <configuration>
-                            <outputDirectory>target/generated-sources/java</outputDirectory>
-                            <processor>com.querydsl.apt.jpa.JPAAnnotationProcessor</processor>
-                        </configuration>
-                    </execution>
-                </executions>
-            </plugin>
         </plugins>
     </build>
 
diff --git a/persistence-modules/java-jpa-3/src/main/java/com/baeldung/jpa/equality/EqualByBusinessKey.java b/persistence-modules/java-jpa-3/src/main/java/com/baeldung/jpa/equality/EqualByBusinessKey.java
index 3e34f97d77..655db4e575 100644
--- a/persistence-modules/java-jpa-3/src/main/java/com/baeldung/jpa/equality/EqualByBusinessKey.java
+++ b/persistence-modules/java-jpa-3/src/main/java/com/baeldung/jpa/equality/EqualByBusinessKey.java
@@ -40,15 +40,17 @@ public class EqualByBusinessKey {
 
     @Override
     public boolean equals(Object obj) {
-        if (this == obj)
+        if (this == obj) {
             return true;
-        if (obj == null)
+        }
+        if (obj == null) {
             return false;
-        if (obj instanceof EqualByBusinessKey)
-            if (((EqualByBusinessKey) obj).getEmail() == getEmail())
+        }
+        if (obj instanceof EqualByBusinessKey) {
+            if (((EqualByBusinessKey) obj).getEmail() == getEmail()) {
                 return true;
-
+            }
+        }
         return false;
     }
-
 }
diff --git a/persistence-modules/java-jpa-3/src/main/java/com/baeldung/jpa/equality/EqualById.java b/persistence-modules/java-jpa-3/src/main/java/com/baeldung/jpa/equality/EqualById.java
index f29a152f3e..cebfb5fcec 100644
--- a/persistence-modules/java-jpa-3/src/main/java/com/baeldung/jpa/equality/EqualById.java
+++ b/persistence-modules/java-jpa-3/src/main/java/com/baeldung/jpa/equality/EqualById.java
@@ -41,14 +41,15 @@ public class EqualById {
 
     @Override
     public boolean equals(Object obj) {
-        if (this == obj)
+        if (this == obj) {
             return true;
-        if (obj == null)
+        }
+        if (obj == null) {
             return false;
-        if (obj instanceof EqualById)
-            return ((EqualById) obj).getId() == getId();
-
+        }
+        if (obj instanceof EqualById) {
+            return ((EqualById) obj).getId().equals(getId());
+        }
         return false;
     }
-
 }
diff --git a/persistence-modules/java-jpa-3/src/main/java/com/baeldung/jpa/equality/EqualByJavaDefault.java b/persistence-modules/java-jpa-3/src/main/java/com/baeldung/jpa/equality/EqualByJavaDefault.java
index 04a81865c6..b312845b61 100644
--- a/persistence-modules/java-jpa-3/src/main/java/com/baeldung/jpa/equality/EqualByJavaDefault.java
+++ b/persistence-modules/java-jpa-3/src/main/java/com/baeldung/jpa/equality/EqualByJavaDefault.java
@@ -30,9 +30,7 @@ public class EqualByJavaDefault implements Cloneable{
         this.email = email;
     }
 
-    public Object clone() throws
-            CloneNotSupportedException
-    {
+    public Object clone() throws CloneNotSupportedException {
         return super.clone();
     }
 }
diff --git a/persistence-modules/java-jpa-3/src/test/java/com/baeldung/jpa/equality/EqualityUnitTest.java b/persistence-modules/java-jpa-3/src/test/java/com/baeldung/jpa/equality/EqualityUnitTest.java
index c672c9e460..03ac11b6fd 100644
--- a/persistence-modules/java-jpa-3/src/test/java/com/baeldung/jpa/equality/EqualityUnitTest.java
+++ b/persistence-modules/java-jpa-3/src/test/java/com/baeldung/jpa/equality/EqualityUnitTest.java
@@ -71,4 +71,4 @@ public class EqualityUnitTest {
         Assert.assertEquals(object1, object2);
         Assert.assertNotEquals(object1.getId(), object2.getId());
     }
-}
\ No newline at end of file
+}

From 164957ad0ab5baf72a686ef26851b15f6aaeb161 Mon Sep 17 00:00:00 2001
From: Ali Dehghani <ali.dehghani.g@gmail.com>
Date: Sun, 9 Aug 2020 11:38:50 +0430
Subject: [PATCH 053/156] Improvement for Spring Boot Exit Codes

---
 ...ExceptionExitCodeGeneratorApplication.java | 21 +++++++++++++++++++
 .../FailedToStartException.java               | 11 ++++++++++
 2 files changed, 32 insertions(+)
 create mode 100644 spring-boot-modules/spring-boot-basic-customization/src/main/java/com/baeldung/exitcode/exceptionexitgen/ExceptionExitCodeGeneratorApplication.java
 create mode 100644 spring-boot-modules/spring-boot-basic-customization/src/main/java/com/baeldung/exitcode/exceptionexitgen/FailedToStartException.java

diff --git a/spring-boot-modules/spring-boot-basic-customization/src/main/java/com/baeldung/exitcode/exceptionexitgen/ExceptionExitCodeGeneratorApplication.java b/spring-boot-modules/spring-boot-basic-customization/src/main/java/com/baeldung/exitcode/exceptionexitgen/ExceptionExitCodeGeneratorApplication.java
new file mode 100644
index 0000000000..a4ccb61dbb
--- /dev/null
+++ b/spring-boot-modules/spring-boot-basic-customization/src/main/java/com/baeldung/exitcode/exceptionexitgen/ExceptionExitCodeGeneratorApplication.java
@@ -0,0 +1,21 @@
+package com.baeldung.exitcode.exceptionexitgen;
+
+import org.springframework.boot.CommandLineRunner;
+import org.springframework.boot.SpringApplication;
+import org.springframework.boot.autoconfigure.SpringBootApplication;
+import org.springframework.context.annotation.Bean;
+
+@SpringBootApplication
+public class ExceptionExitCodeGeneratorApplication {
+
+    public static void main(String[] args) {
+        SpringApplication.run(ExceptionExitCodeGeneratorApplication.class, args);
+    }
+
+    @Bean
+    CommandLineRunner failApplication() {
+        return args -> {
+            throw new FailedToStartException();
+        };
+    }
+}
diff --git a/spring-boot-modules/spring-boot-basic-customization/src/main/java/com/baeldung/exitcode/exceptionexitgen/FailedToStartException.java b/spring-boot-modules/spring-boot-basic-customization/src/main/java/com/baeldung/exitcode/exceptionexitgen/FailedToStartException.java
new file mode 100644
index 0000000000..04ac553153
--- /dev/null
+++ b/spring-boot-modules/spring-boot-basic-customization/src/main/java/com/baeldung/exitcode/exceptionexitgen/FailedToStartException.java
@@ -0,0 +1,11 @@
+package com.baeldung.exitcode.exceptionexitgen;
+
+import org.springframework.boot.ExitCodeGenerator;
+
+public class FailedToStartException extends RuntimeException implements ExitCodeGenerator {
+
+    @Override
+    public int getExitCode() {
+        return 127;
+    }
+}

From 2453a731ca25192bb116554faf1d3cb133f33760 Mon Sep 17 00:00:00 2001
From: "amit.pandey" <amit.pandey2103@gmail.com>
Date: Sun, 9 Aug 2020 19:35:21 +0530
Subject: [PATCH 054/156] make folder name and artifactId same

---
 jhipster-5/bookstore-monolith/pom.xml | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/jhipster-5/bookstore-monolith/pom.xml b/jhipster-5/bookstore-monolith/pom.xml
index 03395e47ed..c965fd962d 100644
--- a/jhipster-5/bookstore-monolith/pom.xml
+++ b/jhipster-5/bookstore-monolith/pom.xml
@@ -3,7 +3,7 @@
     <modelVersion>4.0.0</modelVersion>
 
     <groupId>com.baeldung.jhipster5</groupId>
-    <artifactId>bookstore</artifactId>
+    <artifactId>bookstore-monolith</artifactId>
     <version>0.0.1-SNAPSHOT</version>
     <packaging>war</packaging>
     <name>Bookstore</name>

From e23d7f8efb72c694509d3f05c6114bce2b784ba7 Mon Sep 17 00:00:00 2001
From: Trixi Turny <writetotrixi@gmail.com>
Date: Sun, 9 Aug 2020 18:46:32 +0100
Subject: [PATCH 055/156] BAEL-4321 demo app for yaml to pojo

---
 configuration/yaml-to-pojo/README.md          |  9 ++++
 configuration/yaml-to-pojo/pom.xml            | 54 +++++++++++++++++++
 .../java/yamltopojo/demo/DemoApplication.java | 16 ++++++
 .../demo/config/TshirtSizeConfig.java         | 27 ++++++++++
 .../demo/controller/TshirtSizeController.java | 22 ++++++++
 .../demo/service/SizeConverterImpl.java       | 22 ++++++++
 .../demo/service/SizeConverterService.java    |  8 +++
 .../src/main/resources/application.yml        | 30 +++++++++++
 .../yamltopojo/demo/DemoApplicationTests.java | 13 +++++
 .../controller/TshirtSizeControllerTest.java  | 38 +++++++++++++
 10 files changed, 239 insertions(+)
 create mode 100644 configuration/yaml-to-pojo/README.md
 create mode 100644 configuration/yaml-to-pojo/pom.xml
 create mode 100644 configuration/yaml-to-pojo/src/main/java/yamltopojo/demo/DemoApplication.java
 create mode 100644 configuration/yaml-to-pojo/src/main/java/yamltopojo/demo/config/TshirtSizeConfig.java
 create mode 100644 configuration/yaml-to-pojo/src/main/java/yamltopojo/demo/controller/TshirtSizeController.java
 create mode 100644 configuration/yaml-to-pojo/src/main/java/yamltopojo/demo/service/SizeConverterImpl.java
 create mode 100644 configuration/yaml-to-pojo/src/main/java/yamltopojo/demo/service/SizeConverterService.java
 create mode 100644 configuration/yaml-to-pojo/src/main/resources/application.yml
 create mode 100644 configuration/yaml-to-pojo/src/test/java/yamltopojo/demo/DemoApplicationTests.java
 create mode 100644 configuration/yaml-to-pojo/src/test/java/yamltopojo/demo/controller/TshirtSizeControllerTest.java

diff --git a/configuration/yaml-to-pojo/README.md b/configuration/yaml-to-pojo/README.md
new file mode 100644
index 0000000000..9dba74a7e5
--- /dev/null
+++ b/configuration/yaml-to-pojo/README.md
@@ -0,0 +1,9 @@
+This is a demo application for using YAML configuration for defining values in a POJO class. 
+
+The application has an endpoint to provide T-shirt size conversion for label and countrycode.
+
+If you run this service locally you can call this endpoint on:
+
+`localhost:8080/convertSize?label=M&countryCode=fr`
+
+It should return the size as int. 
\ No newline at end of file
diff --git a/configuration/yaml-to-pojo/pom.xml b/configuration/yaml-to-pojo/pom.xml
new file mode 100644
index 0000000000..f6b55718be
--- /dev/null
+++ b/configuration/yaml-to-pojo/pom.xml
@@ -0,0 +1,54 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+	xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 https://maven.apache.org/xsd/maven-4.0.0.xsd">
+	<modelVersion>4.0.0</modelVersion>
+	<parent>
+		<groupId>org.springframework.boot</groupId>
+		<artifactId>spring-boot-starter-parent</artifactId>
+		<version>2.3.2.RELEASE</version>
+		<relativePath/> <!-- lookup parent from repository -->
+	</parent>
+	<groupId>yaml-to-pojo</groupId>
+	<artifactId>demo</artifactId>
+	<version>0.0.1-SNAPSHOT</version>
+	<name>demo</name>
+	<description>Demo project for YAML into POJO</description>
+
+	<properties>
+		<java.version>1.8</java.version>
+	</properties>
+
+	<dependencies>
+		<dependency>
+			<groupId>org.springframework.boot</groupId>
+			<artifactId>spring-boot-starter</artifactId>
+		</dependency>
+
+		<dependency>
+			<groupId>org.springframework.boot</groupId>
+			<artifactId>spring-boot-starter-test</artifactId>
+			<scope>test</scope>
+			<exclusions>
+				<exclusion>
+					<groupId>org.junit.vintage</groupId>
+					<artifactId>junit-vintage-engine</artifactId>
+				</exclusion>
+			</exclusions>
+		</dependency>
+        <dependency>
+            <groupId>org.springframework.boot</groupId>
+            <artifactId>spring-boot-starter-web</artifactId>
+            <version>RELEASE</version>
+        </dependency>
+    </dependencies>
+
+	<build>
+		<plugins>
+			<plugin>
+				<groupId>org.springframework.boot</groupId>
+				<artifactId>spring-boot-maven-plugin</artifactId>
+			</plugin>
+		</plugins>
+	</build>
+
+</project>
diff --git a/configuration/yaml-to-pojo/src/main/java/yamltopojo/demo/DemoApplication.java b/configuration/yaml-to-pojo/src/main/java/yamltopojo/demo/DemoApplication.java
new file mode 100644
index 0000000000..ec8df793c2
--- /dev/null
+++ b/configuration/yaml-to-pojo/src/main/java/yamltopojo/demo/DemoApplication.java
@@ -0,0 +1,16 @@
+package yamltopojo.demo;
+
+import org.springframework.boot.SpringApplication;
+import org.springframework.boot.autoconfigure.SpringBootApplication;
+import org.springframework.boot.context.properties.EnableConfigurationProperties;
+import yamltopojo.demo.config.TshirtSizeConfig;
+
+@SpringBootApplication
+@EnableConfigurationProperties(TshirtSizeConfig.class)
+public class DemoApplication {
+
+	public static void main(String[] args) {
+		SpringApplication.run(DemoApplication.class, args);
+	}
+
+}
diff --git a/configuration/yaml-to-pojo/src/main/java/yamltopojo/demo/config/TshirtSizeConfig.java b/configuration/yaml-to-pojo/src/main/java/yamltopojo/demo/config/TshirtSizeConfig.java
new file mode 100644
index 0000000000..8f8d2e5b39
--- /dev/null
+++ b/configuration/yaml-to-pojo/src/main/java/yamltopojo/demo/config/TshirtSizeConfig.java
@@ -0,0 +1,27 @@
+package yamltopojo.demo.config;
+
+import org.springframework.boot.context.properties.ConfigurationProperties;
+
+import java.util.Map;
+
+@ConfigurationProperties(prefix = "t-shirt-size")
+public class TshirtSizeConfig {
+
+    private final Map<String, Integer> simpleMapping;
+
+    private final Map<String, Map<String, Integer>> complexMapping;
+
+
+    public TshirtSizeConfig(Map<String, Integer> simpleMapping, Map<String, Map<String, Integer>> complexMapping) {
+        this.simpleMapping = simpleMapping;
+        this.complexMapping = complexMapping;
+    }
+
+    public Map<String, Integer> getSimpleMapping() {
+        return simpleMapping;
+    }
+
+    public Map<String, Map<String, Integer>> getComplexMapping() {
+        return complexMapping;
+    }
+}
diff --git a/configuration/yaml-to-pojo/src/main/java/yamltopojo/demo/controller/TshirtSizeController.java b/configuration/yaml-to-pojo/src/main/java/yamltopojo/demo/controller/TshirtSizeController.java
new file mode 100644
index 0000000000..d555549bd4
--- /dev/null
+++ b/configuration/yaml-to-pojo/src/main/java/yamltopojo/demo/controller/TshirtSizeController.java
@@ -0,0 +1,22 @@
+package yamltopojo.demo.controller;
+
+import org.springframework.web.bind.annotation.*;
+import yamltopojo.demo.service.SizeConverterService;
+
+@RestController
+@RequestMapping(value = "/")
+public class TshirtSizeController {
+
+    private SizeConverterService service;
+
+    public TshirtSizeController(SizeConverterService service) {
+        this.service = service;
+    }
+
+    @RequestMapping(value ="convertSize", method = RequestMethod.GET)
+    public int convertSize(@RequestParam(value = "label") final String label,
+                                             @RequestParam(value = "countryCode", required = false) final String countryCode) {
+        return service.convertSize(label, countryCode);
+    }
+
+}
diff --git a/configuration/yaml-to-pojo/src/main/java/yamltopojo/demo/service/SizeConverterImpl.java b/configuration/yaml-to-pojo/src/main/java/yamltopojo/demo/service/SizeConverterImpl.java
new file mode 100644
index 0000000000..8f95e4253b
--- /dev/null
+++ b/configuration/yaml-to-pojo/src/main/java/yamltopojo/demo/service/SizeConverterImpl.java
@@ -0,0 +1,22 @@
+package yamltopojo.demo.service;
+
+import org.springframework.stereotype.Service;
+import yamltopojo.demo.config.TshirtSizeConfig;
+
+
+@Service
+public class SizeConverterImpl implements SizeConverterService {
+
+    private TshirtSizeConfig tshirtSizeConfig;
+
+    public SizeConverterImpl(TshirtSizeConfig tshirtSizeConfig) {
+        this.tshirtSizeConfig = tshirtSizeConfig;
+    }
+
+    public int  convertSize(String label, String countryCode) {
+        if(countryCode == null) {
+            return tshirtSizeConfig.getSimpleMapping().get(label);
+        }
+        return tshirtSizeConfig.getComplexMapping().get(label).get(countryCode);
+    }
+}
diff --git a/configuration/yaml-to-pojo/src/main/java/yamltopojo/demo/service/SizeConverterService.java b/configuration/yaml-to-pojo/src/main/java/yamltopojo/demo/service/SizeConverterService.java
new file mode 100644
index 0000000000..3e24681cbe
--- /dev/null
+++ b/configuration/yaml-to-pojo/src/main/java/yamltopojo/demo/service/SizeConverterService.java
@@ -0,0 +1,8 @@
+package yamltopojo.demo.service;
+
+
+public interface SizeConverterService {
+
+    int convertSize(String label, String countryCode);
+
+}
diff --git a/configuration/yaml-to-pojo/src/main/resources/application.yml b/configuration/yaml-to-pojo/src/main/resources/application.yml
new file mode 100644
index 0000000000..edd200389e
--- /dev/null
+++ b/configuration/yaml-to-pojo/src/main/resources/application.yml
@@ -0,0 +1,30 @@
+t-shirt-size:
+  simple-mapping:
+    XS: 6
+    S:  8
+    M:  10
+    L:  12
+    XL: 14
+
+
+  complex-mapping:
+    XS:
+      uk: 6
+      fr: 34
+      us: 2
+    S:
+      uk: 8
+      fr: 36
+      us: 4
+    M:
+      uk: 10
+      fr: 38
+      us: 6
+    L:
+      uk: 12
+      fr: 40
+      us: 8
+    XL:
+      uk: 14
+      fr: 42
+      us: 10
diff --git a/configuration/yaml-to-pojo/src/test/java/yamltopojo/demo/DemoApplicationTests.java b/configuration/yaml-to-pojo/src/test/java/yamltopojo/demo/DemoApplicationTests.java
new file mode 100644
index 0000000000..dfe980c05c
--- /dev/null
+++ b/configuration/yaml-to-pojo/src/test/java/yamltopojo/demo/DemoApplicationTests.java
@@ -0,0 +1,13 @@
+package yamltopojo.demo;
+
+import org.junit.jupiter.api.Test;
+import org.springframework.boot.test.context.SpringBootTest;
+
+@SpringBootTest
+class DemoApplicationTests {
+
+	@Test
+	void contextLoads() {
+	}
+
+}
diff --git a/configuration/yaml-to-pojo/src/test/java/yamltopojo/demo/controller/TshirtSizeControllerTest.java b/configuration/yaml-to-pojo/src/test/java/yamltopojo/demo/controller/TshirtSizeControllerTest.java
new file mode 100644
index 0000000000..3c1ef6dff5
--- /dev/null
+++ b/configuration/yaml-to-pojo/src/test/java/yamltopojo/demo/controller/TshirtSizeControllerTest.java
@@ -0,0 +1,38 @@
+package yamltopojo.demo.controller;
+
+import org.junit.jupiter.api.Test;
+import org.junit.jupiter.api.extension.ExtendWith;
+import org.mockito.InjectMocks;
+import org.mockito.Mock;
+import org.mockito.junit.jupiter.MockitoExtension;
+import yamltopojo.demo.service.SizeConverterService;
+
+import static org.junit.jupiter.api.Assertions.*;
+import static org.mockito.Mockito.when;
+
+@ExtendWith(MockitoExtension.class)
+class TshirtSizeControllerTest {
+
+    @Mock
+    private SizeConverterService service;
+
+    @InjectMocks
+    private TshirtSizeController tested;
+
+    @Test
+    void convertSize() {
+
+        // Given
+        String label = "S";
+        String countryCode = "fr";
+        int result = 36;
+
+        //
+        when(service.convertSize(label, countryCode)).thenReturn(result);
+        int actual = tested.convertSize(label, countryCode);
+
+        // Then
+        assertEquals(actual, result);
+
+    }
+}
\ No newline at end of file

From e7d193055062b58f5ac91235d79b91042dd652eb Mon Sep 17 00:00:00 2001
From: johnA1331 <53036378+johnA1331@users.noreply.github.com>
Date: Tue, 11 Aug 2020 11:19:00 +0800
Subject: [PATCH 056/156] Update README.md

---
 java-numbers-3/README.md | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/java-numbers-3/README.md b/java-numbers-3/README.md
index ab0bbd995d..2cec5d52cd 100644
--- a/java-numbers-3/README.md
+++ b/java-numbers-3/README.md
@@ -4,7 +4,7 @@ This module contains articles about numbers in Java.
 
 ### Relevant Articles:
 
-- [Generating Random Numbers](https://www.baeldung.com/java-generating-random-numbers)
+- [Generating Random Numbers in Java](https://www.baeldung.com/java-generating-random-numbers)
 - [Convert Double to Long in Java](https://www.baeldung.com/java-convert-double-long)
 - [Check for null Before Calling Parse in Double.parseDouble](https://www.baeldung.com/java-check-null-parse-double)
 - [Generating Random Numbers in a Range in Java](https://www.baeldung.com/java-generating-random-numbers-in-range)

From fffbcfc2c082b6f7b1469864b47c9316ca185ab5 Mon Sep 17 00:00:00 2001
From: johnA1331 <53036378+johnA1331@users.noreply.github.com>
Date: Tue, 11 Aug 2020 11:24:33 +0800
Subject: [PATCH 057/156] Update README.md

---
 core-java-modules/core-java-9-new-features/README.md | 1 +
 1 file changed, 1 insertion(+)

diff --git a/core-java-modules/core-java-9-new-features/README.md b/core-java-modules/core-java-9-new-features/README.md
index d10d0aad2d..5af069c6f0 100644
--- a/core-java-modules/core-java-9-new-features/README.md
+++ b/core-java-modules/core-java-9-new-features/README.md
@@ -14,3 +14,4 @@ This module contains articles about core Java features that have been introduced
 - [Java 9 Reactive Streams](https://www.baeldung.com/java-9-reactive-streams)
 - [Multi-Release JAR Files with Maven](https://www.baeldung.com/maven-multi-release-jars)
 - [The Difference between RxJava API and the Java 9 Flow API](https://www.baeldung.com/rxjava-vs-java-flow-api)
+- [How to Get a Name of a Method Being Executed?](https://www.baeldung.com/java-name-of-executing-method)

From 03229bced14a817ff5f865143a9c7673fbbdadf4 Mon Sep 17 00:00:00 2001
From: johnA1331 <53036378+johnA1331@users.noreply.github.com>
Date: Tue, 11 Aug 2020 11:40:49 +0800
Subject: [PATCH 058/156] Update README.md

---
 spring-boot-modules/spring-boot-mvc-2/README.md | 1 +
 1 file changed, 1 insertion(+)

diff --git a/spring-boot-modules/spring-boot-mvc-2/README.md b/spring-boot-modules/spring-boot-mvc-2/README.md
index c42730f9cc..f9becb721f 100644
--- a/spring-boot-modules/spring-boot-mvc-2/README.md
+++ b/spring-boot-modules/spring-boot-mvc-2/README.md
@@ -11,4 +11,5 @@ This module contains articles about Spring Web MVC in Spring Boot projects.
 - [Testing REST with multiple MIME types](https://www.baeldung.com/testing-rest-api-with-multiple-media-types)
 - [Testing Web APIs with Postman Collections](https://www.baeldung.com/postman-testing-collections)
 - [Spring Boot Consuming and Producing JSON](https://www.baeldung.com/spring-boot-json)
+- [Serve Static Resources with Spring](https://www.baeldung.com/spring-mvc-static-resources)
 - More articles: [[prev -->]](/spring-boot-modules/spring-boot-mvc)

From ccaeb55319f22eb457a5450fccb07cc5c9f58c28 Mon Sep 17 00:00:00 2001
From: johnA1331 <53036378+johnA1331@users.noreply.github.com>
Date: Tue, 11 Aug 2020 12:32:27 +0800
Subject: [PATCH 059/156] Update README.md

---
 reactive-systems/README.md | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/reactive-systems/README.md b/reactive-systems/README.md
index 0558dd141e..b23f4e4dc4 100644
--- a/reactive-systems/README.md
+++ b/reactive-systems/README.md
@@ -4,4 +4,4 @@ This module contains services for article about reactive systems in Java. Please
 
 ### Relevant Articles
 
-- [Reactive Systems in Java](https://www.baeldung.com/)
+- [Reactive Systems in Java](https://www.baeldung.com/java-reactive-systems)

From bb267b5d64eef65c5fa6adf789c70a32f1d8d05e Mon Sep 17 00:00:00 2001
From: johnA1331 <53036378+johnA1331@users.noreply.github.com>
Date: Tue, 11 Aug 2020 12:45:54 +0800
Subject: [PATCH 060/156] Update README.md

---
 algorithms-searching/README.md | 1 +
 1 file changed, 1 insertion(+)

diff --git a/algorithms-searching/README.md b/algorithms-searching/README.md
index aed3c7d21f..260a4ea714 100644
--- a/algorithms-searching/README.md
+++ b/algorithms-searching/README.md
@@ -11,3 +11,4 @@ This module contains articles about searching algorithms.
 - [Monte Carlo Tree Search for Tic-Tac-Toe Game](https://www.baeldung.com/java-monte-carlo-tree-search)
 - [Range Search Algorithm in Java](https://www.baeldung.com/java-range-search)
 - [Fast Pattern Matching of Strings Using Suffix Tree](https://www.baeldung.com/java-pattern-matching-suffix-tree)
+- [Topological Sort of Directed Acyclic Graph](https://www.baeldung.com/cs/dag-topological-sort)

From 009308131f46a10537245afc853eafb10b3603cc Mon Sep 17 00:00:00 2001
From: sampadawagde <sampada.wagde@gmail.com>
Date: Tue, 11 Aug 2020 12:17:02 +0530
Subject: [PATCH 061/156] JAVA-2344: Update "Dockerizing with Jib" article

---
 jib/pom.xml | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/jib/pom.xml b/jib/pom.xml
index 1d7413cc18..15e7e44e7c 100644
--- a/jib/pom.xml
+++ b/jib/pom.xml
@@ -40,6 +40,6 @@
     </build>
 
     <properties>
-        <jib-maven-plugin.version>0.9.10</jib-maven-plugin.version>
+        <jib-maven-plugin.version>2.5.0</jib-maven-plugin.version>
     </properties>
 </project>

From b09abfc0bf564d74a10ba11be2e25bc5080da630 Mon Sep 17 00:00:00 2001
From: sampadawagde <sampada.wagde@gmail.com>
Date: Tue, 11 Aug 2020 13:05:01 +0530
Subject: [PATCH 062/156] JAVA-1089: Move the OAuth related lesson code from
 spring-boot-modules/spring-boot-security

---
 .../SpringBootOAuth2ResourceApplication.java  | 30 -------
 ...ingBootAuthorizationServerApplication.java | 47 ----------
 .../config/AuthenticationMananagerConfig.java | 18 ----
 .../config/AuthorizationServerConfig.java     | 46 ----------
 .../config/WebSecurityConfiguration.java      | 17 ----
 .../SpringBootOAuth2SsoApplication.java       | 19 ----
 ...figAuthorizationServerIntegrationTest.java | 89 -------------------
 ...figAuthorizationServerIntegrationTest.java | 32 -------
 .../OAuth2IntegrationTestSupport.java         | 53 -----------
 9 files changed, 351 deletions(-)
 delete mode 100644 spring-boot-modules/spring-boot-security/src/main/java/com/baeldung/springbootsecurity/oauth2resource/SpringBootOAuth2ResourceApplication.java
 delete mode 100644 spring-boot-modules/spring-boot-security/src/main/java/com/baeldung/springbootsecurity/oauth2server/SpringBootAuthorizationServerApplication.java
 delete mode 100644 spring-boot-modules/spring-boot-security/src/main/java/com/baeldung/springbootsecurity/oauth2server/config/AuthenticationMananagerConfig.java
 delete mode 100644 spring-boot-modules/spring-boot-security/src/main/java/com/baeldung/springbootsecurity/oauth2server/config/AuthorizationServerConfig.java
 delete mode 100644 spring-boot-modules/spring-boot-security/src/main/java/com/baeldung/springbootsecurity/oauth2server/config/WebSecurityConfiguration.java
 delete mode 100644 spring-boot-modules/spring-boot-security/src/main/java/com/baeldung/springbootsecurity/oauth2sso/SpringBootOAuth2SsoApplication.java
 delete mode 100644 spring-boot-modules/spring-boot-security/src/test/java/com/baeldung/springbootsecurity/oauth2server/CustomConfigAuthorizationServerIntegrationTest.java
 delete mode 100644 spring-boot-modules/spring-boot-security/src/test/java/com/baeldung/springbootsecurity/oauth2server/DefaultConfigAuthorizationServerIntegrationTest.java
 delete mode 100644 spring-boot-modules/spring-boot-security/src/test/java/com/baeldung/springbootsecurity/oauth2server/OAuth2IntegrationTestSupport.java

diff --git a/spring-boot-modules/spring-boot-security/src/main/java/com/baeldung/springbootsecurity/oauth2resource/SpringBootOAuth2ResourceApplication.java b/spring-boot-modules/spring-boot-security/src/main/java/com/baeldung/springbootsecurity/oauth2resource/SpringBootOAuth2ResourceApplication.java
deleted file mode 100644
index 56231a28bd..0000000000
--- a/spring-boot-modules/spring-boot-security/src/main/java/com/baeldung/springbootsecurity/oauth2resource/SpringBootOAuth2ResourceApplication.java
+++ /dev/null
@@ -1,30 +0,0 @@
-package com.baeldung.springbootsecurity.oauth2resource;
-
-import org.springframework.boot.autoconfigure.SpringBootApplication;
-import org.springframework.boot.builder.SpringApplicationBuilder;
-import org.springframework.security.oauth2.config.annotation.web.configuration.EnableResourceServer;
-import org.springframework.web.bind.annotation.GetMapping;
-import org.springframework.web.bind.annotation.RestController;
-
-@EnableResourceServer
-@SpringBootApplication(scanBasePackages = "com.baeldung.springbootsecurity.oauth2resource")
-public class SpringBootOAuth2ResourceApplication {
-
-    public static void main(String[] args) {
-        new SpringApplicationBuilder()
-          .profiles("resource")
-          .sources(SpringBootOAuth2ResourceApplication.class)
-          .build()
-          .run(args);
-    }
-
-    @RestController
-    class SecuredResourceController {
-
-        @GetMapping("/securedResource")
-        public String securedResource() {
-            return "Baeldung Secured Resource OK";
-        }
-
-    }
-}
diff --git a/spring-boot-modules/spring-boot-security/src/main/java/com/baeldung/springbootsecurity/oauth2server/SpringBootAuthorizationServerApplication.java b/spring-boot-modules/spring-boot-security/src/main/java/com/baeldung/springbootsecurity/oauth2server/SpringBootAuthorizationServerApplication.java
deleted file mode 100644
index 04f046ff78..0000000000
--- a/spring-boot-modules/spring-boot-security/src/main/java/com/baeldung/springbootsecurity/oauth2server/SpringBootAuthorizationServerApplication.java
+++ /dev/null
@@ -1,47 +0,0 @@
-package com.baeldung.springbootsecurity.oauth2server;
-
-import org.slf4j.Logger;
-import org.slf4j.LoggerFactory;
-import org.springframework.boot.SpringApplication;
-import org.springframework.boot.autoconfigure.SpringBootApplication;
-import org.springframework.security.core.Authentication;
-import org.springframework.security.core.annotation.CurrentSecurityContext;
-import org.springframework.security.oauth2.config.annotation.web.configuration.EnableAuthorizationServer;
-import org.springframework.security.oauth2.config.annotation.web.configuration.EnableResourceServer;
-import org.springframework.web.bind.annotation.GetMapping;
-import org.springframework.web.bind.annotation.RestController;
-
-import java.security.Principal;
-
-@EnableResourceServer
-@EnableAuthorizationServer
-@SpringBootApplication(scanBasePackages = "com.baeldung.springbootsecurity.oauth2server")
-public class SpringBootAuthorizationServerApplication {
-
-    private static final Logger logger = LoggerFactory.getLogger(SpringBootAuthorizationServerApplication.class);
-
-    public static void main(String[] args) {
-        SpringApplication.run(SpringBootAuthorizationServerApplication.class, args);
-    }
-
-    @RestController
-    class UserController {
-
-        @GetMapping("/user")
-        public Principal user(Principal user) {
-            return user;
-        }
-
-        @GetMapping("/authentication")
-        public Object getAuthentication(@CurrentSecurityContext(expression = "authentication") Authentication authentication) {
-            logger.info("authentication -> {}", authentication);
-            return authentication.getDetails();
-        }
-
-        @GetMapping("/principal")
-        public String getPrincipal(@CurrentSecurityContext(expression = "authentication.principal") Principal principal) {
-            logger.info("principal -> {}", principal);
-            return principal.getName();
-        }
-    }
-}
diff --git a/spring-boot-modules/spring-boot-security/src/main/java/com/baeldung/springbootsecurity/oauth2server/config/AuthenticationMananagerConfig.java b/spring-boot-modules/spring-boot-security/src/main/java/com/baeldung/springbootsecurity/oauth2server/config/AuthenticationMananagerConfig.java
deleted file mode 100644
index 2b4135f36d..0000000000
--- a/spring-boot-modules/spring-boot-security/src/main/java/com/baeldung/springbootsecurity/oauth2server/config/AuthenticationMananagerConfig.java
+++ /dev/null
@@ -1,18 +0,0 @@
-package com.baeldung.springbootsecurity.oauth2server.config;
-
-import org.springframework.context.annotation.Bean;
-import org.springframework.context.annotation.Configuration;
-import org.springframework.context.annotation.Profile;
-import org.springframework.security.authentication.AuthenticationManager;
-import org.springframework.security.config.annotation.web.configuration.WebSecurityConfigurerAdapter;
-
-@Configuration
-@Profile("authz")
-public class AuthenticationMananagerConfig extends WebSecurityConfigurerAdapter {
-
-    @Bean
-    @Override
-    public AuthenticationManager authenticationManagerBean() throws Exception {
-        return super.authenticationManagerBean();
-    }
-}
\ No newline at end of file
diff --git a/spring-boot-modules/spring-boot-security/src/main/java/com/baeldung/springbootsecurity/oauth2server/config/AuthorizationServerConfig.java b/spring-boot-modules/spring-boot-security/src/main/java/com/baeldung/springbootsecurity/oauth2server/config/AuthorizationServerConfig.java
deleted file mode 100644
index 6e21987a89..0000000000
--- a/spring-boot-modules/spring-boot-security/src/main/java/com/baeldung/springbootsecurity/oauth2server/config/AuthorizationServerConfig.java
+++ /dev/null
@@ -1,46 +0,0 @@
-package com.baeldung.springbootsecurity.oauth2server.config;
-
-import org.springframework.beans.factory.annotation.Autowired;
-import org.springframework.context.annotation.Bean;
-import org.springframework.context.annotation.Configuration;
-import org.springframework.context.annotation.Profile;
-import org.springframework.security.authentication.AuthenticationManager;
-import org.springframework.security.crypto.bcrypt.BCryptPasswordEncoder;
-import org.springframework.security.oauth2.config.annotation.configurers.ClientDetailsServiceConfigurer;
-import org.springframework.security.oauth2.config.annotation.web.configuration.AuthorizationServerConfigurerAdapter;
-import org.springframework.security.oauth2.config.annotation.web.configurers.AuthorizationServerEndpointsConfigurer;
-
-@Configuration
-@Profile("authz")
-public class AuthorizationServerConfig extends AuthorizationServerConfigurerAdapter {
-
-    @Autowired
-    private AuthenticationManager authenticationManager;
-
-    @Override
-    public void configure(AuthorizationServerEndpointsConfigurer endpoints) throws Exception {
-        endpoints.authenticationManager(authenticationManager);
-    }
-
-    @Override
-    public void configure(ClientDetailsServiceConfigurer clients) throws Exception {
-        clients
-          .inMemory()
-          .withClient("baeldung")
-          .secret(passwordEncoder().encode("baeldung"))
-          .authorizedGrantTypes("client_credentials", "password", "authorization_code")
-          .scopes("openid", "read")
-          .autoApprove(true)
-          .and()
-          .withClient("baeldung-admin")
-          .secret(passwordEncoder().encode("baeldung"))
-          .authorizedGrantTypes("authorization_code", "client_credentials", "refresh_token")
-          .scopes("read", "write")
-          .autoApprove(true);
-    }
-    
-    @Bean
-    public BCryptPasswordEncoder passwordEncoder() {
-        return new BCryptPasswordEncoder();
-    }
-}
diff --git a/spring-boot-modules/spring-boot-security/src/main/java/com/baeldung/springbootsecurity/oauth2server/config/WebSecurityConfiguration.java b/spring-boot-modules/spring-boot-security/src/main/java/com/baeldung/springbootsecurity/oauth2server/config/WebSecurityConfiguration.java
deleted file mode 100644
index 3a8c073870..0000000000
--- a/spring-boot-modules/spring-boot-security/src/main/java/com/baeldung/springbootsecurity/oauth2server/config/WebSecurityConfiguration.java
+++ /dev/null
@@ -1,17 +0,0 @@
-package com.baeldung.springbootsecurity.oauth2server.config;
-
-import org.springframework.context.annotation.Bean;
-import org.springframework.context.annotation.Configuration;
-import org.springframework.context.annotation.Profile;
-import org.springframework.security.authentication.AuthenticationManager;
-import org.springframework.security.config.annotation.web.configuration.WebSecurityConfigurerAdapter;
-
-@Configuration
-@Profile("!authz")
-public class WebSecurityConfiguration extends WebSecurityConfigurerAdapter {
-
-    @Bean
-    public AuthenticationManager customAuthenticationManager() throws Exception {
-        return authenticationManager();
-    }
-}
diff --git a/spring-boot-modules/spring-boot-security/src/main/java/com/baeldung/springbootsecurity/oauth2sso/SpringBootOAuth2SsoApplication.java b/spring-boot-modules/spring-boot-security/src/main/java/com/baeldung/springbootsecurity/oauth2sso/SpringBootOAuth2SsoApplication.java
deleted file mode 100644
index 342c246e66..0000000000
--- a/spring-boot-modules/spring-boot-security/src/main/java/com/baeldung/springbootsecurity/oauth2sso/SpringBootOAuth2SsoApplication.java
+++ /dev/null
@@ -1,19 +0,0 @@
-package com.baeldung.springbootsecurity.oauth2sso;
-
-import org.springframework.boot.autoconfigure.SpringBootApplication;
-
-import org.springframework.boot.autoconfigure.security.oauth2.client.EnableOAuth2Sso;
-import org.springframework.boot.builder.SpringApplicationBuilder;
-
-@EnableOAuth2Sso
-@SpringBootApplication(scanBasePackages = "com.baeldung.springbootsecurity.oauth2sso")
-public class SpringBootOAuth2SsoApplication {
-
-    public static void main(String[] args) {
-        new SpringApplicationBuilder()
-          .profiles("sso")
-          .sources(SpringBootOAuth2SsoApplication.class)
-          .build()
-          .run(args);
-    }
-}
diff --git a/spring-boot-modules/spring-boot-security/src/test/java/com/baeldung/springbootsecurity/oauth2server/CustomConfigAuthorizationServerIntegrationTest.java b/spring-boot-modules/spring-boot-security/src/test/java/com/baeldung/springbootsecurity/oauth2server/CustomConfigAuthorizationServerIntegrationTest.java
deleted file mode 100644
index 104e115b18..0000000000
--- a/spring-boot-modules/spring-boot-security/src/test/java/com/baeldung/springbootsecurity/oauth2server/CustomConfigAuthorizationServerIntegrationTest.java
+++ /dev/null
@@ -1,89 +0,0 @@
-package com.baeldung.springbootsecurity.oauth2server;
-
-import org.junit.Before;
-import org.junit.Test;
-import org.junit.runner.RunWith;
-import org.springframework.boot.test.context.SpringBootTest;
-import org.springframework.boot.web.server.LocalServerPort;
-import org.springframework.security.oauth2.client.OAuth2RestTemplate;
-import org.springframework.security.oauth2.client.resource.OAuth2AccessDeniedException;
-import org.springframework.security.oauth2.client.token.grant.client.ClientCredentialsResourceDetails;
-import org.springframework.security.oauth2.common.OAuth2AccessToken;
-import org.springframework.test.context.ActiveProfiles;
-import org.springframework.test.context.junit4.SpringRunner;
-
-import java.net.URL;
-import java.util.regex.Pattern;
-
-import static java.util.Collections.singletonList;
-import static org.junit.Assert.assertEquals;
-import static org.junit.Assert.assertNotNull;
-import static org.junit.Assert.assertTrue;
-import static org.springframework.boot.test.context.SpringBootTest.WebEnvironment.RANDOM_PORT;
-
-@RunWith(SpringRunner.class)
-@SpringBootTest(webEnvironment = RANDOM_PORT, classes = SpringBootAuthorizationServerApplication.class)
-@ActiveProfiles("authz")
-public class CustomConfigAuthorizationServerIntegrationTest extends OAuth2IntegrationTestSupport {
-
-    @LocalServerPort
-    private int port;
-
-    @Before
-    public void setUp() throws Exception {
-        base = new URL("http://localhost:" + port);
-    }
-
-    @Test
-    public void givenOAuth2Context_whenAccessTokenIsRequested_ThenAccessTokenValueIsNotNull() {
-        ClientCredentialsResourceDetails resourceDetails = getClientCredentialsResourceDetails("baeldung", singletonList("read"));
-        OAuth2RestTemplate restTemplate = getOAuth2RestTemplate(resourceDetails);
-
-        OAuth2AccessToken accessToken = restTemplate.getAccessToken();
-
-        assertNotNull(accessToken);
-    }
-
-    @Test
-    public void givenOAuth2Context_whenAccessingAuthentication_ThenRespondTokenDetails() {
-        ClientCredentialsResourceDetails resourceDetails = getClientCredentialsResourceDetails("baeldung", singletonList("read"));
-        OAuth2RestTemplate restTemplate = getOAuth2RestTemplate(resourceDetails);
-
-        String authentication = executeGetRequest(restTemplate, "/authentication");
-
-        Pattern pattern = Pattern.compile("\\{\"remoteAddress\":\".*" +
-                "\",\"sessionId\":null,\"tokenValue\":\".*" +
-                "\",\"tokenType\":\"Bearer\",\"decodedDetails\":null}");
-        assertTrue("authentication", pattern.matcher(authentication).matches());
-    }
-
-    @Test
-    public void givenOAuth2Context_whenAccessingPrincipal_ThenRespondBaeldung() {
-        ClientCredentialsResourceDetails resourceDetails = getClientCredentialsResourceDetails("baeldung", singletonList("read"));
-        OAuth2RestTemplate restTemplate = getOAuth2RestTemplate(resourceDetails);
-
-        String principal = executeGetRequest(restTemplate, "/principal");
-
-        assertEquals("baeldung", principal);
-    }
-
-    @Test(expected = OAuth2AccessDeniedException.class)
-    public void givenOAuth2Context_whenAccessTokenIsRequestedWithInvalidException_ThenExceptionIsThrown() {
-        ClientCredentialsResourceDetails resourceDetails = getClientCredentialsResourceDetails("baeldung", singletonList("write"));
-        OAuth2RestTemplate restTemplate = getOAuth2RestTemplate(resourceDetails);
-
-        restTemplate.getAccessToken();
-    }
-
-    @Test
-    public void givenOAuth2Context_whenAccessTokenIsRequestedByClientWithWriteScope_ThenAccessTokenIsNotNull() {
-        ClientCredentialsResourceDetails resourceDetails = getClientCredentialsResourceDetails("baeldung-admin", singletonList("write"));
-        OAuth2RestTemplate restTemplate = getOAuth2RestTemplate(resourceDetails);
-
-        OAuth2AccessToken accessToken = restTemplate.getAccessToken();
-
-        assertNotNull(accessToken);
-    }
-
-}
-
diff --git a/spring-boot-modules/spring-boot-security/src/test/java/com/baeldung/springbootsecurity/oauth2server/DefaultConfigAuthorizationServerIntegrationTest.java b/spring-boot-modules/spring-boot-security/src/test/java/com/baeldung/springbootsecurity/oauth2server/DefaultConfigAuthorizationServerIntegrationTest.java
deleted file mode 100644
index 4d7b449380..0000000000
--- a/spring-boot-modules/spring-boot-security/src/test/java/com/baeldung/springbootsecurity/oauth2server/DefaultConfigAuthorizationServerIntegrationTest.java
+++ /dev/null
@@ -1,32 +0,0 @@
-package com.baeldung.springbootsecurity.oauth2server;
-
-import org.junit.Test;
-import org.junit.runner.RunWith;
-import org.springframework.boot.test.context.SpringBootTest;
-import org.springframework.security.oauth2.client.OAuth2RestTemplate;
-import org.springframework.security.oauth2.client.token.grant.client.ClientCredentialsResourceDetails;
-import org.springframework.security.oauth2.common.OAuth2AccessToken;
-import org.springframework.test.context.junit4.SpringRunner;
-
-import static java.util.Arrays.asList;
-import static org.junit.Assert.assertNotNull;
-import static org.springframework.boot.test.context.SpringBootTest.WebEnvironment.RANDOM_PORT;
-
-@RunWith(SpringRunner.class)
-@SpringBootTest(webEnvironment = RANDOM_PORT, classes = SpringBootAuthorizationServerApplication.class,
-                properties = { "security.oauth2.client.client-id=client", "security.oauth2.client.client-secret=baeldung" })
-public class DefaultConfigAuthorizationServerIntegrationTest extends OAuth2IntegrationTestSupport {
-
-    @Test
-    public void givenOAuth2Context_whenAccessTokenIsRequested_ThenAccessTokenValueIsNotNull() {
-        ClientCredentialsResourceDetails resourceDetails = getClientCredentialsResourceDetails("client", asList("read", "write"));
-        OAuth2RestTemplate restTemplate = getOAuth2RestTemplate(resourceDetails);
-
-        OAuth2AccessToken accessToken = restTemplate.getAccessToken();
-
-        assertNotNull(accessToken);
-
-    }
-
-}
-
diff --git a/spring-boot-modules/spring-boot-security/src/test/java/com/baeldung/springbootsecurity/oauth2server/OAuth2IntegrationTestSupport.java b/spring-boot-modules/spring-boot-security/src/test/java/com/baeldung/springbootsecurity/oauth2server/OAuth2IntegrationTestSupport.java
deleted file mode 100644
index a005965998..0000000000
--- a/spring-boot-modules/spring-boot-security/src/test/java/com/baeldung/springbootsecurity/oauth2server/OAuth2IntegrationTestSupport.java
+++ /dev/null
@@ -1,53 +0,0 @@
-package com.baeldung.springbootsecurity.oauth2server;
-
-import org.apache.commons.io.IOUtils;
-import org.springframework.beans.factory.annotation.Value;
-import org.springframework.http.converter.json.MappingJackson2HttpMessageConverter;
-import org.springframework.security.oauth2.client.DefaultOAuth2ClientContext;
-import org.springframework.security.oauth2.client.OAuth2RestTemplate;
-import org.springframework.security.oauth2.client.token.grant.client.ClientCredentialsResourceDetails;
-import org.springframework.web.client.RequestCallback;
-import org.springframework.web.client.ResponseExtractor;
-
-import java.net.URL;
-import java.nio.charset.Charset;
-import java.util.List;
-
-import static java.lang.String.format;
-import static java.util.Collections.singletonList;
-import static org.springframework.http.HttpMethod.GET;
-
-public class OAuth2IntegrationTestSupport {
-
-    public static final ResponseExtractor<String> EXTRACT_BODY_AS_STRING = clientHttpResponse ->
-            IOUtils.toString(clientHttpResponse.getBody(), Charset.defaultCharset());
-    private static final RequestCallback DO_NOTHING_CALLBACK = request -> {
-    };
-
-    @Value("${local.server.port}")
-    protected int port;
-
-    protected URL base;
-
-    protected ClientCredentialsResourceDetails getClientCredentialsResourceDetails(final String clientId, final List<String> scopes) {
-        ClientCredentialsResourceDetails resourceDetails = new ClientCredentialsResourceDetails();
-        resourceDetails.setAccessTokenUri(format("http://localhost:%d/oauth/token", port));
-        resourceDetails.setClientId(clientId);
-        resourceDetails.setClientSecret("baeldung");
-        resourceDetails.setScope(scopes);
-        resourceDetails.setGrantType("client_credentials");
-        return resourceDetails;
-    }
-
-    protected OAuth2RestTemplate getOAuth2RestTemplate(final ClientCredentialsResourceDetails resourceDetails) {
-        DefaultOAuth2ClientContext clientContext = new DefaultOAuth2ClientContext();
-        OAuth2RestTemplate restTemplate = new OAuth2RestTemplate(resourceDetails, clientContext);
-        restTemplate.setMessageConverters(singletonList(new MappingJackson2HttpMessageConverter()));
-        return restTemplate;
-    }
-
-    protected String executeGetRequest(OAuth2RestTemplate restTemplate, String path) {
-        return restTemplate.execute(base.toString() + path, GET, DO_NOTHING_CALLBACK, EXTRACT_BODY_AS_STRING);
-    }
-
-}

From 972db91cd9b8ceecc45da5044c8273df82e5cc7b Mon Sep 17 00:00:00 2001
From: johnA1331 <53036378+johnA1331@users.noreply.github.com>
Date: Tue, 11 Aug 2020 18:38:42 +0800
Subject: [PATCH 063/156] Delete README.md

---
 maven-modules/maven-plugins/maven-enforcer/README.md | 3 ---
 1 file changed, 3 deletions(-)
 delete mode 100644 maven-modules/maven-plugins/maven-enforcer/README.md

diff --git a/maven-modules/maven-plugins/maven-enforcer/README.md b/maven-modules/maven-plugins/maven-enforcer/README.md
deleted file mode 100644
index 44d43050e7..0000000000
--- a/maven-modules/maven-plugins/maven-enforcer/README.md
+++ /dev/null
@@ -1,3 +0,0 @@
-### Relevant Articles:
-
-- [Maven Enforcer Plugin](https://www.baeldung.com/maven-enforcer-plugin)

From 9e17f8f8a587884630e83d80ffdaab0232ed5739 Mon Sep 17 00:00:00 2001
From: johnA1331 <53036378+johnA1331@users.noreply.github.com>
Date: Tue, 11 Aug 2020 19:09:19 +0800
Subject: [PATCH 064/156] Update README.md

---
 apache-cxf/README.md | 1 -
 1 file changed, 1 deletion(-)

diff --git a/apache-cxf/README.md b/apache-cxf/README.md
index bedd19a91a..88edaf4e13 100644
--- a/apache-cxf/README.md
+++ b/apache-cxf/README.md
@@ -7,4 +7,3 @@ This module contains articles about Apache CXF
 - [Apache CXF Support for RESTful Web Services](https://www.baeldung.com/apache-cxf-rest-api)
 - [A Guide to Apache CXF with Spring](https://www.baeldung.com/apache-cxf-with-spring)
 - [Introduction to Apache CXF](https://www.baeldung.com/introduction-to-apache-cxf)
-- [Server-Sent Events (SSE) In JAX-RS](https://www.baeldung.com/java-ee-jax-rs-sse)

From be2e853fd3437caeb99b2a24ef66bf81d2e90b74 Mon Sep 17 00:00:00 2001
From: johnA1331 <53036378+johnA1331@users.noreply.github.com>
Date: Tue, 11 Aug 2020 19:11:30 +0800
Subject: [PATCH 065/156] Create README.md

---
 apache-cxf/sse-jaxrs/README.md | 3 +++
 1 file changed, 3 insertions(+)
 create mode 100644 apache-cxf/sse-jaxrs/README.md

diff --git a/apache-cxf/sse-jaxrs/README.md b/apache-cxf/sse-jaxrs/README.md
new file mode 100644
index 0000000000..4d39560b46
--- /dev/null
+++ b/apache-cxf/sse-jaxrs/README.md
@@ -0,0 +1,3 @@
+### Relevant Articles:
+
+- [Server-Sent Events (SSE) In JAX-RS](https://www.baeldung.com/java-ee-jax-rs-sse)

From f130f7fcbfd97272afd4362536d8b0d65d1ac255 Mon Sep 17 00:00:00 2001
From: johnA1331 <53036378+johnA1331@users.noreply.github.com>
Date: Tue, 11 Aug 2020 19:34:04 +0800
Subject: [PATCH 066/156] Update README.md

---
 persistence-modules/spring-data-elasticsearch/README.md | 1 -
 1 file changed, 1 deletion(-)

diff --git a/persistence-modules/spring-data-elasticsearch/README.md b/persistence-modules/spring-data-elasticsearch/README.md
index 9f68a25243..22126c2f00 100644
--- a/persistence-modules/spring-data-elasticsearch/README.md
+++ b/persistence-modules/spring-data-elasticsearch/README.md
@@ -6,7 +6,6 @@
 - [Guide to Elasticsearch in Java](https://www.baeldung.com/elasticsearch-java)
 - [Geospatial Support in ElasticSearch](https://www.baeldung.com/elasticsearch-geo-spatial)
 - [A Simple Tagging Implementation with Elasticsearch](https://www.baeldung.com/elasticsearch-tagging)
-- [Introduction to Spring Data Elasticsearch (evaluation)](https://www.baeldung.com/spring-data-elasticsearch-test-2)
 
 ### Build the Project with Tests Running
 ```

From 90feaa94ecb838a371571c228bfffb7bdc8b2367 Mon Sep 17 00:00:00 2001
From: johnA1331 <53036378+johnA1331@users.noreply.github.com>
Date: Tue, 11 Aug 2020 19:40:24 +0800
Subject: [PATCH 067/156] Update README.md

---
 excelformula/README.md | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/excelformula/README.md b/excelformula/README.md
index 86ddaba413..90826cabee 100644
--- a/excelformula/README.md
+++ b/excelformula/README.md
@@ -3,6 +3,6 @@
 This module contains articles about Apache POI
 
 ### Relevant Articles:
-- [Working with Microsoft Excel in Java](https://www.baeldung.com/java-microsoft-excel)
+
 - [Read Excel Cell Value Rather Than Formula With Apache POI](https://www.baeldung.com/apache-poi-read-cell-value-formula)
 - [Upload and Display Excel Files with Spring MVC](https://www.baeldung.com/spring-mvc-excel-files)

From 0ec048cf985e1eddad03107cbb8ca7b58451bdfc Mon Sep 17 00:00:00 2001
From: johnA1331 <53036378+johnA1331@users.noreply.github.com>
Date: Tue, 11 Aug 2020 19:43:49 +0800
Subject: [PATCH 068/156] Update README.md

---
 excelformula/README.md | 1 -
 1 file changed, 1 deletion(-)

diff --git a/excelformula/README.md b/excelformula/README.md
index 90826cabee..a43b3148be 100644
--- a/excelformula/README.md
+++ b/excelformula/README.md
@@ -4,5 +4,4 @@ This module contains articles about Apache POI
 
 ### Relevant Articles:
 
-- [Read Excel Cell Value Rather Than Formula With Apache POI](https://www.baeldung.com/apache-poi-read-cell-value-formula)
 - [Upload and Display Excel Files with Spring MVC](https://www.baeldung.com/spring-mvc-excel-files)

From fae529d8544070adfa0da731d8a80f8767d6bb9a Mon Sep 17 00:00:00 2001
From: johnA1331 <53036378+johnA1331@users.noreply.github.com>
Date: Tue, 11 Aug 2020 19:45:09 +0800
Subject: [PATCH 069/156] Update README.md

---
 excelformula/README.md | 2 --
 1 file changed, 2 deletions(-)

diff --git a/excelformula/README.md b/excelformula/README.md
index a43b3148be..24560525cd 100644
--- a/excelformula/README.md
+++ b/excelformula/README.md
@@ -3,5 +3,3 @@
 This module contains articles about Apache POI
 
 ### Relevant Articles:
-
-- [Upload and Display Excel Files with Spring MVC](https://www.baeldung.com/spring-mvc-excel-files)

From 6a662c10dfc573bbd38dbc26eda0710b70c05f8a Mon Sep 17 00:00:00 2001
From: johnA1331 <53036378+johnA1331@users.noreply.github.com>
Date: Tue, 11 Aug 2020 19:49:05 +0800
Subject: [PATCH 070/156] Create README.md

---
 docker/docker-spring-boot/README.md | 3 +++
 1 file changed, 3 insertions(+)
 create mode 100644 docker/docker-spring-boot/README.md

diff --git a/docker/docker-spring-boot/README.md b/docker/docker-spring-boot/README.md
new file mode 100644
index 0000000000..78f13a3652
--- /dev/null
+++ b/docker/docker-spring-boot/README.md
@@ -0,0 +1,3 @@
+### Relevant Article:
+
+- [Creating Docker Images with Spring Boot](https://www.baeldung.com/spring-boot-docker-images)

From 96502d8626ad700c89927e3e4efa896d4b332b12 Mon Sep 17 00:00:00 2001
From: Krzysztof Woyke <krzysztofwoyke@gmail.com>
Date: Tue, 11 Aug 2020 15:09:34 +0200
Subject: [PATCH 071/156] JAVA-2380: Fix failing integration tests in the
 spring-data-jpa-enterprise

---
 .../src/main/java/com/baeldung/boot/Application.java          | 4 ++--
 .../src/main/java/com/baeldung/osiv/model/BasicUser.java      | 2 +-
 2 files changed, 3 insertions(+), 3 deletions(-)

diff --git a/persistence-modules/spring-data-jpa-enterprise/src/main/java/com/baeldung/boot/Application.java b/persistence-modules/spring-data-jpa-enterprise/src/main/java/com/baeldung/boot/Application.java
index aaca760499..d9da2c53b6 100644
--- a/persistence-modules/spring-data-jpa-enterprise/src/main/java/com/baeldung/boot/Application.java
+++ b/persistence-modules/spring-data-jpa-enterprise/src/main/java/com/baeldung/boot/Application.java
@@ -6,8 +6,8 @@ import org.springframework.boot.autoconfigure.domain.EntityScan;
 import org.springframework.data.jpa.repository.config.EnableJpaRepositories;
 
 @SpringBootApplication
-@EnableJpaRepositories("com.baeldung")
-@EntityScan("com.baeldung")
+@EnableJpaRepositories("com.baeldung.boot")
+@EntityScan("com.baeldung.boot")
 public class Application {
 
     public static void main(String[] args) {
diff --git a/persistence-modules/spring-data-jpa-enterprise/src/main/java/com/baeldung/osiv/model/BasicUser.java b/persistence-modules/spring-data-jpa-enterprise/src/main/java/com/baeldung/osiv/model/BasicUser.java
index 98f4e379d4..a4f8e4e5f2 100644
--- a/persistence-modules/spring-data-jpa-enterprise/src/main/java/com/baeldung/osiv/model/BasicUser.java
+++ b/persistence-modules/spring-data-jpa-enterprise/src/main/java/com/baeldung/osiv/model/BasicUser.java
@@ -4,7 +4,7 @@ import javax.persistence.*;
 import java.util.Set;
 
 @Entity
-@Table(name = "users")
+@Table(name = "basic_users")
 public class BasicUser {
 
     @Id

From ded13f14b22653a8448b62b731a28ce22110d912 Mon Sep 17 00:00:00 2001
From: Daniel Strmecki <daniel.strmecki@gmail.com>
Date: Tue, 11 Aug 2020 19:29:46 +0200
Subject: [PATCH 072/156] Feature/bael 4280 diff between lists (#9600)

* BAEL-4280: Initial commit for finding diff between lists

* BAEL-4280: Format

* BAEL-4280: Refactor

* BAEL-4280: Refactor not to use private methods

* BAEL-4280: Refactor based on editor comments

* BAEL-4280: Review round 2

* BAEL-4280: Use assertj

* BAEL-4280: Use assertj

* BAEL-4280: Shorter names for tests

* BAEL-4280: Remove HashSet as its not used anymore

* BAEL-4280: Use containsExactlyInAnyOrder for Set example

* BAEL-4280: Remove distinct method call

* BAEL-4280: Move impl to test

* BAEL-4280: Use containsExactlyInAnyOrder

* BAEL-4280: Rename test methods
---
 .../core-java-collections-list-3/pom.xml      |  6 ++
 .../FindDifferencesBetweenListsUnitTest.java  | 96 +++++++++++++++++++
 2 files changed, 102 insertions(+)
 create mode 100644 core-java-modules/core-java-collections-list-3/src/test/java/com/baeldung/list/difference/FindDifferencesBetweenListsUnitTest.java

diff --git a/core-java-modules/core-java-collections-list-3/pom.xml b/core-java-modules/core-java-collections-list-3/pom.xml
index 373190a130..e1cf645c8a 100644
--- a/core-java-modules/core-java-collections-list-3/pom.xml
+++ b/core-java-modules/core-java-collections-list-3/pom.xml
@@ -21,6 +21,12 @@
             <artifactId>commons-collections4</artifactId>
             <version>${commons-collections4.version}</version>
         </dependency>
+        <dependency>
+            <groupId>com.google.guava</groupId>
+            <artifactId>guava</artifactId>
+            <version>${guava.version}</version>
+            <scope>compile</scope>
+        </dependency>
         <dependency>
             <groupId>org.assertj</groupId>
             <artifactId>assertj-core</artifactId>
diff --git a/core-java-modules/core-java-collections-list-3/src/test/java/com/baeldung/list/difference/FindDifferencesBetweenListsUnitTest.java b/core-java-modules/core-java-collections-list-3/src/test/java/com/baeldung/list/difference/FindDifferencesBetweenListsUnitTest.java
new file mode 100644
index 0000000000..ceeff5e442
--- /dev/null
+++ b/core-java-modules/core-java-collections-list-3/src/test/java/com/baeldung/list/difference/FindDifferencesBetweenListsUnitTest.java
@@ -0,0 +1,96 @@
+package com.baeldung.list.difference;
+
+import com.google.common.collect.Sets;
+import org.apache.commons.collections4.CollectionUtils;
+import org.junit.Test;
+
+import java.util.ArrayList;
+import java.util.Arrays;
+import java.util.List;
+import java.util.stream.Collectors;
+
+import static org.junit.jupiter.api.Assertions.*;
+import static org.assertj.core.api.Assertions.*;
+
+public class FindDifferencesBetweenListsUnitTest {
+
+    private static final List<String> listOne = Arrays.asList("Jack", "Tom", "Sam", "John", "James", "Jack");
+    private static final List<String> listTwo = Arrays.asList("Jack", "Daniel", "Sam", "Alan", "James", "George");
+
+    @Test
+    public void givenLists_whenUsingPlainJavaImpl_thenDifferencesAreFound() {
+        List<String> differences = new ArrayList<>(listOne);
+        differences.removeAll(listTwo);
+        assertEquals(2, differences.size());
+        assertThat(differences).containsExactly("Tom", "John");
+    }
+
+    @Test
+    public void givenReverseLists_whenUsingPlainJavaImpl_thenDifferencesAreFound() {
+        List<String> differences = new ArrayList<>(listTwo);
+        differences.removeAll(listOne);
+        assertEquals(3, differences.size());
+        assertThat(differences).containsExactly("Daniel", "Alan", "George");
+    }
+
+    @Test
+    public void givenLists_whenUsingJavaStreams_thenDifferencesAreFound() {
+        List<String> differences = listOne.stream()
+                .filter(element -> !listTwo.contains(element))
+                .collect(Collectors.toList());
+        assertEquals(2, differences.size());
+        assertThat(differences).containsExactly("Tom", "John");
+    }
+
+    @Test
+    public void givenReverseLists_whenUsingJavaStreams_thenDifferencesAreFound() {
+        List<String> differences = listTwo.stream()
+                .filter(element -> !listOne.contains(element))
+                .collect(Collectors.toList());
+        assertEquals(3, differences.size());
+        assertThat(differences).containsExactly("Daniel", "Alan", "George");
+    }
+
+    @Test
+    public void givenLists_whenUsingGoogleGuava_thenDifferencesAreFound() {
+        List<String> differences = new ArrayList<>(Sets.difference(Sets.newHashSet(listOne), Sets.newHashSet(listTwo)));
+        assertEquals(2, differences.size());
+        assertThat(differences).containsExactlyInAnyOrder("Tom", "John");
+    }
+
+    @Test
+    public void givenReverseLists_whenUsingGoogleGuava_thenDifferencesAreFound() {
+        List<String> differences = new ArrayList<>(Sets.difference(Sets.newHashSet(listTwo), Sets.newHashSet(listOne)));
+        assertEquals(3, differences.size());
+        assertThat(differences).containsExactlyInAnyOrder("Daniel", "Alan", "George");
+    }
+
+    @Test
+    public void givenLists_whenUsingApacheCommons_thenDifferencesAreFound() {
+        List<String> differences = new ArrayList<>((CollectionUtils.removeAll(listOne, listTwo)));
+        assertEquals(2, differences.size());
+        assertThat(differences).containsExactly("Tom", "John");
+    }
+
+    @Test
+    public void givenReverseLists_whenUsingApacheCommons_thenDifferencesAreFound() {
+        List<String> differences = new ArrayList<>((CollectionUtils.removeAll(listTwo, listOne)));
+        assertEquals(3, differences.size());
+        assertThat(differences).containsExactly("Daniel", "Alan", "George");
+    }
+
+    @Test
+    public void givenLists_whenUsingPlainJavaImpl_thenDifferencesWithDuplicatesAreFound() {
+        List<String> differences = new ArrayList<>(listOne);
+        listTwo.forEach(differences::remove);
+        assertThat(differences).containsExactly("Tom", "John", "Jack");
+    }
+
+    @Test
+    public void givenLists_whenUsingApacheCommons_thenDifferencesWithDuplicatesAreFound() {
+        List<String> differences = new ArrayList<>(CollectionUtils.subtract(listOne, listTwo));
+        assertEquals(3, differences.size());
+        assertThat(differences).containsExactly("Tom", "John", "Jack");
+    }
+
+}

From 94f50e785ee122b1f31310a5b6f518990841fda6 Mon Sep 17 00:00:00 2001
From: Mona Mohamadinia <mona.mohamadinia@gmail.com>
Date: Tue, 11 Aug 2020 22:50:22 +0430
Subject: [PATCH 073/156] ThreadLocals and Thread Pools (#9592)

---
 .../ThreadLocalAwareThreadPool.java           | 25 +++++++++++++++++++
 1 file changed, 25 insertions(+)
 create mode 100644 core-java-modules/core-java-concurrency-advanced/src/main/java/com/baeldung/threadlocal/ThreadLocalAwareThreadPool.java

diff --git a/core-java-modules/core-java-concurrency-advanced/src/main/java/com/baeldung/threadlocal/ThreadLocalAwareThreadPool.java b/core-java-modules/core-java-concurrency-advanced/src/main/java/com/baeldung/threadlocal/ThreadLocalAwareThreadPool.java
new file mode 100644
index 0000000000..5a41cd9dbf
--- /dev/null
+++ b/core-java-modules/core-java-concurrency-advanced/src/main/java/com/baeldung/threadlocal/ThreadLocalAwareThreadPool.java
@@ -0,0 +1,25 @@
+package com.baeldung.threadlocal;
+
+import java.util.concurrent.BlockingQueue;
+import java.util.concurrent.RejectedExecutionHandler;
+import java.util.concurrent.ThreadFactory;
+import java.util.concurrent.ThreadPoolExecutor;
+import java.util.concurrent.TimeUnit;
+
+public class ThreadLocalAwareThreadPool extends ThreadPoolExecutor {
+
+    public ThreadLocalAwareThreadPool(int corePoolSize,
+      int maximumPoolSize,
+      long keepAliveTime,
+      TimeUnit unit,
+      BlockingQueue<Runnable> workQueue,
+      ThreadFactory threadFactory,
+      RejectedExecutionHandler handler) {
+        super(corePoolSize, maximumPoolSize, keepAliveTime, unit, workQueue, threadFactory, handler);
+    }
+
+    @Override
+    protected void afterExecute(Runnable r, Throwable t) {
+        // Call remove on each ThreadLocal
+    }
+}

From e52c8269680c821a2aa612dee9ab9f67de119588 Mon Sep 17 00:00:00 2001
From: Krzysiek <krzysztofwoyke@gmail.com>
Date: Tue, 11 Aug 2020 22:14:45 +0200
Subject: [PATCH 074/156] JAVA-1648: Get rid of the overriden
 spring-boot.version property in spring-5-security

---
 spring-5-security/pom.xml | 3 ---
 1 file changed, 3 deletions(-)

diff --git a/spring-5-security/pom.xml b/spring-5-security/pom.xml
index 3fd31c8bc5..c486d5346b 100644
--- a/spring-5-security/pom.xml
+++ b/spring-5-security/pom.xml
@@ -60,8 +60,5 @@
             </plugin>
         </plugins>
     </build>
-    <properties>
-        <spring-boot.version>2.2.1.RELEASE</spring-boot.version>
-    </properties>
 
 </project>

From 41964ef72e4a54bff1e79ff10592b92838af5f41 Mon Sep 17 00:00:00 2001
From: Ali Dehghani <ali.dehghani.g@gmail.com>
Date: Wed, 12 Aug 2020 00:58:10 +0430
Subject: [PATCH 075/156] Fixed the "Comparator and Comparable in Java" Article

---
 .../java/com/baeldung/comparable/Player.java  |  2 +-
 .../comparator/PlayerAgeComparator.java       |  2 +-
 .../comparator/PlayerRankingComparator.java   |  2 +-
 .../AvoidingSubtractionUnitTest.java          | 26 +++++++++++++++++++
 .../comparator/Java8ComparatorUnitTest.java   |  8 +++---
 5 files changed, 33 insertions(+), 7 deletions(-)
 create mode 100644 core-java-modules/core-java-lang/src/test/java/com/baeldung/comparator/AvoidingSubtractionUnitTest.java

diff --git a/core-java-modules/core-java-lang/src/main/java/com/baeldung/comparable/Player.java b/core-java-modules/core-java-lang/src/main/java/com/baeldung/comparable/Player.java
index 68a78980f3..74d9a7577e 100644
--- a/core-java-modules/core-java-lang/src/main/java/com/baeldung/comparable/Player.java
+++ b/core-java-modules/core-java-lang/src/main/java/com/baeldung/comparable/Player.java
@@ -45,7 +45,7 @@ public class Player implements Comparable<Player> {
 
     @Override
     public int compareTo(Player otherPlayer) {
-        return (this.getRanking() - otherPlayer.getRanking());
+        return Integer.compare(getRanking(), otherPlayer.getRanking());
     }
 
 }
diff --git a/core-java-modules/core-java-lang/src/main/java/com/baeldung/comparator/PlayerAgeComparator.java b/core-java-modules/core-java-lang/src/main/java/com/baeldung/comparator/PlayerAgeComparator.java
index d2e7ca1f42..56e2163f3c 100644
--- a/core-java-modules/core-java-lang/src/main/java/com/baeldung/comparator/PlayerAgeComparator.java
+++ b/core-java-modules/core-java-lang/src/main/java/com/baeldung/comparator/PlayerAgeComparator.java
@@ -6,7 +6,7 @@ public class PlayerAgeComparator implements Comparator<Player> {
 
     @Override
     public int compare(Player firstPlayer, Player secondPlayer) {
-       return (firstPlayer.getAge() - secondPlayer.getAge());
+       return Integer.compare(firstPlayer.getAge(), secondPlayer.getAge());
     }
 
 }
diff --git a/core-java-modules/core-java-lang/src/main/java/com/baeldung/comparator/PlayerRankingComparator.java b/core-java-modules/core-java-lang/src/main/java/com/baeldung/comparator/PlayerRankingComparator.java
index 2d42698843..56aa38d11a 100644
--- a/core-java-modules/core-java-lang/src/main/java/com/baeldung/comparator/PlayerRankingComparator.java
+++ b/core-java-modules/core-java-lang/src/main/java/com/baeldung/comparator/PlayerRankingComparator.java
@@ -6,7 +6,7 @@ public class PlayerRankingComparator implements Comparator<Player> {
 
     @Override
     public int compare(Player firstPlayer, Player secondPlayer) {
-       return (firstPlayer.getRanking() - secondPlayer.getRanking());
+       return Integer.compare(firstPlayer.getRanking(), secondPlayer.getRanking());
     }
 
 }
diff --git a/core-java-modules/core-java-lang/src/test/java/com/baeldung/comparator/AvoidingSubtractionUnitTest.java b/core-java-modules/core-java-lang/src/test/java/com/baeldung/comparator/AvoidingSubtractionUnitTest.java
new file mode 100644
index 0000000000..fcca743ca1
--- /dev/null
+++ b/core-java-modules/core-java-lang/src/test/java/com/baeldung/comparator/AvoidingSubtractionUnitTest.java
@@ -0,0 +1,26 @@
+package com.baeldung.comparator;
+
+import org.junit.Test;
+
+import java.util.Arrays;
+import java.util.Comparator;
+import java.util.List;
+
+import static org.junit.Assert.assertEquals;
+
+public class AvoidingSubtractionUnitTest {
+
+    @Test
+    public void givenTwoPlayers_whenUsingSubtraction_thenOverflow() {
+        Comparator<Player> comparator = (p1, p2) -> p1.getRanking() - p2.getRanking();
+        Player player1 = new Player(59, "John", Integer.MAX_VALUE);
+        Player player2 = new Player(67, "Roger", -1);
+
+        List<Player> players = Arrays.asList(player1, player2);
+        players.sort(comparator);
+        System.out.println(players);
+
+        assertEquals("John", players.get(0).getName());
+        assertEquals("Roger", players.get(1).getName());
+    }
+}
diff --git a/core-java-modules/core-java-lang/src/test/java/com/baeldung/comparator/Java8ComparatorUnitTest.java b/core-java-modules/core-java-lang/src/test/java/com/baeldung/comparator/Java8ComparatorUnitTest.java
index 49c8749309..dac05a85b1 100644
--- a/core-java-modules/core-java-lang/src/test/java/com/baeldung/comparator/Java8ComparatorUnitTest.java
+++ b/core-java-modules/core-java-lang/src/test/java/com/baeldung/comparator/Java8ComparatorUnitTest.java
@@ -1,14 +1,14 @@
 package com.baeldung.comparator;
 
-import static org.junit.Assert.assertEquals;
+import org.junit.Before;
+import org.junit.Test;
 
 import java.util.ArrayList;
 import java.util.Collections;
 import java.util.Comparator;
 import java.util.List;
 
-import org.junit.Before;
-import org.junit.Test;
+import static org.junit.Assert.assertEquals;
 
 public class Java8ComparatorUnitTest {
 
@@ -28,7 +28,7 @@ public class Java8ComparatorUnitTest {
     @Test
     public void whenComparing_UsingLambda_thenSorted() {
         System.out.println("************** Java 8 Comaparator **************");
-        Comparator<Player> byRanking = (Player player1, Player player2) -> player1.getRanking() - player2.getRanking();
+        Comparator<Player> byRanking = (Player player1, Player player2) -> Integer.compare(player1.getRanking(), player2.getRanking());
 
         System.out.println("Before Sorting : " + footballTeam);
         Collections.sort(footballTeam, byRanking);

From e7d3347960fc47ee8e3ceb6ada579aec57d1064c Mon Sep 17 00:00:00 2001
From: Ali Dehghani <ali.dehghani.g@gmail.com>
Date: Wed, 12 Aug 2020 01:41:12 +0430
Subject: [PATCH 076/156] Fixed the "Sorting in Java" Article

---
 .../collections/sorting/JavaSortingUnitTest.java    | 13 +++++++++++--
 1 file changed, 11 insertions(+), 2 deletions(-)

diff --git a/core-java-modules/core-java-collections-2/src/test/java/com/baeldung/collections/sorting/JavaSortingUnitTest.java b/core-java-modules/core-java-collections-2/src/test/java/com/baeldung/collections/sorting/JavaSortingUnitTest.java
index 2505adcea7..d474e95cb2 100644
--- a/core-java-modules/core-java-collections-2/src/test/java/com/baeldung/collections/sorting/JavaSortingUnitTest.java
+++ b/core-java-modules/core-java-collections-2/src/test/java/com/baeldung/collections/sorting/JavaSortingUnitTest.java
@@ -5,7 +5,16 @@ import org.apache.commons.lang3.ArrayUtils;
 import org.junit.Before;
 import org.junit.Test;
 
-import java.util.*;
+import java.util.ArrayList;
+import java.util.Arrays;
+import java.util.Collections;
+import java.util.Comparator;
+import java.util.HashMap;
+import java.util.HashSet;
+import java.util.LinkedHashMap;
+import java.util.LinkedHashSet;
+import java.util.List;
+import java.util.Map;
 import java.util.Map.Entry;
 
 import static org.junit.Assert.assertTrue;
@@ -138,7 +147,7 @@ public class JavaSortingUnitTest {
         HashSet<Integer> descSortedIntegersSet = new LinkedHashSet<>(Arrays.asList(255, 200, 123, 89, 88, 66, 7, 5, 1));
 
         ArrayList<Integer> list = new ArrayList<>(integersSet);
-        list.sort((i1, i2) -> i2 - i1);
+        list.sort(Comparator.reverseOrder());
         integersSet = new LinkedHashSet<>(list);
 
         assertTrue(Arrays.equals(integersSet.toArray(), descSortedIntegersSet.toArray()));

From 1945c8a3124f5d7c7d8a27f976453a934595e015 Mon Sep 17 00:00:00 2001
From: Ali Dehghani <ali.dehghani.g@gmail.com>
Date: Wed, 12 Aug 2020 01:50:52 +0430
Subject: [PATCH 077/156] Fixed the "Lambda Sort" Article

---
 .../src/main/java/com/baeldung/java8/entity/Human.java          | 2 +-
 .../src/test/java/com/baeldung/java8/Java8SortUnitTest.java     | 2 +-
 2 files changed, 2 insertions(+), 2 deletions(-)

diff --git a/core-java-modules/core-java-lambdas/src/main/java/com/baeldung/java8/entity/Human.java b/core-java-modules/core-java-lambdas/src/main/java/com/baeldung/java8/entity/Human.java
index cab8546129..98e35d0af2 100644
--- a/core-java-modules/core-java-lambdas/src/main/java/com/baeldung/java8/entity/Human.java
+++ b/core-java-modules/core-java-lambdas/src/main/java/com/baeldung/java8/entity/Human.java
@@ -37,7 +37,7 @@ public class Human {
 
     public static int compareByNameThenAge(final Human lhs, final Human rhs) {
         if (lhs.name.equals(rhs.name)) {
-            return lhs.age - rhs.age;
+            return Integer.compare(lhs.age, rhs.age);
         } else {
             return lhs.name.compareTo(rhs.name);
         }
diff --git a/core-java-modules/core-java-lambdas/src/test/java/com/baeldung/java8/Java8SortUnitTest.java b/core-java-modules/core-java-lambdas/src/test/java/com/baeldung/java8/Java8SortUnitTest.java
index 9e510575fc..e5f876c84b 100644
--- a/core-java-modules/core-java-lambdas/src/test/java/com/baeldung/java8/Java8SortUnitTest.java
+++ b/core-java-modules/core-java-lambdas/src/test/java/com/baeldung/java8/Java8SortUnitTest.java
@@ -54,7 +54,7 @@ public class Java8SortUnitTest {
         final List<Human> humans = Lists.newArrayList(new Human("Sarah", 12), new Human("Sarah", 10), new Human("Zack", 12));
         humans.sort((lhs, rhs) -> {
             if (lhs.getName().equals(rhs.getName())) {
-                return lhs.getAge() - rhs.getAge();
+                return Integer.compare(lhs.getAge(), rhs.getAge());
             } else {
                 return lhs.getName().compareTo(rhs.getName());
             }

From ea9c64147ba4734719ee3ae4bddbcff904fa5514 Mon Sep 17 00:00:00 2001
From: Rutuja Joshi <67615932+rutujavjoshi@users.noreply.github.com>
Date: Wed, 12 Aug 2020 07:24:44 +0530
Subject: [PATCH 078/156] BAEL-4193 (updated files)

- removed not needed fields
---
 .../nosuchmethoderror/MainMenu.java           | 21 ++++++-------------
 .../nosuchmethoderror/SpecialToday.java       | 14 ++++---------
 2 files changed, 10 insertions(+), 25 deletions(-)

diff --git a/core-java-modules/core-java-exceptions/src/main/java/com/baeldung/exceptions/nosuchmethoderror/MainMenu.java b/core-java-modules/core-java-exceptions/src/main/java/com/baeldung/exceptions/nosuchmethoderror/MainMenu.java
index aec70cb843..f12cbe1897 100644
--- a/core-java-modules/core-java-exceptions/src/main/java/com/baeldung/exceptions/nosuchmethoderror/MainMenu.java
+++ b/core-java-modules/core-java-exceptions/src/main/java/com/baeldung/exceptions/nosuchmethoderror/MainMenu.java
@@ -1,20 +1,11 @@
 package com.baeldung.exceptions.nosuchmethoderror;
 
-import java.util.StringJoiner;
-
 public class MainMenu {
-	public static void main(String[] args) {
-		System.out.println("Today's Specials: " + getSpecials());
-	}
+    public static void main(String[] args) {
+        System.out.println("Today's Specials: " + getSpecials());
+    }
 
-	public static StringJoiner getSpecials() {
-		StringJoiner specials = new StringJoiner(", ");
-		try {
-			specials.add(SpecialToday.getStarter());
-			specials.add(SpecialToday.getDesert());
-		} catch (Exception e) {
-			e.printStackTrace();
-		}
-		return specials;
-	}
+    public static String getSpecials() {
+        return SpecialToday.getDesert();
+    }
 }
diff --git a/core-java-modules/core-java-exceptions/src/main/java/com/baeldung/exceptions/nosuchmethoderror/SpecialToday.java b/core-java-modules/core-java-exceptions/src/main/java/com/baeldung/exceptions/nosuchmethoderror/SpecialToday.java
index 1f47a8934e..1b0dea9784 100644
--- a/core-java-modules/core-java-exceptions/src/main/java/com/baeldung/exceptions/nosuchmethoderror/SpecialToday.java
+++ b/core-java-modules/core-java-exceptions/src/main/java/com/baeldung/exceptions/nosuchmethoderror/SpecialToday.java
@@ -1,14 +1,8 @@
 package com.baeldung.exceptions.nosuchmethoderror;
-
 public class SpecialToday {
-	private static String desert = "Chocolate Cake";
-	private static String starter = "Caesar Salad";
+    private static String desert = "Chocolate Cake";
 
-	public static String getDesert() {
-		return desert;
-	}
-
-	public static String getStarter() {
-		return starter;
-	}
+    public static String getDesert() {
+        return desert;
+    }
 }

From b532f998db741ffe7200cfee2fdf467bbb4eef57 Mon Sep 17 00:00:00 2001
From: Loredana <lore.crusoveanu@gmail.com>
Date: Wed, 12 Aug 2020 19:32:27 +0300
Subject: [PATCH 079/156] BAEL-4395 fix test

---
 .../com/baeldung/copydirectory/ApacheCommonsUnitTest.java     | 4 ++--
 .../test/java/com/baeldung/copydirectory/CoreOldUnitTest.java | 4 ++--
 .../test/java/com/baeldung/copydirectory/JavaNioUnitTest.java | 4 ++--
 3 files changed, 6 insertions(+), 6 deletions(-)

diff --git a/core-java-modules/core-java-io-3/src/test/java/com/baeldung/copydirectory/ApacheCommonsUnitTest.java b/core-java-modules/core-java-io-3/src/test/java/com/baeldung/copydirectory/ApacheCommonsUnitTest.java
index 3486a9af9d..eee49a37d7 100644
--- a/core-java-modules/core-java-io-3/src/test/java/com/baeldung/copydirectory/ApacheCommonsUnitTest.java
+++ b/core-java-modules/core-java-io-3/src/test/java/com/baeldung/copydirectory/ApacheCommonsUnitTest.java
@@ -16,10 +16,10 @@ import org.junit.jupiter.api.Test;
 
 public class ApacheCommonsUnitTest {
 
-    private final String sourceDirectoryLocation = "src/test/resources/sourceDirectory";
+    private final String sourceDirectoryLocation = "src/test/resources/sourceDirectory3";
     private final String subDirectoryName = "/childDirectory";
     private final String fileName = "/file.txt";
-    private final String destinationDirectoryLocation = "src/test/resources/destinationDirectory";
+    private final String destinationDirectoryLocation = "src/test/resources/destinationDirectory3";
 
     @BeforeEach
     public void createDirectoryWithSubdirectoryAndFile() throws IOException {
diff --git a/core-java-modules/core-java-io-3/src/test/java/com/baeldung/copydirectory/CoreOldUnitTest.java b/core-java-modules/core-java-io-3/src/test/java/com/baeldung/copydirectory/CoreOldUnitTest.java
index 53ae216399..1aaca066a0 100644
--- a/core-java-modules/core-java-io-3/src/test/java/com/baeldung/copydirectory/CoreOldUnitTest.java
+++ b/core-java-modules/core-java-io-3/src/test/java/com/baeldung/copydirectory/CoreOldUnitTest.java
@@ -16,10 +16,10 @@ import org.junit.jupiter.api.Test;
 
 public class CoreOldUnitTest {
 
-    private final String sourceDirectoryLocation = "src/test/resources/sourceDirectory";
+    private final String sourceDirectoryLocation = "src/test/resources/sourceDirectory1";
     private final String subDirectoryName = "/childDirectory";
     private final String fileName = "/file.txt";
-    private final String destinationDirectoryLocation = "src/test/resources/destinationDirectory";
+    private final String destinationDirectoryLocation = "src/test/resources/destinationDirectory1";
 
     @BeforeEach
     public void createDirectoryWithSubdirectoryAndFile() throws IOException {
diff --git a/core-java-modules/core-java-io-3/src/test/java/com/baeldung/copydirectory/JavaNioUnitTest.java b/core-java-modules/core-java-io-3/src/test/java/com/baeldung/copydirectory/JavaNioUnitTest.java
index 8d1eea53c9..3293e90c0c 100644
--- a/core-java-modules/core-java-io-3/src/test/java/com/baeldung/copydirectory/JavaNioUnitTest.java
+++ b/core-java-modules/core-java-io-3/src/test/java/com/baeldung/copydirectory/JavaNioUnitTest.java
@@ -16,10 +16,10 @@ import org.junit.jupiter.api.Test;
 
 public class JavaNioUnitTest {
 
-    private final String sourceDirectoryLocation = "src/test/resources/sourceDirectory";
+    private final String sourceDirectoryLocation = "src/test/resources/sourceDirectory2";
     private final String subDirectoryName = "/childDirectory";
     private final String fileName = "/file.txt";
-    private final String destinationDirectoryLocation = "src/test/resources/destinationDirectory";
+    private final String destinationDirectoryLocation = "src/test/resources/destinationDirectory2";
 
     @BeforeEach
     public void createDirectoryWithSubdirectoryAndFile() throws IOException {

From dbe203e40aaab48257567e017d664bcda8ff6e5e Mon Sep 17 00:00:00 2001
From: Trixi Turny <writetotrixi@gmail.com>
Date: Wed, 12 Aug 2020 19:22:31 +0100
Subject: [PATCH 080/156] BAEL-4321 move to new module and use BDD for test
 names

---
 .../java/yamltopojo/demo/DemoApplicationTests.java  | 13 -------------
 .../spring-boot-data-2}/README.md                   |  0
 .../spring-boot-data-2}/pom.xml                     |  0
 .../main/java/yamltopojo/demo/DemoApplication.java  |  0
 .../yamltopojo/demo/config/TshirtSizeConfig.java    |  0
 .../demo/controller/TshirtSizeController.java       |  2 +-
 .../yamltopojo/demo/service/SizeConverterImpl.java  |  4 ++--
 .../demo/service/SizeConverterService.java          |  0
 .../src/main/resources/application.yml              |  0
 .../demo/controller/TshirtSizeControllerTest.java   |  4 ++--
 10 files changed, 5 insertions(+), 18 deletions(-)
 delete mode 100644 configuration/yaml-to-pojo/src/test/java/yamltopojo/demo/DemoApplicationTests.java
 rename {configuration/yaml-to-pojo => spring-boot-modules/spring-boot-data-2}/README.md (100%)
 rename {configuration/yaml-to-pojo => spring-boot-modules/spring-boot-data-2}/pom.xml (100%)
 rename {configuration/yaml-to-pojo => spring-boot-modules/spring-boot-data-2}/src/main/java/yamltopojo/demo/DemoApplication.java (100%)
 rename {configuration/yaml-to-pojo => spring-boot-modules/spring-boot-data-2}/src/main/java/yamltopojo/demo/config/TshirtSizeConfig.java (100%)
 rename {configuration/yaml-to-pojo => spring-boot-modules/spring-boot-data-2}/src/main/java/yamltopojo/demo/controller/TshirtSizeController.java (93%)
 rename {configuration/yaml-to-pojo => spring-boot-modules/spring-boot-data-2}/src/main/java/yamltopojo/demo/service/SizeConverterImpl.java (87%)
 rename {configuration/yaml-to-pojo => spring-boot-modules/spring-boot-data-2}/src/main/java/yamltopojo/demo/service/SizeConverterService.java (100%)
 rename {configuration/yaml-to-pojo => spring-boot-modules/spring-boot-data-2}/src/main/resources/application.yml (100%)
 rename {configuration/yaml-to-pojo => spring-boot-modules/spring-boot-data-2}/src/test/java/yamltopojo/demo/controller/TshirtSizeControllerTest.java (89%)

diff --git a/configuration/yaml-to-pojo/src/test/java/yamltopojo/demo/DemoApplicationTests.java b/configuration/yaml-to-pojo/src/test/java/yamltopojo/demo/DemoApplicationTests.java
deleted file mode 100644
index dfe980c05c..0000000000
--- a/configuration/yaml-to-pojo/src/test/java/yamltopojo/demo/DemoApplicationTests.java
+++ /dev/null
@@ -1,13 +0,0 @@
-package yamltopojo.demo;
-
-import org.junit.jupiter.api.Test;
-import org.springframework.boot.test.context.SpringBootTest;
-
-@SpringBootTest
-class DemoApplicationTests {
-
-	@Test
-	void contextLoads() {
-	}
-
-}
diff --git a/configuration/yaml-to-pojo/README.md b/spring-boot-modules/spring-boot-data-2/README.md
similarity index 100%
rename from configuration/yaml-to-pojo/README.md
rename to spring-boot-modules/spring-boot-data-2/README.md
diff --git a/configuration/yaml-to-pojo/pom.xml b/spring-boot-modules/spring-boot-data-2/pom.xml
similarity index 100%
rename from configuration/yaml-to-pojo/pom.xml
rename to spring-boot-modules/spring-boot-data-2/pom.xml
diff --git a/configuration/yaml-to-pojo/src/main/java/yamltopojo/demo/DemoApplication.java b/spring-boot-modules/spring-boot-data-2/src/main/java/yamltopojo/demo/DemoApplication.java
similarity index 100%
rename from configuration/yaml-to-pojo/src/main/java/yamltopojo/demo/DemoApplication.java
rename to spring-boot-modules/spring-boot-data-2/src/main/java/yamltopojo/demo/DemoApplication.java
diff --git a/configuration/yaml-to-pojo/src/main/java/yamltopojo/demo/config/TshirtSizeConfig.java b/spring-boot-modules/spring-boot-data-2/src/main/java/yamltopojo/demo/config/TshirtSizeConfig.java
similarity index 100%
rename from configuration/yaml-to-pojo/src/main/java/yamltopojo/demo/config/TshirtSizeConfig.java
rename to spring-boot-modules/spring-boot-data-2/src/main/java/yamltopojo/demo/config/TshirtSizeConfig.java
diff --git a/configuration/yaml-to-pojo/src/main/java/yamltopojo/demo/controller/TshirtSizeController.java b/spring-boot-modules/spring-boot-data-2/src/main/java/yamltopojo/demo/controller/TshirtSizeController.java
similarity index 93%
rename from configuration/yaml-to-pojo/src/main/java/yamltopojo/demo/controller/TshirtSizeController.java
rename to spring-boot-modules/spring-boot-data-2/src/main/java/yamltopojo/demo/controller/TshirtSizeController.java
index d555549bd4..3504579504 100644
--- a/configuration/yaml-to-pojo/src/main/java/yamltopojo/demo/controller/TshirtSizeController.java
+++ b/spring-boot-modules/spring-boot-data-2/src/main/java/yamltopojo/demo/controller/TshirtSizeController.java
@@ -7,7 +7,7 @@ import yamltopojo.demo.service.SizeConverterService;
 @RequestMapping(value = "/")
 public class TshirtSizeController {
 
-    private SizeConverterService service;
+    private final SizeConverterService service;
 
     public TshirtSizeController(SizeConverterService service) {
         this.service = service;
diff --git a/configuration/yaml-to-pojo/src/main/java/yamltopojo/demo/service/SizeConverterImpl.java b/spring-boot-modules/spring-boot-data-2/src/main/java/yamltopojo/demo/service/SizeConverterImpl.java
similarity index 87%
rename from configuration/yaml-to-pojo/src/main/java/yamltopojo/demo/service/SizeConverterImpl.java
rename to spring-boot-modules/spring-boot-data-2/src/main/java/yamltopojo/demo/service/SizeConverterImpl.java
index 8f95e4253b..829950433e 100644
--- a/configuration/yaml-to-pojo/src/main/java/yamltopojo/demo/service/SizeConverterImpl.java
+++ b/spring-boot-modules/spring-boot-data-2/src/main/java/yamltopojo/demo/service/SizeConverterImpl.java
@@ -7,7 +7,7 @@ import yamltopojo.demo.config.TshirtSizeConfig;
 @Service
 public class SizeConverterImpl implements SizeConverterService {
 
-    private TshirtSizeConfig tshirtSizeConfig;
+    private final TshirtSizeConfig tshirtSizeConfig;
 
     public SizeConverterImpl(TshirtSizeConfig tshirtSizeConfig) {
         this.tshirtSizeConfig = tshirtSizeConfig;
@@ -17,6 +17,6 @@ public class SizeConverterImpl implements SizeConverterService {
         if(countryCode == null) {
             return tshirtSizeConfig.getSimpleMapping().get(label);
         }
-        return tshirtSizeConfig.getComplexMapping().get(label).get(countryCode);
+        return tshirtSizeConfig.getComplexMapping().get(label).get(countryCode.toLowerCase());
     }
 }
diff --git a/configuration/yaml-to-pojo/src/main/java/yamltopojo/demo/service/SizeConverterService.java b/spring-boot-modules/spring-boot-data-2/src/main/java/yamltopojo/demo/service/SizeConverterService.java
similarity index 100%
rename from configuration/yaml-to-pojo/src/main/java/yamltopojo/demo/service/SizeConverterService.java
rename to spring-boot-modules/spring-boot-data-2/src/main/java/yamltopojo/demo/service/SizeConverterService.java
diff --git a/configuration/yaml-to-pojo/src/main/resources/application.yml b/spring-boot-modules/spring-boot-data-2/src/main/resources/application.yml
similarity index 100%
rename from configuration/yaml-to-pojo/src/main/resources/application.yml
rename to spring-boot-modules/spring-boot-data-2/src/main/resources/application.yml
diff --git a/configuration/yaml-to-pojo/src/test/java/yamltopojo/demo/controller/TshirtSizeControllerTest.java b/spring-boot-modules/spring-boot-data-2/src/test/java/yamltopojo/demo/controller/TshirtSizeControllerTest.java
similarity index 89%
rename from configuration/yaml-to-pojo/src/test/java/yamltopojo/demo/controller/TshirtSizeControllerTest.java
rename to spring-boot-modules/spring-boot-data-2/src/test/java/yamltopojo/demo/controller/TshirtSizeControllerTest.java
index 3c1ef6dff5..ae92d7d57f 100644
--- a/configuration/yaml-to-pojo/src/test/java/yamltopojo/demo/controller/TshirtSizeControllerTest.java
+++ b/spring-boot-modules/spring-boot-data-2/src/test/java/yamltopojo/demo/controller/TshirtSizeControllerTest.java
@@ -20,14 +20,14 @@ class TshirtSizeControllerTest {
     private TshirtSizeController tested;
 
     @Test
-    void convertSize() {
+    void givenSizeConverter_whenLabelIsSandCountryCodeIsFr_thenReturnCorrectSize() {
 
         // Given
         String label = "S";
         String countryCode = "fr";
         int result = 36;
 
-        //
+        // When
         when(service.convertSize(label, countryCode)).thenReturn(result);
         int actual = tested.convertSize(label, countryCode);
 

From 986566727c3d4ee908271c5978de246140525e83 Mon Sep 17 00:00:00 2001
From: Krzysiek <krzysztofwoyke@gmail.com>
Date: Wed, 12 Aug 2020 21:40:45 +0200
Subject: [PATCH 081/156] JAVA-1640: Get rid of the overriden
 spring-boot.version property

---
 spring-5-security-oauth/pom.xml | 4 +---
 1 file changed, 1 insertion(+), 3 deletions(-)

diff --git a/spring-5-security-oauth/pom.xml b/spring-5-security-oauth/pom.xml
index 40d54bf668..325aacea86 100644
--- a/spring-5-security-oauth/pom.xml
+++ b/spring-5-security-oauth/pom.xml
@@ -37,7 +37,7 @@
         <dependency>
             <groupId>org.springframework.security.oauth.boot</groupId>
             <artifactId>spring-security-oauth2-autoconfigure</artifactId>
-            <version>${oauth-auto.version}</version>
+            <version>${spring-boot.version}</version>
         </dependency>
         <dependency>
             <groupId>org.springframework.security</groupId>
@@ -65,8 +65,6 @@
     </dependencies>
 	
     <properties>
-        <spring-boot.version>2.1.0.RELEASE</spring-boot.version>
-        <oauth-auto.version>2.1.0.RELEASE</oauth-auto.version>
         <start-class>com.baeldung.oauth2.SpringOAuthApplication</start-class>
     </properties>
 

From 5b3ffa4424ac1af6df151dc6ff77cc6a64dfa4ef Mon Sep 17 00:00:00 2001
From: Trixi Turny <writetotrixi@gmail.com>
Date: Wed, 12 Aug 2020 21:16:32 +0100
Subject: [PATCH 082/156] BAEL-4321 correct parent in pom and follow test
 naming convention

---
 spring-boot-modules/spring-boot-data-2/pom.xml   | 16 ++++++++--------
 .../controller/TshirtSizeControllerTest.java     |  4 ++--
 2 files changed, 10 insertions(+), 10 deletions(-)

diff --git a/spring-boot-modules/spring-boot-data-2/pom.xml b/spring-boot-modules/spring-boot-data-2/pom.xml
index f6b55718be..0baaf292e8 100644
--- a/spring-boot-modules/spring-boot-data-2/pom.xml
+++ b/spring-boot-modules/spring-boot-data-2/pom.xml
@@ -3,16 +3,16 @@
 	xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 https://maven.apache.org/xsd/maven-4.0.0.xsd">
 	<modelVersion>4.0.0</modelVersion>
 	<parent>
-		<groupId>org.springframework.boot</groupId>
-		<artifactId>spring-boot-starter-parent</artifactId>
-		<version>2.3.2.RELEASE</version>
-		<relativePath/> <!-- lookup parent from repository -->
+		<groupId>com.baeldung.spring-boot-modules</groupId>
+		<artifactId>spring-boot-modules</artifactId>
+		<version>1.0.0-SNAPSHOT</version>
+		<relativePath>../</relativePath>
 	</parent>
-	<groupId>yaml-to-pojo</groupId>
-	<artifactId>demo</artifactId>
+
+	<artifactId>spring-boot-data-2</artifactId>
 	<version>0.0.1-SNAPSHOT</version>
-	<name>demo</name>
-	<description>Demo project for YAML into POJO</description>
+	<name>spring-boot-data-2</name>
+	<description>Spring Boot Data Module</description>
 
 	<properties>
 		<java.version>1.8</java.version>
diff --git a/spring-boot-modules/spring-boot-data-2/src/test/java/yamltopojo/demo/controller/TshirtSizeControllerTest.java b/spring-boot-modules/spring-boot-data-2/src/test/java/yamltopojo/demo/controller/TshirtSizeControllerTest.java
index ae92d7d57f..eb6f896be9 100644
--- a/spring-boot-modules/spring-boot-data-2/src/test/java/yamltopojo/demo/controller/TshirtSizeControllerTest.java
+++ b/spring-boot-modules/spring-boot-data-2/src/test/java/yamltopojo/demo/controller/TshirtSizeControllerTest.java
@@ -11,7 +11,7 @@ import static org.junit.jupiter.api.Assertions.*;
 import static org.mockito.Mockito.when;
 
 @ExtendWith(MockitoExtension.class)
-class TshirtSizeControllerTest {
+class TshirtSizeControllerUnitTest {
 
     @Mock
     private SizeConverterService service;
@@ -20,7 +20,7 @@ class TshirtSizeControllerTest {
     private TshirtSizeController tested;
 
     @Test
-    void givenSizeConverter_whenLabelIsSandCountryCodeIsFr_thenReturnCorrectSize() {
+    void whenConvertSize_thenOK() {
 
         // Given
         String label = "S";

From 7e1461c40a650964af58464acb27d2b48da11b7c Mon Sep 17 00:00:00 2001
From: Trixi Turny <writetotrixi@gmail.com>
Date: Wed, 12 Aug 2020 22:00:11 +0100
Subject: [PATCH 083/156] BAEL-4321 fix package name

---
 .../demo => com/baeldung/boot/data}/DemoApplication.java          | 0
 .../demo => com/baeldung/boot/data}/config/TshirtSizeConfig.java  | 0
 .../baeldung/boot/data}/controller/TshirtSizeController.java      | 0
 .../baeldung/boot/data}/service/SizeConverterImpl.java            | 0
 .../baeldung/boot/data}/service/SizeConverterService.java         | 0
 .../baeldung/boot/data}/controller/TshirtSizeControllerTest.java  | 0
 6 files changed, 0 insertions(+), 0 deletions(-)
 rename spring-boot-modules/spring-boot-data-2/src/main/java/{yamltopojo/demo => com/baeldung/boot/data}/DemoApplication.java (100%)
 rename spring-boot-modules/spring-boot-data-2/src/main/java/{yamltopojo/demo => com/baeldung/boot/data}/config/TshirtSizeConfig.java (100%)
 rename spring-boot-modules/spring-boot-data-2/src/main/java/{yamltopojo/demo => com/baeldung/boot/data}/controller/TshirtSizeController.java (100%)
 rename spring-boot-modules/spring-boot-data-2/src/main/java/{yamltopojo/demo => com/baeldung/boot/data}/service/SizeConverterImpl.java (100%)
 rename spring-boot-modules/spring-boot-data-2/src/main/java/{yamltopojo/demo => com/baeldung/boot/data}/service/SizeConverterService.java (100%)
 rename spring-boot-modules/spring-boot-data-2/src/test/java/{yamltopojo/demo => com/baeldung/boot/data}/controller/TshirtSizeControllerTest.java (100%)

diff --git a/spring-boot-modules/spring-boot-data-2/src/main/java/yamltopojo/demo/DemoApplication.java b/spring-boot-modules/spring-boot-data-2/src/main/java/com/baeldung/boot/data/DemoApplication.java
similarity index 100%
rename from spring-boot-modules/spring-boot-data-2/src/main/java/yamltopojo/demo/DemoApplication.java
rename to spring-boot-modules/spring-boot-data-2/src/main/java/com/baeldung/boot/data/DemoApplication.java
diff --git a/spring-boot-modules/spring-boot-data-2/src/main/java/yamltopojo/demo/config/TshirtSizeConfig.java b/spring-boot-modules/spring-boot-data-2/src/main/java/com/baeldung/boot/data/config/TshirtSizeConfig.java
similarity index 100%
rename from spring-boot-modules/spring-boot-data-2/src/main/java/yamltopojo/demo/config/TshirtSizeConfig.java
rename to spring-boot-modules/spring-boot-data-2/src/main/java/com/baeldung/boot/data/config/TshirtSizeConfig.java
diff --git a/spring-boot-modules/spring-boot-data-2/src/main/java/yamltopojo/demo/controller/TshirtSizeController.java b/spring-boot-modules/spring-boot-data-2/src/main/java/com/baeldung/boot/data/controller/TshirtSizeController.java
similarity index 100%
rename from spring-boot-modules/spring-boot-data-2/src/main/java/yamltopojo/demo/controller/TshirtSizeController.java
rename to spring-boot-modules/spring-boot-data-2/src/main/java/com/baeldung/boot/data/controller/TshirtSizeController.java
diff --git a/spring-boot-modules/spring-boot-data-2/src/main/java/yamltopojo/demo/service/SizeConverterImpl.java b/spring-boot-modules/spring-boot-data-2/src/main/java/com/baeldung/boot/data/service/SizeConverterImpl.java
similarity index 100%
rename from spring-boot-modules/spring-boot-data-2/src/main/java/yamltopojo/demo/service/SizeConverterImpl.java
rename to spring-boot-modules/spring-boot-data-2/src/main/java/com/baeldung/boot/data/service/SizeConverterImpl.java
diff --git a/spring-boot-modules/spring-boot-data-2/src/main/java/yamltopojo/demo/service/SizeConverterService.java b/spring-boot-modules/spring-boot-data-2/src/main/java/com/baeldung/boot/data/service/SizeConverterService.java
similarity index 100%
rename from spring-boot-modules/spring-boot-data-2/src/main/java/yamltopojo/demo/service/SizeConverterService.java
rename to spring-boot-modules/spring-boot-data-2/src/main/java/com/baeldung/boot/data/service/SizeConverterService.java
diff --git a/spring-boot-modules/spring-boot-data-2/src/test/java/yamltopojo/demo/controller/TshirtSizeControllerTest.java b/spring-boot-modules/spring-boot-data-2/src/test/java/com/baeldung/boot/data/controller/TshirtSizeControllerTest.java
similarity index 100%
rename from spring-boot-modules/spring-boot-data-2/src/test/java/yamltopojo/demo/controller/TshirtSizeControllerTest.java
rename to spring-boot-modules/spring-boot-data-2/src/test/java/com/baeldung/boot/data/controller/TshirtSizeControllerTest.java

From eb4ce37f31a2925791f02d3e810bcd1103586d43 Mon Sep 17 00:00:00 2001
From: Rutuja Joshi <67615932+rutujavjoshi@users.noreply.github.com>
Date: Thu, 13 Aug 2020 08:31:19 +0530
Subject: [PATCH 084/156] Update MainMenuUnitTest.java

Updated the method name to follow BDD conventions
---
 .../baeldung/exceptions/nosuchmethoderror/MainMenuUnitTest.java | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/core-java-modules/core-java-exceptions/src/test/java/com/baeldung/exceptions/nosuchmethoderror/MainMenuUnitTest.java b/core-java-modules/core-java-exceptions/src/test/java/com/baeldung/exceptions/nosuchmethoderror/MainMenuUnitTest.java
index e9aef1b484..7e53fa9c0e 100644
--- a/core-java-modules/core-java-exceptions/src/test/java/com/baeldung/exceptions/nosuchmethoderror/MainMenuUnitTest.java
+++ b/core-java-modules/core-java-exceptions/src/test/java/com/baeldung/exceptions/nosuchmethoderror/MainMenuUnitTest.java
@@ -7,7 +7,7 @@ import org.junit.jupiter.api.Test;
 class MainMenuUnitTest {
 
 	@Test
-	void testgetSpecials() {
+	void whenGetSpecials_thenNotNull() {
 		assertNotNull(MainMenu.getSpecials());
 	} 
  

From b94d29a1cc57ada0d4ee3fc0ce31aaa70359c3aa Mon Sep 17 00:00:00 2001
From: Trixi Turny <writetotrixi@gmail.com>
Date: Thu, 13 Aug 2020 07:19:44 +0100
Subject: [PATCH 085/156] BAEL-4321 fix package name everywhere

---
 .../src/main/java/com/baeldung/boot/data/DemoApplication.java | 4 ++--
 .../java/com/baeldung/boot/data/config/TshirtSizeConfig.java  | 2 +-
 .../baeldung/boot/data/controller/TshirtSizeController.java   | 4 ++--
 .../com/baeldung/boot/data/service/SizeConverterImpl.java     | 4 ++--
 .../com/baeldung/boot/data/service/SizeConverterService.java  | 2 +-
 .../boot/data/controller/TshirtSizeControllerTest.java        | 4 ++--
 6 files changed, 10 insertions(+), 10 deletions(-)

diff --git a/spring-boot-modules/spring-boot-data-2/src/main/java/com/baeldung/boot/data/DemoApplication.java b/spring-boot-modules/spring-boot-data-2/src/main/java/com/baeldung/boot/data/DemoApplication.java
index ec8df793c2..125cba6283 100644
--- a/spring-boot-modules/spring-boot-data-2/src/main/java/com/baeldung/boot/data/DemoApplication.java
+++ b/spring-boot-modules/spring-boot-data-2/src/main/java/com/baeldung/boot/data/DemoApplication.java
@@ -1,9 +1,9 @@
-package yamltopojo.demo;
+package com.baeldung.boot.data;
 
+import com.baeldung.boot.data.config.TshirtSizeConfig;
 import org.springframework.boot.SpringApplication;
 import org.springframework.boot.autoconfigure.SpringBootApplication;
 import org.springframework.boot.context.properties.EnableConfigurationProperties;
-import yamltopojo.demo.config.TshirtSizeConfig;
 
 @SpringBootApplication
 @EnableConfigurationProperties(TshirtSizeConfig.class)
diff --git a/spring-boot-modules/spring-boot-data-2/src/main/java/com/baeldung/boot/data/config/TshirtSizeConfig.java b/spring-boot-modules/spring-boot-data-2/src/main/java/com/baeldung/boot/data/config/TshirtSizeConfig.java
index 8f8d2e5b39..000f5b6826 100644
--- a/spring-boot-modules/spring-boot-data-2/src/main/java/com/baeldung/boot/data/config/TshirtSizeConfig.java
+++ b/spring-boot-modules/spring-boot-data-2/src/main/java/com/baeldung/boot/data/config/TshirtSizeConfig.java
@@ -1,4 +1,4 @@
-package yamltopojo.demo.config;
+package com.baeldung.boot.data.config;
 
 import org.springframework.boot.context.properties.ConfigurationProperties;
 
diff --git a/spring-boot-modules/spring-boot-data-2/src/main/java/com/baeldung/boot/data/controller/TshirtSizeController.java b/spring-boot-modules/spring-boot-data-2/src/main/java/com/baeldung/boot/data/controller/TshirtSizeController.java
index 3504579504..6446a17317 100644
--- a/spring-boot-modules/spring-boot-data-2/src/main/java/com/baeldung/boot/data/controller/TshirtSizeController.java
+++ b/spring-boot-modules/spring-boot-data-2/src/main/java/com/baeldung/boot/data/controller/TshirtSizeController.java
@@ -1,7 +1,7 @@
-package yamltopojo.demo.controller;
+package com.baeldung.boot.data.controller;
 
 import org.springframework.web.bind.annotation.*;
-import yamltopojo.demo.service.SizeConverterService;
+import com.baeldung.boot.data.service.SizeConverterService;
 
 @RestController
 @RequestMapping(value = "/")
diff --git a/spring-boot-modules/spring-boot-data-2/src/main/java/com/baeldung/boot/data/service/SizeConverterImpl.java b/spring-boot-modules/spring-boot-data-2/src/main/java/com/baeldung/boot/data/service/SizeConverterImpl.java
index 829950433e..ccb5a06da4 100644
--- a/spring-boot-modules/spring-boot-data-2/src/main/java/com/baeldung/boot/data/service/SizeConverterImpl.java
+++ b/spring-boot-modules/spring-boot-data-2/src/main/java/com/baeldung/boot/data/service/SizeConverterImpl.java
@@ -1,7 +1,7 @@
-package yamltopojo.demo.service;
+package com.baeldung.boot.data.service;
 
 import org.springframework.stereotype.Service;
-import yamltopojo.demo.config.TshirtSizeConfig;
+import com.baeldung.boot.data.config.TshirtSizeConfig;
 
 
 @Service
diff --git a/spring-boot-modules/spring-boot-data-2/src/main/java/com/baeldung/boot/data/service/SizeConverterService.java b/spring-boot-modules/spring-boot-data-2/src/main/java/com/baeldung/boot/data/service/SizeConverterService.java
index 3e24681cbe..91cf2bf0b4 100644
--- a/spring-boot-modules/spring-boot-data-2/src/main/java/com/baeldung/boot/data/service/SizeConverterService.java
+++ b/spring-boot-modules/spring-boot-data-2/src/main/java/com/baeldung/boot/data/service/SizeConverterService.java
@@ -1,4 +1,4 @@
-package yamltopojo.demo.service;
+package com.baeldung.boot.data.service;
 
 
 public interface SizeConverterService {
diff --git a/spring-boot-modules/spring-boot-data-2/src/test/java/com/baeldung/boot/data/controller/TshirtSizeControllerTest.java b/spring-boot-modules/spring-boot-data-2/src/test/java/com/baeldung/boot/data/controller/TshirtSizeControllerTest.java
index eb6f896be9..1d60eb41c0 100644
--- a/spring-boot-modules/spring-boot-data-2/src/test/java/com/baeldung/boot/data/controller/TshirtSizeControllerTest.java
+++ b/spring-boot-modules/spring-boot-data-2/src/test/java/com/baeldung/boot/data/controller/TshirtSizeControllerTest.java
@@ -1,11 +1,11 @@
-package yamltopojo.demo.controller;
+package com.baeldung.boot.data.controller;
 
 import org.junit.jupiter.api.Test;
 import org.junit.jupiter.api.extension.ExtendWith;
 import org.mockito.InjectMocks;
 import org.mockito.Mock;
 import org.mockito.junit.jupiter.MockitoExtension;
-import yamltopojo.demo.service.SizeConverterService;
+import com.baeldung.boot.data.service.SizeConverterService;
 
 import static org.junit.jupiter.api.Assertions.*;
 import static org.mockito.Mockito.when;

From 01b61a6bf01dce1fbba137dc77641745919cb0ec Mon Sep 17 00:00:00 2001
From: CHANDRAKANT Kumar <kumar.chandrakant@soprabanking.com>
Date: Thu, 13 Aug 2020 11:56:49 +0530
Subject: [PATCH 086/156] Adding source code for article tracked under
 BAEL-4109.

---
 pom.xml                                       |   2 +
 spring-webflux-threads/.gitignore             |  25 ++++
 spring-webflux-threads/README.md              |   7 +
 spring-webflux-threads/pom.xml                |  87 ++++++++++++
 .../com/baeldung/webflux/Application.java     |  13 ++
 .../java/com/baeldung/webflux/Controller.java | 128 ++++++++++++++++++
 .../java/com/baeldung/webflux/Person.java     |  27 ++++
 .../baeldung/webflux/PersonRepository.java    |   6 +
 .../src/main/resources/application.yml        |   7 +
 .../src/main/resources/logback.xml            |  13 ++
 10 files changed, 315 insertions(+)
 create mode 100644 spring-webflux-threads/.gitignore
 create mode 100644 spring-webflux-threads/README.md
 create mode 100644 spring-webflux-threads/pom.xml
 create mode 100644 spring-webflux-threads/src/main/java/com/baeldung/webflux/Application.java
 create mode 100644 spring-webflux-threads/src/main/java/com/baeldung/webflux/Controller.java
 create mode 100644 spring-webflux-threads/src/main/java/com/baeldung/webflux/Person.java
 create mode 100644 spring-webflux-threads/src/main/java/com/baeldung/webflux/PersonRepository.java
 create mode 100644 spring-webflux-threads/src/main/resources/application.yml
 create mode 100644 spring-webflux-threads/src/main/resources/logback.xml

diff --git a/pom.xml b/pom.xml
index a69ffa2798..3565c2dc4b 100644
--- a/pom.xml
+++ b/pom.xml
@@ -556,6 +556,7 @@
 				<module>atomikos</module>
 				<module>reactive-systems</module>
 				<module>slack</module>
+				<module>spring-webflux-threads</module>
             </modules>
 
         </profile>
@@ -1067,6 +1068,7 @@
 				<module>atomikos</module>
 				<module>reactive-systems</module>
 				<module>slack</module>
+				<module>spring-webflux-threads</module>
             </modules>
 
         </profile>
diff --git a/spring-webflux-threads/.gitignore b/spring-webflux-threads/.gitignore
new file mode 100644
index 0000000000..82eca336e3
--- /dev/null
+++ b/spring-webflux-threads/.gitignore
@@ -0,0 +1,25 @@
+/target/
+!.mvn/wrapper/maven-wrapper.jar
+
+### STS ###
+.apt_generated
+.classpath
+.factorypath
+.project
+.settings
+.springBeans
+.sts4-cache
+
+### IntelliJ IDEA ###
+.idea
+*.iws
+*.iml
+*.ipr
+
+### NetBeans ###
+/nbproject/private/
+/build/
+/nbbuild/
+/dist/
+/nbdist/
+/.nb-gradle/
\ No newline at end of file
diff --git a/spring-webflux-threads/README.md b/spring-webflux-threads/README.md
new file mode 100644
index 0000000000..ab64d897cc
--- /dev/null
+++ b/spring-webflux-threads/README.md
@@ -0,0 +1,7 @@
+## Spring WebFlux Concurrency
+
+This module contains articles about consurrency model in Spring WebFlux
+
+### Relevant Articles: 
+
+- [Concurrency in Spring WebFlux]()
diff --git a/spring-webflux-threads/pom.xml b/spring-webflux-threads/pom.xml
new file mode 100644
index 0000000000..e5b5bafd3b
--- /dev/null
+++ b/spring-webflux-threads/pom.xml
@@ -0,0 +1,87 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+         xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
+    <modelVersion>4.0.0</modelVersion>
+    <groupId>com.baeldung.spring</groupId>
+    <artifactId>spring-webflux-threads</artifactId>
+    <version>1.0.0-SNAPSHOT</version>
+    <name>spring-webflux-threads</name>
+    <packaging>jar</packaging>
+    <description>Spring WebFlux AMQP Sample</description>
+
+    <parent>
+        <groupId>com.baeldung</groupId>
+        <artifactId>parent-boot-2</artifactId>
+        <version>0.0.1-SNAPSHOT</version>
+        <relativePath>../parent-boot-2</relativePath>
+    </parent>
+
+    <dependencies>
+        <dependency>
+            <groupId>org.springframework.boot</groupId>
+            <artifactId>spring-boot-starter-webflux</artifactId>
+            <!--
+            <exclusions>
+                <exclusion>
+                    <groupId>org.springframework.boot</groupId>
+                    <artifactId>spring-boot-starter-reactor-netty</artifactId>
+                </exclusion>
+            </exclusions>
+            -->
+        </dependency>
+        <!--
+        <dependency>
+            <groupId>org.springframework.boot</groupId>
+            <artifactId>spring-boot-starter-tomcat</artifactId>
+        </dependency>
+        -->
+        <!--
+        <dependency>
+            <groupId>org.springframework.boot</groupId>
+            <artifactId>spring-boot-starter-jetty</artifactId>
+        </dependency>
+        <dependency>
+            <groupId>org.eclipse.jetty</groupId>
+            <artifactId>jetty-reactive-httpclient</artifactId>
+        </dependency>
+        -->
+        <dependency>
+            <groupId>io.reactivex.rxjava2</groupId>
+            <artifactId>rxjava</artifactId>
+            <version>2.2.19</version>
+        </dependency>
+        <dependency>
+            <groupId>org.springframework.boot</groupId>
+            <artifactId>spring-boot-starter-data-mongodb-reactive</artifactId>
+        </dependency>
+        <dependency>
+            <groupId>io.projectreactor.kafka</groupId>
+            <artifactId>reactor-kafka</artifactId>
+            <version>1.2.2.RELEASE</version>
+        </dependency>
+        <dependency>
+            <groupId>com.fasterxml.jackson.core</groupId>
+            <artifactId>jackson-databind</artifactId>
+        </dependency>
+        <dependency>
+            <groupId>org.springframework.boot</groupId>
+            <artifactId>spring-boot-starter-test</artifactId>
+            <scope>test</scope>
+        </dependency>
+        <dependency>
+            <groupId>io.projectreactor</groupId>
+            <artifactId>reactor-test</artifactId>
+            <scope>test</scope>
+        </dependency>
+    </dependencies>
+
+    <build>
+        <plugins>
+            <plugin>
+                <groupId>org.springframework.boot</groupId>
+                <artifactId>spring-boot-maven-plugin</artifactId>
+            </plugin>
+        </plugins>
+    </build>
+
+</project>
diff --git a/spring-webflux-threads/src/main/java/com/baeldung/webflux/Application.java b/spring-webflux-threads/src/main/java/com/baeldung/webflux/Application.java
new file mode 100644
index 0000000000..1dfa00eae0
--- /dev/null
+++ b/spring-webflux-threads/src/main/java/com/baeldung/webflux/Application.java
@@ -0,0 +1,13 @@
+package com.baeldung.webflux;
+
+import org.springframework.boot.SpringApplication;
+import org.springframework.boot.autoconfigure.SpringBootApplication;
+
+@SpringBootApplication
+public class Application {
+
+    public static void main(String[] args) {
+        SpringApplication.run(Application.class, args);
+    }
+
+}
diff --git a/spring-webflux-threads/src/main/java/com/baeldung/webflux/Controller.java b/spring-webflux-threads/src/main/java/com/baeldung/webflux/Controller.java
new file mode 100644
index 0000000000..7036deb998
--- /dev/null
+++ b/spring-webflux-threads/src/main/java/com/baeldung/webflux/Controller.java
@@ -0,0 +1,128 @@
+package com.baeldung.webflux;
+
+import java.util.Arrays;
+import java.util.Collections;
+import java.util.HashMap;
+import java.util.List;
+import java.util.Map;
+import java.util.stream.Collectors;
+
+import org.apache.kafka.clients.consumer.ConsumerConfig;
+import org.apache.kafka.clients.producer.ProducerConfig;
+import org.apache.kafka.clients.producer.ProducerRecord;
+import org.apache.kafka.common.serialization.IntegerDeserializer;
+import org.apache.kafka.common.serialization.IntegerSerializer;
+import org.apache.kafka.common.serialization.StringDeserializer;
+import org.apache.kafka.common.serialization.StringSerializer;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.web.bind.annotation.GetMapping;
+import org.springframework.web.bind.annotation.RequestMapping;
+import org.springframework.web.bind.annotation.RestController;
+import org.springframework.web.reactive.function.client.WebClient;
+
+import io.reactivex.Observable;
+import reactor.core.publisher.Flux;
+import reactor.core.publisher.Mono;
+import reactor.core.scheduler.Scheduler;
+import reactor.core.scheduler.Schedulers;
+import reactor.kafka.receiver.KafkaReceiver;
+import reactor.kafka.receiver.ReceiverOptions;
+import reactor.kafka.receiver.ReceiverRecord;
+import reactor.kafka.sender.KafkaSender;
+import reactor.kafka.sender.SenderOptions;
+import reactor.kafka.sender.SenderRecord;
+
+@RestController
+@RequestMapping("/")
+public class Controller {
+
+    @Autowired
+    private PersonRepository personRepository;
+
+    private Scheduler scheduler = Schedulers.newBoundedElastic(5, 10, "MyThreadGroup");
+
+    private Logger logger = LoggerFactory.getLogger(Controller.class);
+
+    @GetMapping("/threads/webflux")
+    public Flux<String> getThreadsWebflux() {
+        return Flux.fromIterable(getThreads());
+    }
+
+    @GetMapping("/threads/webclient")
+    public Flux<String> getThreadsWebClient() {
+        WebClient.create("http://localhost:8080/index")
+            .get()
+            .retrieve()
+            .bodyToMono(String.class)
+            .subscribeOn(scheduler)
+            .publishOn(scheduler)
+            .doOnNext(s -> logger.info("Response: {}", s))
+            .subscribe();
+        return Flux.fromIterable(getThreads());
+    }
+
+    @GetMapping("/threads/rxjava")
+    public Observable<String> getIndexRxJava() {
+        Observable.fromIterable(Arrays.asList("Hello", "World"))
+            .map(s -> s.toUpperCase())
+            .observeOn(io.reactivex.schedulers.Schedulers.trampoline())
+            .doOnNext(s -> logger.info("String: {}", s))
+            .subscribe();
+        return Observable.fromIterable(getThreads());
+    }
+
+    @GetMapping("/threads/mongodb")
+    public Flux<String> getIndexMongo() {
+        personRepository.findAll()
+            .doOnNext(p -> logger.info("Person: {}", p))
+            .subscribe();
+        return Flux.fromIterable(getThreads());
+    }
+
+    @GetMapping("/thareds/reactor-kafka")
+    public Flux<String> getIndexKafka() {
+        Map<String, Object> producerProps = new HashMap<>();
+        producerProps.put(ProducerConfig.BOOTSTRAP_SERVERS_CONFIG, "localhost:9092");
+        producerProps.put(ProducerConfig.KEY_SERIALIZER_CLASS_CONFIG, IntegerSerializer.class);
+        producerProps.put(ProducerConfig.VALUE_SERIALIZER_CLASS_CONFIG, StringSerializer.class);
+        SenderOptions<Integer, String> senderOptions = SenderOptions.create(producerProps);
+        KafkaSender<Integer, String> sender = KafkaSender.create(senderOptions);
+        Flux<SenderRecord<Integer, String, Integer>> outboundFlux = Flux.range(1, 10)
+            .map(i -> SenderRecord.create(new ProducerRecord<>("reactive-test", i, "Message_" + i), i));
+        sender.send(outboundFlux)
+            .subscribe();
+
+        Map<String, Object> consumerProps = new HashMap<>();
+        consumerProps.put(ConsumerConfig.BOOTSTRAP_SERVERS_CONFIG, "localhost:9092");
+        consumerProps.put(ConsumerConfig.CLIENT_ID_CONFIG, "my-consumer");
+        consumerProps.put(ConsumerConfig.GROUP_ID_CONFIG, "my-group");
+        consumerProps.put(ConsumerConfig.KEY_DESERIALIZER_CLASS_CONFIG, IntegerDeserializer.class);
+        consumerProps.put(ConsumerConfig.VALUE_DESERIALIZER_CLASS_CONFIG, StringDeserializer.class);
+        consumerProps.put(ConsumerConfig.AUTO_OFFSET_RESET_CONFIG, "earliest");
+        ReceiverOptions<Integer, String> receiverOptions = ReceiverOptions.create(consumerProps);
+        receiverOptions.subscription(Collections.singleton("reactive-test"));
+        KafkaReceiver<Integer, String> receiver = KafkaReceiver.create(receiverOptions);
+        Flux<ReceiverRecord<Integer, String>> inboundFlux = receiver.receive();
+        inboundFlux.subscribe(r -> {
+            logger.info("Received message: {}", r.value());
+            r.receiverOffset()
+                .acknowledge();
+        });
+        return Flux.fromIterable(getThreads());
+    }
+
+    @GetMapping("/index")
+    public Mono<String> getIndex() {
+        return Mono.just("Hello world!");
+    }
+
+    private List<String> getThreads() {
+        return Thread.getAllStackTraces()
+            .keySet()
+            .stream()
+            .map(t -> String.format("%-20s \t %s \t %d \t %s\n", t.getName(), t.getState(), t.getPriority(), t.isDaemon() ? "Daemon" : "Normal"))
+            .collect(Collectors.toList());
+    }
+}
diff --git a/spring-webflux-threads/src/main/java/com/baeldung/webflux/Person.java b/spring-webflux-threads/src/main/java/com/baeldung/webflux/Person.java
new file mode 100644
index 0000000000..4c6bd5f585
--- /dev/null
+++ b/spring-webflux-threads/src/main/java/com/baeldung/webflux/Person.java
@@ -0,0 +1,27 @@
+package com.baeldung.webflux;
+
+import org.springframework.data.annotation.Id;
+import org.springframework.data.mongodb.core.mapping.Document;
+
+@Document
+public class Person {
+    @Id
+    String id;
+
+    public Person(String id) {
+        this.id = id;
+    }
+
+    public String getId() {
+        return id;
+    }
+
+    public void setId(String id) {
+        this.id = id;
+    }
+
+    @Override
+    public String toString() {
+        return "Person{" + "id='" + id + '\'' + '}';
+    }
+}
diff --git a/spring-webflux-threads/src/main/java/com/baeldung/webflux/PersonRepository.java b/spring-webflux-threads/src/main/java/com/baeldung/webflux/PersonRepository.java
new file mode 100644
index 0000000000..38fbd3d431
--- /dev/null
+++ b/spring-webflux-threads/src/main/java/com/baeldung/webflux/PersonRepository.java
@@ -0,0 +1,6 @@
+package com.baeldung.webflux;
+
+import org.springframework.data.mongodb.repository.ReactiveMongoRepository;
+
+public interface PersonRepository extends ReactiveMongoRepository<Person, String> {
+}
diff --git a/spring-webflux-threads/src/main/resources/application.yml b/spring-webflux-threads/src/main/resources/application.yml
new file mode 100644
index 0000000000..5addcff6c2
--- /dev/null
+++ b/spring-webflux-threads/src/main/resources/application.yml
@@ -0,0 +1,7 @@
+
+      
+
+  
+      
+    
+    
diff --git a/spring-webflux-threads/src/main/resources/logback.xml b/spring-webflux-threads/src/main/resources/logback.xml
new file mode 100644
index 0000000000..7d900d8ea8
--- /dev/null
+++ b/spring-webflux-threads/src/main/resources/logback.xml
@@ -0,0 +1,13 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<configuration>
+    <appender name="STDOUT" class="ch.qos.logback.core.ConsoleAppender">
+        <encoder>
+            <pattern>%d{HH:mm:ss.SSS} [%thread] %-5level %logger{36} - %msg%n
+            </pattern>
+        </encoder>
+    </appender>
+
+    <root level="INFO">
+        <appender-ref ref="STDOUT" />
+    </root>
+</configuration>
\ No newline at end of file

From bc2352684ac2aef229726f35a8a70e22175522c7 Mon Sep 17 00:00:00 2001
From: Jonathan Cook <jcook@sciops.esa.int>
Date: Thu, 13 Aug 2020 09:12:53 +0200
Subject: [PATCH 087/156] BAEL-4341 - Add AfterEach annotation instead of
 BeforeEach on tearDown method

---
 .../java/com/baeldung/systemout/SystemOutPrintlnUnitTest.java  | 3 ++-
 1 file changed, 2 insertions(+), 1 deletion(-)

diff --git a/testing-modules/testing-libraries/src/test/java/com/baeldung/systemout/SystemOutPrintlnUnitTest.java b/testing-modules/testing-libraries/src/test/java/com/baeldung/systemout/SystemOutPrintlnUnitTest.java
index 3ffc508fa5..549f0ee7b9 100644
--- a/testing-modules/testing-libraries/src/test/java/com/baeldung/systemout/SystemOutPrintlnUnitTest.java
+++ b/testing-modules/testing-libraries/src/test/java/com/baeldung/systemout/SystemOutPrintlnUnitTest.java
@@ -4,6 +4,7 @@ import java.io.ByteArrayOutputStream;
 import java.io.PrintStream;
 
 import org.junit.Assert;
+import org.junit.jupiter.api.AfterEach;
 import org.junit.jupiter.api.BeforeEach;
 import org.junit.jupiter.api.Test;
 
@@ -19,7 +20,7 @@ class SystemOutPrintlnUnitTest {
         System.setOut(new PrintStream(outputStreamCaptor));
     }
 
-    @BeforeEach
+    @AfterEach
     public void tearDown() {
         System.setOut(standardOut);
     }

From 103d36000f726710fea3272164ca2280f8943bc7 Mon Sep 17 00:00:00 2001
From: sampadawagde <sampada.wagde@gmail.com>
Date: Thu, 13 Aug 2020 12:49:18 +0530
Subject: [PATCH 088/156] JAVA-67: renamed spring-security-angular to
 spring-security-web-angular

---
 .../README.md                                                     | 0
 .../client/anguarjs/app.js                                        | 0
 .../client/anguarjs/home/home.controller.js                       | 0
 .../client/anguarjs/home/home.view.html                           | 0
 .../client/anguarjs/index.html                                    | 0
 .../client/anguarjs/login/login.controller.js                     | 0
 .../client/anguarjs/login/login.view.html                         | 0
 .../client/angular2/app.css                                       | 0
 .../client/angular2/app/app.component.html                        | 0
 .../client/angular2/app/app.component.ts                          | 0
 .../client/angular2/app/app.module.ts                             | 0
 .../client/angular2/app/app.routing.ts                            | 0
 .../client/angular2/app/home/home.component.html                  | 0
 .../client/angular2/app/home/home.component.ts                    | 0
 .../client/angular2/app/login/login.component.html                | 0
 .../client/angular2/app/login/login.component.ts                  | 0
 .../client/angular2/app/main.ts                                   | 0
 .../client/angular2/index.html                                    | 0
 .../client/angular2/package.json                                  | 0
 .../client/angular2/systemjs.config.js                            | 0
 .../client/angular2/tsconfig.json                                 | 0
 .../client/angular4/.angular-cli.json                             | 0
 .../client/angular4/package.json                                  | 0
 .../client/angular4/src/app/app.component.html                    | 0
 .../client/angular4/src/app/app.component.ts                      | 0
 .../client/angular4/src/app/app.module.ts                         | 0
 .../client/angular4/src/app/app.routing.ts                        | 0
 .../client/angular4/src/app/home/home.component.html              | 0
 .../client/angular4/src/app/home/home.component.ts                | 0
 .../client/angular4/src/app/login/login.component.html            | 0
 .../client/angular4/src/app/login/login.component.ts              | 0
 .../client/angular4/src/index.html                                | 0
 .../client/angular4/src/main.ts                                   | 0
 .../client/angular4/src/polyfills.ts                              | 0
 .../client/angular4/src/styles.css                                | 0
 .../client/angular4/src/tsconfig.app.json                         | 0
 .../client/angular4/tsconfig.json                                 | 0
 .../client/angular4/tslint.json                                   | 0
 .../client/angular5/.angular-cli.json                             | 0
 .../client/angular5/package.json                                  | 0
 .../client/angular5/src/app/app.component.html                    | 0
 .../client/angular5/src/app/app.component.ts                      | 0
 .../client/angular5/src/app/app.module.ts                         | 0
 .../client/angular5/src/app/app.routing.ts                        | 0
 .../client/angular5/src/app/home/home.component.html              | 0
 .../client/angular5/src/app/home/home.component.ts                | 0
 .../client/angular5/src/app/login/login.component.html            | 0
 .../client/angular5/src/app/login/login.component.ts              | 0
 .../client/angular5/src/index.html                                | 0
 .../client/angular5/src/main.ts                                   | 0
 .../client/angular5/src/polyfills.ts                              | 0
 .../client/angular5/src/styles.css                                | 0
 .../client/angular5/src/tsconfig.app.json                         | 0
 .../client/angular5/tsconfig.json                                 | 0
 .../client/angular5/tslint.json                                   | 0
 .../client/angular6/angular.json                                  | 0
 .../client/angular6/package.json                                  | 0
 .../client/angular6/src/app/app.component.html                    | 0
 .../client/angular6/src/app/app.component.ts                      | 0
 .../client/angular6/src/app/app.module.ts                         | 0
 .../client/angular6/src/app/app.routing.ts                        | 0
 .../client/angular6/src/app/home/home.component.html              | 0
 .../client/angular6/src/app/home/home.component.ts                | 0
 .../client/angular6/src/app/login/login.component.html            | 0
 .../client/angular6/src/app/login/login.component.ts              | 0
 .../client/angular6/src/index.html                                | 0
 .../client/angular6/src/main.ts                                   | 0
 .../client/angular6/src/polyfills.ts                              | 0
 .../client/angular6/src/styles.css                                | 0
 .../client/angular6/src/tsconfig.app.json                         | 0
 .../client/angular6/tsconfig.json                                 | 0
 .../client/angular6/tslint.json                                   | 0
 .../server/pom.xml                                                | 0
 .../basicauth/SpringBootSecurityApplication.java                  | 0
 .../basicauth/config/BasicAuthConfiguration.java                  | 0
 .../springbootsecurityrest/controller/UserController.java         | 0
 .../main/java/com/baeldung/springbootsecurityrest/vo/User.java    | 0
 .../server/src/main/resources/application.properties              | 0
 .../server/src/main/resources/logback.xml                         | 0
 .../server/src/test/java/com/baeldung/SpringContextTest.java      | 0
 .../BasicAuthConfigurationIntegrationTest.java                    | 0
 81 files changed, 0 insertions(+), 0 deletions(-)
 rename spring-security-modules/{spring-security-angular => spring-security-web-angular}/README.md (100%)
 rename spring-security-modules/{spring-security-angular => spring-security-web-angular}/client/anguarjs/app.js (100%)
 rename spring-security-modules/{spring-security-angular => spring-security-web-angular}/client/anguarjs/home/home.controller.js (100%)
 rename spring-security-modules/{spring-security-angular => spring-security-web-angular}/client/anguarjs/home/home.view.html (100%)
 rename spring-security-modules/{spring-security-angular => spring-security-web-angular}/client/anguarjs/index.html (100%)
 rename spring-security-modules/{spring-security-angular => spring-security-web-angular}/client/anguarjs/login/login.controller.js (100%)
 rename spring-security-modules/{spring-security-angular => spring-security-web-angular}/client/anguarjs/login/login.view.html (100%)
 rename spring-security-modules/{spring-security-angular => spring-security-web-angular}/client/angular2/app.css (100%)
 rename spring-security-modules/{spring-security-angular => spring-security-web-angular}/client/angular2/app/app.component.html (100%)
 rename spring-security-modules/{spring-security-angular => spring-security-web-angular}/client/angular2/app/app.component.ts (100%)
 rename spring-security-modules/{spring-security-angular => spring-security-web-angular}/client/angular2/app/app.module.ts (100%)
 rename spring-security-modules/{spring-security-angular => spring-security-web-angular}/client/angular2/app/app.routing.ts (100%)
 rename spring-security-modules/{spring-security-angular => spring-security-web-angular}/client/angular2/app/home/home.component.html (100%)
 rename spring-security-modules/{spring-security-angular => spring-security-web-angular}/client/angular2/app/home/home.component.ts (100%)
 rename spring-security-modules/{spring-security-angular => spring-security-web-angular}/client/angular2/app/login/login.component.html (100%)
 rename spring-security-modules/{spring-security-angular => spring-security-web-angular}/client/angular2/app/login/login.component.ts (100%)
 rename spring-security-modules/{spring-security-angular => spring-security-web-angular}/client/angular2/app/main.ts (100%)
 rename spring-security-modules/{spring-security-angular => spring-security-web-angular}/client/angular2/index.html (100%)
 rename spring-security-modules/{spring-security-angular => spring-security-web-angular}/client/angular2/package.json (100%)
 rename spring-security-modules/{spring-security-angular => spring-security-web-angular}/client/angular2/systemjs.config.js (100%)
 rename spring-security-modules/{spring-security-angular => spring-security-web-angular}/client/angular2/tsconfig.json (100%)
 rename spring-security-modules/{spring-security-angular => spring-security-web-angular}/client/angular4/.angular-cli.json (100%)
 rename spring-security-modules/{spring-security-angular => spring-security-web-angular}/client/angular4/package.json (100%)
 rename spring-security-modules/{spring-security-angular => spring-security-web-angular}/client/angular4/src/app/app.component.html (100%)
 rename spring-security-modules/{spring-security-angular => spring-security-web-angular}/client/angular4/src/app/app.component.ts (100%)
 rename spring-security-modules/{spring-security-angular => spring-security-web-angular}/client/angular4/src/app/app.module.ts (100%)
 rename spring-security-modules/{spring-security-angular => spring-security-web-angular}/client/angular4/src/app/app.routing.ts (100%)
 rename spring-security-modules/{spring-security-angular => spring-security-web-angular}/client/angular4/src/app/home/home.component.html (100%)
 rename spring-security-modules/{spring-security-angular => spring-security-web-angular}/client/angular4/src/app/home/home.component.ts (100%)
 rename spring-security-modules/{spring-security-angular => spring-security-web-angular}/client/angular4/src/app/login/login.component.html (100%)
 rename spring-security-modules/{spring-security-angular => spring-security-web-angular}/client/angular4/src/app/login/login.component.ts (100%)
 rename spring-security-modules/{spring-security-angular => spring-security-web-angular}/client/angular4/src/index.html (100%)
 rename spring-security-modules/{spring-security-angular => spring-security-web-angular}/client/angular4/src/main.ts (100%)
 rename spring-security-modules/{spring-security-angular => spring-security-web-angular}/client/angular4/src/polyfills.ts (100%)
 rename spring-security-modules/{spring-security-angular => spring-security-web-angular}/client/angular4/src/styles.css (100%)
 rename spring-security-modules/{spring-security-angular => spring-security-web-angular}/client/angular4/src/tsconfig.app.json (100%)
 rename spring-security-modules/{spring-security-angular => spring-security-web-angular}/client/angular4/tsconfig.json (100%)
 rename spring-security-modules/{spring-security-angular => spring-security-web-angular}/client/angular4/tslint.json (100%)
 rename spring-security-modules/{spring-security-angular => spring-security-web-angular}/client/angular5/.angular-cli.json (100%)
 rename spring-security-modules/{spring-security-angular => spring-security-web-angular}/client/angular5/package.json (100%)
 rename spring-security-modules/{spring-security-angular => spring-security-web-angular}/client/angular5/src/app/app.component.html (100%)
 rename spring-security-modules/{spring-security-angular => spring-security-web-angular}/client/angular5/src/app/app.component.ts (100%)
 rename spring-security-modules/{spring-security-angular => spring-security-web-angular}/client/angular5/src/app/app.module.ts (100%)
 rename spring-security-modules/{spring-security-angular => spring-security-web-angular}/client/angular5/src/app/app.routing.ts (100%)
 rename spring-security-modules/{spring-security-angular => spring-security-web-angular}/client/angular5/src/app/home/home.component.html (100%)
 rename spring-security-modules/{spring-security-angular => spring-security-web-angular}/client/angular5/src/app/home/home.component.ts (100%)
 rename spring-security-modules/{spring-security-angular => spring-security-web-angular}/client/angular5/src/app/login/login.component.html (100%)
 rename spring-security-modules/{spring-security-angular => spring-security-web-angular}/client/angular5/src/app/login/login.component.ts (100%)
 rename spring-security-modules/{spring-security-angular => spring-security-web-angular}/client/angular5/src/index.html (100%)
 rename spring-security-modules/{spring-security-angular => spring-security-web-angular}/client/angular5/src/main.ts (100%)
 rename spring-security-modules/{spring-security-angular => spring-security-web-angular}/client/angular5/src/polyfills.ts (100%)
 rename spring-security-modules/{spring-security-angular => spring-security-web-angular}/client/angular5/src/styles.css (100%)
 rename spring-security-modules/{spring-security-angular => spring-security-web-angular}/client/angular5/src/tsconfig.app.json (100%)
 rename spring-security-modules/{spring-security-angular => spring-security-web-angular}/client/angular5/tsconfig.json (100%)
 rename spring-security-modules/{spring-security-angular => spring-security-web-angular}/client/angular5/tslint.json (100%)
 rename spring-security-modules/{spring-security-angular => spring-security-web-angular}/client/angular6/angular.json (100%)
 rename spring-security-modules/{spring-security-angular => spring-security-web-angular}/client/angular6/package.json (100%)
 rename spring-security-modules/{spring-security-angular => spring-security-web-angular}/client/angular6/src/app/app.component.html (100%)
 rename spring-security-modules/{spring-security-angular => spring-security-web-angular}/client/angular6/src/app/app.component.ts (100%)
 rename spring-security-modules/{spring-security-angular => spring-security-web-angular}/client/angular6/src/app/app.module.ts (100%)
 rename spring-security-modules/{spring-security-angular => spring-security-web-angular}/client/angular6/src/app/app.routing.ts (100%)
 rename spring-security-modules/{spring-security-angular => spring-security-web-angular}/client/angular6/src/app/home/home.component.html (100%)
 rename spring-security-modules/{spring-security-angular => spring-security-web-angular}/client/angular6/src/app/home/home.component.ts (100%)
 rename spring-security-modules/{spring-security-angular => spring-security-web-angular}/client/angular6/src/app/login/login.component.html (100%)
 rename spring-security-modules/{spring-security-angular => spring-security-web-angular}/client/angular6/src/app/login/login.component.ts (100%)
 rename spring-security-modules/{spring-security-angular => spring-security-web-angular}/client/angular6/src/index.html (100%)
 rename spring-security-modules/{spring-security-angular => spring-security-web-angular}/client/angular6/src/main.ts (100%)
 rename spring-security-modules/{spring-security-angular => spring-security-web-angular}/client/angular6/src/polyfills.ts (100%)
 rename spring-security-modules/{spring-security-angular => spring-security-web-angular}/client/angular6/src/styles.css (100%)
 rename spring-security-modules/{spring-security-angular => spring-security-web-angular}/client/angular6/src/tsconfig.app.json (100%)
 rename spring-security-modules/{spring-security-angular => spring-security-web-angular}/client/angular6/tsconfig.json (100%)
 rename spring-security-modules/{spring-security-angular => spring-security-web-angular}/client/angular6/tslint.json (100%)
 rename spring-security-modules/{spring-security-angular => spring-security-web-angular}/server/pom.xml (100%)
 rename spring-security-modules/{spring-security-angular => spring-security-web-angular}/server/src/main/java/com/baeldung/springbootsecurityrest/basicauth/SpringBootSecurityApplication.java (100%)
 rename spring-security-modules/{spring-security-angular => spring-security-web-angular}/server/src/main/java/com/baeldung/springbootsecurityrest/basicauth/config/BasicAuthConfiguration.java (100%)
 rename spring-security-modules/{spring-security-angular => spring-security-web-angular}/server/src/main/java/com/baeldung/springbootsecurityrest/controller/UserController.java (100%)
 rename spring-security-modules/{spring-security-angular => spring-security-web-angular}/server/src/main/java/com/baeldung/springbootsecurityrest/vo/User.java (100%)
 rename spring-security-modules/{spring-security-angular => spring-security-web-angular}/server/src/main/resources/application.properties (100%)
 rename spring-security-modules/{spring-security-angular => spring-security-web-angular}/server/src/main/resources/logback.xml (100%)
 rename spring-security-modules/{spring-security-angular => spring-security-web-angular}/server/src/test/java/com/baeldung/SpringContextTest.java (100%)
 rename spring-security-modules/{spring-security-angular => spring-security-web-angular}/server/src/test/java/com/baeldung/springbootsecurityrest/BasicAuthConfigurationIntegrationTest.java (100%)

diff --git a/spring-security-modules/spring-security-angular/README.md b/spring-security-modules/spring-security-web-angular/README.md
similarity index 100%
rename from spring-security-modules/spring-security-angular/README.md
rename to spring-security-modules/spring-security-web-angular/README.md
diff --git a/spring-security-modules/spring-security-angular/client/anguarjs/app.js b/spring-security-modules/spring-security-web-angular/client/anguarjs/app.js
similarity index 100%
rename from spring-security-modules/spring-security-angular/client/anguarjs/app.js
rename to spring-security-modules/spring-security-web-angular/client/anguarjs/app.js
diff --git a/spring-security-modules/spring-security-angular/client/anguarjs/home/home.controller.js b/spring-security-modules/spring-security-web-angular/client/anguarjs/home/home.controller.js
similarity index 100%
rename from spring-security-modules/spring-security-angular/client/anguarjs/home/home.controller.js
rename to spring-security-modules/spring-security-web-angular/client/anguarjs/home/home.controller.js
diff --git a/spring-security-modules/spring-security-angular/client/anguarjs/home/home.view.html b/spring-security-modules/spring-security-web-angular/client/anguarjs/home/home.view.html
similarity index 100%
rename from spring-security-modules/spring-security-angular/client/anguarjs/home/home.view.html
rename to spring-security-modules/spring-security-web-angular/client/anguarjs/home/home.view.html
diff --git a/spring-security-modules/spring-security-angular/client/anguarjs/index.html b/spring-security-modules/spring-security-web-angular/client/anguarjs/index.html
similarity index 100%
rename from spring-security-modules/spring-security-angular/client/anguarjs/index.html
rename to spring-security-modules/spring-security-web-angular/client/anguarjs/index.html
diff --git a/spring-security-modules/spring-security-angular/client/anguarjs/login/login.controller.js b/spring-security-modules/spring-security-web-angular/client/anguarjs/login/login.controller.js
similarity index 100%
rename from spring-security-modules/spring-security-angular/client/anguarjs/login/login.controller.js
rename to spring-security-modules/spring-security-web-angular/client/anguarjs/login/login.controller.js
diff --git a/spring-security-modules/spring-security-angular/client/anguarjs/login/login.view.html b/spring-security-modules/spring-security-web-angular/client/anguarjs/login/login.view.html
similarity index 100%
rename from spring-security-modules/spring-security-angular/client/anguarjs/login/login.view.html
rename to spring-security-modules/spring-security-web-angular/client/anguarjs/login/login.view.html
diff --git a/spring-security-modules/spring-security-angular/client/angular2/app.css b/spring-security-modules/spring-security-web-angular/client/angular2/app.css
similarity index 100%
rename from spring-security-modules/spring-security-angular/client/angular2/app.css
rename to spring-security-modules/spring-security-web-angular/client/angular2/app.css
diff --git a/spring-security-modules/spring-security-angular/client/angular2/app/app.component.html b/spring-security-modules/spring-security-web-angular/client/angular2/app/app.component.html
similarity index 100%
rename from spring-security-modules/spring-security-angular/client/angular2/app/app.component.html
rename to spring-security-modules/spring-security-web-angular/client/angular2/app/app.component.html
diff --git a/spring-security-modules/spring-security-angular/client/angular2/app/app.component.ts b/spring-security-modules/spring-security-web-angular/client/angular2/app/app.component.ts
similarity index 100%
rename from spring-security-modules/spring-security-angular/client/angular2/app/app.component.ts
rename to spring-security-modules/spring-security-web-angular/client/angular2/app/app.component.ts
diff --git a/spring-security-modules/spring-security-angular/client/angular2/app/app.module.ts b/spring-security-modules/spring-security-web-angular/client/angular2/app/app.module.ts
similarity index 100%
rename from spring-security-modules/spring-security-angular/client/angular2/app/app.module.ts
rename to spring-security-modules/spring-security-web-angular/client/angular2/app/app.module.ts
diff --git a/spring-security-modules/spring-security-angular/client/angular2/app/app.routing.ts b/spring-security-modules/spring-security-web-angular/client/angular2/app/app.routing.ts
similarity index 100%
rename from spring-security-modules/spring-security-angular/client/angular2/app/app.routing.ts
rename to spring-security-modules/spring-security-web-angular/client/angular2/app/app.routing.ts
diff --git a/spring-security-modules/spring-security-angular/client/angular2/app/home/home.component.html b/spring-security-modules/spring-security-web-angular/client/angular2/app/home/home.component.html
similarity index 100%
rename from spring-security-modules/spring-security-angular/client/angular2/app/home/home.component.html
rename to spring-security-modules/spring-security-web-angular/client/angular2/app/home/home.component.html
diff --git a/spring-security-modules/spring-security-angular/client/angular2/app/home/home.component.ts b/spring-security-modules/spring-security-web-angular/client/angular2/app/home/home.component.ts
similarity index 100%
rename from spring-security-modules/spring-security-angular/client/angular2/app/home/home.component.ts
rename to spring-security-modules/spring-security-web-angular/client/angular2/app/home/home.component.ts
diff --git a/spring-security-modules/spring-security-angular/client/angular2/app/login/login.component.html b/spring-security-modules/spring-security-web-angular/client/angular2/app/login/login.component.html
similarity index 100%
rename from spring-security-modules/spring-security-angular/client/angular2/app/login/login.component.html
rename to spring-security-modules/spring-security-web-angular/client/angular2/app/login/login.component.html
diff --git a/spring-security-modules/spring-security-angular/client/angular2/app/login/login.component.ts b/spring-security-modules/spring-security-web-angular/client/angular2/app/login/login.component.ts
similarity index 100%
rename from spring-security-modules/spring-security-angular/client/angular2/app/login/login.component.ts
rename to spring-security-modules/spring-security-web-angular/client/angular2/app/login/login.component.ts
diff --git a/spring-security-modules/spring-security-angular/client/angular2/app/main.ts b/spring-security-modules/spring-security-web-angular/client/angular2/app/main.ts
similarity index 100%
rename from spring-security-modules/spring-security-angular/client/angular2/app/main.ts
rename to spring-security-modules/spring-security-web-angular/client/angular2/app/main.ts
diff --git a/spring-security-modules/spring-security-angular/client/angular2/index.html b/spring-security-modules/spring-security-web-angular/client/angular2/index.html
similarity index 100%
rename from spring-security-modules/spring-security-angular/client/angular2/index.html
rename to spring-security-modules/spring-security-web-angular/client/angular2/index.html
diff --git a/spring-security-modules/spring-security-angular/client/angular2/package.json b/spring-security-modules/spring-security-web-angular/client/angular2/package.json
similarity index 100%
rename from spring-security-modules/spring-security-angular/client/angular2/package.json
rename to spring-security-modules/spring-security-web-angular/client/angular2/package.json
diff --git a/spring-security-modules/spring-security-angular/client/angular2/systemjs.config.js b/spring-security-modules/spring-security-web-angular/client/angular2/systemjs.config.js
similarity index 100%
rename from spring-security-modules/spring-security-angular/client/angular2/systemjs.config.js
rename to spring-security-modules/spring-security-web-angular/client/angular2/systemjs.config.js
diff --git a/spring-security-modules/spring-security-angular/client/angular2/tsconfig.json b/spring-security-modules/spring-security-web-angular/client/angular2/tsconfig.json
similarity index 100%
rename from spring-security-modules/spring-security-angular/client/angular2/tsconfig.json
rename to spring-security-modules/spring-security-web-angular/client/angular2/tsconfig.json
diff --git a/spring-security-modules/spring-security-angular/client/angular4/.angular-cli.json b/spring-security-modules/spring-security-web-angular/client/angular4/.angular-cli.json
similarity index 100%
rename from spring-security-modules/spring-security-angular/client/angular4/.angular-cli.json
rename to spring-security-modules/spring-security-web-angular/client/angular4/.angular-cli.json
diff --git a/spring-security-modules/spring-security-angular/client/angular4/package.json b/spring-security-modules/spring-security-web-angular/client/angular4/package.json
similarity index 100%
rename from spring-security-modules/spring-security-angular/client/angular4/package.json
rename to spring-security-modules/spring-security-web-angular/client/angular4/package.json
diff --git a/spring-security-modules/spring-security-angular/client/angular4/src/app/app.component.html b/spring-security-modules/spring-security-web-angular/client/angular4/src/app/app.component.html
similarity index 100%
rename from spring-security-modules/spring-security-angular/client/angular4/src/app/app.component.html
rename to spring-security-modules/spring-security-web-angular/client/angular4/src/app/app.component.html
diff --git a/spring-security-modules/spring-security-angular/client/angular4/src/app/app.component.ts b/spring-security-modules/spring-security-web-angular/client/angular4/src/app/app.component.ts
similarity index 100%
rename from spring-security-modules/spring-security-angular/client/angular4/src/app/app.component.ts
rename to spring-security-modules/spring-security-web-angular/client/angular4/src/app/app.component.ts
diff --git a/spring-security-modules/spring-security-angular/client/angular4/src/app/app.module.ts b/spring-security-modules/spring-security-web-angular/client/angular4/src/app/app.module.ts
similarity index 100%
rename from spring-security-modules/spring-security-angular/client/angular4/src/app/app.module.ts
rename to spring-security-modules/spring-security-web-angular/client/angular4/src/app/app.module.ts
diff --git a/spring-security-modules/spring-security-angular/client/angular4/src/app/app.routing.ts b/spring-security-modules/spring-security-web-angular/client/angular4/src/app/app.routing.ts
similarity index 100%
rename from spring-security-modules/spring-security-angular/client/angular4/src/app/app.routing.ts
rename to spring-security-modules/spring-security-web-angular/client/angular4/src/app/app.routing.ts
diff --git a/spring-security-modules/spring-security-angular/client/angular4/src/app/home/home.component.html b/spring-security-modules/spring-security-web-angular/client/angular4/src/app/home/home.component.html
similarity index 100%
rename from spring-security-modules/spring-security-angular/client/angular4/src/app/home/home.component.html
rename to spring-security-modules/spring-security-web-angular/client/angular4/src/app/home/home.component.html
diff --git a/spring-security-modules/spring-security-angular/client/angular4/src/app/home/home.component.ts b/spring-security-modules/spring-security-web-angular/client/angular4/src/app/home/home.component.ts
similarity index 100%
rename from spring-security-modules/spring-security-angular/client/angular4/src/app/home/home.component.ts
rename to spring-security-modules/spring-security-web-angular/client/angular4/src/app/home/home.component.ts
diff --git a/spring-security-modules/spring-security-angular/client/angular4/src/app/login/login.component.html b/spring-security-modules/spring-security-web-angular/client/angular4/src/app/login/login.component.html
similarity index 100%
rename from spring-security-modules/spring-security-angular/client/angular4/src/app/login/login.component.html
rename to spring-security-modules/spring-security-web-angular/client/angular4/src/app/login/login.component.html
diff --git a/spring-security-modules/spring-security-angular/client/angular4/src/app/login/login.component.ts b/spring-security-modules/spring-security-web-angular/client/angular4/src/app/login/login.component.ts
similarity index 100%
rename from spring-security-modules/spring-security-angular/client/angular4/src/app/login/login.component.ts
rename to spring-security-modules/spring-security-web-angular/client/angular4/src/app/login/login.component.ts
diff --git a/spring-security-modules/spring-security-angular/client/angular4/src/index.html b/spring-security-modules/spring-security-web-angular/client/angular4/src/index.html
similarity index 100%
rename from spring-security-modules/spring-security-angular/client/angular4/src/index.html
rename to spring-security-modules/spring-security-web-angular/client/angular4/src/index.html
diff --git a/spring-security-modules/spring-security-angular/client/angular4/src/main.ts b/spring-security-modules/spring-security-web-angular/client/angular4/src/main.ts
similarity index 100%
rename from spring-security-modules/spring-security-angular/client/angular4/src/main.ts
rename to spring-security-modules/spring-security-web-angular/client/angular4/src/main.ts
diff --git a/spring-security-modules/spring-security-angular/client/angular4/src/polyfills.ts b/spring-security-modules/spring-security-web-angular/client/angular4/src/polyfills.ts
similarity index 100%
rename from spring-security-modules/spring-security-angular/client/angular4/src/polyfills.ts
rename to spring-security-modules/spring-security-web-angular/client/angular4/src/polyfills.ts
diff --git a/spring-security-modules/spring-security-angular/client/angular4/src/styles.css b/spring-security-modules/spring-security-web-angular/client/angular4/src/styles.css
similarity index 100%
rename from spring-security-modules/spring-security-angular/client/angular4/src/styles.css
rename to spring-security-modules/spring-security-web-angular/client/angular4/src/styles.css
diff --git a/spring-security-modules/spring-security-angular/client/angular4/src/tsconfig.app.json b/spring-security-modules/spring-security-web-angular/client/angular4/src/tsconfig.app.json
similarity index 100%
rename from spring-security-modules/spring-security-angular/client/angular4/src/tsconfig.app.json
rename to spring-security-modules/spring-security-web-angular/client/angular4/src/tsconfig.app.json
diff --git a/spring-security-modules/spring-security-angular/client/angular4/tsconfig.json b/spring-security-modules/spring-security-web-angular/client/angular4/tsconfig.json
similarity index 100%
rename from spring-security-modules/spring-security-angular/client/angular4/tsconfig.json
rename to spring-security-modules/spring-security-web-angular/client/angular4/tsconfig.json
diff --git a/spring-security-modules/spring-security-angular/client/angular4/tslint.json b/spring-security-modules/spring-security-web-angular/client/angular4/tslint.json
similarity index 100%
rename from spring-security-modules/spring-security-angular/client/angular4/tslint.json
rename to spring-security-modules/spring-security-web-angular/client/angular4/tslint.json
diff --git a/spring-security-modules/spring-security-angular/client/angular5/.angular-cli.json b/spring-security-modules/spring-security-web-angular/client/angular5/.angular-cli.json
similarity index 100%
rename from spring-security-modules/spring-security-angular/client/angular5/.angular-cli.json
rename to spring-security-modules/spring-security-web-angular/client/angular5/.angular-cli.json
diff --git a/spring-security-modules/spring-security-angular/client/angular5/package.json b/spring-security-modules/spring-security-web-angular/client/angular5/package.json
similarity index 100%
rename from spring-security-modules/spring-security-angular/client/angular5/package.json
rename to spring-security-modules/spring-security-web-angular/client/angular5/package.json
diff --git a/spring-security-modules/spring-security-angular/client/angular5/src/app/app.component.html b/spring-security-modules/spring-security-web-angular/client/angular5/src/app/app.component.html
similarity index 100%
rename from spring-security-modules/spring-security-angular/client/angular5/src/app/app.component.html
rename to spring-security-modules/spring-security-web-angular/client/angular5/src/app/app.component.html
diff --git a/spring-security-modules/spring-security-angular/client/angular5/src/app/app.component.ts b/spring-security-modules/spring-security-web-angular/client/angular5/src/app/app.component.ts
similarity index 100%
rename from spring-security-modules/spring-security-angular/client/angular5/src/app/app.component.ts
rename to spring-security-modules/spring-security-web-angular/client/angular5/src/app/app.component.ts
diff --git a/spring-security-modules/spring-security-angular/client/angular5/src/app/app.module.ts b/spring-security-modules/spring-security-web-angular/client/angular5/src/app/app.module.ts
similarity index 100%
rename from spring-security-modules/spring-security-angular/client/angular5/src/app/app.module.ts
rename to spring-security-modules/spring-security-web-angular/client/angular5/src/app/app.module.ts
diff --git a/spring-security-modules/spring-security-angular/client/angular5/src/app/app.routing.ts b/spring-security-modules/spring-security-web-angular/client/angular5/src/app/app.routing.ts
similarity index 100%
rename from spring-security-modules/spring-security-angular/client/angular5/src/app/app.routing.ts
rename to spring-security-modules/spring-security-web-angular/client/angular5/src/app/app.routing.ts
diff --git a/spring-security-modules/spring-security-angular/client/angular5/src/app/home/home.component.html b/spring-security-modules/spring-security-web-angular/client/angular5/src/app/home/home.component.html
similarity index 100%
rename from spring-security-modules/spring-security-angular/client/angular5/src/app/home/home.component.html
rename to spring-security-modules/spring-security-web-angular/client/angular5/src/app/home/home.component.html
diff --git a/spring-security-modules/spring-security-angular/client/angular5/src/app/home/home.component.ts b/spring-security-modules/spring-security-web-angular/client/angular5/src/app/home/home.component.ts
similarity index 100%
rename from spring-security-modules/spring-security-angular/client/angular5/src/app/home/home.component.ts
rename to spring-security-modules/spring-security-web-angular/client/angular5/src/app/home/home.component.ts
diff --git a/spring-security-modules/spring-security-angular/client/angular5/src/app/login/login.component.html b/spring-security-modules/spring-security-web-angular/client/angular5/src/app/login/login.component.html
similarity index 100%
rename from spring-security-modules/spring-security-angular/client/angular5/src/app/login/login.component.html
rename to spring-security-modules/spring-security-web-angular/client/angular5/src/app/login/login.component.html
diff --git a/spring-security-modules/spring-security-angular/client/angular5/src/app/login/login.component.ts b/spring-security-modules/spring-security-web-angular/client/angular5/src/app/login/login.component.ts
similarity index 100%
rename from spring-security-modules/spring-security-angular/client/angular5/src/app/login/login.component.ts
rename to spring-security-modules/spring-security-web-angular/client/angular5/src/app/login/login.component.ts
diff --git a/spring-security-modules/spring-security-angular/client/angular5/src/index.html b/spring-security-modules/spring-security-web-angular/client/angular5/src/index.html
similarity index 100%
rename from spring-security-modules/spring-security-angular/client/angular5/src/index.html
rename to spring-security-modules/spring-security-web-angular/client/angular5/src/index.html
diff --git a/spring-security-modules/spring-security-angular/client/angular5/src/main.ts b/spring-security-modules/spring-security-web-angular/client/angular5/src/main.ts
similarity index 100%
rename from spring-security-modules/spring-security-angular/client/angular5/src/main.ts
rename to spring-security-modules/spring-security-web-angular/client/angular5/src/main.ts
diff --git a/spring-security-modules/spring-security-angular/client/angular5/src/polyfills.ts b/spring-security-modules/spring-security-web-angular/client/angular5/src/polyfills.ts
similarity index 100%
rename from spring-security-modules/spring-security-angular/client/angular5/src/polyfills.ts
rename to spring-security-modules/spring-security-web-angular/client/angular5/src/polyfills.ts
diff --git a/spring-security-modules/spring-security-angular/client/angular5/src/styles.css b/spring-security-modules/spring-security-web-angular/client/angular5/src/styles.css
similarity index 100%
rename from spring-security-modules/spring-security-angular/client/angular5/src/styles.css
rename to spring-security-modules/spring-security-web-angular/client/angular5/src/styles.css
diff --git a/spring-security-modules/spring-security-angular/client/angular5/src/tsconfig.app.json b/spring-security-modules/spring-security-web-angular/client/angular5/src/tsconfig.app.json
similarity index 100%
rename from spring-security-modules/spring-security-angular/client/angular5/src/tsconfig.app.json
rename to spring-security-modules/spring-security-web-angular/client/angular5/src/tsconfig.app.json
diff --git a/spring-security-modules/spring-security-angular/client/angular5/tsconfig.json b/spring-security-modules/spring-security-web-angular/client/angular5/tsconfig.json
similarity index 100%
rename from spring-security-modules/spring-security-angular/client/angular5/tsconfig.json
rename to spring-security-modules/spring-security-web-angular/client/angular5/tsconfig.json
diff --git a/spring-security-modules/spring-security-angular/client/angular5/tslint.json b/spring-security-modules/spring-security-web-angular/client/angular5/tslint.json
similarity index 100%
rename from spring-security-modules/spring-security-angular/client/angular5/tslint.json
rename to spring-security-modules/spring-security-web-angular/client/angular5/tslint.json
diff --git a/spring-security-modules/spring-security-angular/client/angular6/angular.json b/spring-security-modules/spring-security-web-angular/client/angular6/angular.json
similarity index 100%
rename from spring-security-modules/spring-security-angular/client/angular6/angular.json
rename to spring-security-modules/spring-security-web-angular/client/angular6/angular.json
diff --git a/spring-security-modules/spring-security-angular/client/angular6/package.json b/spring-security-modules/spring-security-web-angular/client/angular6/package.json
similarity index 100%
rename from spring-security-modules/spring-security-angular/client/angular6/package.json
rename to spring-security-modules/spring-security-web-angular/client/angular6/package.json
diff --git a/spring-security-modules/spring-security-angular/client/angular6/src/app/app.component.html b/spring-security-modules/spring-security-web-angular/client/angular6/src/app/app.component.html
similarity index 100%
rename from spring-security-modules/spring-security-angular/client/angular6/src/app/app.component.html
rename to spring-security-modules/spring-security-web-angular/client/angular6/src/app/app.component.html
diff --git a/spring-security-modules/spring-security-angular/client/angular6/src/app/app.component.ts b/spring-security-modules/spring-security-web-angular/client/angular6/src/app/app.component.ts
similarity index 100%
rename from spring-security-modules/spring-security-angular/client/angular6/src/app/app.component.ts
rename to spring-security-modules/spring-security-web-angular/client/angular6/src/app/app.component.ts
diff --git a/spring-security-modules/spring-security-angular/client/angular6/src/app/app.module.ts b/spring-security-modules/spring-security-web-angular/client/angular6/src/app/app.module.ts
similarity index 100%
rename from spring-security-modules/spring-security-angular/client/angular6/src/app/app.module.ts
rename to spring-security-modules/spring-security-web-angular/client/angular6/src/app/app.module.ts
diff --git a/spring-security-modules/spring-security-angular/client/angular6/src/app/app.routing.ts b/spring-security-modules/spring-security-web-angular/client/angular6/src/app/app.routing.ts
similarity index 100%
rename from spring-security-modules/spring-security-angular/client/angular6/src/app/app.routing.ts
rename to spring-security-modules/spring-security-web-angular/client/angular6/src/app/app.routing.ts
diff --git a/spring-security-modules/spring-security-angular/client/angular6/src/app/home/home.component.html b/spring-security-modules/spring-security-web-angular/client/angular6/src/app/home/home.component.html
similarity index 100%
rename from spring-security-modules/spring-security-angular/client/angular6/src/app/home/home.component.html
rename to spring-security-modules/spring-security-web-angular/client/angular6/src/app/home/home.component.html
diff --git a/spring-security-modules/spring-security-angular/client/angular6/src/app/home/home.component.ts b/spring-security-modules/spring-security-web-angular/client/angular6/src/app/home/home.component.ts
similarity index 100%
rename from spring-security-modules/spring-security-angular/client/angular6/src/app/home/home.component.ts
rename to spring-security-modules/spring-security-web-angular/client/angular6/src/app/home/home.component.ts
diff --git a/spring-security-modules/spring-security-angular/client/angular6/src/app/login/login.component.html b/spring-security-modules/spring-security-web-angular/client/angular6/src/app/login/login.component.html
similarity index 100%
rename from spring-security-modules/spring-security-angular/client/angular6/src/app/login/login.component.html
rename to spring-security-modules/spring-security-web-angular/client/angular6/src/app/login/login.component.html
diff --git a/spring-security-modules/spring-security-angular/client/angular6/src/app/login/login.component.ts b/spring-security-modules/spring-security-web-angular/client/angular6/src/app/login/login.component.ts
similarity index 100%
rename from spring-security-modules/spring-security-angular/client/angular6/src/app/login/login.component.ts
rename to spring-security-modules/spring-security-web-angular/client/angular6/src/app/login/login.component.ts
diff --git a/spring-security-modules/spring-security-angular/client/angular6/src/index.html b/spring-security-modules/spring-security-web-angular/client/angular6/src/index.html
similarity index 100%
rename from spring-security-modules/spring-security-angular/client/angular6/src/index.html
rename to spring-security-modules/spring-security-web-angular/client/angular6/src/index.html
diff --git a/spring-security-modules/spring-security-angular/client/angular6/src/main.ts b/spring-security-modules/spring-security-web-angular/client/angular6/src/main.ts
similarity index 100%
rename from spring-security-modules/spring-security-angular/client/angular6/src/main.ts
rename to spring-security-modules/spring-security-web-angular/client/angular6/src/main.ts
diff --git a/spring-security-modules/spring-security-angular/client/angular6/src/polyfills.ts b/spring-security-modules/spring-security-web-angular/client/angular6/src/polyfills.ts
similarity index 100%
rename from spring-security-modules/spring-security-angular/client/angular6/src/polyfills.ts
rename to spring-security-modules/spring-security-web-angular/client/angular6/src/polyfills.ts
diff --git a/spring-security-modules/spring-security-angular/client/angular6/src/styles.css b/spring-security-modules/spring-security-web-angular/client/angular6/src/styles.css
similarity index 100%
rename from spring-security-modules/spring-security-angular/client/angular6/src/styles.css
rename to spring-security-modules/spring-security-web-angular/client/angular6/src/styles.css
diff --git a/spring-security-modules/spring-security-angular/client/angular6/src/tsconfig.app.json b/spring-security-modules/spring-security-web-angular/client/angular6/src/tsconfig.app.json
similarity index 100%
rename from spring-security-modules/spring-security-angular/client/angular6/src/tsconfig.app.json
rename to spring-security-modules/spring-security-web-angular/client/angular6/src/tsconfig.app.json
diff --git a/spring-security-modules/spring-security-angular/client/angular6/tsconfig.json b/spring-security-modules/spring-security-web-angular/client/angular6/tsconfig.json
similarity index 100%
rename from spring-security-modules/spring-security-angular/client/angular6/tsconfig.json
rename to spring-security-modules/spring-security-web-angular/client/angular6/tsconfig.json
diff --git a/spring-security-modules/spring-security-angular/client/angular6/tslint.json b/spring-security-modules/spring-security-web-angular/client/angular6/tslint.json
similarity index 100%
rename from spring-security-modules/spring-security-angular/client/angular6/tslint.json
rename to spring-security-modules/spring-security-web-angular/client/angular6/tslint.json
diff --git a/spring-security-modules/spring-security-angular/server/pom.xml b/spring-security-modules/spring-security-web-angular/server/pom.xml
similarity index 100%
rename from spring-security-modules/spring-security-angular/server/pom.xml
rename to spring-security-modules/spring-security-web-angular/server/pom.xml
diff --git a/spring-security-modules/spring-security-angular/server/src/main/java/com/baeldung/springbootsecurityrest/basicauth/SpringBootSecurityApplication.java b/spring-security-modules/spring-security-web-angular/server/src/main/java/com/baeldung/springbootsecurityrest/basicauth/SpringBootSecurityApplication.java
similarity index 100%
rename from spring-security-modules/spring-security-angular/server/src/main/java/com/baeldung/springbootsecurityrest/basicauth/SpringBootSecurityApplication.java
rename to spring-security-modules/spring-security-web-angular/server/src/main/java/com/baeldung/springbootsecurityrest/basicauth/SpringBootSecurityApplication.java
diff --git a/spring-security-modules/spring-security-angular/server/src/main/java/com/baeldung/springbootsecurityrest/basicauth/config/BasicAuthConfiguration.java b/spring-security-modules/spring-security-web-angular/server/src/main/java/com/baeldung/springbootsecurityrest/basicauth/config/BasicAuthConfiguration.java
similarity index 100%
rename from spring-security-modules/spring-security-angular/server/src/main/java/com/baeldung/springbootsecurityrest/basicauth/config/BasicAuthConfiguration.java
rename to spring-security-modules/spring-security-web-angular/server/src/main/java/com/baeldung/springbootsecurityrest/basicauth/config/BasicAuthConfiguration.java
diff --git a/spring-security-modules/spring-security-angular/server/src/main/java/com/baeldung/springbootsecurityrest/controller/UserController.java b/spring-security-modules/spring-security-web-angular/server/src/main/java/com/baeldung/springbootsecurityrest/controller/UserController.java
similarity index 100%
rename from spring-security-modules/spring-security-angular/server/src/main/java/com/baeldung/springbootsecurityrest/controller/UserController.java
rename to spring-security-modules/spring-security-web-angular/server/src/main/java/com/baeldung/springbootsecurityrest/controller/UserController.java
diff --git a/spring-security-modules/spring-security-angular/server/src/main/java/com/baeldung/springbootsecurityrest/vo/User.java b/spring-security-modules/spring-security-web-angular/server/src/main/java/com/baeldung/springbootsecurityrest/vo/User.java
similarity index 100%
rename from spring-security-modules/spring-security-angular/server/src/main/java/com/baeldung/springbootsecurityrest/vo/User.java
rename to spring-security-modules/spring-security-web-angular/server/src/main/java/com/baeldung/springbootsecurityrest/vo/User.java
diff --git a/spring-security-modules/spring-security-angular/server/src/main/resources/application.properties b/spring-security-modules/spring-security-web-angular/server/src/main/resources/application.properties
similarity index 100%
rename from spring-security-modules/spring-security-angular/server/src/main/resources/application.properties
rename to spring-security-modules/spring-security-web-angular/server/src/main/resources/application.properties
diff --git a/spring-security-modules/spring-security-angular/server/src/main/resources/logback.xml b/spring-security-modules/spring-security-web-angular/server/src/main/resources/logback.xml
similarity index 100%
rename from spring-security-modules/spring-security-angular/server/src/main/resources/logback.xml
rename to spring-security-modules/spring-security-web-angular/server/src/main/resources/logback.xml
diff --git a/spring-security-modules/spring-security-angular/server/src/test/java/com/baeldung/SpringContextTest.java b/spring-security-modules/spring-security-web-angular/server/src/test/java/com/baeldung/SpringContextTest.java
similarity index 100%
rename from spring-security-modules/spring-security-angular/server/src/test/java/com/baeldung/SpringContextTest.java
rename to spring-security-modules/spring-security-web-angular/server/src/test/java/com/baeldung/SpringContextTest.java
diff --git a/spring-security-modules/spring-security-angular/server/src/test/java/com/baeldung/springbootsecurityrest/BasicAuthConfigurationIntegrationTest.java b/spring-security-modules/spring-security-web-angular/server/src/test/java/com/baeldung/springbootsecurityrest/BasicAuthConfigurationIntegrationTest.java
similarity index 100%
rename from spring-security-modules/spring-security-angular/server/src/test/java/com/baeldung/springbootsecurityrest/BasicAuthConfigurationIntegrationTest.java
rename to spring-security-modules/spring-security-web-angular/server/src/test/java/com/baeldung/springbootsecurityrest/BasicAuthConfigurationIntegrationTest.java

From 36a2c6edb1ac65222ee6c1fded19c34357f6f57c Mon Sep 17 00:00:00 2001
From: sampadawagde <sampada.wagde@gmail.com>
Date: Thu, 13 Aug 2020 12:51:16 +0530
Subject: [PATCH 089/156] JAVA-67: renamed spring-security-mvc to
 spring-security-web-mvc

---
 .../.gitignore                                                | 0
 .../README.md                                                 | 0
 .../{spring-security-mvc => spring-security-web-mvc}/pom.xml  | 4 ++--
 .../baeldung/clearsitedata/LogoutClearSiteDataController.java | 0
 .../java/com/baeldung/clearsitedata/SpringSecurityConfig.java | 0
 .../src/main/java/com/baeldung/clearsitedata/WebConfig.java   | 0
 .../java/com/baeldung/monitoring/MetricRegistrySingleton.java | 0
 .../security/MySimpleUrlAuthenticationSuccessHandler.java     | 0
 .../java/com/baeldung/session/SpringSessionApplication.java   | 0
 .../src/main/java/com/baeldung/session/bean/Constants.java    | 0
 .../src/main/java/com/baeldung/session/bean/Foo.java          | 0
 .../main/java/com/baeldung/session/filter/SessionFilter.java  | 0
 .../baeldung/session/security/config/SecSecurityConfig.java   | 0
 .../src/main/java/com/baeldung/session/web/FooController.java | 0
 .../java/com/baeldung/session/web/SessionRestController.java  | 0
 .../baeldung/session/web/config/MainWebAppInitializer.java    | 0
 .../main/java/com/baeldung/session/web/config/MvcConfig.java  | 0
 .../java/com/baeldung/web/SessionListenerWithMetrics.java     | 0
 .../src/main/resources/application.properties                 | 0
 .../src/main/resources/logback.xml                            | 0
 .../src/main/resources/webSecurityConfig.xml                  | 0
 .../src/main/webapp/WEB-INF/mvc-servlet.xml                   | 0
 .../src/main/webapp/WEB-INF/view/anonymous.jsp                | 0
 .../src/main/webapp/WEB-INF/view/console.jsp                  | 0
 .../src/main/webapp/WEB-INF/view/homepage.jsp                 | 0
 .../src/main/webapp/WEB-INF/view/invalidSession.jsp           | 0
 .../src/main/webapp/WEB-INF/view/login.jsp                    | 0
 .../src/main/webapp/WEB-INF/view/sessionExpired.jsp           | 0
 .../src/main/webapp/WEB-INF/web.xml                           | 0
 .../src/test/java/com/baeldung/SpringContextTest.java         | 0
 .../clearsitedata/LogoutClearSiteDataControllerUnitTest.java  | 0
 .../com/baeldung/session/SessionConfigurationLiveTest.java    | 0
 .../src/test/resources/.gitignore                             | 0
 33 files changed, 2 insertions(+), 2 deletions(-)
 rename spring-security-modules/{spring-security-mvc => spring-security-web-mvc}/.gitignore (100%)
 rename spring-security-modules/{spring-security-mvc => spring-security-web-mvc}/README.md (100%)
 rename spring-security-modules/{spring-security-mvc => spring-security-web-mvc}/pom.xml (97%)
 rename spring-security-modules/{spring-security-mvc => spring-security-web-mvc}/src/main/java/com/baeldung/clearsitedata/LogoutClearSiteDataController.java (100%)
 rename spring-security-modules/{spring-security-mvc => spring-security-web-mvc}/src/main/java/com/baeldung/clearsitedata/SpringSecurityConfig.java (100%)
 rename spring-security-modules/{spring-security-mvc => spring-security-web-mvc}/src/main/java/com/baeldung/clearsitedata/WebConfig.java (100%)
 rename spring-security-modules/{spring-security-mvc => spring-security-web-mvc}/src/main/java/com/baeldung/monitoring/MetricRegistrySingleton.java (100%)
 rename spring-security-modules/{spring-security-mvc => spring-security-web-mvc}/src/main/java/com/baeldung/security/MySimpleUrlAuthenticationSuccessHandler.java (100%)
 rename spring-security-modules/{spring-security-mvc => spring-security-web-mvc}/src/main/java/com/baeldung/session/SpringSessionApplication.java (100%)
 rename spring-security-modules/{spring-security-mvc => spring-security-web-mvc}/src/main/java/com/baeldung/session/bean/Constants.java (100%)
 rename spring-security-modules/{spring-security-mvc => spring-security-web-mvc}/src/main/java/com/baeldung/session/bean/Foo.java (100%)
 rename spring-security-modules/{spring-security-mvc => spring-security-web-mvc}/src/main/java/com/baeldung/session/filter/SessionFilter.java (100%)
 rename spring-security-modules/{spring-security-mvc => spring-security-web-mvc}/src/main/java/com/baeldung/session/security/config/SecSecurityConfig.java (100%)
 rename spring-security-modules/{spring-security-mvc => spring-security-web-mvc}/src/main/java/com/baeldung/session/web/FooController.java (100%)
 rename spring-security-modules/{spring-security-mvc => spring-security-web-mvc}/src/main/java/com/baeldung/session/web/SessionRestController.java (100%)
 rename spring-security-modules/{spring-security-mvc => spring-security-web-mvc}/src/main/java/com/baeldung/session/web/config/MainWebAppInitializer.java (100%)
 rename spring-security-modules/{spring-security-mvc => spring-security-web-mvc}/src/main/java/com/baeldung/session/web/config/MvcConfig.java (100%)
 rename spring-security-modules/{spring-security-mvc => spring-security-web-mvc}/src/main/java/com/baeldung/web/SessionListenerWithMetrics.java (100%)
 rename spring-security-modules/{spring-security-mvc => spring-security-web-mvc}/src/main/resources/application.properties (100%)
 rename spring-security-modules/{spring-security-mvc => spring-security-web-mvc}/src/main/resources/logback.xml (100%)
 rename spring-security-modules/{spring-security-mvc => spring-security-web-mvc}/src/main/resources/webSecurityConfig.xml (100%)
 rename spring-security-modules/{spring-security-mvc => spring-security-web-mvc}/src/main/webapp/WEB-INF/mvc-servlet.xml (100%)
 rename spring-security-modules/{spring-security-mvc => spring-security-web-mvc}/src/main/webapp/WEB-INF/view/anonymous.jsp (100%)
 rename spring-security-modules/{spring-security-mvc => spring-security-web-mvc}/src/main/webapp/WEB-INF/view/console.jsp (100%)
 rename spring-security-modules/{spring-security-mvc => spring-security-web-mvc}/src/main/webapp/WEB-INF/view/homepage.jsp (100%)
 rename spring-security-modules/{spring-security-mvc => spring-security-web-mvc}/src/main/webapp/WEB-INF/view/invalidSession.jsp (100%)
 rename spring-security-modules/{spring-security-mvc => spring-security-web-mvc}/src/main/webapp/WEB-INF/view/login.jsp (100%)
 rename spring-security-modules/{spring-security-mvc => spring-security-web-mvc}/src/main/webapp/WEB-INF/view/sessionExpired.jsp (100%)
 rename spring-security-modules/{spring-security-mvc => spring-security-web-mvc}/src/main/webapp/WEB-INF/web.xml (100%)
 rename spring-security-modules/{spring-security-mvc => spring-security-web-mvc}/src/test/java/com/baeldung/SpringContextTest.java (100%)
 rename spring-security-modules/{spring-security-mvc => spring-security-web-mvc}/src/test/java/com/baeldung/clearsitedata/LogoutClearSiteDataControllerUnitTest.java (100%)
 rename spring-security-modules/{spring-security-mvc => spring-security-web-mvc}/src/test/java/com/baeldung/session/SessionConfigurationLiveTest.java (100%)
 rename spring-security-modules/{spring-security-mvc => spring-security-web-mvc}/src/test/resources/.gitignore (100%)

diff --git a/spring-security-modules/spring-security-mvc/.gitignore b/spring-security-modules/spring-security-web-mvc/.gitignore
similarity index 100%
rename from spring-security-modules/spring-security-mvc/.gitignore
rename to spring-security-modules/spring-security-web-mvc/.gitignore
diff --git a/spring-security-modules/spring-security-mvc/README.md b/spring-security-modules/spring-security-web-mvc/README.md
similarity index 100%
rename from spring-security-modules/spring-security-mvc/README.md
rename to spring-security-modules/spring-security-web-mvc/README.md
diff --git a/spring-security-modules/spring-security-mvc/pom.xml b/spring-security-modules/spring-security-web-mvc/pom.xml
similarity index 97%
rename from spring-security-modules/spring-security-mvc/pom.xml
rename to spring-security-modules/spring-security-web-mvc/pom.xml
index d97825975f..2651b3a0f2 100644
--- a/spring-security-modules/spring-security-mvc/pom.xml
+++ b/spring-security-modules/spring-security-web-mvc/pom.xml
@@ -3,9 +3,9 @@
          xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
          xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
     <modelVersion>4.0.0</modelVersion>
-    <artifactId>spring-security-mvc</artifactId>
+    <artifactId>spring-security-web-mvc</artifactId>
     <version>0.1-SNAPSHOT</version>
-    <name>spring-security-mvc</name>
+    <name>spring-security-web-mvc</name>
     <packaging>jar</packaging>
 
     <parent>
diff --git a/spring-security-modules/spring-security-mvc/src/main/java/com/baeldung/clearsitedata/LogoutClearSiteDataController.java b/spring-security-modules/spring-security-web-mvc/src/main/java/com/baeldung/clearsitedata/LogoutClearSiteDataController.java
similarity index 100%
rename from spring-security-modules/spring-security-mvc/src/main/java/com/baeldung/clearsitedata/LogoutClearSiteDataController.java
rename to spring-security-modules/spring-security-web-mvc/src/main/java/com/baeldung/clearsitedata/LogoutClearSiteDataController.java
diff --git a/spring-security-modules/spring-security-mvc/src/main/java/com/baeldung/clearsitedata/SpringSecurityConfig.java b/spring-security-modules/spring-security-web-mvc/src/main/java/com/baeldung/clearsitedata/SpringSecurityConfig.java
similarity index 100%
rename from spring-security-modules/spring-security-mvc/src/main/java/com/baeldung/clearsitedata/SpringSecurityConfig.java
rename to spring-security-modules/spring-security-web-mvc/src/main/java/com/baeldung/clearsitedata/SpringSecurityConfig.java
diff --git a/spring-security-modules/spring-security-mvc/src/main/java/com/baeldung/clearsitedata/WebConfig.java b/spring-security-modules/spring-security-web-mvc/src/main/java/com/baeldung/clearsitedata/WebConfig.java
similarity index 100%
rename from spring-security-modules/spring-security-mvc/src/main/java/com/baeldung/clearsitedata/WebConfig.java
rename to spring-security-modules/spring-security-web-mvc/src/main/java/com/baeldung/clearsitedata/WebConfig.java
diff --git a/spring-security-modules/spring-security-mvc/src/main/java/com/baeldung/monitoring/MetricRegistrySingleton.java b/spring-security-modules/spring-security-web-mvc/src/main/java/com/baeldung/monitoring/MetricRegistrySingleton.java
similarity index 100%
rename from spring-security-modules/spring-security-mvc/src/main/java/com/baeldung/monitoring/MetricRegistrySingleton.java
rename to spring-security-modules/spring-security-web-mvc/src/main/java/com/baeldung/monitoring/MetricRegistrySingleton.java
diff --git a/spring-security-modules/spring-security-mvc/src/main/java/com/baeldung/security/MySimpleUrlAuthenticationSuccessHandler.java b/spring-security-modules/spring-security-web-mvc/src/main/java/com/baeldung/security/MySimpleUrlAuthenticationSuccessHandler.java
similarity index 100%
rename from spring-security-modules/spring-security-mvc/src/main/java/com/baeldung/security/MySimpleUrlAuthenticationSuccessHandler.java
rename to spring-security-modules/spring-security-web-mvc/src/main/java/com/baeldung/security/MySimpleUrlAuthenticationSuccessHandler.java
diff --git a/spring-security-modules/spring-security-mvc/src/main/java/com/baeldung/session/SpringSessionApplication.java b/spring-security-modules/spring-security-web-mvc/src/main/java/com/baeldung/session/SpringSessionApplication.java
similarity index 100%
rename from spring-security-modules/spring-security-mvc/src/main/java/com/baeldung/session/SpringSessionApplication.java
rename to spring-security-modules/spring-security-web-mvc/src/main/java/com/baeldung/session/SpringSessionApplication.java
diff --git a/spring-security-modules/spring-security-mvc/src/main/java/com/baeldung/session/bean/Constants.java b/spring-security-modules/spring-security-web-mvc/src/main/java/com/baeldung/session/bean/Constants.java
similarity index 100%
rename from spring-security-modules/spring-security-mvc/src/main/java/com/baeldung/session/bean/Constants.java
rename to spring-security-modules/spring-security-web-mvc/src/main/java/com/baeldung/session/bean/Constants.java
diff --git a/spring-security-modules/spring-security-mvc/src/main/java/com/baeldung/session/bean/Foo.java b/spring-security-modules/spring-security-web-mvc/src/main/java/com/baeldung/session/bean/Foo.java
similarity index 100%
rename from spring-security-modules/spring-security-mvc/src/main/java/com/baeldung/session/bean/Foo.java
rename to spring-security-modules/spring-security-web-mvc/src/main/java/com/baeldung/session/bean/Foo.java
diff --git a/spring-security-modules/spring-security-mvc/src/main/java/com/baeldung/session/filter/SessionFilter.java b/spring-security-modules/spring-security-web-mvc/src/main/java/com/baeldung/session/filter/SessionFilter.java
similarity index 100%
rename from spring-security-modules/spring-security-mvc/src/main/java/com/baeldung/session/filter/SessionFilter.java
rename to spring-security-modules/spring-security-web-mvc/src/main/java/com/baeldung/session/filter/SessionFilter.java
diff --git a/spring-security-modules/spring-security-mvc/src/main/java/com/baeldung/session/security/config/SecSecurityConfig.java b/spring-security-modules/spring-security-web-mvc/src/main/java/com/baeldung/session/security/config/SecSecurityConfig.java
similarity index 100%
rename from spring-security-modules/spring-security-mvc/src/main/java/com/baeldung/session/security/config/SecSecurityConfig.java
rename to spring-security-modules/spring-security-web-mvc/src/main/java/com/baeldung/session/security/config/SecSecurityConfig.java
diff --git a/spring-security-modules/spring-security-mvc/src/main/java/com/baeldung/session/web/FooController.java b/spring-security-modules/spring-security-web-mvc/src/main/java/com/baeldung/session/web/FooController.java
similarity index 100%
rename from spring-security-modules/spring-security-mvc/src/main/java/com/baeldung/session/web/FooController.java
rename to spring-security-modules/spring-security-web-mvc/src/main/java/com/baeldung/session/web/FooController.java
diff --git a/spring-security-modules/spring-security-mvc/src/main/java/com/baeldung/session/web/SessionRestController.java b/spring-security-modules/spring-security-web-mvc/src/main/java/com/baeldung/session/web/SessionRestController.java
similarity index 100%
rename from spring-security-modules/spring-security-mvc/src/main/java/com/baeldung/session/web/SessionRestController.java
rename to spring-security-modules/spring-security-web-mvc/src/main/java/com/baeldung/session/web/SessionRestController.java
diff --git a/spring-security-modules/spring-security-mvc/src/main/java/com/baeldung/session/web/config/MainWebAppInitializer.java b/spring-security-modules/spring-security-web-mvc/src/main/java/com/baeldung/session/web/config/MainWebAppInitializer.java
similarity index 100%
rename from spring-security-modules/spring-security-mvc/src/main/java/com/baeldung/session/web/config/MainWebAppInitializer.java
rename to spring-security-modules/spring-security-web-mvc/src/main/java/com/baeldung/session/web/config/MainWebAppInitializer.java
diff --git a/spring-security-modules/spring-security-mvc/src/main/java/com/baeldung/session/web/config/MvcConfig.java b/spring-security-modules/spring-security-web-mvc/src/main/java/com/baeldung/session/web/config/MvcConfig.java
similarity index 100%
rename from spring-security-modules/spring-security-mvc/src/main/java/com/baeldung/session/web/config/MvcConfig.java
rename to spring-security-modules/spring-security-web-mvc/src/main/java/com/baeldung/session/web/config/MvcConfig.java
diff --git a/spring-security-modules/spring-security-mvc/src/main/java/com/baeldung/web/SessionListenerWithMetrics.java b/spring-security-modules/spring-security-web-mvc/src/main/java/com/baeldung/web/SessionListenerWithMetrics.java
similarity index 100%
rename from spring-security-modules/spring-security-mvc/src/main/java/com/baeldung/web/SessionListenerWithMetrics.java
rename to spring-security-modules/spring-security-web-mvc/src/main/java/com/baeldung/web/SessionListenerWithMetrics.java
diff --git a/spring-security-modules/spring-security-mvc/src/main/resources/application.properties b/spring-security-modules/spring-security-web-mvc/src/main/resources/application.properties
similarity index 100%
rename from spring-security-modules/spring-security-mvc/src/main/resources/application.properties
rename to spring-security-modules/spring-security-web-mvc/src/main/resources/application.properties
diff --git a/spring-security-modules/spring-security-mvc/src/main/resources/logback.xml b/spring-security-modules/spring-security-web-mvc/src/main/resources/logback.xml
similarity index 100%
rename from spring-security-modules/spring-security-mvc/src/main/resources/logback.xml
rename to spring-security-modules/spring-security-web-mvc/src/main/resources/logback.xml
diff --git a/spring-security-modules/spring-security-mvc/src/main/resources/webSecurityConfig.xml b/spring-security-modules/spring-security-web-mvc/src/main/resources/webSecurityConfig.xml
similarity index 100%
rename from spring-security-modules/spring-security-mvc/src/main/resources/webSecurityConfig.xml
rename to spring-security-modules/spring-security-web-mvc/src/main/resources/webSecurityConfig.xml
diff --git a/spring-security-modules/spring-security-mvc/src/main/webapp/WEB-INF/mvc-servlet.xml b/spring-security-modules/spring-security-web-mvc/src/main/webapp/WEB-INF/mvc-servlet.xml
similarity index 100%
rename from spring-security-modules/spring-security-mvc/src/main/webapp/WEB-INF/mvc-servlet.xml
rename to spring-security-modules/spring-security-web-mvc/src/main/webapp/WEB-INF/mvc-servlet.xml
diff --git a/spring-security-modules/spring-security-mvc/src/main/webapp/WEB-INF/view/anonymous.jsp b/spring-security-modules/spring-security-web-mvc/src/main/webapp/WEB-INF/view/anonymous.jsp
similarity index 100%
rename from spring-security-modules/spring-security-mvc/src/main/webapp/WEB-INF/view/anonymous.jsp
rename to spring-security-modules/spring-security-web-mvc/src/main/webapp/WEB-INF/view/anonymous.jsp
diff --git a/spring-security-modules/spring-security-mvc/src/main/webapp/WEB-INF/view/console.jsp b/spring-security-modules/spring-security-web-mvc/src/main/webapp/WEB-INF/view/console.jsp
similarity index 100%
rename from spring-security-modules/spring-security-mvc/src/main/webapp/WEB-INF/view/console.jsp
rename to spring-security-modules/spring-security-web-mvc/src/main/webapp/WEB-INF/view/console.jsp
diff --git a/spring-security-modules/spring-security-mvc/src/main/webapp/WEB-INF/view/homepage.jsp b/spring-security-modules/spring-security-web-mvc/src/main/webapp/WEB-INF/view/homepage.jsp
similarity index 100%
rename from spring-security-modules/spring-security-mvc/src/main/webapp/WEB-INF/view/homepage.jsp
rename to spring-security-modules/spring-security-web-mvc/src/main/webapp/WEB-INF/view/homepage.jsp
diff --git a/spring-security-modules/spring-security-mvc/src/main/webapp/WEB-INF/view/invalidSession.jsp b/spring-security-modules/spring-security-web-mvc/src/main/webapp/WEB-INF/view/invalidSession.jsp
similarity index 100%
rename from spring-security-modules/spring-security-mvc/src/main/webapp/WEB-INF/view/invalidSession.jsp
rename to spring-security-modules/spring-security-web-mvc/src/main/webapp/WEB-INF/view/invalidSession.jsp
diff --git a/spring-security-modules/spring-security-mvc/src/main/webapp/WEB-INF/view/login.jsp b/spring-security-modules/spring-security-web-mvc/src/main/webapp/WEB-INF/view/login.jsp
similarity index 100%
rename from spring-security-modules/spring-security-mvc/src/main/webapp/WEB-INF/view/login.jsp
rename to spring-security-modules/spring-security-web-mvc/src/main/webapp/WEB-INF/view/login.jsp
diff --git a/spring-security-modules/spring-security-mvc/src/main/webapp/WEB-INF/view/sessionExpired.jsp b/spring-security-modules/spring-security-web-mvc/src/main/webapp/WEB-INF/view/sessionExpired.jsp
similarity index 100%
rename from spring-security-modules/spring-security-mvc/src/main/webapp/WEB-INF/view/sessionExpired.jsp
rename to spring-security-modules/spring-security-web-mvc/src/main/webapp/WEB-INF/view/sessionExpired.jsp
diff --git a/spring-security-modules/spring-security-mvc/src/main/webapp/WEB-INF/web.xml b/spring-security-modules/spring-security-web-mvc/src/main/webapp/WEB-INF/web.xml
similarity index 100%
rename from spring-security-modules/spring-security-mvc/src/main/webapp/WEB-INF/web.xml
rename to spring-security-modules/spring-security-web-mvc/src/main/webapp/WEB-INF/web.xml
diff --git a/spring-security-modules/spring-security-mvc/src/test/java/com/baeldung/SpringContextTest.java b/spring-security-modules/spring-security-web-mvc/src/test/java/com/baeldung/SpringContextTest.java
similarity index 100%
rename from spring-security-modules/spring-security-mvc/src/test/java/com/baeldung/SpringContextTest.java
rename to spring-security-modules/spring-security-web-mvc/src/test/java/com/baeldung/SpringContextTest.java
diff --git a/spring-security-modules/spring-security-mvc/src/test/java/com/baeldung/clearsitedata/LogoutClearSiteDataControllerUnitTest.java b/spring-security-modules/spring-security-web-mvc/src/test/java/com/baeldung/clearsitedata/LogoutClearSiteDataControllerUnitTest.java
similarity index 100%
rename from spring-security-modules/spring-security-mvc/src/test/java/com/baeldung/clearsitedata/LogoutClearSiteDataControllerUnitTest.java
rename to spring-security-modules/spring-security-web-mvc/src/test/java/com/baeldung/clearsitedata/LogoutClearSiteDataControllerUnitTest.java
diff --git a/spring-security-modules/spring-security-mvc/src/test/java/com/baeldung/session/SessionConfigurationLiveTest.java b/spring-security-modules/spring-security-web-mvc/src/test/java/com/baeldung/session/SessionConfigurationLiveTest.java
similarity index 100%
rename from spring-security-modules/spring-security-mvc/src/test/java/com/baeldung/session/SessionConfigurationLiveTest.java
rename to spring-security-modules/spring-security-web-mvc/src/test/java/com/baeldung/session/SessionConfigurationLiveTest.java
diff --git a/spring-security-modules/spring-security-mvc/src/test/resources/.gitignore b/spring-security-modules/spring-security-web-mvc/src/test/resources/.gitignore
similarity index 100%
rename from spring-security-modules/spring-security-mvc/src/test/resources/.gitignore
rename to spring-security-modules/spring-security-web-mvc/src/test/resources/.gitignore

From 787bbd4f2c5e6d2213ca276a7c95d31c80cef48f Mon Sep 17 00:00:00 2001
From: sampadawagde <sampada.wagde@gmail.com>
Date: Thu, 13 Aug 2020 12:52:53 +0530
Subject: [PATCH 090/156] JAVA-67:renamed spring-security-mvc-boot-1 to
 spring-security-web-boot-1

---
 .../README.md                                                 | 0
 .../WebContent/META-INF/MANIFEST.MF                           | 0
 .../pom.xml                                                   | 4 ++--
 .../src/main/java/com/baeldung/relationships/AppConfig.java   | 0
 .../java/com/baeldung/relationships/SpringSecurityConfig.java | 0
 .../main/java/com/baeldung/relationships/models/AppUser.java  | 0
 .../main/java/com/baeldung/relationships/models/Tweet.java    | 0
 .../baeldung/relationships/repositories/TweetRepository.java  | 0
 .../baeldung/relationships/repositories/UserRepository.java   | 0
 .../com/baeldung/relationships/security/AppUserPrincipal.java | 0
 .../security/AuthenticationSuccessHandlerImpl.java            | 0
 .../relationships/security/CustomUserDetailsService.java      | 0
 .../com/baeldung/relationships/util/DummyContentUtil.java     | 0
 .../src/main/java/com/baeldung/roles/custom/Application.java  | 0
 .../baeldung/roles/custom/config/MethodSecurityConfig.java    | 0
 .../main/java/com/baeldung/roles/custom/config/MvcConfig.java | 0
 .../java/com/baeldung/roles/custom/config/SecurityConfig.java | 0
 .../java/com/baeldung/roles/custom/persistence/SetupData.java | 0
 .../roles/custom/persistence/dao/OrganizationRepository.java  | 0
 .../roles/custom/persistence/dao/PrivilegeRepository.java     | 0
 .../baeldung/roles/custom/persistence/dao/UserRepository.java | 0
 .../java/com/baeldung/roles/custom/persistence/model/Foo.java | 0
 .../baeldung/roles/custom/persistence/model/Organization.java | 0
 .../baeldung/roles/custom/persistence/model/Privilege.java    | 0
 .../com/baeldung/roles/custom/persistence/model/User.java     | 0
 .../security/CustomMethodSecurityExpressionHandler.java       | 0
 .../custom/security/CustomMethodSecurityExpressionRoot.java   | 0
 .../roles/custom/security/CustomPermissionEvaluator.java      | 0
 .../roles/custom/security/MySecurityExpressionRoot.java       | 0
 .../baeldung/roles/custom/security/MyUserDetailsService.java  | 0
 .../com/baeldung/roles/custom/security/MyUserPrincipal.java   | 0
 .../java/com/baeldung/roles/custom/web/MainController.java    | 0
 .../src/main/java/com/baeldung/roles/ip/IpApplication.java    | 0
 .../roles/ip/config/CustomIpAuthenticationProvider.java       | 0
 .../java/com/baeldung/roles/ip/config/SecurityConfig.java     | 0
 .../java/com/baeldung/roles/ip/config/SecurityXmlConfig.java  | 0
 .../main/java/com/baeldung/roles/ip/web/MainController.java   | 0
 .../roles/rolesauthorities/CustomAuthenticationProvider.java  | 0
 .../roles/rolesauthorities/MyLogoutSuccessHandler.java        | 0
 .../baeldung/roles/rolesauthorities/MyUserDetailsService.java | 0
 .../roles/rolesauthorities/RolesAuthoritiesApplication.java   | 0
 .../com/baeldung/roles/rolesauthorities/config/MvcConfig.java | 0
 .../roles/rolesauthorities/config/SecurityConfig.java         | 0
 .../com/baeldung/roles/rolesauthorities/model/Privilege.java  | 0
 .../java/com/baeldung/roles/rolesauthorities/model/Role.java  | 0
 .../java/com/baeldung/roles/rolesauthorities/model/User.java  | 0
 .../roles/rolesauthorities/persistence/IUserService.java      | 0
 .../rolesauthorities/persistence/PrivilegeRepository.java     | 0
 .../roles/rolesauthorities/persistence/RoleRepository.java    | 0
 .../roles/rolesauthorities/persistence/SetupDataLoader.java   | 0
 .../roles/rolesauthorities/persistence/UserRepository.java    | 0
 .../roles/rolesauthorities/persistence/UserService.java       | 0
 .../main/java/com/baeldung/roles/voter/MinuteBasedVoter.java  | 0
 .../main/java/com/baeldung/roles/voter/VoterApplication.java  | 0
 .../main/java/com/baeldung/roles/voter/VoterMvcConfig.java    | 0
 .../main/java/com/baeldung/roles/voter/WebSecurityConfig.java | 0
 .../main/java/com/baeldung/roles/voter/XmlSecurityConfig.java | 0
 .../src/main/resources/application-defaults.properties        | 0
 .../src/main/resources/application.properties                 | 0
 .../src/main/resources/logback.xml                            | 0
 .../src/main/resources/persistence-h2.properties              | 0
 .../src/main/resources/spring-security-custom-voter.xml       | 0
 .../src/main/resources/spring-security-ip.xml                 | 0
 .../src/main/resources/templates/403.html                     | 0
 .../src/main/resources/templates/index.html                   | 0
 .../src/main/resources/templates/login.html                   | 0
 .../src/main/resources/templates/loginAdmin.html              | 0
 .../src/main/resources/templates/loginUser.html               | 0
 .../src/main/resources/templates/multipleHttpElems/login.html | 0
 .../templates/multipleHttpElems/loginWithWarning.html         | 0
 .../templates/multipleHttpElems/multipleHttpLinks.html        | 0
 .../resources/templates/multipleHttpElems/myAdminPage.html    | 0
 .../resources/templates/multipleHttpElems/myGuestPage.html    | 0
 .../templates/multipleHttpElems/myPrivateUserPage.html        | 0
 .../resources/templates/multipleHttpElems/myUserPage.html     | 0
 .../src/main/resources/templates/private.html                 | 0
 .../src/main/resources/templates/rolesauthorities/home.html   | 0
 .../src/main/resources/templates/rolesauthorities/login.html  | 0
 .../templates/rolesauthorities/protectedbyauthority.html      | 0
 .../templates/rolesauthorities/protectedbynothing.html        | 0
 .../resources/templates/rolesauthorities/protectedbyrole.html | 0
 .../src/main/resources/templates/ssl/welcome.html             | 0
 .../relationships/SpringDataWithSecurityIntegrationTest.java  | 0
 .../src/test/java/com/baeldung/roles/SpringContextTest.java   | 0
 .../test/java/com/baeldung/roles/web/ApplicationLiveTest.java | 0
 .../roles/web/CustomUserDetailsServiceIntegrationTest.java    | 0
 .../src/test/java/com/baeldung/roles/web/IpLiveTest.java      | 0
 87 files changed, 2 insertions(+), 2 deletions(-)
 rename spring-security-modules/{spring-security-mvc-boot-1 => spring-security-web-boot-1}/README.md (100%)
 rename spring-security-modules/{spring-security-mvc-boot-1 => spring-security-web-boot-1}/WebContent/META-INF/MANIFEST.MF (100%)
 rename spring-security-modules/{spring-security-mvc-boot-1 => spring-security-web-boot-1}/pom.xml (98%)
 rename spring-security-modules/{spring-security-mvc-boot-1 => spring-security-web-boot-1}/src/main/java/com/baeldung/relationships/AppConfig.java (100%)
 rename spring-security-modules/{spring-security-mvc-boot-1 => spring-security-web-boot-1}/src/main/java/com/baeldung/relationships/SpringSecurityConfig.java (100%)
 rename spring-security-modules/{spring-security-mvc-boot-1 => spring-security-web-boot-1}/src/main/java/com/baeldung/relationships/models/AppUser.java (100%)
 rename spring-security-modules/{spring-security-mvc-boot-1 => spring-security-web-boot-1}/src/main/java/com/baeldung/relationships/models/Tweet.java (100%)
 rename spring-security-modules/{spring-security-mvc-boot-1 => spring-security-web-boot-1}/src/main/java/com/baeldung/relationships/repositories/TweetRepository.java (100%)
 rename spring-security-modules/{spring-security-mvc-boot-1 => spring-security-web-boot-1}/src/main/java/com/baeldung/relationships/repositories/UserRepository.java (100%)
 rename spring-security-modules/{spring-security-mvc-boot-1 => spring-security-web-boot-1}/src/main/java/com/baeldung/relationships/security/AppUserPrincipal.java (100%)
 rename spring-security-modules/{spring-security-mvc-boot-1 => spring-security-web-boot-1}/src/main/java/com/baeldung/relationships/security/AuthenticationSuccessHandlerImpl.java (100%)
 rename spring-security-modules/{spring-security-mvc-boot-1 => spring-security-web-boot-1}/src/main/java/com/baeldung/relationships/security/CustomUserDetailsService.java (100%)
 rename spring-security-modules/{spring-security-mvc-boot-1 => spring-security-web-boot-1}/src/main/java/com/baeldung/relationships/util/DummyContentUtil.java (100%)
 rename spring-security-modules/{spring-security-mvc-boot-1 => spring-security-web-boot-1}/src/main/java/com/baeldung/roles/custom/Application.java (100%)
 rename spring-security-modules/{spring-security-mvc-boot-1 => spring-security-web-boot-1}/src/main/java/com/baeldung/roles/custom/config/MethodSecurityConfig.java (100%)
 rename spring-security-modules/{spring-security-mvc-boot-1 => spring-security-web-boot-1}/src/main/java/com/baeldung/roles/custom/config/MvcConfig.java (100%)
 rename spring-security-modules/{spring-security-mvc-boot-1 => spring-security-web-boot-1}/src/main/java/com/baeldung/roles/custom/config/SecurityConfig.java (100%)
 rename spring-security-modules/{spring-security-mvc-boot-1 => spring-security-web-boot-1}/src/main/java/com/baeldung/roles/custom/persistence/SetupData.java (100%)
 rename spring-security-modules/{spring-security-mvc-boot-1 => spring-security-web-boot-1}/src/main/java/com/baeldung/roles/custom/persistence/dao/OrganizationRepository.java (100%)
 rename spring-security-modules/{spring-security-mvc-boot-1 => spring-security-web-boot-1}/src/main/java/com/baeldung/roles/custom/persistence/dao/PrivilegeRepository.java (100%)
 rename spring-security-modules/{spring-security-mvc-boot-1 => spring-security-web-boot-1}/src/main/java/com/baeldung/roles/custom/persistence/dao/UserRepository.java (100%)
 rename spring-security-modules/{spring-security-mvc-boot-1 => spring-security-web-boot-1}/src/main/java/com/baeldung/roles/custom/persistence/model/Foo.java (100%)
 rename spring-security-modules/{spring-security-mvc-boot-1 => spring-security-web-boot-1}/src/main/java/com/baeldung/roles/custom/persistence/model/Organization.java (100%)
 rename spring-security-modules/{spring-security-mvc-boot-1 => spring-security-web-boot-1}/src/main/java/com/baeldung/roles/custom/persistence/model/Privilege.java (100%)
 rename spring-security-modules/{spring-security-mvc-boot-1 => spring-security-web-boot-1}/src/main/java/com/baeldung/roles/custom/persistence/model/User.java (100%)
 rename spring-security-modules/{spring-security-mvc-boot-1 => spring-security-web-boot-1}/src/main/java/com/baeldung/roles/custom/security/CustomMethodSecurityExpressionHandler.java (100%)
 rename spring-security-modules/{spring-security-mvc-boot-1 => spring-security-web-boot-1}/src/main/java/com/baeldung/roles/custom/security/CustomMethodSecurityExpressionRoot.java (100%)
 rename spring-security-modules/{spring-security-mvc-boot-1 => spring-security-web-boot-1}/src/main/java/com/baeldung/roles/custom/security/CustomPermissionEvaluator.java (100%)
 rename spring-security-modules/{spring-security-mvc-boot-1 => spring-security-web-boot-1}/src/main/java/com/baeldung/roles/custom/security/MySecurityExpressionRoot.java (100%)
 rename spring-security-modules/{spring-security-mvc-boot-1 => spring-security-web-boot-1}/src/main/java/com/baeldung/roles/custom/security/MyUserDetailsService.java (100%)
 rename spring-security-modules/{spring-security-mvc-boot-1 => spring-security-web-boot-1}/src/main/java/com/baeldung/roles/custom/security/MyUserPrincipal.java (100%)
 rename spring-security-modules/{spring-security-mvc-boot-1 => spring-security-web-boot-1}/src/main/java/com/baeldung/roles/custom/web/MainController.java (100%)
 rename spring-security-modules/{spring-security-mvc-boot-1 => spring-security-web-boot-1}/src/main/java/com/baeldung/roles/ip/IpApplication.java (100%)
 rename spring-security-modules/{spring-security-mvc-boot-1 => spring-security-web-boot-1}/src/main/java/com/baeldung/roles/ip/config/CustomIpAuthenticationProvider.java (100%)
 rename spring-security-modules/{spring-security-mvc-boot-1 => spring-security-web-boot-1}/src/main/java/com/baeldung/roles/ip/config/SecurityConfig.java (100%)
 rename spring-security-modules/{spring-security-mvc-boot-1 => spring-security-web-boot-1}/src/main/java/com/baeldung/roles/ip/config/SecurityXmlConfig.java (100%)
 rename spring-security-modules/{spring-security-mvc-boot-1 => spring-security-web-boot-1}/src/main/java/com/baeldung/roles/ip/web/MainController.java (100%)
 rename spring-security-modules/{spring-security-mvc-boot-1 => spring-security-web-boot-1}/src/main/java/com/baeldung/roles/rolesauthorities/CustomAuthenticationProvider.java (100%)
 rename spring-security-modules/{spring-security-mvc-boot-1 => spring-security-web-boot-1}/src/main/java/com/baeldung/roles/rolesauthorities/MyLogoutSuccessHandler.java (100%)
 rename spring-security-modules/{spring-security-mvc-boot-1 => spring-security-web-boot-1}/src/main/java/com/baeldung/roles/rolesauthorities/MyUserDetailsService.java (100%)
 rename spring-security-modules/{spring-security-mvc-boot-1 => spring-security-web-boot-1}/src/main/java/com/baeldung/roles/rolesauthorities/RolesAuthoritiesApplication.java (100%)
 rename spring-security-modules/{spring-security-mvc-boot-1 => spring-security-web-boot-1}/src/main/java/com/baeldung/roles/rolesauthorities/config/MvcConfig.java (100%)
 rename spring-security-modules/{spring-security-mvc-boot-1 => spring-security-web-boot-1}/src/main/java/com/baeldung/roles/rolesauthorities/config/SecurityConfig.java (100%)
 rename spring-security-modules/{spring-security-mvc-boot-1 => spring-security-web-boot-1}/src/main/java/com/baeldung/roles/rolesauthorities/model/Privilege.java (100%)
 rename spring-security-modules/{spring-security-mvc-boot-1 => spring-security-web-boot-1}/src/main/java/com/baeldung/roles/rolesauthorities/model/Role.java (100%)
 rename spring-security-modules/{spring-security-mvc-boot-1 => spring-security-web-boot-1}/src/main/java/com/baeldung/roles/rolesauthorities/model/User.java (100%)
 rename spring-security-modules/{spring-security-mvc-boot-1 => spring-security-web-boot-1}/src/main/java/com/baeldung/roles/rolesauthorities/persistence/IUserService.java (100%)
 rename spring-security-modules/{spring-security-mvc-boot-1 => spring-security-web-boot-1}/src/main/java/com/baeldung/roles/rolesauthorities/persistence/PrivilegeRepository.java (100%)
 rename spring-security-modules/{spring-security-mvc-boot-1 => spring-security-web-boot-1}/src/main/java/com/baeldung/roles/rolesauthorities/persistence/RoleRepository.java (100%)
 rename spring-security-modules/{spring-security-mvc-boot-1 => spring-security-web-boot-1}/src/main/java/com/baeldung/roles/rolesauthorities/persistence/SetupDataLoader.java (100%)
 rename spring-security-modules/{spring-security-mvc-boot-1 => spring-security-web-boot-1}/src/main/java/com/baeldung/roles/rolesauthorities/persistence/UserRepository.java (100%)
 rename spring-security-modules/{spring-security-mvc-boot-1 => spring-security-web-boot-1}/src/main/java/com/baeldung/roles/rolesauthorities/persistence/UserService.java (100%)
 rename spring-security-modules/{spring-security-mvc-boot-1 => spring-security-web-boot-1}/src/main/java/com/baeldung/roles/voter/MinuteBasedVoter.java (100%)
 rename spring-security-modules/{spring-security-mvc-boot-1 => spring-security-web-boot-1}/src/main/java/com/baeldung/roles/voter/VoterApplication.java (100%)
 rename spring-security-modules/{spring-security-mvc-boot-1 => spring-security-web-boot-1}/src/main/java/com/baeldung/roles/voter/VoterMvcConfig.java (100%)
 rename spring-security-modules/{spring-security-mvc-boot-1 => spring-security-web-boot-1}/src/main/java/com/baeldung/roles/voter/WebSecurityConfig.java (100%)
 rename spring-security-modules/{spring-security-mvc-boot-1 => spring-security-web-boot-1}/src/main/java/com/baeldung/roles/voter/XmlSecurityConfig.java (100%)
 rename spring-security-modules/{spring-security-mvc-boot-1 => spring-security-web-boot-1}/src/main/resources/application-defaults.properties (100%)
 rename spring-security-modules/{spring-security-mvc-boot-1 => spring-security-web-boot-1}/src/main/resources/application.properties (100%)
 rename spring-security-modules/{spring-security-mvc-boot-1 => spring-security-web-boot-1}/src/main/resources/logback.xml (100%)
 rename spring-security-modules/{spring-security-mvc-boot-1 => spring-security-web-boot-1}/src/main/resources/persistence-h2.properties (100%)
 rename spring-security-modules/{spring-security-mvc-boot-1 => spring-security-web-boot-1}/src/main/resources/spring-security-custom-voter.xml (100%)
 rename spring-security-modules/{spring-security-mvc-boot-1 => spring-security-web-boot-1}/src/main/resources/spring-security-ip.xml (100%)
 rename spring-security-modules/{spring-security-mvc-boot-1 => spring-security-web-boot-1}/src/main/resources/templates/403.html (100%)
 rename spring-security-modules/{spring-security-mvc-boot-1 => spring-security-web-boot-1}/src/main/resources/templates/index.html (100%)
 rename spring-security-modules/{spring-security-mvc-boot-1 => spring-security-web-boot-1}/src/main/resources/templates/login.html (100%)
 rename spring-security-modules/{spring-security-mvc-boot-1 => spring-security-web-boot-1}/src/main/resources/templates/loginAdmin.html (100%)
 rename spring-security-modules/{spring-security-mvc-boot-1 => spring-security-web-boot-1}/src/main/resources/templates/loginUser.html (100%)
 rename spring-security-modules/{spring-security-mvc-boot-1 => spring-security-web-boot-1}/src/main/resources/templates/multipleHttpElems/login.html (100%)
 rename spring-security-modules/{spring-security-mvc-boot-1 => spring-security-web-boot-1}/src/main/resources/templates/multipleHttpElems/loginWithWarning.html (100%)
 rename spring-security-modules/{spring-security-mvc-boot-1 => spring-security-web-boot-1}/src/main/resources/templates/multipleHttpElems/multipleHttpLinks.html (100%)
 rename spring-security-modules/{spring-security-mvc-boot-1 => spring-security-web-boot-1}/src/main/resources/templates/multipleHttpElems/myAdminPage.html (100%)
 rename spring-security-modules/{spring-security-mvc-boot-1 => spring-security-web-boot-1}/src/main/resources/templates/multipleHttpElems/myGuestPage.html (100%)
 rename spring-security-modules/{spring-security-mvc-boot-1 => spring-security-web-boot-1}/src/main/resources/templates/multipleHttpElems/myPrivateUserPage.html (100%)
 rename spring-security-modules/{spring-security-mvc-boot-1 => spring-security-web-boot-1}/src/main/resources/templates/multipleHttpElems/myUserPage.html (100%)
 rename spring-security-modules/{spring-security-mvc-boot-1 => spring-security-web-boot-1}/src/main/resources/templates/private.html (100%)
 rename spring-security-modules/{spring-security-mvc-boot-1 => spring-security-web-boot-1}/src/main/resources/templates/rolesauthorities/home.html (100%)
 rename spring-security-modules/{spring-security-mvc-boot-1 => spring-security-web-boot-1}/src/main/resources/templates/rolesauthorities/login.html (100%)
 rename spring-security-modules/{spring-security-mvc-boot-1 => spring-security-web-boot-1}/src/main/resources/templates/rolesauthorities/protectedbyauthority.html (100%)
 rename spring-security-modules/{spring-security-mvc-boot-1 => spring-security-web-boot-1}/src/main/resources/templates/rolesauthorities/protectedbynothing.html (100%)
 rename spring-security-modules/{spring-security-mvc-boot-1 => spring-security-web-boot-1}/src/main/resources/templates/rolesauthorities/protectedbyrole.html (100%)
 rename spring-security-modules/{spring-security-mvc-boot-1 => spring-security-web-boot-1}/src/main/resources/templates/ssl/welcome.html (100%)
 rename spring-security-modules/{spring-security-mvc-boot-1 => spring-security-web-boot-1}/src/test/java/com/baeldung/relationships/SpringDataWithSecurityIntegrationTest.java (100%)
 rename spring-security-modules/{spring-security-mvc-boot-1 => spring-security-web-boot-1}/src/test/java/com/baeldung/roles/SpringContextTest.java (100%)
 rename spring-security-modules/{spring-security-mvc-boot-1 => spring-security-web-boot-1}/src/test/java/com/baeldung/roles/web/ApplicationLiveTest.java (100%)
 rename spring-security-modules/{spring-security-mvc-boot-1 => spring-security-web-boot-1}/src/test/java/com/baeldung/roles/web/CustomUserDetailsServiceIntegrationTest.java (100%)
 rename spring-security-modules/{spring-security-mvc-boot-1 => spring-security-web-boot-1}/src/test/java/com/baeldung/roles/web/IpLiveTest.java (100%)

diff --git a/spring-security-modules/spring-security-mvc-boot-1/README.md b/spring-security-modules/spring-security-web-boot-1/README.md
similarity index 100%
rename from spring-security-modules/spring-security-mvc-boot-1/README.md
rename to spring-security-modules/spring-security-web-boot-1/README.md
diff --git a/spring-security-modules/spring-security-mvc-boot-1/WebContent/META-INF/MANIFEST.MF b/spring-security-modules/spring-security-web-boot-1/WebContent/META-INF/MANIFEST.MF
similarity index 100%
rename from spring-security-modules/spring-security-mvc-boot-1/WebContent/META-INF/MANIFEST.MF
rename to spring-security-modules/spring-security-web-boot-1/WebContent/META-INF/MANIFEST.MF
diff --git a/spring-security-modules/spring-security-mvc-boot-1/pom.xml b/spring-security-modules/spring-security-web-boot-1/pom.xml
similarity index 98%
rename from spring-security-modules/spring-security-mvc-boot-1/pom.xml
rename to spring-security-modules/spring-security-web-boot-1/pom.xml
index 7ad18376ec..1f80b62765 100644
--- a/spring-security-modules/spring-security-mvc-boot-1/pom.xml
+++ b/spring-security-modules/spring-security-web-boot-1/pom.xml
@@ -3,9 +3,9 @@
          xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
          xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
     <modelVersion>4.0.0</modelVersion>
-    <artifactId>spring-security-mvc-boot-1</artifactId>
+    <artifactId>spring-security-web-boot-1</artifactId>
     <version>0.0.1-SNAPSHOT</version>
-    <name>spring-security-mvc-boot-1</name>
+    <name>spring-security-web-boot-1</name>
     <packaging>war</packaging>
     <description>Spring Security MVC Boot - 1</description>
 
diff --git a/spring-security-modules/spring-security-mvc-boot-1/src/main/java/com/baeldung/relationships/AppConfig.java b/spring-security-modules/spring-security-web-boot-1/src/main/java/com/baeldung/relationships/AppConfig.java
similarity index 100%
rename from spring-security-modules/spring-security-mvc-boot-1/src/main/java/com/baeldung/relationships/AppConfig.java
rename to spring-security-modules/spring-security-web-boot-1/src/main/java/com/baeldung/relationships/AppConfig.java
diff --git a/spring-security-modules/spring-security-mvc-boot-1/src/main/java/com/baeldung/relationships/SpringSecurityConfig.java b/spring-security-modules/spring-security-web-boot-1/src/main/java/com/baeldung/relationships/SpringSecurityConfig.java
similarity index 100%
rename from spring-security-modules/spring-security-mvc-boot-1/src/main/java/com/baeldung/relationships/SpringSecurityConfig.java
rename to spring-security-modules/spring-security-web-boot-1/src/main/java/com/baeldung/relationships/SpringSecurityConfig.java
diff --git a/spring-security-modules/spring-security-mvc-boot-1/src/main/java/com/baeldung/relationships/models/AppUser.java b/spring-security-modules/spring-security-web-boot-1/src/main/java/com/baeldung/relationships/models/AppUser.java
similarity index 100%
rename from spring-security-modules/spring-security-mvc-boot-1/src/main/java/com/baeldung/relationships/models/AppUser.java
rename to spring-security-modules/spring-security-web-boot-1/src/main/java/com/baeldung/relationships/models/AppUser.java
diff --git a/spring-security-modules/spring-security-mvc-boot-1/src/main/java/com/baeldung/relationships/models/Tweet.java b/spring-security-modules/spring-security-web-boot-1/src/main/java/com/baeldung/relationships/models/Tweet.java
similarity index 100%
rename from spring-security-modules/spring-security-mvc-boot-1/src/main/java/com/baeldung/relationships/models/Tweet.java
rename to spring-security-modules/spring-security-web-boot-1/src/main/java/com/baeldung/relationships/models/Tweet.java
diff --git a/spring-security-modules/spring-security-mvc-boot-1/src/main/java/com/baeldung/relationships/repositories/TweetRepository.java b/spring-security-modules/spring-security-web-boot-1/src/main/java/com/baeldung/relationships/repositories/TweetRepository.java
similarity index 100%
rename from spring-security-modules/spring-security-mvc-boot-1/src/main/java/com/baeldung/relationships/repositories/TweetRepository.java
rename to spring-security-modules/spring-security-web-boot-1/src/main/java/com/baeldung/relationships/repositories/TweetRepository.java
diff --git a/spring-security-modules/spring-security-mvc-boot-1/src/main/java/com/baeldung/relationships/repositories/UserRepository.java b/spring-security-modules/spring-security-web-boot-1/src/main/java/com/baeldung/relationships/repositories/UserRepository.java
similarity index 100%
rename from spring-security-modules/spring-security-mvc-boot-1/src/main/java/com/baeldung/relationships/repositories/UserRepository.java
rename to spring-security-modules/spring-security-web-boot-1/src/main/java/com/baeldung/relationships/repositories/UserRepository.java
diff --git a/spring-security-modules/spring-security-mvc-boot-1/src/main/java/com/baeldung/relationships/security/AppUserPrincipal.java b/spring-security-modules/spring-security-web-boot-1/src/main/java/com/baeldung/relationships/security/AppUserPrincipal.java
similarity index 100%
rename from spring-security-modules/spring-security-mvc-boot-1/src/main/java/com/baeldung/relationships/security/AppUserPrincipal.java
rename to spring-security-modules/spring-security-web-boot-1/src/main/java/com/baeldung/relationships/security/AppUserPrincipal.java
diff --git a/spring-security-modules/spring-security-mvc-boot-1/src/main/java/com/baeldung/relationships/security/AuthenticationSuccessHandlerImpl.java b/spring-security-modules/spring-security-web-boot-1/src/main/java/com/baeldung/relationships/security/AuthenticationSuccessHandlerImpl.java
similarity index 100%
rename from spring-security-modules/spring-security-mvc-boot-1/src/main/java/com/baeldung/relationships/security/AuthenticationSuccessHandlerImpl.java
rename to spring-security-modules/spring-security-web-boot-1/src/main/java/com/baeldung/relationships/security/AuthenticationSuccessHandlerImpl.java
diff --git a/spring-security-modules/spring-security-mvc-boot-1/src/main/java/com/baeldung/relationships/security/CustomUserDetailsService.java b/spring-security-modules/spring-security-web-boot-1/src/main/java/com/baeldung/relationships/security/CustomUserDetailsService.java
similarity index 100%
rename from spring-security-modules/spring-security-mvc-boot-1/src/main/java/com/baeldung/relationships/security/CustomUserDetailsService.java
rename to spring-security-modules/spring-security-web-boot-1/src/main/java/com/baeldung/relationships/security/CustomUserDetailsService.java
diff --git a/spring-security-modules/spring-security-mvc-boot-1/src/main/java/com/baeldung/relationships/util/DummyContentUtil.java b/spring-security-modules/spring-security-web-boot-1/src/main/java/com/baeldung/relationships/util/DummyContentUtil.java
similarity index 100%
rename from spring-security-modules/spring-security-mvc-boot-1/src/main/java/com/baeldung/relationships/util/DummyContentUtil.java
rename to spring-security-modules/spring-security-web-boot-1/src/main/java/com/baeldung/relationships/util/DummyContentUtil.java
diff --git a/spring-security-modules/spring-security-mvc-boot-1/src/main/java/com/baeldung/roles/custom/Application.java b/spring-security-modules/spring-security-web-boot-1/src/main/java/com/baeldung/roles/custom/Application.java
similarity index 100%
rename from spring-security-modules/spring-security-mvc-boot-1/src/main/java/com/baeldung/roles/custom/Application.java
rename to spring-security-modules/spring-security-web-boot-1/src/main/java/com/baeldung/roles/custom/Application.java
diff --git a/spring-security-modules/spring-security-mvc-boot-1/src/main/java/com/baeldung/roles/custom/config/MethodSecurityConfig.java b/spring-security-modules/spring-security-web-boot-1/src/main/java/com/baeldung/roles/custom/config/MethodSecurityConfig.java
similarity index 100%
rename from spring-security-modules/spring-security-mvc-boot-1/src/main/java/com/baeldung/roles/custom/config/MethodSecurityConfig.java
rename to spring-security-modules/spring-security-web-boot-1/src/main/java/com/baeldung/roles/custom/config/MethodSecurityConfig.java
diff --git a/spring-security-modules/spring-security-mvc-boot-1/src/main/java/com/baeldung/roles/custom/config/MvcConfig.java b/spring-security-modules/spring-security-web-boot-1/src/main/java/com/baeldung/roles/custom/config/MvcConfig.java
similarity index 100%
rename from spring-security-modules/spring-security-mvc-boot-1/src/main/java/com/baeldung/roles/custom/config/MvcConfig.java
rename to spring-security-modules/spring-security-web-boot-1/src/main/java/com/baeldung/roles/custom/config/MvcConfig.java
diff --git a/spring-security-modules/spring-security-mvc-boot-1/src/main/java/com/baeldung/roles/custom/config/SecurityConfig.java b/spring-security-modules/spring-security-web-boot-1/src/main/java/com/baeldung/roles/custom/config/SecurityConfig.java
similarity index 100%
rename from spring-security-modules/spring-security-mvc-boot-1/src/main/java/com/baeldung/roles/custom/config/SecurityConfig.java
rename to spring-security-modules/spring-security-web-boot-1/src/main/java/com/baeldung/roles/custom/config/SecurityConfig.java
diff --git a/spring-security-modules/spring-security-mvc-boot-1/src/main/java/com/baeldung/roles/custom/persistence/SetupData.java b/spring-security-modules/spring-security-web-boot-1/src/main/java/com/baeldung/roles/custom/persistence/SetupData.java
similarity index 100%
rename from spring-security-modules/spring-security-mvc-boot-1/src/main/java/com/baeldung/roles/custom/persistence/SetupData.java
rename to spring-security-modules/spring-security-web-boot-1/src/main/java/com/baeldung/roles/custom/persistence/SetupData.java
diff --git a/spring-security-modules/spring-security-mvc-boot-1/src/main/java/com/baeldung/roles/custom/persistence/dao/OrganizationRepository.java b/spring-security-modules/spring-security-web-boot-1/src/main/java/com/baeldung/roles/custom/persistence/dao/OrganizationRepository.java
similarity index 100%
rename from spring-security-modules/spring-security-mvc-boot-1/src/main/java/com/baeldung/roles/custom/persistence/dao/OrganizationRepository.java
rename to spring-security-modules/spring-security-web-boot-1/src/main/java/com/baeldung/roles/custom/persistence/dao/OrganizationRepository.java
diff --git a/spring-security-modules/spring-security-mvc-boot-1/src/main/java/com/baeldung/roles/custom/persistence/dao/PrivilegeRepository.java b/spring-security-modules/spring-security-web-boot-1/src/main/java/com/baeldung/roles/custom/persistence/dao/PrivilegeRepository.java
similarity index 100%
rename from spring-security-modules/spring-security-mvc-boot-1/src/main/java/com/baeldung/roles/custom/persistence/dao/PrivilegeRepository.java
rename to spring-security-modules/spring-security-web-boot-1/src/main/java/com/baeldung/roles/custom/persistence/dao/PrivilegeRepository.java
diff --git a/spring-security-modules/spring-security-mvc-boot-1/src/main/java/com/baeldung/roles/custom/persistence/dao/UserRepository.java b/spring-security-modules/spring-security-web-boot-1/src/main/java/com/baeldung/roles/custom/persistence/dao/UserRepository.java
similarity index 100%
rename from spring-security-modules/spring-security-mvc-boot-1/src/main/java/com/baeldung/roles/custom/persistence/dao/UserRepository.java
rename to spring-security-modules/spring-security-web-boot-1/src/main/java/com/baeldung/roles/custom/persistence/dao/UserRepository.java
diff --git a/spring-security-modules/spring-security-mvc-boot-1/src/main/java/com/baeldung/roles/custom/persistence/model/Foo.java b/spring-security-modules/spring-security-web-boot-1/src/main/java/com/baeldung/roles/custom/persistence/model/Foo.java
similarity index 100%
rename from spring-security-modules/spring-security-mvc-boot-1/src/main/java/com/baeldung/roles/custom/persistence/model/Foo.java
rename to spring-security-modules/spring-security-web-boot-1/src/main/java/com/baeldung/roles/custom/persistence/model/Foo.java
diff --git a/spring-security-modules/spring-security-mvc-boot-1/src/main/java/com/baeldung/roles/custom/persistence/model/Organization.java b/spring-security-modules/spring-security-web-boot-1/src/main/java/com/baeldung/roles/custom/persistence/model/Organization.java
similarity index 100%
rename from spring-security-modules/spring-security-mvc-boot-1/src/main/java/com/baeldung/roles/custom/persistence/model/Organization.java
rename to spring-security-modules/spring-security-web-boot-1/src/main/java/com/baeldung/roles/custom/persistence/model/Organization.java
diff --git a/spring-security-modules/spring-security-mvc-boot-1/src/main/java/com/baeldung/roles/custom/persistence/model/Privilege.java b/spring-security-modules/spring-security-web-boot-1/src/main/java/com/baeldung/roles/custom/persistence/model/Privilege.java
similarity index 100%
rename from spring-security-modules/spring-security-mvc-boot-1/src/main/java/com/baeldung/roles/custom/persistence/model/Privilege.java
rename to spring-security-modules/spring-security-web-boot-1/src/main/java/com/baeldung/roles/custom/persistence/model/Privilege.java
diff --git a/spring-security-modules/spring-security-mvc-boot-1/src/main/java/com/baeldung/roles/custom/persistence/model/User.java b/spring-security-modules/spring-security-web-boot-1/src/main/java/com/baeldung/roles/custom/persistence/model/User.java
similarity index 100%
rename from spring-security-modules/spring-security-mvc-boot-1/src/main/java/com/baeldung/roles/custom/persistence/model/User.java
rename to spring-security-modules/spring-security-web-boot-1/src/main/java/com/baeldung/roles/custom/persistence/model/User.java
diff --git a/spring-security-modules/spring-security-mvc-boot-1/src/main/java/com/baeldung/roles/custom/security/CustomMethodSecurityExpressionHandler.java b/spring-security-modules/spring-security-web-boot-1/src/main/java/com/baeldung/roles/custom/security/CustomMethodSecurityExpressionHandler.java
similarity index 100%
rename from spring-security-modules/spring-security-mvc-boot-1/src/main/java/com/baeldung/roles/custom/security/CustomMethodSecurityExpressionHandler.java
rename to spring-security-modules/spring-security-web-boot-1/src/main/java/com/baeldung/roles/custom/security/CustomMethodSecurityExpressionHandler.java
diff --git a/spring-security-modules/spring-security-mvc-boot-1/src/main/java/com/baeldung/roles/custom/security/CustomMethodSecurityExpressionRoot.java b/spring-security-modules/spring-security-web-boot-1/src/main/java/com/baeldung/roles/custom/security/CustomMethodSecurityExpressionRoot.java
similarity index 100%
rename from spring-security-modules/spring-security-mvc-boot-1/src/main/java/com/baeldung/roles/custom/security/CustomMethodSecurityExpressionRoot.java
rename to spring-security-modules/spring-security-web-boot-1/src/main/java/com/baeldung/roles/custom/security/CustomMethodSecurityExpressionRoot.java
diff --git a/spring-security-modules/spring-security-mvc-boot-1/src/main/java/com/baeldung/roles/custom/security/CustomPermissionEvaluator.java b/spring-security-modules/spring-security-web-boot-1/src/main/java/com/baeldung/roles/custom/security/CustomPermissionEvaluator.java
similarity index 100%
rename from spring-security-modules/spring-security-mvc-boot-1/src/main/java/com/baeldung/roles/custom/security/CustomPermissionEvaluator.java
rename to spring-security-modules/spring-security-web-boot-1/src/main/java/com/baeldung/roles/custom/security/CustomPermissionEvaluator.java
diff --git a/spring-security-modules/spring-security-mvc-boot-1/src/main/java/com/baeldung/roles/custom/security/MySecurityExpressionRoot.java b/spring-security-modules/spring-security-web-boot-1/src/main/java/com/baeldung/roles/custom/security/MySecurityExpressionRoot.java
similarity index 100%
rename from spring-security-modules/spring-security-mvc-boot-1/src/main/java/com/baeldung/roles/custom/security/MySecurityExpressionRoot.java
rename to spring-security-modules/spring-security-web-boot-1/src/main/java/com/baeldung/roles/custom/security/MySecurityExpressionRoot.java
diff --git a/spring-security-modules/spring-security-mvc-boot-1/src/main/java/com/baeldung/roles/custom/security/MyUserDetailsService.java b/spring-security-modules/spring-security-web-boot-1/src/main/java/com/baeldung/roles/custom/security/MyUserDetailsService.java
similarity index 100%
rename from spring-security-modules/spring-security-mvc-boot-1/src/main/java/com/baeldung/roles/custom/security/MyUserDetailsService.java
rename to spring-security-modules/spring-security-web-boot-1/src/main/java/com/baeldung/roles/custom/security/MyUserDetailsService.java
diff --git a/spring-security-modules/spring-security-mvc-boot-1/src/main/java/com/baeldung/roles/custom/security/MyUserPrincipal.java b/spring-security-modules/spring-security-web-boot-1/src/main/java/com/baeldung/roles/custom/security/MyUserPrincipal.java
similarity index 100%
rename from spring-security-modules/spring-security-mvc-boot-1/src/main/java/com/baeldung/roles/custom/security/MyUserPrincipal.java
rename to spring-security-modules/spring-security-web-boot-1/src/main/java/com/baeldung/roles/custom/security/MyUserPrincipal.java
diff --git a/spring-security-modules/spring-security-mvc-boot-1/src/main/java/com/baeldung/roles/custom/web/MainController.java b/spring-security-modules/spring-security-web-boot-1/src/main/java/com/baeldung/roles/custom/web/MainController.java
similarity index 100%
rename from spring-security-modules/spring-security-mvc-boot-1/src/main/java/com/baeldung/roles/custom/web/MainController.java
rename to spring-security-modules/spring-security-web-boot-1/src/main/java/com/baeldung/roles/custom/web/MainController.java
diff --git a/spring-security-modules/spring-security-mvc-boot-1/src/main/java/com/baeldung/roles/ip/IpApplication.java b/spring-security-modules/spring-security-web-boot-1/src/main/java/com/baeldung/roles/ip/IpApplication.java
similarity index 100%
rename from spring-security-modules/spring-security-mvc-boot-1/src/main/java/com/baeldung/roles/ip/IpApplication.java
rename to spring-security-modules/spring-security-web-boot-1/src/main/java/com/baeldung/roles/ip/IpApplication.java
diff --git a/spring-security-modules/spring-security-mvc-boot-1/src/main/java/com/baeldung/roles/ip/config/CustomIpAuthenticationProvider.java b/spring-security-modules/spring-security-web-boot-1/src/main/java/com/baeldung/roles/ip/config/CustomIpAuthenticationProvider.java
similarity index 100%
rename from spring-security-modules/spring-security-mvc-boot-1/src/main/java/com/baeldung/roles/ip/config/CustomIpAuthenticationProvider.java
rename to spring-security-modules/spring-security-web-boot-1/src/main/java/com/baeldung/roles/ip/config/CustomIpAuthenticationProvider.java
diff --git a/spring-security-modules/spring-security-mvc-boot-1/src/main/java/com/baeldung/roles/ip/config/SecurityConfig.java b/spring-security-modules/spring-security-web-boot-1/src/main/java/com/baeldung/roles/ip/config/SecurityConfig.java
similarity index 100%
rename from spring-security-modules/spring-security-mvc-boot-1/src/main/java/com/baeldung/roles/ip/config/SecurityConfig.java
rename to spring-security-modules/spring-security-web-boot-1/src/main/java/com/baeldung/roles/ip/config/SecurityConfig.java
diff --git a/spring-security-modules/spring-security-mvc-boot-1/src/main/java/com/baeldung/roles/ip/config/SecurityXmlConfig.java b/spring-security-modules/spring-security-web-boot-1/src/main/java/com/baeldung/roles/ip/config/SecurityXmlConfig.java
similarity index 100%
rename from spring-security-modules/spring-security-mvc-boot-1/src/main/java/com/baeldung/roles/ip/config/SecurityXmlConfig.java
rename to spring-security-modules/spring-security-web-boot-1/src/main/java/com/baeldung/roles/ip/config/SecurityXmlConfig.java
diff --git a/spring-security-modules/spring-security-mvc-boot-1/src/main/java/com/baeldung/roles/ip/web/MainController.java b/spring-security-modules/spring-security-web-boot-1/src/main/java/com/baeldung/roles/ip/web/MainController.java
similarity index 100%
rename from spring-security-modules/spring-security-mvc-boot-1/src/main/java/com/baeldung/roles/ip/web/MainController.java
rename to spring-security-modules/spring-security-web-boot-1/src/main/java/com/baeldung/roles/ip/web/MainController.java
diff --git a/spring-security-modules/spring-security-mvc-boot-1/src/main/java/com/baeldung/roles/rolesauthorities/CustomAuthenticationProvider.java b/spring-security-modules/spring-security-web-boot-1/src/main/java/com/baeldung/roles/rolesauthorities/CustomAuthenticationProvider.java
similarity index 100%
rename from spring-security-modules/spring-security-mvc-boot-1/src/main/java/com/baeldung/roles/rolesauthorities/CustomAuthenticationProvider.java
rename to spring-security-modules/spring-security-web-boot-1/src/main/java/com/baeldung/roles/rolesauthorities/CustomAuthenticationProvider.java
diff --git a/spring-security-modules/spring-security-mvc-boot-1/src/main/java/com/baeldung/roles/rolesauthorities/MyLogoutSuccessHandler.java b/spring-security-modules/spring-security-web-boot-1/src/main/java/com/baeldung/roles/rolesauthorities/MyLogoutSuccessHandler.java
similarity index 100%
rename from spring-security-modules/spring-security-mvc-boot-1/src/main/java/com/baeldung/roles/rolesauthorities/MyLogoutSuccessHandler.java
rename to spring-security-modules/spring-security-web-boot-1/src/main/java/com/baeldung/roles/rolesauthorities/MyLogoutSuccessHandler.java
diff --git a/spring-security-modules/spring-security-mvc-boot-1/src/main/java/com/baeldung/roles/rolesauthorities/MyUserDetailsService.java b/spring-security-modules/spring-security-web-boot-1/src/main/java/com/baeldung/roles/rolesauthorities/MyUserDetailsService.java
similarity index 100%
rename from spring-security-modules/spring-security-mvc-boot-1/src/main/java/com/baeldung/roles/rolesauthorities/MyUserDetailsService.java
rename to spring-security-modules/spring-security-web-boot-1/src/main/java/com/baeldung/roles/rolesauthorities/MyUserDetailsService.java
diff --git a/spring-security-modules/spring-security-mvc-boot-1/src/main/java/com/baeldung/roles/rolesauthorities/RolesAuthoritiesApplication.java b/spring-security-modules/spring-security-web-boot-1/src/main/java/com/baeldung/roles/rolesauthorities/RolesAuthoritiesApplication.java
similarity index 100%
rename from spring-security-modules/spring-security-mvc-boot-1/src/main/java/com/baeldung/roles/rolesauthorities/RolesAuthoritiesApplication.java
rename to spring-security-modules/spring-security-web-boot-1/src/main/java/com/baeldung/roles/rolesauthorities/RolesAuthoritiesApplication.java
diff --git a/spring-security-modules/spring-security-mvc-boot-1/src/main/java/com/baeldung/roles/rolesauthorities/config/MvcConfig.java b/spring-security-modules/spring-security-web-boot-1/src/main/java/com/baeldung/roles/rolesauthorities/config/MvcConfig.java
similarity index 100%
rename from spring-security-modules/spring-security-mvc-boot-1/src/main/java/com/baeldung/roles/rolesauthorities/config/MvcConfig.java
rename to spring-security-modules/spring-security-web-boot-1/src/main/java/com/baeldung/roles/rolesauthorities/config/MvcConfig.java
diff --git a/spring-security-modules/spring-security-mvc-boot-1/src/main/java/com/baeldung/roles/rolesauthorities/config/SecurityConfig.java b/spring-security-modules/spring-security-web-boot-1/src/main/java/com/baeldung/roles/rolesauthorities/config/SecurityConfig.java
similarity index 100%
rename from spring-security-modules/spring-security-mvc-boot-1/src/main/java/com/baeldung/roles/rolesauthorities/config/SecurityConfig.java
rename to spring-security-modules/spring-security-web-boot-1/src/main/java/com/baeldung/roles/rolesauthorities/config/SecurityConfig.java
diff --git a/spring-security-modules/spring-security-mvc-boot-1/src/main/java/com/baeldung/roles/rolesauthorities/model/Privilege.java b/spring-security-modules/spring-security-web-boot-1/src/main/java/com/baeldung/roles/rolesauthorities/model/Privilege.java
similarity index 100%
rename from spring-security-modules/spring-security-mvc-boot-1/src/main/java/com/baeldung/roles/rolesauthorities/model/Privilege.java
rename to spring-security-modules/spring-security-web-boot-1/src/main/java/com/baeldung/roles/rolesauthorities/model/Privilege.java
diff --git a/spring-security-modules/spring-security-mvc-boot-1/src/main/java/com/baeldung/roles/rolesauthorities/model/Role.java b/spring-security-modules/spring-security-web-boot-1/src/main/java/com/baeldung/roles/rolesauthorities/model/Role.java
similarity index 100%
rename from spring-security-modules/spring-security-mvc-boot-1/src/main/java/com/baeldung/roles/rolesauthorities/model/Role.java
rename to spring-security-modules/spring-security-web-boot-1/src/main/java/com/baeldung/roles/rolesauthorities/model/Role.java
diff --git a/spring-security-modules/spring-security-mvc-boot-1/src/main/java/com/baeldung/roles/rolesauthorities/model/User.java b/spring-security-modules/spring-security-web-boot-1/src/main/java/com/baeldung/roles/rolesauthorities/model/User.java
similarity index 100%
rename from spring-security-modules/spring-security-mvc-boot-1/src/main/java/com/baeldung/roles/rolesauthorities/model/User.java
rename to spring-security-modules/spring-security-web-boot-1/src/main/java/com/baeldung/roles/rolesauthorities/model/User.java
diff --git a/spring-security-modules/spring-security-mvc-boot-1/src/main/java/com/baeldung/roles/rolesauthorities/persistence/IUserService.java b/spring-security-modules/spring-security-web-boot-1/src/main/java/com/baeldung/roles/rolesauthorities/persistence/IUserService.java
similarity index 100%
rename from spring-security-modules/spring-security-mvc-boot-1/src/main/java/com/baeldung/roles/rolesauthorities/persistence/IUserService.java
rename to spring-security-modules/spring-security-web-boot-1/src/main/java/com/baeldung/roles/rolesauthorities/persistence/IUserService.java
diff --git a/spring-security-modules/spring-security-mvc-boot-1/src/main/java/com/baeldung/roles/rolesauthorities/persistence/PrivilegeRepository.java b/spring-security-modules/spring-security-web-boot-1/src/main/java/com/baeldung/roles/rolesauthorities/persistence/PrivilegeRepository.java
similarity index 100%
rename from spring-security-modules/spring-security-mvc-boot-1/src/main/java/com/baeldung/roles/rolesauthorities/persistence/PrivilegeRepository.java
rename to spring-security-modules/spring-security-web-boot-1/src/main/java/com/baeldung/roles/rolesauthorities/persistence/PrivilegeRepository.java
diff --git a/spring-security-modules/spring-security-mvc-boot-1/src/main/java/com/baeldung/roles/rolesauthorities/persistence/RoleRepository.java b/spring-security-modules/spring-security-web-boot-1/src/main/java/com/baeldung/roles/rolesauthorities/persistence/RoleRepository.java
similarity index 100%
rename from spring-security-modules/spring-security-mvc-boot-1/src/main/java/com/baeldung/roles/rolesauthorities/persistence/RoleRepository.java
rename to spring-security-modules/spring-security-web-boot-1/src/main/java/com/baeldung/roles/rolesauthorities/persistence/RoleRepository.java
diff --git a/spring-security-modules/spring-security-mvc-boot-1/src/main/java/com/baeldung/roles/rolesauthorities/persistence/SetupDataLoader.java b/spring-security-modules/spring-security-web-boot-1/src/main/java/com/baeldung/roles/rolesauthorities/persistence/SetupDataLoader.java
similarity index 100%
rename from spring-security-modules/spring-security-mvc-boot-1/src/main/java/com/baeldung/roles/rolesauthorities/persistence/SetupDataLoader.java
rename to spring-security-modules/spring-security-web-boot-1/src/main/java/com/baeldung/roles/rolesauthorities/persistence/SetupDataLoader.java
diff --git a/spring-security-modules/spring-security-mvc-boot-1/src/main/java/com/baeldung/roles/rolesauthorities/persistence/UserRepository.java b/spring-security-modules/spring-security-web-boot-1/src/main/java/com/baeldung/roles/rolesauthorities/persistence/UserRepository.java
similarity index 100%
rename from spring-security-modules/spring-security-mvc-boot-1/src/main/java/com/baeldung/roles/rolesauthorities/persistence/UserRepository.java
rename to spring-security-modules/spring-security-web-boot-1/src/main/java/com/baeldung/roles/rolesauthorities/persistence/UserRepository.java
diff --git a/spring-security-modules/spring-security-mvc-boot-1/src/main/java/com/baeldung/roles/rolesauthorities/persistence/UserService.java b/spring-security-modules/spring-security-web-boot-1/src/main/java/com/baeldung/roles/rolesauthorities/persistence/UserService.java
similarity index 100%
rename from spring-security-modules/spring-security-mvc-boot-1/src/main/java/com/baeldung/roles/rolesauthorities/persistence/UserService.java
rename to spring-security-modules/spring-security-web-boot-1/src/main/java/com/baeldung/roles/rolesauthorities/persistence/UserService.java
diff --git a/spring-security-modules/spring-security-mvc-boot-1/src/main/java/com/baeldung/roles/voter/MinuteBasedVoter.java b/spring-security-modules/spring-security-web-boot-1/src/main/java/com/baeldung/roles/voter/MinuteBasedVoter.java
similarity index 100%
rename from spring-security-modules/spring-security-mvc-boot-1/src/main/java/com/baeldung/roles/voter/MinuteBasedVoter.java
rename to spring-security-modules/spring-security-web-boot-1/src/main/java/com/baeldung/roles/voter/MinuteBasedVoter.java
diff --git a/spring-security-modules/spring-security-mvc-boot-1/src/main/java/com/baeldung/roles/voter/VoterApplication.java b/spring-security-modules/spring-security-web-boot-1/src/main/java/com/baeldung/roles/voter/VoterApplication.java
similarity index 100%
rename from spring-security-modules/spring-security-mvc-boot-1/src/main/java/com/baeldung/roles/voter/VoterApplication.java
rename to spring-security-modules/spring-security-web-boot-1/src/main/java/com/baeldung/roles/voter/VoterApplication.java
diff --git a/spring-security-modules/spring-security-mvc-boot-1/src/main/java/com/baeldung/roles/voter/VoterMvcConfig.java b/spring-security-modules/spring-security-web-boot-1/src/main/java/com/baeldung/roles/voter/VoterMvcConfig.java
similarity index 100%
rename from spring-security-modules/spring-security-mvc-boot-1/src/main/java/com/baeldung/roles/voter/VoterMvcConfig.java
rename to spring-security-modules/spring-security-web-boot-1/src/main/java/com/baeldung/roles/voter/VoterMvcConfig.java
diff --git a/spring-security-modules/spring-security-mvc-boot-1/src/main/java/com/baeldung/roles/voter/WebSecurityConfig.java b/spring-security-modules/spring-security-web-boot-1/src/main/java/com/baeldung/roles/voter/WebSecurityConfig.java
similarity index 100%
rename from spring-security-modules/spring-security-mvc-boot-1/src/main/java/com/baeldung/roles/voter/WebSecurityConfig.java
rename to spring-security-modules/spring-security-web-boot-1/src/main/java/com/baeldung/roles/voter/WebSecurityConfig.java
diff --git a/spring-security-modules/spring-security-mvc-boot-1/src/main/java/com/baeldung/roles/voter/XmlSecurityConfig.java b/spring-security-modules/spring-security-web-boot-1/src/main/java/com/baeldung/roles/voter/XmlSecurityConfig.java
similarity index 100%
rename from spring-security-modules/spring-security-mvc-boot-1/src/main/java/com/baeldung/roles/voter/XmlSecurityConfig.java
rename to spring-security-modules/spring-security-web-boot-1/src/main/java/com/baeldung/roles/voter/XmlSecurityConfig.java
diff --git a/spring-security-modules/spring-security-mvc-boot-1/src/main/resources/application-defaults.properties b/spring-security-modules/spring-security-web-boot-1/src/main/resources/application-defaults.properties
similarity index 100%
rename from spring-security-modules/spring-security-mvc-boot-1/src/main/resources/application-defaults.properties
rename to spring-security-modules/spring-security-web-boot-1/src/main/resources/application-defaults.properties
diff --git a/spring-security-modules/spring-security-mvc-boot-1/src/main/resources/application.properties b/spring-security-modules/spring-security-web-boot-1/src/main/resources/application.properties
similarity index 100%
rename from spring-security-modules/spring-security-mvc-boot-1/src/main/resources/application.properties
rename to spring-security-modules/spring-security-web-boot-1/src/main/resources/application.properties
diff --git a/spring-security-modules/spring-security-mvc-boot-1/src/main/resources/logback.xml b/spring-security-modules/spring-security-web-boot-1/src/main/resources/logback.xml
similarity index 100%
rename from spring-security-modules/spring-security-mvc-boot-1/src/main/resources/logback.xml
rename to spring-security-modules/spring-security-web-boot-1/src/main/resources/logback.xml
diff --git a/spring-security-modules/spring-security-mvc-boot-1/src/main/resources/persistence-h2.properties b/spring-security-modules/spring-security-web-boot-1/src/main/resources/persistence-h2.properties
similarity index 100%
rename from spring-security-modules/spring-security-mvc-boot-1/src/main/resources/persistence-h2.properties
rename to spring-security-modules/spring-security-web-boot-1/src/main/resources/persistence-h2.properties
diff --git a/spring-security-modules/spring-security-mvc-boot-1/src/main/resources/spring-security-custom-voter.xml b/spring-security-modules/spring-security-web-boot-1/src/main/resources/spring-security-custom-voter.xml
similarity index 100%
rename from spring-security-modules/spring-security-mvc-boot-1/src/main/resources/spring-security-custom-voter.xml
rename to spring-security-modules/spring-security-web-boot-1/src/main/resources/spring-security-custom-voter.xml
diff --git a/spring-security-modules/spring-security-mvc-boot-1/src/main/resources/spring-security-ip.xml b/spring-security-modules/spring-security-web-boot-1/src/main/resources/spring-security-ip.xml
similarity index 100%
rename from spring-security-modules/spring-security-mvc-boot-1/src/main/resources/spring-security-ip.xml
rename to spring-security-modules/spring-security-web-boot-1/src/main/resources/spring-security-ip.xml
diff --git a/spring-security-modules/spring-security-mvc-boot-1/src/main/resources/templates/403.html b/spring-security-modules/spring-security-web-boot-1/src/main/resources/templates/403.html
similarity index 100%
rename from spring-security-modules/spring-security-mvc-boot-1/src/main/resources/templates/403.html
rename to spring-security-modules/spring-security-web-boot-1/src/main/resources/templates/403.html
diff --git a/spring-security-modules/spring-security-mvc-boot-1/src/main/resources/templates/index.html b/spring-security-modules/spring-security-web-boot-1/src/main/resources/templates/index.html
similarity index 100%
rename from spring-security-modules/spring-security-mvc-boot-1/src/main/resources/templates/index.html
rename to spring-security-modules/spring-security-web-boot-1/src/main/resources/templates/index.html
diff --git a/spring-security-modules/spring-security-mvc-boot-1/src/main/resources/templates/login.html b/spring-security-modules/spring-security-web-boot-1/src/main/resources/templates/login.html
similarity index 100%
rename from spring-security-modules/spring-security-mvc-boot-1/src/main/resources/templates/login.html
rename to spring-security-modules/spring-security-web-boot-1/src/main/resources/templates/login.html
diff --git a/spring-security-modules/spring-security-mvc-boot-1/src/main/resources/templates/loginAdmin.html b/spring-security-modules/spring-security-web-boot-1/src/main/resources/templates/loginAdmin.html
similarity index 100%
rename from spring-security-modules/spring-security-mvc-boot-1/src/main/resources/templates/loginAdmin.html
rename to spring-security-modules/spring-security-web-boot-1/src/main/resources/templates/loginAdmin.html
diff --git a/spring-security-modules/spring-security-mvc-boot-1/src/main/resources/templates/loginUser.html b/spring-security-modules/spring-security-web-boot-1/src/main/resources/templates/loginUser.html
similarity index 100%
rename from spring-security-modules/spring-security-mvc-boot-1/src/main/resources/templates/loginUser.html
rename to spring-security-modules/spring-security-web-boot-1/src/main/resources/templates/loginUser.html
diff --git a/spring-security-modules/spring-security-mvc-boot-1/src/main/resources/templates/multipleHttpElems/login.html b/spring-security-modules/spring-security-web-boot-1/src/main/resources/templates/multipleHttpElems/login.html
similarity index 100%
rename from spring-security-modules/spring-security-mvc-boot-1/src/main/resources/templates/multipleHttpElems/login.html
rename to spring-security-modules/spring-security-web-boot-1/src/main/resources/templates/multipleHttpElems/login.html
diff --git a/spring-security-modules/spring-security-mvc-boot-1/src/main/resources/templates/multipleHttpElems/loginWithWarning.html b/spring-security-modules/spring-security-web-boot-1/src/main/resources/templates/multipleHttpElems/loginWithWarning.html
similarity index 100%
rename from spring-security-modules/spring-security-mvc-boot-1/src/main/resources/templates/multipleHttpElems/loginWithWarning.html
rename to spring-security-modules/spring-security-web-boot-1/src/main/resources/templates/multipleHttpElems/loginWithWarning.html
diff --git a/spring-security-modules/spring-security-mvc-boot-1/src/main/resources/templates/multipleHttpElems/multipleHttpLinks.html b/spring-security-modules/spring-security-web-boot-1/src/main/resources/templates/multipleHttpElems/multipleHttpLinks.html
similarity index 100%
rename from spring-security-modules/spring-security-mvc-boot-1/src/main/resources/templates/multipleHttpElems/multipleHttpLinks.html
rename to spring-security-modules/spring-security-web-boot-1/src/main/resources/templates/multipleHttpElems/multipleHttpLinks.html
diff --git a/spring-security-modules/spring-security-mvc-boot-1/src/main/resources/templates/multipleHttpElems/myAdminPage.html b/spring-security-modules/spring-security-web-boot-1/src/main/resources/templates/multipleHttpElems/myAdminPage.html
similarity index 100%
rename from spring-security-modules/spring-security-mvc-boot-1/src/main/resources/templates/multipleHttpElems/myAdminPage.html
rename to spring-security-modules/spring-security-web-boot-1/src/main/resources/templates/multipleHttpElems/myAdminPage.html
diff --git a/spring-security-modules/spring-security-mvc-boot-1/src/main/resources/templates/multipleHttpElems/myGuestPage.html b/spring-security-modules/spring-security-web-boot-1/src/main/resources/templates/multipleHttpElems/myGuestPage.html
similarity index 100%
rename from spring-security-modules/spring-security-mvc-boot-1/src/main/resources/templates/multipleHttpElems/myGuestPage.html
rename to spring-security-modules/spring-security-web-boot-1/src/main/resources/templates/multipleHttpElems/myGuestPage.html
diff --git a/spring-security-modules/spring-security-mvc-boot-1/src/main/resources/templates/multipleHttpElems/myPrivateUserPage.html b/spring-security-modules/spring-security-web-boot-1/src/main/resources/templates/multipleHttpElems/myPrivateUserPage.html
similarity index 100%
rename from spring-security-modules/spring-security-mvc-boot-1/src/main/resources/templates/multipleHttpElems/myPrivateUserPage.html
rename to spring-security-modules/spring-security-web-boot-1/src/main/resources/templates/multipleHttpElems/myPrivateUserPage.html
diff --git a/spring-security-modules/spring-security-mvc-boot-1/src/main/resources/templates/multipleHttpElems/myUserPage.html b/spring-security-modules/spring-security-web-boot-1/src/main/resources/templates/multipleHttpElems/myUserPage.html
similarity index 100%
rename from spring-security-modules/spring-security-mvc-boot-1/src/main/resources/templates/multipleHttpElems/myUserPage.html
rename to spring-security-modules/spring-security-web-boot-1/src/main/resources/templates/multipleHttpElems/myUserPage.html
diff --git a/spring-security-modules/spring-security-mvc-boot-1/src/main/resources/templates/private.html b/spring-security-modules/spring-security-web-boot-1/src/main/resources/templates/private.html
similarity index 100%
rename from spring-security-modules/spring-security-mvc-boot-1/src/main/resources/templates/private.html
rename to spring-security-modules/spring-security-web-boot-1/src/main/resources/templates/private.html
diff --git a/spring-security-modules/spring-security-mvc-boot-1/src/main/resources/templates/rolesauthorities/home.html b/spring-security-modules/spring-security-web-boot-1/src/main/resources/templates/rolesauthorities/home.html
similarity index 100%
rename from spring-security-modules/spring-security-mvc-boot-1/src/main/resources/templates/rolesauthorities/home.html
rename to spring-security-modules/spring-security-web-boot-1/src/main/resources/templates/rolesauthorities/home.html
diff --git a/spring-security-modules/spring-security-mvc-boot-1/src/main/resources/templates/rolesauthorities/login.html b/spring-security-modules/spring-security-web-boot-1/src/main/resources/templates/rolesauthorities/login.html
similarity index 100%
rename from spring-security-modules/spring-security-mvc-boot-1/src/main/resources/templates/rolesauthorities/login.html
rename to spring-security-modules/spring-security-web-boot-1/src/main/resources/templates/rolesauthorities/login.html
diff --git a/spring-security-modules/spring-security-mvc-boot-1/src/main/resources/templates/rolesauthorities/protectedbyauthority.html b/spring-security-modules/spring-security-web-boot-1/src/main/resources/templates/rolesauthorities/protectedbyauthority.html
similarity index 100%
rename from spring-security-modules/spring-security-mvc-boot-1/src/main/resources/templates/rolesauthorities/protectedbyauthority.html
rename to spring-security-modules/spring-security-web-boot-1/src/main/resources/templates/rolesauthorities/protectedbyauthority.html
diff --git a/spring-security-modules/spring-security-mvc-boot-1/src/main/resources/templates/rolesauthorities/protectedbynothing.html b/spring-security-modules/spring-security-web-boot-1/src/main/resources/templates/rolesauthorities/protectedbynothing.html
similarity index 100%
rename from spring-security-modules/spring-security-mvc-boot-1/src/main/resources/templates/rolesauthorities/protectedbynothing.html
rename to spring-security-modules/spring-security-web-boot-1/src/main/resources/templates/rolesauthorities/protectedbynothing.html
diff --git a/spring-security-modules/spring-security-mvc-boot-1/src/main/resources/templates/rolesauthorities/protectedbyrole.html b/spring-security-modules/spring-security-web-boot-1/src/main/resources/templates/rolesauthorities/protectedbyrole.html
similarity index 100%
rename from spring-security-modules/spring-security-mvc-boot-1/src/main/resources/templates/rolesauthorities/protectedbyrole.html
rename to spring-security-modules/spring-security-web-boot-1/src/main/resources/templates/rolesauthorities/protectedbyrole.html
diff --git a/spring-security-modules/spring-security-mvc-boot-1/src/main/resources/templates/ssl/welcome.html b/spring-security-modules/spring-security-web-boot-1/src/main/resources/templates/ssl/welcome.html
similarity index 100%
rename from spring-security-modules/spring-security-mvc-boot-1/src/main/resources/templates/ssl/welcome.html
rename to spring-security-modules/spring-security-web-boot-1/src/main/resources/templates/ssl/welcome.html
diff --git a/spring-security-modules/spring-security-mvc-boot-1/src/test/java/com/baeldung/relationships/SpringDataWithSecurityIntegrationTest.java b/spring-security-modules/spring-security-web-boot-1/src/test/java/com/baeldung/relationships/SpringDataWithSecurityIntegrationTest.java
similarity index 100%
rename from spring-security-modules/spring-security-mvc-boot-1/src/test/java/com/baeldung/relationships/SpringDataWithSecurityIntegrationTest.java
rename to spring-security-modules/spring-security-web-boot-1/src/test/java/com/baeldung/relationships/SpringDataWithSecurityIntegrationTest.java
diff --git a/spring-security-modules/spring-security-mvc-boot-1/src/test/java/com/baeldung/roles/SpringContextTest.java b/spring-security-modules/spring-security-web-boot-1/src/test/java/com/baeldung/roles/SpringContextTest.java
similarity index 100%
rename from spring-security-modules/spring-security-mvc-boot-1/src/test/java/com/baeldung/roles/SpringContextTest.java
rename to spring-security-modules/spring-security-web-boot-1/src/test/java/com/baeldung/roles/SpringContextTest.java
diff --git a/spring-security-modules/spring-security-mvc-boot-1/src/test/java/com/baeldung/roles/web/ApplicationLiveTest.java b/spring-security-modules/spring-security-web-boot-1/src/test/java/com/baeldung/roles/web/ApplicationLiveTest.java
similarity index 100%
rename from spring-security-modules/spring-security-mvc-boot-1/src/test/java/com/baeldung/roles/web/ApplicationLiveTest.java
rename to spring-security-modules/spring-security-web-boot-1/src/test/java/com/baeldung/roles/web/ApplicationLiveTest.java
diff --git a/spring-security-modules/spring-security-mvc-boot-1/src/test/java/com/baeldung/roles/web/CustomUserDetailsServiceIntegrationTest.java b/spring-security-modules/spring-security-web-boot-1/src/test/java/com/baeldung/roles/web/CustomUserDetailsServiceIntegrationTest.java
similarity index 100%
rename from spring-security-modules/spring-security-mvc-boot-1/src/test/java/com/baeldung/roles/web/CustomUserDetailsServiceIntegrationTest.java
rename to spring-security-modules/spring-security-web-boot-1/src/test/java/com/baeldung/roles/web/CustomUserDetailsServiceIntegrationTest.java
diff --git a/spring-security-modules/spring-security-mvc-boot-1/src/test/java/com/baeldung/roles/web/IpLiveTest.java b/spring-security-modules/spring-security-web-boot-1/src/test/java/com/baeldung/roles/web/IpLiveTest.java
similarity index 100%
rename from spring-security-modules/spring-security-mvc-boot-1/src/test/java/com/baeldung/roles/web/IpLiveTest.java
rename to spring-security-modules/spring-security-web-boot-1/src/test/java/com/baeldung/roles/web/IpLiveTest.java

From 8eede4e9f239ef347ce1ff3a8079955f757a5386 Mon Sep 17 00:00:00 2001
From: sampadawagde <sampada.wagde@gmail.com>
Date: Thu, 13 Aug 2020 12:54:12 +0530
Subject: [PATCH 091/156] JAVA-67:renamed spring-security-mvc-boot-2 to
 spring-security-web-boot-2

---
 .../README.md                                       |   0
 .../WebContent/META-INF/MANIFEST.MF                 |   0
 .../pom.xml                                         |   4 ++--
 .../CustomLogoutApplication.java                    |   0
 .../customlogouthandler/MvcConfiguration.java       |   0
 .../customlogouthandler/services/UserCache.java     |   0
 .../com/baeldung/customlogouthandler/user/User.java |   0
 .../customlogouthandler/user/UserUtils.java         |   0
 .../web/CustomLogoutHandler.java                    |   0
 .../customlogouthandler/web/UserController.java     |   0
 .../h2/H2JdbcAuthenticationApplication.java         |   0
 .../h2/config/SecurityConfiguration.java            |   0
 .../jdbcauthentication/h2/web/UserController.java   |   0
 .../mysql/MySqlJdbcAuthenticationApplication.java   |   0
 .../mysql/config/SecurityConfiguration.java         |   0
 .../mysql/web/UserController.java                   |   0
 .../PostgreJdbcAuthenticationApplication.java       |   0
 .../postgre/config/SecurityConfiguration.java       |   0
 .../postgre/web/UserController.java                 |   0
 .../com/baeldung/loginredirect/LoginPageFilter.java |   0
 .../loginredirect/LoginPageInterceptor.java         |   0
 .../loginredirect/LoginRedirectApplication.java     |   0
 .../loginredirect/LoginRedirectMvcConfig.java       |   0
 .../loginredirect/LoginRedirectSecurityConfig.java  |   0
 .../com/baeldung/loginredirect/UsersController.java |   0
 .../CustomAuthenticationProvider.java               |   0
 .../MultipleAuthController.java                     |   0
 .../MultipleAuthProvidersApplication.java           |   0
 .../MultipleAuthProvidersSecurityConfig.java        |   0
 .../MultipleEntryPointsApplication.java             |   0
 .../MultipleEntryPointsSecurityConfig.java          |   0
 .../multipleentrypoints/PagesController.java        |   0
 .../multiplelogin/MultipleLoginApplication.java     |   0
 .../multiplelogin/MultipleLoginMvcConfig.java       |   0
 .../multiplelogin/MultipleLoginSecurityConfig.java  |   0
 .../com/baeldung/multiplelogin/UsersController.java |   0
 .../com/baeldung/ssl/HttpsEnabledApplication.java   |   0
 .../main/java/com/baeldung/ssl/SecurityConfig.java  |   0
 .../java/com/baeldung/ssl/WelcomeController.java    |   0
 .../application-customlogouthandler.properties      |   0
 .../main/resources/application-defaults.properties  |   0
 .../src/main/resources/application-mysql.properties |   0
 .../main/resources/application-postgre.properties   |   0
 .../src/main/resources/application-ssl.properties   |   0
 .../src/main/resources/application.properties       |   0
 .../src/main/resources/data-mysql.sql               |   0
 .../src/main/resources/data-postgre.sql             |   0
 .../src/main/resources/keystore/baeldung.p12        | Bin
 .../src/main/resources/logback.xml                  |   0
 .../src/main/resources/persistence-h2.properties    |   0
 .../src/main/resources/schema-mysql.sql             |   0
 .../src/main/resources/schema-postgre.sql           |   0
 .../resources/spring-security-login-redirect.xml    |   0
 .../spring-security-multiple-auth-providers.xml     |   0
 .../resources/spring-security-multiple-entry.xml    |   0
 .../src/main/resources/templates/403.html           |   0
 .../src/main/resources/templates/adminPage.html     |   0
 .../src/main/resources/templates/index.html         |   0
 .../src/main/resources/templates/login.html         |   0
 .../src/main/resources/templates/loginAdmin.html    |   0
 .../src/main/resources/templates/loginUser.html     |   0
 .../templates/multipleHttpElems/login.html          |   0
 .../multipleHttpElems/loginWithWarning.html         |   0
 .../multipleHttpElems/multipleHttpLinks.html        |   0
 .../templates/multipleHttpElems/myAdminPage.html    |   0
 .../templates/multipleHttpElems/myGuestPage.html    |   0
 .../multipleHttpElems/myPrivateUserPage.html        |   0
 .../templates/multipleHttpElems/myUserPage.html     |   0
 .../src/main/resources/templates/private.html       |   0
 .../main/resources/templates/protectedLinks.html    |   0
 .../src/main/resources/templates/ssl/welcome.html   |   0
 .../src/main/resources/templates/userMainPage.html  |   0
 .../src/main/resources/templates/userPage.html      |   0
 .../CustomLogoutHandlerIntegrationTest.java         |   0
 .../jdbcauthentication/h2/SpringContextTest.java    |   0
 .../h2/web/UserControllerLiveTest.java              |   0
 .../mysql/web/UserControllerLiveTest.java           |   0
 .../postgre/web/UserControllerLiveTest.java         |   0
 .../web/HttpsApplicationIntegrationTest.java        |   0
 ...ipleAuthProvidersApplicationIntegrationTest.java |   0
 .../web/MultipleEntryPointsIntegrationTest.java     |   0
 .../test/resources/customlogouthandler/after.sql    |   0
 .../customlogouthandler/application.properties      |   0
 .../test/resources/customlogouthandler/before.sql   |   0
 84 files changed, 2 insertions(+), 2 deletions(-)
 rename spring-security-modules/{spring-security-mvc-boot-2 => spring-security-web-boot-2}/README.md (100%)
 rename spring-security-modules/{spring-security-mvc-boot-2 => spring-security-web-boot-2}/WebContent/META-INF/MANIFEST.MF (100%)
 rename spring-security-modules/{spring-security-mvc-boot-2 => spring-security-web-boot-2}/pom.xml (99%)
 rename spring-security-modules/{spring-security-mvc-boot-2 => spring-security-web-boot-2}/src/main/java/com/baeldung/customlogouthandler/CustomLogoutApplication.java (100%)
 rename spring-security-modules/{spring-security-mvc-boot-2 => spring-security-web-boot-2}/src/main/java/com/baeldung/customlogouthandler/MvcConfiguration.java (100%)
 rename spring-security-modules/{spring-security-mvc-boot-2 => spring-security-web-boot-2}/src/main/java/com/baeldung/customlogouthandler/services/UserCache.java (100%)
 rename spring-security-modules/{spring-security-mvc-boot-2 => spring-security-web-boot-2}/src/main/java/com/baeldung/customlogouthandler/user/User.java (100%)
 rename spring-security-modules/{spring-security-mvc-boot-2 => spring-security-web-boot-2}/src/main/java/com/baeldung/customlogouthandler/user/UserUtils.java (100%)
 rename spring-security-modules/{spring-security-mvc-boot-2 => spring-security-web-boot-2}/src/main/java/com/baeldung/customlogouthandler/web/CustomLogoutHandler.java (100%)
 rename spring-security-modules/{spring-security-mvc-boot-2 => spring-security-web-boot-2}/src/main/java/com/baeldung/customlogouthandler/web/UserController.java (100%)
 rename spring-security-modules/{spring-security-mvc-boot-2 => spring-security-web-boot-2}/src/main/java/com/baeldung/jdbcauthentication/h2/H2JdbcAuthenticationApplication.java (100%)
 rename spring-security-modules/{spring-security-mvc-boot-2 => spring-security-web-boot-2}/src/main/java/com/baeldung/jdbcauthentication/h2/config/SecurityConfiguration.java (100%)
 rename spring-security-modules/{spring-security-mvc-boot-2 => spring-security-web-boot-2}/src/main/java/com/baeldung/jdbcauthentication/h2/web/UserController.java (100%)
 rename spring-security-modules/{spring-security-mvc-boot-2 => spring-security-web-boot-2}/src/main/java/com/baeldung/jdbcauthentication/mysql/MySqlJdbcAuthenticationApplication.java (100%)
 rename spring-security-modules/{spring-security-mvc-boot-2 => spring-security-web-boot-2}/src/main/java/com/baeldung/jdbcauthentication/mysql/config/SecurityConfiguration.java (100%)
 rename spring-security-modules/{spring-security-mvc-boot-2 => spring-security-web-boot-2}/src/main/java/com/baeldung/jdbcauthentication/mysql/web/UserController.java (100%)
 rename spring-security-modules/{spring-security-mvc-boot-2 => spring-security-web-boot-2}/src/main/java/com/baeldung/jdbcauthentication/postgre/PostgreJdbcAuthenticationApplication.java (100%)
 rename spring-security-modules/{spring-security-mvc-boot-2 => spring-security-web-boot-2}/src/main/java/com/baeldung/jdbcauthentication/postgre/config/SecurityConfiguration.java (100%)
 rename spring-security-modules/{spring-security-mvc-boot-2 => spring-security-web-boot-2}/src/main/java/com/baeldung/jdbcauthentication/postgre/web/UserController.java (100%)
 rename spring-security-modules/{spring-security-mvc-boot-2 => spring-security-web-boot-2}/src/main/java/com/baeldung/loginredirect/LoginPageFilter.java (100%)
 rename spring-security-modules/{spring-security-mvc-boot-2 => spring-security-web-boot-2}/src/main/java/com/baeldung/loginredirect/LoginPageInterceptor.java (100%)
 rename spring-security-modules/{spring-security-mvc-boot-2 => spring-security-web-boot-2}/src/main/java/com/baeldung/loginredirect/LoginRedirectApplication.java (100%)
 rename spring-security-modules/{spring-security-mvc-boot-2 => spring-security-web-boot-2}/src/main/java/com/baeldung/loginredirect/LoginRedirectMvcConfig.java (100%)
 rename spring-security-modules/{spring-security-mvc-boot-2 => spring-security-web-boot-2}/src/main/java/com/baeldung/loginredirect/LoginRedirectSecurityConfig.java (100%)
 rename spring-security-modules/{spring-security-mvc-boot-2 => spring-security-web-boot-2}/src/main/java/com/baeldung/loginredirect/UsersController.java (100%)
 rename spring-security-modules/{spring-security-mvc-boot-2 => spring-security-web-boot-2}/src/main/java/com/baeldung/multipleauthproviders/CustomAuthenticationProvider.java (100%)
 rename spring-security-modules/{spring-security-mvc-boot-2 => spring-security-web-boot-2}/src/main/java/com/baeldung/multipleauthproviders/MultipleAuthController.java (100%)
 rename spring-security-modules/{spring-security-mvc-boot-2 => spring-security-web-boot-2}/src/main/java/com/baeldung/multipleauthproviders/MultipleAuthProvidersApplication.java (100%)
 rename spring-security-modules/{spring-security-mvc-boot-2 => spring-security-web-boot-2}/src/main/java/com/baeldung/multipleauthproviders/MultipleAuthProvidersSecurityConfig.java (100%)
 rename spring-security-modules/{spring-security-mvc-boot-2 => spring-security-web-boot-2}/src/main/java/com/baeldung/multipleentrypoints/MultipleEntryPointsApplication.java (100%)
 rename spring-security-modules/{spring-security-mvc-boot-2 => spring-security-web-boot-2}/src/main/java/com/baeldung/multipleentrypoints/MultipleEntryPointsSecurityConfig.java (100%)
 rename spring-security-modules/{spring-security-mvc-boot-2 => spring-security-web-boot-2}/src/main/java/com/baeldung/multipleentrypoints/PagesController.java (100%)
 rename spring-security-modules/{spring-security-mvc-boot-2 => spring-security-web-boot-2}/src/main/java/com/baeldung/multiplelogin/MultipleLoginApplication.java (100%)
 rename spring-security-modules/{spring-security-mvc-boot-2 => spring-security-web-boot-2}/src/main/java/com/baeldung/multiplelogin/MultipleLoginMvcConfig.java (100%)
 rename spring-security-modules/{spring-security-mvc-boot-2 => spring-security-web-boot-2}/src/main/java/com/baeldung/multiplelogin/MultipleLoginSecurityConfig.java (100%)
 rename spring-security-modules/{spring-security-mvc-boot-2 => spring-security-web-boot-2}/src/main/java/com/baeldung/multiplelogin/UsersController.java (100%)
 rename spring-security-modules/{spring-security-mvc-boot-2 => spring-security-web-boot-2}/src/main/java/com/baeldung/ssl/HttpsEnabledApplication.java (100%)
 rename spring-security-modules/{spring-security-mvc-boot-2 => spring-security-web-boot-2}/src/main/java/com/baeldung/ssl/SecurityConfig.java (100%)
 rename spring-security-modules/{spring-security-mvc-boot-2 => spring-security-web-boot-2}/src/main/java/com/baeldung/ssl/WelcomeController.java (100%)
 rename spring-security-modules/{spring-security-mvc-boot-2 => spring-security-web-boot-2}/src/main/resources/application-customlogouthandler.properties (100%)
 rename spring-security-modules/{spring-security-mvc-boot-2 => spring-security-web-boot-2}/src/main/resources/application-defaults.properties (100%)
 rename spring-security-modules/{spring-security-mvc-boot-2 => spring-security-web-boot-2}/src/main/resources/application-mysql.properties (100%)
 rename spring-security-modules/{spring-security-mvc-boot-2 => spring-security-web-boot-2}/src/main/resources/application-postgre.properties (100%)
 rename spring-security-modules/{spring-security-mvc-boot-2 => spring-security-web-boot-2}/src/main/resources/application-ssl.properties (100%)
 rename spring-security-modules/{spring-security-mvc-boot-2 => spring-security-web-boot-2}/src/main/resources/application.properties (100%)
 rename spring-security-modules/{spring-security-mvc-boot-2 => spring-security-web-boot-2}/src/main/resources/data-mysql.sql (100%)
 rename spring-security-modules/{spring-security-mvc-boot-2 => spring-security-web-boot-2}/src/main/resources/data-postgre.sql (100%)
 rename spring-security-modules/{spring-security-mvc-boot-2 => spring-security-web-boot-2}/src/main/resources/keystore/baeldung.p12 (100%)
 rename spring-security-modules/{spring-security-mvc-boot-2 => spring-security-web-boot-2}/src/main/resources/logback.xml (100%)
 rename spring-security-modules/{spring-security-mvc-boot-2 => spring-security-web-boot-2}/src/main/resources/persistence-h2.properties (100%)
 rename spring-security-modules/{spring-security-mvc-boot-2 => spring-security-web-boot-2}/src/main/resources/schema-mysql.sql (100%)
 rename spring-security-modules/{spring-security-mvc-boot-2 => spring-security-web-boot-2}/src/main/resources/schema-postgre.sql (100%)
 rename spring-security-modules/{spring-security-mvc-boot-2 => spring-security-web-boot-2}/src/main/resources/spring-security-login-redirect.xml (100%)
 rename spring-security-modules/{spring-security-mvc-boot-2 => spring-security-web-boot-2}/src/main/resources/spring-security-multiple-auth-providers.xml (100%)
 rename spring-security-modules/{spring-security-mvc-boot-2 => spring-security-web-boot-2}/src/main/resources/spring-security-multiple-entry.xml (100%)
 rename spring-security-modules/{spring-security-mvc-boot-2 => spring-security-web-boot-2}/src/main/resources/templates/403.html (100%)
 rename spring-security-modules/{spring-security-mvc-boot-2 => spring-security-web-boot-2}/src/main/resources/templates/adminPage.html (100%)
 rename spring-security-modules/{spring-security-mvc-boot-2 => spring-security-web-boot-2}/src/main/resources/templates/index.html (100%)
 rename spring-security-modules/{spring-security-mvc-boot-2 => spring-security-web-boot-2}/src/main/resources/templates/login.html (100%)
 rename spring-security-modules/{spring-security-mvc-boot-2 => spring-security-web-boot-2}/src/main/resources/templates/loginAdmin.html (100%)
 rename spring-security-modules/{spring-security-mvc-boot-2 => spring-security-web-boot-2}/src/main/resources/templates/loginUser.html (100%)
 rename spring-security-modules/{spring-security-mvc-boot-2 => spring-security-web-boot-2}/src/main/resources/templates/multipleHttpElems/login.html (100%)
 rename spring-security-modules/{spring-security-mvc-boot-2 => spring-security-web-boot-2}/src/main/resources/templates/multipleHttpElems/loginWithWarning.html (100%)
 rename spring-security-modules/{spring-security-mvc-boot-2 => spring-security-web-boot-2}/src/main/resources/templates/multipleHttpElems/multipleHttpLinks.html (100%)
 rename spring-security-modules/{spring-security-mvc-boot-2 => spring-security-web-boot-2}/src/main/resources/templates/multipleHttpElems/myAdminPage.html (100%)
 rename spring-security-modules/{spring-security-mvc-boot-2 => spring-security-web-boot-2}/src/main/resources/templates/multipleHttpElems/myGuestPage.html (100%)
 rename spring-security-modules/{spring-security-mvc-boot-2 => spring-security-web-boot-2}/src/main/resources/templates/multipleHttpElems/myPrivateUserPage.html (100%)
 rename spring-security-modules/{spring-security-mvc-boot-2 => spring-security-web-boot-2}/src/main/resources/templates/multipleHttpElems/myUserPage.html (100%)
 rename spring-security-modules/{spring-security-mvc-boot-2 => spring-security-web-boot-2}/src/main/resources/templates/private.html (100%)
 rename spring-security-modules/{spring-security-mvc-boot-2 => spring-security-web-boot-2}/src/main/resources/templates/protectedLinks.html (100%)
 rename spring-security-modules/{spring-security-mvc-boot-2 => spring-security-web-boot-2}/src/main/resources/templates/ssl/welcome.html (100%)
 rename spring-security-modules/{spring-security-mvc-boot-2 => spring-security-web-boot-2}/src/main/resources/templates/userMainPage.html (100%)
 rename spring-security-modules/{spring-security-mvc-boot-2 => spring-security-web-boot-2}/src/main/resources/templates/userPage.html (100%)
 rename spring-security-modules/{spring-security-mvc-boot-2 => spring-security-web-boot-2}/src/test/java/com/baeldung/customlogouthandler/CustomLogoutHandlerIntegrationTest.java (100%)
 rename spring-security-modules/{spring-security-mvc-boot-2 => spring-security-web-boot-2}/src/test/java/com/baeldung/jdbcauthentication/h2/SpringContextTest.java (100%)
 rename spring-security-modules/{spring-security-mvc-boot-2 => spring-security-web-boot-2}/src/test/java/com/baeldung/jdbcauthentication/h2/web/UserControllerLiveTest.java (100%)
 rename spring-security-modules/{spring-security-mvc-boot-2 => spring-security-web-boot-2}/src/test/java/com/baeldung/jdbcauthentication/mysql/web/UserControllerLiveTest.java (100%)
 rename spring-security-modules/{spring-security-mvc-boot-2 => spring-security-web-boot-2}/src/test/java/com/baeldung/jdbcauthentication/postgre/web/UserControllerLiveTest.java (100%)
 rename spring-security-modules/{spring-security-mvc-boot-2 => spring-security-web-boot-2}/src/test/java/com/baeldung/web/HttpsApplicationIntegrationTest.java (100%)
 rename spring-security-modules/{spring-security-mvc-boot-2 => spring-security-web-boot-2}/src/test/java/com/baeldung/web/MultipleAuthProvidersApplicationIntegrationTest.java (100%)
 rename spring-security-modules/{spring-security-mvc-boot-2 => spring-security-web-boot-2}/src/test/java/com/baeldung/web/MultipleEntryPointsIntegrationTest.java (100%)
 rename spring-security-modules/{spring-security-mvc-boot-2 => spring-security-web-boot-2}/src/test/resources/customlogouthandler/after.sql (100%)
 rename spring-security-modules/{spring-security-mvc-boot-2 => spring-security-web-boot-2}/src/test/resources/customlogouthandler/application.properties (100%)
 rename spring-security-modules/{spring-security-mvc-boot-2 => spring-security-web-boot-2}/src/test/resources/customlogouthandler/before.sql (100%)

diff --git a/spring-security-modules/spring-security-mvc-boot-2/README.md b/spring-security-modules/spring-security-web-boot-2/README.md
similarity index 100%
rename from spring-security-modules/spring-security-mvc-boot-2/README.md
rename to spring-security-modules/spring-security-web-boot-2/README.md
diff --git a/spring-security-modules/spring-security-mvc-boot-2/WebContent/META-INF/MANIFEST.MF b/spring-security-modules/spring-security-web-boot-2/WebContent/META-INF/MANIFEST.MF
similarity index 100%
rename from spring-security-modules/spring-security-mvc-boot-2/WebContent/META-INF/MANIFEST.MF
rename to spring-security-modules/spring-security-web-boot-2/WebContent/META-INF/MANIFEST.MF
diff --git a/spring-security-modules/spring-security-mvc-boot-2/pom.xml b/spring-security-modules/spring-security-web-boot-2/pom.xml
similarity index 99%
rename from spring-security-modules/spring-security-mvc-boot-2/pom.xml
rename to spring-security-modules/spring-security-web-boot-2/pom.xml
index 668eb04cd9..ca357509a3 100644
--- a/spring-security-modules/spring-security-mvc-boot-2/pom.xml
+++ b/spring-security-modules/spring-security-web-boot-2/pom.xml
@@ -3,9 +3,9 @@
          xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
          xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
     <modelVersion>4.0.0</modelVersion>
-    <artifactId>spring-security-mvc-boot-2</artifactId>
+    <artifactId>spring-security-web-boot-2</artifactId>
     <version>0.0.1-SNAPSHOT</version>
-    <name>spring-security-mvc-boot-2</name>
+    <name>spring-security-web-boot-2</name>
     <packaging>war</packaging>
     <description>Spring Security MVC Boot - 2</description>
 
diff --git a/spring-security-modules/spring-security-mvc-boot-2/src/main/java/com/baeldung/customlogouthandler/CustomLogoutApplication.java b/spring-security-modules/spring-security-web-boot-2/src/main/java/com/baeldung/customlogouthandler/CustomLogoutApplication.java
similarity index 100%
rename from spring-security-modules/spring-security-mvc-boot-2/src/main/java/com/baeldung/customlogouthandler/CustomLogoutApplication.java
rename to spring-security-modules/spring-security-web-boot-2/src/main/java/com/baeldung/customlogouthandler/CustomLogoutApplication.java
diff --git a/spring-security-modules/spring-security-mvc-boot-2/src/main/java/com/baeldung/customlogouthandler/MvcConfiguration.java b/spring-security-modules/spring-security-web-boot-2/src/main/java/com/baeldung/customlogouthandler/MvcConfiguration.java
similarity index 100%
rename from spring-security-modules/spring-security-mvc-boot-2/src/main/java/com/baeldung/customlogouthandler/MvcConfiguration.java
rename to spring-security-modules/spring-security-web-boot-2/src/main/java/com/baeldung/customlogouthandler/MvcConfiguration.java
diff --git a/spring-security-modules/spring-security-mvc-boot-2/src/main/java/com/baeldung/customlogouthandler/services/UserCache.java b/spring-security-modules/spring-security-web-boot-2/src/main/java/com/baeldung/customlogouthandler/services/UserCache.java
similarity index 100%
rename from spring-security-modules/spring-security-mvc-boot-2/src/main/java/com/baeldung/customlogouthandler/services/UserCache.java
rename to spring-security-modules/spring-security-web-boot-2/src/main/java/com/baeldung/customlogouthandler/services/UserCache.java
diff --git a/spring-security-modules/spring-security-mvc-boot-2/src/main/java/com/baeldung/customlogouthandler/user/User.java b/spring-security-modules/spring-security-web-boot-2/src/main/java/com/baeldung/customlogouthandler/user/User.java
similarity index 100%
rename from spring-security-modules/spring-security-mvc-boot-2/src/main/java/com/baeldung/customlogouthandler/user/User.java
rename to spring-security-modules/spring-security-web-boot-2/src/main/java/com/baeldung/customlogouthandler/user/User.java
diff --git a/spring-security-modules/spring-security-mvc-boot-2/src/main/java/com/baeldung/customlogouthandler/user/UserUtils.java b/spring-security-modules/spring-security-web-boot-2/src/main/java/com/baeldung/customlogouthandler/user/UserUtils.java
similarity index 100%
rename from spring-security-modules/spring-security-mvc-boot-2/src/main/java/com/baeldung/customlogouthandler/user/UserUtils.java
rename to spring-security-modules/spring-security-web-boot-2/src/main/java/com/baeldung/customlogouthandler/user/UserUtils.java
diff --git a/spring-security-modules/spring-security-mvc-boot-2/src/main/java/com/baeldung/customlogouthandler/web/CustomLogoutHandler.java b/spring-security-modules/spring-security-web-boot-2/src/main/java/com/baeldung/customlogouthandler/web/CustomLogoutHandler.java
similarity index 100%
rename from spring-security-modules/spring-security-mvc-boot-2/src/main/java/com/baeldung/customlogouthandler/web/CustomLogoutHandler.java
rename to spring-security-modules/spring-security-web-boot-2/src/main/java/com/baeldung/customlogouthandler/web/CustomLogoutHandler.java
diff --git a/spring-security-modules/spring-security-mvc-boot-2/src/main/java/com/baeldung/customlogouthandler/web/UserController.java b/spring-security-modules/spring-security-web-boot-2/src/main/java/com/baeldung/customlogouthandler/web/UserController.java
similarity index 100%
rename from spring-security-modules/spring-security-mvc-boot-2/src/main/java/com/baeldung/customlogouthandler/web/UserController.java
rename to spring-security-modules/spring-security-web-boot-2/src/main/java/com/baeldung/customlogouthandler/web/UserController.java
diff --git a/spring-security-modules/spring-security-mvc-boot-2/src/main/java/com/baeldung/jdbcauthentication/h2/H2JdbcAuthenticationApplication.java b/spring-security-modules/spring-security-web-boot-2/src/main/java/com/baeldung/jdbcauthentication/h2/H2JdbcAuthenticationApplication.java
similarity index 100%
rename from spring-security-modules/spring-security-mvc-boot-2/src/main/java/com/baeldung/jdbcauthentication/h2/H2JdbcAuthenticationApplication.java
rename to spring-security-modules/spring-security-web-boot-2/src/main/java/com/baeldung/jdbcauthentication/h2/H2JdbcAuthenticationApplication.java
diff --git a/spring-security-modules/spring-security-mvc-boot-2/src/main/java/com/baeldung/jdbcauthentication/h2/config/SecurityConfiguration.java b/spring-security-modules/spring-security-web-boot-2/src/main/java/com/baeldung/jdbcauthentication/h2/config/SecurityConfiguration.java
similarity index 100%
rename from spring-security-modules/spring-security-mvc-boot-2/src/main/java/com/baeldung/jdbcauthentication/h2/config/SecurityConfiguration.java
rename to spring-security-modules/spring-security-web-boot-2/src/main/java/com/baeldung/jdbcauthentication/h2/config/SecurityConfiguration.java
diff --git a/spring-security-modules/spring-security-mvc-boot-2/src/main/java/com/baeldung/jdbcauthentication/h2/web/UserController.java b/spring-security-modules/spring-security-web-boot-2/src/main/java/com/baeldung/jdbcauthentication/h2/web/UserController.java
similarity index 100%
rename from spring-security-modules/spring-security-mvc-boot-2/src/main/java/com/baeldung/jdbcauthentication/h2/web/UserController.java
rename to spring-security-modules/spring-security-web-boot-2/src/main/java/com/baeldung/jdbcauthentication/h2/web/UserController.java
diff --git a/spring-security-modules/spring-security-mvc-boot-2/src/main/java/com/baeldung/jdbcauthentication/mysql/MySqlJdbcAuthenticationApplication.java b/spring-security-modules/spring-security-web-boot-2/src/main/java/com/baeldung/jdbcauthentication/mysql/MySqlJdbcAuthenticationApplication.java
similarity index 100%
rename from spring-security-modules/spring-security-mvc-boot-2/src/main/java/com/baeldung/jdbcauthentication/mysql/MySqlJdbcAuthenticationApplication.java
rename to spring-security-modules/spring-security-web-boot-2/src/main/java/com/baeldung/jdbcauthentication/mysql/MySqlJdbcAuthenticationApplication.java
diff --git a/spring-security-modules/spring-security-mvc-boot-2/src/main/java/com/baeldung/jdbcauthentication/mysql/config/SecurityConfiguration.java b/spring-security-modules/spring-security-web-boot-2/src/main/java/com/baeldung/jdbcauthentication/mysql/config/SecurityConfiguration.java
similarity index 100%
rename from spring-security-modules/spring-security-mvc-boot-2/src/main/java/com/baeldung/jdbcauthentication/mysql/config/SecurityConfiguration.java
rename to spring-security-modules/spring-security-web-boot-2/src/main/java/com/baeldung/jdbcauthentication/mysql/config/SecurityConfiguration.java
diff --git a/spring-security-modules/spring-security-mvc-boot-2/src/main/java/com/baeldung/jdbcauthentication/mysql/web/UserController.java b/spring-security-modules/spring-security-web-boot-2/src/main/java/com/baeldung/jdbcauthentication/mysql/web/UserController.java
similarity index 100%
rename from spring-security-modules/spring-security-mvc-boot-2/src/main/java/com/baeldung/jdbcauthentication/mysql/web/UserController.java
rename to spring-security-modules/spring-security-web-boot-2/src/main/java/com/baeldung/jdbcauthentication/mysql/web/UserController.java
diff --git a/spring-security-modules/spring-security-mvc-boot-2/src/main/java/com/baeldung/jdbcauthentication/postgre/PostgreJdbcAuthenticationApplication.java b/spring-security-modules/spring-security-web-boot-2/src/main/java/com/baeldung/jdbcauthentication/postgre/PostgreJdbcAuthenticationApplication.java
similarity index 100%
rename from spring-security-modules/spring-security-mvc-boot-2/src/main/java/com/baeldung/jdbcauthentication/postgre/PostgreJdbcAuthenticationApplication.java
rename to spring-security-modules/spring-security-web-boot-2/src/main/java/com/baeldung/jdbcauthentication/postgre/PostgreJdbcAuthenticationApplication.java
diff --git a/spring-security-modules/spring-security-mvc-boot-2/src/main/java/com/baeldung/jdbcauthentication/postgre/config/SecurityConfiguration.java b/spring-security-modules/spring-security-web-boot-2/src/main/java/com/baeldung/jdbcauthentication/postgre/config/SecurityConfiguration.java
similarity index 100%
rename from spring-security-modules/spring-security-mvc-boot-2/src/main/java/com/baeldung/jdbcauthentication/postgre/config/SecurityConfiguration.java
rename to spring-security-modules/spring-security-web-boot-2/src/main/java/com/baeldung/jdbcauthentication/postgre/config/SecurityConfiguration.java
diff --git a/spring-security-modules/spring-security-mvc-boot-2/src/main/java/com/baeldung/jdbcauthentication/postgre/web/UserController.java b/spring-security-modules/spring-security-web-boot-2/src/main/java/com/baeldung/jdbcauthentication/postgre/web/UserController.java
similarity index 100%
rename from spring-security-modules/spring-security-mvc-boot-2/src/main/java/com/baeldung/jdbcauthentication/postgre/web/UserController.java
rename to spring-security-modules/spring-security-web-boot-2/src/main/java/com/baeldung/jdbcauthentication/postgre/web/UserController.java
diff --git a/spring-security-modules/spring-security-mvc-boot-2/src/main/java/com/baeldung/loginredirect/LoginPageFilter.java b/spring-security-modules/spring-security-web-boot-2/src/main/java/com/baeldung/loginredirect/LoginPageFilter.java
similarity index 100%
rename from spring-security-modules/spring-security-mvc-boot-2/src/main/java/com/baeldung/loginredirect/LoginPageFilter.java
rename to spring-security-modules/spring-security-web-boot-2/src/main/java/com/baeldung/loginredirect/LoginPageFilter.java
diff --git a/spring-security-modules/spring-security-mvc-boot-2/src/main/java/com/baeldung/loginredirect/LoginPageInterceptor.java b/spring-security-modules/spring-security-web-boot-2/src/main/java/com/baeldung/loginredirect/LoginPageInterceptor.java
similarity index 100%
rename from spring-security-modules/spring-security-mvc-boot-2/src/main/java/com/baeldung/loginredirect/LoginPageInterceptor.java
rename to spring-security-modules/spring-security-web-boot-2/src/main/java/com/baeldung/loginredirect/LoginPageInterceptor.java
diff --git a/spring-security-modules/spring-security-mvc-boot-2/src/main/java/com/baeldung/loginredirect/LoginRedirectApplication.java b/spring-security-modules/spring-security-web-boot-2/src/main/java/com/baeldung/loginredirect/LoginRedirectApplication.java
similarity index 100%
rename from spring-security-modules/spring-security-mvc-boot-2/src/main/java/com/baeldung/loginredirect/LoginRedirectApplication.java
rename to spring-security-modules/spring-security-web-boot-2/src/main/java/com/baeldung/loginredirect/LoginRedirectApplication.java
diff --git a/spring-security-modules/spring-security-mvc-boot-2/src/main/java/com/baeldung/loginredirect/LoginRedirectMvcConfig.java b/spring-security-modules/spring-security-web-boot-2/src/main/java/com/baeldung/loginredirect/LoginRedirectMvcConfig.java
similarity index 100%
rename from spring-security-modules/spring-security-mvc-boot-2/src/main/java/com/baeldung/loginredirect/LoginRedirectMvcConfig.java
rename to spring-security-modules/spring-security-web-boot-2/src/main/java/com/baeldung/loginredirect/LoginRedirectMvcConfig.java
diff --git a/spring-security-modules/spring-security-mvc-boot-2/src/main/java/com/baeldung/loginredirect/LoginRedirectSecurityConfig.java b/spring-security-modules/spring-security-web-boot-2/src/main/java/com/baeldung/loginredirect/LoginRedirectSecurityConfig.java
similarity index 100%
rename from spring-security-modules/spring-security-mvc-boot-2/src/main/java/com/baeldung/loginredirect/LoginRedirectSecurityConfig.java
rename to spring-security-modules/spring-security-web-boot-2/src/main/java/com/baeldung/loginredirect/LoginRedirectSecurityConfig.java
diff --git a/spring-security-modules/spring-security-mvc-boot-2/src/main/java/com/baeldung/loginredirect/UsersController.java b/spring-security-modules/spring-security-web-boot-2/src/main/java/com/baeldung/loginredirect/UsersController.java
similarity index 100%
rename from spring-security-modules/spring-security-mvc-boot-2/src/main/java/com/baeldung/loginredirect/UsersController.java
rename to spring-security-modules/spring-security-web-boot-2/src/main/java/com/baeldung/loginredirect/UsersController.java
diff --git a/spring-security-modules/spring-security-mvc-boot-2/src/main/java/com/baeldung/multipleauthproviders/CustomAuthenticationProvider.java b/spring-security-modules/spring-security-web-boot-2/src/main/java/com/baeldung/multipleauthproviders/CustomAuthenticationProvider.java
similarity index 100%
rename from spring-security-modules/spring-security-mvc-boot-2/src/main/java/com/baeldung/multipleauthproviders/CustomAuthenticationProvider.java
rename to spring-security-modules/spring-security-web-boot-2/src/main/java/com/baeldung/multipleauthproviders/CustomAuthenticationProvider.java
diff --git a/spring-security-modules/spring-security-mvc-boot-2/src/main/java/com/baeldung/multipleauthproviders/MultipleAuthController.java b/spring-security-modules/spring-security-web-boot-2/src/main/java/com/baeldung/multipleauthproviders/MultipleAuthController.java
similarity index 100%
rename from spring-security-modules/spring-security-mvc-boot-2/src/main/java/com/baeldung/multipleauthproviders/MultipleAuthController.java
rename to spring-security-modules/spring-security-web-boot-2/src/main/java/com/baeldung/multipleauthproviders/MultipleAuthController.java
diff --git a/spring-security-modules/spring-security-mvc-boot-2/src/main/java/com/baeldung/multipleauthproviders/MultipleAuthProvidersApplication.java b/spring-security-modules/spring-security-web-boot-2/src/main/java/com/baeldung/multipleauthproviders/MultipleAuthProvidersApplication.java
similarity index 100%
rename from spring-security-modules/spring-security-mvc-boot-2/src/main/java/com/baeldung/multipleauthproviders/MultipleAuthProvidersApplication.java
rename to spring-security-modules/spring-security-web-boot-2/src/main/java/com/baeldung/multipleauthproviders/MultipleAuthProvidersApplication.java
diff --git a/spring-security-modules/spring-security-mvc-boot-2/src/main/java/com/baeldung/multipleauthproviders/MultipleAuthProvidersSecurityConfig.java b/spring-security-modules/spring-security-web-boot-2/src/main/java/com/baeldung/multipleauthproviders/MultipleAuthProvidersSecurityConfig.java
similarity index 100%
rename from spring-security-modules/spring-security-mvc-boot-2/src/main/java/com/baeldung/multipleauthproviders/MultipleAuthProvidersSecurityConfig.java
rename to spring-security-modules/spring-security-web-boot-2/src/main/java/com/baeldung/multipleauthproviders/MultipleAuthProvidersSecurityConfig.java
diff --git a/spring-security-modules/spring-security-mvc-boot-2/src/main/java/com/baeldung/multipleentrypoints/MultipleEntryPointsApplication.java b/spring-security-modules/spring-security-web-boot-2/src/main/java/com/baeldung/multipleentrypoints/MultipleEntryPointsApplication.java
similarity index 100%
rename from spring-security-modules/spring-security-mvc-boot-2/src/main/java/com/baeldung/multipleentrypoints/MultipleEntryPointsApplication.java
rename to spring-security-modules/spring-security-web-boot-2/src/main/java/com/baeldung/multipleentrypoints/MultipleEntryPointsApplication.java
diff --git a/spring-security-modules/spring-security-mvc-boot-2/src/main/java/com/baeldung/multipleentrypoints/MultipleEntryPointsSecurityConfig.java b/spring-security-modules/spring-security-web-boot-2/src/main/java/com/baeldung/multipleentrypoints/MultipleEntryPointsSecurityConfig.java
similarity index 100%
rename from spring-security-modules/spring-security-mvc-boot-2/src/main/java/com/baeldung/multipleentrypoints/MultipleEntryPointsSecurityConfig.java
rename to spring-security-modules/spring-security-web-boot-2/src/main/java/com/baeldung/multipleentrypoints/MultipleEntryPointsSecurityConfig.java
diff --git a/spring-security-modules/spring-security-mvc-boot-2/src/main/java/com/baeldung/multipleentrypoints/PagesController.java b/spring-security-modules/spring-security-web-boot-2/src/main/java/com/baeldung/multipleentrypoints/PagesController.java
similarity index 100%
rename from spring-security-modules/spring-security-mvc-boot-2/src/main/java/com/baeldung/multipleentrypoints/PagesController.java
rename to spring-security-modules/spring-security-web-boot-2/src/main/java/com/baeldung/multipleentrypoints/PagesController.java
diff --git a/spring-security-modules/spring-security-mvc-boot-2/src/main/java/com/baeldung/multiplelogin/MultipleLoginApplication.java b/spring-security-modules/spring-security-web-boot-2/src/main/java/com/baeldung/multiplelogin/MultipleLoginApplication.java
similarity index 100%
rename from spring-security-modules/spring-security-mvc-boot-2/src/main/java/com/baeldung/multiplelogin/MultipleLoginApplication.java
rename to spring-security-modules/spring-security-web-boot-2/src/main/java/com/baeldung/multiplelogin/MultipleLoginApplication.java
diff --git a/spring-security-modules/spring-security-mvc-boot-2/src/main/java/com/baeldung/multiplelogin/MultipleLoginMvcConfig.java b/spring-security-modules/spring-security-web-boot-2/src/main/java/com/baeldung/multiplelogin/MultipleLoginMvcConfig.java
similarity index 100%
rename from spring-security-modules/spring-security-mvc-boot-2/src/main/java/com/baeldung/multiplelogin/MultipleLoginMvcConfig.java
rename to spring-security-modules/spring-security-web-boot-2/src/main/java/com/baeldung/multiplelogin/MultipleLoginMvcConfig.java
diff --git a/spring-security-modules/spring-security-mvc-boot-2/src/main/java/com/baeldung/multiplelogin/MultipleLoginSecurityConfig.java b/spring-security-modules/spring-security-web-boot-2/src/main/java/com/baeldung/multiplelogin/MultipleLoginSecurityConfig.java
similarity index 100%
rename from spring-security-modules/spring-security-mvc-boot-2/src/main/java/com/baeldung/multiplelogin/MultipleLoginSecurityConfig.java
rename to spring-security-modules/spring-security-web-boot-2/src/main/java/com/baeldung/multiplelogin/MultipleLoginSecurityConfig.java
diff --git a/spring-security-modules/spring-security-mvc-boot-2/src/main/java/com/baeldung/multiplelogin/UsersController.java b/spring-security-modules/spring-security-web-boot-2/src/main/java/com/baeldung/multiplelogin/UsersController.java
similarity index 100%
rename from spring-security-modules/spring-security-mvc-boot-2/src/main/java/com/baeldung/multiplelogin/UsersController.java
rename to spring-security-modules/spring-security-web-boot-2/src/main/java/com/baeldung/multiplelogin/UsersController.java
diff --git a/spring-security-modules/spring-security-mvc-boot-2/src/main/java/com/baeldung/ssl/HttpsEnabledApplication.java b/spring-security-modules/spring-security-web-boot-2/src/main/java/com/baeldung/ssl/HttpsEnabledApplication.java
similarity index 100%
rename from spring-security-modules/spring-security-mvc-boot-2/src/main/java/com/baeldung/ssl/HttpsEnabledApplication.java
rename to spring-security-modules/spring-security-web-boot-2/src/main/java/com/baeldung/ssl/HttpsEnabledApplication.java
diff --git a/spring-security-modules/spring-security-mvc-boot-2/src/main/java/com/baeldung/ssl/SecurityConfig.java b/spring-security-modules/spring-security-web-boot-2/src/main/java/com/baeldung/ssl/SecurityConfig.java
similarity index 100%
rename from spring-security-modules/spring-security-mvc-boot-2/src/main/java/com/baeldung/ssl/SecurityConfig.java
rename to spring-security-modules/spring-security-web-boot-2/src/main/java/com/baeldung/ssl/SecurityConfig.java
diff --git a/spring-security-modules/spring-security-mvc-boot-2/src/main/java/com/baeldung/ssl/WelcomeController.java b/spring-security-modules/spring-security-web-boot-2/src/main/java/com/baeldung/ssl/WelcomeController.java
similarity index 100%
rename from spring-security-modules/spring-security-mvc-boot-2/src/main/java/com/baeldung/ssl/WelcomeController.java
rename to spring-security-modules/spring-security-web-boot-2/src/main/java/com/baeldung/ssl/WelcomeController.java
diff --git a/spring-security-modules/spring-security-mvc-boot-2/src/main/resources/application-customlogouthandler.properties b/spring-security-modules/spring-security-web-boot-2/src/main/resources/application-customlogouthandler.properties
similarity index 100%
rename from spring-security-modules/spring-security-mvc-boot-2/src/main/resources/application-customlogouthandler.properties
rename to spring-security-modules/spring-security-web-boot-2/src/main/resources/application-customlogouthandler.properties
diff --git a/spring-security-modules/spring-security-mvc-boot-2/src/main/resources/application-defaults.properties b/spring-security-modules/spring-security-web-boot-2/src/main/resources/application-defaults.properties
similarity index 100%
rename from spring-security-modules/spring-security-mvc-boot-2/src/main/resources/application-defaults.properties
rename to spring-security-modules/spring-security-web-boot-2/src/main/resources/application-defaults.properties
diff --git a/spring-security-modules/spring-security-mvc-boot-2/src/main/resources/application-mysql.properties b/spring-security-modules/spring-security-web-boot-2/src/main/resources/application-mysql.properties
similarity index 100%
rename from spring-security-modules/spring-security-mvc-boot-2/src/main/resources/application-mysql.properties
rename to spring-security-modules/spring-security-web-boot-2/src/main/resources/application-mysql.properties
diff --git a/spring-security-modules/spring-security-mvc-boot-2/src/main/resources/application-postgre.properties b/spring-security-modules/spring-security-web-boot-2/src/main/resources/application-postgre.properties
similarity index 100%
rename from spring-security-modules/spring-security-mvc-boot-2/src/main/resources/application-postgre.properties
rename to spring-security-modules/spring-security-web-boot-2/src/main/resources/application-postgre.properties
diff --git a/spring-security-modules/spring-security-mvc-boot-2/src/main/resources/application-ssl.properties b/spring-security-modules/spring-security-web-boot-2/src/main/resources/application-ssl.properties
similarity index 100%
rename from spring-security-modules/spring-security-mvc-boot-2/src/main/resources/application-ssl.properties
rename to spring-security-modules/spring-security-web-boot-2/src/main/resources/application-ssl.properties
diff --git a/spring-security-modules/spring-security-mvc-boot-2/src/main/resources/application.properties b/spring-security-modules/spring-security-web-boot-2/src/main/resources/application.properties
similarity index 100%
rename from spring-security-modules/spring-security-mvc-boot-2/src/main/resources/application.properties
rename to spring-security-modules/spring-security-web-boot-2/src/main/resources/application.properties
diff --git a/spring-security-modules/spring-security-mvc-boot-2/src/main/resources/data-mysql.sql b/spring-security-modules/spring-security-web-boot-2/src/main/resources/data-mysql.sql
similarity index 100%
rename from spring-security-modules/spring-security-mvc-boot-2/src/main/resources/data-mysql.sql
rename to spring-security-modules/spring-security-web-boot-2/src/main/resources/data-mysql.sql
diff --git a/spring-security-modules/spring-security-mvc-boot-2/src/main/resources/data-postgre.sql b/spring-security-modules/spring-security-web-boot-2/src/main/resources/data-postgre.sql
similarity index 100%
rename from spring-security-modules/spring-security-mvc-boot-2/src/main/resources/data-postgre.sql
rename to spring-security-modules/spring-security-web-boot-2/src/main/resources/data-postgre.sql
diff --git a/spring-security-modules/spring-security-mvc-boot-2/src/main/resources/keystore/baeldung.p12 b/spring-security-modules/spring-security-web-boot-2/src/main/resources/keystore/baeldung.p12
similarity index 100%
rename from spring-security-modules/spring-security-mvc-boot-2/src/main/resources/keystore/baeldung.p12
rename to spring-security-modules/spring-security-web-boot-2/src/main/resources/keystore/baeldung.p12
diff --git a/spring-security-modules/spring-security-mvc-boot-2/src/main/resources/logback.xml b/spring-security-modules/spring-security-web-boot-2/src/main/resources/logback.xml
similarity index 100%
rename from spring-security-modules/spring-security-mvc-boot-2/src/main/resources/logback.xml
rename to spring-security-modules/spring-security-web-boot-2/src/main/resources/logback.xml
diff --git a/spring-security-modules/spring-security-mvc-boot-2/src/main/resources/persistence-h2.properties b/spring-security-modules/spring-security-web-boot-2/src/main/resources/persistence-h2.properties
similarity index 100%
rename from spring-security-modules/spring-security-mvc-boot-2/src/main/resources/persistence-h2.properties
rename to spring-security-modules/spring-security-web-boot-2/src/main/resources/persistence-h2.properties
diff --git a/spring-security-modules/spring-security-mvc-boot-2/src/main/resources/schema-mysql.sql b/spring-security-modules/spring-security-web-boot-2/src/main/resources/schema-mysql.sql
similarity index 100%
rename from spring-security-modules/spring-security-mvc-boot-2/src/main/resources/schema-mysql.sql
rename to spring-security-modules/spring-security-web-boot-2/src/main/resources/schema-mysql.sql
diff --git a/spring-security-modules/spring-security-mvc-boot-2/src/main/resources/schema-postgre.sql b/spring-security-modules/spring-security-web-boot-2/src/main/resources/schema-postgre.sql
similarity index 100%
rename from spring-security-modules/spring-security-mvc-boot-2/src/main/resources/schema-postgre.sql
rename to spring-security-modules/spring-security-web-boot-2/src/main/resources/schema-postgre.sql
diff --git a/spring-security-modules/spring-security-mvc-boot-2/src/main/resources/spring-security-login-redirect.xml b/spring-security-modules/spring-security-web-boot-2/src/main/resources/spring-security-login-redirect.xml
similarity index 100%
rename from spring-security-modules/spring-security-mvc-boot-2/src/main/resources/spring-security-login-redirect.xml
rename to spring-security-modules/spring-security-web-boot-2/src/main/resources/spring-security-login-redirect.xml
diff --git a/spring-security-modules/spring-security-mvc-boot-2/src/main/resources/spring-security-multiple-auth-providers.xml b/spring-security-modules/spring-security-web-boot-2/src/main/resources/spring-security-multiple-auth-providers.xml
similarity index 100%
rename from spring-security-modules/spring-security-mvc-boot-2/src/main/resources/spring-security-multiple-auth-providers.xml
rename to spring-security-modules/spring-security-web-boot-2/src/main/resources/spring-security-multiple-auth-providers.xml
diff --git a/spring-security-modules/spring-security-mvc-boot-2/src/main/resources/spring-security-multiple-entry.xml b/spring-security-modules/spring-security-web-boot-2/src/main/resources/spring-security-multiple-entry.xml
similarity index 100%
rename from spring-security-modules/spring-security-mvc-boot-2/src/main/resources/spring-security-multiple-entry.xml
rename to spring-security-modules/spring-security-web-boot-2/src/main/resources/spring-security-multiple-entry.xml
diff --git a/spring-security-modules/spring-security-mvc-boot-2/src/main/resources/templates/403.html b/spring-security-modules/spring-security-web-boot-2/src/main/resources/templates/403.html
similarity index 100%
rename from spring-security-modules/spring-security-mvc-boot-2/src/main/resources/templates/403.html
rename to spring-security-modules/spring-security-web-boot-2/src/main/resources/templates/403.html
diff --git a/spring-security-modules/spring-security-mvc-boot-2/src/main/resources/templates/adminPage.html b/spring-security-modules/spring-security-web-boot-2/src/main/resources/templates/adminPage.html
similarity index 100%
rename from spring-security-modules/spring-security-mvc-boot-2/src/main/resources/templates/adminPage.html
rename to spring-security-modules/spring-security-web-boot-2/src/main/resources/templates/adminPage.html
diff --git a/spring-security-modules/spring-security-mvc-boot-2/src/main/resources/templates/index.html b/spring-security-modules/spring-security-web-boot-2/src/main/resources/templates/index.html
similarity index 100%
rename from spring-security-modules/spring-security-mvc-boot-2/src/main/resources/templates/index.html
rename to spring-security-modules/spring-security-web-boot-2/src/main/resources/templates/index.html
diff --git a/spring-security-modules/spring-security-mvc-boot-2/src/main/resources/templates/login.html b/spring-security-modules/spring-security-web-boot-2/src/main/resources/templates/login.html
similarity index 100%
rename from spring-security-modules/spring-security-mvc-boot-2/src/main/resources/templates/login.html
rename to spring-security-modules/spring-security-web-boot-2/src/main/resources/templates/login.html
diff --git a/spring-security-modules/spring-security-mvc-boot-2/src/main/resources/templates/loginAdmin.html b/spring-security-modules/spring-security-web-boot-2/src/main/resources/templates/loginAdmin.html
similarity index 100%
rename from spring-security-modules/spring-security-mvc-boot-2/src/main/resources/templates/loginAdmin.html
rename to spring-security-modules/spring-security-web-boot-2/src/main/resources/templates/loginAdmin.html
diff --git a/spring-security-modules/spring-security-mvc-boot-2/src/main/resources/templates/loginUser.html b/spring-security-modules/spring-security-web-boot-2/src/main/resources/templates/loginUser.html
similarity index 100%
rename from spring-security-modules/spring-security-mvc-boot-2/src/main/resources/templates/loginUser.html
rename to spring-security-modules/spring-security-web-boot-2/src/main/resources/templates/loginUser.html
diff --git a/spring-security-modules/spring-security-mvc-boot-2/src/main/resources/templates/multipleHttpElems/login.html b/spring-security-modules/spring-security-web-boot-2/src/main/resources/templates/multipleHttpElems/login.html
similarity index 100%
rename from spring-security-modules/spring-security-mvc-boot-2/src/main/resources/templates/multipleHttpElems/login.html
rename to spring-security-modules/spring-security-web-boot-2/src/main/resources/templates/multipleHttpElems/login.html
diff --git a/spring-security-modules/spring-security-mvc-boot-2/src/main/resources/templates/multipleHttpElems/loginWithWarning.html b/spring-security-modules/spring-security-web-boot-2/src/main/resources/templates/multipleHttpElems/loginWithWarning.html
similarity index 100%
rename from spring-security-modules/spring-security-mvc-boot-2/src/main/resources/templates/multipleHttpElems/loginWithWarning.html
rename to spring-security-modules/spring-security-web-boot-2/src/main/resources/templates/multipleHttpElems/loginWithWarning.html
diff --git a/spring-security-modules/spring-security-mvc-boot-2/src/main/resources/templates/multipleHttpElems/multipleHttpLinks.html b/spring-security-modules/spring-security-web-boot-2/src/main/resources/templates/multipleHttpElems/multipleHttpLinks.html
similarity index 100%
rename from spring-security-modules/spring-security-mvc-boot-2/src/main/resources/templates/multipleHttpElems/multipleHttpLinks.html
rename to spring-security-modules/spring-security-web-boot-2/src/main/resources/templates/multipleHttpElems/multipleHttpLinks.html
diff --git a/spring-security-modules/spring-security-mvc-boot-2/src/main/resources/templates/multipleHttpElems/myAdminPage.html b/spring-security-modules/spring-security-web-boot-2/src/main/resources/templates/multipleHttpElems/myAdminPage.html
similarity index 100%
rename from spring-security-modules/spring-security-mvc-boot-2/src/main/resources/templates/multipleHttpElems/myAdminPage.html
rename to spring-security-modules/spring-security-web-boot-2/src/main/resources/templates/multipleHttpElems/myAdminPage.html
diff --git a/spring-security-modules/spring-security-mvc-boot-2/src/main/resources/templates/multipleHttpElems/myGuestPage.html b/spring-security-modules/spring-security-web-boot-2/src/main/resources/templates/multipleHttpElems/myGuestPage.html
similarity index 100%
rename from spring-security-modules/spring-security-mvc-boot-2/src/main/resources/templates/multipleHttpElems/myGuestPage.html
rename to spring-security-modules/spring-security-web-boot-2/src/main/resources/templates/multipleHttpElems/myGuestPage.html
diff --git a/spring-security-modules/spring-security-mvc-boot-2/src/main/resources/templates/multipleHttpElems/myPrivateUserPage.html b/spring-security-modules/spring-security-web-boot-2/src/main/resources/templates/multipleHttpElems/myPrivateUserPage.html
similarity index 100%
rename from spring-security-modules/spring-security-mvc-boot-2/src/main/resources/templates/multipleHttpElems/myPrivateUserPage.html
rename to spring-security-modules/spring-security-web-boot-2/src/main/resources/templates/multipleHttpElems/myPrivateUserPage.html
diff --git a/spring-security-modules/spring-security-mvc-boot-2/src/main/resources/templates/multipleHttpElems/myUserPage.html b/spring-security-modules/spring-security-web-boot-2/src/main/resources/templates/multipleHttpElems/myUserPage.html
similarity index 100%
rename from spring-security-modules/spring-security-mvc-boot-2/src/main/resources/templates/multipleHttpElems/myUserPage.html
rename to spring-security-modules/spring-security-web-boot-2/src/main/resources/templates/multipleHttpElems/myUserPage.html
diff --git a/spring-security-modules/spring-security-mvc-boot-2/src/main/resources/templates/private.html b/spring-security-modules/spring-security-web-boot-2/src/main/resources/templates/private.html
similarity index 100%
rename from spring-security-modules/spring-security-mvc-boot-2/src/main/resources/templates/private.html
rename to spring-security-modules/spring-security-web-boot-2/src/main/resources/templates/private.html
diff --git a/spring-security-modules/spring-security-mvc-boot-2/src/main/resources/templates/protectedLinks.html b/spring-security-modules/spring-security-web-boot-2/src/main/resources/templates/protectedLinks.html
similarity index 100%
rename from spring-security-modules/spring-security-mvc-boot-2/src/main/resources/templates/protectedLinks.html
rename to spring-security-modules/spring-security-web-boot-2/src/main/resources/templates/protectedLinks.html
diff --git a/spring-security-modules/spring-security-mvc-boot-2/src/main/resources/templates/ssl/welcome.html b/spring-security-modules/spring-security-web-boot-2/src/main/resources/templates/ssl/welcome.html
similarity index 100%
rename from spring-security-modules/spring-security-mvc-boot-2/src/main/resources/templates/ssl/welcome.html
rename to spring-security-modules/spring-security-web-boot-2/src/main/resources/templates/ssl/welcome.html
diff --git a/spring-security-modules/spring-security-mvc-boot-2/src/main/resources/templates/userMainPage.html b/spring-security-modules/spring-security-web-boot-2/src/main/resources/templates/userMainPage.html
similarity index 100%
rename from spring-security-modules/spring-security-mvc-boot-2/src/main/resources/templates/userMainPage.html
rename to spring-security-modules/spring-security-web-boot-2/src/main/resources/templates/userMainPage.html
diff --git a/spring-security-modules/spring-security-mvc-boot-2/src/main/resources/templates/userPage.html b/spring-security-modules/spring-security-web-boot-2/src/main/resources/templates/userPage.html
similarity index 100%
rename from spring-security-modules/spring-security-mvc-boot-2/src/main/resources/templates/userPage.html
rename to spring-security-modules/spring-security-web-boot-2/src/main/resources/templates/userPage.html
diff --git a/spring-security-modules/spring-security-mvc-boot-2/src/test/java/com/baeldung/customlogouthandler/CustomLogoutHandlerIntegrationTest.java b/spring-security-modules/spring-security-web-boot-2/src/test/java/com/baeldung/customlogouthandler/CustomLogoutHandlerIntegrationTest.java
similarity index 100%
rename from spring-security-modules/spring-security-mvc-boot-2/src/test/java/com/baeldung/customlogouthandler/CustomLogoutHandlerIntegrationTest.java
rename to spring-security-modules/spring-security-web-boot-2/src/test/java/com/baeldung/customlogouthandler/CustomLogoutHandlerIntegrationTest.java
diff --git a/spring-security-modules/spring-security-mvc-boot-2/src/test/java/com/baeldung/jdbcauthentication/h2/SpringContextTest.java b/spring-security-modules/spring-security-web-boot-2/src/test/java/com/baeldung/jdbcauthentication/h2/SpringContextTest.java
similarity index 100%
rename from spring-security-modules/spring-security-mvc-boot-2/src/test/java/com/baeldung/jdbcauthentication/h2/SpringContextTest.java
rename to spring-security-modules/spring-security-web-boot-2/src/test/java/com/baeldung/jdbcauthentication/h2/SpringContextTest.java
diff --git a/spring-security-modules/spring-security-mvc-boot-2/src/test/java/com/baeldung/jdbcauthentication/h2/web/UserControllerLiveTest.java b/spring-security-modules/spring-security-web-boot-2/src/test/java/com/baeldung/jdbcauthentication/h2/web/UserControllerLiveTest.java
similarity index 100%
rename from spring-security-modules/spring-security-mvc-boot-2/src/test/java/com/baeldung/jdbcauthentication/h2/web/UserControllerLiveTest.java
rename to spring-security-modules/spring-security-web-boot-2/src/test/java/com/baeldung/jdbcauthentication/h2/web/UserControllerLiveTest.java
diff --git a/spring-security-modules/spring-security-mvc-boot-2/src/test/java/com/baeldung/jdbcauthentication/mysql/web/UserControllerLiveTest.java b/spring-security-modules/spring-security-web-boot-2/src/test/java/com/baeldung/jdbcauthentication/mysql/web/UserControllerLiveTest.java
similarity index 100%
rename from spring-security-modules/spring-security-mvc-boot-2/src/test/java/com/baeldung/jdbcauthentication/mysql/web/UserControllerLiveTest.java
rename to spring-security-modules/spring-security-web-boot-2/src/test/java/com/baeldung/jdbcauthentication/mysql/web/UserControllerLiveTest.java
diff --git a/spring-security-modules/spring-security-mvc-boot-2/src/test/java/com/baeldung/jdbcauthentication/postgre/web/UserControllerLiveTest.java b/spring-security-modules/spring-security-web-boot-2/src/test/java/com/baeldung/jdbcauthentication/postgre/web/UserControllerLiveTest.java
similarity index 100%
rename from spring-security-modules/spring-security-mvc-boot-2/src/test/java/com/baeldung/jdbcauthentication/postgre/web/UserControllerLiveTest.java
rename to spring-security-modules/spring-security-web-boot-2/src/test/java/com/baeldung/jdbcauthentication/postgre/web/UserControllerLiveTest.java
diff --git a/spring-security-modules/spring-security-mvc-boot-2/src/test/java/com/baeldung/web/HttpsApplicationIntegrationTest.java b/spring-security-modules/spring-security-web-boot-2/src/test/java/com/baeldung/web/HttpsApplicationIntegrationTest.java
similarity index 100%
rename from spring-security-modules/spring-security-mvc-boot-2/src/test/java/com/baeldung/web/HttpsApplicationIntegrationTest.java
rename to spring-security-modules/spring-security-web-boot-2/src/test/java/com/baeldung/web/HttpsApplicationIntegrationTest.java
diff --git a/spring-security-modules/spring-security-mvc-boot-2/src/test/java/com/baeldung/web/MultipleAuthProvidersApplicationIntegrationTest.java b/spring-security-modules/spring-security-web-boot-2/src/test/java/com/baeldung/web/MultipleAuthProvidersApplicationIntegrationTest.java
similarity index 100%
rename from spring-security-modules/spring-security-mvc-boot-2/src/test/java/com/baeldung/web/MultipleAuthProvidersApplicationIntegrationTest.java
rename to spring-security-modules/spring-security-web-boot-2/src/test/java/com/baeldung/web/MultipleAuthProvidersApplicationIntegrationTest.java
diff --git a/spring-security-modules/spring-security-mvc-boot-2/src/test/java/com/baeldung/web/MultipleEntryPointsIntegrationTest.java b/spring-security-modules/spring-security-web-boot-2/src/test/java/com/baeldung/web/MultipleEntryPointsIntegrationTest.java
similarity index 100%
rename from spring-security-modules/spring-security-mvc-boot-2/src/test/java/com/baeldung/web/MultipleEntryPointsIntegrationTest.java
rename to spring-security-modules/spring-security-web-boot-2/src/test/java/com/baeldung/web/MultipleEntryPointsIntegrationTest.java
diff --git a/spring-security-modules/spring-security-mvc-boot-2/src/test/resources/customlogouthandler/after.sql b/spring-security-modules/spring-security-web-boot-2/src/test/resources/customlogouthandler/after.sql
similarity index 100%
rename from spring-security-modules/spring-security-mvc-boot-2/src/test/resources/customlogouthandler/after.sql
rename to spring-security-modules/spring-security-web-boot-2/src/test/resources/customlogouthandler/after.sql
diff --git a/spring-security-modules/spring-security-mvc-boot-2/src/test/resources/customlogouthandler/application.properties b/spring-security-modules/spring-security-web-boot-2/src/test/resources/customlogouthandler/application.properties
similarity index 100%
rename from spring-security-modules/spring-security-mvc-boot-2/src/test/resources/customlogouthandler/application.properties
rename to spring-security-modules/spring-security-web-boot-2/src/test/resources/customlogouthandler/application.properties
diff --git a/spring-security-modules/spring-security-mvc-boot-2/src/test/resources/customlogouthandler/before.sql b/spring-security-modules/spring-security-web-boot-2/src/test/resources/customlogouthandler/before.sql
similarity index 100%
rename from spring-security-modules/spring-security-mvc-boot-2/src/test/resources/customlogouthandler/before.sql
rename to spring-security-modules/spring-security-web-boot-2/src/test/resources/customlogouthandler/before.sql

From fe7894fae0257be7e962513a7917d69f5f218695 Mon Sep 17 00:00:00 2001
From: sampadawagde <sampada.wagde@gmail.com>
Date: Thu, 13 Aug 2020 12:55:25 +0530
Subject: [PATCH 092/156] JAVA-67:renamed spring-security-mvc-custom to
 spring-security-web-mvc-custom

---
 .../.gitignore                                                | 0
 .../README.md                                                 | 0
 .../pom.xml                                                   | 4 ++--
 .../security/MySimpleUrlAuthenticationSuccessHandler.java     | 0
 .../src/main/java/com/baeldung/spring/MvcConfig.java          | 0
 .../main/java/com/baeldung/spring/MyUserDetailsService.java   | 0
 .../src/main/java/com/baeldung/spring/SecSecurityConfig.java  | 0
 .../main/java/com/baeldung/web/controller/BankController.java | 0
 .../main/java/com/baeldung/web/controller/FooController.java  | 0
 .../java/com/baeldung/web/controller/LoginController.java     | 0
 .../java/com/baeldung/web/controller/PrintUserController.java | 0
 .../src/main/java/com/baeldung/web/dto/Foo.java               | 0
 .../java/com/baeldung/web/interceptor/LoggerInterceptor.java  | 0
 .../com/baeldung/web/interceptor/SessionTimerInterceptor.java | 0
 .../java/com/baeldung/web/interceptor/UserInterceptor.java    | 0
 .../src/main/resources/logback.xml                            | 0
 .../src/main/resources/webSecurityConfig.xml                  | 0
 .../src/main/webapp/WEB-INF/mvc-servlet.xml                   | 0
 .../src/main/webapp/WEB-INF/view/anonymous.jsp                | 0
 .../src/main/webapp/WEB-INF/view/console.jsp                  | 0
 .../src/main/webapp/WEB-INF/view/csrfHome.jsp                 | 0
 .../src/main/webapp/WEB-INF/view/homepage.jsp                 | 0
 .../src/main/webapp/WEB-INF/view/login.jsp                    | 0
 .../src/main/webapp/WEB-INF/web.xml                           | 0
 .../src/test/java/com/baeldung/SpringContextTest.java         | 0
 .../baeldung/security/csrf/CsrfAbstractIntegrationTest.java   | 0
 .../baeldung/security/csrf/CsrfDisabledIntegrationTest.java   | 0
 .../baeldung/security/csrf/CsrfEnabledIntegrationTest.java    | 0
 .../com/baeldung/security/spring/ManualSecurityConfig.java    | 0
 .../security/spring/ManualSecurityIntegrationTest.java        | 0
 .../com/baeldung/security/spring/SecurityWithCsrfConfig.java  | 0
 .../baeldung/security/spring/SecurityWithoutCsrfConfig.java   | 0
 .../web/interceptor/LoggerInterceptorIntegrationTest.java     | 0
 .../interceptor/SessionTimerInterceptorIntegrationTest.java   | 0
 .../web/interceptor/UserInterceptorIntegrationTest.java       | 0
 .../src/test/resources/.gitignore                             | 0
 36 files changed, 2 insertions(+), 2 deletions(-)
 rename spring-security-modules/{spring-security-mvc-custom => spring-security-web-mvc-custom}/.gitignore (100%)
 rename spring-security-modules/{spring-security-mvc-custom => spring-security-web-mvc-custom}/README.md (100%)
 rename spring-security-modules/{spring-security-mvc-custom => spring-security-web-mvc-custom}/pom.xml (98%)
 rename spring-security-modules/{spring-security-mvc-custom => spring-security-web-mvc-custom}/src/main/java/com/baeldung/security/MySimpleUrlAuthenticationSuccessHandler.java (100%)
 rename spring-security-modules/{spring-security-mvc-custom => spring-security-web-mvc-custom}/src/main/java/com/baeldung/spring/MvcConfig.java (100%)
 rename spring-security-modules/{spring-security-mvc-custom => spring-security-web-mvc-custom}/src/main/java/com/baeldung/spring/MyUserDetailsService.java (100%)
 rename spring-security-modules/{spring-security-mvc-custom => spring-security-web-mvc-custom}/src/main/java/com/baeldung/spring/SecSecurityConfig.java (100%)
 rename spring-security-modules/{spring-security-mvc-custom => spring-security-web-mvc-custom}/src/main/java/com/baeldung/web/controller/BankController.java (100%)
 rename spring-security-modules/{spring-security-mvc-custom => spring-security-web-mvc-custom}/src/main/java/com/baeldung/web/controller/FooController.java (100%)
 rename spring-security-modules/{spring-security-mvc-custom => spring-security-web-mvc-custom}/src/main/java/com/baeldung/web/controller/LoginController.java (100%)
 rename spring-security-modules/{spring-security-mvc-custom => spring-security-web-mvc-custom}/src/main/java/com/baeldung/web/controller/PrintUserController.java (100%)
 rename spring-security-modules/{spring-security-mvc-custom => spring-security-web-mvc-custom}/src/main/java/com/baeldung/web/dto/Foo.java (100%)
 rename spring-security-modules/{spring-security-mvc-custom => spring-security-web-mvc-custom}/src/main/java/com/baeldung/web/interceptor/LoggerInterceptor.java (100%)
 rename spring-security-modules/{spring-security-mvc-custom => spring-security-web-mvc-custom}/src/main/java/com/baeldung/web/interceptor/SessionTimerInterceptor.java (100%)
 rename spring-security-modules/{spring-security-mvc-custom => spring-security-web-mvc-custom}/src/main/java/com/baeldung/web/interceptor/UserInterceptor.java (100%)
 rename spring-security-modules/{spring-security-mvc-custom => spring-security-web-mvc-custom}/src/main/resources/logback.xml (100%)
 rename spring-security-modules/{spring-security-mvc-custom => spring-security-web-mvc-custom}/src/main/resources/webSecurityConfig.xml (100%)
 rename spring-security-modules/{spring-security-mvc-custom => spring-security-web-mvc-custom}/src/main/webapp/WEB-INF/mvc-servlet.xml (100%)
 rename spring-security-modules/{spring-security-mvc-custom => spring-security-web-mvc-custom}/src/main/webapp/WEB-INF/view/anonymous.jsp (100%)
 rename spring-security-modules/{spring-security-mvc-custom => spring-security-web-mvc-custom}/src/main/webapp/WEB-INF/view/console.jsp (100%)
 rename spring-security-modules/{spring-security-mvc-custom => spring-security-web-mvc-custom}/src/main/webapp/WEB-INF/view/csrfHome.jsp (100%)
 rename spring-security-modules/{spring-security-mvc-custom => spring-security-web-mvc-custom}/src/main/webapp/WEB-INF/view/homepage.jsp (100%)
 rename spring-security-modules/{spring-security-mvc-custom => spring-security-web-mvc-custom}/src/main/webapp/WEB-INF/view/login.jsp (100%)
 rename spring-security-modules/{spring-security-mvc-custom => spring-security-web-mvc-custom}/src/main/webapp/WEB-INF/web.xml (100%)
 rename spring-security-modules/{spring-security-mvc-custom => spring-security-web-mvc-custom}/src/test/java/com/baeldung/SpringContextTest.java (100%)
 rename spring-security-modules/{spring-security-mvc-custom => spring-security-web-mvc-custom}/src/test/java/com/baeldung/security/csrf/CsrfAbstractIntegrationTest.java (100%)
 rename spring-security-modules/{spring-security-mvc-custom => spring-security-web-mvc-custom}/src/test/java/com/baeldung/security/csrf/CsrfDisabledIntegrationTest.java (100%)
 rename spring-security-modules/{spring-security-mvc-custom => spring-security-web-mvc-custom}/src/test/java/com/baeldung/security/csrf/CsrfEnabledIntegrationTest.java (100%)
 rename spring-security-modules/{spring-security-mvc-custom => spring-security-web-mvc-custom}/src/test/java/com/baeldung/security/spring/ManualSecurityConfig.java (100%)
 rename spring-security-modules/{spring-security-mvc-custom => spring-security-web-mvc-custom}/src/test/java/com/baeldung/security/spring/ManualSecurityIntegrationTest.java (100%)
 rename spring-security-modules/{spring-security-mvc-custom => spring-security-web-mvc-custom}/src/test/java/com/baeldung/security/spring/SecurityWithCsrfConfig.java (100%)
 rename spring-security-modules/{spring-security-mvc-custom => spring-security-web-mvc-custom}/src/test/java/com/baeldung/security/spring/SecurityWithoutCsrfConfig.java (100%)
 rename spring-security-modules/{spring-security-mvc-custom => spring-security-web-mvc-custom}/src/test/java/com/baeldung/web/interceptor/LoggerInterceptorIntegrationTest.java (100%)
 rename spring-security-modules/{spring-security-mvc-custom => spring-security-web-mvc-custom}/src/test/java/com/baeldung/web/interceptor/SessionTimerInterceptorIntegrationTest.java (100%)
 rename spring-security-modules/{spring-security-mvc-custom => spring-security-web-mvc-custom}/src/test/java/com/baeldung/web/interceptor/UserInterceptorIntegrationTest.java (100%)
 rename spring-security-modules/{spring-security-mvc-custom => spring-security-web-mvc-custom}/src/test/resources/.gitignore (100%)

diff --git a/spring-security-modules/spring-security-mvc-custom/.gitignore b/spring-security-modules/spring-security-web-mvc-custom/.gitignore
similarity index 100%
rename from spring-security-modules/spring-security-mvc-custom/.gitignore
rename to spring-security-modules/spring-security-web-mvc-custom/.gitignore
diff --git a/spring-security-modules/spring-security-mvc-custom/README.md b/spring-security-modules/spring-security-web-mvc-custom/README.md
similarity index 100%
rename from spring-security-modules/spring-security-mvc-custom/README.md
rename to spring-security-modules/spring-security-web-mvc-custom/README.md
diff --git a/spring-security-modules/spring-security-mvc-custom/pom.xml b/spring-security-modules/spring-security-web-mvc-custom/pom.xml
similarity index 98%
rename from spring-security-modules/spring-security-mvc-custom/pom.xml
rename to spring-security-modules/spring-security-web-mvc-custom/pom.xml
index fe8c749c59..bd4a800bc5 100644
--- a/spring-security-modules/spring-security-mvc-custom/pom.xml
+++ b/spring-security-modules/spring-security-web-mvc-custom/pom.xml
@@ -2,9 +2,9 @@
 <project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
     xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
     <modelVersion>4.0.0</modelVersion>
-    <artifactId>spring-security-mvc-custom</artifactId>
+    <artifactId>spring-security-web-mvc-custom</artifactId>
     <version>0.1-SNAPSHOT</version>
-    <name>spring-security-mvc-custom</name>
+    <name>spring-security-web-mvc-custom</name>
     <packaging>war</packaging>
 
     <parent>
diff --git a/spring-security-modules/spring-security-mvc-custom/src/main/java/com/baeldung/security/MySimpleUrlAuthenticationSuccessHandler.java b/spring-security-modules/spring-security-web-mvc-custom/src/main/java/com/baeldung/security/MySimpleUrlAuthenticationSuccessHandler.java
similarity index 100%
rename from spring-security-modules/spring-security-mvc-custom/src/main/java/com/baeldung/security/MySimpleUrlAuthenticationSuccessHandler.java
rename to spring-security-modules/spring-security-web-mvc-custom/src/main/java/com/baeldung/security/MySimpleUrlAuthenticationSuccessHandler.java
diff --git a/spring-security-modules/spring-security-mvc-custom/src/main/java/com/baeldung/spring/MvcConfig.java b/spring-security-modules/spring-security-web-mvc-custom/src/main/java/com/baeldung/spring/MvcConfig.java
similarity index 100%
rename from spring-security-modules/spring-security-mvc-custom/src/main/java/com/baeldung/spring/MvcConfig.java
rename to spring-security-modules/spring-security-web-mvc-custom/src/main/java/com/baeldung/spring/MvcConfig.java
diff --git a/spring-security-modules/spring-security-mvc-custom/src/main/java/com/baeldung/spring/MyUserDetailsService.java b/spring-security-modules/spring-security-web-mvc-custom/src/main/java/com/baeldung/spring/MyUserDetailsService.java
similarity index 100%
rename from spring-security-modules/spring-security-mvc-custom/src/main/java/com/baeldung/spring/MyUserDetailsService.java
rename to spring-security-modules/spring-security-web-mvc-custom/src/main/java/com/baeldung/spring/MyUserDetailsService.java
diff --git a/spring-security-modules/spring-security-mvc-custom/src/main/java/com/baeldung/spring/SecSecurityConfig.java b/spring-security-modules/spring-security-web-mvc-custom/src/main/java/com/baeldung/spring/SecSecurityConfig.java
similarity index 100%
rename from spring-security-modules/spring-security-mvc-custom/src/main/java/com/baeldung/spring/SecSecurityConfig.java
rename to spring-security-modules/spring-security-web-mvc-custom/src/main/java/com/baeldung/spring/SecSecurityConfig.java
diff --git a/spring-security-modules/spring-security-mvc-custom/src/main/java/com/baeldung/web/controller/BankController.java b/spring-security-modules/spring-security-web-mvc-custom/src/main/java/com/baeldung/web/controller/BankController.java
similarity index 100%
rename from spring-security-modules/spring-security-mvc-custom/src/main/java/com/baeldung/web/controller/BankController.java
rename to spring-security-modules/spring-security-web-mvc-custom/src/main/java/com/baeldung/web/controller/BankController.java
diff --git a/spring-security-modules/spring-security-mvc-custom/src/main/java/com/baeldung/web/controller/FooController.java b/spring-security-modules/spring-security-web-mvc-custom/src/main/java/com/baeldung/web/controller/FooController.java
similarity index 100%
rename from spring-security-modules/spring-security-mvc-custom/src/main/java/com/baeldung/web/controller/FooController.java
rename to spring-security-modules/spring-security-web-mvc-custom/src/main/java/com/baeldung/web/controller/FooController.java
diff --git a/spring-security-modules/spring-security-mvc-custom/src/main/java/com/baeldung/web/controller/LoginController.java b/spring-security-modules/spring-security-web-mvc-custom/src/main/java/com/baeldung/web/controller/LoginController.java
similarity index 100%
rename from spring-security-modules/spring-security-mvc-custom/src/main/java/com/baeldung/web/controller/LoginController.java
rename to spring-security-modules/spring-security-web-mvc-custom/src/main/java/com/baeldung/web/controller/LoginController.java
diff --git a/spring-security-modules/spring-security-mvc-custom/src/main/java/com/baeldung/web/controller/PrintUserController.java b/spring-security-modules/spring-security-web-mvc-custom/src/main/java/com/baeldung/web/controller/PrintUserController.java
similarity index 100%
rename from spring-security-modules/spring-security-mvc-custom/src/main/java/com/baeldung/web/controller/PrintUserController.java
rename to spring-security-modules/spring-security-web-mvc-custom/src/main/java/com/baeldung/web/controller/PrintUserController.java
diff --git a/spring-security-modules/spring-security-mvc-custom/src/main/java/com/baeldung/web/dto/Foo.java b/spring-security-modules/spring-security-web-mvc-custom/src/main/java/com/baeldung/web/dto/Foo.java
similarity index 100%
rename from spring-security-modules/spring-security-mvc-custom/src/main/java/com/baeldung/web/dto/Foo.java
rename to spring-security-modules/spring-security-web-mvc-custom/src/main/java/com/baeldung/web/dto/Foo.java
diff --git a/spring-security-modules/spring-security-mvc-custom/src/main/java/com/baeldung/web/interceptor/LoggerInterceptor.java b/spring-security-modules/spring-security-web-mvc-custom/src/main/java/com/baeldung/web/interceptor/LoggerInterceptor.java
similarity index 100%
rename from spring-security-modules/spring-security-mvc-custom/src/main/java/com/baeldung/web/interceptor/LoggerInterceptor.java
rename to spring-security-modules/spring-security-web-mvc-custom/src/main/java/com/baeldung/web/interceptor/LoggerInterceptor.java
diff --git a/spring-security-modules/spring-security-mvc-custom/src/main/java/com/baeldung/web/interceptor/SessionTimerInterceptor.java b/spring-security-modules/spring-security-web-mvc-custom/src/main/java/com/baeldung/web/interceptor/SessionTimerInterceptor.java
similarity index 100%
rename from spring-security-modules/spring-security-mvc-custom/src/main/java/com/baeldung/web/interceptor/SessionTimerInterceptor.java
rename to spring-security-modules/spring-security-web-mvc-custom/src/main/java/com/baeldung/web/interceptor/SessionTimerInterceptor.java
diff --git a/spring-security-modules/spring-security-mvc-custom/src/main/java/com/baeldung/web/interceptor/UserInterceptor.java b/spring-security-modules/spring-security-web-mvc-custom/src/main/java/com/baeldung/web/interceptor/UserInterceptor.java
similarity index 100%
rename from spring-security-modules/spring-security-mvc-custom/src/main/java/com/baeldung/web/interceptor/UserInterceptor.java
rename to spring-security-modules/spring-security-web-mvc-custom/src/main/java/com/baeldung/web/interceptor/UserInterceptor.java
diff --git a/spring-security-modules/spring-security-mvc-custom/src/main/resources/logback.xml b/spring-security-modules/spring-security-web-mvc-custom/src/main/resources/logback.xml
similarity index 100%
rename from spring-security-modules/spring-security-mvc-custom/src/main/resources/logback.xml
rename to spring-security-modules/spring-security-web-mvc-custom/src/main/resources/logback.xml
diff --git a/spring-security-modules/spring-security-mvc-custom/src/main/resources/webSecurityConfig.xml b/spring-security-modules/spring-security-web-mvc-custom/src/main/resources/webSecurityConfig.xml
similarity index 100%
rename from spring-security-modules/spring-security-mvc-custom/src/main/resources/webSecurityConfig.xml
rename to spring-security-modules/spring-security-web-mvc-custom/src/main/resources/webSecurityConfig.xml
diff --git a/spring-security-modules/spring-security-mvc-custom/src/main/webapp/WEB-INF/mvc-servlet.xml b/spring-security-modules/spring-security-web-mvc-custom/src/main/webapp/WEB-INF/mvc-servlet.xml
similarity index 100%
rename from spring-security-modules/spring-security-mvc-custom/src/main/webapp/WEB-INF/mvc-servlet.xml
rename to spring-security-modules/spring-security-web-mvc-custom/src/main/webapp/WEB-INF/mvc-servlet.xml
diff --git a/spring-security-modules/spring-security-mvc-custom/src/main/webapp/WEB-INF/view/anonymous.jsp b/spring-security-modules/spring-security-web-mvc-custom/src/main/webapp/WEB-INF/view/anonymous.jsp
similarity index 100%
rename from spring-security-modules/spring-security-mvc-custom/src/main/webapp/WEB-INF/view/anonymous.jsp
rename to spring-security-modules/spring-security-web-mvc-custom/src/main/webapp/WEB-INF/view/anonymous.jsp
diff --git a/spring-security-modules/spring-security-mvc-custom/src/main/webapp/WEB-INF/view/console.jsp b/spring-security-modules/spring-security-web-mvc-custom/src/main/webapp/WEB-INF/view/console.jsp
similarity index 100%
rename from spring-security-modules/spring-security-mvc-custom/src/main/webapp/WEB-INF/view/console.jsp
rename to spring-security-modules/spring-security-web-mvc-custom/src/main/webapp/WEB-INF/view/console.jsp
diff --git a/spring-security-modules/spring-security-mvc-custom/src/main/webapp/WEB-INF/view/csrfHome.jsp b/spring-security-modules/spring-security-web-mvc-custom/src/main/webapp/WEB-INF/view/csrfHome.jsp
similarity index 100%
rename from spring-security-modules/spring-security-mvc-custom/src/main/webapp/WEB-INF/view/csrfHome.jsp
rename to spring-security-modules/spring-security-web-mvc-custom/src/main/webapp/WEB-INF/view/csrfHome.jsp
diff --git a/spring-security-modules/spring-security-mvc-custom/src/main/webapp/WEB-INF/view/homepage.jsp b/spring-security-modules/spring-security-web-mvc-custom/src/main/webapp/WEB-INF/view/homepage.jsp
similarity index 100%
rename from spring-security-modules/spring-security-mvc-custom/src/main/webapp/WEB-INF/view/homepage.jsp
rename to spring-security-modules/spring-security-web-mvc-custom/src/main/webapp/WEB-INF/view/homepage.jsp
diff --git a/spring-security-modules/spring-security-mvc-custom/src/main/webapp/WEB-INF/view/login.jsp b/spring-security-modules/spring-security-web-mvc-custom/src/main/webapp/WEB-INF/view/login.jsp
similarity index 100%
rename from spring-security-modules/spring-security-mvc-custom/src/main/webapp/WEB-INF/view/login.jsp
rename to spring-security-modules/spring-security-web-mvc-custom/src/main/webapp/WEB-INF/view/login.jsp
diff --git a/spring-security-modules/spring-security-mvc-custom/src/main/webapp/WEB-INF/web.xml b/spring-security-modules/spring-security-web-mvc-custom/src/main/webapp/WEB-INF/web.xml
similarity index 100%
rename from spring-security-modules/spring-security-mvc-custom/src/main/webapp/WEB-INF/web.xml
rename to spring-security-modules/spring-security-web-mvc-custom/src/main/webapp/WEB-INF/web.xml
diff --git a/spring-security-modules/spring-security-mvc-custom/src/test/java/com/baeldung/SpringContextTest.java b/spring-security-modules/spring-security-web-mvc-custom/src/test/java/com/baeldung/SpringContextTest.java
similarity index 100%
rename from spring-security-modules/spring-security-mvc-custom/src/test/java/com/baeldung/SpringContextTest.java
rename to spring-security-modules/spring-security-web-mvc-custom/src/test/java/com/baeldung/SpringContextTest.java
diff --git a/spring-security-modules/spring-security-mvc-custom/src/test/java/com/baeldung/security/csrf/CsrfAbstractIntegrationTest.java b/spring-security-modules/spring-security-web-mvc-custom/src/test/java/com/baeldung/security/csrf/CsrfAbstractIntegrationTest.java
similarity index 100%
rename from spring-security-modules/spring-security-mvc-custom/src/test/java/com/baeldung/security/csrf/CsrfAbstractIntegrationTest.java
rename to spring-security-modules/spring-security-web-mvc-custom/src/test/java/com/baeldung/security/csrf/CsrfAbstractIntegrationTest.java
diff --git a/spring-security-modules/spring-security-mvc-custom/src/test/java/com/baeldung/security/csrf/CsrfDisabledIntegrationTest.java b/spring-security-modules/spring-security-web-mvc-custom/src/test/java/com/baeldung/security/csrf/CsrfDisabledIntegrationTest.java
similarity index 100%
rename from spring-security-modules/spring-security-mvc-custom/src/test/java/com/baeldung/security/csrf/CsrfDisabledIntegrationTest.java
rename to spring-security-modules/spring-security-web-mvc-custom/src/test/java/com/baeldung/security/csrf/CsrfDisabledIntegrationTest.java
diff --git a/spring-security-modules/spring-security-mvc-custom/src/test/java/com/baeldung/security/csrf/CsrfEnabledIntegrationTest.java b/spring-security-modules/spring-security-web-mvc-custom/src/test/java/com/baeldung/security/csrf/CsrfEnabledIntegrationTest.java
similarity index 100%
rename from spring-security-modules/spring-security-mvc-custom/src/test/java/com/baeldung/security/csrf/CsrfEnabledIntegrationTest.java
rename to spring-security-modules/spring-security-web-mvc-custom/src/test/java/com/baeldung/security/csrf/CsrfEnabledIntegrationTest.java
diff --git a/spring-security-modules/spring-security-mvc-custom/src/test/java/com/baeldung/security/spring/ManualSecurityConfig.java b/spring-security-modules/spring-security-web-mvc-custom/src/test/java/com/baeldung/security/spring/ManualSecurityConfig.java
similarity index 100%
rename from spring-security-modules/spring-security-mvc-custom/src/test/java/com/baeldung/security/spring/ManualSecurityConfig.java
rename to spring-security-modules/spring-security-web-mvc-custom/src/test/java/com/baeldung/security/spring/ManualSecurityConfig.java
diff --git a/spring-security-modules/spring-security-mvc-custom/src/test/java/com/baeldung/security/spring/ManualSecurityIntegrationTest.java b/spring-security-modules/spring-security-web-mvc-custom/src/test/java/com/baeldung/security/spring/ManualSecurityIntegrationTest.java
similarity index 100%
rename from spring-security-modules/spring-security-mvc-custom/src/test/java/com/baeldung/security/spring/ManualSecurityIntegrationTest.java
rename to spring-security-modules/spring-security-web-mvc-custom/src/test/java/com/baeldung/security/spring/ManualSecurityIntegrationTest.java
diff --git a/spring-security-modules/spring-security-mvc-custom/src/test/java/com/baeldung/security/spring/SecurityWithCsrfConfig.java b/spring-security-modules/spring-security-web-mvc-custom/src/test/java/com/baeldung/security/spring/SecurityWithCsrfConfig.java
similarity index 100%
rename from spring-security-modules/spring-security-mvc-custom/src/test/java/com/baeldung/security/spring/SecurityWithCsrfConfig.java
rename to spring-security-modules/spring-security-web-mvc-custom/src/test/java/com/baeldung/security/spring/SecurityWithCsrfConfig.java
diff --git a/spring-security-modules/spring-security-mvc-custom/src/test/java/com/baeldung/security/spring/SecurityWithoutCsrfConfig.java b/spring-security-modules/spring-security-web-mvc-custom/src/test/java/com/baeldung/security/spring/SecurityWithoutCsrfConfig.java
similarity index 100%
rename from spring-security-modules/spring-security-mvc-custom/src/test/java/com/baeldung/security/spring/SecurityWithoutCsrfConfig.java
rename to spring-security-modules/spring-security-web-mvc-custom/src/test/java/com/baeldung/security/spring/SecurityWithoutCsrfConfig.java
diff --git a/spring-security-modules/spring-security-mvc-custom/src/test/java/com/baeldung/web/interceptor/LoggerInterceptorIntegrationTest.java b/spring-security-modules/spring-security-web-mvc-custom/src/test/java/com/baeldung/web/interceptor/LoggerInterceptorIntegrationTest.java
similarity index 100%
rename from spring-security-modules/spring-security-mvc-custom/src/test/java/com/baeldung/web/interceptor/LoggerInterceptorIntegrationTest.java
rename to spring-security-modules/spring-security-web-mvc-custom/src/test/java/com/baeldung/web/interceptor/LoggerInterceptorIntegrationTest.java
diff --git a/spring-security-modules/spring-security-mvc-custom/src/test/java/com/baeldung/web/interceptor/SessionTimerInterceptorIntegrationTest.java b/spring-security-modules/spring-security-web-mvc-custom/src/test/java/com/baeldung/web/interceptor/SessionTimerInterceptorIntegrationTest.java
similarity index 100%
rename from spring-security-modules/spring-security-mvc-custom/src/test/java/com/baeldung/web/interceptor/SessionTimerInterceptorIntegrationTest.java
rename to spring-security-modules/spring-security-web-mvc-custom/src/test/java/com/baeldung/web/interceptor/SessionTimerInterceptorIntegrationTest.java
diff --git a/spring-security-modules/spring-security-mvc-custom/src/test/java/com/baeldung/web/interceptor/UserInterceptorIntegrationTest.java b/spring-security-modules/spring-security-web-mvc-custom/src/test/java/com/baeldung/web/interceptor/UserInterceptorIntegrationTest.java
similarity index 100%
rename from spring-security-modules/spring-security-mvc-custom/src/test/java/com/baeldung/web/interceptor/UserInterceptorIntegrationTest.java
rename to spring-security-modules/spring-security-web-mvc-custom/src/test/java/com/baeldung/web/interceptor/UserInterceptorIntegrationTest.java
diff --git a/spring-security-modules/spring-security-mvc-custom/src/test/resources/.gitignore b/spring-security-modules/spring-security-web-mvc-custom/src/test/resources/.gitignore
similarity index 100%
rename from spring-security-modules/spring-security-mvc-custom/src/test/resources/.gitignore
rename to spring-security-modules/spring-security-web-mvc-custom/src/test/resources/.gitignore

From ab84d1c6d04ca9d16d256e62e8815f17fd25ce57 Mon Sep 17 00:00:00 2001
From: sampadawagde <sampada.wagde@gmail.com>
Date: Thu, 13 Aug 2020 12:56:26 +0530
Subject: [PATCH 093/156] JAVA-67:renamed spring-security-mvc-digest-auth to
 spring-security-web-digest-auth

---
 .../.gitignore                                                | 0
 .../README.md                                                 | 0
 .../pom.xml                                                   | 4 ++--
 .../com/baeldung/basic/MyBasicAuthenticationEntryPoint.java   | 0
 .../HttpComponentsClientHttpRequestFactoryDigestAuth.java     | 0
 .../src/main/java/com/baeldung/spring/ClientConfig.java       | 0
 .../src/main/java/com/baeldung/spring/MvcConfig.java          | 0
 .../src/main/java/com/baeldung/spring/SecSecurityConfig.java  | 0
 .../src/main/resources/logback.xml                            | 0
 .../src/main/resources/webSecurityConfig.xml                  | 0
 .../src/main/webapp/WEB-INF/mvc-servlet.xml                   | 0
 .../src/main/webapp/WEB-INF/view/homepage.jsp                 | 0
 .../src/main/webapp/WEB-INF/web.xml                           | 0
 .../src/test/java/com/baeldung/SpringContextTest.java         | 0
 .../src/test/java/com/baeldung/client/RawClientLiveTest.java  | 0
 .../src/test/resources/.gitignore                             | 0
 16 files changed, 2 insertions(+), 2 deletions(-)
 rename spring-security-modules/{spring-security-mvc-digest-auth => spring-security-web-digest-auth}/.gitignore (100%)
 rename spring-security-modules/{spring-security-mvc-digest-auth => spring-security-web-digest-auth}/README.md (100%)
 rename spring-security-modules/{spring-security-mvc-digest-auth => spring-security-web-digest-auth}/pom.xml (98%)
 rename spring-security-modules/{spring-security-mvc-digest-auth => spring-security-web-digest-auth}/src/main/java/com/baeldung/basic/MyBasicAuthenticationEntryPoint.java (100%)
 rename spring-security-modules/{spring-security-mvc-digest-auth => spring-security-web-digest-auth}/src/main/java/com/baeldung/client/HttpComponentsClientHttpRequestFactoryDigestAuth.java (100%)
 rename spring-security-modules/{spring-security-mvc-digest-auth => spring-security-web-digest-auth}/src/main/java/com/baeldung/spring/ClientConfig.java (100%)
 rename spring-security-modules/{spring-security-mvc-digest-auth => spring-security-web-digest-auth}/src/main/java/com/baeldung/spring/MvcConfig.java (100%)
 rename spring-security-modules/{spring-security-mvc-digest-auth => spring-security-web-digest-auth}/src/main/java/com/baeldung/spring/SecSecurityConfig.java (100%)
 rename spring-security-modules/{spring-security-mvc-digest-auth => spring-security-web-digest-auth}/src/main/resources/logback.xml (100%)
 rename spring-security-modules/{spring-security-mvc-digest-auth => spring-security-web-digest-auth}/src/main/resources/webSecurityConfig.xml (100%)
 rename spring-security-modules/{spring-security-mvc-digest-auth => spring-security-web-digest-auth}/src/main/webapp/WEB-INF/mvc-servlet.xml (100%)
 rename spring-security-modules/{spring-security-mvc-digest-auth => spring-security-web-digest-auth}/src/main/webapp/WEB-INF/view/homepage.jsp (100%)
 rename spring-security-modules/{spring-security-mvc-digest-auth => spring-security-web-digest-auth}/src/main/webapp/WEB-INF/web.xml (100%)
 rename spring-security-modules/{spring-security-mvc-digest-auth => spring-security-web-digest-auth}/src/test/java/com/baeldung/SpringContextTest.java (100%)
 rename spring-security-modules/{spring-security-mvc-digest-auth => spring-security-web-digest-auth}/src/test/java/com/baeldung/client/RawClientLiveTest.java (100%)
 rename spring-security-modules/{spring-security-mvc-digest-auth => spring-security-web-digest-auth}/src/test/resources/.gitignore (100%)

diff --git a/spring-security-modules/spring-security-mvc-digest-auth/.gitignore b/spring-security-modules/spring-security-web-digest-auth/.gitignore
similarity index 100%
rename from spring-security-modules/spring-security-mvc-digest-auth/.gitignore
rename to spring-security-modules/spring-security-web-digest-auth/.gitignore
diff --git a/spring-security-modules/spring-security-mvc-digest-auth/README.md b/spring-security-modules/spring-security-web-digest-auth/README.md
similarity index 100%
rename from spring-security-modules/spring-security-mvc-digest-auth/README.md
rename to spring-security-modules/spring-security-web-digest-auth/README.md
diff --git a/spring-security-modules/spring-security-mvc-digest-auth/pom.xml b/spring-security-modules/spring-security-web-digest-auth/pom.xml
similarity index 98%
rename from spring-security-modules/spring-security-mvc-digest-auth/pom.xml
rename to spring-security-modules/spring-security-web-digest-auth/pom.xml
index 8061235c71..2579a11f97 100644
--- a/spring-security-modules/spring-security-mvc-digest-auth/pom.xml
+++ b/spring-security-modules/spring-security-web-digest-auth/pom.xml
@@ -2,9 +2,9 @@
 <project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
     xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
     <modelVersion>4.0.0</modelVersion>
-    <artifactId>spring-security-mvc-digest-auth</artifactId>
+    <artifactId>spring-security-web-digest-auth</artifactId>
     <version>0.1-SNAPSHOT</version>
-    <name>spring-security-mvc-digest-auth</name>
+    <name>spring-security-web-digest-auth</name>
     <packaging>war</packaging>
 
     <parent>
diff --git a/spring-security-modules/spring-security-mvc-digest-auth/src/main/java/com/baeldung/basic/MyBasicAuthenticationEntryPoint.java b/spring-security-modules/spring-security-web-digest-auth/src/main/java/com/baeldung/basic/MyBasicAuthenticationEntryPoint.java
similarity index 100%
rename from spring-security-modules/spring-security-mvc-digest-auth/src/main/java/com/baeldung/basic/MyBasicAuthenticationEntryPoint.java
rename to spring-security-modules/spring-security-web-digest-auth/src/main/java/com/baeldung/basic/MyBasicAuthenticationEntryPoint.java
diff --git a/spring-security-modules/spring-security-mvc-digest-auth/src/main/java/com/baeldung/client/HttpComponentsClientHttpRequestFactoryDigestAuth.java b/spring-security-modules/spring-security-web-digest-auth/src/main/java/com/baeldung/client/HttpComponentsClientHttpRequestFactoryDigestAuth.java
similarity index 100%
rename from spring-security-modules/spring-security-mvc-digest-auth/src/main/java/com/baeldung/client/HttpComponentsClientHttpRequestFactoryDigestAuth.java
rename to spring-security-modules/spring-security-web-digest-auth/src/main/java/com/baeldung/client/HttpComponentsClientHttpRequestFactoryDigestAuth.java
diff --git a/spring-security-modules/spring-security-mvc-digest-auth/src/main/java/com/baeldung/spring/ClientConfig.java b/spring-security-modules/spring-security-web-digest-auth/src/main/java/com/baeldung/spring/ClientConfig.java
similarity index 100%
rename from spring-security-modules/spring-security-mvc-digest-auth/src/main/java/com/baeldung/spring/ClientConfig.java
rename to spring-security-modules/spring-security-web-digest-auth/src/main/java/com/baeldung/spring/ClientConfig.java
diff --git a/spring-security-modules/spring-security-mvc-digest-auth/src/main/java/com/baeldung/spring/MvcConfig.java b/spring-security-modules/spring-security-web-digest-auth/src/main/java/com/baeldung/spring/MvcConfig.java
similarity index 100%
rename from spring-security-modules/spring-security-mvc-digest-auth/src/main/java/com/baeldung/spring/MvcConfig.java
rename to spring-security-modules/spring-security-web-digest-auth/src/main/java/com/baeldung/spring/MvcConfig.java
diff --git a/spring-security-modules/spring-security-mvc-digest-auth/src/main/java/com/baeldung/spring/SecSecurityConfig.java b/spring-security-modules/spring-security-web-digest-auth/src/main/java/com/baeldung/spring/SecSecurityConfig.java
similarity index 100%
rename from spring-security-modules/spring-security-mvc-digest-auth/src/main/java/com/baeldung/spring/SecSecurityConfig.java
rename to spring-security-modules/spring-security-web-digest-auth/src/main/java/com/baeldung/spring/SecSecurityConfig.java
diff --git a/spring-security-modules/spring-security-mvc-digest-auth/src/main/resources/logback.xml b/spring-security-modules/spring-security-web-digest-auth/src/main/resources/logback.xml
similarity index 100%
rename from spring-security-modules/spring-security-mvc-digest-auth/src/main/resources/logback.xml
rename to spring-security-modules/spring-security-web-digest-auth/src/main/resources/logback.xml
diff --git a/spring-security-modules/spring-security-mvc-digest-auth/src/main/resources/webSecurityConfig.xml b/spring-security-modules/spring-security-web-digest-auth/src/main/resources/webSecurityConfig.xml
similarity index 100%
rename from spring-security-modules/spring-security-mvc-digest-auth/src/main/resources/webSecurityConfig.xml
rename to spring-security-modules/spring-security-web-digest-auth/src/main/resources/webSecurityConfig.xml
diff --git a/spring-security-modules/spring-security-mvc-digest-auth/src/main/webapp/WEB-INF/mvc-servlet.xml b/spring-security-modules/spring-security-web-digest-auth/src/main/webapp/WEB-INF/mvc-servlet.xml
similarity index 100%
rename from spring-security-modules/spring-security-mvc-digest-auth/src/main/webapp/WEB-INF/mvc-servlet.xml
rename to spring-security-modules/spring-security-web-digest-auth/src/main/webapp/WEB-INF/mvc-servlet.xml
diff --git a/spring-security-modules/spring-security-mvc-digest-auth/src/main/webapp/WEB-INF/view/homepage.jsp b/spring-security-modules/spring-security-web-digest-auth/src/main/webapp/WEB-INF/view/homepage.jsp
similarity index 100%
rename from spring-security-modules/spring-security-mvc-digest-auth/src/main/webapp/WEB-INF/view/homepage.jsp
rename to spring-security-modules/spring-security-web-digest-auth/src/main/webapp/WEB-INF/view/homepage.jsp
diff --git a/spring-security-modules/spring-security-mvc-digest-auth/src/main/webapp/WEB-INF/web.xml b/spring-security-modules/spring-security-web-digest-auth/src/main/webapp/WEB-INF/web.xml
similarity index 100%
rename from spring-security-modules/spring-security-mvc-digest-auth/src/main/webapp/WEB-INF/web.xml
rename to spring-security-modules/spring-security-web-digest-auth/src/main/webapp/WEB-INF/web.xml
diff --git a/spring-security-modules/spring-security-mvc-digest-auth/src/test/java/com/baeldung/SpringContextTest.java b/spring-security-modules/spring-security-web-digest-auth/src/test/java/com/baeldung/SpringContextTest.java
similarity index 100%
rename from spring-security-modules/spring-security-mvc-digest-auth/src/test/java/com/baeldung/SpringContextTest.java
rename to spring-security-modules/spring-security-web-digest-auth/src/test/java/com/baeldung/SpringContextTest.java
diff --git a/spring-security-modules/spring-security-mvc-digest-auth/src/test/java/com/baeldung/client/RawClientLiveTest.java b/spring-security-modules/spring-security-web-digest-auth/src/test/java/com/baeldung/client/RawClientLiveTest.java
similarity index 100%
rename from spring-security-modules/spring-security-mvc-digest-auth/src/test/java/com/baeldung/client/RawClientLiveTest.java
rename to spring-security-modules/spring-security-web-digest-auth/src/test/java/com/baeldung/client/RawClientLiveTest.java
diff --git a/spring-security-modules/spring-security-mvc-digest-auth/src/test/resources/.gitignore b/spring-security-modules/spring-security-web-digest-auth/src/test/resources/.gitignore
similarity index 100%
rename from spring-security-modules/spring-security-mvc-digest-auth/src/test/resources/.gitignore
rename to spring-security-modules/spring-security-web-digest-auth/src/test/resources/.gitignore

From daed0a310a4adc5b711fd84210a360ac0d3957f6 Mon Sep 17 00:00:00 2001
From: sampadawagde <sampada.wagde@gmail.com>
Date: Thu, 13 Aug 2020 12:57:25 +0530
Subject: [PATCH 094/156] JAVA-67: module pom changes as per renamed modules

---
 spring-security-modules/pom.xml | 12 ++++++------
 1 file changed, 6 insertions(+), 6 deletions(-)

diff --git a/spring-security-modules/pom.xml b/spring-security-modules/pom.xml
index 472c6b6e0d..d7b5844e6f 100644
--- a/spring-security-modules/pom.xml
+++ b/spring-security-modules/pom.xml
@@ -16,14 +16,14 @@
     <modules>
         <module>spring-security-acl</module>
         <module>spring-security-auth0</module>
-        <module>spring-security-angular/server</module>
+        <module>spring-security-web-angular/server</module>
         <module>spring-security-config</module>
         <module>spring-security-core</module>
-        <module>spring-security-mvc</module>
-        <module>spring-security-mvc-boot-1</module>
-        <module>spring-security-mvc-boot-2</module>
-        <module>spring-security-mvc-custom</module>
-        <module>spring-security-mvc-digest-auth</module>
+        <module>spring-security-web-mvc</module>
+        <module>spring-security-web-boot-1</module>
+        <module>spring-security-web-boot-2</module>
+        <module>spring-security-web-mvc-custom</module>
+        <module>spring-security-web-digest-auth</module>
         <module>spring-security-mvc-jsonview</module>
         <module>spring-security-ldap</module>
         <module>spring-security-mvc-login</module>

From 6ce7fee3ffca103d84bba26f1dce438a5718b321 Mon Sep 17 00:00:00 2001
From: kwoyke <krzysztofwoyke@gmail.com>
Date: Thu, 13 Aug 2020 11:38:50 +0200
Subject: [PATCH 095/156] BAEL-4541: Fix typos in the spring-kafka module
 (#9857)

---
 .../spring/kafka/KafkaApplication.java        | 30 +++++++++----------
 .../spring/kafka/KafkaTopicConfig.java        |  4 +--
 2 files changed, 17 insertions(+), 17 deletions(-)

diff --git a/spring-kafka/src/main/java/com/baeldung/spring/kafka/KafkaApplication.java b/spring-kafka/src/main/java/com/baeldung/spring/kafka/KafkaApplication.java
index fde56bebc0..9b79f716e9 100644
--- a/spring-kafka/src/main/java/com/baeldung/spring/kafka/KafkaApplication.java
+++ b/spring-kafka/src/main/java/com/baeldung/spring/kafka/KafkaApplication.java
@@ -30,23 +30,23 @@ public class KafkaApplication {
         MessageListener listener = context.getBean(MessageListener.class);
         /*
          * Sending a Hello World message to topic 'baeldung'. 
-         * Must be recieved by both listeners with group foo
+         * Must be received by both listeners with group foo
          * and bar with containerFactory fooKafkaListenerContainerFactory
          * and barKafkaListenerContainerFactory respectively.
-         * It will also be recieved by the listener with
-         * headersKafkaListenerContainerFactory as container factory
+         * It will also be received by the listener with
+         * headersKafkaListenerContainerFactory as container factory.
          */
         producer.sendMessage("Hello, World!");
         listener.latch.await(10, TimeUnit.SECONDS);
 
         /*
-         * Sending message to a topic with 5 partition,
+         * Sending message to a topic with 5 partitions,
          * each message to a different partition. But as per
          * listener configuration, only the messages from
          * partition 0 and 3 will be consumed.
          */
         for (int i = 0; i < 5; i++) {
-            producer.sendMessageToPartion("Hello To Partioned Topic!", i);
+            producer.sendMessageToPartition("Hello To Partitioned Topic!", i);
         }
         listener.partitionLatch.await(10, TimeUnit.SECONDS);
 
@@ -61,7 +61,7 @@ public class KafkaApplication {
 
         /*
          * Sending message to 'greeting' topic. This will send
-         * and recieved a java object with the help of 
+         * and received a java object with the help of
          * greetingKafkaListenerContainerFactory.
          */
         producer.sendGreetingMessage(new Greeting("Greetings", "World!"));
@@ -92,7 +92,7 @@ public class KafkaApplication {
         private String topicName;
 
         @Value(value = "${partitioned.topic.name}")
-        private String partionedTopicName;
+        private String partitionedTopicName;
 
         @Value(value = "${filtered.topic.name}")
         private String filteredTopicName;
@@ -119,8 +119,8 @@ public class KafkaApplication {
             });
         }
 
-        public void sendMessageToPartion(String message, int partition) {
-            kafkaTemplate.send(partionedTopicName, partition, null, message);
+        public void sendMessageToPartition(String message, int partition) {
+            kafkaTemplate.send(partitionedTopicName, partition, null, message);
         }
 
         public void sendMessageToFiltered(String message) {
@@ -144,37 +144,37 @@ public class KafkaApplication {
 
         @KafkaListener(topics = "${message.topic.name}", groupId = "foo", containerFactory = "fooKafkaListenerContainerFactory")
         public void listenGroupFoo(String message) {
-            System.out.println("Received Messasge in group 'foo': " + message);
+            System.out.println("Received Message in group 'foo': " + message);
             latch.countDown();
         }
 
         @KafkaListener(topics = "${message.topic.name}", groupId = "bar", containerFactory = "barKafkaListenerContainerFactory")
         public void listenGroupBar(String message) {
-            System.out.println("Received Messasge in group 'bar': " + message);
+            System.out.println("Received Message in group 'bar': " + message);
             latch.countDown();
         }
 
         @KafkaListener(topics = "${message.topic.name}", containerFactory = "headersKafkaListenerContainerFactory")
         public void listenWithHeaders(@Payload String message, @Header(KafkaHeaders.RECEIVED_PARTITION_ID) int partition) {
-            System.out.println("Received Messasge: " + message + " from partition: " + partition);
+            System.out.println("Received Message: " + message + " from partition: " + partition);
             latch.countDown();
         }
 
         @KafkaListener(topicPartitions = @TopicPartition(topic = "${partitioned.topic.name}", partitions = { "0", "3" }), containerFactory = "partitionsKafkaListenerContainerFactory")
-        public void listenToParition(@Payload String message, @Header(KafkaHeaders.RECEIVED_PARTITION_ID) int partition) {
+        public void listenToPartition(@Payload String message, @Header(KafkaHeaders.RECEIVED_PARTITION_ID) int partition) {
             System.out.println("Received Message: " + message + " from partition: " + partition);
             this.partitionLatch.countDown();
         }
 
         @KafkaListener(topics = "${filtered.topic.name}", containerFactory = "filterKafkaListenerContainerFactory")
         public void listenWithFilter(String message) {
-            System.out.println("Recieved Message in filtered listener: " + message);
+            System.out.println("Received Message in filtered listener: " + message);
             this.filterLatch.countDown();
         }
 
         @KafkaListener(topics = "${greeting.topic.name}", containerFactory = "greetingKafkaListenerContainerFactory")
         public void greetingListener(Greeting greeting) {
-            System.out.println("Recieved greeting message: " + greeting);
+            System.out.println("Received greeting message: " + greeting);
             this.greetingLatch.countDown();
         }
 
diff --git a/spring-kafka/src/main/java/com/baeldung/spring/kafka/KafkaTopicConfig.java b/spring-kafka/src/main/java/com/baeldung/spring/kafka/KafkaTopicConfig.java
index fb60fadde4..00e4147cd0 100644
--- a/spring-kafka/src/main/java/com/baeldung/spring/kafka/KafkaTopicConfig.java
+++ b/spring-kafka/src/main/java/com/baeldung/spring/kafka/KafkaTopicConfig.java
@@ -20,7 +20,7 @@ public class KafkaTopicConfig {
     private String topicName;
 
     @Value(value = "${partitioned.topic.name}")
-    private String partionedTopicName;
+    private String partitionedTopicName;
 
     @Value(value = "${filtered.topic.name}")
     private String filteredTopicName;
@@ -42,7 +42,7 @@ public class KafkaTopicConfig {
 
     @Bean
     public NewTopic topic2() {
-        return new NewTopic(partionedTopicName, 6, (short) 1);
+        return new NewTopic(partitionedTopicName, 6, (short) 1);
     }
 
     @Bean

From ee2eae1056be8334bff0c83a119c778d5374557d Mon Sep 17 00:00:00 2001
From: sampadawagde <sampada.wagde@gmail.com>
Date: Thu, 13 Aug 2020 16:07:42 +0530
Subject: [PATCH 096/156] JAVA-67: README updated for next-prev links

---
 spring-security-modules/spring-security-web-boot-1/README.md | 2 +-
 spring-security-modules/spring-security-web-boot-2/README.md | 1 +
 2 files changed, 2 insertions(+), 1 deletion(-)

diff --git a/spring-security-modules/spring-security-web-boot-1/README.md b/spring-security-modules/spring-security-web-boot-1/README.md
index f2c161d387..042fedf62b 100644
--- a/spring-security-modules/spring-security-web-boot-1/README.md
+++ b/spring-security-modules/spring-security-web-boot-1/README.md
@@ -13,5 +13,5 @@ The "REST With Spring" Classes: http://github.learnspringsecurity.com
 - [Granted Authority Versus Role in Spring Security](https://www.baeldung.com/spring-security-granted-authority-vs-role)
 - [Spring Security – Whitelist IP Range](https://www.baeldung.com/spring-security-whitelist-ip-range)
 - [Find the Registered Spring Security Filters](https://www.baeldung.com/spring-security-registered-filters)
-- More articles: [[next -->]](/../spring-security-mvc-boot-2)
+- More articles: [[next -->]](/spring-security-modules/spring-security-web-boot-2)
 
diff --git a/spring-security-modules/spring-security-web-boot-2/README.md b/spring-security-modules/spring-security-web-boot-2/README.md
index bbbf514c90..f5fc3a890d 100644
--- a/spring-security-modules/spring-security-web-boot-2/README.md
+++ b/spring-security-modules/spring-security-web-boot-2/README.md
@@ -14,3 +14,4 @@ The "REST With Spring" Classes: http://github.learnspringsecurity.com
 - [Spring Security: Exploring JDBC Authentication](https://www.baeldung.com/spring-security-jdbc-authentication)
 - [Spring Security Custom Logout Handler](https://www.baeldung.com/spring-security-custom-logout-handler)
 - [Redirecting Logged-in Users with Spring Security](https://www.baeldung.com/spring-security-redirect-logged-in)
+- More articles: [[<-- prev]](/spring-security-modules/spring-security-web-boot-1)

From a0ee1712e6645250e83153f6b7787daed718af8b Mon Sep 17 00:00:00 2001
From: sahilsingla112 <sahilsingla112@gmail.com>
Date: Thu, 13 Aug 2020 19:07:46 +0530
Subject: [PATCH 097/156] BAEL-4431-jdbcmetadata: Article about extracting
 metadata using JDBC (#9815)

* BAEL-4431-jdbcmetadata: Article about extracting metadata using JDBC

* BAEL-4431-jdbcmetadata: Review comments, fixed formatting issues by using the recommended intelij formatter

Co-authored-by: sahil.singla <sahil.singla@99acres.com>
---
 .../baeldung/jdbcmetadata/DatabaseConfig.java |  49 ++++++++
 .../jdbcmetadata/JdbcMetadataApplication.java |  30 +++++
 .../jdbcmetadata/MetadataExtractor.java       | 113 ++++++++++++++++++
 3 files changed, 192 insertions(+)
 create mode 100644 persistence-modules/core-java-persistence/src/main/java/com/baeldung/jdbcmetadata/DatabaseConfig.java
 create mode 100644 persistence-modules/core-java-persistence/src/main/java/com/baeldung/jdbcmetadata/JdbcMetadataApplication.java
 create mode 100644 persistence-modules/core-java-persistence/src/main/java/com/baeldung/jdbcmetadata/MetadataExtractor.java

diff --git a/persistence-modules/core-java-persistence/src/main/java/com/baeldung/jdbcmetadata/DatabaseConfig.java b/persistence-modules/core-java-persistence/src/main/java/com/baeldung/jdbcmetadata/DatabaseConfig.java
new file mode 100644
index 0000000000..8ad689041e
--- /dev/null
+++ b/persistence-modules/core-java-persistence/src/main/java/com/baeldung/jdbcmetadata/DatabaseConfig.java
@@ -0,0 +1,49 @@
+package com.baeldung.jdbcmetadata;
+
+import org.apache.log4j.Logger;
+
+import java.sql.Connection;
+import java.sql.DriverManager;
+import java.sql.SQLException;
+
+public class DatabaseConfig {
+    private static final Logger LOG = Logger.getLogger(DatabaseConfig.class);
+
+    private Connection connection;
+
+    public DatabaseConfig() {
+        try {
+            Class.forName("org.h2.Driver");
+            String url = "jdbc:h2:mem:testdb";
+            connection = DriverManager.getConnection(url, "sa", "");
+        } catch (ClassNotFoundException | SQLException e) {
+            LOG.error(e);
+        }
+    }
+
+    public Connection getConnection() {
+        return connection;
+    }
+
+    public void init() {
+        createTables();
+        createViews();
+    }
+
+    private void createTables() {
+        try {
+            connection.createStatement().executeUpdate("create table CUSTOMER (ID int primary key auto_increment, NAME VARCHAR(45))");
+            connection.createStatement().executeUpdate("create table CUST_ADDRESS (ID VARCHAR(36), CUST_ID int, ADDRESS VARCHAR(45), FOREIGN KEY (CUST_ID) REFERENCES CUSTOMER(ID))");
+        } catch (SQLException e) {
+            LOG.error(e);
+        }
+    }
+
+    private void createViews() {
+        try {
+            connection.createStatement().executeUpdate("CREATE VIEW CUSTOMER_VIEW AS SELECT * FROM CUSTOMER");
+        } catch (SQLException e) {
+            LOG.error(e);
+        }
+    }
+}
diff --git a/persistence-modules/core-java-persistence/src/main/java/com/baeldung/jdbcmetadata/JdbcMetadataApplication.java b/persistence-modules/core-java-persistence/src/main/java/com/baeldung/jdbcmetadata/JdbcMetadataApplication.java
new file mode 100644
index 0000000000..591a14f3b5
--- /dev/null
+++ b/persistence-modules/core-java-persistence/src/main/java/com/baeldung/jdbcmetadata/JdbcMetadataApplication.java
@@ -0,0 +1,30 @@
+package com.baeldung.jdbcmetadata;
+
+import org.apache.log4j.Logger;
+
+import java.sql.SQLException;
+
+public class JdbcMetadataApplication {
+
+    private static final Logger LOG = Logger.getLogger(JdbcMetadataApplication.class);
+
+    public static void main(String[] args) {
+        DatabaseConfig databaseConfig = new DatabaseConfig();
+        databaseConfig.init();
+        try {
+            MetadataExtractor metadataExtractor = new MetadataExtractor(databaseConfig.getConnection());
+            metadataExtractor.extractTableInfo();
+            metadataExtractor.extractSystemTables();
+            metadataExtractor.extractViews();
+            String tableName = "CUSTOMER";
+            metadataExtractor.extractColumnInfo(tableName);
+            metadataExtractor.extractPrimaryKeys(tableName);
+            metadataExtractor.extractForeignKeys("CUST_ADDRESS");
+            metadataExtractor.extractDatabaseInfo();
+            metadataExtractor.extractUserName();
+            metadataExtractor.extractSupportedFeatures();
+        } catch (SQLException e) {
+            LOG.error("Error while executing SQL statements", e);
+        }
+    }
+}
diff --git a/persistence-modules/core-java-persistence/src/main/java/com/baeldung/jdbcmetadata/MetadataExtractor.java b/persistence-modules/core-java-persistence/src/main/java/com/baeldung/jdbcmetadata/MetadataExtractor.java
new file mode 100644
index 0000000000..27c615aebc
--- /dev/null
+++ b/persistence-modules/core-java-persistence/src/main/java/com/baeldung/jdbcmetadata/MetadataExtractor.java
@@ -0,0 +1,113 @@
+package com.baeldung.jdbcmetadata;
+
+import java.sql.Connection;
+import java.sql.DatabaseMetaData;
+import java.sql.ResultSet;
+import java.sql.SQLException;
+
+public class MetadataExtractor {
+    private final DatabaseMetaData databaseMetaData;
+
+    public MetadataExtractor(Connection connection) throws SQLException {
+        this.databaseMetaData = connection.getMetaData();
+        DatabaseMetaData databaseMetaData = connection.getMetaData();
+    }
+
+    public void extractTableInfo() throws SQLException {
+        ResultSet resultSet = databaseMetaData.getTables(null, null, "CUST%", new String[] { "TABLE" });
+        while (resultSet.next()) {
+            // Print the names of existing tables
+            System.out.println(resultSet.getString("TABLE_NAME"));
+            System.out.println(resultSet.getString("REMARKS"));
+        }
+    }
+
+    public void extractSystemTables() throws SQLException {
+        ResultSet resultSet = databaseMetaData.getTables(null, null, null, new String[] { "SYSTEM TABLE" });
+        while (resultSet.next()) {
+            // Print the names of system tables
+            System.out.println(resultSet.getString("TABLE_NAME"));
+        }
+    }
+
+    public void extractViews() throws SQLException {
+        ResultSet resultSet = databaseMetaData.getTables(null, null, null, new String[] { "VIEW" });
+        while (resultSet.next()) {
+            // Print the names of existing views
+            System.out.println(resultSet.getString("TABLE_NAME"));
+        }
+    }
+
+    public void extractColumnInfo(String tableName) throws SQLException {
+        ResultSet columns = databaseMetaData.getColumns(null, null, tableName, null);
+
+        while (columns.next()) {
+            String columnName = columns.getString("COLUMN_NAME");
+            String columnSize = columns.getString("COLUMN_SIZE");
+            String datatype = columns.getString("DATA_TYPE");
+            String isNullable = columns.getString("IS_NULLABLE");
+            String isAutoIncrement = columns.getString("IS_AUTOINCREMENT");
+            System.out.println(String.format("ColumnName: %s, columnSize: %s, datatype: %s, isColumnNullable: %s, isAutoIncrementEnabled: %s", columnName, columnSize, datatype, isNullable, isAutoIncrement));
+        }
+    }
+
+    public void extractPrimaryKeys(String tableName) throws SQLException {
+        ResultSet primaryKeys = databaseMetaData.getPrimaryKeys(null, null, tableName);
+        while (primaryKeys.next()) {
+            String primaryKeyColumnName = primaryKeys.getString("COLUMN_NAME");
+            String primaryKeyName = primaryKeys.getString("PK_NAME");
+            System.out.println(String.format("columnName:%s, pkName:%s", primaryKeyColumnName, primaryKeyName));
+        }
+    }
+
+    public void fun() throws SQLException {
+
+    }
+
+    public void extractForeignKeys(String tableName) throws SQLException {
+        ResultSet foreignKeys = databaseMetaData.getImportedKeys(null, null, tableName);
+        while (foreignKeys.next()) {
+            String pkTableName = foreignKeys.getString("PKTABLE_NAME");
+            String fkTableName = foreignKeys.getString("FKTABLE_NAME");
+            String pkColumnName = foreignKeys.getString("PKCOLUMN_NAME");
+            String fkColumnName = foreignKeys.getString("FKCOLUMN_NAME");
+            System.out.println(String.format("pkTableName:%s, fkTableName:%s, pkColumnName:%s, fkColumnName:%s", pkTableName, fkTableName, pkColumnName, fkColumnName));
+        }
+    }
+
+    public void extractDatabaseInfo() throws SQLException {
+        String productName = databaseMetaData.getDatabaseProductName();
+        String productVersion = databaseMetaData.getDatabaseProductVersion();
+
+        String driverName = databaseMetaData.getDriverName();
+        String driverVersion = databaseMetaData.getDriverVersion();
+
+        System.out.println(String.format("Product name:%s, Product version:%s", productName, productVersion));
+        System.out.println(String.format("Driver name:%s, Driver Version:%s", driverName, driverVersion));
+    }
+
+    public void extractUserName() throws SQLException {
+        String userName = databaseMetaData.getUserName();
+        System.out.println(userName);
+        ResultSet schemas = databaseMetaData.getSchemas();
+        while (schemas.next()) {
+            String table_schem = schemas.getString("TABLE_SCHEM");
+            String table_catalog = schemas.getString("TABLE_CATALOG");
+            System.out.println(String.format("Table_schema:%s, Table_catalog:%s", table_schem, table_catalog));
+        }
+    }
+
+    public void extractSupportedFeatures() throws SQLException {
+        System.out.println("Supports scrollable & Updatable Result Set: " + databaseMetaData.supportsResultSetConcurrency(ResultSet.TYPE_SCROLL_INSENSITIVE, ResultSet.CONCUR_UPDATABLE));
+        System.out.println("Supports Full Outer Joins: " + databaseMetaData.supportsFullOuterJoins());
+        System.out.println("Supports Stored Procedures: " + databaseMetaData.supportsStoredProcedures());
+        System.out.println("Supports Subqueries in 'EXISTS': " + databaseMetaData.supportsSubqueriesInExists());
+        System.out.println("Supports Transactions: " + databaseMetaData.supportsTransactions());
+        System.out.println("Supports Core SQL Grammar: " + databaseMetaData.supportsCoreSQLGrammar());
+        System.out.println("Supports Batch Updates: " + databaseMetaData.supportsBatchUpdates());
+        System.out.println("Supports Column Aliasing: " + databaseMetaData.supportsColumnAliasing());
+        System.out.println("Supports Savepoints: " + databaseMetaData.supportsSavepoints());
+        System.out.println("Supports Union All: " + databaseMetaData.supportsUnionAll());
+        System.out.println("Supports Union: " + databaseMetaData.supportsUnion());
+    }
+}

From ad7f2cbefa6146205cc9d9bfcd1d30a65b1ac832 Mon Sep 17 00:00:00 2001
From: Loredana Crusoveanu <lore.crusoveanu@gmail.com>
Date: Thu, 13 Aug 2020 17:09:19 +0300
Subject: [PATCH 098/156] Update README.md

---
 algorithms-searching/README.md | 1 -
 1 file changed, 1 deletion(-)

diff --git a/algorithms-searching/README.md b/algorithms-searching/README.md
index 260a4ea714..aed3c7d21f 100644
--- a/algorithms-searching/README.md
+++ b/algorithms-searching/README.md
@@ -11,4 +11,3 @@ This module contains articles about searching algorithms.
 - [Monte Carlo Tree Search for Tic-Tac-Toe Game](https://www.baeldung.com/java-monte-carlo-tree-search)
 - [Range Search Algorithm in Java](https://www.baeldung.com/java-range-search)
 - [Fast Pattern Matching of Strings Using Suffix Tree](https://www.baeldung.com/java-pattern-matching-suffix-tree)
-- [Topological Sort of Directed Acyclic Graph](https://www.baeldung.com/cs/dag-topological-sort)

From 2fe9016a23b0e6860a0b17e5a5c63c1ce11d5d3a Mon Sep 17 00:00:00 2001
From: root <anmoldeep0123@gmail.com>
Date: Thu, 13 Aug 2020 16:10:01 +0000
Subject: [PATCH 099/156] final comments

---
 .../main/java/com/baeldung/loadedclasslisting/Launcher.java   | 4 ++--
 1 file changed, 2 insertions(+), 2 deletions(-)

diff --git a/core-java-modules/core-java-jvm-2/src/main/java/com/baeldung/loadedclasslisting/Launcher.java b/core-java-modules/core-java-jvm-2/src/main/java/com/baeldung/loadedclasslisting/Launcher.java
index 30db6b0bb7..bd9573d6b5 100644
--- a/core-java-modules/core-java-jvm-2/src/main/java/com/baeldung/loadedclasslisting/Launcher.java
+++ b/core-java-modules/core-java-jvm-2/src/main/java/com/baeldung/loadedclasslisting/Launcher.java
@@ -11,9 +11,9 @@ public class Launcher {
     }
 
     private static void printClassesLoadedBy(String classLoaderType) {
+        System.out.println(classLoaderType + " ClassLoader : ");
         Class<?>[] classes = ListLoadedClassesAgent.listLoadedClasses(classLoaderType);
         Arrays.asList(classes)
-            .forEach(clazz -> System.out.println(
-              classLoaderType + " ClassLoader : " + clazz.getCanonicalName()));
+            .forEach(clazz -> System.out.println(clazz.getCanonicalName()));
     }
 }

From 2addd74680639e4864a45ea35d2a02280bfa0dbe Mon Sep 17 00:00:00 2001
From: Krzysiek <krzysztofwoyke@gmail.com>
Date: Thu, 13 Aug 2020 22:07:42 +0200
Subject: [PATCH 100/156] JAVA-1638: Get rid of the overriden
 spring-boot.version property

---
 spring-5-reactive-oauth/pom.xml | 6 +-----
 1 file changed, 1 insertion(+), 5 deletions(-)

diff --git a/spring-5-reactive-oauth/pom.xml b/spring-5-reactive-oauth/pom.xml
index e9882a6d32..15f5dcacaa 100644
--- a/spring-5-reactive-oauth/pom.xml
+++ b/spring-5-reactive-oauth/pom.xml
@@ -7,7 +7,7 @@
     <version>1.0.0-SNAPSHOT</version>
     <name>spring-5-reactive-oauth</name>
     <packaging>jar</packaging>
-    <description>WebFluc and Spring Security OAuth</description>
+    <description>WebFlux and Spring Security OAuth</description>
 
     <parent>
         <groupId>com.baeldung</groupId>
@@ -64,8 +64,4 @@
         </plugins>
     </build>
 
-    <properties>
-        <spring-boot.version>2.1.0.RELEASE</spring-boot.version>
-    </properties>
-
 </project>

From 925c5655b7093c65ef690224f0713d5ed1abb48e Mon Sep 17 00:00:00 2001
From: CHANDRAKANT Kumar <kumar.chandrakant@soprabanking.com>
Date: Fri, 14 Aug 2020 12:46:33 +0530
Subject: [PATCH 101/156] Incorporated review comments on the pull request.

---
 spring-webflux-threads/pom.xml                             | 5 ++++-
 .../src/main/java/com/baeldung/webflux/Controller.java     | 2 +-
 spring-webflux-threads/src/main/resources/application.yml  | 7 -------
 3 files changed, 5 insertions(+), 9 deletions(-)
 delete mode 100644 spring-webflux-threads/src/main/resources/application.yml

diff --git a/spring-webflux-threads/pom.xml b/spring-webflux-threads/pom.xml
index e5b5bafd3b..15224fcd14 100644
--- a/spring-webflux-threads/pom.xml
+++ b/spring-webflux-threads/pom.xml
@@ -7,7 +7,7 @@
     <version>1.0.0-SNAPSHOT</version>
     <name>spring-webflux-threads</name>
     <packaging>jar</packaging>
-    <description>Spring WebFlux AMQP Sample</description>
+    <description>Spring WebFlux Threads Sample</description>
 
     <parent>
         <groupId>com.baeldung</groupId>
@@ -20,6 +20,7 @@
         <dependency>
             <groupId>org.springframework.boot</groupId>
             <artifactId>spring-boot-starter-webflux</artifactId>
+            <!-- Uncomment the following to switch from Netty to Tomcat/Jetty -->
             <!--
             <exclusions>
                 <exclusion>
@@ -29,12 +30,14 @@
             </exclusions>
             -->
         </dependency>
+        <!-- Uncomment the following to switch from Netty to Tomcat -->
         <!--
         <dependency>
             <groupId>org.springframework.boot</groupId>
             <artifactId>spring-boot-starter-tomcat</artifactId>
         </dependency>
         -->
+        <!-- Uncomment the following to switch from Netty to Jetty -->
         <!--
         <dependency>
             <groupId>org.springframework.boot</groupId>
diff --git a/spring-webflux-threads/src/main/java/com/baeldung/webflux/Controller.java b/spring-webflux-threads/src/main/java/com/baeldung/webflux/Controller.java
index 7036deb998..ec6d7a596b 100644
--- a/spring-webflux-threads/src/main/java/com/baeldung/webflux/Controller.java
+++ b/spring-webflux-threads/src/main/java/com/baeldung/webflux/Controller.java
@@ -81,7 +81,7 @@ public class Controller {
         return Flux.fromIterable(getThreads());
     }
 
-    @GetMapping("/thareds/reactor-kafka")
+    @GetMapping("/threads/reactor-kafka")
     public Flux<String> getIndexKafka() {
         Map<String, Object> producerProps = new HashMap<>();
         producerProps.put(ProducerConfig.BOOTSTRAP_SERVERS_CONFIG, "localhost:9092");
diff --git a/spring-webflux-threads/src/main/resources/application.yml b/spring-webflux-threads/src/main/resources/application.yml
deleted file mode 100644
index 5addcff6c2..0000000000
--- a/spring-webflux-threads/src/main/resources/application.yml
+++ /dev/null
@@ -1,7 +0,0 @@
-
-      
-
-  
-      
-    
-    

From 4daecbbc89397f082b8962a5ed815ce1ecbb2694 Mon Sep 17 00:00:00 2001
From: CHANDRAKANT Kumar <kumar.chandrakant@soprabanking.com>
Date: Fri, 14 Aug 2020 12:49:30 +0530
Subject: [PATCH 102/156] Added comments in README regarding Mongo and Kafka
 processes.

---
 spring-webflux-threads/README.md | 3 ++-
 1 file changed, 2 insertions(+), 1 deletion(-)

diff --git a/spring-webflux-threads/README.md b/spring-webflux-threads/README.md
index ab64d897cc..26013d73e1 100644
--- a/spring-webflux-threads/README.md
+++ b/spring-webflux-threads/README.md
@@ -1,6 +1,7 @@
 ## Spring WebFlux Concurrency
 
-This module contains articles about consurrency model in Spring WebFlux
+This module contains articles about concurrency model in Spring WebFlux.
+Please note that this assumes Mongo and Kafka to be running on the local machine on default configurations.
 
 ### Relevant Articles: 
 

From f7915d9f62817abd4d9d8095befdfd2a25b28484 Mon Sep 17 00:00:00 2001
From: Philippe <phil@lighthouse.com.br>
Date: Fri, 14 Aug 2020 09:29:27 -0300
Subject: [PATCH 103/156] [BAEL-4381] Fix formatting

---
 .../smurfs/persistence/SmurfsRepository.java  |  7 ------
 .../smurfs/persistence/domain/Smurf.java      |  7 ------
 .../smurfs/service/SmurfsService.java         |  8 +-----
 .../archunit/smurfs/service/dto/SmurfDTO.java | 10 +-------
 .../archunit/smurfs/SmurfsArchUnitTest.java   | 25 +++++++------------
 5 files changed, 11 insertions(+), 46 deletions(-)

diff --git a/libraries-testing/src/main/java/com/baeldung/archunit/smurfs/persistence/SmurfsRepository.java b/libraries-testing/src/main/java/com/baeldung/archunit/smurfs/persistence/SmurfsRepository.java
index 1dee45087a..c18fcbc839 100644
--- a/libraries-testing/src/main/java/com/baeldung/archunit/smurfs/persistence/SmurfsRepository.java
+++ b/libraries-testing/src/main/java/com/baeldung/archunit/smurfs/persistence/SmurfsRepository.java
@@ -1,6 +1,3 @@
-/**
- * 
- */
 package com.baeldung.archunit.smurfs.persistence;
 
 import java.util.Collections;
@@ -13,10 +10,6 @@ import com.baeldung.archunit.smurfs.persistence.domain.Smurf;
 
 import static java.util.stream.Collectors.toList;
 
-/**
- * @author Philippe
- *
- */
 public class SmurfsRepository {
     
     private static Map<String,Smurf> smurfs = Collections.synchronizedMap(new TreeMap<>());
diff --git a/libraries-testing/src/main/java/com/baeldung/archunit/smurfs/persistence/domain/Smurf.java b/libraries-testing/src/main/java/com/baeldung/archunit/smurfs/persistence/domain/Smurf.java
index 6e0f586a5b..04427a8037 100644
--- a/libraries-testing/src/main/java/com/baeldung/archunit/smurfs/persistence/domain/Smurf.java
+++ b/libraries-testing/src/main/java/com/baeldung/archunit/smurfs/persistence/domain/Smurf.java
@@ -1,12 +1,5 @@
-/**
- * 
- */
 package com.baeldung.archunit.smurfs.persistence.domain;
 
-/**
- * @author Philippe
- *
- */
 public class Smurf {
     private String name;
     private boolean comic;
diff --git a/libraries-testing/src/main/java/com/baeldung/archunit/smurfs/service/SmurfsService.java b/libraries-testing/src/main/java/com/baeldung/archunit/smurfs/service/SmurfsService.java
index e2c73ef77e..4034b33b39 100644
--- a/libraries-testing/src/main/java/com/baeldung/archunit/smurfs/service/SmurfsService.java
+++ b/libraries-testing/src/main/java/com/baeldung/archunit/smurfs/service/SmurfsService.java
@@ -1,6 +1,4 @@
-/**
- * 
- */
+
 package com.baeldung.archunit.smurfs.service;
 
 import java.util.List;
@@ -12,10 +10,6 @@ import com.baeldung.archunit.smurfs.persistence.SmurfsRepository;
 import com.baeldung.archunit.smurfs.persistence.domain.Smurf;
 import com.baeldung.archunit.smurfs.service.dto.SmurfDTO;
 
-/**
- * @author Philippe
- *
- */
 @Component
 public class SmurfsService {
     
diff --git a/libraries-testing/src/main/java/com/baeldung/archunit/smurfs/service/dto/SmurfDTO.java b/libraries-testing/src/main/java/com/baeldung/archunit/smurfs/service/dto/SmurfDTO.java
index 948d0b349a..ac87b2137c 100644
--- a/libraries-testing/src/main/java/com/baeldung/archunit/smurfs/service/dto/SmurfDTO.java
+++ b/libraries-testing/src/main/java/com/baeldung/archunit/smurfs/service/dto/SmurfDTO.java
@@ -1,14 +1,6 @@
-/**
- * 
- */
+
 package com.baeldung.archunit.smurfs.service.dto;
 
-import com.baeldung.archunit.smurfs.persistence.domain.Smurf;
-
-/**
- * @author Philippe
- *
- */
 public class SmurfDTO {
     private String name;
     private boolean comic;
diff --git a/libraries-testing/src/test/java/com/baeldung/archunit/smurfs/SmurfsArchUnitTest.java b/libraries-testing/src/test/java/com/baeldung/archunit/smurfs/SmurfsArchUnitTest.java
index 0231a2c51a..68a33be69b 100644
--- a/libraries-testing/src/test/java/com/baeldung/archunit/smurfs/SmurfsArchUnitTest.java
+++ b/libraries-testing/src/test/java/com/baeldung/archunit/smurfs/SmurfsArchUnitTest.java
@@ -17,10 +17,6 @@ import static org.junit.jupiter.api.Assertions.assertThrows;
 
 import org.junit.jupiter.api.Test;
 
-/**
- * @author Philippe
- *
- */
 public class SmurfsArchUnitTest {
     
     @Test
@@ -29,10 +25,9 @@ public class SmurfsArchUnitTest {
         
         ArchRule r1 = classes()
           .that()
-            .resideInAPackage("..presentation..")
-          .should()
-            .onlyDependOnClassesThat()
-              .resideInAPackage("..service..");
+          .resideInAPackage("..presentation..")
+          .should().onlyDependOnClassesThat()
+          .resideInAPackage("..service..");
     
         assertThrows(AssertionError.class, ()-> r1.check(jc)) ;
     }
@@ -44,10 +39,9 @@ public class SmurfsArchUnitTest {
         
         ArchRule r1 = classes()
           .that()
-            .resideInAPackage("..presentation..")
-          .should()
-            .onlyDependOnClassesThat()
-              .resideInAnyPackage("..service..", "java..", "javax..", "org.springframework..");
+          .resideInAPackage("..presentation..")
+          .should().onlyDependOnClassesThat()
+          .resideInAnyPackage("..service..", "java..", "javax..", "org.springframework..");
 
         r1.check(jc);
     }
@@ -58,10 +52,9 @@ public class SmurfsArchUnitTest {
         
         ArchRule r1 = noClasses()
           .that()
-            .resideInAPackage("..presentation..")
-          .should()
-            .dependOnClassesThat()
-              .resideInAPackage("..persistence..");
+          .resideInAPackage("..presentation..")
+          .should().dependOnClassesThat()
+          .resideInAPackage("..persistence..");
         
         r1.check(jc);
     }

From 29316a01f3c79f13b4f8455ca24aeb4fa07e071f Mon Sep 17 00:00:00 2001
From: Philippe <phil@lighthouse.com.br>
Date: Fri, 14 Aug 2020 11:41:36 -0300
Subject: [PATCH 104/156] [BAEL-4381] Fix formatting

---
 .../smurfs/persistence/domain/Smurf.java      | 18 -------------
 .../archunit/smurfs/service/dto/SmurfDTO.java | 25 ++++---------------
 2 files changed, 5 insertions(+), 38 deletions(-)

diff --git a/libraries-testing/src/main/java/com/baeldung/archunit/smurfs/persistence/domain/Smurf.java b/libraries-testing/src/main/java/com/baeldung/archunit/smurfs/persistence/domain/Smurf.java
index 04427a8037..255a024cdc 100644
--- a/libraries-testing/src/main/java/com/baeldung/archunit/smurfs/persistence/domain/Smurf.java
+++ b/libraries-testing/src/main/java/com/baeldung/archunit/smurfs/persistence/domain/Smurf.java
@@ -13,44 +13,26 @@ public class Smurf {
         this.cartoon = cartoon;
     }
 
-    /**
-     * @return the name
-     */
     public String getName() {
         return name;
     }
 
-    /**
-     * @param name the name to set
-     */
     public void setName(String name) {
         this.name = name;
     }
 
-    /**
-     * @return the commic
-     */
     public boolean isComic() {
         return comic;
     }
 
-    /**
-     * @param commic the commic to set
-     */
     public void setCommic(boolean comic) {
         this.comic = comic;
     }
 
-    /**
-     * @return the cartoon
-     */
     public boolean isCartoon() {
         return cartoon;
     }
 
-    /**
-     * @param cartoon the cartoon to set
-     */
     public void setCartoon(boolean cartoon) {
         this.cartoon = cartoon;
     }
diff --git a/libraries-testing/src/main/java/com/baeldung/archunit/smurfs/service/dto/SmurfDTO.java b/libraries-testing/src/main/java/com/baeldung/archunit/smurfs/service/dto/SmurfDTO.java
index ac87b2137c..523c639c41 100644
--- a/libraries-testing/src/main/java/com/baeldung/archunit/smurfs/service/dto/SmurfDTO.java
+++ b/libraries-testing/src/main/java/com/baeldung/archunit/smurfs/service/dto/SmurfDTO.java
@@ -14,43 +14,28 @@ public class SmurfDTO {
         this.cartoon = cartoon;
     }
     
-    
-    /**
-     * @return the name
-     */
     public String getName() {
         return name;
     }
-    /**
-     * @param name the name to set
-     */
+
     public void setName(String name) {
         this.name = name;
     }
-    /**
-     * @return the commic
-     */
+    
     public boolean isComic() {
         return comic;
     }
-    /**
-     * @param commic the commic to set
-     */
+
     public void setCommic(boolean comic) {
         this.comic = comic;
     }
-    /**
-     * @return the cartoon
-     */
+    
     public boolean isCartoon() {
         return cartoon;
     }
-    /**
-     * @param cartoon the cartoon to set
-     */
+
     public void setCartoon(boolean cartoon) {
         this.cartoon = cartoon;
     }
     
-    
 }

From 37df085e419fa20d18b1bb63e610280f2d770d65 Mon Sep 17 00:00:00 2001
From: bfontana <bruno.fontana@gmail.com>
Date: Fri, 14 Aug 2020 11:47:02 -0300
Subject: [PATCH 105/156] Update README.md

---
 spring-webflux-threads/README.md | 3 ++-
 1 file changed, 2 insertions(+), 1 deletion(-)

diff --git a/spring-webflux-threads/README.md b/spring-webflux-threads/README.md
index 26013d73e1..204b1f0081 100644
--- a/spring-webflux-threads/README.md
+++ b/spring-webflux-threads/README.md
@@ -1,7 +1,8 @@
 ## Spring WebFlux Concurrency
 
 This module contains articles about concurrency model in Spring WebFlux.
-Please note that this assumes Mongo and Kafka to be running on the local machine on default configurations.
+Please note that some of the code assumes Mongo and Kafka are running on the local machine on default configurations.
+If you want to experiment with Tomcat/Jetty instead of Netty, just uncomment the lines in pom.xml and rebuild.
 
 ### Relevant Articles: 
 

From c1d934e8a4d3c010c55f406bda284d973624ca88 Mon Sep 17 00:00:00 2001
From: kwoyke <krzysztofwoyke@gmail.com>
Date: Fri, 14 Aug 2020 17:36:47 +0200
Subject: [PATCH 106/156] BAEL-3975: Fix the PactVerification test (#9870)

---
 libraries-5/pom.xml                           | 14 +++--------
 .../PactConsumerDrivenContractUnitTest.java   | 25 ++++++++++++++-----
 2 files changed, 23 insertions(+), 16 deletions(-)

diff --git a/libraries-5/pom.xml b/libraries-5/pom.xml
index 63296d4a89..63347dd60d 100644
--- a/libraries-5/pom.xml
+++ b/libraries-5/pom.xml
@@ -32,12 +32,6 @@
             <artifactId>pact-jvm-consumer-junit_2.11</artifactId>
             <version>${pact.version}</version>
             <scope>test</scope>
-            <exclusions>
-                <exclusion>
-                    <groupId>org.codehaus.groovy</groupId>
-                    <artifactId>groovy-all</artifactId>
-                </exclusion>
-            </exclusions>
         </dependency>
 
         <!-- https://mvnrepository.com/artifact/com.typesafe.akka/akka-actor -->
@@ -53,10 +47,10 @@
             <scope>test</scope>
 
         </dependency>
-                <dependency>
-                    <groupId>one.util</groupId>
-                    <artifactId>streamex</artifactId>
-                    <version>${streamex.version}</version>
+        <dependency>
+            <groupId>one.util</groupId>
+            <artifactId>streamex</artifactId>
+            <version>${streamex.version}</version>
         </dependency>
         <dependency>
             <groupId>net.bytebuddy</groupId>
diff --git a/libraries-5/src/test/java/com/baeldung/pact/PactConsumerDrivenContractUnitTest.java b/libraries-5/src/test/java/com/baeldung/pact/PactConsumerDrivenContractUnitTest.java
index d8bc46985d..e4ac8a3a95 100644
--- a/libraries-5/src/test/java/com/baeldung/pact/PactConsumerDrivenContractUnitTest.java
+++ b/libraries-5/src/test/java/com/baeldung/pact/PactConsumerDrivenContractUnitTest.java
@@ -5,8 +5,6 @@ import au.com.dius.pact.consumer.PactProviderRuleMk2;
 import au.com.dius.pact.consumer.PactVerification;
 import au.com.dius.pact.consumer.dsl.PactDslWithProvider;
 import au.com.dius.pact.model.RequestResponsePact;
-
-import org.junit.Ignore;
 import org.junit.Rule;
 import org.junit.Test;
 import org.springframework.http.HttpEntity;
@@ -28,15 +26,30 @@ public class PactConsumerDrivenContractUnitTest {
 
     @Pact(consumer = "test_consumer")
     public RequestResponsePact createPact(PactDslWithProvider builder) {
-        Map<String, String> headers = new HashMap<String, String>();
+        Map<String, String> headers = new HashMap<>();
         headers.put("Content-Type", "application/json");
 
-        return builder.given("test GET").uponReceiving("GET REQUEST").path("/pact").method("GET").willRespondWith().status(200).headers(headers).body("{\"condition\": true, \"name\": \"tom\"}").given("test POST").uponReceiving("POST REQUEST").method("POST")
-                .headers(headers).body("{\"name\": \"Michael\"}").path("/pact").willRespondWith().status(201).toPact();
+        return builder
+          .given("test GET")
+            .uponReceiving("GET REQUEST")
+            .path("/pact")
+            .method("GET")
+          .willRespondWith()
+            .status(200)
+            .headers(headers)
+            .body("{\"condition\": true, \"name\": \"tom\"}")
+          .given("test POST")
+            .uponReceiving("POST REQUEST")
+            .method("POST")
+            .headers(headers)
+            .body("{\"name\": \"Michael\"}")
+            .path("/pact")
+          .willRespondWith()
+            .status(201)
+          .toPact();
     }
 
     @Test
-    @Ignore
     @PactVerification()
     public void givenGet_whenSendRequest_shouldReturn200WithProperHeaderAndBody() {
         // when

From 459662daf6bd4df19e8275664796708dff9c8dd2 Mon Sep 17 00:00:00 2001
From: kwoyke <krzysztofwoyke@gmail.com>
Date: Fri, 14 Aug 2020 17:36:57 +0200
Subject: [PATCH 107/156] BAEL-4543: Use the prefered toArray() approach
 (#9869)

---
 .../java/collections/JavaCollectionConversionUnitTest.java      | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/java-collections-conversions/src/test/java/com/baeldung/java/collections/JavaCollectionConversionUnitTest.java b/java-collections-conversions/src/test/java/com/baeldung/java/collections/JavaCollectionConversionUnitTest.java
index ba640f3fb2..7b856309f1 100644
--- a/java-collections-conversions/src/test/java/com/baeldung/java/collections/JavaCollectionConversionUnitTest.java
+++ b/java-collections-conversions/src/test/java/com/baeldung/java/collections/JavaCollectionConversionUnitTest.java
@@ -144,7 +144,7 @@ public class JavaCollectionConversionUnitTest {
         final Map<Integer, String> sourceMap = createMap();
 
         final Collection<String> values = sourceMap.values();
-        final String[] targetArray = values.toArray(new String[values.size()]);
+        final String[] targetArray = values.toArray(new String[0]);
     }
 
     @Test

From 9ca1a0064a74209d83a784811883a13e013c6430 Mon Sep 17 00:00:00 2001
From: Maiklins <kruemel@quantentunnel.de>
Date: Fri, 14 Aug 2020 17:41:36 +0200
Subject: [PATCH 108/156] CS-378 Find kth smallest element in union of two
 sorted arrays (#9812)

* CS-378 Find the Kth Smallest Element in the Union of Two Sorted Arrays

* CS-378 Fix name of unit test

* CS-378 Update merge algorithm to operate only on two input arrays

Co-authored-by: mikr <michael.krimgen@ximedes.com>
---
 .../algorithms/kthsmallest/KthSmallest.java   | 126 ++++++++
 .../kthsmallest/KthSmallestUnitTest.java      | 288 ++++++++++++++++++
 2 files changed, 414 insertions(+)
 create mode 100644 algorithms-searching/src/main/java/com/baeldung/algorithms/kthsmallest/KthSmallest.java
 create mode 100644 algorithms-searching/src/test/java/com/baeldung/algorithms/kthsmallest/KthSmallestUnitTest.java

diff --git a/algorithms-searching/src/main/java/com/baeldung/algorithms/kthsmallest/KthSmallest.java b/algorithms-searching/src/main/java/com/baeldung/algorithms/kthsmallest/KthSmallest.java
new file mode 100644
index 0000000000..2bd1a20ce0
--- /dev/null
+++ b/algorithms-searching/src/main/java/com/baeldung/algorithms/kthsmallest/KthSmallest.java
@@ -0,0 +1,126 @@
+package com.baeldung.algorithms.kthsmallest;
+
+import java.util.Arrays;
+import java.util.NoSuchElementException;
+
+import static java.lang.Math.max;
+import static java.lang.Math.min;
+
+public class KthSmallest {
+
+    public static int findKthSmallestElement(int k, int[] list1, int[] list2)  throws NoSuchElementException, IllegalArgumentException {
+
+        checkInput(k, list1, list2);
+
+        // we are looking for the minimum value
+        if(k == 1) {
+            return min(list1[0], list2[0]);
+        }
+
+        // we are looking for the maximum value
+        if(list1.length + list2.length == k) {
+            return max(list1[list1.length-1], list2[list2.length-1]);
+        }
+
+        // swap lists if needed to make sure we take at least one element from list1
+        if(k <= list2.length && list2[k-1] < list1[0]) {
+            int[] list1_ = list1;
+            list1 = list2;
+            list2 = list1_;
+        }
+
+        // correct left boundary if k is bigger than the size of list2
+        int left = k < list2.length ? 0 : k - list2.length - 1;
+
+        // the inital right boundary cannot exceed the list1
+        int right = min(k-1, list1.length - 1);
+
+        int nElementsList1, nElementsList2;
+
+        // binary search
+        do {
+            nElementsList1 = ((left + right) / 2) + 1;
+            nElementsList2 = k - nElementsList1;
+
+            if(nElementsList2 > 0) {
+                if (list1[nElementsList1 - 1] > list2[nElementsList2 - 1]) {
+                    right = nElementsList1 - 2;
+                } else {
+                    left = nElementsList1;
+                }
+            }
+        } while(!kthSmallesElementFound(list1, list2, nElementsList1, nElementsList2));
+
+        return nElementsList2 == 0 ? list1[nElementsList1-1] : max(list1[nElementsList1-1], list2[nElementsList2-1]);
+    }
+
+    private static boolean kthSmallesElementFound(int[] list1, int[] list2, int nElementsList1, int nElementsList2) {
+
+        // we do not take any element from the second list
+        if(nElementsList2 < 1) {
+            return true;
+        }
+
+        if(list1[nElementsList1-1] == list2[nElementsList2-1]) {
+            return true;
+        }
+
+        if(nElementsList1 == list1.length) {
+            return list1[nElementsList1-1] <= list2[nElementsList2];
+        }
+
+        if(nElementsList2 == list2.length) {
+            return list2[nElementsList2-1] <= list1[nElementsList1];
+        }
+
+        return list1[nElementsList1-1] <= list2[nElementsList2] && list2[nElementsList2-1] <= list1[nElementsList1];
+    }
+
+
+    private static void checkInput(int k, int[] list1, int[] list2) throws NoSuchElementException, IllegalArgumentException {
+
+        if(list1 == null || list2 == null || k < 1) {
+            throw new IllegalArgumentException();
+        }
+
+        if(list1.length == 0 || list2.length == 0) {
+            throw new IllegalArgumentException();
+        }
+
+        if(k > list1.length + list2.length) {
+            throw new NoSuchElementException();
+        }
+    }
+
+    public static int getKthElementSorted(int[] list1, int[] list2, int k) {
+
+        int length1 = list1.length, length2 = list2.length;
+        int[] combinedArray = new int[length1 + length2];
+        System.arraycopy(list1, 0, combinedArray, 0, list1.length);
+        System.arraycopy(list2, 0, combinedArray, list1.length, list2.length);
+        Arrays.sort(combinedArray);
+
+        return combinedArray[k-1];
+    }
+
+    public static int getKthElementMerge(int[] list1, int[] list2, int k) {
+
+        int i1 = 0, i2 = 0;
+
+        while(i1 < list1.length && i2 < list2.length && (i1 + i2) < k) {
+            if(list1[i1] < list2[i2]) {
+                i1++;
+            } else {
+                i2++;
+            }
+        }
+
+        if((i1 + i2) < k) {
+            return i1 < list1.length ? list1[k - i2 - 1] : list2[k - i1 - 1];
+        } else if(i1 > 0 && i2 > 0) {
+            return Math.max(list1[i1-1], list2[i2-1]);
+        } else {
+            return i1 == 0 ? list2[i2-1] : list1[i1-1];
+        }
+    }
+}
diff --git a/algorithms-searching/src/test/java/com/baeldung/algorithms/kthsmallest/KthSmallestUnitTest.java b/algorithms-searching/src/test/java/com/baeldung/algorithms/kthsmallest/KthSmallestUnitTest.java
new file mode 100644
index 0000000000..740e89d8e7
--- /dev/null
+++ b/algorithms-searching/src/test/java/com/baeldung/algorithms/kthsmallest/KthSmallestUnitTest.java
@@ -0,0 +1,288 @@
+package com.baeldung.algorithms.kthsmallest;
+
+import org.junit.jupiter.api.Nested;
+import org.junit.jupiter.api.Test;
+import org.junit.jupiter.api.function.Executable;
+
+import java.util.*;
+
+import static com.baeldung.algorithms.kthsmallest.KthSmallest.*;
+import static org.junit.jupiter.api.Assertions.*;
+
+public class KthSmallestUnitTest {
+
+    @Nested
+    class Exceptions {
+
+        @Test
+        public void when_at_least_one_list_is_null_then_an_exception_is_thrown() {
+
+            Executable executable1 = () -> findKthSmallestElement(1, null, null);
+            Executable executable2 = () -> findKthSmallestElement(1, new int[]{2}, null);
+            Executable executable3 = () -> findKthSmallestElement(1, null, new int[]{2});
+
+            assertThrows(IllegalArgumentException.class, executable1);
+            assertThrows(IllegalArgumentException.class, executable2);
+            assertThrows(IllegalArgumentException.class, executable3);
+        }
+
+        @Test
+        public void when_at_least_one_list_is_empty_then_an_exception_is_thrown() {
+
+            Executable executable1 = () -> findKthSmallestElement(1, new int[]{}, new int[]{2});
+            Executable executable2 = () -> findKthSmallestElement(1, new int[]{2}, new int[]{});
+            Executable executable3 = () -> findKthSmallestElement(1, new int[]{}, new int[]{});
+
+            assertThrows(IllegalArgumentException.class, executable1);
+            assertThrows(IllegalArgumentException.class, executable2);
+            assertThrows(IllegalArgumentException.class, executable3);
+        }
+
+        @Test
+        public void when_k_is_smaller_than_0_then_an_exception_is_thrown() {
+            Executable executable1 = () -> findKthSmallestElement(-1, new int[]{2}, new int[]{2});
+            assertThrows(IllegalArgumentException.class, executable1);
+        }
+
+        @Test
+        public void when_k_is_smaller_than_1_then_an_exception_is_thrown() {
+            Executable executable1 = () -> findKthSmallestElement(0, new int[]{2}, new int[]{2});
+            assertThrows(IllegalArgumentException.class, executable1);
+        }
+
+        @Test
+        public void when_k_bigger_then_the_two_lists_then_an_exception_is_thrown() {
+            Executable executable1 = () -> findKthSmallestElement(6, new int[]{1, 5, 6}, new int[]{2, 5});
+            assertThrows(NoSuchElementException.class, executable1);
+        }
+
+    }
+
+    @Nested
+    class K_is_smaller_than_the_size_of_list1_and_the_size_of_list2 {
+
+        @Test
+        public void when_k_is_1_then_the_smallest_element_is_returned_from_list1() {
+            int result = findKthSmallestElement(1, new int[]{2, 7}, new int[]{3, 5});
+            assertEquals(2, result);
+        }
+
+        @Test
+        public void when_k_is_1_then_the_smallest_element_is_returned_list2() {
+            int result = findKthSmallestElement(1, new int[]{3, 5}, new int[]{2, 7});
+            assertEquals(2, result);
+        }
+
+        @Test
+        public void when_kth_element_is_smallest_element_and_occurs_in_both_lists() {
+            int[] list1 = new int[]{1, 2, 3};
+            int[] list2 = new int[]{1, 2, 3};
+            int result = findKthSmallestElement(1, list1, list2);
+            assertEquals(1, result);
+        }
+
+        @Test
+        public void when_kth_element_is_smallest_element_and_occurs_in_both_lists2() {
+            int[] list1 = new int[]{1, 2, 3};
+            int[] list2 = new int[]{1, 2, 3};
+            int result = findKthSmallestElement(2, list1, list2);
+            assertEquals(1, result);
+        }
+
+        @Test
+        public void when_kth_element_is_largest_element_and_occurs_in_both_lists_1() {
+            int[] list1 = new int[]{1, 2, 3};
+            int[] list2 = new int[]{1, 2, 3};
+            int result = findKthSmallestElement(5, list1, list2);
+            assertEquals(3, result);
+        }
+
+        @Test
+        public void when_kth_element_is_largest_element_and_occurs_in_both_lists_2() {
+            int[] list1 = new int[]{1, 2, 3};
+            int[] list2 = new int[]{1, 2, 3};
+            int result = findKthSmallestElement(6, list1, list2);
+            assertEquals(3, result);
+        }
+
+        @Test
+        public void when_kth_element_and_occurs_in_both_lists() {
+            int[] list1 = new int[]{1, 2, 3};
+            int[] list2 = new int[]{0, 2, 3};
+            int result = findKthSmallestElement(3, list1, list2);
+            assertEquals(2, result);
+        }
+
+        @Test
+        public void and_kth_element_is_in_first_list() {
+            int[] list1 = new int[]{1,2,3,4};
+            int[] list2 = new int[]{1,3,4,5};
+            int result = findKthSmallestElement(3,  list1, list2);
+            assertEquals(2, result);
+        }
+
+        @Test
+        public void and_kth_is_in_second_list() {
+            int[] list1 = new int[]{1,3,4,4};
+            int[] list2 = new int[]{1,2,4,5};
+            int result = findKthSmallestElement(3,  list1, list2);
+            assertEquals(2, result);
+        }
+
+        @Test
+        public void and_elements_in_first_list_are_all_smaller_than_second_list() {
+            int[] list1 = new int[]{1,3,7,9};
+            int[] list2 = new int[]{11,12,14,15};
+            int result = findKthSmallestElement(3,  list1, list2);
+            assertEquals(7, result);
+        }
+
+        @Test
+        public void and_elements_in_first_list_are_all_smaller_than_second_list2() {
+            int[] list1 = new int[]{1,3,7,9};
+            int[] list2 = new int[]{11,12,14,15};
+            int result = findKthSmallestElement(4,  list1, list2);
+            assertEquals(9, result);
+        }
+
+        @Test
+        public void and_only_elements_from_second_list_are_part_of_result() {
+            int[] list1 = new int[]{11,12,14,15};
+            int[] list2 = new int[]{1,3,7,9};
+            int result = findKthSmallestElement(3,  list1, list2);
+            assertEquals(7, result);
+        }
+
+        @Test
+        public void and_only_elements_from_second_list_are_part_of_result2() {
+            int[] list1 = new int[]{11,12,14,15};
+            int[] list2 = new int[]{1,3,7,9};
+            int result = findKthSmallestElement(4,  list1, list2);
+            assertEquals(9, result);
+        }
+    }
+
+    @Nested
+    class K_is_bigger_than_the_size_of_at_least_one_of_the_lists {
+
+        @Test
+        public void k_is_smaller_than_list1_and_bigger_than_list2() {
+            int[] list1 = new int[]{1, 2, 3, 4, 7, 9};
+            int[] list2 = new int[]{1, 2, 3};
+            int result = findKthSmallestElement(5, list1, list2);
+            assertEquals(3, result);
+        }
+
+        @Test
+        public void k_is_bigger_than_list1_and_smaller_than_list2() {
+            int[] list1 = new int[]{1, 2, 3};
+            int[] list2 = new int[]{1, 2, 3, 4, 7, 9};
+            int result = findKthSmallestElement(5, list1, list2);
+            assertEquals(3, result);
+        }
+
+        @Test
+        public void when_k_is_bigger_than_the_size_of_both_lists_and_elements_in_second_list_are_all_smaller_than_first_list() {
+            int[] list1 = new int[]{9, 11, 13, 55};
+            int[] list2 = new int[]{1, 2, 3, 7};
+            int result = findKthSmallestElement(6, list1, list2);
+            assertEquals(11, result);
+        }
+
+        @Test
+        public void when_k_is_bigger_than_the_size_of_both_lists_and_elements_in_second_list_are_all_bigger_than_first_list() {
+            int[] list1 = new int[]{1, 2, 3, 7};
+            int[] list2 = new int[]{9, 11, 13, 55};
+            int result = findKthSmallestElement(6, list1, list2);
+            assertEquals(11, result);
+        }
+
+        @Test
+        public void when_k_is_bigger_than_the_size_of_both_lists() {
+            int[] list1 = new int[]{3, 7, 9, 11, 55};
+            int[] list2 = new int[]{1, 2, 3, 7, 13};
+            int result = findKthSmallestElement(7, list1, list2);
+            assertEquals(9, result);
+        }
+
+        @Test
+        public void when_k_is_bigger_than_the_size_of_both_lists_and_list1_has_more_elements_than_list2() {
+            int[] list1 = new int[]{3, 7, 9, 11, 55, 77, 100, 200};
+            int[] list2 = new int[]{1, 2, 3, 7, 13};
+            int result = findKthSmallestElement(11, list1, list2);
+            assertEquals(77, result);
+        }
+
+        @Test
+        public void max_test() {
+            int[] list1 = new int[]{100, 200};
+            int[] list2 = new int[]{1, 2, 3};
+            int result = findKthSmallestElement(4, list1, list2);
+            assertEquals(100, result);
+        }
+
+        @Test
+        public void max_test2() {
+            int[] list1 = new int[]{100, 200};
+            int[] list2 = new int[]{1, 2, 3};
+            int result = findKthSmallestElement(5, list1, list2);
+            assertEquals(200, result);
+        }
+
+        @Test
+        public void when_k_is_smaller_than_the_size_of_both_lists_and_kth_element_in_list2() {
+            int[] list1 = new int[]{1, 2, 5};
+            int[] list2 = new int[]{1, 3, 4, 7};
+            int result = findKthSmallestElement(4, list1, list2);
+            assertEquals(3, result);
+        }
+
+        @Test
+        public void when_k_is_smaller_than_the_size_of_both_lists_and_kth_element_is_smallest_in_list2() {
+            int[] list1 = new int[]{1, 2, 5};
+            int[] list2 = new int[]{3, 4, 7};
+            int result = findKthSmallestElement(3, list1, list2);
+            assertEquals(3, result);
+        }
+
+        @Test
+        public void when_k_is_smaller_than_the_size_of_both_lists_and_kth_element_is_smallest_in_list23() {
+            int[] list1 = new int[]{3, 11, 27, 53, 90};
+            int[] list2 = new int[]{4, 20, 21, 100};
+            int result = findKthSmallestElement(5, list1, list2);
+            assertEquals(21, result);
+        }
+    }
+
+//    @Test
+//    public void randomTests() {
+//        IntStream.range(1, 100000).forEach(i -> random());
+//    }
+
+    private void random() {
+
+        Random random = new Random();
+        int length1 = (Math.abs(random.nextInt())) % 1000 + 1;
+        int length2 = (Math.abs(random.nextInt())) % 1000 + 1;
+
+        int[] list1 = sortedRandomIntArrayOfLength(length1);
+        int[] list2 = sortedRandomIntArrayOfLength(length2);
+
+        int k = (Math.abs(random.nextInt()) % (length1 + length2)) + 1 ;
+
+        int result = findKthSmallestElement(k,  list1, list2);
+
+        int result2 = getKthElementSorted(list1, list2, k);
+
+        int result3 = getKthElementMerge(list1, list2, k);
+
+        assertEquals(result2, result);
+        assertEquals(result2, result3);
+    }
+
+    private int[] sortedRandomIntArrayOfLength(int length) {
+        int[] intArray = new Random().ints(length).toArray();
+        Arrays.sort(intArray);
+        return intArray;
+    }
+}
\ No newline at end of file

From 8d97b0cb37a0e76767c3241bf6cfb9c5e0ca60a5 Mon Sep 17 00:00:00 2001
From: sampadawagde <sampada.wagde@gmail.com>
Date: Fri, 14 Aug 2020 22:07:40 +0530
Subject: [PATCH 109/156] JAVA-1639: Upgrade spring-5-security-cognito to use
 latest Spring Boot version

---
 spring-5-security-cognito/pom.xml             |  9 +----
 .../cognito/CognitoWebConfiguration.java      |  2 --
 .../cognito/SecurityConfiguration.java        | 23 ++++++++++++
 .../cognito/SpringCognitoApplication.java     |  2 --
 .../src/main/resources/application.yml        | 15 ++++++++
 .../resources/cognito/application-cognito.yml | 15 --------
 .../src/main/resources/cognito/home.html      | 32 -----------------
 .../src/main/resources/cognito/style.css      |  9 -----
 .../src/main/resources/templates/home.html    | 35 +++++++++++++++++++
 9 files changed, 74 insertions(+), 68 deletions(-)
 create mode 100644 spring-5-security-cognito/src/main/java/com/baeldung/cognito/SecurityConfiguration.java
 create mode 100644 spring-5-security-cognito/src/main/resources/application.yml
 delete mode 100644 spring-5-security-cognito/src/main/resources/cognito/application-cognito.yml
 delete mode 100644 spring-5-security-cognito/src/main/resources/cognito/home.html
 delete mode 100644 spring-5-security-cognito/src/main/resources/cognito/style.css
 create mode 100644 spring-5-security-cognito/src/main/resources/templates/home.html

diff --git a/spring-5-security-cognito/pom.xml b/spring-5-security-cognito/pom.xml
index 8d03b91ce0..5f8f328086 100644
--- a/spring-5-security-cognito/pom.xml
+++ b/spring-5-security-cognito/pom.xml
@@ -34,11 +34,6 @@
         </dependency>
 
         <!-- oauth2 -->
-        <dependency>
-            <groupId>org.springframework.security.oauth.boot</groupId>
-            <artifactId>spring-security-oauth2-autoconfigure</artifactId>
-            <version>${oauth-auto.version}</version>
-        </dependency>
         <dependency>
             <groupId>org.springframework.security</groupId>
             <artifactId>spring-security-oauth2-client</artifactId>
@@ -62,10 +57,8 @@
             <scope>test</scope>
         </dependency>
     </dependencies>
-	
+
     <properties>
-        <spring-boot.version>2.1.0.RELEASE</spring-boot.version>
-        <oauth-auto.version>2.1.0.RELEASE</oauth-auto.version>
         <start-class>com.baeldung.cognito.SpringCognitoApplication</start-class>
     </properties>
 
diff --git a/spring-5-security-cognito/src/main/java/com/baeldung/cognito/CognitoWebConfiguration.java b/spring-5-security-cognito/src/main/java/com/baeldung/cognito/CognitoWebConfiguration.java
index 6841fa7a65..df35a46ef3 100644
--- a/spring-5-security-cognito/src/main/java/com/baeldung/cognito/CognitoWebConfiguration.java
+++ b/spring-5-security-cognito/src/main/java/com/baeldung/cognito/CognitoWebConfiguration.java
@@ -1,12 +1,10 @@
 package com.baeldung.cognito;
 
 import org.springframework.context.annotation.Configuration;
-import org.springframework.context.annotation.PropertySource;
 import org.springframework.web.servlet.config.annotation.ViewControllerRegistry;
 import org.springframework.web.servlet.config.annotation.WebMvcConfigurer;
 
 @Configuration
-@PropertySource("cognito/application-cognito.yml")
 public class CognitoWebConfiguration implements WebMvcConfigurer {
 
     @Override
diff --git a/spring-5-security-cognito/src/main/java/com/baeldung/cognito/SecurityConfiguration.java b/spring-5-security-cognito/src/main/java/com/baeldung/cognito/SecurityConfiguration.java
new file mode 100644
index 0000000000..ba0436d20d
--- /dev/null
+++ b/spring-5-security-cognito/src/main/java/com/baeldung/cognito/SecurityConfiguration.java
@@ -0,0 +1,23 @@
+package com.baeldung.cognito;
+
+import org.springframework.context.annotation.Configuration;
+import org.springframework.security.config.annotation.web.builders.HttpSecurity;
+import org.springframework.security.config.annotation.web.configuration.WebSecurityConfigurerAdapter;
+
+@Configuration
+public class SecurityConfiguration extends WebSecurityConfigurerAdapter {
+
+    @Override
+    protected void configure(HttpSecurity http) throws Exception {
+        http.csrf()
+            .and()
+            .authorizeRequests(authz -> authz.mvcMatchers("/")
+                .permitAll()
+                .anyRequest()
+                .authenticated())
+            .oauth2Login()
+            .and()
+            .logout()
+            .logoutSuccessUrl("/");
+    }
+}
\ No newline at end of file
diff --git a/spring-5-security-cognito/src/main/java/com/baeldung/cognito/SpringCognitoApplication.java b/spring-5-security-cognito/src/main/java/com/baeldung/cognito/SpringCognitoApplication.java
index eebe6d8f45..fc55de590c 100644
--- a/spring-5-security-cognito/src/main/java/com/baeldung/cognito/SpringCognitoApplication.java
+++ b/spring-5-security-cognito/src/main/java/com/baeldung/cognito/SpringCognitoApplication.java
@@ -2,10 +2,8 @@ package com.baeldung.cognito;
 
 import org.springframework.boot.SpringApplication;
 import org.springframework.boot.autoconfigure.SpringBootApplication;
-import org.springframework.context.annotation.PropertySource;
 
 @SpringBootApplication
-@PropertySource("cognito/application-cognito.yml")
 public class SpringCognitoApplication {
 
     public static void main(String[] args) {
diff --git a/spring-5-security-cognito/src/main/resources/application.yml b/spring-5-security-cognito/src/main/resources/application.yml
new file mode 100644
index 0000000000..e53a2642e0
--- /dev/null
+++ b/spring-5-security-cognito/src/main/resources/application.yml
@@ -0,0 +1,15 @@
+spring:
+  security:
+    oauth2:
+      client:
+        registration:
+          cognito:
+            client-id: your_clientId
+            client-secret: your_clientSecret
+            scope: openid
+            redirect-uri: http://localhost:8080/login/oauth2/code/cognito
+            clientName: your_clientName
+        provider:
+          cognito:
+            issuerUri: https://cognito-idp.{region}.amazonaws.com/{poolId}
+            user-name-attribute: cognito:username
diff --git a/spring-5-security-cognito/src/main/resources/cognito/application-cognito.yml b/spring-5-security-cognito/src/main/resources/cognito/application-cognito.yml
deleted file mode 100644
index 0a28dbccb4..0000000000
--- a/spring-5-security-cognito/src/main/resources/cognito/application-cognito.yml
+++ /dev/null
@@ -1,15 +0,0 @@
-spring:
-  security:
-    oauth2:
-      client:
-        registration:
-          cognito:
-            client-id: clientId
-            client-secret: clientSecret
-            scope: openid
-            redirectUriTemplate: "http://localhost:8080/login/oauth2/code/cognito"
-            clientName: cognito-client-name
-        provider:
-          cognito:
-            issuerUri: https://cognito-idp.{region}.amazonaws.com/{poolId}
-            usernameAttribute: cognito:username
diff --git a/spring-5-security-cognito/src/main/resources/cognito/home.html b/spring-5-security-cognito/src/main/resources/cognito/home.html
deleted file mode 100644
index f0bd9e52a8..0000000000
--- a/spring-5-security-cognito/src/main/resources/cognito/home.html
+++ /dev/null
@@ -1,32 +0,0 @@
-<!DOCTYPE html>
-<html xmlns:th="http://www.thymeleaf.org" xmlns:sec="http://www.thymeleaf.org/extras/spring-security">
-<head>
-    <meta charset="utf-8">
-    <meta name="viewport" content="width=device-width, initial-scale=1">
-    <title>OAuth2 Cognito Demo</title>
-
-    <link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/bulma/0.7.4/css/bulma.min.css">
-    <link rel="stylesheet" th:href="@{/cognito/style.css}">
-</head>
-<body>
-<section class="section">
-    <div class="container has-text-centered">
-        <div>
-            <h1 class="title">OAuth2 Spring Security Cognito Demo</h1>
-
-            <div sec:authorize="isAuthenticated()">
-                <div class="box">
-                    Hello, <strong th:text="${#authentication.name}"></strong>!
-                </div>
-            </div>
-
-            <div sec:authorize="isAnonymous()">
-                <div class="box">
-                    <a class="button login is-primary" th:href="@{/oauth2/authorization/cognito}">Log in with Amazon Cognito</a>
-                </div>
-            </div>
-        </div>
-    </div>
-</section>
-</body>
-</html>
diff --git a/spring-5-security-cognito/src/main/resources/cognito/style.css b/spring-5-security-cognito/src/main/resources/cognito/style.css
deleted file mode 100644
index 45190d6d70..0000000000
--- a/spring-5-security-cognito/src/main/resources/cognito/style.css
+++ /dev/null
@@ -1,9 +0,0 @@
-.login {
-    background-color: #7289da;
-    color: #fff;
-}
-
-.login:hover {
-    background-color: #697ec4;
-    color: #fff;
-}
diff --git a/spring-5-security-cognito/src/main/resources/templates/home.html b/spring-5-security-cognito/src/main/resources/templates/home.html
new file mode 100644
index 0000000000..df3c86fe2a
--- /dev/null
+++ b/spring-5-security-cognito/src/main/resources/templates/home.html
@@ -0,0 +1,35 @@
+<!DOCTYPE html>
+<html xmlns:th="http://www.thymeleaf.org"
+	xmlns:sec="http://www.thymeleaf.org/extras/spring-security">
+<head>
+<meta charset="utf-8">
+<meta name="viewport" content="width=device-width, initial-scale=1">
+<title>OAuth2 Cognito Demo</title>
+
+<link rel="stylesheet"
+	href="https://cdnjs.cloudflare.com/ajax/libs/bulma/0.7.4/css/bulma.min.css">
+</head>
+<body>
+	<section class="section">
+		<div class="container has-text-centered">
+			<div>
+				<h1 class="title">OAuth2 Spring Security Cognito Demo</h1>
+
+				<div sec:authorize="isAuthenticated()">
+					<div class="box">
+						Hello, <strong th:text="${#authentication.name}"></strong>!
+					</div>
+				</div>
+
+				<div sec:authorize="isAnonymous()">
+					<div class="box">
+						<a class="button login is-primary"
+							th:href="@{/oauth2/authorization/cognito}">Log in with Amazon
+							Cognito</a>
+					</div>
+				</div>
+			</div>
+		</div>
+	</section>
+</body>
+</html>

From 9c846f0e842799543be23dc71b0c54bbb697b474 Mon Sep 17 00:00:00 2001
From: Ankur Gupta <ankur.gupta@jda.com>
Date: Sat, 15 Aug 2020 03:21:29 +0530
Subject: [PATCH 110/156] keeping Configuration in Separate class

---
 .../cosmosdb/AzureCosmosDbApplication.java    | 34 +----------------
 .../config/AzureCosmosDbConfiguration.java    | 37 +++++++++++++++++++
 2 files changed, 38 insertions(+), 33 deletions(-)
 create mode 100644 persistence-modules/spring-data-cosmosdb/src/main/java/com/baeldung/spring/data/cosmosdb/config/AzureCosmosDbConfiguration.java

diff --git a/persistence-modules/spring-data-cosmosdb/src/main/java/com/baeldung/spring/data/cosmosdb/AzureCosmosDbApplication.java b/persistence-modules/spring-data-cosmosdb/src/main/java/com/baeldung/spring/data/cosmosdb/AzureCosmosDbApplication.java
index 7a91cd7d33..5a1764adc6 100644
--- a/persistence-modules/spring-data-cosmosdb/src/main/java/com/baeldung/spring/data/cosmosdb/AzureCosmosDbApplication.java
+++ b/persistence-modules/spring-data-cosmosdb/src/main/java/com/baeldung/spring/data/cosmosdb/AzureCosmosDbApplication.java
@@ -1,44 +1,12 @@
 package com.baeldung.spring.data.cosmosdb;
 
-import com.azure.data.cosmos.CosmosKeyCredential;
-import com.baeldung.spring.data.cosmosdb.repository.ProductRepository;
-import com.microsoft.azure.spring.data.cosmosdb.config.AbstractCosmosConfiguration;
-import com.microsoft.azure.spring.data.cosmosdb.config.CosmosDBConfig;
-import com.microsoft.azure.spring.data.cosmosdb.repository.config.EnableCosmosRepositories;
-
-import org.springframework.beans.factory.annotation.Value;
 import org.springframework.boot.SpringApplication;
 import org.springframework.boot.autoconfigure.SpringBootApplication;
-import org.springframework.context.annotation.Bean;
 
 @SpringBootApplication
-@EnableCosmosRepositories(basePackageClasses = ProductRepository.class)
-public class AzureCosmosDbApplication extends AbstractCosmosConfiguration {
+public class AzureCosmosDbApplication {
 
     public static void main(String[] args) {
         SpringApplication.run(AzureCosmosDbApplication.class, args);
     }
-
-    @Value("${azure.cosmosdb.uri}")
-    private String uri;
-
-    @Value("${azure.cosmosdb.key}")
-    private String key;
-
-    @Value("${azure.cosmosdb.secondaryKey}")
-    private String secondaryKey;
-
-    @Value("${azure.cosmosdb.database}")
-    private String dbName;
-
-    private CosmosKeyCredential cosmosKeyCredential;
-
-    @Bean
-    public CosmosDBConfig getConfig() {
-        this.cosmosKeyCredential = new CosmosKeyCredential(key);
-        CosmosDBConfig cosmosdbConfig = CosmosDBConfig.builder(uri, this.cosmosKeyCredential, dbName)
-            .build();
-        return cosmosdbConfig;
-    }
-
 }
diff --git a/persistence-modules/spring-data-cosmosdb/src/main/java/com/baeldung/spring/data/cosmosdb/config/AzureCosmosDbConfiguration.java b/persistence-modules/spring-data-cosmosdb/src/main/java/com/baeldung/spring/data/cosmosdb/config/AzureCosmosDbConfiguration.java
new file mode 100644
index 0000000000..7d3322faf6
--- /dev/null
+++ b/persistence-modules/spring-data-cosmosdb/src/main/java/com/baeldung/spring/data/cosmosdb/config/AzureCosmosDbConfiguration.java
@@ -0,0 +1,37 @@
+package com.baeldung.spring.data.cosmosdb.config;
+
+import com.azure.data.cosmos.CosmosKeyCredential;
+import com.microsoft.azure.spring.data.cosmosdb.config.AbstractCosmosConfiguration;
+import com.microsoft.azure.spring.data.cosmosdb.config.CosmosDBConfig;
+import com.microsoft.azure.spring.data.cosmosdb.repository.config.EnableCosmosRepositories;
+
+import org.springframework.beans.factory.annotation.Value;
+import org.springframework.context.annotation.Bean;
+import org.springframework.context.annotation.Configuration;
+
+@Configuration
+@EnableCosmosRepositories(basePackages = "com.baeldung.spring.data.cosmosdb.repository")
+public class AzureCosmosDbConfiguration extends AbstractCosmosConfiguration {
+
+    @Value("${azure.cosmosdb.uri}")
+    private String uri;
+
+    @Value("${azure.cosmosdb.key}")
+    private String key;
+
+    @Value("${azure.cosmosdb.secondaryKey}")
+    private String secondaryKey;
+
+    @Value("${azure.cosmosdb.database}")
+    private String dbName;
+
+    private CosmosKeyCredential cosmosKeyCredential;
+
+    @Bean
+    public CosmosDBConfig getConfig() {
+        this.cosmosKeyCredential = new CosmosKeyCredential(key);
+        CosmosDBConfig cosmosdbConfig = CosmosDBConfig.builder(uri, this.cosmosKeyCredential, dbName)
+            .build();
+        return cosmosdbConfig;
+    }
+}

From 10349f5185f16f53487c88c10bf623a3a3698292 Mon Sep 17 00:00:00 2001
From: Philippe <phil@lighthouse.com.br>
Date: Fri, 14 Aug 2020 22:58:58 -0300
Subject: [PATCH 111/156] [BAEL-4381] Fix formatting

---
 .../article-resources/archunit/figure1.drawio   |   1 -
 .../article-resources/archunit/figure1.png      | Bin 15103 -> 0 bytes
 2 files changed, 1 deletion(-)
 delete mode 100644 libraries-testing/article-resources/archunit/figure1.drawio
 delete mode 100644 libraries-testing/article-resources/archunit/figure1.png

diff --git a/libraries-testing/article-resources/archunit/figure1.drawio b/libraries-testing/article-resources/archunit/figure1.drawio
deleted file mode 100644
index 859d9946a1..0000000000
--- a/libraries-testing/article-resources/archunit/figure1.drawio
+++ /dev/null
@@ -1 +0,0 @@
-<mxfile host="Electron" modified="2020-07-26T17:57:12.410Z" agent="5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) draw.io/13.5.1 Chrome/83.0.4103.122 Electron/9.1.1 Safari/537.36" etag="taZU8w0iOhZ7shLjO8K-" version="13.5.1" type="device"><diagram name="Page-1" id="b5b7bab2-c9e2-2cf4-8b2a-24fd1a2a6d21">7VjbctowEP0aP9LBNgb3sSa3BzJNJ+2kk5eMsBdbrax1ZUEgX1/Jlm84YWgbKL3wwFhHa3l99pyVwHKn6fpSkCy5xgiY5QyjteWeWY7jj331rYFNCXjOsARiQaMSshvglj6BAauwJY0g7wRKRCZp1gVD5BxC2cGIEPjYDVsg6z41IzH0gNuQsD56RyOZGNQev20mroDGiXm070zKiTkJv8YCl9w8jyOHciYl1TLmHfOERPjYgtxzy50KRFlepespMM1qxVh538ULs3XKArjc54YrsrkffLj+Bp8ePr+/GTw409XdwKyyImxpqEg3JMsYDYmkyE3mclMRpV4i05eaYRCWGyyQy1szb6txnpGQ8vgjZhoYKkSSecXpyIxrKu1RCdxgTovnuWcMFmomSGTKzJIrEFLlw94xGusIqdcOiBmZeJ3HBUkp0wqcLUMaEZX5FHmOOreAkTmwoK7WFBmK4pXcRfHRS1DGWvhF8VF4n+iKNZUYrFuQIf4SMAUpNiqkmvWMCIw/7EoUj43aJr7BkpbQRq4BiVF4XK/dlFpdmGr/QOUnvcpbzpikmlomi7dujyLIgEd5DcadEDPa0gpEymNmiEImGCMn7LxBg6IUoLPUwmhiZljKR4FfQMqNaRhkKbErjYjkSXG//ToSeLHUOS5FCDvodE3XIiIGuSPOK+M0NzuFI4ApB666/enVReD2RJCDWNEQTsL4bUMWjbXn+udbwyGFsL/nPX/L837f8874Gc/bB/P8+N/26GhPj7on5VH/KI16ponvFq7yWqiILiy/7baURlGpEcjpE5kX62mVZEi5LHjwAss7O1Tdd2m859P68Gjy7JzCnvPvYPhG7dOmX+9darPcjWagtf9POq1gYHvdFXCxyJUkt6VSJ/Xz6hn11JOpaikKT+d892e3eXuyR5v3jtrmvX7NQeQ0l8BPZGc/Vn0PeKTf3t5Hw9++vVe/pk/Z7P+d/UsV7v9eP6UD+19o64Oe2tWw+f+n3PGbv9fc8+8=</diagram></mxfile>
\ No newline at end of file
diff --git a/libraries-testing/article-resources/archunit/figure1.png b/libraries-testing/article-resources/archunit/figure1.png
deleted file mode 100644
index 8bd8e9647b07a46e7d8e363ba750fa838c07debb..0000000000000000000000000000000000000000
GIT binary patch
literal 0
HcmV?d00001

literal 15103
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
JmKeML@n88<TTB1|


From 223944628593984ee2c663e9dfb317de09b45ec8 Mon Sep 17 00:00:00 2001
From: Trixi Turny <writetotrixi@gmail.com>
Date: Sat, 15 Aug 2020 15:01:37 +0100
Subject: [PATCH 112/156] BAEL-4321 use properties module and delete ReadMe

---
 spring-boot-modules/spring-boot-data-2/README.md         | 9 ---------
 .../pom.xml                                              | 6 +++---
 .../com/baeldung/boot/properties}/DemoApplication.java   | 0
 .../boot/properties}/config/TshirtSizeConfig.java        | 0
 .../properties}/controller/TshirtSizeController.java     | 0
 .../boot/properties}/service/SizeConverterImpl.java      | 0
 .../boot/properties}/service/SizeConverterService.java   | 0
 .../src/main/resources/application.yml                   | 0
 .../properties}/controller/TshirtSizeControllerTest.java | 0
 9 files changed, 3 insertions(+), 12 deletions(-)
 delete mode 100644 spring-boot-modules/spring-boot-data-2/README.md
 rename spring-boot-modules/{spring-boot-data-2 => spring-boot-properties-3}/pom.xml (90%)
 rename spring-boot-modules/{spring-boot-data-2/src/main/java/com/baeldung/boot/data => spring-boot-properties-3/src/main/java/com/baeldung/boot/properties}/DemoApplication.java (100%)
 rename spring-boot-modules/{spring-boot-data-2/src/main/java/com/baeldung/boot/data => spring-boot-properties-3/src/main/java/com/baeldung/boot/properties}/config/TshirtSizeConfig.java (100%)
 rename spring-boot-modules/{spring-boot-data-2/src/main/java/com/baeldung/boot/data => spring-boot-properties-3/src/main/java/com/baeldung/boot/properties}/controller/TshirtSizeController.java (100%)
 rename spring-boot-modules/{spring-boot-data-2/src/main/java/com/baeldung/boot/data => spring-boot-properties-3/src/main/java/com/baeldung/boot/properties}/service/SizeConverterImpl.java (100%)
 rename spring-boot-modules/{spring-boot-data-2/src/main/java/com/baeldung/boot/data => spring-boot-properties-3/src/main/java/com/baeldung/boot/properties}/service/SizeConverterService.java (100%)
 rename spring-boot-modules/{spring-boot-data-2 => spring-boot-properties-3}/src/main/resources/application.yml (100%)
 rename spring-boot-modules/{spring-boot-data-2/src/test/java/com/baeldung/boot/data => spring-boot-properties-3/src/test/java/com/baeldung/boot/properties}/controller/TshirtSizeControllerTest.java (100%)

diff --git a/spring-boot-modules/spring-boot-data-2/README.md b/spring-boot-modules/spring-boot-data-2/README.md
deleted file mode 100644
index 9dba74a7e5..0000000000
--- a/spring-boot-modules/spring-boot-data-2/README.md
+++ /dev/null
@@ -1,9 +0,0 @@
-This is a demo application for using YAML configuration for defining values in a POJO class. 
-
-The application has an endpoint to provide T-shirt size conversion for label and countrycode.
-
-If you run this service locally you can call this endpoint on:
-
-`localhost:8080/convertSize?label=M&countryCode=fr`
-
-It should return the size as int. 
\ No newline at end of file
diff --git a/spring-boot-modules/spring-boot-data-2/pom.xml b/spring-boot-modules/spring-boot-properties-3/pom.xml
similarity index 90%
rename from spring-boot-modules/spring-boot-data-2/pom.xml
rename to spring-boot-modules/spring-boot-properties-3/pom.xml
index 0baaf292e8..1e3d627b19 100644
--- a/spring-boot-modules/spring-boot-data-2/pom.xml
+++ b/spring-boot-modules/spring-boot-properties-3/pom.xml
@@ -9,10 +9,10 @@
 		<relativePath>../</relativePath>
 	</parent>
 
-	<artifactId>spring-boot-data-2</artifactId>
+	<artifactId>spring-boot-properties-3</artifactId>
 	<version>0.0.1-SNAPSHOT</version>
-	<name>spring-boot-data-2</name>
-	<description>Spring Boot Data Module</description>
+	<name>spring-boot-properties-3</name>
+	<description>Spring Boot Properties Module</description>
 
 	<properties>
 		<java.version>1.8</java.version>
diff --git a/spring-boot-modules/spring-boot-data-2/src/main/java/com/baeldung/boot/data/DemoApplication.java b/spring-boot-modules/spring-boot-properties-3/src/main/java/com/baeldung/boot/properties/DemoApplication.java
similarity index 100%
rename from spring-boot-modules/spring-boot-data-2/src/main/java/com/baeldung/boot/data/DemoApplication.java
rename to spring-boot-modules/spring-boot-properties-3/src/main/java/com/baeldung/boot/properties/DemoApplication.java
diff --git a/spring-boot-modules/spring-boot-data-2/src/main/java/com/baeldung/boot/data/config/TshirtSizeConfig.java b/spring-boot-modules/spring-boot-properties-3/src/main/java/com/baeldung/boot/properties/config/TshirtSizeConfig.java
similarity index 100%
rename from spring-boot-modules/spring-boot-data-2/src/main/java/com/baeldung/boot/data/config/TshirtSizeConfig.java
rename to spring-boot-modules/spring-boot-properties-3/src/main/java/com/baeldung/boot/properties/config/TshirtSizeConfig.java
diff --git a/spring-boot-modules/spring-boot-data-2/src/main/java/com/baeldung/boot/data/controller/TshirtSizeController.java b/spring-boot-modules/spring-boot-properties-3/src/main/java/com/baeldung/boot/properties/controller/TshirtSizeController.java
similarity index 100%
rename from spring-boot-modules/spring-boot-data-2/src/main/java/com/baeldung/boot/data/controller/TshirtSizeController.java
rename to spring-boot-modules/spring-boot-properties-3/src/main/java/com/baeldung/boot/properties/controller/TshirtSizeController.java
diff --git a/spring-boot-modules/spring-boot-data-2/src/main/java/com/baeldung/boot/data/service/SizeConverterImpl.java b/spring-boot-modules/spring-boot-properties-3/src/main/java/com/baeldung/boot/properties/service/SizeConverterImpl.java
similarity index 100%
rename from spring-boot-modules/spring-boot-data-2/src/main/java/com/baeldung/boot/data/service/SizeConverterImpl.java
rename to spring-boot-modules/spring-boot-properties-3/src/main/java/com/baeldung/boot/properties/service/SizeConverterImpl.java
diff --git a/spring-boot-modules/spring-boot-data-2/src/main/java/com/baeldung/boot/data/service/SizeConverterService.java b/spring-boot-modules/spring-boot-properties-3/src/main/java/com/baeldung/boot/properties/service/SizeConverterService.java
similarity index 100%
rename from spring-boot-modules/spring-boot-data-2/src/main/java/com/baeldung/boot/data/service/SizeConverterService.java
rename to spring-boot-modules/spring-boot-properties-3/src/main/java/com/baeldung/boot/properties/service/SizeConverterService.java
diff --git a/spring-boot-modules/spring-boot-data-2/src/main/resources/application.yml b/spring-boot-modules/spring-boot-properties-3/src/main/resources/application.yml
similarity index 100%
rename from spring-boot-modules/spring-boot-data-2/src/main/resources/application.yml
rename to spring-boot-modules/spring-boot-properties-3/src/main/resources/application.yml
diff --git a/spring-boot-modules/spring-boot-data-2/src/test/java/com/baeldung/boot/data/controller/TshirtSizeControllerTest.java b/spring-boot-modules/spring-boot-properties-3/src/test/java/com/baeldung/boot/properties/controller/TshirtSizeControllerTest.java
similarity index 100%
rename from spring-boot-modules/spring-boot-data-2/src/test/java/com/baeldung/boot/data/controller/TshirtSizeControllerTest.java
rename to spring-boot-modules/spring-boot-properties-3/src/test/java/com/baeldung/boot/properties/controller/TshirtSizeControllerTest.java

From 3c44e7af209b2f93838d2503f673ff6d4330c5e7 Mon Sep 17 00:00:00 2001
From: Trixi Turny <writetotrixi@gmail.com>
Date: Sat, 15 Aug 2020 15:04:10 +0100
Subject: [PATCH 113/156] BAEL-4321 fix indentation

---
 .../boot/properties/controller/TshirtSizeController.java       | 3 +--
 1 file changed, 1 insertion(+), 2 deletions(-)

diff --git a/spring-boot-modules/spring-boot-properties-3/src/main/java/com/baeldung/boot/properties/controller/TshirtSizeController.java b/spring-boot-modules/spring-boot-properties-3/src/main/java/com/baeldung/boot/properties/controller/TshirtSizeController.java
index 6446a17317..82263eaeed 100644
--- a/spring-boot-modules/spring-boot-properties-3/src/main/java/com/baeldung/boot/properties/controller/TshirtSizeController.java
+++ b/spring-boot-modules/spring-boot-properties-3/src/main/java/com/baeldung/boot/properties/controller/TshirtSizeController.java
@@ -14,8 +14,7 @@ public class TshirtSizeController {
     }
 
     @RequestMapping(value ="convertSize", method = RequestMethod.GET)
-    public int convertSize(@RequestParam(value = "label") final String label,
-                                             @RequestParam(value = "countryCode", required = false) final String countryCode) {
+    public int convertSize(@RequestParam(value = "label") final String label, @RequestParam(value = "countryCode", required = false) final String countryCode) {
         return service.convertSize(label, countryCode);
     }
 

From e399a6a8bc9c79d96a27a62eb960e7e6c209620e Mon Sep 17 00:00:00 2001
From: Trixi Turny <writetotrixi@gmail.com>
Date: Sat, 15 Aug 2020 15:34:56 +0100
Subject: [PATCH 114/156] BAEL-4321 fix package name in imports and convert
 tabs to spaces

---
 .../baeldung/boot/properties/DemoApplication.java  |  8 ++++----
 .../boot/properties/config/TshirtSizeConfig.java   |  2 +-
 .../controller/TshirtSizeController.java           |  2 +-
 .../boot/properties/service/SizeConverterImpl.java |  2 +-
 .../properties/service/SizeConverterService.java   |  2 +-
 .../src/main/resources/application.yml             | 14 +++++++-------
 .../controller/TshirtSizeControllerTest.java       |  2 +-
 7 files changed, 16 insertions(+), 16 deletions(-)

diff --git a/spring-boot-modules/spring-boot-properties-3/src/main/java/com/baeldung/boot/properties/DemoApplication.java b/spring-boot-modules/spring-boot-properties-3/src/main/java/com/baeldung/boot/properties/DemoApplication.java
index 125cba6283..634cb211b2 100644
--- a/spring-boot-modules/spring-boot-properties-3/src/main/java/com/baeldung/boot/properties/DemoApplication.java
+++ b/spring-boot-modules/spring-boot-properties-3/src/main/java/com/baeldung/boot/properties/DemoApplication.java
@@ -1,4 +1,4 @@
-package com.baeldung.boot.data;
+package com.baeldung.boot.properties;
 
 import com.baeldung.boot.data.config.TshirtSizeConfig;
 import org.springframework.boot.SpringApplication;
@@ -9,8 +9,8 @@ import org.springframework.boot.context.properties.EnableConfigurationProperties
 @EnableConfigurationProperties(TshirtSizeConfig.class)
 public class DemoApplication {
 
-	public static void main(String[] args) {
-		SpringApplication.run(DemoApplication.class, args);
-	}
+    public static void main(String[] args) {
+        SpringApplication.run(DemoApplication.class, args);
+    }
 
 }
diff --git a/spring-boot-modules/spring-boot-properties-3/src/main/java/com/baeldung/boot/properties/config/TshirtSizeConfig.java b/spring-boot-modules/spring-boot-properties-3/src/main/java/com/baeldung/boot/properties/config/TshirtSizeConfig.java
index 000f5b6826..690763ab7b 100644
--- a/spring-boot-modules/spring-boot-properties-3/src/main/java/com/baeldung/boot/properties/config/TshirtSizeConfig.java
+++ b/spring-boot-modules/spring-boot-properties-3/src/main/java/com/baeldung/boot/properties/config/TshirtSizeConfig.java
@@ -1,4 +1,4 @@
-package com.baeldung.boot.data.config;
+package com.baeldung.boot.properties.config;
 
 import org.springframework.boot.context.properties.ConfigurationProperties;
 
diff --git a/spring-boot-modules/spring-boot-properties-3/src/main/java/com/baeldung/boot/properties/controller/TshirtSizeController.java b/spring-boot-modules/spring-boot-properties-3/src/main/java/com/baeldung/boot/properties/controller/TshirtSizeController.java
index 82263eaeed..2f5c523c2e 100644
--- a/spring-boot-modules/spring-boot-properties-3/src/main/java/com/baeldung/boot/properties/controller/TshirtSizeController.java
+++ b/spring-boot-modules/spring-boot-properties-3/src/main/java/com/baeldung/boot/properties/controller/TshirtSizeController.java
@@ -1,4 +1,4 @@
-package com.baeldung.boot.data.controller;
+package com.baeldung.boot.properties.controller;
 
 import org.springframework.web.bind.annotation.*;
 import com.baeldung.boot.data.service.SizeConverterService;
diff --git a/spring-boot-modules/spring-boot-properties-3/src/main/java/com/baeldung/boot/properties/service/SizeConverterImpl.java b/spring-boot-modules/spring-boot-properties-3/src/main/java/com/baeldung/boot/properties/service/SizeConverterImpl.java
index ccb5a06da4..8554783493 100644
--- a/spring-boot-modules/spring-boot-properties-3/src/main/java/com/baeldung/boot/properties/service/SizeConverterImpl.java
+++ b/spring-boot-modules/spring-boot-properties-3/src/main/java/com/baeldung/boot/properties/service/SizeConverterImpl.java
@@ -1,4 +1,4 @@
-package com.baeldung.boot.data.service;
+package com.baeldung.boot.properties.service;
 
 import org.springframework.stereotype.Service;
 import com.baeldung.boot.data.config.TshirtSizeConfig;
diff --git a/spring-boot-modules/spring-boot-properties-3/src/main/java/com/baeldung/boot/properties/service/SizeConverterService.java b/spring-boot-modules/spring-boot-properties-3/src/main/java/com/baeldung/boot/properties/service/SizeConverterService.java
index 91cf2bf0b4..412199b176 100644
--- a/spring-boot-modules/spring-boot-properties-3/src/main/java/com/baeldung/boot/properties/service/SizeConverterService.java
+++ b/spring-boot-modules/spring-boot-properties-3/src/main/java/com/baeldung/boot/properties/service/SizeConverterService.java
@@ -1,4 +1,4 @@
-package com.baeldung.boot.data.service;
+package com.baeldung.boot.properties.service;
 
 
 public interface SizeConverterService {
diff --git a/spring-boot-modules/spring-boot-properties-3/src/main/resources/application.yml b/spring-boot-modules/spring-boot-properties-3/src/main/resources/application.yml
index edd200389e..8779cb6b0c 100644
--- a/spring-boot-modules/spring-boot-properties-3/src/main/resources/application.yml
+++ b/spring-boot-modules/spring-boot-properties-3/src/main/resources/application.yml
@@ -1,10 +1,10 @@
-t-shirt-size:
-  simple-mapping:
-    XS: 6
-    S:  8
-    M:  10
-    L:  12
-    XL: 14
+  t-shirt-size:
+    simple-mapping:
+      XS: 6
+      S:  8
+      M:  10
+      L:  12
+      XL: 14
 
 
   complex-mapping:
diff --git a/spring-boot-modules/spring-boot-properties-3/src/test/java/com/baeldung/boot/properties/controller/TshirtSizeControllerTest.java b/spring-boot-modules/spring-boot-properties-3/src/test/java/com/baeldung/boot/properties/controller/TshirtSizeControllerTest.java
index 1d60eb41c0..96584d6077 100644
--- a/spring-boot-modules/spring-boot-properties-3/src/test/java/com/baeldung/boot/properties/controller/TshirtSizeControllerTest.java
+++ b/spring-boot-modules/spring-boot-properties-3/src/test/java/com/baeldung/boot/properties/controller/TshirtSizeControllerTest.java
@@ -1,4 +1,4 @@
-package com.baeldung.boot.data.controller;
+package com.baeldung.boot.properties.controller;
 
 import org.junit.jupiter.api.Test;
 import org.junit.jupiter.api.extension.ExtendWith;

From 130133d73bf1a2ba4ca4c25394bb92755602240d Mon Sep 17 00:00:00 2001
From: Trixi Turny <writetotrixi@gmail.com>
Date: Sat, 15 Aug 2020 15:39:01 +0100
Subject: [PATCH 115/156] BAEL-4321 fix leftover data package names

---
 .../main/java/com/baeldung/boot/properties/DemoApplication.java | 2 +-
 .../boot/properties/controller/TshirtSizeController.java        | 2 +-
 .../com/baeldung/boot/properties/service/SizeConverterImpl.java | 2 +-
 .../boot/properties/controller/TshirtSizeControllerTest.java    | 2 +-
 4 files changed, 4 insertions(+), 4 deletions(-)

diff --git a/spring-boot-modules/spring-boot-properties-3/src/main/java/com/baeldung/boot/properties/DemoApplication.java b/spring-boot-modules/spring-boot-properties-3/src/main/java/com/baeldung/boot/properties/DemoApplication.java
index 634cb211b2..cf2fb7f981 100644
--- a/spring-boot-modules/spring-boot-properties-3/src/main/java/com/baeldung/boot/properties/DemoApplication.java
+++ b/spring-boot-modules/spring-boot-properties-3/src/main/java/com/baeldung/boot/properties/DemoApplication.java
@@ -1,6 +1,6 @@
 package com.baeldung.boot.properties;
 
-import com.baeldung.boot.data.config.TshirtSizeConfig;
+import com.baeldung.boot.properties.config.TshirtSizeConfig;
 import org.springframework.boot.SpringApplication;
 import org.springframework.boot.autoconfigure.SpringBootApplication;
 import org.springframework.boot.context.properties.EnableConfigurationProperties;
diff --git a/spring-boot-modules/spring-boot-properties-3/src/main/java/com/baeldung/boot/properties/controller/TshirtSizeController.java b/spring-boot-modules/spring-boot-properties-3/src/main/java/com/baeldung/boot/properties/controller/TshirtSizeController.java
index 2f5c523c2e..6b713c5be8 100644
--- a/spring-boot-modules/spring-boot-properties-3/src/main/java/com/baeldung/boot/properties/controller/TshirtSizeController.java
+++ b/spring-boot-modules/spring-boot-properties-3/src/main/java/com/baeldung/boot/properties/controller/TshirtSizeController.java
@@ -1,7 +1,7 @@
 package com.baeldung.boot.properties.controller;
 
 import org.springframework.web.bind.annotation.*;
-import com.baeldung.boot.data.service.SizeConverterService;
+import com.baeldung.boot.properties.service.SizeConverterService;
 
 @RestController
 @RequestMapping(value = "/")
diff --git a/spring-boot-modules/spring-boot-properties-3/src/main/java/com/baeldung/boot/properties/service/SizeConverterImpl.java b/spring-boot-modules/spring-boot-properties-3/src/main/java/com/baeldung/boot/properties/service/SizeConverterImpl.java
index 8554783493..34f7fe2ded 100644
--- a/spring-boot-modules/spring-boot-properties-3/src/main/java/com/baeldung/boot/properties/service/SizeConverterImpl.java
+++ b/spring-boot-modules/spring-boot-properties-3/src/main/java/com/baeldung/boot/properties/service/SizeConverterImpl.java
@@ -1,7 +1,7 @@
 package com.baeldung.boot.properties.service;
 
 import org.springframework.stereotype.Service;
-import com.baeldung.boot.data.config.TshirtSizeConfig;
+import com.baeldung.boot.properties.config.TshirtSizeConfig;
 
 
 @Service
diff --git a/spring-boot-modules/spring-boot-properties-3/src/test/java/com/baeldung/boot/properties/controller/TshirtSizeControllerTest.java b/spring-boot-modules/spring-boot-properties-3/src/test/java/com/baeldung/boot/properties/controller/TshirtSizeControllerTest.java
index 96584d6077..0b70ed8622 100644
--- a/spring-boot-modules/spring-boot-properties-3/src/test/java/com/baeldung/boot/properties/controller/TshirtSizeControllerTest.java
+++ b/spring-boot-modules/spring-boot-properties-3/src/test/java/com/baeldung/boot/properties/controller/TshirtSizeControllerTest.java
@@ -5,7 +5,7 @@ import org.junit.jupiter.api.extension.ExtendWith;
 import org.mockito.InjectMocks;
 import org.mockito.Mock;
 import org.mockito.junit.jupiter.MockitoExtension;
-import com.baeldung.boot.data.service.SizeConverterService;
+import com.baeldung.boot.properties.service.SizeConverterService;
 
 import static org.junit.jupiter.api.Assertions.*;
 import static org.mockito.Mockito.when;

From ab056706ac911db736de01b41aa257d2220f6881 Mon Sep 17 00:00:00 2001
From: mikr <michael.krimgen@ximedes.com>
Date: Sat, 15 Aug 2020 20:02:21 +0200
Subject: [PATCH 116/156] Java-70 Remove unnecessary files from spring-jpa-2 +
 include in main persistence pom file

---
 persistence-modules/pom.xml                   |  1 +
 persistence-modules/spring-jpa-2/README.md    | 18 +---
 persistence-modules/spring-jpa-2/pom.xml      | 94 +------------------
 .../baeldung/config/PersistenceJPAConfig.java | 85 -----------------
 .../config/PersistenceJPAConfigXml.java       | 17 ----
 .../com/baeldung/config/SpringWebConfig.java  | 24 -----
 .../com/baeldung/config/StudentJpaConfig.java | 67 -------------
 .../com/baeldung/config/WebInitializer.java   | 20 ----
 .../src/main/resources/context.xml            |  1 -
 .../src/main/resources/logback.xml            | 19 ----
 .../main/resources/persistence-h2.properties  | 10 --
 .../resources/persistence-student.properties  | 11 ---
 .../src/main/resources/persistence.xml        | 42 ---------
 .../src/main/resources/server.xml             |  6 --
 .../src/main/resources/sqlfiles.properties    |  1 -
 .../src/test/java/META-INF/persistence.xml    | 20 ----
 .../java/com/baeldung/SpringContextTest.java  | 21 -----
 .../resources/persistence-student.properties  |  9 --
 persistence-modules/spring-jpa/README.md      |  5 +-
 19 files changed, 6 insertions(+), 465 deletions(-)
 delete mode 100644 persistence-modules/spring-jpa-2/src/main/java/com/baeldung/config/PersistenceJPAConfig.java
 delete mode 100644 persistence-modules/spring-jpa-2/src/main/java/com/baeldung/config/PersistenceJPAConfigXml.java
 delete mode 100644 persistence-modules/spring-jpa-2/src/main/java/com/baeldung/config/SpringWebConfig.java
 delete mode 100644 persistence-modules/spring-jpa-2/src/main/java/com/baeldung/config/StudentJpaConfig.java
 delete mode 100644 persistence-modules/spring-jpa-2/src/main/java/com/baeldung/config/WebInitializer.java
 delete mode 100644 persistence-modules/spring-jpa-2/src/main/resources/context.xml
 delete mode 100644 persistence-modules/spring-jpa-2/src/main/resources/logback.xml
 delete mode 100644 persistence-modules/spring-jpa-2/src/main/resources/persistence-h2.properties
 delete mode 100644 persistence-modules/spring-jpa-2/src/main/resources/persistence-student.properties
 delete mode 100644 persistence-modules/spring-jpa-2/src/main/resources/persistence.xml
 delete mode 100644 persistence-modules/spring-jpa-2/src/main/resources/server.xml
 delete mode 100644 persistence-modules/spring-jpa-2/src/main/resources/sqlfiles.properties
 delete mode 100644 persistence-modules/spring-jpa-2/src/test/java/META-INF/persistence.xml
 delete mode 100644 persistence-modules/spring-jpa-2/src/test/java/com/baeldung/SpringContextTest.java
 delete mode 100644 persistence-modules/spring-jpa-2/src/test/resources/persistence-student.properties

diff --git a/persistence-modules/pom.xml b/persistence-modules/pom.xml
index 78f1afd39a..6186900a6e 100644
--- a/persistence-modules/pom.xml
+++ b/persistence-modules/pom.xml
@@ -78,6 +78,7 @@
         <module>spring-hibernate-5</module> <!-- long running -->
         <module>spring-hibernate4</module>
         <module>spring-jpa</module>
+        <module>spring-jpa-2</module>
         <!-- <module>spring-mybatis</module> --> <!-- needs fixing in BAEL-9021 -->
         <module>spring-persistence-simple</module>
         <module>spring-persistence-simple-2</module>
diff --git a/persistence-modules/spring-jpa-2/README.md b/persistence-modules/spring-jpa-2/README.md
index 71b368b44a..b1786f49bd 100644
--- a/persistence-modules/spring-jpa-2/README.md
+++ b/persistence-modules/spring-jpa-2/README.md
@@ -1,19 +1,5 @@
-=========
-
-## Spring JPA Example Project
-
+## Spring JPA (2)
 
 ### Relevant Articles: 
 - [Many-To-Many Relationship in JPA](https://www.baeldung.com/jpa-many-to-many)
-- More articles: [[<-- prev]](/spring-jpa)
-
-
-### Eclipse Config 
-After importing the project into Eclipse, you may see the following error:  
-"No persistence xml file found in project"
-
-This can be ignored: 
-- Project -> Properties -> Java Persistance -> JPA -> Error/Warnings -> Select Ignore on "No persistence xml file found in project"
-Or: 
-- Eclipse -> Preferences - Validation - disable the "Build" execution of the JPA Validator 
-
+- More articles: [[<-- prev]](/spring-jpa)
\ No newline at end of file
diff --git a/persistence-modules/spring-jpa-2/pom.xml b/persistence-modules/spring-jpa-2/pom.xml
index 410ed592b0..08a1f0c6a3 100644
--- a/persistence-modules/spring-jpa-2/pom.xml
+++ b/persistence-modules/spring-jpa-2/pom.xml
@@ -2,9 +2,9 @@
 <project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
          xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
     <modelVersion>4.0.0</modelVersion>
-    <artifactId>spring-jpa</artifactId>
+    <artifactId>spring-jpa-2</artifactId>
     <version>0.1-SNAPSHOT</version>
-    <name>spring-jpa</name>
+    <name>spring-jpa-2</name>
     <packaging>war</packaging>
 
     <parent>
@@ -31,94 +31,20 @@
             <artifactId>spring-context</artifactId>
             <version>${org.springframework.version}</version>
         </dependency>
-        <dependency>
-            <groupId>org.springframework</groupId>
-            <artifactId>spring-webmvc</artifactId>
-            <version>${org.springframework.version}</version>
-        </dependency>
 
         <!-- persistence -->
-
         <dependency>
             <groupId>org.hibernate</groupId>
             <artifactId>hibernate-entitymanager</artifactId>
             <version>${hibernate.version}</version>
         </dependency>
-        <dependency>
-            <groupId>xml-apis</groupId>
-            <artifactId>xml-apis</artifactId>
-            <version>${xml-apis.version}</version>
-        </dependency>
-        <dependency>
-            <groupId>org.javassist</groupId>
-            <artifactId>javassist</artifactId>
-            <version>${javassist.version}</version>
-        </dependency>
-        <dependency>
-            <groupId>mysql</groupId>
-            <artifactId>mysql-connector-java</artifactId>
-            <version>${mysql-connector-java.version}</version>
-            <scope>runtime</scope>
-        </dependency>
-        <dependency>
-            <groupId>org.springframework.data</groupId>
-            <artifactId>spring-data-jpa</artifactId>
-            <version>${spring-data-jpa.version}</version>
-        </dependency>
         <dependency>
             <groupId>com.h2database</groupId>
             <artifactId>h2</artifactId>
             <version>${h2.version}</version>
         </dependency>
 
-        <!-- validation -->
-
-        <dependency>
-            <groupId>org.hibernate</groupId>
-            <artifactId>hibernate-validator</artifactId>
-            <version>${hibernate-validator.version}</version>
-        </dependency>
-        <dependency>
-            <groupId>javax.el</groupId>
-            <artifactId>javax.el-api</artifactId>
-            <version>${javax.el-api.version}</version>
-        </dependency>
-
-        <!-- web -->
-        <dependency>
-            <groupId>javax.servlet</groupId>
-            <artifactId>jstl</artifactId>
-            <version>${jstl.version}</version>
-        </dependency>
-        <dependency>
-            <groupId>javax.servlet</groupId>
-            <artifactId>servlet-api</artifactId>
-            <scope>provided</scope>
-            <version>${javax.servlet.servlet-api.version}</version>
-        </dependency>
-
-        <!-- utils -->
-
-        <dependency>
-            <groupId>com.google.guava</groupId>
-            <artifactId>guava</artifactId>
-            <version>${guava.version}</version>
-        </dependency>
-        <dependency>
-            <groupId>org.assertj</groupId>
-            <artifactId>assertj-core</artifactId>
-            <version>${assertj.version}</version>
-        </dependency>
-
         <!-- test scoped -->
-
-        <dependency>
-            <groupId>org.apache.commons</groupId>
-            <artifactId>commons-lang3</artifactId>
-            <version>${commons-lang3.version}</version>
-            <scope>test</scope>
-        </dependency>
-
         <dependency>
             <groupId>org.springframework</groupId>
             <artifactId>spring-test</artifactId>
@@ -131,22 +57,6 @@
     <properties>
         <!-- Spring -->
         <org.springframework.version>5.1.5.RELEASE</org.springframework.version>
-        <javassist.version>3.21.0-GA</javassist.version>
-
-        <mysql-connector-java.version>6.0.6</mysql-connector-java.version>
-        <spring-data-jpa.version>2.1.5.RELEASE</spring-data-jpa.version>
-
-        <!-- web -->
-        <javax.servlet.servlet-api.version>2.5</javax.servlet.servlet-api.version>
-
-        <!-- various -->
-        <hibernate-validator.version>6.0.15.Final</hibernate-validator.version>
-        <xml-apis.version>1.4.01</xml-apis.version>
-        <javax.el-api.version>2.2.5</javax.el-api.version>
-
-        <!-- util -->
-        <guava.version>21.0</guava.version>
-        <assertj.version>3.8.0</assertj.version>
     </properties>
 
 </project>
\ No newline at end of file
diff --git a/persistence-modules/spring-jpa-2/src/main/java/com/baeldung/config/PersistenceJPAConfig.java b/persistence-modules/spring-jpa-2/src/main/java/com/baeldung/config/PersistenceJPAConfig.java
deleted file mode 100644
index c489321122..0000000000
--- a/persistence-modules/spring-jpa-2/src/main/java/com/baeldung/config/PersistenceJPAConfig.java
+++ /dev/null
@@ -1,85 +0,0 @@
-package com.baeldung.config;
-
-import com.google.common.base.Preconditions;
-import org.springframework.beans.factory.annotation.Autowired;
-import org.springframework.context.annotation.Bean;
-import org.springframework.context.annotation.ComponentScan;
-import org.springframework.context.annotation.Configuration;
-import org.springframework.context.annotation.PropertySource;
-import org.springframework.core.env.Environment;
-import org.springframework.dao.annotation.PersistenceExceptionTranslationPostProcessor;
-import org.springframework.data.jpa.repository.config.EnableJpaRepositories;
-import org.springframework.jdbc.datasource.DriverManagerDataSource;
-import org.springframework.orm.jpa.JpaTransactionManager;
-import org.springframework.orm.jpa.LocalContainerEntityManagerFactoryBean;
-import org.springframework.orm.jpa.vendor.HibernateJpaVendorAdapter;
-import org.springframework.transaction.PlatformTransactionManager;
-import org.springframework.transaction.annotation.EnableTransactionManagement;
-
-import javax.persistence.EntityManagerFactory;
-import javax.sql.DataSource;
-import java.util.Properties;
-
-@Configuration
-@EnableTransactionManagement
-@PropertySource({ "classpath:persistence-h2.properties" })
-@ComponentScan({ "com.baeldung.persistence" })
-@EnableJpaRepositories(basePackages = "com.baeldung.persistence.dao")
-public class PersistenceJPAConfig {
-
-    @Autowired
-    private Environment env;
-
-    public PersistenceJPAConfig() {
-        super();
-    }
-
-    // beans
-
-    @Bean
-    public LocalContainerEntityManagerFactoryBean entityManagerFactory() {
-        final LocalContainerEntityManagerFactoryBean em = new LocalContainerEntityManagerFactoryBean();
-        em.setDataSource(dataSource());
-        em.setPackagesToScan(new String[] { "com.baeldung.persistence.model" });
-
-        final HibernateJpaVendorAdapter vendorAdapter = new HibernateJpaVendorAdapter();
-        em.setJpaVendorAdapter(vendorAdapter);
-        em.setJpaProperties(additionalProperties());
-
-        return em;
-    }
-
-    @Bean
-    public DataSource dataSource() {
-        final DriverManagerDataSource dataSource = new DriverManagerDataSource();
-        dataSource.setDriverClassName(Preconditions.checkNotNull(env.getProperty("jdbc.driverClassName")));
-        dataSource.setUrl(Preconditions.checkNotNull(env.getProperty("jdbc.url")));
-        dataSource.setUsername(Preconditions.checkNotNull(env.getProperty("jdbc.user")));
-        dataSource.setPassword(Preconditions.checkNotNull(env.getProperty("jdbc.pass")));
-
-        return dataSource;
-    }
-
-    @Bean
-    public PlatformTransactionManager transactionManager(final EntityManagerFactory emf) {
-        final JpaTransactionManager transactionManager = new JpaTransactionManager();
-        transactionManager.setEntityManagerFactory(emf);
-        return transactionManager;
-    }
-
-    @Bean
-    public PersistenceExceptionTranslationPostProcessor exceptionTranslation() {
-        return new PersistenceExceptionTranslationPostProcessor();
-    }
-
-    final Properties additionalProperties() {
-        final Properties hibernateProperties = new Properties();
-        hibernateProperties.setProperty("hibernate.hbm2ddl.auto", env.getProperty("hibernate.hbm2ddl.auto"));
-        hibernateProperties.setProperty("hibernate.dialect", env.getProperty("hibernate.dialect"));
-        hibernateProperties.setProperty("hibernate.cache.use_second_level_cache", "false");
-        
-    
-        return hibernateProperties;
-    }
-
-}
\ No newline at end of file
diff --git a/persistence-modules/spring-jpa-2/src/main/java/com/baeldung/config/PersistenceJPAConfigXml.java b/persistence-modules/spring-jpa-2/src/main/java/com/baeldung/config/PersistenceJPAConfigXml.java
deleted file mode 100644
index 95224a4662..0000000000
--- a/persistence-modules/spring-jpa-2/src/main/java/com/baeldung/config/PersistenceJPAConfigXml.java
+++ /dev/null
@@ -1,17 +0,0 @@
-package com.baeldung.config;
-
-import org.springframework.context.annotation.ComponentScan;
-import org.springframework.context.annotation.ImportResource;
-import org.springframework.transaction.annotation.EnableTransactionManagement;
-
-// @Configuration
-@EnableTransactionManagement
-@ComponentScan({ "com.baeldung.persistence" })
-@ImportResource({ "classpath:jpaConfig.xml" })
-public class PersistenceJPAConfigXml {
-
-    public PersistenceJPAConfigXml() {
-        super();
-    }
-
-}
\ No newline at end of file
diff --git a/persistence-modules/spring-jpa-2/src/main/java/com/baeldung/config/SpringWebConfig.java b/persistence-modules/spring-jpa-2/src/main/java/com/baeldung/config/SpringWebConfig.java
deleted file mode 100644
index 475970d1f0..0000000000
--- a/persistence-modules/spring-jpa-2/src/main/java/com/baeldung/config/SpringWebConfig.java
+++ /dev/null
@@ -1,24 +0,0 @@
-package com.baeldung.config;
-
-import org.springframework.context.annotation.Bean;
-import org.springframework.context.annotation.ComponentScan;
-import org.springframework.context.annotation.Configuration;
-import org.springframework.web.servlet.config.annotation.EnableWebMvc;
-import org.springframework.web.servlet.config.annotation.WebMvcConfigurerAdapter;
-import org.springframework.web.servlet.view.InternalResourceViewResolver;
-import org.springframework.web.servlet.view.JstlView;
-
-@EnableWebMvc
-@Configuration
-@ComponentScan({ "com.baeldung.web" })
-public class SpringWebConfig extends WebMvcConfigurerAdapter {
-
-    @Bean
-    public InternalResourceViewResolver viewResolver() {
-        InternalResourceViewResolver viewResolver = new InternalResourceViewResolver();
-        viewResolver.setViewClass(JstlView.class);
-        viewResolver.setPrefix("/WEB-INF/views/jsp/");
-        viewResolver.setSuffix(".jsp");
-        return viewResolver;
-    }
-}
diff --git a/persistence-modules/spring-jpa-2/src/main/java/com/baeldung/config/StudentJpaConfig.java b/persistence-modules/spring-jpa-2/src/main/java/com/baeldung/config/StudentJpaConfig.java
deleted file mode 100644
index 54ced72dd1..0000000000
--- a/persistence-modules/spring-jpa-2/src/main/java/com/baeldung/config/StudentJpaConfig.java
+++ /dev/null
@@ -1,67 +0,0 @@
-package com.baeldung.config;
-
-import org.springframework.beans.factory.annotation.Autowired;
-import org.springframework.context.annotation.Bean;
-import org.springframework.context.annotation.Configuration;
-import org.springframework.context.annotation.PropertySource;
-import org.springframework.core.env.Environment;
-import org.springframework.data.jpa.repository.config.EnableJpaRepositories;
-import org.springframework.jdbc.datasource.DriverManagerDataSource;
-import org.springframework.orm.jpa.JpaTransactionManager;
-import org.springframework.orm.jpa.LocalContainerEntityManagerFactoryBean;
-import org.springframework.orm.jpa.vendor.HibernateJpaVendorAdapter;
-import org.springframework.transaction.annotation.EnableTransactionManagement;
-
-import javax.persistence.EntityManagerFactory;
-import javax.sql.DataSource;
-import java.util.Properties;
-
-@Configuration
-@EnableJpaRepositories(basePackages = "com.baeldung.inmemory.persistence.dao")
-@PropertySource("persistence-student.properties")
-@EnableTransactionManagement
-public class StudentJpaConfig {
-
-    @Autowired
-    private Environment env;
-
-    @Bean
-    public DataSource dataSource() {
-        final DriverManagerDataSource dataSource = new DriverManagerDataSource();
-        dataSource.setDriverClassName(env.getProperty("jdbc.driverClassName"));
-        dataSource.setUrl(env.getProperty("jdbc.url"));
-        dataSource.setUsername(env.getProperty("jdbc.user"));
-        dataSource.setPassword(env.getProperty("jdbc.pass"));
-
-        return dataSource;
-    }
-
-    @Bean
-    public LocalContainerEntityManagerFactoryBean entityManagerFactory() {
-        final LocalContainerEntityManagerFactoryBean em = new LocalContainerEntityManagerFactoryBean();
-        em.setDataSource(dataSource());
-        em.setPackagesToScan(new String[] { "com.baeldung.inmemory.persistence.model" });
-        em.setJpaVendorAdapter(new HibernateJpaVendorAdapter());
-        em.setJpaProperties(additionalProperties());
-        return em;
-    }
-
-    @Bean
-    JpaTransactionManager transactionManager(EntityManagerFactory entityManagerFactory) {
-        JpaTransactionManager transactionManager = new JpaTransactionManager();
-        transactionManager.setEntityManagerFactory(entityManagerFactory);
-        return transactionManager;
-    }
-
-    final Properties additionalProperties() {
-        final Properties hibernateProperties = new Properties();
-
-        hibernateProperties.setProperty("hibernate.hbm2ddl.auto", env.getProperty("hibernate.hbm2ddl.auto"));
-        hibernateProperties.setProperty("hibernate.dialect", env.getProperty("hibernate.dialect"));
-        hibernateProperties.setProperty("hibernate.show_sql", env.getProperty("hibernate.show_sql"));
-        hibernateProperties.setProperty("hibernate.cache.use_second_level_cache", env.getProperty("hibernate.cache.use_second_level_cache"));
-        hibernateProperties.setProperty("hibernate.cache.use_query_cache", env.getProperty("hibernate.cache.use_query_cache"));
-
-        return hibernateProperties;
-    }
-}
diff --git a/persistence-modules/spring-jpa-2/src/main/java/com/baeldung/config/WebInitializer.java b/persistence-modules/spring-jpa-2/src/main/java/com/baeldung/config/WebInitializer.java
deleted file mode 100644
index be81cca76b..0000000000
--- a/persistence-modules/spring-jpa-2/src/main/java/com/baeldung/config/WebInitializer.java
+++ /dev/null
@@ -1,20 +0,0 @@
-package com.baeldung.config;
-
-import org.springframework.web.servlet.support.AbstractAnnotationConfigDispatcherServletInitializer;
-
-public class WebInitializer extends AbstractAnnotationConfigDispatcherServletInitializer {
-    @Override
-    protected Class<?>[] getRootConfigClasses() {
-        return new Class[] { PersistenceJPAConfig.class };
-    }
-
-    @Override
-    protected Class<?>[] getServletConfigClasses() {
-        return new Class[] { SpringWebConfig.class };
-    }
-
-    @Override
-    protected String[] getServletMappings() {
-        return new String[] { "/" };
-    }
-}
diff --git a/persistence-modules/spring-jpa-2/src/main/resources/context.xml b/persistence-modules/spring-jpa-2/src/main/resources/context.xml
deleted file mode 100644
index a64dfe9a61..0000000000
--- a/persistence-modules/spring-jpa-2/src/main/resources/context.xml
+++ /dev/null
@@ -1 +0,0 @@
- <ResourceLink name="jdbc/BaeldungDatabase" global="jdbc/BaeldungDatabase" type="javax.sql.DataSource"/>
\ No newline at end of file
diff --git a/persistence-modules/spring-jpa-2/src/main/resources/logback.xml b/persistence-modules/spring-jpa-2/src/main/resources/logback.xml
deleted file mode 100644
index ec0dc2469a..0000000000
--- a/persistence-modules/spring-jpa-2/src/main/resources/logback.xml
+++ /dev/null
@@ -1,19 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<configuration>
-    <appender name="STDOUT" class="ch.qos.logback.core.ConsoleAppender">
-        <encoder>
-            <pattern>web - %date [%thread] %-5level %logger{36} - %message%n
-            </pattern>
-        </encoder>
-    </appender>
-
-    <logger name="org.springframework" level="WARN" />
-    <logger name="org.springframework.transaction" level="WARN" />
-
-    <!-- in order to debug some marshalling issues, this needs to be TRACE -->
-    <logger name="org.springframework.web.servlet.mvc" level="WARN" />
-
-    <root level="INFO">
-        <appender-ref ref="STDOUT" />
-    </root>
-</configuration>
\ No newline at end of file
diff --git a/persistence-modules/spring-jpa-2/src/main/resources/persistence-h2.properties b/persistence-modules/spring-jpa-2/src/main/resources/persistence-h2.properties
deleted file mode 100644
index a3060cc796..0000000000
--- a/persistence-modules/spring-jpa-2/src/main/resources/persistence-h2.properties
+++ /dev/null
@@ -1,10 +0,0 @@
-# jdbc.X
-jdbc.driverClassName=org.h2.Driver
-jdbc.url=jdbc:h2:mem:db;DB_CLOSE_DELAY=-1
-jdbc.user=sa
-jdbc.pass=
-
-# hibernate.X
-hibernate.dialect=org.hibernate.dialect.H2Dialect
-hibernate.show_sql=true
-hibernate.hbm2ddl.auto=create-drop
\ No newline at end of file
diff --git a/persistence-modules/spring-jpa-2/src/main/resources/persistence-student.properties b/persistence-modules/spring-jpa-2/src/main/resources/persistence-student.properties
deleted file mode 100644
index d4c82420de..0000000000
--- a/persistence-modules/spring-jpa-2/src/main/resources/persistence-student.properties
+++ /dev/null
@@ -1,11 +0,0 @@
-jdbc.driverClassName=com.mysql.cj.jdbc.Driver
-jdbc.url=jdbc:mysql://localhost:3306/myDb
-jdbc.user=tutorialuser
-jdbc.pass=tutorialpass
-
-hibernate.dialect=org.hibernate.dialect.MySQL5Dialect
-hibernate.show_sql=true
-hibernate.hbm2ddl.auto=create-drop
-
-hibernate.cache.use_second_level_cache=false
-hibernate.cache.use_query_cache=false
\ No newline at end of file
diff --git a/persistence-modules/spring-jpa-2/src/main/resources/persistence.xml b/persistence-modules/spring-jpa-2/src/main/resources/persistence.xml
deleted file mode 100644
index 57687c306d..0000000000
--- a/persistence-modules/spring-jpa-2/src/main/resources/persistence.xml
+++ /dev/null
@@ -1,42 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<beans xmlns="http://www.springframework.org/schema/beans" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:context="http://www.springframework.org/schema/context"
-    xmlns:tx="http://www.springframework.org/schema/tx"
-    xsi:schemaLocation="
-      http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-4.2.xsd
-      http://www.springframework.org/schema/tx http://www.springframework.org/schema/tx/spring-tx-4.2.xsd
-      http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context-4.2.xsd"
->
-
-    <context:property-placeholder location="classpath:persistence-h2.properties"/>
-
-    <bean id="myEmf" class="org.springframework.orm.jpa.LocalContainerEntityManagerFactoryBean">
-        <property name="dataSource" ref="dataSource"/>
-        <property name="packagesToScan" value="com.baeldung.persistence.model"/>
-        <property name="jpaVendorAdapter">
-            <bean class="org.springframework.orm.jpa.vendor.HibernateJpaVendorAdapter"/>
-            <!-- <bean class="org.springframework.orm.jpa.vendor.HibernateJpaVendorAdapter" /> <property name="generateDdl" value="${jpa.generateDdl}" /> <property name="databasePlatform" 
-                value="${persistence.dialect}" /> </bean> -->
-        </property>
-        <property name="jpaProperties">
-            <props>
-                <prop key="hibernate.hbm2ddl.auto">${hibernate.hbm2ddl.auto}</prop>
-                <prop key="hibernate.dialect">${hibernate.dialect}</prop>
-            </props>
-        </property>
-    </bean>
-
-    <bean id="dataSource" class="org.springframework.jdbc.datasource.DriverManagerDataSource">
-        <property name="driverClassName" value="${jdbc.driverClassName}"/>
-        <property name="url" value="${jdbc.url}"/>
-        <property name="username" value="${jdbc.user}"/>
-        <property name="password" value="${jdbc.pass}"/>
-    </bean>
-
-    <bean id="transactionManager" class="org.springframework.orm.jpa.JpaTransactionManager">
-        <property name="entityManagerFactory" ref="myEmf"/>
-    </bean>
-    <tx:annotation-driven/>
-
-    <bean id="persistenceExceptionTranslationPostProcessor" class="org.springframework.dao.annotation.PersistenceExceptionTranslationPostProcessor"/>
-
-</beans>
\ No newline at end of file
diff --git a/persistence-modules/spring-jpa-2/src/main/resources/server.xml b/persistence-modules/spring-jpa-2/src/main/resources/server.xml
deleted file mode 100644
index 5c61659018..0000000000
--- a/persistence-modules/spring-jpa-2/src/main/resources/server.xml
+++ /dev/null
@@ -1,6 +0,0 @@
-
-
-    <Resource name="jdbc/BaeldungDatabase" auth="Container"
-              type="javax.sql.DataSource" driverClassName="org.postgresql.Driver"
-              url="jdbc:postgresql://localhost:5432/postgres"
-              username="baeldung" password="pass1234" maxActive="20" maxIdle="10" maxWait="-1"/>
\ No newline at end of file
diff --git a/persistence-modules/spring-jpa-2/src/main/resources/sqlfiles.properties b/persistence-modules/spring-jpa-2/src/main/resources/sqlfiles.properties
deleted file mode 100644
index 0bea6adad1..0000000000
--- a/persistence-modules/spring-jpa-2/src/main/resources/sqlfiles.properties
+++ /dev/null
@@ -1 +0,0 @@
-spring.jpa.hibernate.ddl-auto=none
\ No newline at end of file
diff --git a/persistence-modules/spring-jpa-2/src/test/java/META-INF/persistence.xml b/persistence-modules/spring-jpa-2/src/test/java/META-INF/persistence.xml
deleted file mode 100644
index 495f076fef..0000000000
--- a/persistence-modules/spring-jpa-2/src/test/java/META-INF/persistence.xml
+++ /dev/null
@@ -1,20 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<persistence version="2.1" xmlns="http://xmlns.jcp.org/xml/ns/persistence"
-             xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
-             xsi:schemaLocation="http://xmlns.jcp.org/xml/ns/persistence http://xmlns.jcp.org/xml/ns/persistence/persistence_2_1.xsd">
-    <persistence-unit name="punit">
-        <class>com.baeldung.persistence.model.Foo</class>
-        <class>com.baeldung.persistence.model.Bar</class>
-        <properties>
-            <property name="javax.persistence.jdbc.user" value="root"/>
-            <property name="javax.persistence.jdbc.driver" value="com.mysql.jdbc.Driver"/>
-            <property name="javax.persistence.jdbc.url" value="jdbc:mysql://localhost:3306/HIBERTEST"/>
-            <property name="javax.persistence.ddl-generation" value="drop-and-create-tables"/>
-            <property name="javax.persistence.logging.level" value="INFO"/>
-            <property name="hibernate.show_sql" value="true"/>
-            <property name="hibernate.cache.use_second_level_cache" value="false"/>
-            <property name="hibernate.cache.use_query_cache" value="false"/>
-        </properties>
-
-    </persistence-unit>
-</persistence>
diff --git a/persistence-modules/spring-jpa-2/src/test/java/com/baeldung/SpringContextTest.java b/persistence-modules/spring-jpa-2/src/test/java/com/baeldung/SpringContextTest.java
deleted file mode 100644
index abc73e250d..0000000000
--- a/persistence-modules/spring-jpa-2/src/test/java/com/baeldung/SpringContextTest.java
+++ /dev/null
@@ -1,21 +0,0 @@
-package com.baeldung;
-
-import com.baeldung.config.PersistenceJPAConfig;
-import org.junit.Test;
-import org.junit.runner.RunWith;
-import org.springframework.test.annotation.DirtiesContext;
-import org.springframework.test.context.ContextConfiguration;
-import org.springframework.test.context.junit4.SpringJUnit4ClassRunner;
-import org.springframework.test.context.support.AnnotationConfigContextLoader;
-import org.springframework.test.context.web.WebAppConfiguration;
-
-@RunWith(SpringJUnit4ClassRunner.class)
-@ContextConfiguration(classes = { PersistenceJPAConfig.class }, loader = AnnotationConfigContextLoader.class)
-@WebAppConfiguration
-@DirtiesContext
-public class SpringContextTest {
-
-    @Test
-    public void whenSpringContextIsBootstrapped_thenNoExceptions() {
-    }
-}
diff --git a/persistence-modules/spring-jpa-2/src/test/resources/persistence-student.properties b/persistence-modules/spring-jpa-2/src/test/resources/persistence-student.properties
deleted file mode 100644
index 3b6b580630..0000000000
--- a/persistence-modules/spring-jpa-2/src/test/resources/persistence-student.properties
+++ /dev/null
@@ -1,9 +0,0 @@
-jdbc.driverClassName=org.h2.Driver
-jdbc.url=jdbc:h2:mem:myDb;DB_CLOSE_DELAY=-1
-
-hibernate.dialect=org.hibernate.dialect.H2Dialect
-hibernate.show_sql=true
-hibernate.hbm2ddl.auto=create
-
-hibernate.cache.use_second_level_cache=false
-hibernate.cache.use_query_cache=false
\ No newline at end of file
diff --git a/persistence-modules/spring-jpa/README.md b/persistence-modules/spring-jpa/README.md
index 3eb8ae8d55..d260913635 100644
--- a/persistence-modules/spring-jpa/README.md
+++ b/persistence-modules/spring-jpa/README.md
@@ -1,7 +1,4 @@
-=========
-
-## Spring JPA Example Project
-
+## Spring JPA (1)
 
 ### Relevant Articles: 
 - [The DAO with JPA and Spring](https://www.baeldung.com/spring-dao-jpa)

From 1d0488b5761a1591602a374c5594298f02429b17 Mon Sep 17 00:00:00 2001
From: mikr <michael.krimgen@ximedes.com>
Date: Sat, 15 Aug 2020 20:25:37 +0200
Subject: [PATCH 117/156] Java-70 Rename modules in Spring Security modules

---
 spring-security-modules/pom.xml               |  3 +-
 .../README.md                                 |  0
 .../pom.xml                                   |  4 +-
 .../spring-security-sso-auth-server/pom.xml   |  0
 .../com/baeldung/config/AuthServerConfig.java |  0
 .../AuthorizationServerApplication.java       |  0
 .../com/baeldung/config/SecurityConfig.java   |  0
 .../com/baeldung/config/UserController.java   |  0
 .../src/main/resources/application.properties |  0
 .../src/main/resources/logback.xml            |  0
 .../java/com/baeldung/SpringContextTest.java  |  0
 .../baeldung/UserInfoEndpointLiveTest.java    |  0
 .../spring-security-sso-kerberos/.gitignore   |  0
 .../spring-security-sso-kerberos/README.md    |  0
 .../spring-security-sso-kerberos/pom.xml      |  0
 .../java/com/baeldung/intro/Application.java  |  0
 .../intro/config/WebSecurityConfig.java       |  0
 .../security/DummyUserDetailsService.java     |  0
 .../kerberos/client/KerberosClientApp.java    |  0
 .../java/kerberos/client/SampleClient.java    |  0
 .../kerberos/client/config/AppConfig.java     |  0
 .../client/config/KerberosConfig.java         |  0
 .../java/kerberos/kdc/KerberosMiniKdc.java    |  0
 .../kerberos/kdc/MiniKdcConfigBuilder.java    |  0
 .../kerberos/server/KerberizedServerApp.java  |  0
 .../kerberos/server/config/MvcConfig.java     |  0
 .../server/config/WebSecurityConfig.java      |  0
 .../server/controller/SampleController.java   |  0
 .../service/DummyUserDetailsService.java      |  0
 .../src/main/resources/application.properties |  0
 .../src/main/resources/minikdc-krb5.conf      |  0
 .../src/main/resources/minikdc.ldiff          |  0
 .../src/main/resources/templates/hello.html   |  0
 .../src/main/resources/templates/home.html    |  0
 .../src/main/resources/templates/login.html   |  0
 .../client/SampleClientManualTest.java        |  0
 .../spring-security-sso-ui-2/pom.xml          |  0
 .../com/baeldung/config/UiApplication.java    |  0
 .../com/baeldung/config/UiSecurityConfig.java |  0
 .../java/com/baeldung/config/UiWebConfig.java |  0
 .../src/main/resources/application.yml        |  0
 .../src/main/resources/logback.xml            |  0
 .../src/main/resources/templates/index.html   |  0
 .../main/resources/templates/securedPage.html |  0
 .../java/com/baeldung/SpringContextTest.java  |  0
 .../spring-security-sso-ui/pom.xml            |  0
 .../com/baeldung/config/UiApplication.java    |  0
 .../com/baeldung/config/UiSecurityConfig.java |  0
 .../java/com/baeldung/config/UiWebConfig.java |  0
 .../src/main/resources/application.yml        |  0
 .../src/main/resources/logback.xml            |  0
 .../src/main/resources/templates/index.html   |  0
 .../main/resources/templates/securedPage.html |  0
 .../java/com/baeldung/SpringContextTest.java  |  0
 .../spring-security-stormpath/README.md       |  7 --
 .../spring-security-stormpath/pom.xml         | 68 -------------------
 .../main/java/com/baeldung/Application.java   | 25 -------
 .../security/SecurityConfiguration.java       | 24 -------
 .../src/main/resources/application.properties |  6 --
 .../src/main/resources/logback.xml            | 13 ----
 60 files changed, 3 insertions(+), 147 deletions(-)
 rename spring-security-modules/{spring-security-sso => spring-security-oauth2-sso}/README.md (100%)
 rename spring-security-modules/{spring-security-sso => spring-security-oauth2-sso}/pom.xml (92%)
 rename spring-security-modules/{spring-security-sso => spring-security-oauth2-sso}/spring-security-sso-auth-server/pom.xml (100%)
 rename spring-security-modules/{spring-security-sso => spring-security-oauth2-sso}/spring-security-sso-auth-server/src/main/java/com/baeldung/config/AuthServerConfig.java (100%)
 rename spring-security-modules/{spring-security-sso => spring-security-oauth2-sso}/spring-security-sso-auth-server/src/main/java/com/baeldung/config/AuthorizationServerApplication.java (100%)
 rename spring-security-modules/{spring-security-sso => spring-security-oauth2-sso}/spring-security-sso-auth-server/src/main/java/com/baeldung/config/SecurityConfig.java (100%)
 rename spring-security-modules/{spring-security-sso => spring-security-oauth2-sso}/spring-security-sso-auth-server/src/main/java/com/baeldung/config/UserController.java (100%)
 rename spring-security-modules/{spring-security-sso => spring-security-oauth2-sso}/spring-security-sso-auth-server/src/main/resources/application.properties (100%)
 rename spring-security-modules/{spring-security-sso => spring-security-oauth2-sso}/spring-security-sso-auth-server/src/main/resources/logback.xml (100%)
 rename spring-security-modules/{spring-security-sso => spring-security-oauth2-sso}/spring-security-sso-auth-server/src/test/java/com/baeldung/SpringContextTest.java (100%)
 rename spring-security-modules/{spring-security-sso => spring-security-oauth2-sso}/spring-security-sso-auth-server/src/test/java/com/baeldung/UserInfoEndpointLiveTest.java (100%)
 rename spring-security-modules/{spring-security-sso => spring-security-oauth2-sso}/spring-security-sso-kerberos/.gitignore (100%)
 rename spring-security-modules/{spring-security-sso => spring-security-oauth2-sso}/spring-security-sso-kerberos/README.md (100%)
 rename spring-security-modules/{spring-security-sso => spring-security-oauth2-sso}/spring-security-sso-kerberos/pom.xml (100%)
 rename spring-security-modules/{spring-security-sso => spring-security-oauth2-sso}/spring-security-sso-kerberos/src/main/java/com/baeldung/intro/Application.java (100%)
 rename spring-security-modules/{spring-security-sso => spring-security-oauth2-sso}/spring-security-sso-kerberos/src/main/java/com/baeldung/intro/config/WebSecurityConfig.java (100%)
 rename spring-security-modules/{spring-security-sso => spring-security-oauth2-sso}/spring-security-sso-kerberos/src/main/java/com/baeldung/intro/security/DummyUserDetailsService.java (100%)
 rename spring-security-modules/{spring-security-sso => spring-security-oauth2-sso}/spring-security-sso-kerberos/src/main/java/kerberos/client/KerberosClientApp.java (100%)
 rename spring-security-modules/{spring-security-sso => spring-security-oauth2-sso}/spring-security-sso-kerberos/src/main/java/kerberos/client/SampleClient.java (100%)
 rename spring-security-modules/{spring-security-sso => spring-security-oauth2-sso}/spring-security-sso-kerberos/src/main/java/kerberos/client/config/AppConfig.java (100%)
 rename spring-security-modules/{spring-security-sso => spring-security-oauth2-sso}/spring-security-sso-kerberos/src/main/java/kerberos/client/config/KerberosConfig.java (100%)
 rename spring-security-modules/{spring-security-sso => spring-security-oauth2-sso}/spring-security-sso-kerberos/src/main/java/kerberos/kdc/KerberosMiniKdc.java (100%)
 rename spring-security-modules/{spring-security-sso => spring-security-oauth2-sso}/spring-security-sso-kerberos/src/main/java/kerberos/kdc/MiniKdcConfigBuilder.java (100%)
 rename spring-security-modules/{spring-security-sso => spring-security-oauth2-sso}/spring-security-sso-kerberos/src/main/java/kerberos/server/KerberizedServerApp.java (100%)
 rename spring-security-modules/{spring-security-sso => spring-security-oauth2-sso}/spring-security-sso-kerberos/src/main/java/kerberos/server/config/MvcConfig.java (100%)
 rename spring-security-modules/{spring-security-sso => spring-security-oauth2-sso}/spring-security-sso-kerberos/src/main/java/kerberos/server/config/WebSecurityConfig.java (100%)
 rename spring-security-modules/{spring-security-sso => spring-security-oauth2-sso}/spring-security-sso-kerberos/src/main/java/kerberos/server/controller/SampleController.java (100%)
 rename spring-security-modules/{spring-security-sso => spring-security-oauth2-sso}/spring-security-sso-kerberos/src/main/java/kerberos/server/service/DummyUserDetailsService.java (100%)
 rename spring-security-modules/{spring-security-sso => spring-security-oauth2-sso}/spring-security-sso-kerberos/src/main/resources/application.properties (100%)
 rename spring-security-modules/{spring-security-sso => spring-security-oauth2-sso}/spring-security-sso-kerberos/src/main/resources/minikdc-krb5.conf (100%)
 rename spring-security-modules/{spring-security-sso => spring-security-oauth2-sso}/spring-security-sso-kerberos/src/main/resources/minikdc.ldiff (100%)
 rename spring-security-modules/{spring-security-sso => spring-security-oauth2-sso}/spring-security-sso-kerberos/src/main/resources/templates/hello.html (100%)
 rename spring-security-modules/{spring-security-sso => spring-security-oauth2-sso}/spring-security-sso-kerberos/src/main/resources/templates/home.html (100%)
 rename spring-security-modules/{spring-security-sso => spring-security-oauth2-sso}/spring-security-sso-kerberos/src/main/resources/templates/login.html (100%)
 rename spring-security-modules/{spring-security-sso => spring-security-oauth2-sso}/spring-security-sso-kerberos/src/test/java/kerberos/client/SampleClientManualTest.java (100%)
 rename spring-security-modules/{spring-security-sso => spring-security-oauth2-sso}/spring-security-sso-ui-2/pom.xml (100%)
 rename spring-security-modules/{spring-security-sso => spring-security-oauth2-sso}/spring-security-sso-ui-2/src/main/java/com/baeldung/config/UiApplication.java (100%)
 rename spring-security-modules/{spring-security-sso => spring-security-oauth2-sso}/spring-security-sso-ui-2/src/main/java/com/baeldung/config/UiSecurityConfig.java (100%)
 rename spring-security-modules/{spring-security-sso => spring-security-oauth2-sso}/spring-security-sso-ui-2/src/main/java/com/baeldung/config/UiWebConfig.java (100%)
 rename spring-security-modules/{spring-security-sso => spring-security-oauth2-sso}/spring-security-sso-ui-2/src/main/resources/application.yml (100%)
 rename spring-security-modules/{spring-security-sso => spring-security-oauth2-sso}/spring-security-sso-ui-2/src/main/resources/logback.xml (100%)
 rename spring-security-modules/{spring-security-sso => spring-security-oauth2-sso}/spring-security-sso-ui-2/src/main/resources/templates/index.html (100%)
 rename spring-security-modules/{spring-security-sso => spring-security-oauth2-sso}/spring-security-sso-ui-2/src/main/resources/templates/securedPage.html (100%)
 rename spring-security-modules/{spring-security-sso => spring-security-oauth2-sso}/spring-security-sso-ui-2/src/test/java/com/baeldung/SpringContextTest.java (100%)
 rename spring-security-modules/{spring-security-sso => spring-security-oauth2-sso}/spring-security-sso-ui/pom.xml (100%)
 rename spring-security-modules/{spring-security-sso => spring-security-oauth2-sso}/spring-security-sso-ui/src/main/java/com/baeldung/config/UiApplication.java (100%)
 rename spring-security-modules/{spring-security-sso => spring-security-oauth2-sso}/spring-security-sso-ui/src/main/java/com/baeldung/config/UiSecurityConfig.java (100%)
 rename spring-security-modules/{spring-security-sso => spring-security-oauth2-sso}/spring-security-sso-ui/src/main/java/com/baeldung/config/UiWebConfig.java (100%)
 rename spring-security-modules/{spring-security-sso => spring-security-oauth2-sso}/spring-security-sso-ui/src/main/resources/application.yml (100%)
 rename spring-security-modules/{spring-security-sso => spring-security-oauth2-sso}/spring-security-sso-ui/src/main/resources/logback.xml (100%)
 rename spring-security-modules/{spring-security-sso => spring-security-oauth2-sso}/spring-security-sso-ui/src/main/resources/templates/index.html (100%)
 rename spring-security-modules/{spring-security-sso => spring-security-oauth2-sso}/spring-security-sso-ui/src/main/resources/templates/securedPage.html (100%)
 rename spring-security-modules/{spring-security-sso => spring-security-oauth2-sso}/spring-security-sso-ui/src/test/java/com/baeldung/SpringContextTest.java (100%)
 delete mode 100644 spring-security-modules/spring-security-stormpath/README.md
 delete mode 100644 spring-security-modules/spring-security-stormpath/pom.xml
 delete mode 100644 spring-security-modules/spring-security-stormpath/src/main/java/com/baeldung/Application.java
 delete mode 100644 spring-security-modules/spring-security-stormpath/src/main/java/com/baeldung/security/SecurityConfiguration.java
 delete mode 100644 spring-security-modules/spring-security-stormpath/src/main/resources/application.properties
 delete mode 100644 spring-security-modules/spring-security-stormpath/src/main/resources/logback.xml

diff --git a/spring-security-modules/pom.xml b/spring-security-modules/pom.xml
index d7b5844e6f..f050b48ac5 100644
--- a/spring-security-modules/pom.xml
+++ b/spring-security-modules/pom.xml
@@ -35,8 +35,7 @@
         <module>spring-security-rest</module>
         <module>spring-security-rest-basic-auth</module>
         <module>spring-security-rest-custom</module>
-        <module>spring-security-sso</module>
-        <module>spring-security-stormpath</module>
+        <module>spring-security-oauth2-sso</module>
         <module>spring-security-thymeleaf</module>
         <module>spring-security-x509</module>
         <module>spring-security-kotlin-dsl</module>
diff --git a/spring-security-modules/spring-security-sso/README.md b/spring-security-modules/spring-security-oauth2-sso/README.md
similarity index 100%
rename from spring-security-modules/spring-security-sso/README.md
rename to spring-security-modules/spring-security-oauth2-sso/README.md
diff --git a/spring-security-modules/spring-security-sso/pom.xml b/spring-security-modules/spring-security-oauth2-sso/pom.xml
similarity index 92%
rename from spring-security-modules/spring-security-sso/pom.xml
rename to spring-security-modules/spring-security-oauth2-sso/pom.xml
index 4e5bb49aa3..ed4b1d64ba 100644
--- a/spring-security-modules/spring-security-sso/pom.xml
+++ b/spring-security-modules/spring-security-oauth2-sso/pom.xml
@@ -3,9 +3,9 @@
          xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
     <modelVersion>4.0.0</modelVersion>
     <groupId>com.baeldung</groupId>
-    <artifactId>spring-security-sso</artifactId>
+    <artifactId>spring-security-oauth2-sso</artifactId>
     <version>1.0.0-SNAPSHOT</version>
-    <name>spring-security-sso</name>
+    <name>spring-security-oauth2-sso</name>
     <packaging>pom</packaging>
 
     <parent>
diff --git a/spring-security-modules/spring-security-sso/spring-security-sso-auth-server/pom.xml b/spring-security-modules/spring-security-oauth2-sso/spring-security-sso-auth-server/pom.xml
similarity index 100%
rename from spring-security-modules/spring-security-sso/spring-security-sso-auth-server/pom.xml
rename to spring-security-modules/spring-security-oauth2-sso/spring-security-sso-auth-server/pom.xml
diff --git a/spring-security-modules/spring-security-sso/spring-security-sso-auth-server/src/main/java/com/baeldung/config/AuthServerConfig.java b/spring-security-modules/spring-security-oauth2-sso/spring-security-sso-auth-server/src/main/java/com/baeldung/config/AuthServerConfig.java
similarity index 100%
rename from spring-security-modules/spring-security-sso/spring-security-sso-auth-server/src/main/java/com/baeldung/config/AuthServerConfig.java
rename to spring-security-modules/spring-security-oauth2-sso/spring-security-sso-auth-server/src/main/java/com/baeldung/config/AuthServerConfig.java
diff --git a/spring-security-modules/spring-security-sso/spring-security-sso-auth-server/src/main/java/com/baeldung/config/AuthorizationServerApplication.java b/spring-security-modules/spring-security-oauth2-sso/spring-security-sso-auth-server/src/main/java/com/baeldung/config/AuthorizationServerApplication.java
similarity index 100%
rename from spring-security-modules/spring-security-sso/spring-security-sso-auth-server/src/main/java/com/baeldung/config/AuthorizationServerApplication.java
rename to spring-security-modules/spring-security-oauth2-sso/spring-security-sso-auth-server/src/main/java/com/baeldung/config/AuthorizationServerApplication.java
diff --git a/spring-security-modules/spring-security-sso/spring-security-sso-auth-server/src/main/java/com/baeldung/config/SecurityConfig.java b/spring-security-modules/spring-security-oauth2-sso/spring-security-sso-auth-server/src/main/java/com/baeldung/config/SecurityConfig.java
similarity index 100%
rename from spring-security-modules/spring-security-sso/spring-security-sso-auth-server/src/main/java/com/baeldung/config/SecurityConfig.java
rename to spring-security-modules/spring-security-oauth2-sso/spring-security-sso-auth-server/src/main/java/com/baeldung/config/SecurityConfig.java
diff --git a/spring-security-modules/spring-security-sso/spring-security-sso-auth-server/src/main/java/com/baeldung/config/UserController.java b/spring-security-modules/spring-security-oauth2-sso/spring-security-sso-auth-server/src/main/java/com/baeldung/config/UserController.java
similarity index 100%
rename from spring-security-modules/spring-security-sso/spring-security-sso-auth-server/src/main/java/com/baeldung/config/UserController.java
rename to spring-security-modules/spring-security-oauth2-sso/spring-security-sso-auth-server/src/main/java/com/baeldung/config/UserController.java
diff --git a/spring-security-modules/spring-security-sso/spring-security-sso-auth-server/src/main/resources/application.properties b/spring-security-modules/spring-security-oauth2-sso/spring-security-sso-auth-server/src/main/resources/application.properties
similarity index 100%
rename from spring-security-modules/spring-security-sso/spring-security-sso-auth-server/src/main/resources/application.properties
rename to spring-security-modules/spring-security-oauth2-sso/spring-security-sso-auth-server/src/main/resources/application.properties
diff --git a/spring-security-modules/spring-security-sso/spring-security-sso-auth-server/src/main/resources/logback.xml b/spring-security-modules/spring-security-oauth2-sso/spring-security-sso-auth-server/src/main/resources/logback.xml
similarity index 100%
rename from spring-security-modules/spring-security-sso/spring-security-sso-auth-server/src/main/resources/logback.xml
rename to spring-security-modules/spring-security-oauth2-sso/spring-security-sso-auth-server/src/main/resources/logback.xml
diff --git a/spring-security-modules/spring-security-sso/spring-security-sso-auth-server/src/test/java/com/baeldung/SpringContextTest.java b/spring-security-modules/spring-security-oauth2-sso/spring-security-sso-auth-server/src/test/java/com/baeldung/SpringContextTest.java
similarity index 100%
rename from spring-security-modules/spring-security-sso/spring-security-sso-auth-server/src/test/java/com/baeldung/SpringContextTest.java
rename to spring-security-modules/spring-security-oauth2-sso/spring-security-sso-auth-server/src/test/java/com/baeldung/SpringContextTest.java
diff --git a/spring-security-modules/spring-security-sso/spring-security-sso-auth-server/src/test/java/com/baeldung/UserInfoEndpointLiveTest.java b/spring-security-modules/spring-security-oauth2-sso/spring-security-sso-auth-server/src/test/java/com/baeldung/UserInfoEndpointLiveTest.java
similarity index 100%
rename from spring-security-modules/spring-security-sso/spring-security-sso-auth-server/src/test/java/com/baeldung/UserInfoEndpointLiveTest.java
rename to spring-security-modules/spring-security-oauth2-sso/spring-security-sso-auth-server/src/test/java/com/baeldung/UserInfoEndpointLiveTest.java
diff --git a/spring-security-modules/spring-security-sso/spring-security-sso-kerberos/.gitignore b/spring-security-modules/spring-security-oauth2-sso/spring-security-sso-kerberos/.gitignore
similarity index 100%
rename from spring-security-modules/spring-security-sso/spring-security-sso-kerberos/.gitignore
rename to spring-security-modules/spring-security-oauth2-sso/spring-security-sso-kerberos/.gitignore
diff --git a/spring-security-modules/spring-security-sso/spring-security-sso-kerberos/README.md b/spring-security-modules/spring-security-oauth2-sso/spring-security-sso-kerberos/README.md
similarity index 100%
rename from spring-security-modules/spring-security-sso/spring-security-sso-kerberos/README.md
rename to spring-security-modules/spring-security-oauth2-sso/spring-security-sso-kerberos/README.md
diff --git a/spring-security-modules/spring-security-sso/spring-security-sso-kerberos/pom.xml b/spring-security-modules/spring-security-oauth2-sso/spring-security-sso-kerberos/pom.xml
similarity index 100%
rename from spring-security-modules/spring-security-sso/spring-security-sso-kerberos/pom.xml
rename to spring-security-modules/spring-security-oauth2-sso/spring-security-sso-kerberos/pom.xml
diff --git a/spring-security-modules/spring-security-sso/spring-security-sso-kerberos/src/main/java/com/baeldung/intro/Application.java b/spring-security-modules/spring-security-oauth2-sso/spring-security-sso-kerberos/src/main/java/com/baeldung/intro/Application.java
similarity index 100%
rename from spring-security-modules/spring-security-sso/spring-security-sso-kerberos/src/main/java/com/baeldung/intro/Application.java
rename to spring-security-modules/spring-security-oauth2-sso/spring-security-sso-kerberos/src/main/java/com/baeldung/intro/Application.java
diff --git a/spring-security-modules/spring-security-sso/spring-security-sso-kerberos/src/main/java/com/baeldung/intro/config/WebSecurityConfig.java b/spring-security-modules/spring-security-oauth2-sso/spring-security-sso-kerberos/src/main/java/com/baeldung/intro/config/WebSecurityConfig.java
similarity index 100%
rename from spring-security-modules/spring-security-sso/spring-security-sso-kerberos/src/main/java/com/baeldung/intro/config/WebSecurityConfig.java
rename to spring-security-modules/spring-security-oauth2-sso/spring-security-sso-kerberos/src/main/java/com/baeldung/intro/config/WebSecurityConfig.java
diff --git a/spring-security-modules/spring-security-sso/spring-security-sso-kerberos/src/main/java/com/baeldung/intro/security/DummyUserDetailsService.java b/spring-security-modules/spring-security-oauth2-sso/spring-security-sso-kerberos/src/main/java/com/baeldung/intro/security/DummyUserDetailsService.java
similarity index 100%
rename from spring-security-modules/spring-security-sso/spring-security-sso-kerberos/src/main/java/com/baeldung/intro/security/DummyUserDetailsService.java
rename to spring-security-modules/spring-security-oauth2-sso/spring-security-sso-kerberos/src/main/java/com/baeldung/intro/security/DummyUserDetailsService.java
diff --git a/spring-security-modules/spring-security-sso/spring-security-sso-kerberos/src/main/java/kerberos/client/KerberosClientApp.java b/spring-security-modules/spring-security-oauth2-sso/spring-security-sso-kerberos/src/main/java/kerberos/client/KerberosClientApp.java
similarity index 100%
rename from spring-security-modules/spring-security-sso/spring-security-sso-kerberos/src/main/java/kerberos/client/KerberosClientApp.java
rename to spring-security-modules/spring-security-oauth2-sso/spring-security-sso-kerberos/src/main/java/kerberos/client/KerberosClientApp.java
diff --git a/spring-security-modules/spring-security-sso/spring-security-sso-kerberos/src/main/java/kerberos/client/SampleClient.java b/spring-security-modules/spring-security-oauth2-sso/spring-security-sso-kerberos/src/main/java/kerberos/client/SampleClient.java
similarity index 100%
rename from spring-security-modules/spring-security-sso/spring-security-sso-kerberos/src/main/java/kerberos/client/SampleClient.java
rename to spring-security-modules/spring-security-oauth2-sso/spring-security-sso-kerberos/src/main/java/kerberos/client/SampleClient.java
diff --git a/spring-security-modules/spring-security-sso/spring-security-sso-kerberos/src/main/java/kerberos/client/config/AppConfig.java b/spring-security-modules/spring-security-oauth2-sso/spring-security-sso-kerberos/src/main/java/kerberos/client/config/AppConfig.java
similarity index 100%
rename from spring-security-modules/spring-security-sso/spring-security-sso-kerberos/src/main/java/kerberos/client/config/AppConfig.java
rename to spring-security-modules/spring-security-oauth2-sso/spring-security-sso-kerberos/src/main/java/kerberos/client/config/AppConfig.java
diff --git a/spring-security-modules/spring-security-sso/spring-security-sso-kerberos/src/main/java/kerberos/client/config/KerberosConfig.java b/spring-security-modules/spring-security-oauth2-sso/spring-security-sso-kerberos/src/main/java/kerberos/client/config/KerberosConfig.java
similarity index 100%
rename from spring-security-modules/spring-security-sso/spring-security-sso-kerberos/src/main/java/kerberos/client/config/KerberosConfig.java
rename to spring-security-modules/spring-security-oauth2-sso/spring-security-sso-kerberos/src/main/java/kerberos/client/config/KerberosConfig.java
diff --git a/spring-security-modules/spring-security-sso/spring-security-sso-kerberos/src/main/java/kerberos/kdc/KerberosMiniKdc.java b/spring-security-modules/spring-security-oauth2-sso/spring-security-sso-kerberos/src/main/java/kerberos/kdc/KerberosMiniKdc.java
similarity index 100%
rename from spring-security-modules/spring-security-sso/spring-security-sso-kerberos/src/main/java/kerberos/kdc/KerberosMiniKdc.java
rename to spring-security-modules/spring-security-oauth2-sso/spring-security-sso-kerberos/src/main/java/kerberos/kdc/KerberosMiniKdc.java
diff --git a/spring-security-modules/spring-security-sso/spring-security-sso-kerberos/src/main/java/kerberos/kdc/MiniKdcConfigBuilder.java b/spring-security-modules/spring-security-oauth2-sso/spring-security-sso-kerberos/src/main/java/kerberos/kdc/MiniKdcConfigBuilder.java
similarity index 100%
rename from spring-security-modules/spring-security-sso/spring-security-sso-kerberos/src/main/java/kerberos/kdc/MiniKdcConfigBuilder.java
rename to spring-security-modules/spring-security-oauth2-sso/spring-security-sso-kerberos/src/main/java/kerberos/kdc/MiniKdcConfigBuilder.java
diff --git a/spring-security-modules/spring-security-sso/spring-security-sso-kerberos/src/main/java/kerberos/server/KerberizedServerApp.java b/spring-security-modules/spring-security-oauth2-sso/spring-security-sso-kerberos/src/main/java/kerberos/server/KerberizedServerApp.java
similarity index 100%
rename from spring-security-modules/spring-security-sso/spring-security-sso-kerberos/src/main/java/kerberos/server/KerberizedServerApp.java
rename to spring-security-modules/spring-security-oauth2-sso/spring-security-sso-kerberos/src/main/java/kerberos/server/KerberizedServerApp.java
diff --git a/spring-security-modules/spring-security-sso/spring-security-sso-kerberos/src/main/java/kerberos/server/config/MvcConfig.java b/spring-security-modules/spring-security-oauth2-sso/spring-security-sso-kerberos/src/main/java/kerberos/server/config/MvcConfig.java
similarity index 100%
rename from spring-security-modules/spring-security-sso/spring-security-sso-kerberos/src/main/java/kerberos/server/config/MvcConfig.java
rename to spring-security-modules/spring-security-oauth2-sso/spring-security-sso-kerberos/src/main/java/kerberos/server/config/MvcConfig.java
diff --git a/spring-security-modules/spring-security-sso/spring-security-sso-kerberos/src/main/java/kerberos/server/config/WebSecurityConfig.java b/spring-security-modules/spring-security-oauth2-sso/spring-security-sso-kerberos/src/main/java/kerberos/server/config/WebSecurityConfig.java
similarity index 100%
rename from spring-security-modules/spring-security-sso/spring-security-sso-kerberos/src/main/java/kerberos/server/config/WebSecurityConfig.java
rename to spring-security-modules/spring-security-oauth2-sso/spring-security-sso-kerberos/src/main/java/kerberos/server/config/WebSecurityConfig.java
diff --git a/spring-security-modules/spring-security-sso/spring-security-sso-kerberos/src/main/java/kerberos/server/controller/SampleController.java b/spring-security-modules/spring-security-oauth2-sso/spring-security-sso-kerberos/src/main/java/kerberos/server/controller/SampleController.java
similarity index 100%
rename from spring-security-modules/spring-security-sso/spring-security-sso-kerberos/src/main/java/kerberos/server/controller/SampleController.java
rename to spring-security-modules/spring-security-oauth2-sso/spring-security-sso-kerberos/src/main/java/kerberos/server/controller/SampleController.java
diff --git a/spring-security-modules/spring-security-sso/spring-security-sso-kerberos/src/main/java/kerberos/server/service/DummyUserDetailsService.java b/spring-security-modules/spring-security-oauth2-sso/spring-security-sso-kerberos/src/main/java/kerberos/server/service/DummyUserDetailsService.java
similarity index 100%
rename from spring-security-modules/spring-security-sso/spring-security-sso-kerberos/src/main/java/kerberos/server/service/DummyUserDetailsService.java
rename to spring-security-modules/spring-security-oauth2-sso/spring-security-sso-kerberos/src/main/java/kerberos/server/service/DummyUserDetailsService.java
diff --git a/spring-security-modules/spring-security-sso/spring-security-sso-kerberos/src/main/resources/application.properties b/spring-security-modules/spring-security-oauth2-sso/spring-security-sso-kerberos/src/main/resources/application.properties
similarity index 100%
rename from spring-security-modules/spring-security-sso/spring-security-sso-kerberos/src/main/resources/application.properties
rename to spring-security-modules/spring-security-oauth2-sso/spring-security-sso-kerberos/src/main/resources/application.properties
diff --git a/spring-security-modules/spring-security-sso/spring-security-sso-kerberos/src/main/resources/minikdc-krb5.conf b/spring-security-modules/spring-security-oauth2-sso/spring-security-sso-kerberos/src/main/resources/minikdc-krb5.conf
similarity index 100%
rename from spring-security-modules/spring-security-sso/spring-security-sso-kerberos/src/main/resources/minikdc-krb5.conf
rename to spring-security-modules/spring-security-oauth2-sso/spring-security-sso-kerberos/src/main/resources/minikdc-krb5.conf
diff --git a/spring-security-modules/spring-security-sso/spring-security-sso-kerberos/src/main/resources/minikdc.ldiff b/spring-security-modules/spring-security-oauth2-sso/spring-security-sso-kerberos/src/main/resources/minikdc.ldiff
similarity index 100%
rename from spring-security-modules/spring-security-sso/spring-security-sso-kerberos/src/main/resources/minikdc.ldiff
rename to spring-security-modules/spring-security-oauth2-sso/spring-security-sso-kerberos/src/main/resources/minikdc.ldiff
diff --git a/spring-security-modules/spring-security-sso/spring-security-sso-kerberos/src/main/resources/templates/hello.html b/spring-security-modules/spring-security-oauth2-sso/spring-security-sso-kerberos/src/main/resources/templates/hello.html
similarity index 100%
rename from spring-security-modules/spring-security-sso/spring-security-sso-kerberos/src/main/resources/templates/hello.html
rename to spring-security-modules/spring-security-oauth2-sso/spring-security-sso-kerberos/src/main/resources/templates/hello.html
diff --git a/spring-security-modules/spring-security-sso/spring-security-sso-kerberos/src/main/resources/templates/home.html b/spring-security-modules/spring-security-oauth2-sso/spring-security-sso-kerberos/src/main/resources/templates/home.html
similarity index 100%
rename from spring-security-modules/spring-security-sso/spring-security-sso-kerberos/src/main/resources/templates/home.html
rename to spring-security-modules/spring-security-oauth2-sso/spring-security-sso-kerberos/src/main/resources/templates/home.html
diff --git a/spring-security-modules/spring-security-sso/spring-security-sso-kerberos/src/main/resources/templates/login.html b/spring-security-modules/spring-security-oauth2-sso/spring-security-sso-kerberos/src/main/resources/templates/login.html
similarity index 100%
rename from spring-security-modules/spring-security-sso/spring-security-sso-kerberos/src/main/resources/templates/login.html
rename to spring-security-modules/spring-security-oauth2-sso/spring-security-sso-kerberos/src/main/resources/templates/login.html
diff --git a/spring-security-modules/spring-security-sso/spring-security-sso-kerberos/src/test/java/kerberos/client/SampleClientManualTest.java b/spring-security-modules/spring-security-oauth2-sso/spring-security-sso-kerberos/src/test/java/kerberos/client/SampleClientManualTest.java
similarity index 100%
rename from spring-security-modules/spring-security-sso/spring-security-sso-kerberos/src/test/java/kerberos/client/SampleClientManualTest.java
rename to spring-security-modules/spring-security-oauth2-sso/spring-security-sso-kerberos/src/test/java/kerberos/client/SampleClientManualTest.java
diff --git a/spring-security-modules/spring-security-sso/spring-security-sso-ui-2/pom.xml b/spring-security-modules/spring-security-oauth2-sso/spring-security-sso-ui-2/pom.xml
similarity index 100%
rename from spring-security-modules/spring-security-sso/spring-security-sso-ui-2/pom.xml
rename to spring-security-modules/spring-security-oauth2-sso/spring-security-sso-ui-2/pom.xml
diff --git a/spring-security-modules/spring-security-sso/spring-security-sso-ui-2/src/main/java/com/baeldung/config/UiApplication.java b/spring-security-modules/spring-security-oauth2-sso/spring-security-sso-ui-2/src/main/java/com/baeldung/config/UiApplication.java
similarity index 100%
rename from spring-security-modules/spring-security-sso/spring-security-sso-ui-2/src/main/java/com/baeldung/config/UiApplication.java
rename to spring-security-modules/spring-security-oauth2-sso/spring-security-sso-ui-2/src/main/java/com/baeldung/config/UiApplication.java
diff --git a/spring-security-modules/spring-security-sso/spring-security-sso-ui-2/src/main/java/com/baeldung/config/UiSecurityConfig.java b/spring-security-modules/spring-security-oauth2-sso/spring-security-sso-ui-2/src/main/java/com/baeldung/config/UiSecurityConfig.java
similarity index 100%
rename from spring-security-modules/spring-security-sso/spring-security-sso-ui-2/src/main/java/com/baeldung/config/UiSecurityConfig.java
rename to spring-security-modules/spring-security-oauth2-sso/spring-security-sso-ui-2/src/main/java/com/baeldung/config/UiSecurityConfig.java
diff --git a/spring-security-modules/spring-security-sso/spring-security-sso-ui-2/src/main/java/com/baeldung/config/UiWebConfig.java b/spring-security-modules/spring-security-oauth2-sso/spring-security-sso-ui-2/src/main/java/com/baeldung/config/UiWebConfig.java
similarity index 100%
rename from spring-security-modules/spring-security-sso/spring-security-sso-ui-2/src/main/java/com/baeldung/config/UiWebConfig.java
rename to spring-security-modules/spring-security-oauth2-sso/spring-security-sso-ui-2/src/main/java/com/baeldung/config/UiWebConfig.java
diff --git a/spring-security-modules/spring-security-sso/spring-security-sso-ui-2/src/main/resources/application.yml b/spring-security-modules/spring-security-oauth2-sso/spring-security-sso-ui-2/src/main/resources/application.yml
similarity index 100%
rename from spring-security-modules/spring-security-sso/spring-security-sso-ui-2/src/main/resources/application.yml
rename to spring-security-modules/spring-security-oauth2-sso/spring-security-sso-ui-2/src/main/resources/application.yml
diff --git a/spring-security-modules/spring-security-sso/spring-security-sso-ui-2/src/main/resources/logback.xml b/spring-security-modules/spring-security-oauth2-sso/spring-security-sso-ui-2/src/main/resources/logback.xml
similarity index 100%
rename from spring-security-modules/spring-security-sso/spring-security-sso-ui-2/src/main/resources/logback.xml
rename to spring-security-modules/spring-security-oauth2-sso/spring-security-sso-ui-2/src/main/resources/logback.xml
diff --git a/spring-security-modules/spring-security-sso/spring-security-sso-ui-2/src/main/resources/templates/index.html b/spring-security-modules/spring-security-oauth2-sso/spring-security-sso-ui-2/src/main/resources/templates/index.html
similarity index 100%
rename from spring-security-modules/spring-security-sso/spring-security-sso-ui-2/src/main/resources/templates/index.html
rename to spring-security-modules/spring-security-oauth2-sso/spring-security-sso-ui-2/src/main/resources/templates/index.html
diff --git a/spring-security-modules/spring-security-sso/spring-security-sso-ui-2/src/main/resources/templates/securedPage.html b/spring-security-modules/spring-security-oauth2-sso/spring-security-sso-ui-2/src/main/resources/templates/securedPage.html
similarity index 100%
rename from spring-security-modules/spring-security-sso/spring-security-sso-ui-2/src/main/resources/templates/securedPage.html
rename to spring-security-modules/spring-security-oauth2-sso/spring-security-sso-ui-2/src/main/resources/templates/securedPage.html
diff --git a/spring-security-modules/spring-security-sso/spring-security-sso-ui-2/src/test/java/com/baeldung/SpringContextTest.java b/spring-security-modules/spring-security-oauth2-sso/spring-security-sso-ui-2/src/test/java/com/baeldung/SpringContextTest.java
similarity index 100%
rename from spring-security-modules/spring-security-sso/spring-security-sso-ui-2/src/test/java/com/baeldung/SpringContextTest.java
rename to spring-security-modules/spring-security-oauth2-sso/spring-security-sso-ui-2/src/test/java/com/baeldung/SpringContextTest.java
diff --git a/spring-security-modules/spring-security-sso/spring-security-sso-ui/pom.xml b/spring-security-modules/spring-security-oauth2-sso/spring-security-sso-ui/pom.xml
similarity index 100%
rename from spring-security-modules/spring-security-sso/spring-security-sso-ui/pom.xml
rename to spring-security-modules/spring-security-oauth2-sso/spring-security-sso-ui/pom.xml
diff --git a/spring-security-modules/spring-security-sso/spring-security-sso-ui/src/main/java/com/baeldung/config/UiApplication.java b/spring-security-modules/spring-security-oauth2-sso/spring-security-sso-ui/src/main/java/com/baeldung/config/UiApplication.java
similarity index 100%
rename from spring-security-modules/spring-security-sso/spring-security-sso-ui/src/main/java/com/baeldung/config/UiApplication.java
rename to spring-security-modules/spring-security-oauth2-sso/spring-security-sso-ui/src/main/java/com/baeldung/config/UiApplication.java
diff --git a/spring-security-modules/spring-security-sso/spring-security-sso-ui/src/main/java/com/baeldung/config/UiSecurityConfig.java b/spring-security-modules/spring-security-oauth2-sso/spring-security-sso-ui/src/main/java/com/baeldung/config/UiSecurityConfig.java
similarity index 100%
rename from spring-security-modules/spring-security-sso/spring-security-sso-ui/src/main/java/com/baeldung/config/UiSecurityConfig.java
rename to spring-security-modules/spring-security-oauth2-sso/spring-security-sso-ui/src/main/java/com/baeldung/config/UiSecurityConfig.java
diff --git a/spring-security-modules/spring-security-sso/spring-security-sso-ui/src/main/java/com/baeldung/config/UiWebConfig.java b/spring-security-modules/spring-security-oauth2-sso/spring-security-sso-ui/src/main/java/com/baeldung/config/UiWebConfig.java
similarity index 100%
rename from spring-security-modules/spring-security-sso/spring-security-sso-ui/src/main/java/com/baeldung/config/UiWebConfig.java
rename to spring-security-modules/spring-security-oauth2-sso/spring-security-sso-ui/src/main/java/com/baeldung/config/UiWebConfig.java
diff --git a/spring-security-modules/spring-security-sso/spring-security-sso-ui/src/main/resources/application.yml b/spring-security-modules/spring-security-oauth2-sso/spring-security-sso-ui/src/main/resources/application.yml
similarity index 100%
rename from spring-security-modules/spring-security-sso/spring-security-sso-ui/src/main/resources/application.yml
rename to spring-security-modules/spring-security-oauth2-sso/spring-security-sso-ui/src/main/resources/application.yml
diff --git a/spring-security-modules/spring-security-sso/spring-security-sso-ui/src/main/resources/logback.xml b/spring-security-modules/spring-security-oauth2-sso/spring-security-sso-ui/src/main/resources/logback.xml
similarity index 100%
rename from spring-security-modules/spring-security-sso/spring-security-sso-ui/src/main/resources/logback.xml
rename to spring-security-modules/spring-security-oauth2-sso/spring-security-sso-ui/src/main/resources/logback.xml
diff --git a/spring-security-modules/spring-security-sso/spring-security-sso-ui/src/main/resources/templates/index.html b/spring-security-modules/spring-security-oauth2-sso/spring-security-sso-ui/src/main/resources/templates/index.html
similarity index 100%
rename from spring-security-modules/spring-security-sso/spring-security-sso-ui/src/main/resources/templates/index.html
rename to spring-security-modules/spring-security-oauth2-sso/spring-security-sso-ui/src/main/resources/templates/index.html
diff --git a/spring-security-modules/spring-security-sso/spring-security-sso-ui/src/main/resources/templates/securedPage.html b/spring-security-modules/spring-security-oauth2-sso/spring-security-sso-ui/src/main/resources/templates/securedPage.html
similarity index 100%
rename from spring-security-modules/spring-security-sso/spring-security-sso-ui/src/main/resources/templates/securedPage.html
rename to spring-security-modules/spring-security-oauth2-sso/spring-security-sso-ui/src/main/resources/templates/securedPage.html
diff --git a/spring-security-modules/spring-security-sso/spring-security-sso-ui/src/test/java/com/baeldung/SpringContextTest.java b/spring-security-modules/spring-security-oauth2-sso/spring-security-sso-ui/src/test/java/com/baeldung/SpringContextTest.java
similarity index 100%
rename from spring-security-modules/spring-security-sso/spring-security-sso-ui/src/test/java/com/baeldung/SpringContextTest.java
rename to spring-security-modules/spring-security-oauth2-sso/spring-security-sso-ui/src/test/java/com/baeldung/SpringContextTest.java
diff --git a/spring-security-modules/spring-security-stormpath/README.md b/spring-security-modules/spring-security-stormpath/README.md
deleted file mode 100644
index 971d4cc858..0000000000
--- a/spring-security-modules/spring-security-stormpath/README.md
+++ /dev/null
@@ -1,7 +0,0 @@
-## Spring Security Stormpath
-
-This module contains articles about Spring Security with Stormpath
-
-### Relevant articles
-
-- [Spring Security with Stormpath](https://www.baeldung.com/spring-security-stormpath)
diff --git a/spring-security-modules/spring-security-stormpath/pom.xml b/spring-security-modules/spring-security-stormpath/pom.xml
deleted file mode 100644
index 81a7c40aef..0000000000
--- a/spring-security-modules/spring-security-stormpath/pom.xml
+++ /dev/null
@@ -1,68 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
-         xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd">
-    <modelVersion>4.0.0</modelVersion>
-    <artifactId>spring-security-stormpath</artifactId>
-    <version>1.0-SNAPSHOT</version>
-    <name>spring-security-stormpath</name>
-    <packaging>war</packaging>
-    <url>http://maven.apache.org</url>
-
-    <developers>
-        <developer>
-            <email>abhinabkanrar@gmail.com</email>
-            <name>Abhinab Kanrar</name>
-            <url>https://github.com/AbhinabKanrar</url>
-            <id>abhinabkanrar</id>
-        </developer>
-    </developers>
-
-    <parent>
-        <groupId>com.baeldung</groupId>
-        <artifactId>parent-boot-1</artifactId>
-        <version>0.0.1-SNAPSHOT</version>
-        <relativePath>../../parent-boot-1</relativePath>
-    </parent>
-
-    <dependencies>
-        <dependency>
-            <groupId>org.springframework.boot</groupId>
-            <artifactId>spring-boot-starter-web</artifactId>
-        </dependency>
-        <dependency>
-            <groupId>com.stormpath.spring</groupId>
-            <artifactId>stormpath-default-spring-boot-starter</artifactId>
-            <version>${stormpath-spring.version}</version>
-        </dependency>
-    </dependencies>
-
-    <build>
-        <finalName>spring-security-stormpath</finalName>
-        <resources>
-            <resource>
-                <directory>src/main/resources</directory>
-            </resource>
-        </resources>
-        <plugins>
-            <plugin>
-                <groupId>org.springframework.boot</groupId>
-                <artifactId>spring-boot-maven-plugin</artifactId>
-                <configuration>
-                    <addResources>true</addResources>
-                </configuration>
-                <executions>
-                    <execution>
-                        <goals>
-                            <goal>repackage</goal>
-                        </goals>
-                    </execution>
-                </executions>
-            </plugin>
-        </plugins>
-    </build>
-
-    <properties>
-        <stormpath-spring.version>1.5.4</stormpath-spring.version>
-    </properties>
-
-</project>
diff --git a/spring-security-modules/spring-security-stormpath/src/main/java/com/baeldung/Application.java b/spring-security-modules/spring-security-stormpath/src/main/java/com/baeldung/Application.java
deleted file mode 100644
index 3d1409eaeb..0000000000
--- a/spring-security-modules/spring-security-stormpath/src/main/java/com/baeldung/Application.java
+++ /dev/null
@@ -1,25 +0,0 @@
-/**
- * 
- */
-package com.baeldung;
-
-import org.springframework.boot.CommandLineRunner;
-import org.springframework.boot.SpringApplication;
-import org.springframework.boot.autoconfigure.SpringBootApplication;
-
-/**
- * @author abhinab
- *
- */
-@SpringBootApplication
-public class Application implements CommandLineRunner {
-
-	@Override
-	public void run(String... args) throws Exception {
-	}
-
-	public static void main(String[] args) {
-		SpringApplication.run(Application.class, args);
-	}
-
-}
diff --git a/spring-security-modules/spring-security-stormpath/src/main/java/com/baeldung/security/SecurityConfiguration.java b/spring-security-modules/spring-security-stormpath/src/main/java/com/baeldung/security/SecurityConfiguration.java
deleted file mode 100644
index 5d75ecea8a..0000000000
--- a/spring-security-modules/spring-security-stormpath/src/main/java/com/baeldung/security/SecurityConfiguration.java
+++ /dev/null
@@ -1,24 +0,0 @@
-/**
- * 
- */
-package com.baeldung.security;
-
-import org.springframework.context.annotation.Configuration;
-import org.springframework.security.config.annotation.web.builders.HttpSecurity;
-import org.springframework.security.config.annotation.web.configuration.WebSecurityConfigurerAdapter;
-
-import static com.stormpath.spring.config.StormpathWebSecurityConfigurer.stormpath;
-
-/**
- * @author abhinab
- *
- */
-@Configuration
-public class SecurityConfiguration extends WebSecurityConfigurerAdapter {
-
-	@Override
-	protected void configure(HttpSecurity http) throws Exception {
-		http.apply(stormpath());
-	}
-
-}
diff --git a/spring-security-modules/spring-security-stormpath/src/main/resources/application.properties b/spring-security-modules/spring-security-stormpath/src/main/resources/application.properties
deleted file mode 100644
index 64a9ca456c..0000000000
--- a/spring-security-modules/spring-security-stormpath/src/main/resources/application.properties
+++ /dev/null
@@ -1,6 +0,0 @@
-security.basic.enabled = false
-
-stormpath.web.stormpathFilter.order = 0
-
-stormpath.client.apiKey.id = 668HU0EOZQ7F4MT53ND2HSGBA
-stormpath.client.apiKey.secret = RPTaYX07csTJR0AMKjM462KRdiP6q037kBWoDrBC3DI
diff --git a/spring-security-modules/spring-security-stormpath/src/main/resources/logback.xml b/spring-security-modules/spring-security-stormpath/src/main/resources/logback.xml
deleted file mode 100644
index 7d900d8ea8..0000000000
--- a/spring-security-modules/spring-security-stormpath/src/main/resources/logback.xml
+++ /dev/null
@@ -1,13 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<configuration>
-    <appender name="STDOUT" class="ch.qos.logback.core.ConsoleAppender">
-        <encoder>
-            <pattern>%d{HH:mm:ss.SSS} [%thread] %-5level %logger{36} - %msg%n
-            </pattern>
-        </encoder>
-    </appender>
-
-    <root level="INFO">
-        <appender-ref ref="STDOUT" />
-    </root>
-</configuration>
\ No newline at end of file

From 3e2ce28afbdeb558d8007a308ea3e6960430800c Mon Sep 17 00:00:00 2001
From: CHANDRAKANT Kumar <kumar.chandrakant@soprabanking.com>
Date: Sun, 16 Aug 2020 01:15:24 +0530
Subject: [PATCH 118/156] Incorporated the review comments on the pull request.

---
 spring-webflux-threads/.gitignore             | 25 ------------
 spring-webflux-threads/README.md              |  2 +-
 .../com/baeldung/webflux/Application.java     |  3 ++
 .../java/com/baeldung/webflux/Controller.java | 40 +++++++++----------
 4 files changed, 24 insertions(+), 46 deletions(-)
 delete mode 100644 spring-webflux-threads/.gitignore

diff --git a/spring-webflux-threads/.gitignore b/spring-webflux-threads/.gitignore
deleted file mode 100644
index 82eca336e3..0000000000
--- a/spring-webflux-threads/.gitignore
+++ /dev/null
@@ -1,25 +0,0 @@
-/target/
-!.mvn/wrapper/maven-wrapper.jar
-
-### STS ###
-.apt_generated
-.classpath
-.factorypath
-.project
-.settings
-.springBeans
-.sts4-cache
-
-### IntelliJ IDEA ###
-.idea
-*.iws
-*.iml
-*.ipr
-
-### NetBeans ###
-/nbproject/private/
-/build/
-/nbbuild/
-/dist/
-/nbdist/
-/.nb-gradle/
\ No newline at end of file
diff --git a/spring-webflux-threads/README.md b/spring-webflux-threads/README.md
index 26013d73e1..279b831a6d 100644
--- a/spring-webflux-threads/README.md
+++ b/spring-webflux-threads/README.md
@@ -1,7 +1,7 @@
 ## Spring WebFlux Concurrency
 
 This module contains articles about concurrency model in Spring WebFlux.
-Please note that this assumes Mongo and Kafka to be running on the local machine on default configurations.
+
 
 ### Relevant Articles: 
 
diff --git a/spring-webflux-threads/src/main/java/com/baeldung/webflux/Application.java b/spring-webflux-threads/src/main/java/com/baeldung/webflux/Application.java
index 1dfa00eae0..6cba90c0f4 100644
--- a/spring-webflux-threads/src/main/java/com/baeldung/webflux/Application.java
+++ b/spring-webflux-threads/src/main/java/com/baeldung/webflux/Application.java
@@ -3,6 +3,9 @@ package com.baeldung.webflux;
 import org.springframework.boot.SpringApplication;
 import org.springframework.boot.autoconfigure.SpringBootApplication;
 
+/**
+* Please note that this assumes Mongo and Kafka to be running on the local machine on default configurations.
+*/
 @SpringBootApplication
 public class Application {
 
diff --git a/spring-webflux-threads/src/main/java/com/baeldung/webflux/Controller.java b/spring-webflux-threads/src/main/java/com/baeldung/webflux/Controller.java
index ec6d7a596b..3c7e4e41ca 100644
--- a/spring-webflux-threads/src/main/java/com/baeldung/webflux/Controller.java
+++ b/spring-webflux-threads/src/main/java/com/baeldung/webflux/Controller.java
@@ -53,31 +53,31 @@ public class Controller {
     @GetMapping("/threads/webclient")
     public Flux<String> getThreadsWebClient() {
         WebClient.create("http://localhost:8080/index")
-            .get()
-            .retrieve()
-            .bodyToMono(String.class)
-            .subscribeOn(scheduler)
-            .publishOn(scheduler)
-            .doOnNext(s -> logger.info("Response: {}", s))
-            .subscribe();
+          .get()
+          .retrieve()
+          .bodyToMono(String.class)
+          .subscribeOn(scheduler)
+          .publishOn(scheduler)
+          .doOnNext(s -> logger.info("Response: {}", s))
+          .subscribe();
         return Flux.fromIterable(getThreads());
     }
 
     @GetMapping("/threads/rxjava")
     public Observable<String> getIndexRxJava() {
         Observable.fromIterable(Arrays.asList("Hello", "World"))
-            .map(s -> s.toUpperCase())
-            .observeOn(io.reactivex.schedulers.Schedulers.trampoline())
-            .doOnNext(s -> logger.info("String: {}", s))
-            .subscribe();
+          .map(s -> s.toUpperCase())
+          .observeOn(io.reactivex.schedulers.Schedulers.trampoline())
+          .doOnNext(s -> logger.info("String: {}", s))
+          .subscribe();
         return Observable.fromIterable(getThreads());
     }
 
     @GetMapping("/threads/mongodb")
     public Flux<String> getIndexMongo() {
         personRepository.findAll()
-            .doOnNext(p -> logger.info("Person: {}", p))
-            .subscribe();
+          .doOnNext(p -> logger.info("Person: {}", p))
+          .subscribe();
         return Flux.fromIterable(getThreads());
     }
 
@@ -90,9 +90,9 @@ public class Controller {
         SenderOptions<Integer, String> senderOptions = SenderOptions.create(producerProps);
         KafkaSender<Integer, String> sender = KafkaSender.create(senderOptions);
         Flux<SenderRecord<Integer, String, Integer>> outboundFlux = Flux.range(1, 10)
-            .map(i -> SenderRecord.create(new ProducerRecord<>("reactive-test", i, "Message_" + i), i));
+          .map(i -> SenderRecord.create(new ProducerRecord<>("reactive-test", i, "Message_" + i), i));
         sender.send(outboundFlux)
-            .subscribe();
+          .subscribe();
 
         Map<String, Object> consumerProps = new HashMap<>();
         consumerProps.put(ConsumerConfig.BOOTSTRAP_SERVERS_CONFIG, "localhost:9092");
@@ -108,7 +108,7 @@ public class Controller {
         inboundFlux.subscribe(r -> {
             logger.info("Received message: {}", r.value());
             r.receiverOffset()
-                .acknowledge();
+              .acknowledge();
         });
         return Flux.fromIterable(getThreads());
     }
@@ -120,9 +120,9 @@ public class Controller {
 
     private List<String> getThreads() {
         return Thread.getAllStackTraces()
-            .keySet()
-            .stream()
-            .map(t -> String.format("%-20s \t %s \t %d \t %s\n", t.getName(), t.getState(), t.getPriority(), t.isDaemon() ? "Daemon" : "Normal"))
-            .collect(Collectors.toList());
+          .keySet()
+          .stream()
+          .map(t -> String.format("%-20s \t %s \t %d \t %s\n", t.getName(), t.getState(), t.getPriority(), t.isDaemon() ? "Daemon" : "Normal"))
+          .collect(Collectors.toList());
     }
 }

From 1ba940679a4a324aa976d2070848f2e8ed8eaaf9 Mon Sep 17 00:00:00 2001
From: mikr <michael.krimgen@ximedes.com>
Date: Sat, 15 Aug 2020 22:18:01 +0200
Subject: [PATCH 119/156] Java-1460 Reduce logging created by the maven-help
 plugin

---
 maven-modules/maven-profiles/pom.xml | 40 +++++++++++++++-------------
 1 file changed, 21 insertions(+), 19 deletions(-)

diff --git a/maven-modules/maven-profiles/pom.xml b/maven-modules/maven-profiles/pom.xml
index 4937bc7c5d..f3aeb9d549 100644
--- a/maven-modules/maven-profiles/pom.xml
+++ b/maven-modules/maven-profiles/pom.xml
@@ -66,27 +66,29 @@
                 </file>
             </activation>
         </profile>
+        <profile>
+            <id>show-active-profiles</id>
+            <build>
+                <plugins>
+                    <plugin>
+                        <groupId>org.apache.maven.plugins</groupId>
+                        <artifactId>maven-help-plugin</artifactId>
+                        <version>${help.plugin.version}</version>
+                        <executions>
+                            <execution>
+                                <id>show-profiles</id>
+                                <phase>compile</phase>
+                                <goals>
+                                    <goal>active-profiles</goal>
+                                </goals>
+                            </execution>
+                        </executions>
+                    </plugin>
+                </plugins>
+            </build>
+        </profile>
     </profiles>
 
-    <build>
-        <plugins>
-            <plugin>
-                <groupId>org.apache.maven.plugins</groupId>
-                <artifactId>maven-help-plugin</artifactId>
-                <version>${help.plugin.version}</version>
-                <executions>
-                    <execution>
-                        <id>show-profiles</id>
-                        <phase>compile</phase>
-                        <goals>
-                            <goal>active-profiles</goal>
-                        </goals>
-                    </execution>
-                </executions>
-            </plugin>
-        </plugins>
-    </build>
-
     <properties>
        <help.plugin.version>3.2.0</help.plugin.version>
     </properties>

From bb34174aeb777da69ef019aefeb9b102d374f35f Mon Sep 17 00:00:00 2001
From: Carlos Grappa <cgrappa@gmail.com>
Date: Sat, 15 Aug 2020 17:59:34 -0300
Subject: [PATCH 120/156] BAEL 2881 (#9639)

* BAEL-4154 IOException Too many open files

* Add comment to explain GC dependency

* Add HPPC, remove Colt & Trove

* Add inplace iterators for fastutil and extra maps for HPPC

Co-authored-by: Carlos Grappa <carlos.grappa@mercadolibre.com>
---
 .../core-java-collections-maps-2/pom.xml      | 14 +---
 .../map/primitives/PrimitiveMaps.java         | 81 +++++++++++++------
 2 files changed, 61 insertions(+), 34 deletions(-)

diff --git a/core-java-modules/core-java-collections-maps-2/pom.xml b/core-java-modules/core-java-collections-maps-2/pom.xml
index a64a11c6ea..7c4ab19945 100644
--- a/core-java-modules/core-java-collections-maps-2/pom.xml
+++ b/core-java-modules/core-java-collections-maps-2/pom.xml
@@ -21,20 +21,15 @@
             <version>${eclipse-collections.version}</version>
         </dependency>
         <dependency>
-            <groupId>net.sf.trove4j</groupId>
-            <artifactId>trove4j</artifactId>
-            <version>${trove4j.version}</version>
+            <groupId>com.carrotsearch</groupId>
+            <artifactId>hppc</artifactId>
+            <version>${hppc.version}</version>
         </dependency>
         <dependency>
             <groupId>it.unimi.dsi</groupId>
             <artifactId>fastutil</artifactId>
             <version>${fastutil.version}</version>
         </dependency>
-        <dependency>
-            <groupId>colt</groupId>
-            <artifactId>colt</artifactId>
-            <version>${colt.version}</version>
-        </dependency>
         <dependency>
             <groupId>org.apache.commons</groupId>
             <artifactId>commons-lang3</artifactId>
@@ -69,9 +64,8 @@
         <commons-collections4.version>4.1</commons-collections4.version>
         <avaitility.version>1.7.0</avaitility.version>
         <eclipse-collections.version>8.2.0</eclipse-collections.version>
-        <trove4j.version>3.0.2</trove4j.version>
+        <hppc.version>0.7.2</hppc.version>
         <fastutil.version>8.1.0</fastutil.version>
-        <colt.version>1.2.0</colt.version>
         <assertj.version>3.11.1</assertj.version>
     </properties>
 
diff --git a/core-java-modules/core-java-collections-maps-2/src/main/java/com/baeldung/map/primitives/PrimitiveMaps.java b/core-java-modules/core-java-collections-maps-2/src/main/java/com/baeldung/map/primitives/PrimitiveMaps.java
index 30bec12ccc..e53290f93a 100644
--- a/core-java-modules/core-java-collections-maps-2/src/main/java/com/baeldung/map/primitives/PrimitiveMaps.java
+++ b/core-java-modules/core-java-collections-maps-2/src/main/java/com/baeldung/map/primitives/PrimitiveMaps.java
@@ -1,29 +1,68 @@
 package com.baeldung.map.primitives;
 
-import cern.colt.map.AbstractIntDoubleMap;
-import cern.colt.map.OpenIntDoubleHashMap;
-import gnu.trove.map.TDoubleIntMap;
-import gnu.trove.map.hash.TDoubleIntHashMap;
+import com.carrotsearch.hppc.IntLongHashMap;
+import com.carrotsearch.hppc.IntLongScatterMap;
+import com.carrotsearch.hppc.IntObjectHashMap;
+import com.carrotsearch.hppc.IntObjectMap;
+import com.carrotsearch.hppc.IntObjectScatterMap;
+
 import it.unimi.dsi.fastutil.ints.Int2BooleanMap;
+import it.unimi.dsi.fastutil.ints.Int2BooleanMaps;
 import it.unimi.dsi.fastutil.ints.Int2BooleanOpenHashMap;
 import it.unimi.dsi.fastutil.ints.Int2BooleanSortedMap;
 import it.unimi.dsi.fastutil.ints.Int2BooleanSortedMaps;
+import it.unimi.dsi.fastutil.objects.ObjectIterator;
+
 import org.eclipse.collections.api.map.primitive.ImmutableIntIntMap;
 import org.eclipse.collections.api.map.primitive.MutableIntIntMap;
 import org.eclipse.collections.api.map.primitive.MutableObjectDoubleMap;
 import org.eclipse.collections.impl.factory.primitive.IntIntMaps;
 import org.eclipse.collections.impl.factory.primitive.ObjectDoubleMaps;
 
+import static java.lang.String.format;
+
+import java.math.BigDecimal;
+
 public class PrimitiveMaps {
 
     public static void main(String[] args) {
 
+        hppcMap();
         eclipseCollectionsMap();
-        troveMap();
-        coltMap();
         fastutilMap();
     }
 
+    private static void hppcMap() {
+        //Regular maps
+        IntLongHashMap intLongHashMap = new IntLongHashMap();
+        intLongHashMap.put(25,1L);
+        intLongHashMap.put(150,Long.MAX_VALUE);
+        intLongHashMap.put(1,0L);
+        
+        intLongHashMap.get(150);
+
+        IntObjectMap<BigDecimal> intObjectMap = new IntObjectHashMap<BigDecimal>();
+        intObjectMap.put(1, BigDecimal.valueOf(1));
+        intObjectMap.put(2, BigDecimal.valueOf(2500));
+
+        BigDecimal value = intObjectMap.get(2);
+
+        //Scatter maps
+        IntLongScatterMap intLongScatterMap = new IntLongScatterMap();
+        intLongScatterMap.put(1, 1L);
+        intLongScatterMap.put(2, -2L);
+        intLongScatterMap.put(1000,0L);    
+
+        intLongScatterMap.get(1000);
+
+        IntObjectScatterMap<BigDecimal> intObjectScatterMap = new IntObjectScatterMap<BigDecimal>();
+        intObjectScatterMap.put(1, BigDecimal.valueOf(1));
+        intObjectScatterMap.put(2, BigDecimal.valueOf(2500));
+
+        value = intObjectScatterMap.get(2);
+    }
+
+
     private static void fastutilMap() {
         Int2BooleanMap int2BooleanMap = new Int2BooleanOpenHashMap();
         int2BooleanMap.put(1, true);
@@ -32,13 +71,19 @@ public class PrimitiveMaps {
 
         boolean value = int2BooleanMap.get(1);
 
-        Int2BooleanSortedMap int2BooleanSorted = Int2BooleanSortedMaps.EMPTY_MAP;
-    }
+        //Lambda style iteration
+        Int2BooleanMaps.fastForEach(int2BooleanMap, entry -> {
+            System.out.println(String.format("Key: %d, Value: %b",entry.getIntKey(),entry.getBooleanValue()));
+        });
+
+        //Iterator based loop
+        ObjectIterator<Int2BooleanMap.Entry> iterator = Int2BooleanMaps.fastIterator(int2BooleanMap);
+        while(iterator.hasNext()) {
+            Int2BooleanMap.Entry entry = iterator.next();
+            System.out.println(String.format("Key: %d, Value: %b",entry.getIntKey(),entry.getBooleanValue()));
+
+        }
 
-    private static void coltMap() {
-        AbstractIntDoubleMap map = new OpenIntDoubleHashMap();
-        map.put(1, 4.5);
-        double value = map.get(1);
     }
 
     private static void eclipseCollectionsMap() {
@@ -53,17 +98,5 @@ public class PrimitiveMaps {
         dObject.addToValue("stability", 0.8);
     }
 
-    private static void troveMap() {
-        double[] doubles = new double[] {1.2, 4.5, 0.3};
-        int[] ints = new int[] {1, 4, 0};
 
-        TDoubleIntMap doubleIntMap = new TDoubleIntHashMap(doubles, ints);
-
-        doubleIntMap.put(1.2, 22);
-        doubleIntMap.put(4.5, 16);
-
-        doubleIntMap.adjustValue(1.2, 1);
-        doubleIntMap.adjustValue(4.5, 4);
-        doubleIntMap.adjustValue(0.3, 7);
-    }
 }

From 44afb00d224caffb9259e1b714dde051a49ae06b Mon Sep 17 00:00:00 2001
From: Dhawal Kapil <dhawalkapil@gmail.com>
Date: Sun, 16 Aug 2020 08:46:46 +0530
Subject: [PATCH 121/156] Update README.md

---
 core-java-modules/core-java/README.md | 20 ++++++++++----------
 1 file changed, 10 insertions(+), 10 deletions(-)

diff --git a/core-java-modules/core-java/README.md b/core-java-modules/core-java/README.md
index 7781382ae5..b0e740e3b5 100644
--- a/core-java-modules/core-java/README.md
+++ b/core-java-modules/core-java/README.md
@@ -1,13 +1,13 @@
 ## Core Java Cookbooks and Examples
 
 ### Relevant Articles: 
-[Getting Started with Java Properties](http://www.baeldung.com/java-properties)
-[Java Money and the Currency API](http://www.baeldung.com/java-money-and-currency)
-[Introduction to Java Serialization](http://www.baeldung.com/java-serialization)
-[Guide to UUID in Java](http://www.baeldung.com/java-uuid)
-[Compiling Java *.class Files with javac](http://www.baeldung.com/javac)
-[Introduction to Javadoc](http://www.baeldung.com/javadoc)
-[Guide to the Externalizable Interface in Java](http://www.baeldung.com/java-externalizable)
-[What is the serialVersionUID?](http://www.baeldung.com/java-serial-version-uid)
-[A Guide to the ResourceBundle](http://www.baeldung.com/java-resourcebundle)
-[Merging java.util.Properties Objects](https://www.baeldung.com/java-merging-properties)
+- [Getting Started with Java Properties](http://www.baeldung.com/java-properties)
+- [Java Money and the Currency API](http://www.baeldung.com/java-money-and-currency)
+- [Introduction to Java Serialization](http://www.baeldung.com/java-serialization)
+- [Guide to UUID in Java](http://www.baeldung.com/java-uuid)
+- [Compiling Java *.class Files with javac](http://www.baeldung.com/javac)
+- [Introduction to Javadoc](http://www.baeldung.com/javadoc)
+- [Guide to the Externalizable Interface in Java](http://www.baeldung.com/java-externalizable)
+- [What is the serialVersionUID?](http://www.baeldung.com/java-serial-version-uid)
+- [A Guide to the ResourceBundle](http://www.baeldung.com/java-resourcebundle)
+- [Merging java.util.Properties Objects](https://www.baeldung.com/java-merging-properties)

From 1e96de4b6417fb73b1413807bcb2a99584ab19cd Mon Sep 17 00:00:00 2001
From: Ankur Gupta <ankurguptajec@gmail.com>
Date: Sun, 16 Aug 2020 13:35:04 +0530
Subject: [PATCH 122/156] Update pom.xml

Adding spring-data-cosmosdb module in the persistence module
---
 persistence-modules/pom.xml | 1 +
 1 file changed, 1 insertion(+)

diff --git a/persistence-modules/pom.xml b/persistence-modules/pom.xml
index f1154f203b..8544a5cef4 100644
--- a/persistence-modules/pom.xml
+++ b/persistence-modules/pom.xml
@@ -53,6 +53,7 @@
         <module>spring-boot-persistence-mongodb</module>
         <module>spring-data-cassandra</module>
         <module>spring-data-cassandra-reactive</module>
+             <module>spring-data-cosmosdb</module>
         <module>spring-data-couchbase-2</module>
         <module>spring-data-dynamodb</module>
         <module>spring-data-eclipselink</module>

From 5eefa6b148b318378552ab24d4134cd97b84591c Mon Sep 17 00:00:00 2001
From: Ankur Gupta <ankurguptajec@gmail.com>
Date: Sun, 16 Aug 2020 13:36:23 +0530
Subject: [PATCH 123/156] Update pom.xml

removing extra spaces
---
 persistence-modules/pom.xml | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/persistence-modules/pom.xml b/persistence-modules/pom.xml
index 8544a5cef4..a9d3c89604 100644
--- a/persistence-modules/pom.xml
+++ b/persistence-modules/pom.xml
@@ -53,7 +53,7 @@
         <module>spring-boot-persistence-mongodb</module>
         <module>spring-data-cassandra</module>
         <module>spring-data-cassandra-reactive</module>
-             <module>spring-data-cosmosdb</module>
+        <module>spring-data-cosmosdb</module>
         <module>spring-data-couchbase-2</module>
         <module>spring-data-dynamodb</module>
         <module>spring-data-eclipselink</module>

From ecaa8db1421fc0af794b983c309b35fe16adf6b4 Mon Sep 17 00:00:00 2001
From: sampadawagde <sampada.wagde@gmail.com>
Date: Sun, 16 Aug 2020 16:30:53 +0530
Subject: [PATCH 124/156] JAVA-68: Renamed spring-security-mvc-jsonview to
 spring-security-web-jsonview

---
 .../.gitignore                                                | 0
 .../README.md                                                 | 0
 .../pom.xml                                                   | 4 ++--
 .../src/main/java/com/baeldung/AppInitializer.java            | 0
 .../main/java/com/baeldung/controller/ItemsController.java    | 0
 .../src/main/java/com/baeldung/controller/View.java           | 0
 .../src/main/java/com/baeldung/model/Item.java                | 0
 .../src/main/java/com/baeldung/spring/AppConfig.java          | 0
 .../com/baeldung/spring/SecurityJsonViewControllerAdvice.java | 0
 .../src/main/resources/logback.xml                            | 0
 .../src/test/java/com/baeldung/SpringContextTest.java         | 0
 .../security/SpringSecurityJsonViewIntegrationTest.java       | 0
 12 files changed, 2 insertions(+), 2 deletions(-)
 rename spring-security-modules/{spring-security-mvc-jsonview => spring-security-web-jsonview}/.gitignore (100%)
 rename spring-security-modules/{spring-security-mvc-jsonview => spring-security-web-jsonview}/README.md (100%)
 rename spring-security-modules/{spring-security-mvc-jsonview => spring-security-web-jsonview}/pom.xml (98%)
 rename spring-security-modules/{spring-security-mvc-jsonview => spring-security-web-jsonview}/src/main/java/com/baeldung/AppInitializer.java (100%)
 rename spring-security-modules/{spring-security-mvc-jsonview => spring-security-web-jsonview}/src/main/java/com/baeldung/controller/ItemsController.java (100%)
 rename spring-security-modules/{spring-security-mvc-jsonview => spring-security-web-jsonview}/src/main/java/com/baeldung/controller/View.java (100%)
 rename spring-security-modules/{spring-security-mvc-jsonview => spring-security-web-jsonview}/src/main/java/com/baeldung/model/Item.java (100%)
 rename spring-security-modules/{spring-security-mvc-jsonview => spring-security-web-jsonview}/src/main/java/com/baeldung/spring/AppConfig.java (100%)
 rename spring-security-modules/{spring-security-mvc-jsonview => spring-security-web-jsonview}/src/main/java/com/baeldung/spring/SecurityJsonViewControllerAdvice.java (100%)
 rename spring-security-modules/{spring-security-mvc-jsonview => spring-security-web-jsonview}/src/main/resources/logback.xml (100%)
 rename spring-security-modules/{spring-security-mvc-jsonview => spring-security-web-jsonview}/src/test/java/com/baeldung/SpringContextTest.java (100%)
 rename spring-security-modules/{spring-security-mvc-jsonview => spring-security-web-jsonview}/src/test/java/com/baeldung/security/SpringSecurityJsonViewIntegrationTest.java (100%)

diff --git a/spring-security-modules/spring-security-mvc-jsonview/.gitignore b/spring-security-modules/spring-security-web-jsonview/.gitignore
similarity index 100%
rename from spring-security-modules/spring-security-mvc-jsonview/.gitignore
rename to spring-security-modules/spring-security-web-jsonview/.gitignore
diff --git a/spring-security-modules/spring-security-mvc-jsonview/README.md b/spring-security-modules/spring-security-web-jsonview/README.md
similarity index 100%
rename from spring-security-modules/spring-security-mvc-jsonview/README.md
rename to spring-security-modules/spring-security-web-jsonview/README.md
diff --git a/spring-security-modules/spring-security-mvc-jsonview/pom.xml b/spring-security-modules/spring-security-web-jsonview/pom.xml
similarity index 98%
rename from spring-security-modules/spring-security-mvc-jsonview/pom.xml
rename to spring-security-modules/spring-security-web-jsonview/pom.xml
index f6ba997c62..0d1b0b09db 100644
--- a/spring-security-modules/spring-security-mvc-jsonview/pom.xml
+++ b/spring-security-modules/spring-security-web-jsonview/pom.xml
@@ -2,9 +2,9 @@
 <project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
          xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
     <modelVersion>4.0.0</modelVersion>
-    <artifactId>spring-security-mvc-jsonview</artifactId>
+    <artifactId>spring-security-web-jsonview</artifactId>
     <version>0.1-SNAPSHOT</version>
-    <name>spring-security-mvc-jsonview</name>
+    <name>spring-security-web-jsonview</name>
     <packaging>war</packaging>
 
     <parent>
diff --git a/spring-security-modules/spring-security-mvc-jsonview/src/main/java/com/baeldung/AppInitializer.java b/spring-security-modules/spring-security-web-jsonview/src/main/java/com/baeldung/AppInitializer.java
similarity index 100%
rename from spring-security-modules/spring-security-mvc-jsonview/src/main/java/com/baeldung/AppInitializer.java
rename to spring-security-modules/spring-security-web-jsonview/src/main/java/com/baeldung/AppInitializer.java
diff --git a/spring-security-modules/spring-security-mvc-jsonview/src/main/java/com/baeldung/controller/ItemsController.java b/spring-security-modules/spring-security-web-jsonview/src/main/java/com/baeldung/controller/ItemsController.java
similarity index 100%
rename from spring-security-modules/spring-security-mvc-jsonview/src/main/java/com/baeldung/controller/ItemsController.java
rename to spring-security-modules/spring-security-web-jsonview/src/main/java/com/baeldung/controller/ItemsController.java
diff --git a/spring-security-modules/spring-security-mvc-jsonview/src/main/java/com/baeldung/controller/View.java b/spring-security-modules/spring-security-web-jsonview/src/main/java/com/baeldung/controller/View.java
similarity index 100%
rename from spring-security-modules/spring-security-mvc-jsonview/src/main/java/com/baeldung/controller/View.java
rename to spring-security-modules/spring-security-web-jsonview/src/main/java/com/baeldung/controller/View.java
diff --git a/spring-security-modules/spring-security-mvc-jsonview/src/main/java/com/baeldung/model/Item.java b/spring-security-modules/spring-security-web-jsonview/src/main/java/com/baeldung/model/Item.java
similarity index 100%
rename from spring-security-modules/spring-security-mvc-jsonview/src/main/java/com/baeldung/model/Item.java
rename to spring-security-modules/spring-security-web-jsonview/src/main/java/com/baeldung/model/Item.java
diff --git a/spring-security-modules/spring-security-mvc-jsonview/src/main/java/com/baeldung/spring/AppConfig.java b/spring-security-modules/spring-security-web-jsonview/src/main/java/com/baeldung/spring/AppConfig.java
similarity index 100%
rename from spring-security-modules/spring-security-mvc-jsonview/src/main/java/com/baeldung/spring/AppConfig.java
rename to spring-security-modules/spring-security-web-jsonview/src/main/java/com/baeldung/spring/AppConfig.java
diff --git a/spring-security-modules/spring-security-mvc-jsonview/src/main/java/com/baeldung/spring/SecurityJsonViewControllerAdvice.java b/spring-security-modules/spring-security-web-jsonview/src/main/java/com/baeldung/spring/SecurityJsonViewControllerAdvice.java
similarity index 100%
rename from spring-security-modules/spring-security-mvc-jsonview/src/main/java/com/baeldung/spring/SecurityJsonViewControllerAdvice.java
rename to spring-security-modules/spring-security-web-jsonview/src/main/java/com/baeldung/spring/SecurityJsonViewControllerAdvice.java
diff --git a/spring-security-modules/spring-security-mvc-jsonview/src/main/resources/logback.xml b/spring-security-modules/spring-security-web-jsonview/src/main/resources/logback.xml
similarity index 100%
rename from spring-security-modules/spring-security-mvc-jsonview/src/main/resources/logback.xml
rename to spring-security-modules/spring-security-web-jsonview/src/main/resources/logback.xml
diff --git a/spring-security-modules/spring-security-mvc-jsonview/src/test/java/com/baeldung/SpringContextTest.java b/spring-security-modules/spring-security-web-jsonview/src/test/java/com/baeldung/SpringContextTest.java
similarity index 100%
rename from spring-security-modules/spring-security-mvc-jsonview/src/test/java/com/baeldung/SpringContextTest.java
rename to spring-security-modules/spring-security-web-jsonview/src/test/java/com/baeldung/SpringContextTest.java
diff --git a/spring-security-modules/spring-security-mvc-jsonview/src/test/java/com/baeldung/security/SpringSecurityJsonViewIntegrationTest.java b/spring-security-modules/spring-security-web-jsonview/src/test/java/com/baeldung/security/SpringSecurityJsonViewIntegrationTest.java
similarity index 100%
rename from spring-security-modules/spring-security-mvc-jsonview/src/test/java/com/baeldung/security/SpringSecurityJsonViewIntegrationTest.java
rename to spring-security-modules/spring-security-web-jsonview/src/test/java/com/baeldung/security/SpringSecurityJsonViewIntegrationTest.java

From 3e193877e67b849c8c7c587e86e1916d925b1fb9 Mon Sep 17 00:00:00 2001
From: sampadawagde <sampada.wagde@gmail.com>
Date: Sun, 16 Aug 2020 16:31:42 +0530
Subject: [PATCH 125/156] JAVA-68: Renamed spring-security-mvc-login to
 spring-security-web-login

---
 .../.gitignore                                                | 0
 .../README.md                                                 | 0
 .../pom.xml                                                   | 4 ++--
 .../src/main/java/com/baeldung/AppInitializer.java            | 0
 .../com/baeldung/controller/SecuredResourceController.java    | 0
 .../java/com/baeldung/security/CustomAccessDeniedHandler.java | 0
 .../baeldung/security/CustomAuthenticationFailureHandler.java | 0
 .../com/baeldung/security/CustomLogoutSuccessHandler.java     | 0
 .../security/RefererAuthenticationSuccessHandler.java         | 0
 .../java/com/baeldung/security/config/SecSecurityConfig.java  | 0
 .../java/com/baeldung/spring/ChannelSecSecurityConfig.java    | 0
 .../src/main/java/com/baeldung/spring/MvcConfig.java          | 0
 .../java/com/baeldung/spring/RedirectionSecurityConfig.java   | 0
 .../src/main/resources/RedirectionWebSecurityConfig.xml       | 0
 .../src/main/resources/channelWebSecurityConfig.xml           | 0
 .../src/main/resources/logback.xml                            | 0
 .../src/main/resources/webSecurityConfig.xml                  | 0
 .../src/main/webapp/WEB-INF/mvc-servlet.xml                   | 0
 .../src/main/webapp/WEB-INF/view/accessDenied.jsp             | 0
 .../src/main/webapp/WEB-INF/view/admin/adminpage.jsp          | 0
 .../src/main/webapp/WEB-INF/view/anonymous.jsp                | 0
 .../src/main/webapp/WEB-INF/view/homepage.jsp                 | 0
 .../src/main/webapp/WEB-INF/view/login.jsp                    | 0
 .../src/main/webapp/WEB-INF/web-old.xml                       | 0
 .../src/test/java/com/baeldung/SpringContextTest.java         | 0
 .../test/java/com/baeldung/security/FormLoginUnitTest.java    | 0
 .../baeldung/security/RedirectionSecurityIntegrationTest.java | 0
 .../src/test/resources/.gitignore                             | 0
 28 files changed, 2 insertions(+), 2 deletions(-)
 rename spring-security-modules/{spring-security-mvc-login => spring-security-web-login}/.gitignore (100%)
 rename spring-security-modules/{spring-security-mvc-login => spring-security-web-login}/README.md (100%)
 rename spring-security-modules/{spring-security-mvc-login => spring-security-web-login}/pom.xml (98%)
 rename spring-security-modules/{spring-security-mvc-login => spring-security-web-login}/src/main/java/com/baeldung/AppInitializer.java (100%)
 rename spring-security-modules/{spring-security-mvc-login => spring-security-web-login}/src/main/java/com/baeldung/controller/SecuredResourceController.java (100%)
 rename spring-security-modules/{spring-security-mvc-login => spring-security-web-login}/src/main/java/com/baeldung/security/CustomAccessDeniedHandler.java (100%)
 rename spring-security-modules/{spring-security-mvc-login => spring-security-web-login}/src/main/java/com/baeldung/security/CustomAuthenticationFailureHandler.java (100%)
 rename spring-security-modules/{spring-security-mvc-login => spring-security-web-login}/src/main/java/com/baeldung/security/CustomLogoutSuccessHandler.java (100%)
 rename spring-security-modules/{spring-security-mvc-login => spring-security-web-login}/src/main/java/com/baeldung/security/RefererAuthenticationSuccessHandler.java (100%)
 rename spring-security-modules/{spring-security-mvc-login => spring-security-web-login}/src/main/java/com/baeldung/security/config/SecSecurityConfig.java (100%)
 rename spring-security-modules/{spring-security-mvc-login => spring-security-web-login}/src/main/java/com/baeldung/spring/ChannelSecSecurityConfig.java (100%)
 rename spring-security-modules/{spring-security-mvc-login => spring-security-web-login}/src/main/java/com/baeldung/spring/MvcConfig.java (100%)
 rename spring-security-modules/{spring-security-mvc-login => spring-security-web-login}/src/main/java/com/baeldung/spring/RedirectionSecurityConfig.java (100%)
 rename spring-security-modules/{spring-security-mvc-login => spring-security-web-login}/src/main/resources/RedirectionWebSecurityConfig.xml (100%)
 rename spring-security-modules/{spring-security-mvc-login => spring-security-web-login}/src/main/resources/channelWebSecurityConfig.xml (100%)
 rename spring-security-modules/{spring-security-mvc-login => spring-security-web-login}/src/main/resources/logback.xml (100%)
 rename spring-security-modules/{spring-security-mvc-login => spring-security-web-login}/src/main/resources/webSecurityConfig.xml (100%)
 rename spring-security-modules/{spring-security-mvc-login => spring-security-web-login}/src/main/webapp/WEB-INF/mvc-servlet.xml (100%)
 rename spring-security-modules/{spring-security-mvc-login => spring-security-web-login}/src/main/webapp/WEB-INF/view/accessDenied.jsp (100%)
 rename spring-security-modules/{spring-security-mvc-login => spring-security-web-login}/src/main/webapp/WEB-INF/view/admin/adminpage.jsp (100%)
 rename spring-security-modules/{spring-security-mvc-login => spring-security-web-login}/src/main/webapp/WEB-INF/view/anonymous.jsp (100%)
 rename spring-security-modules/{spring-security-mvc-login => spring-security-web-login}/src/main/webapp/WEB-INF/view/homepage.jsp (100%)
 rename spring-security-modules/{spring-security-mvc-login => spring-security-web-login}/src/main/webapp/WEB-INF/view/login.jsp (100%)
 rename spring-security-modules/{spring-security-mvc-login => spring-security-web-login}/src/main/webapp/WEB-INF/web-old.xml (100%)
 rename spring-security-modules/{spring-security-mvc-login => spring-security-web-login}/src/test/java/com/baeldung/SpringContextTest.java (100%)
 rename spring-security-modules/{spring-security-mvc-login => spring-security-web-login}/src/test/java/com/baeldung/security/FormLoginUnitTest.java (100%)
 rename spring-security-modules/{spring-security-mvc-login => spring-security-web-login}/src/test/java/com/baeldung/security/RedirectionSecurityIntegrationTest.java (100%)
 rename spring-security-modules/{spring-security-mvc-login => spring-security-web-login}/src/test/resources/.gitignore (100%)

diff --git a/spring-security-modules/spring-security-mvc-login/.gitignore b/spring-security-modules/spring-security-web-login/.gitignore
similarity index 100%
rename from spring-security-modules/spring-security-mvc-login/.gitignore
rename to spring-security-modules/spring-security-web-login/.gitignore
diff --git a/spring-security-modules/spring-security-mvc-login/README.md b/spring-security-modules/spring-security-web-login/README.md
similarity index 100%
rename from spring-security-modules/spring-security-mvc-login/README.md
rename to spring-security-modules/spring-security-web-login/README.md
diff --git a/spring-security-modules/spring-security-mvc-login/pom.xml b/spring-security-modules/spring-security-web-login/pom.xml
similarity index 98%
rename from spring-security-modules/spring-security-mvc-login/pom.xml
rename to spring-security-modules/spring-security-web-login/pom.xml
index 4e0fe00176..2b64d157d3 100644
--- a/spring-security-modules/spring-security-mvc-login/pom.xml
+++ b/spring-security-modules/spring-security-web-login/pom.xml
@@ -2,9 +2,9 @@
 <project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
     xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
     <modelVersion>4.0.0</modelVersion>
-    <artifactId>spring-security-mvc-login</artifactId>
+    <artifactId>spring-security-web-login</artifactId>
     <version>0.1-SNAPSHOT</version>
-    <name>spring-security-mvc-login</name>
+    <name>spring-security-web-login</name>
     <packaging>war</packaging>
 
     <parent>
diff --git a/spring-security-modules/spring-security-mvc-login/src/main/java/com/baeldung/AppInitializer.java b/spring-security-modules/spring-security-web-login/src/main/java/com/baeldung/AppInitializer.java
similarity index 100%
rename from spring-security-modules/spring-security-mvc-login/src/main/java/com/baeldung/AppInitializer.java
rename to spring-security-modules/spring-security-web-login/src/main/java/com/baeldung/AppInitializer.java
diff --git a/spring-security-modules/spring-security-mvc-login/src/main/java/com/baeldung/controller/SecuredResourceController.java b/spring-security-modules/spring-security-web-login/src/main/java/com/baeldung/controller/SecuredResourceController.java
similarity index 100%
rename from spring-security-modules/spring-security-mvc-login/src/main/java/com/baeldung/controller/SecuredResourceController.java
rename to spring-security-modules/spring-security-web-login/src/main/java/com/baeldung/controller/SecuredResourceController.java
diff --git a/spring-security-modules/spring-security-mvc-login/src/main/java/com/baeldung/security/CustomAccessDeniedHandler.java b/spring-security-modules/spring-security-web-login/src/main/java/com/baeldung/security/CustomAccessDeniedHandler.java
similarity index 100%
rename from spring-security-modules/spring-security-mvc-login/src/main/java/com/baeldung/security/CustomAccessDeniedHandler.java
rename to spring-security-modules/spring-security-web-login/src/main/java/com/baeldung/security/CustomAccessDeniedHandler.java
diff --git a/spring-security-modules/spring-security-mvc-login/src/main/java/com/baeldung/security/CustomAuthenticationFailureHandler.java b/spring-security-modules/spring-security-web-login/src/main/java/com/baeldung/security/CustomAuthenticationFailureHandler.java
similarity index 100%
rename from spring-security-modules/spring-security-mvc-login/src/main/java/com/baeldung/security/CustomAuthenticationFailureHandler.java
rename to spring-security-modules/spring-security-web-login/src/main/java/com/baeldung/security/CustomAuthenticationFailureHandler.java
diff --git a/spring-security-modules/spring-security-mvc-login/src/main/java/com/baeldung/security/CustomLogoutSuccessHandler.java b/spring-security-modules/spring-security-web-login/src/main/java/com/baeldung/security/CustomLogoutSuccessHandler.java
similarity index 100%
rename from spring-security-modules/spring-security-mvc-login/src/main/java/com/baeldung/security/CustomLogoutSuccessHandler.java
rename to spring-security-modules/spring-security-web-login/src/main/java/com/baeldung/security/CustomLogoutSuccessHandler.java
diff --git a/spring-security-modules/spring-security-mvc-login/src/main/java/com/baeldung/security/RefererAuthenticationSuccessHandler.java b/spring-security-modules/spring-security-web-login/src/main/java/com/baeldung/security/RefererAuthenticationSuccessHandler.java
similarity index 100%
rename from spring-security-modules/spring-security-mvc-login/src/main/java/com/baeldung/security/RefererAuthenticationSuccessHandler.java
rename to spring-security-modules/spring-security-web-login/src/main/java/com/baeldung/security/RefererAuthenticationSuccessHandler.java
diff --git a/spring-security-modules/spring-security-mvc-login/src/main/java/com/baeldung/security/config/SecSecurityConfig.java b/spring-security-modules/spring-security-web-login/src/main/java/com/baeldung/security/config/SecSecurityConfig.java
similarity index 100%
rename from spring-security-modules/spring-security-mvc-login/src/main/java/com/baeldung/security/config/SecSecurityConfig.java
rename to spring-security-modules/spring-security-web-login/src/main/java/com/baeldung/security/config/SecSecurityConfig.java
diff --git a/spring-security-modules/spring-security-mvc-login/src/main/java/com/baeldung/spring/ChannelSecSecurityConfig.java b/spring-security-modules/spring-security-web-login/src/main/java/com/baeldung/spring/ChannelSecSecurityConfig.java
similarity index 100%
rename from spring-security-modules/spring-security-mvc-login/src/main/java/com/baeldung/spring/ChannelSecSecurityConfig.java
rename to spring-security-modules/spring-security-web-login/src/main/java/com/baeldung/spring/ChannelSecSecurityConfig.java
diff --git a/spring-security-modules/spring-security-mvc-login/src/main/java/com/baeldung/spring/MvcConfig.java b/spring-security-modules/spring-security-web-login/src/main/java/com/baeldung/spring/MvcConfig.java
similarity index 100%
rename from spring-security-modules/spring-security-mvc-login/src/main/java/com/baeldung/spring/MvcConfig.java
rename to spring-security-modules/spring-security-web-login/src/main/java/com/baeldung/spring/MvcConfig.java
diff --git a/spring-security-modules/spring-security-mvc-login/src/main/java/com/baeldung/spring/RedirectionSecurityConfig.java b/spring-security-modules/spring-security-web-login/src/main/java/com/baeldung/spring/RedirectionSecurityConfig.java
similarity index 100%
rename from spring-security-modules/spring-security-mvc-login/src/main/java/com/baeldung/spring/RedirectionSecurityConfig.java
rename to spring-security-modules/spring-security-web-login/src/main/java/com/baeldung/spring/RedirectionSecurityConfig.java
diff --git a/spring-security-modules/spring-security-mvc-login/src/main/resources/RedirectionWebSecurityConfig.xml b/spring-security-modules/spring-security-web-login/src/main/resources/RedirectionWebSecurityConfig.xml
similarity index 100%
rename from spring-security-modules/spring-security-mvc-login/src/main/resources/RedirectionWebSecurityConfig.xml
rename to spring-security-modules/spring-security-web-login/src/main/resources/RedirectionWebSecurityConfig.xml
diff --git a/spring-security-modules/spring-security-mvc-login/src/main/resources/channelWebSecurityConfig.xml b/spring-security-modules/spring-security-web-login/src/main/resources/channelWebSecurityConfig.xml
similarity index 100%
rename from spring-security-modules/spring-security-mvc-login/src/main/resources/channelWebSecurityConfig.xml
rename to spring-security-modules/spring-security-web-login/src/main/resources/channelWebSecurityConfig.xml
diff --git a/spring-security-modules/spring-security-mvc-login/src/main/resources/logback.xml b/spring-security-modules/spring-security-web-login/src/main/resources/logback.xml
similarity index 100%
rename from spring-security-modules/spring-security-mvc-login/src/main/resources/logback.xml
rename to spring-security-modules/spring-security-web-login/src/main/resources/logback.xml
diff --git a/spring-security-modules/spring-security-mvc-login/src/main/resources/webSecurityConfig.xml b/spring-security-modules/spring-security-web-login/src/main/resources/webSecurityConfig.xml
similarity index 100%
rename from spring-security-modules/spring-security-mvc-login/src/main/resources/webSecurityConfig.xml
rename to spring-security-modules/spring-security-web-login/src/main/resources/webSecurityConfig.xml
diff --git a/spring-security-modules/spring-security-mvc-login/src/main/webapp/WEB-INF/mvc-servlet.xml b/spring-security-modules/spring-security-web-login/src/main/webapp/WEB-INF/mvc-servlet.xml
similarity index 100%
rename from spring-security-modules/spring-security-mvc-login/src/main/webapp/WEB-INF/mvc-servlet.xml
rename to spring-security-modules/spring-security-web-login/src/main/webapp/WEB-INF/mvc-servlet.xml
diff --git a/spring-security-modules/spring-security-mvc-login/src/main/webapp/WEB-INF/view/accessDenied.jsp b/spring-security-modules/spring-security-web-login/src/main/webapp/WEB-INF/view/accessDenied.jsp
similarity index 100%
rename from spring-security-modules/spring-security-mvc-login/src/main/webapp/WEB-INF/view/accessDenied.jsp
rename to spring-security-modules/spring-security-web-login/src/main/webapp/WEB-INF/view/accessDenied.jsp
diff --git a/spring-security-modules/spring-security-mvc-login/src/main/webapp/WEB-INF/view/admin/adminpage.jsp b/spring-security-modules/spring-security-web-login/src/main/webapp/WEB-INF/view/admin/adminpage.jsp
similarity index 100%
rename from spring-security-modules/spring-security-mvc-login/src/main/webapp/WEB-INF/view/admin/adminpage.jsp
rename to spring-security-modules/spring-security-web-login/src/main/webapp/WEB-INF/view/admin/adminpage.jsp
diff --git a/spring-security-modules/spring-security-mvc-login/src/main/webapp/WEB-INF/view/anonymous.jsp b/spring-security-modules/spring-security-web-login/src/main/webapp/WEB-INF/view/anonymous.jsp
similarity index 100%
rename from spring-security-modules/spring-security-mvc-login/src/main/webapp/WEB-INF/view/anonymous.jsp
rename to spring-security-modules/spring-security-web-login/src/main/webapp/WEB-INF/view/anonymous.jsp
diff --git a/spring-security-modules/spring-security-mvc-login/src/main/webapp/WEB-INF/view/homepage.jsp b/spring-security-modules/spring-security-web-login/src/main/webapp/WEB-INF/view/homepage.jsp
similarity index 100%
rename from spring-security-modules/spring-security-mvc-login/src/main/webapp/WEB-INF/view/homepage.jsp
rename to spring-security-modules/spring-security-web-login/src/main/webapp/WEB-INF/view/homepage.jsp
diff --git a/spring-security-modules/spring-security-mvc-login/src/main/webapp/WEB-INF/view/login.jsp b/spring-security-modules/spring-security-web-login/src/main/webapp/WEB-INF/view/login.jsp
similarity index 100%
rename from spring-security-modules/spring-security-mvc-login/src/main/webapp/WEB-INF/view/login.jsp
rename to spring-security-modules/spring-security-web-login/src/main/webapp/WEB-INF/view/login.jsp
diff --git a/spring-security-modules/spring-security-mvc-login/src/main/webapp/WEB-INF/web-old.xml b/spring-security-modules/spring-security-web-login/src/main/webapp/WEB-INF/web-old.xml
similarity index 100%
rename from spring-security-modules/spring-security-mvc-login/src/main/webapp/WEB-INF/web-old.xml
rename to spring-security-modules/spring-security-web-login/src/main/webapp/WEB-INF/web-old.xml
diff --git a/spring-security-modules/spring-security-mvc-login/src/test/java/com/baeldung/SpringContextTest.java b/spring-security-modules/spring-security-web-login/src/test/java/com/baeldung/SpringContextTest.java
similarity index 100%
rename from spring-security-modules/spring-security-mvc-login/src/test/java/com/baeldung/SpringContextTest.java
rename to spring-security-modules/spring-security-web-login/src/test/java/com/baeldung/SpringContextTest.java
diff --git a/spring-security-modules/spring-security-mvc-login/src/test/java/com/baeldung/security/FormLoginUnitTest.java b/spring-security-modules/spring-security-web-login/src/test/java/com/baeldung/security/FormLoginUnitTest.java
similarity index 100%
rename from spring-security-modules/spring-security-mvc-login/src/test/java/com/baeldung/security/FormLoginUnitTest.java
rename to spring-security-modules/spring-security-web-login/src/test/java/com/baeldung/security/FormLoginUnitTest.java
diff --git a/spring-security-modules/spring-security-mvc-login/src/test/java/com/baeldung/security/RedirectionSecurityIntegrationTest.java b/spring-security-modules/spring-security-web-login/src/test/java/com/baeldung/security/RedirectionSecurityIntegrationTest.java
similarity index 100%
rename from spring-security-modules/spring-security-mvc-login/src/test/java/com/baeldung/security/RedirectionSecurityIntegrationTest.java
rename to spring-security-modules/spring-security-web-login/src/test/java/com/baeldung/security/RedirectionSecurityIntegrationTest.java
diff --git a/spring-security-modules/spring-security-mvc-login/src/test/resources/.gitignore b/spring-security-modules/spring-security-web-login/src/test/resources/.gitignore
similarity index 100%
rename from spring-security-modules/spring-security-mvc-login/src/test/resources/.gitignore
rename to spring-security-modules/spring-security-web-login/src/test/resources/.gitignore

From f645cac5d6b05d52a8feb61b3a487abe689819fa Mon Sep 17 00:00:00 2001
From: sampadawagde <sampada.wagde@gmail.com>
Date: Sun, 16 Aug 2020 16:32:25 +0530
Subject: [PATCH 126/156] JAVA-68: Renamed
 spring-security-mvc-persisted-remember-me to
 spring-security-web-persisted-remember-me

---
 .../.gitignore                                                | 0
 .../README.md                                                 | 0
 .../pom.xml                                                   | 4 ++--
 .../src/main/java/com/baeldung/controller/MyController.java   | 0
 .../security/MySimpleUrlAuthenticationSuccessHandler.java     | 0
 .../src/main/java/com/baeldung/security/SecurityRole.java     | 0
 .../baeldung/security/SecurityWebApplicationInitializer.java  | 0
 .../main/java/com/baeldung/service/MyUserDetailsService.java  | 0
 .../src/main/java/com/baeldung/spring/MvcConfig.java          | 0
 .../src/main/java/com/baeldung/spring/PersistenceConfig.java  | 0
 .../src/main/java/com/baeldung/spring/SecurityConfig.java     | 0
 .../src/main/resources/logback.xml                            | 0
 .../src/main/resources/persisted_logins_create_table.sql      | 0
 .../src/main/resources/persistence-h2.properties              | 0
 .../src/main/resources/persistence-postgres.properties        | 0
 .../src/main/resources/webSecurityConfig.xml                  | 0
 .../src/main/webapp/WEB-INF/mvc-servlet.xml                   | 0
 .../src/main/webapp/WEB-INF/view/anonymous.jsp                | 0
 .../src/main/webapp/WEB-INF/view/console.jsp                  | 0
 .../src/main/webapp/WEB-INF/view/homepage.jsp                 | 0
 .../src/main/webapp/WEB-INF/view/login.jsp                    | 0
 .../src/main/webapp/WEB-INF/web.xml                           | 0
 .../src/test/java/com/baeldung/SpringContextTest.java         | 0
 .../src/test/resources/.gitignore                             | 0
 24 files changed, 2 insertions(+), 2 deletions(-)
 rename spring-security-modules/{spring-security-mvc-persisted-remember-me => spring-security-web-persisted-remember-me}/.gitignore (100%)
 rename spring-security-modules/{spring-security-mvc-persisted-remember-me => spring-security-web-persisted-remember-me}/README.md (100%)
 rename spring-security-modules/{spring-security-mvc-persisted-remember-me => spring-security-web-persisted-remember-me}/pom.xml (98%)
 rename spring-security-modules/{spring-security-mvc-persisted-remember-me => spring-security-web-persisted-remember-me}/src/main/java/com/baeldung/controller/MyController.java (100%)
 rename spring-security-modules/{spring-security-mvc-persisted-remember-me => spring-security-web-persisted-remember-me}/src/main/java/com/baeldung/security/MySimpleUrlAuthenticationSuccessHandler.java (100%)
 rename spring-security-modules/{spring-security-mvc-persisted-remember-me => spring-security-web-persisted-remember-me}/src/main/java/com/baeldung/security/SecurityRole.java (100%)
 rename spring-security-modules/{spring-security-mvc-persisted-remember-me => spring-security-web-persisted-remember-me}/src/main/java/com/baeldung/security/SecurityWebApplicationInitializer.java (100%)
 rename spring-security-modules/{spring-security-mvc-persisted-remember-me => spring-security-web-persisted-remember-me}/src/main/java/com/baeldung/service/MyUserDetailsService.java (100%)
 rename spring-security-modules/{spring-security-mvc-persisted-remember-me => spring-security-web-persisted-remember-me}/src/main/java/com/baeldung/spring/MvcConfig.java (100%)
 rename spring-security-modules/{spring-security-mvc-persisted-remember-me => spring-security-web-persisted-remember-me}/src/main/java/com/baeldung/spring/PersistenceConfig.java (100%)
 rename spring-security-modules/{spring-security-mvc-persisted-remember-me => spring-security-web-persisted-remember-me}/src/main/java/com/baeldung/spring/SecurityConfig.java (100%)
 rename spring-security-modules/{spring-security-mvc-persisted-remember-me => spring-security-web-persisted-remember-me}/src/main/resources/logback.xml (100%)
 rename spring-security-modules/{spring-security-mvc-persisted-remember-me => spring-security-web-persisted-remember-me}/src/main/resources/persisted_logins_create_table.sql (100%)
 rename spring-security-modules/{spring-security-mvc-persisted-remember-me => spring-security-web-persisted-remember-me}/src/main/resources/persistence-h2.properties (100%)
 rename spring-security-modules/{spring-security-mvc-persisted-remember-me => spring-security-web-persisted-remember-me}/src/main/resources/persistence-postgres.properties (100%)
 rename spring-security-modules/{spring-security-mvc-persisted-remember-me => spring-security-web-persisted-remember-me}/src/main/resources/webSecurityConfig.xml (100%)
 rename spring-security-modules/{spring-security-mvc-persisted-remember-me => spring-security-web-persisted-remember-me}/src/main/webapp/WEB-INF/mvc-servlet.xml (100%)
 rename spring-security-modules/{spring-security-mvc-persisted-remember-me => spring-security-web-persisted-remember-me}/src/main/webapp/WEB-INF/view/anonymous.jsp (100%)
 rename spring-security-modules/{spring-security-mvc-persisted-remember-me => spring-security-web-persisted-remember-me}/src/main/webapp/WEB-INF/view/console.jsp (100%)
 rename spring-security-modules/{spring-security-mvc-persisted-remember-me => spring-security-web-persisted-remember-me}/src/main/webapp/WEB-INF/view/homepage.jsp (100%)
 rename spring-security-modules/{spring-security-mvc-persisted-remember-me => spring-security-web-persisted-remember-me}/src/main/webapp/WEB-INF/view/login.jsp (100%)
 rename spring-security-modules/{spring-security-mvc-persisted-remember-me => spring-security-web-persisted-remember-me}/src/main/webapp/WEB-INF/web.xml (100%)
 rename spring-security-modules/{spring-security-mvc-persisted-remember-me => spring-security-web-persisted-remember-me}/src/test/java/com/baeldung/SpringContextTest.java (100%)
 rename spring-security-modules/{spring-security-mvc-persisted-remember-me => spring-security-web-persisted-remember-me}/src/test/resources/.gitignore (100%)

diff --git a/spring-security-modules/spring-security-mvc-persisted-remember-me/.gitignore b/spring-security-modules/spring-security-web-persisted-remember-me/.gitignore
similarity index 100%
rename from spring-security-modules/spring-security-mvc-persisted-remember-me/.gitignore
rename to spring-security-modules/spring-security-web-persisted-remember-me/.gitignore
diff --git a/spring-security-modules/spring-security-mvc-persisted-remember-me/README.md b/spring-security-modules/spring-security-web-persisted-remember-me/README.md
similarity index 100%
rename from spring-security-modules/spring-security-mvc-persisted-remember-me/README.md
rename to spring-security-modules/spring-security-web-persisted-remember-me/README.md
diff --git a/spring-security-modules/spring-security-mvc-persisted-remember-me/pom.xml b/spring-security-modules/spring-security-web-persisted-remember-me/pom.xml
similarity index 98%
rename from spring-security-modules/spring-security-mvc-persisted-remember-me/pom.xml
rename to spring-security-modules/spring-security-web-persisted-remember-me/pom.xml
index 9410793222..25c5ddd9d0 100644
--- a/spring-security-modules/spring-security-mvc-persisted-remember-me/pom.xml
+++ b/spring-security-modules/spring-security-web-persisted-remember-me/pom.xml
@@ -2,9 +2,9 @@
 <project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
     xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
     <modelVersion>4.0.0</modelVersion>
-    <artifactId>spring-security-mvc-persisted-remember-me</artifactId>
+    <artifactId>spring-security-web-persisted-remember-me</artifactId>
     <version>0.1-SNAPSHOT</version>
-    <name>spring-security-mvc-persisted-remember-me</name>
+    <name>spring-security-web-persisted-remember-me</name>
     <packaging>war</packaging>
 
     <parent>
diff --git a/spring-security-modules/spring-security-mvc-persisted-remember-me/src/main/java/com/baeldung/controller/MyController.java b/spring-security-modules/spring-security-web-persisted-remember-me/src/main/java/com/baeldung/controller/MyController.java
similarity index 100%
rename from spring-security-modules/spring-security-mvc-persisted-remember-me/src/main/java/com/baeldung/controller/MyController.java
rename to spring-security-modules/spring-security-web-persisted-remember-me/src/main/java/com/baeldung/controller/MyController.java
diff --git a/spring-security-modules/spring-security-mvc-persisted-remember-me/src/main/java/com/baeldung/security/MySimpleUrlAuthenticationSuccessHandler.java b/spring-security-modules/spring-security-web-persisted-remember-me/src/main/java/com/baeldung/security/MySimpleUrlAuthenticationSuccessHandler.java
similarity index 100%
rename from spring-security-modules/spring-security-mvc-persisted-remember-me/src/main/java/com/baeldung/security/MySimpleUrlAuthenticationSuccessHandler.java
rename to spring-security-modules/spring-security-web-persisted-remember-me/src/main/java/com/baeldung/security/MySimpleUrlAuthenticationSuccessHandler.java
diff --git a/spring-security-modules/spring-security-mvc-persisted-remember-me/src/main/java/com/baeldung/security/SecurityRole.java b/spring-security-modules/spring-security-web-persisted-remember-me/src/main/java/com/baeldung/security/SecurityRole.java
similarity index 100%
rename from spring-security-modules/spring-security-mvc-persisted-remember-me/src/main/java/com/baeldung/security/SecurityRole.java
rename to spring-security-modules/spring-security-web-persisted-remember-me/src/main/java/com/baeldung/security/SecurityRole.java
diff --git a/spring-security-modules/spring-security-mvc-persisted-remember-me/src/main/java/com/baeldung/security/SecurityWebApplicationInitializer.java b/spring-security-modules/spring-security-web-persisted-remember-me/src/main/java/com/baeldung/security/SecurityWebApplicationInitializer.java
similarity index 100%
rename from spring-security-modules/spring-security-mvc-persisted-remember-me/src/main/java/com/baeldung/security/SecurityWebApplicationInitializer.java
rename to spring-security-modules/spring-security-web-persisted-remember-me/src/main/java/com/baeldung/security/SecurityWebApplicationInitializer.java
diff --git a/spring-security-modules/spring-security-mvc-persisted-remember-me/src/main/java/com/baeldung/service/MyUserDetailsService.java b/spring-security-modules/spring-security-web-persisted-remember-me/src/main/java/com/baeldung/service/MyUserDetailsService.java
similarity index 100%
rename from spring-security-modules/spring-security-mvc-persisted-remember-me/src/main/java/com/baeldung/service/MyUserDetailsService.java
rename to spring-security-modules/spring-security-web-persisted-remember-me/src/main/java/com/baeldung/service/MyUserDetailsService.java
diff --git a/spring-security-modules/spring-security-mvc-persisted-remember-me/src/main/java/com/baeldung/spring/MvcConfig.java b/spring-security-modules/spring-security-web-persisted-remember-me/src/main/java/com/baeldung/spring/MvcConfig.java
similarity index 100%
rename from spring-security-modules/spring-security-mvc-persisted-remember-me/src/main/java/com/baeldung/spring/MvcConfig.java
rename to spring-security-modules/spring-security-web-persisted-remember-me/src/main/java/com/baeldung/spring/MvcConfig.java
diff --git a/spring-security-modules/spring-security-mvc-persisted-remember-me/src/main/java/com/baeldung/spring/PersistenceConfig.java b/spring-security-modules/spring-security-web-persisted-remember-me/src/main/java/com/baeldung/spring/PersistenceConfig.java
similarity index 100%
rename from spring-security-modules/spring-security-mvc-persisted-remember-me/src/main/java/com/baeldung/spring/PersistenceConfig.java
rename to spring-security-modules/spring-security-web-persisted-remember-me/src/main/java/com/baeldung/spring/PersistenceConfig.java
diff --git a/spring-security-modules/spring-security-mvc-persisted-remember-me/src/main/java/com/baeldung/spring/SecurityConfig.java b/spring-security-modules/spring-security-web-persisted-remember-me/src/main/java/com/baeldung/spring/SecurityConfig.java
similarity index 100%
rename from spring-security-modules/spring-security-mvc-persisted-remember-me/src/main/java/com/baeldung/spring/SecurityConfig.java
rename to spring-security-modules/spring-security-web-persisted-remember-me/src/main/java/com/baeldung/spring/SecurityConfig.java
diff --git a/spring-security-modules/spring-security-mvc-persisted-remember-me/src/main/resources/logback.xml b/spring-security-modules/spring-security-web-persisted-remember-me/src/main/resources/logback.xml
similarity index 100%
rename from spring-security-modules/spring-security-mvc-persisted-remember-me/src/main/resources/logback.xml
rename to spring-security-modules/spring-security-web-persisted-remember-me/src/main/resources/logback.xml
diff --git a/spring-security-modules/spring-security-mvc-persisted-remember-me/src/main/resources/persisted_logins_create_table.sql b/spring-security-modules/spring-security-web-persisted-remember-me/src/main/resources/persisted_logins_create_table.sql
similarity index 100%
rename from spring-security-modules/spring-security-mvc-persisted-remember-me/src/main/resources/persisted_logins_create_table.sql
rename to spring-security-modules/spring-security-web-persisted-remember-me/src/main/resources/persisted_logins_create_table.sql
diff --git a/spring-security-modules/spring-security-mvc-persisted-remember-me/src/main/resources/persistence-h2.properties b/spring-security-modules/spring-security-web-persisted-remember-me/src/main/resources/persistence-h2.properties
similarity index 100%
rename from spring-security-modules/spring-security-mvc-persisted-remember-me/src/main/resources/persistence-h2.properties
rename to spring-security-modules/spring-security-web-persisted-remember-me/src/main/resources/persistence-h2.properties
diff --git a/spring-security-modules/spring-security-mvc-persisted-remember-me/src/main/resources/persistence-postgres.properties b/spring-security-modules/spring-security-web-persisted-remember-me/src/main/resources/persistence-postgres.properties
similarity index 100%
rename from spring-security-modules/spring-security-mvc-persisted-remember-me/src/main/resources/persistence-postgres.properties
rename to spring-security-modules/spring-security-web-persisted-remember-me/src/main/resources/persistence-postgres.properties
diff --git a/spring-security-modules/spring-security-mvc-persisted-remember-me/src/main/resources/webSecurityConfig.xml b/spring-security-modules/spring-security-web-persisted-remember-me/src/main/resources/webSecurityConfig.xml
similarity index 100%
rename from spring-security-modules/spring-security-mvc-persisted-remember-me/src/main/resources/webSecurityConfig.xml
rename to spring-security-modules/spring-security-web-persisted-remember-me/src/main/resources/webSecurityConfig.xml
diff --git a/spring-security-modules/spring-security-mvc-persisted-remember-me/src/main/webapp/WEB-INF/mvc-servlet.xml b/spring-security-modules/spring-security-web-persisted-remember-me/src/main/webapp/WEB-INF/mvc-servlet.xml
similarity index 100%
rename from spring-security-modules/spring-security-mvc-persisted-remember-me/src/main/webapp/WEB-INF/mvc-servlet.xml
rename to spring-security-modules/spring-security-web-persisted-remember-me/src/main/webapp/WEB-INF/mvc-servlet.xml
diff --git a/spring-security-modules/spring-security-mvc-persisted-remember-me/src/main/webapp/WEB-INF/view/anonymous.jsp b/spring-security-modules/spring-security-web-persisted-remember-me/src/main/webapp/WEB-INF/view/anonymous.jsp
similarity index 100%
rename from spring-security-modules/spring-security-mvc-persisted-remember-me/src/main/webapp/WEB-INF/view/anonymous.jsp
rename to spring-security-modules/spring-security-web-persisted-remember-me/src/main/webapp/WEB-INF/view/anonymous.jsp
diff --git a/spring-security-modules/spring-security-mvc-persisted-remember-me/src/main/webapp/WEB-INF/view/console.jsp b/spring-security-modules/spring-security-web-persisted-remember-me/src/main/webapp/WEB-INF/view/console.jsp
similarity index 100%
rename from spring-security-modules/spring-security-mvc-persisted-remember-me/src/main/webapp/WEB-INF/view/console.jsp
rename to spring-security-modules/spring-security-web-persisted-remember-me/src/main/webapp/WEB-INF/view/console.jsp
diff --git a/spring-security-modules/spring-security-mvc-persisted-remember-me/src/main/webapp/WEB-INF/view/homepage.jsp b/spring-security-modules/spring-security-web-persisted-remember-me/src/main/webapp/WEB-INF/view/homepage.jsp
similarity index 100%
rename from spring-security-modules/spring-security-mvc-persisted-remember-me/src/main/webapp/WEB-INF/view/homepage.jsp
rename to spring-security-modules/spring-security-web-persisted-remember-me/src/main/webapp/WEB-INF/view/homepage.jsp
diff --git a/spring-security-modules/spring-security-mvc-persisted-remember-me/src/main/webapp/WEB-INF/view/login.jsp b/spring-security-modules/spring-security-web-persisted-remember-me/src/main/webapp/WEB-INF/view/login.jsp
similarity index 100%
rename from spring-security-modules/spring-security-mvc-persisted-remember-me/src/main/webapp/WEB-INF/view/login.jsp
rename to spring-security-modules/spring-security-web-persisted-remember-me/src/main/webapp/WEB-INF/view/login.jsp
diff --git a/spring-security-modules/spring-security-mvc-persisted-remember-me/src/main/webapp/WEB-INF/web.xml b/spring-security-modules/spring-security-web-persisted-remember-me/src/main/webapp/WEB-INF/web.xml
similarity index 100%
rename from spring-security-modules/spring-security-mvc-persisted-remember-me/src/main/webapp/WEB-INF/web.xml
rename to spring-security-modules/spring-security-web-persisted-remember-me/src/main/webapp/WEB-INF/web.xml
diff --git a/spring-security-modules/spring-security-mvc-persisted-remember-me/src/test/java/com/baeldung/SpringContextTest.java b/spring-security-modules/spring-security-web-persisted-remember-me/src/test/java/com/baeldung/SpringContextTest.java
similarity index 100%
rename from spring-security-modules/spring-security-mvc-persisted-remember-me/src/test/java/com/baeldung/SpringContextTest.java
rename to spring-security-modules/spring-security-web-persisted-remember-me/src/test/java/com/baeldung/SpringContextTest.java
diff --git a/spring-security-modules/spring-security-mvc-persisted-remember-me/src/test/resources/.gitignore b/spring-security-modules/spring-security-web-persisted-remember-me/src/test/resources/.gitignore
similarity index 100%
rename from spring-security-modules/spring-security-mvc-persisted-remember-me/src/test/resources/.gitignore
rename to spring-security-modules/spring-security-web-persisted-remember-me/src/test/resources/.gitignore

From d35dfb6ba9fa6b97a7440a2f2ec82aa77d2581ac Mon Sep 17 00:00:00 2001
From: sampadawagde <sampada.wagde@gmail.com>
Date: Sun, 16 Aug 2020 16:32:56 +0530
Subject: [PATCH 127/156] JAVA-68: Renamed spring-security-mvc-socket to
 spring-security-web-sockets

---
 .../.gitignore                                                | 0
 .../README.md                                                 | 0
 .../pom.xml                                                   | 4 ++--
 .../java/com/baeldung/springsecuredsockets/Constants.java     | 0
 .../com/baeldung/springsecuredsockets/config/AppConfig.java   | 0
 .../baeldung/springsecuredsockets/config/DataStoreConfig.java | 0
 .../baeldung/springsecuredsockets/config/SecurityConfig.java  | 0
 .../springsecuredsockets/config/SocketBrokerConfig.java       | 0
 .../springsecuredsockets/config/SocketSecurityConfig.java     | 0
 .../springsecuredsockets/config/WebAppInitializer.java        | 0
 .../springsecuredsockets/controllers/CsrfTokenController.java | 0
 .../springsecuredsockets/controllers/SocketController.java    | 0
 .../java/com/baeldung/springsecuredsockets/domain/Role.java   | 0
 .../java/com/baeldung/springsecuredsockets/domain/User.java   | 0
 .../springsecuredsockets/repositories/UserRepository.java     | 0
 .../security/CustomAccessDeniedHandler.java                   | 0
 .../security/CustomDaoAuthenticationProvider.java             | 0
 .../security/CustomLoginSuccessHandler.java                   | 0
 .../security/CustomLogoutSuccessHandler.java                  | 0
 .../security/CustomUserDetailsService.java                    | 0
 .../security/SecurityWebApplicationInitializer.java           | 0
 .../springsecuredsockets/transfer/socket/Message.java         | 0
 .../springsecuredsockets/transfer/socket/OutputMessage.java   | 0
 .../springsecuredsockets/transfer/user/CustomUserDetails.java | 0
 .../springsockets/config/WebSocketMessageBrokerConfig.java    | 0
 .../baeldung/springsockets/controllers/RestAPIController.java | 0
 .../springsockets/controllers/WebSocketController.java        | 0
 .../main/java/com/baeldung/springsockets/models/Greeting.java | 0
 .../main/java/com/baeldung/springsockets/models/Message.java  | 0
 .../src/main/resources/data.sql                               | 0
 .../src/main/resources/logback.xml                            | 0
 .../src/main/resources/schema.sql                             | 0
 .../src/main/resources/static/rest.html                       | 0
 .../src/main/resources/static/rest.js                         | 0
 .../src/main/resources/static/ws.html                         | 0
 .../src/main/resources/static/ws.js                           | 0
 .../src/main/webapp/WEB-INF/jsp/denied.jsp                    | 0
 .../src/main/webapp/WEB-INF/jsp/index.jsp                     | 0
 .../src/main/webapp/WEB-INF/jsp/login.jsp                     | 0
 .../src/main/webapp/WEB-INF/jsp/socket.jsp                    | 0
 .../src/main/webapp/WEB-INF/jsp/success.jsp                   | 0
 .../src/main/webapp/resources/scripts/app.js                  | 0
 .../webapp/resources/scripts/controllers/indexController.js   | 0
 .../webapp/resources/scripts/controllers/socketController.js  | 0
 .../webapp/resources/scripts/controllers/successController.js | 0
 .../src/main/webapp/resources/scripts/routes/router.js        | 0
 .../main/webapp/resources/scripts/services/SocketService.js   | 0
 .../src/main/webapp/resources/styles/app.css                  | 0
 .../src/main/webapp/resources/styles/denied.css               | 0
 .../src/main/webapp/resources/styles/index.css                | 0
 .../src/main/webapp/resources/styles/login.css                | 0
 .../src/main/webapp/resources/styles/socket.css               | 0
 .../src/main/webapp/resources/styles/success.css              | 0
 .../main/webapp/resources/vendor/angular/angular-route.min.js | 0
 .../webapp/resources/vendor/angular/angular-route.min.js.map  | 0
 .../src/main/webapp/resources/vendor/angular/angular.min.js   | 0
 .../main/webapp/resources/vendor/angular/angular.min.js.map   | 0
 .../src/main/webapp/resources/vendor/jquery/jquery.min.js     | 0
 .../src/main/webapp/resources/vendor/sockjs/sockjs.min.js     | 0
 .../src/main/webapp/resources/vendor/sockjs/sockjs.min.js.map | 0
 .../src/main/webapp/resources/vendor/stomp/stomp.min.js       | 0
 .../src/test/java/com/baeldung/SpringContextTest.java         | 0
 62 files changed, 2 insertions(+), 2 deletions(-)
 rename spring-security-modules/{spring-security-mvc-socket => spring-security-web-sockets}/.gitignore (100%)
 rename spring-security-modules/{spring-security-mvc-socket => spring-security-web-sockets}/README.md (100%)
 rename spring-security-modules/{spring-security-mvc-socket => spring-security-web-sockets}/pom.xml (98%)
 rename spring-security-modules/{spring-security-mvc-socket => spring-security-web-sockets}/src/main/java/com/baeldung/springsecuredsockets/Constants.java (100%)
 rename spring-security-modules/{spring-security-mvc-socket => spring-security-web-sockets}/src/main/java/com/baeldung/springsecuredsockets/config/AppConfig.java (100%)
 rename spring-security-modules/{spring-security-mvc-socket => spring-security-web-sockets}/src/main/java/com/baeldung/springsecuredsockets/config/DataStoreConfig.java (100%)
 rename spring-security-modules/{spring-security-mvc-socket => spring-security-web-sockets}/src/main/java/com/baeldung/springsecuredsockets/config/SecurityConfig.java (100%)
 rename spring-security-modules/{spring-security-mvc-socket => spring-security-web-sockets}/src/main/java/com/baeldung/springsecuredsockets/config/SocketBrokerConfig.java (100%)
 rename spring-security-modules/{spring-security-mvc-socket => spring-security-web-sockets}/src/main/java/com/baeldung/springsecuredsockets/config/SocketSecurityConfig.java (100%)
 rename spring-security-modules/{spring-security-mvc-socket => spring-security-web-sockets}/src/main/java/com/baeldung/springsecuredsockets/config/WebAppInitializer.java (100%)
 rename spring-security-modules/{spring-security-mvc-socket => spring-security-web-sockets}/src/main/java/com/baeldung/springsecuredsockets/controllers/CsrfTokenController.java (100%)
 rename spring-security-modules/{spring-security-mvc-socket => spring-security-web-sockets}/src/main/java/com/baeldung/springsecuredsockets/controllers/SocketController.java (100%)
 rename spring-security-modules/{spring-security-mvc-socket => spring-security-web-sockets}/src/main/java/com/baeldung/springsecuredsockets/domain/Role.java (100%)
 rename spring-security-modules/{spring-security-mvc-socket => spring-security-web-sockets}/src/main/java/com/baeldung/springsecuredsockets/domain/User.java (100%)
 rename spring-security-modules/{spring-security-mvc-socket => spring-security-web-sockets}/src/main/java/com/baeldung/springsecuredsockets/repositories/UserRepository.java (100%)
 rename spring-security-modules/{spring-security-mvc-socket => spring-security-web-sockets}/src/main/java/com/baeldung/springsecuredsockets/security/CustomAccessDeniedHandler.java (100%)
 rename spring-security-modules/{spring-security-mvc-socket => spring-security-web-sockets}/src/main/java/com/baeldung/springsecuredsockets/security/CustomDaoAuthenticationProvider.java (100%)
 rename spring-security-modules/{spring-security-mvc-socket => spring-security-web-sockets}/src/main/java/com/baeldung/springsecuredsockets/security/CustomLoginSuccessHandler.java (100%)
 rename spring-security-modules/{spring-security-mvc-socket => spring-security-web-sockets}/src/main/java/com/baeldung/springsecuredsockets/security/CustomLogoutSuccessHandler.java (100%)
 rename spring-security-modules/{spring-security-mvc-socket => spring-security-web-sockets}/src/main/java/com/baeldung/springsecuredsockets/security/CustomUserDetailsService.java (100%)
 rename spring-security-modules/{spring-security-mvc-socket => spring-security-web-sockets}/src/main/java/com/baeldung/springsecuredsockets/security/SecurityWebApplicationInitializer.java (100%)
 rename spring-security-modules/{spring-security-mvc-socket => spring-security-web-sockets}/src/main/java/com/baeldung/springsecuredsockets/transfer/socket/Message.java (100%)
 rename spring-security-modules/{spring-security-mvc-socket => spring-security-web-sockets}/src/main/java/com/baeldung/springsecuredsockets/transfer/socket/OutputMessage.java (100%)
 rename spring-security-modules/{spring-security-mvc-socket => spring-security-web-sockets}/src/main/java/com/baeldung/springsecuredsockets/transfer/user/CustomUserDetails.java (100%)
 rename spring-security-modules/{spring-security-mvc-socket => spring-security-web-sockets}/src/main/java/com/baeldung/springsockets/config/WebSocketMessageBrokerConfig.java (100%)
 rename spring-security-modules/{spring-security-mvc-socket => spring-security-web-sockets}/src/main/java/com/baeldung/springsockets/controllers/RestAPIController.java (100%)
 rename spring-security-modules/{spring-security-mvc-socket => spring-security-web-sockets}/src/main/java/com/baeldung/springsockets/controllers/WebSocketController.java (100%)
 rename spring-security-modules/{spring-security-mvc-socket => spring-security-web-sockets}/src/main/java/com/baeldung/springsockets/models/Greeting.java (100%)
 rename spring-security-modules/{spring-security-mvc-socket => spring-security-web-sockets}/src/main/java/com/baeldung/springsockets/models/Message.java (100%)
 rename spring-security-modules/{spring-security-mvc-socket => spring-security-web-sockets}/src/main/resources/data.sql (100%)
 rename spring-security-modules/{spring-security-mvc-socket => spring-security-web-sockets}/src/main/resources/logback.xml (100%)
 rename spring-security-modules/{spring-security-mvc-socket => spring-security-web-sockets}/src/main/resources/schema.sql (100%)
 rename spring-security-modules/{spring-security-mvc-socket => spring-security-web-sockets}/src/main/resources/static/rest.html (100%)
 rename spring-security-modules/{spring-security-mvc-socket => spring-security-web-sockets}/src/main/resources/static/rest.js (100%)
 rename spring-security-modules/{spring-security-mvc-socket => spring-security-web-sockets}/src/main/resources/static/ws.html (100%)
 rename spring-security-modules/{spring-security-mvc-socket => spring-security-web-sockets}/src/main/resources/static/ws.js (100%)
 rename spring-security-modules/{spring-security-mvc-socket => spring-security-web-sockets}/src/main/webapp/WEB-INF/jsp/denied.jsp (100%)
 rename spring-security-modules/{spring-security-mvc-socket => spring-security-web-sockets}/src/main/webapp/WEB-INF/jsp/index.jsp (100%)
 rename spring-security-modules/{spring-security-mvc-socket => spring-security-web-sockets}/src/main/webapp/WEB-INF/jsp/login.jsp (100%)
 rename spring-security-modules/{spring-security-mvc-socket => spring-security-web-sockets}/src/main/webapp/WEB-INF/jsp/socket.jsp (100%)
 rename spring-security-modules/{spring-security-mvc-socket => spring-security-web-sockets}/src/main/webapp/WEB-INF/jsp/success.jsp (100%)
 rename spring-security-modules/{spring-security-mvc-socket => spring-security-web-sockets}/src/main/webapp/resources/scripts/app.js (100%)
 rename spring-security-modules/{spring-security-mvc-socket => spring-security-web-sockets}/src/main/webapp/resources/scripts/controllers/indexController.js (100%)
 rename spring-security-modules/{spring-security-mvc-socket => spring-security-web-sockets}/src/main/webapp/resources/scripts/controllers/socketController.js (100%)
 rename spring-security-modules/{spring-security-mvc-socket => spring-security-web-sockets}/src/main/webapp/resources/scripts/controllers/successController.js (100%)
 rename spring-security-modules/{spring-security-mvc-socket => spring-security-web-sockets}/src/main/webapp/resources/scripts/routes/router.js (100%)
 rename spring-security-modules/{spring-security-mvc-socket => spring-security-web-sockets}/src/main/webapp/resources/scripts/services/SocketService.js (100%)
 rename spring-security-modules/{spring-security-mvc-socket => spring-security-web-sockets}/src/main/webapp/resources/styles/app.css (100%)
 rename spring-security-modules/{spring-security-mvc-socket => spring-security-web-sockets}/src/main/webapp/resources/styles/denied.css (100%)
 rename spring-security-modules/{spring-security-mvc-socket => spring-security-web-sockets}/src/main/webapp/resources/styles/index.css (100%)
 rename spring-security-modules/{spring-security-mvc-socket => spring-security-web-sockets}/src/main/webapp/resources/styles/login.css (100%)
 rename spring-security-modules/{spring-security-mvc-socket => spring-security-web-sockets}/src/main/webapp/resources/styles/socket.css (100%)
 rename spring-security-modules/{spring-security-mvc-socket => spring-security-web-sockets}/src/main/webapp/resources/styles/success.css (100%)
 rename spring-security-modules/{spring-security-mvc-socket => spring-security-web-sockets}/src/main/webapp/resources/vendor/angular/angular-route.min.js (100%)
 rename spring-security-modules/{spring-security-mvc-socket => spring-security-web-sockets}/src/main/webapp/resources/vendor/angular/angular-route.min.js.map (100%)
 rename spring-security-modules/{spring-security-mvc-socket => spring-security-web-sockets}/src/main/webapp/resources/vendor/angular/angular.min.js (100%)
 rename spring-security-modules/{spring-security-mvc-socket => spring-security-web-sockets}/src/main/webapp/resources/vendor/angular/angular.min.js.map (100%)
 rename spring-security-modules/{spring-security-mvc-socket => spring-security-web-sockets}/src/main/webapp/resources/vendor/jquery/jquery.min.js (100%)
 rename spring-security-modules/{spring-security-mvc-socket => spring-security-web-sockets}/src/main/webapp/resources/vendor/sockjs/sockjs.min.js (100%)
 rename spring-security-modules/{spring-security-mvc-socket => spring-security-web-sockets}/src/main/webapp/resources/vendor/sockjs/sockjs.min.js.map (100%)
 rename spring-security-modules/{spring-security-mvc-socket => spring-security-web-sockets}/src/main/webapp/resources/vendor/stomp/stomp.min.js (100%)
 rename spring-security-modules/{spring-security-mvc-socket => spring-security-web-sockets}/src/test/java/com/baeldung/SpringContextTest.java (100%)

diff --git a/spring-security-modules/spring-security-mvc-socket/.gitignore b/spring-security-modules/spring-security-web-sockets/.gitignore
similarity index 100%
rename from spring-security-modules/spring-security-mvc-socket/.gitignore
rename to spring-security-modules/spring-security-web-sockets/.gitignore
diff --git a/spring-security-modules/spring-security-mvc-socket/README.md b/spring-security-modules/spring-security-web-sockets/README.md
similarity index 100%
rename from spring-security-modules/spring-security-mvc-socket/README.md
rename to spring-security-modules/spring-security-web-sockets/README.md
diff --git a/spring-security-modules/spring-security-mvc-socket/pom.xml b/spring-security-modules/spring-security-web-sockets/pom.xml
similarity index 98%
rename from spring-security-modules/spring-security-mvc-socket/pom.xml
rename to spring-security-modules/spring-security-web-sockets/pom.xml
index 6515121f9f..3a3ec47af5 100644
--- a/spring-security-modules/spring-security-mvc-socket/pom.xml
+++ b/spring-security-modules/spring-security-web-sockets/pom.xml
@@ -3,9 +3,9 @@
          xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
     <modelVersion>4.0.0</modelVersion>
     <groupId>com.baeldung.springsecuredsockets</groupId>
-    <artifactId>spring-security-mvc-socket</artifactId>
+    <artifactId>spring-security-web-sockets</artifactId>
     <version>1.0.0</version>
-    <name>spring-security-mvc-socket</name>
+    <name>spring-security-web-sockets</name>
     <packaging>war</packaging>
 
     <parent>
diff --git a/spring-security-modules/spring-security-mvc-socket/src/main/java/com/baeldung/springsecuredsockets/Constants.java b/spring-security-modules/spring-security-web-sockets/src/main/java/com/baeldung/springsecuredsockets/Constants.java
similarity index 100%
rename from spring-security-modules/spring-security-mvc-socket/src/main/java/com/baeldung/springsecuredsockets/Constants.java
rename to spring-security-modules/spring-security-web-sockets/src/main/java/com/baeldung/springsecuredsockets/Constants.java
diff --git a/spring-security-modules/spring-security-mvc-socket/src/main/java/com/baeldung/springsecuredsockets/config/AppConfig.java b/spring-security-modules/spring-security-web-sockets/src/main/java/com/baeldung/springsecuredsockets/config/AppConfig.java
similarity index 100%
rename from spring-security-modules/spring-security-mvc-socket/src/main/java/com/baeldung/springsecuredsockets/config/AppConfig.java
rename to spring-security-modules/spring-security-web-sockets/src/main/java/com/baeldung/springsecuredsockets/config/AppConfig.java
diff --git a/spring-security-modules/spring-security-mvc-socket/src/main/java/com/baeldung/springsecuredsockets/config/DataStoreConfig.java b/spring-security-modules/spring-security-web-sockets/src/main/java/com/baeldung/springsecuredsockets/config/DataStoreConfig.java
similarity index 100%
rename from spring-security-modules/spring-security-mvc-socket/src/main/java/com/baeldung/springsecuredsockets/config/DataStoreConfig.java
rename to spring-security-modules/spring-security-web-sockets/src/main/java/com/baeldung/springsecuredsockets/config/DataStoreConfig.java
diff --git a/spring-security-modules/spring-security-mvc-socket/src/main/java/com/baeldung/springsecuredsockets/config/SecurityConfig.java b/spring-security-modules/spring-security-web-sockets/src/main/java/com/baeldung/springsecuredsockets/config/SecurityConfig.java
similarity index 100%
rename from spring-security-modules/spring-security-mvc-socket/src/main/java/com/baeldung/springsecuredsockets/config/SecurityConfig.java
rename to spring-security-modules/spring-security-web-sockets/src/main/java/com/baeldung/springsecuredsockets/config/SecurityConfig.java
diff --git a/spring-security-modules/spring-security-mvc-socket/src/main/java/com/baeldung/springsecuredsockets/config/SocketBrokerConfig.java b/spring-security-modules/spring-security-web-sockets/src/main/java/com/baeldung/springsecuredsockets/config/SocketBrokerConfig.java
similarity index 100%
rename from spring-security-modules/spring-security-mvc-socket/src/main/java/com/baeldung/springsecuredsockets/config/SocketBrokerConfig.java
rename to spring-security-modules/spring-security-web-sockets/src/main/java/com/baeldung/springsecuredsockets/config/SocketBrokerConfig.java
diff --git a/spring-security-modules/spring-security-mvc-socket/src/main/java/com/baeldung/springsecuredsockets/config/SocketSecurityConfig.java b/spring-security-modules/spring-security-web-sockets/src/main/java/com/baeldung/springsecuredsockets/config/SocketSecurityConfig.java
similarity index 100%
rename from spring-security-modules/spring-security-mvc-socket/src/main/java/com/baeldung/springsecuredsockets/config/SocketSecurityConfig.java
rename to spring-security-modules/spring-security-web-sockets/src/main/java/com/baeldung/springsecuredsockets/config/SocketSecurityConfig.java
diff --git a/spring-security-modules/spring-security-mvc-socket/src/main/java/com/baeldung/springsecuredsockets/config/WebAppInitializer.java b/spring-security-modules/spring-security-web-sockets/src/main/java/com/baeldung/springsecuredsockets/config/WebAppInitializer.java
similarity index 100%
rename from spring-security-modules/spring-security-mvc-socket/src/main/java/com/baeldung/springsecuredsockets/config/WebAppInitializer.java
rename to spring-security-modules/spring-security-web-sockets/src/main/java/com/baeldung/springsecuredsockets/config/WebAppInitializer.java
diff --git a/spring-security-modules/spring-security-mvc-socket/src/main/java/com/baeldung/springsecuredsockets/controllers/CsrfTokenController.java b/spring-security-modules/spring-security-web-sockets/src/main/java/com/baeldung/springsecuredsockets/controllers/CsrfTokenController.java
similarity index 100%
rename from spring-security-modules/spring-security-mvc-socket/src/main/java/com/baeldung/springsecuredsockets/controllers/CsrfTokenController.java
rename to spring-security-modules/spring-security-web-sockets/src/main/java/com/baeldung/springsecuredsockets/controllers/CsrfTokenController.java
diff --git a/spring-security-modules/spring-security-mvc-socket/src/main/java/com/baeldung/springsecuredsockets/controllers/SocketController.java b/spring-security-modules/spring-security-web-sockets/src/main/java/com/baeldung/springsecuredsockets/controllers/SocketController.java
similarity index 100%
rename from spring-security-modules/spring-security-mvc-socket/src/main/java/com/baeldung/springsecuredsockets/controllers/SocketController.java
rename to spring-security-modules/spring-security-web-sockets/src/main/java/com/baeldung/springsecuredsockets/controllers/SocketController.java
diff --git a/spring-security-modules/spring-security-mvc-socket/src/main/java/com/baeldung/springsecuredsockets/domain/Role.java b/spring-security-modules/spring-security-web-sockets/src/main/java/com/baeldung/springsecuredsockets/domain/Role.java
similarity index 100%
rename from spring-security-modules/spring-security-mvc-socket/src/main/java/com/baeldung/springsecuredsockets/domain/Role.java
rename to spring-security-modules/spring-security-web-sockets/src/main/java/com/baeldung/springsecuredsockets/domain/Role.java
diff --git a/spring-security-modules/spring-security-mvc-socket/src/main/java/com/baeldung/springsecuredsockets/domain/User.java b/spring-security-modules/spring-security-web-sockets/src/main/java/com/baeldung/springsecuredsockets/domain/User.java
similarity index 100%
rename from spring-security-modules/spring-security-mvc-socket/src/main/java/com/baeldung/springsecuredsockets/domain/User.java
rename to spring-security-modules/spring-security-web-sockets/src/main/java/com/baeldung/springsecuredsockets/domain/User.java
diff --git a/spring-security-modules/spring-security-mvc-socket/src/main/java/com/baeldung/springsecuredsockets/repositories/UserRepository.java b/spring-security-modules/spring-security-web-sockets/src/main/java/com/baeldung/springsecuredsockets/repositories/UserRepository.java
similarity index 100%
rename from spring-security-modules/spring-security-mvc-socket/src/main/java/com/baeldung/springsecuredsockets/repositories/UserRepository.java
rename to spring-security-modules/spring-security-web-sockets/src/main/java/com/baeldung/springsecuredsockets/repositories/UserRepository.java
diff --git a/spring-security-modules/spring-security-mvc-socket/src/main/java/com/baeldung/springsecuredsockets/security/CustomAccessDeniedHandler.java b/spring-security-modules/spring-security-web-sockets/src/main/java/com/baeldung/springsecuredsockets/security/CustomAccessDeniedHandler.java
similarity index 100%
rename from spring-security-modules/spring-security-mvc-socket/src/main/java/com/baeldung/springsecuredsockets/security/CustomAccessDeniedHandler.java
rename to spring-security-modules/spring-security-web-sockets/src/main/java/com/baeldung/springsecuredsockets/security/CustomAccessDeniedHandler.java
diff --git a/spring-security-modules/spring-security-mvc-socket/src/main/java/com/baeldung/springsecuredsockets/security/CustomDaoAuthenticationProvider.java b/spring-security-modules/spring-security-web-sockets/src/main/java/com/baeldung/springsecuredsockets/security/CustomDaoAuthenticationProvider.java
similarity index 100%
rename from spring-security-modules/spring-security-mvc-socket/src/main/java/com/baeldung/springsecuredsockets/security/CustomDaoAuthenticationProvider.java
rename to spring-security-modules/spring-security-web-sockets/src/main/java/com/baeldung/springsecuredsockets/security/CustomDaoAuthenticationProvider.java
diff --git a/spring-security-modules/spring-security-mvc-socket/src/main/java/com/baeldung/springsecuredsockets/security/CustomLoginSuccessHandler.java b/spring-security-modules/spring-security-web-sockets/src/main/java/com/baeldung/springsecuredsockets/security/CustomLoginSuccessHandler.java
similarity index 100%
rename from spring-security-modules/spring-security-mvc-socket/src/main/java/com/baeldung/springsecuredsockets/security/CustomLoginSuccessHandler.java
rename to spring-security-modules/spring-security-web-sockets/src/main/java/com/baeldung/springsecuredsockets/security/CustomLoginSuccessHandler.java
diff --git a/spring-security-modules/spring-security-mvc-socket/src/main/java/com/baeldung/springsecuredsockets/security/CustomLogoutSuccessHandler.java b/spring-security-modules/spring-security-web-sockets/src/main/java/com/baeldung/springsecuredsockets/security/CustomLogoutSuccessHandler.java
similarity index 100%
rename from spring-security-modules/spring-security-mvc-socket/src/main/java/com/baeldung/springsecuredsockets/security/CustomLogoutSuccessHandler.java
rename to spring-security-modules/spring-security-web-sockets/src/main/java/com/baeldung/springsecuredsockets/security/CustomLogoutSuccessHandler.java
diff --git a/spring-security-modules/spring-security-mvc-socket/src/main/java/com/baeldung/springsecuredsockets/security/CustomUserDetailsService.java b/spring-security-modules/spring-security-web-sockets/src/main/java/com/baeldung/springsecuredsockets/security/CustomUserDetailsService.java
similarity index 100%
rename from spring-security-modules/spring-security-mvc-socket/src/main/java/com/baeldung/springsecuredsockets/security/CustomUserDetailsService.java
rename to spring-security-modules/spring-security-web-sockets/src/main/java/com/baeldung/springsecuredsockets/security/CustomUserDetailsService.java
diff --git a/spring-security-modules/spring-security-mvc-socket/src/main/java/com/baeldung/springsecuredsockets/security/SecurityWebApplicationInitializer.java b/spring-security-modules/spring-security-web-sockets/src/main/java/com/baeldung/springsecuredsockets/security/SecurityWebApplicationInitializer.java
similarity index 100%
rename from spring-security-modules/spring-security-mvc-socket/src/main/java/com/baeldung/springsecuredsockets/security/SecurityWebApplicationInitializer.java
rename to spring-security-modules/spring-security-web-sockets/src/main/java/com/baeldung/springsecuredsockets/security/SecurityWebApplicationInitializer.java
diff --git a/spring-security-modules/spring-security-mvc-socket/src/main/java/com/baeldung/springsecuredsockets/transfer/socket/Message.java b/spring-security-modules/spring-security-web-sockets/src/main/java/com/baeldung/springsecuredsockets/transfer/socket/Message.java
similarity index 100%
rename from spring-security-modules/spring-security-mvc-socket/src/main/java/com/baeldung/springsecuredsockets/transfer/socket/Message.java
rename to spring-security-modules/spring-security-web-sockets/src/main/java/com/baeldung/springsecuredsockets/transfer/socket/Message.java
diff --git a/spring-security-modules/spring-security-mvc-socket/src/main/java/com/baeldung/springsecuredsockets/transfer/socket/OutputMessage.java b/spring-security-modules/spring-security-web-sockets/src/main/java/com/baeldung/springsecuredsockets/transfer/socket/OutputMessage.java
similarity index 100%
rename from spring-security-modules/spring-security-mvc-socket/src/main/java/com/baeldung/springsecuredsockets/transfer/socket/OutputMessage.java
rename to spring-security-modules/spring-security-web-sockets/src/main/java/com/baeldung/springsecuredsockets/transfer/socket/OutputMessage.java
diff --git a/spring-security-modules/spring-security-mvc-socket/src/main/java/com/baeldung/springsecuredsockets/transfer/user/CustomUserDetails.java b/spring-security-modules/spring-security-web-sockets/src/main/java/com/baeldung/springsecuredsockets/transfer/user/CustomUserDetails.java
similarity index 100%
rename from spring-security-modules/spring-security-mvc-socket/src/main/java/com/baeldung/springsecuredsockets/transfer/user/CustomUserDetails.java
rename to spring-security-modules/spring-security-web-sockets/src/main/java/com/baeldung/springsecuredsockets/transfer/user/CustomUserDetails.java
diff --git a/spring-security-modules/spring-security-mvc-socket/src/main/java/com/baeldung/springsockets/config/WebSocketMessageBrokerConfig.java b/spring-security-modules/spring-security-web-sockets/src/main/java/com/baeldung/springsockets/config/WebSocketMessageBrokerConfig.java
similarity index 100%
rename from spring-security-modules/spring-security-mvc-socket/src/main/java/com/baeldung/springsockets/config/WebSocketMessageBrokerConfig.java
rename to spring-security-modules/spring-security-web-sockets/src/main/java/com/baeldung/springsockets/config/WebSocketMessageBrokerConfig.java
diff --git a/spring-security-modules/spring-security-mvc-socket/src/main/java/com/baeldung/springsockets/controllers/RestAPIController.java b/spring-security-modules/spring-security-web-sockets/src/main/java/com/baeldung/springsockets/controllers/RestAPIController.java
similarity index 100%
rename from spring-security-modules/spring-security-mvc-socket/src/main/java/com/baeldung/springsockets/controllers/RestAPIController.java
rename to spring-security-modules/spring-security-web-sockets/src/main/java/com/baeldung/springsockets/controllers/RestAPIController.java
diff --git a/spring-security-modules/spring-security-mvc-socket/src/main/java/com/baeldung/springsockets/controllers/WebSocketController.java b/spring-security-modules/spring-security-web-sockets/src/main/java/com/baeldung/springsockets/controllers/WebSocketController.java
similarity index 100%
rename from spring-security-modules/spring-security-mvc-socket/src/main/java/com/baeldung/springsockets/controllers/WebSocketController.java
rename to spring-security-modules/spring-security-web-sockets/src/main/java/com/baeldung/springsockets/controllers/WebSocketController.java
diff --git a/spring-security-modules/spring-security-mvc-socket/src/main/java/com/baeldung/springsockets/models/Greeting.java b/spring-security-modules/spring-security-web-sockets/src/main/java/com/baeldung/springsockets/models/Greeting.java
similarity index 100%
rename from spring-security-modules/spring-security-mvc-socket/src/main/java/com/baeldung/springsockets/models/Greeting.java
rename to spring-security-modules/spring-security-web-sockets/src/main/java/com/baeldung/springsockets/models/Greeting.java
diff --git a/spring-security-modules/spring-security-mvc-socket/src/main/java/com/baeldung/springsockets/models/Message.java b/spring-security-modules/spring-security-web-sockets/src/main/java/com/baeldung/springsockets/models/Message.java
similarity index 100%
rename from spring-security-modules/spring-security-mvc-socket/src/main/java/com/baeldung/springsockets/models/Message.java
rename to spring-security-modules/spring-security-web-sockets/src/main/java/com/baeldung/springsockets/models/Message.java
diff --git a/spring-security-modules/spring-security-mvc-socket/src/main/resources/data.sql b/spring-security-modules/spring-security-web-sockets/src/main/resources/data.sql
similarity index 100%
rename from spring-security-modules/spring-security-mvc-socket/src/main/resources/data.sql
rename to spring-security-modules/spring-security-web-sockets/src/main/resources/data.sql
diff --git a/spring-security-modules/spring-security-mvc-socket/src/main/resources/logback.xml b/spring-security-modules/spring-security-web-sockets/src/main/resources/logback.xml
similarity index 100%
rename from spring-security-modules/spring-security-mvc-socket/src/main/resources/logback.xml
rename to spring-security-modules/spring-security-web-sockets/src/main/resources/logback.xml
diff --git a/spring-security-modules/spring-security-mvc-socket/src/main/resources/schema.sql b/spring-security-modules/spring-security-web-sockets/src/main/resources/schema.sql
similarity index 100%
rename from spring-security-modules/spring-security-mvc-socket/src/main/resources/schema.sql
rename to spring-security-modules/spring-security-web-sockets/src/main/resources/schema.sql
diff --git a/spring-security-modules/spring-security-mvc-socket/src/main/resources/static/rest.html b/spring-security-modules/spring-security-web-sockets/src/main/resources/static/rest.html
similarity index 100%
rename from spring-security-modules/spring-security-mvc-socket/src/main/resources/static/rest.html
rename to spring-security-modules/spring-security-web-sockets/src/main/resources/static/rest.html
diff --git a/spring-security-modules/spring-security-mvc-socket/src/main/resources/static/rest.js b/spring-security-modules/spring-security-web-sockets/src/main/resources/static/rest.js
similarity index 100%
rename from spring-security-modules/spring-security-mvc-socket/src/main/resources/static/rest.js
rename to spring-security-modules/spring-security-web-sockets/src/main/resources/static/rest.js
diff --git a/spring-security-modules/spring-security-mvc-socket/src/main/resources/static/ws.html b/spring-security-modules/spring-security-web-sockets/src/main/resources/static/ws.html
similarity index 100%
rename from spring-security-modules/spring-security-mvc-socket/src/main/resources/static/ws.html
rename to spring-security-modules/spring-security-web-sockets/src/main/resources/static/ws.html
diff --git a/spring-security-modules/spring-security-mvc-socket/src/main/resources/static/ws.js b/spring-security-modules/spring-security-web-sockets/src/main/resources/static/ws.js
similarity index 100%
rename from spring-security-modules/spring-security-mvc-socket/src/main/resources/static/ws.js
rename to spring-security-modules/spring-security-web-sockets/src/main/resources/static/ws.js
diff --git a/spring-security-modules/spring-security-mvc-socket/src/main/webapp/WEB-INF/jsp/denied.jsp b/spring-security-modules/spring-security-web-sockets/src/main/webapp/WEB-INF/jsp/denied.jsp
similarity index 100%
rename from spring-security-modules/spring-security-mvc-socket/src/main/webapp/WEB-INF/jsp/denied.jsp
rename to spring-security-modules/spring-security-web-sockets/src/main/webapp/WEB-INF/jsp/denied.jsp
diff --git a/spring-security-modules/spring-security-mvc-socket/src/main/webapp/WEB-INF/jsp/index.jsp b/spring-security-modules/spring-security-web-sockets/src/main/webapp/WEB-INF/jsp/index.jsp
similarity index 100%
rename from spring-security-modules/spring-security-mvc-socket/src/main/webapp/WEB-INF/jsp/index.jsp
rename to spring-security-modules/spring-security-web-sockets/src/main/webapp/WEB-INF/jsp/index.jsp
diff --git a/spring-security-modules/spring-security-mvc-socket/src/main/webapp/WEB-INF/jsp/login.jsp b/spring-security-modules/spring-security-web-sockets/src/main/webapp/WEB-INF/jsp/login.jsp
similarity index 100%
rename from spring-security-modules/spring-security-mvc-socket/src/main/webapp/WEB-INF/jsp/login.jsp
rename to spring-security-modules/spring-security-web-sockets/src/main/webapp/WEB-INF/jsp/login.jsp
diff --git a/spring-security-modules/spring-security-mvc-socket/src/main/webapp/WEB-INF/jsp/socket.jsp b/spring-security-modules/spring-security-web-sockets/src/main/webapp/WEB-INF/jsp/socket.jsp
similarity index 100%
rename from spring-security-modules/spring-security-mvc-socket/src/main/webapp/WEB-INF/jsp/socket.jsp
rename to spring-security-modules/spring-security-web-sockets/src/main/webapp/WEB-INF/jsp/socket.jsp
diff --git a/spring-security-modules/spring-security-mvc-socket/src/main/webapp/WEB-INF/jsp/success.jsp b/spring-security-modules/spring-security-web-sockets/src/main/webapp/WEB-INF/jsp/success.jsp
similarity index 100%
rename from spring-security-modules/spring-security-mvc-socket/src/main/webapp/WEB-INF/jsp/success.jsp
rename to spring-security-modules/spring-security-web-sockets/src/main/webapp/WEB-INF/jsp/success.jsp
diff --git a/spring-security-modules/spring-security-mvc-socket/src/main/webapp/resources/scripts/app.js b/spring-security-modules/spring-security-web-sockets/src/main/webapp/resources/scripts/app.js
similarity index 100%
rename from spring-security-modules/spring-security-mvc-socket/src/main/webapp/resources/scripts/app.js
rename to spring-security-modules/spring-security-web-sockets/src/main/webapp/resources/scripts/app.js
diff --git a/spring-security-modules/spring-security-mvc-socket/src/main/webapp/resources/scripts/controllers/indexController.js b/spring-security-modules/spring-security-web-sockets/src/main/webapp/resources/scripts/controllers/indexController.js
similarity index 100%
rename from spring-security-modules/spring-security-mvc-socket/src/main/webapp/resources/scripts/controllers/indexController.js
rename to spring-security-modules/spring-security-web-sockets/src/main/webapp/resources/scripts/controllers/indexController.js
diff --git a/spring-security-modules/spring-security-mvc-socket/src/main/webapp/resources/scripts/controllers/socketController.js b/spring-security-modules/spring-security-web-sockets/src/main/webapp/resources/scripts/controllers/socketController.js
similarity index 100%
rename from spring-security-modules/spring-security-mvc-socket/src/main/webapp/resources/scripts/controllers/socketController.js
rename to spring-security-modules/spring-security-web-sockets/src/main/webapp/resources/scripts/controllers/socketController.js
diff --git a/spring-security-modules/spring-security-mvc-socket/src/main/webapp/resources/scripts/controllers/successController.js b/spring-security-modules/spring-security-web-sockets/src/main/webapp/resources/scripts/controllers/successController.js
similarity index 100%
rename from spring-security-modules/spring-security-mvc-socket/src/main/webapp/resources/scripts/controllers/successController.js
rename to spring-security-modules/spring-security-web-sockets/src/main/webapp/resources/scripts/controllers/successController.js
diff --git a/spring-security-modules/spring-security-mvc-socket/src/main/webapp/resources/scripts/routes/router.js b/spring-security-modules/spring-security-web-sockets/src/main/webapp/resources/scripts/routes/router.js
similarity index 100%
rename from spring-security-modules/spring-security-mvc-socket/src/main/webapp/resources/scripts/routes/router.js
rename to spring-security-modules/spring-security-web-sockets/src/main/webapp/resources/scripts/routes/router.js
diff --git a/spring-security-modules/spring-security-mvc-socket/src/main/webapp/resources/scripts/services/SocketService.js b/spring-security-modules/spring-security-web-sockets/src/main/webapp/resources/scripts/services/SocketService.js
similarity index 100%
rename from spring-security-modules/spring-security-mvc-socket/src/main/webapp/resources/scripts/services/SocketService.js
rename to spring-security-modules/spring-security-web-sockets/src/main/webapp/resources/scripts/services/SocketService.js
diff --git a/spring-security-modules/spring-security-mvc-socket/src/main/webapp/resources/styles/app.css b/spring-security-modules/spring-security-web-sockets/src/main/webapp/resources/styles/app.css
similarity index 100%
rename from spring-security-modules/spring-security-mvc-socket/src/main/webapp/resources/styles/app.css
rename to spring-security-modules/spring-security-web-sockets/src/main/webapp/resources/styles/app.css
diff --git a/spring-security-modules/spring-security-mvc-socket/src/main/webapp/resources/styles/denied.css b/spring-security-modules/spring-security-web-sockets/src/main/webapp/resources/styles/denied.css
similarity index 100%
rename from spring-security-modules/spring-security-mvc-socket/src/main/webapp/resources/styles/denied.css
rename to spring-security-modules/spring-security-web-sockets/src/main/webapp/resources/styles/denied.css
diff --git a/spring-security-modules/spring-security-mvc-socket/src/main/webapp/resources/styles/index.css b/spring-security-modules/spring-security-web-sockets/src/main/webapp/resources/styles/index.css
similarity index 100%
rename from spring-security-modules/spring-security-mvc-socket/src/main/webapp/resources/styles/index.css
rename to spring-security-modules/spring-security-web-sockets/src/main/webapp/resources/styles/index.css
diff --git a/spring-security-modules/spring-security-mvc-socket/src/main/webapp/resources/styles/login.css b/spring-security-modules/spring-security-web-sockets/src/main/webapp/resources/styles/login.css
similarity index 100%
rename from spring-security-modules/spring-security-mvc-socket/src/main/webapp/resources/styles/login.css
rename to spring-security-modules/spring-security-web-sockets/src/main/webapp/resources/styles/login.css
diff --git a/spring-security-modules/spring-security-mvc-socket/src/main/webapp/resources/styles/socket.css b/spring-security-modules/spring-security-web-sockets/src/main/webapp/resources/styles/socket.css
similarity index 100%
rename from spring-security-modules/spring-security-mvc-socket/src/main/webapp/resources/styles/socket.css
rename to spring-security-modules/spring-security-web-sockets/src/main/webapp/resources/styles/socket.css
diff --git a/spring-security-modules/spring-security-mvc-socket/src/main/webapp/resources/styles/success.css b/spring-security-modules/spring-security-web-sockets/src/main/webapp/resources/styles/success.css
similarity index 100%
rename from spring-security-modules/spring-security-mvc-socket/src/main/webapp/resources/styles/success.css
rename to spring-security-modules/spring-security-web-sockets/src/main/webapp/resources/styles/success.css
diff --git a/spring-security-modules/spring-security-mvc-socket/src/main/webapp/resources/vendor/angular/angular-route.min.js b/spring-security-modules/spring-security-web-sockets/src/main/webapp/resources/vendor/angular/angular-route.min.js
similarity index 100%
rename from spring-security-modules/spring-security-mvc-socket/src/main/webapp/resources/vendor/angular/angular-route.min.js
rename to spring-security-modules/spring-security-web-sockets/src/main/webapp/resources/vendor/angular/angular-route.min.js
diff --git a/spring-security-modules/spring-security-mvc-socket/src/main/webapp/resources/vendor/angular/angular-route.min.js.map b/spring-security-modules/spring-security-web-sockets/src/main/webapp/resources/vendor/angular/angular-route.min.js.map
similarity index 100%
rename from spring-security-modules/spring-security-mvc-socket/src/main/webapp/resources/vendor/angular/angular-route.min.js.map
rename to spring-security-modules/spring-security-web-sockets/src/main/webapp/resources/vendor/angular/angular-route.min.js.map
diff --git a/spring-security-modules/spring-security-mvc-socket/src/main/webapp/resources/vendor/angular/angular.min.js b/spring-security-modules/spring-security-web-sockets/src/main/webapp/resources/vendor/angular/angular.min.js
similarity index 100%
rename from spring-security-modules/spring-security-mvc-socket/src/main/webapp/resources/vendor/angular/angular.min.js
rename to spring-security-modules/spring-security-web-sockets/src/main/webapp/resources/vendor/angular/angular.min.js
diff --git a/spring-security-modules/spring-security-mvc-socket/src/main/webapp/resources/vendor/angular/angular.min.js.map b/spring-security-modules/spring-security-web-sockets/src/main/webapp/resources/vendor/angular/angular.min.js.map
similarity index 100%
rename from spring-security-modules/spring-security-mvc-socket/src/main/webapp/resources/vendor/angular/angular.min.js.map
rename to spring-security-modules/spring-security-web-sockets/src/main/webapp/resources/vendor/angular/angular.min.js.map
diff --git a/spring-security-modules/spring-security-mvc-socket/src/main/webapp/resources/vendor/jquery/jquery.min.js b/spring-security-modules/spring-security-web-sockets/src/main/webapp/resources/vendor/jquery/jquery.min.js
similarity index 100%
rename from spring-security-modules/spring-security-mvc-socket/src/main/webapp/resources/vendor/jquery/jquery.min.js
rename to spring-security-modules/spring-security-web-sockets/src/main/webapp/resources/vendor/jquery/jquery.min.js
diff --git a/spring-security-modules/spring-security-mvc-socket/src/main/webapp/resources/vendor/sockjs/sockjs.min.js b/spring-security-modules/spring-security-web-sockets/src/main/webapp/resources/vendor/sockjs/sockjs.min.js
similarity index 100%
rename from spring-security-modules/spring-security-mvc-socket/src/main/webapp/resources/vendor/sockjs/sockjs.min.js
rename to spring-security-modules/spring-security-web-sockets/src/main/webapp/resources/vendor/sockjs/sockjs.min.js
diff --git a/spring-security-modules/spring-security-mvc-socket/src/main/webapp/resources/vendor/sockjs/sockjs.min.js.map b/spring-security-modules/spring-security-web-sockets/src/main/webapp/resources/vendor/sockjs/sockjs.min.js.map
similarity index 100%
rename from spring-security-modules/spring-security-mvc-socket/src/main/webapp/resources/vendor/sockjs/sockjs.min.js.map
rename to spring-security-modules/spring-security-web-sockets/src/main/webapp/resources/vendor/sockjs/sockjs.min.js.map
diff --git a/spring-security-modules/spring-security-mvc-socket/src/main/webapp/resources/vendor/stomp/stomp.min.js b/spring-security-modules/spring-security-web-sockets/src/main/webapp/resources/vendor/stomp/stomp.min.js
similarity index 100%
rename from spring-security-modules/spring-security-mvc-socket/src/main/webapp/resources/vendor/stomp/stomp.min.js
rename to spring-security-modules/spring-security-web-sockets/src/main/webapp/resources/vendor/stomp/stomp.min.js
diff --git a/spring-security-modules/spring-security-mvc-socket/src/test/java/com/baeldung/SpringContextTest.java b/spring-security-modules/spring-security-web-sockets/src/test/java/com/baeldung/SpringContextTest.java
similarity index 100%
rename from spring-security-modules/spring-security-mvc-socket/src/test/java/com/baeldung/SpringContextTest.java
rename to spring-security-modules/spring-security-web-sockets/src/test/java/com/baeldung/SpringContextTest.java

From 10e9f147ee2a0e28c8a89741a97a41ad4f23194f Mon Sep 17 00:00:00 2001
From: sampadawagde <sampada.wagde@gmail.com>
Date: Sun, 16 Aug 2020 16:33:28 +0530
Subject: [PATCH 128/156] JAVA-68: Renamed spring-security-react to
 spring-security-web-react

---
 .../.gitignore                                      |   0
 .../README.md                                       |   0
 .../pom.xml                                         |   4 ++--
 .../main/java/com/baeldung/spring/MvcConfig.java    |   0
 .../java/com/baeldung/spring/SecSecurityConfig.java |   0
 .../src/main/resources/logback.xml                  |   0
 .../src/main/webapp/WEB-INF/mvc-servlet.xml         |   0
 .../src/main/webapp/WEB-INF/view/accessDenied.jsp   |   0
 .../main/webapp/WEB-INF/view/admin/adminpage.jsp    |   0
 .../src/main/webapp/WEB-INF/view/anonymous.jsp      |   0
 .../src/main/webapp/WEB-INF/view/homepage.jsp       |   0
 .../src/main/webapp/WEB-INF/view/react/.babelrc     |   0
 .../main/webapp/WEB-INF/view/react/.eslintignore    |   0
 .../src/main/webapp/WEB-INF/view/react/.eslintrc    |   0
 .../src/main/webapp/WEB-INF/view/react/.gitignore   |   0
 .../webapp/WEB-INF/view/react/package-lock.json     |   0
 .../src/main/webapp/WEB-INF/view/react/package.json |   0
 .../webapp/WEB-INF/view/react/public/favicon.ico    | Bin
 .../webapp/WEB-INF/view/react/public/index.html     |   0
 .../webapp/WEB-INF/view/react/public/manifest.json  |   0
 .../src/main/webapp/WEB-INF/view/react/src/Form.js  |   0
 .../src/main/webapp/WEB-INF/view/react/src/Input.js |   0
 .../main/webapp/WEB-INF/view/react/src/index.css    |   0
 .../src/main/webapp/WEB-INF/view/react/src/index.js |   0
 .../WEB-INF/view/react/src/registerServiceWorker.js |   0
 .../src/main/webapp/WEB-INF/web.xml                 |   0
 .../test/java/com/baeldung/SpringContextTest.java   |   0
 27 files changed, 2 insertions(+), 2 deletions(-)
 rename spring-security-modules/{spring-security-react => spring-security-web-react}/.gitignore (100%)
 rename spring-security-modules/{spring-security-react => spring-security-web-react}/README.md (100%)
 rename spring-security-modules/{spring-security-react => spring-security-web-react}/pom.xml (98%)
 rename spring-security-modules/{spring-security-react => spring-security-web-react}/src/main/java/com/baeldung/spring/MvcConfig.java (100%)
 rename spring-security-modules/{spring-security-react => spring-security-web-react}/src/main/java/com/baeldung/spring/SecSecurityConfig.java (100%)
 rename spring-security-modules/{spring-security-react => spring-security-web-react}/src/main/resources/logback.xml (100%)
 rename spring-security-modules/{spring-security-react => spring-security-web-react}/src/main/webapp/WEB-INF/mvc-servlet.xml (100%)
 rename spring-security-modules/{spring-security-react => spring-security-web-react}/src/main/webapp/WEB-INF/view/accessDenied.jsp (100%)
 rename spring-security-modules/{spring-security-react => spring-security-web-react}/src/main/webapp/WEB-INF/view/admin/adminpage.jsp (100%)
 rename spring-security-modules/{spring-security-react => spring-security-web-react}/src/main/webapp/WEB-INF/view/anonymous.jsp (100%)
 rename spring-security-modules/{spring-security-react => spring-security-web-react}/src/main/webapp/WEB-INF/view/homepage.jsp (100%)
 rename spring-security-modules/{spring-security-react => spring-security-web-react}/src/main/webapp/WEB-INF/view/react/.babelrc (100%)
 rename spring-security-modules/{spring-security-react => spring-security-web-react}/src/main/webapp/WEB-INF/view/react/.eslintignore (100%)
 rename spring-security-modules/{spring-security-react => spring-security-web-react}/src/main/webapp/WEB-INF/view/react/.eslintrc (100%)
 rename spring-security-modules/{spring-security-react => spring-security-web-react}/src/main/webapp/WEB-INF/view/react/.gitignore (100%)
 rename spring-security-modules/{spring-security-react => spring-security-web-react}/src/main/webapp/WEB-INF/view/react/package-lock.json (100%)
 rename spring-security-modules/{spring-security-react => spring-security-web-react}/src/main/webapp/WEB-INF/view/react/package.json (100%)
 rename spring-security-modules/{spring-security-react => spring-security-web-react}/src/main/webapp/WEB-INF/view/react/public/favicon.ico (100%)
 rename spring-security-modules/{spring-security-react => spring-security-web-react}/src/main/webapp/WEB-INF/view/react/public/index.html (100%)
 rename spring-security-modules/{spring-security-react => spring-security-web-react}/src/main/webapp/WEB-INF/view/react/public/manifest.json (100%)
 rename spring-security-modules/{spring-security-react => spring-security-web-react}/src/main/webapp/WEB-INF/view/react/src/Form.js (100%)
 rename spring-security-modules/{spring-security-react => spring-security-web-react}/src/main/webapp/WEB-INF/view/react/src/Input.js (100%)
 rename spring-security-modules/{spring-security-react => spring-security-web-react}/src/main/webapp/WEB-INF/view/react/src/index.css (100%)
 rename spring-security-modules/{spring-security-react => spring-security-web-react}/src/main/webapp/WEB-INF/view/react/src/index.js (100%)
 rename spring-security-modules/{spring-security-react => spring-security-web-react}/src/main/webapp/WEB-INF/view/react/src/registerServiceWorker.js (100%)
 rename spring-security-modules/{spring-security-react => spring-security-web-react}/src/main/webapp/WEB-INF/web.xml (100%)
 rename spring-security-modules/{spring-security-react => spring-security-web-react}/src/test/java/com/baeldung/SpringContextTest.java (100%)

diff --git a/spring-security-modules/spring-security-react/.gitignore b/spring-security-modules/spring-security-web-react/.gitignore
similarity index 100%
rename from spring-security-modules/spring-security-react/.gitignore
rename to spring-security-modules/spring-security-web-react/.gitignore
diff --git a/spring-security-modules/spring-security-react/README.md b/spring-security-modules/spring-security-web-react/README.md
similarity index 100%
rename from spring-security-modules/spring-security-react/README.md
rename to spring-security-modules/spring-security-web-react/README.md
diff --git a/spring-security-modules/spring-security-react/pom.xml b/spring-security-modules/spring-security-web-react/pom.xml
similarity index 98%
rename from spring-security-modules/spring-security-react/pom.xml
rename to spring-security-modules/spring-security-web-react/pom.xml
index 19240fe88c..d0ca6f8c8d 100644
--- a/spring-security-modules/spring-security-react/pom.xml
+++ b/spring-security-modules/spring-security-web-react/pom.xml
@@ -2,9 +2,9 @@
 <project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
          xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
     <modelVersion>4.0.0</modelVersion>
-    <artifactId>spring-security-react</artifactId>
+    <artifactId>spring-security-web-react</artifactId>
     <version>0.1-SNAPSHOT</version>
-    <name>spring-security-react</name>
+    <name>spring-security-web-react</name>
     <packaging>war</packaging>
 
     <parent>
diff --git a/spring-security-modules/spring-security-react/src/main/java/com/baeldung/spring/MvcConfig.java b/spring-security-modules/spring-security-web-react/src/main/java/com/baeldung/spring/MvcConfig.java
similarity index 100%
rename from spring-security-modules/spring-security-react/src/main/java/com/baeldung/spring/MvcConfig.java
rename to spring-security-modules/spring-security-web-react/src/main/java/com/baeldung/spring/MvcConfig.java
diff --git a/spring-security-modules/spring-security-react/src/main/java/com/baeldung/spring/SecSecurityConfig.java b/spring-security-modules/spring-security-web-react/src/main/java/com/baeldung/spring/SecSecurityConfig.java
similarity index 100%
rename from spring-security-modules/spring-security-react/src/main/java/com/baeldung/spring/SecSecurityConfig.java
rename to spring-security-modules/spring-security-web-react/src/main/java/com/baeldung/spring/SecSecurityConfig.java
diff --git a/spring-security-modules/spring-security-react/src/main/resources/logback.xml b/spring-security-modules/spring-security-web-react/src/main/resources/logback.xml
similarity index 100%
rename from spring-security-modules/spring-security-react/src/main/resources/logback.xml
rename to spring-security-modules/spring-security-web-react/src/main/resources/logback.xml
diff --git a/spring-security-modules/spring-security-react/src/main/webapp/WEB-INF/mvc-servlet.xml b/spring-security-modules/spring-security-web-react/src/main/webapp/WEB-INF/mvc-servlet.xml
similarity index 100%
rename from spring-security-modules/spring-security-react/src/main/webapp/WEB-INF/mvc-servlet.xml
rename to spring-security-modules/spring-security-web-react/src/main/webapp/WEB-INF/mvc-servlet.xml
diff --git a/spring-security-modules/spring-security-react/src/main/webapp/WEB-INF/view/accessDenied.jsp b/spring-security-modules/spring-security-web-react/src/main/webapp/WEB-INF/view/accessDenied.jsp
similarity index 100%
rename from spring-security-modules/spring-security-react/src/main/webapp/WEB-INF/view/accessDenied.jsp
rename to spring-security-modules/spring-security-web-react/src/main/webapp/WEB-INF/view/accessDenied.jsp
diff --git a/spring-security-modules/spring-security-react/src/main/webapp/WEB-INF/view/admin/adminpage.jsp b/spring-security-modules/spring-security-web-react/src/main/webapp/WEB-INF/view/admin/adminpage.jsp
similarity index 100%
rename from spring-security-modules/spring-security-react/src/main/webapp/WEB-INF/view/admin/adminpage.jsp
rename to spring-security-modules/spring-security-web-react/src/main/webapp/WEB-INF/view/admin/adminpage.jsp
diff --git a/spring-security-modules/spring-security-react/src/main/webapp/WEB-INF/view/anonymous.jsp b/spring-security-modules/spring-security-web-react/src/main/webapp/WEB-INF/view/anonymous.jsp
similarity index 100%
rename from spring-security-modules/spring-security-react/src/main/webapp/WEB-INF/view/anonymous.jsp
rename to spring-security-modules/spring-security-web-react/src/main/webapp/WEB-INF/view/anonymous.jsp
diff --git a/spring-security-modules/spring-security-react/src/main/webapp/WEB-INF/view/homepage.jsp b/spring-security-modules/spring-security-web-react/src/main/webapp/WEB-INF/view/homepage.jsp
similarity index 100%
rename from spring-security-modules/spring-security-react/src/main/webapp/WEB-INF/view/homepage.jsp
rename to spring-security-modules/spring-security-web-react/src/main/webapp/WEB-INF/view/homepage.jsp
diff --git a/spring-security-modules/spring-security-react/src/main/webapp/WEB-INF/view/react/.babelrc b/spring-security-modules/spring-security-web-react/src/main/webapp/WEB-INF/view/react/.babelrc
similarity index 100%
rename from spring-security-modules/spring-security-react/src/main/webapp/WEB-INF/view/react/.babelrc
rename to spring-security-modules/spring-security-web-react/src/main/webapp/WEB-INF/view/react/.babelrc
diff --git a/spring-security-modules/spring-security-react/src/main/webapp/WEB-INF/view/react/.eslintignore b/spring-security-modules/spring-security-web-react/src/main/webapp/WEB-INF/view/react/.eslintignore
similarity index 100%
rename from spring-security-modules/spring-security-react/src/main/webapp/WEB-INF/view/react/.eslintignore
rename to spring-security-modules/spring-security-web-react/src/main/webapp/WEB-INF/view/react/.eslintignore
diff --git a/spring-security-modules/spring-security-react/src/main/webapp/WEB-INF/view/react/.eslintrc b/spring-security-modules/spring-security-web-react/src/main/webapp/WEB-INF/view/react/.eslintrc
similarity index 100%
rename from spring-security-modules/spring-security-react/src/main/webapp/WEB-INF/view/react/.eslintrc
rename to spring-security-modules/spring-security-web-react/src/main/webapp/WEB-INF/view/react/.eslintrc
diff --git a/spring-security-modules/spring-security-react/src/main/webapp/WEB-INF/view/react/.gitignore b/spring-security-modules/spring-security-web-react/src/main/webapp/WEB-INF/view/react/.gitignore
similarity index 100%
rename from spring-security-modules/spring-security-react/src/main/webapp/WEB-INF/view/react/.gitignore
rename to spring-security-modules/spring-security-web-react/src/main/webapp/WEB-INF/view/react/.gitignore
diff --git a/spring-security-modules/spring-security-react/src/main/webapp/WEB-INF/view/react/package-lock.json b/spring-security-modules/spring-security-web-react/src/main/webapp/WEB-INF/view/react/package-lock.json
similarity index 100%
rename from spring-security-modules/spring-security-react/src/main/webapp/WEB-INF/view/react/package-lock.json
rename to spring-security-modules/spring-security-web-react/src/main/webapp/WEB-INF/view/react/package-lock.json
diff --git a/spring-security-modules/spring-security-react/src/main/webapp/WEB-INF/view/react/package.json b/spring-security-modules/spring-security-web-react/src/main/webapp/WEB-INF/view/react/package.json
similarity index 100%
rename from spring-security-modules/spring-security-react/src/main/webapp/WEB-INF/view/react/package.json
rename to spring-security-modules/spring-security-web-react/src/main/webapp/WEB-INF/view/react/package.json
diff --git a/spring-security-modules/spring-security-react/src/main/webapp/WEB-INF/view/react/public/favicon.ico b/spring-security-modules/spring-security-web-react/src/main/webapp/WEB-INF/view/react/public/favicon.ico
similarity index 100%
rename from spring-security-modules/spring-security-react/src/main/webapp/WEB-INF/view/react/public/favicon.ico
rename to spring-security-modules/spring-security-web-react/src/main/webapp/WEB-INF/view/react/public/favicon.ico
diff --git a/spring-security-modules/spring-security-react/src/main/webapp/WEB-INF/view/react/public/index.html b/spring-security-modules/spring-security-web-react/src/main/webapp/WEB-INF/view/react/public/index.html
similarity index 100%
rename from spring-security-modules/spring-security-react/src/main/webapp/WEB-INF/view/react/public/index.html
rename to spring-security-modules/spring-security-web-react/src/main/webapp/WEB-INF/view/react/public/index.html
diff --git a/spring-security-modules/spring-security-react/src/main/webapp/WEB-INF/view/react/public/manifest.json b/spring-security-modules/spring-security-web-react/src/main/webapp/WEB-INF/view/react/public/manifest.json
similarity index 100%
rename from spring-security-modules/spring-security-react/src/main/webapp/WEB-INF/view/react/public/manifest.json
rename to spring-security-modules/spring-security-web-react/src/main/webapp/WEB-INF/view/react/public/manifest.json
diff --git a/spring-security-modules/spring-security-react/src/main/webapp/WEB-INF/view/react/src/Form.js b/spring-security-modules/spring-security-web-react/src/main/webapp/WEB-INF/view/react/src/Form.js
similarity index 100%
rename from spring-security-modules/spring-security-react/src/main/webapp/WEB-INF/view/react/src/Form.js
rename to spring-security-modules/spring-security-web-react/src/main/webapp/WEB-INF/view/react/src/Form.js
diff --git a/spring-security-modules/spring-security-react/src/main/webapp/WEB-INF/view/react/src/Input.js b/spring-security-modules/spring-security-web-react/src/main/webapp/WEB-INF/view/react/src/Input.js
similarity index 100%
rename from spring-security-modules/spring-security-react/src/main/webapp/WEB-INF/view/react/src/Input.js
rename to spring-security-modules/spring-security-web-react/src/main/webapp/WEB-INF/view/react/src/Input.js
diff --git a/spring-security-modules/spring-security-react/src/main/webapp/WEB-INF/view/react/src/index.css b/spring-security-modules/spring-security-web-react/src/main/webapp/WEB-INF/view/react/src/index.css
similarity index 100%
rename from spring-security-modules/spring-security-react/src/main/webapp/WEB-INF/view/react/src/index.css
rename to spring-security-modules/spring-security-web-react/src/main/webapp/WEB-INF/view/react/src/index.css
diff --git a/spring-security-modules/spring-security-react/src/main/webapp/WEB-INF/view/react/src/index.js b/spring-security-modules/spring-security-web-react/src/main/webapp/WEB-INF/view/react/src/index.js
similarity index 100%
rename from spring-security-modules/spring-security-react/src/main/webapp/WEB-INF/view/react/src/index.js
rename to spring-security-modules/spring-security-web-react/src/main/webapp/WEB-INF/view/react/src/index.js
diff --git a/spring-security-modules/spring-security-react/src/main/webapp/WEB-INF/view/react/src/registerServiceWorker.js b/spring-security-modules/spring-security-web-react/src/main/webapp/WEB-INF/view/react/src/registerServiceWorker.js
similarity index 100%
rename from spring-security-modules/spring-security-react/src/main/webapp/WEB-INF/view/react/src/registerServiceWorker.js
rename to spring-security-modules/spring-security-web-react/src/main/webapp/WEB-INF/view/react/src/registerServiceWorker.js
diff --git a/spring-security-modules/spring-security-react/src/main/webapp/WEB-INF/web.xml b/spring-security-modules/spring-security-web-react/src/main/webapp/WEB-INF/web.xml
similarity index 100%
rename from spring-security-modules/spring-security-react/src/main/webapp/WEB-INF/web.xml
rename to spring-security-modules/spring-security-web-react/src/main/webapp/WEB-INF/web.xml
diff --git a/spring-security-modules/spring-security-react/src/test/java/com/baeldung/SpringContextTest.java b/spring-security-modules/spring-security-web-react/src/test/java/com/baeldung/SpringContextTest.java
similarity index 100%
rename from spring-security-modules/spring-security-react/src/test/java/com/baeldung/SpringContextTest.java
rename to spring-security-modules/spring-security-web-react/src/test/java/com/baeldung/SpringContextTest.java

From 12d16d9c850ebecc7cbc0c1a7fc4340730695234 Mon Sep 17 00:00:00 2001
From: sampadawagde <sampada.wagde@gmail.com>
Date: Sun, 16 Aug 2020 16:34:03 +0530
Subject: [PATCH 129/156] JAVA-68: parent module pom changes as per child
 module renaming

---
 spring-security-modules/pom.xml | 10 +++++-----
 1 file changed, 5 insertions(+), 5 deletions(-)

diff --git a/spring-security-modules/pom.xml b/spring-security-modules/pom.xml
index f050b48ac5..815b84d448 100644
--- a/spring-security-modules/pom.xml
+++ b/spring-security-modules/pom.xml
@@ -24,14 +24,14 @@
         <module>spring-security-web-boot-2</module>
         <module>spring-security-web-mvc-custom</module>
         <module>spring-security-web-digest-auth</module>
-        <module>spring-security-mvc-jsonview</module>
+        <module>spring-security-web-jsonview</module>
         <module>spring-security-ldap</module>
-        <module>spring-security-mvc-login</module>
-        <module>spring-security-mvc-persisted-remember-me</module>
-        <module>spring-security-mvc-socket</module>
+        <module>spring-security-web-login</module>
+        <module>spring-security-web-persisted-remember-me</module>
+        <module>spring-security-web-sockets</module>
         <module>spring-security-oidc</module>
         <module>spring-security-okta</module>
-        <module>spring-security-react</module>   
+        <module>spring-security-web-react</module>   
         <module>spring-security-rest</module>
         <module>spring-security-rest-basic-auth</module>
         <module>spring-security-rest-custom</module>

From 00d8cdc2524cac8c1a3dd3cff243b81ca24e8a53 Mon Sep 17 00:00:00 2001
From: sampadawagde <sampada.wagde@gmail.com>
Date: Sun, 16 Aug 2020 16:37:06 +0530
Subject: [PATCH 130/156] JAVA-68: README changes

---
 spring-security-modules/spring-security-web-jsonview/README.md | 2 +-
 spring-security-modules/spring-security-web-sockets/README.md  | 2 +-
 2 files changed, 2 insertions(+), 2 deletions(-)

diff --git a/spring-security-modules/spring-security-web-jsonview/README.md b/spring-security-modules/spring-security-web-jsonview/README.md
index 0e28d4c292..83f8106df9 100644
--- a/spring-security-modules/spring-security-web-jsonview/README.md
+++ b/spring-security-modules/spring-security-web-jsonview/README.md
@@ -1,4 +1,4 @@
-## Spring Security MVC Json View
+## Spring Security Web Json View
 
 This module contains articles about Spring Security with JSON
 
diff --git a/spring-security-modules/spring-security-web-sockets/README.md b/spring-security-modules/spring-security-web-sockets/README.md
index d134d19c84..14ef0c8b99 100644
--- a/spring-security-modules/spring-security-web-sockets/README.md
+++ b/spring-security-modules/spring-security-web-sockets/README.md
@@ -1,4 +1,4 @@
-## Spring Security MVC Socket
+## Spring Security Web Sockets
 
 This module contains articles about WebSockets with Spring Security 
 

From a32ecbeb8a75329707d4f9c899fe39a8737f7e7d Mon Sep 17 00:00:00 2001
From: bfontana <bruno.fontana@gmail.com>
Date: Sun, 16 Aug 2020 18:32:19 -0300
Subject: [PATCH 131/156] Delete README.md

File will be added after the article is published.
---
 spring-webflux-threads/README.md | 7 -------
 1 file changed, 7 deletions(-)
 delete mode 100644 spring-webflux-threads/README.md

diff --git a/spring-webflux-threads/README.md b/spring-webflux-threads/README.md
deleted file mode 100644
index b69ba958c1..0000000000
--- a/spring-webflux-threads/README.md
+++ /dev/null
@@ -1,7 +0,0 @@
-## Spring WebFlux Concurrency
-
-This module contains articles about concurrency model in Spring WebFlux.
-
-### Relevant Articles: 
-
-- [Concurrency in Spring WebFlux]()

From 1c432896ca36bded5196933a5c804d1cc986f5f4 Mon Sep 17 00:00:00 2001
From: bfontana <bruno.fontana@gmail.com>
Date: Sun, 16 Aug 2020 19:21:54 -0300
Subject: [PATCH 132/156] Update Application.java

Minor Javadoc fixings.
---
 .../src/main/java/com/baeldung/webflux/Application.java       | 4 ++--
 1 file changed, 2 insertions(+), 2 deletions(-)

diff --git a/spring-webflux-threads/src/main/java/com/baeldung/webflux/Application.java b/spring-webflux-threads/src/main/java/com/baeldung/webflux/Application.java
index a0cd7d6a27..06a148a77f 100644
--- a/spring-webflux-threads/src/main/java/com/baeldung/webflux/Application.java
+++ b/spring-webflux-threads/src/main/java/com/baeldung/webflux/Application.java
@@ -4,8 +4,8 @@ import org.springframework.boot.SpringApplication;
 import org.springframework.boot.autoconfigure.SpringBootApplication;
 
 /**
-* Please note that this assumes Mongo and Kafka to be running on the local machine on default configurations.
-* If you want to experiment with Tomcat/Jetty instead of Netty, just uncomment the lines in pom.xml and rebuild.
+* Please note we assume Mongo and Kafka are running in the local machine and on default configuration.
+* Additionally, if you want to experiment with Tomcat/Jetty instead of Netty, just uncomment the lines in pom.xml and rebuild.
 */
 @SpringBootApplication
 public class Application {

From 62432a25320d7caec51e6ad6573968fbed6d83e5 Mon Sep 17 00:00:00 2001
From: Amit Pandey <amit2103@users.noreply.github.com>
Date: Mon, 17 Aug 2020 10:30:19 +0530
Subject: [PATCH 133/156] Java 2387 (#9882)

* fix junit test cases

* added module in parent build
---
 .../com/baeldung/datetime/UseDateTimeFormatterUnitTest.java | 2 +-
 .../java/com/baeldung/datetime/UseToInstantUnitTest.java    | 6 ++++--
 .../com/baeldung/datetime/UseZonedDateTimeUnitTest.java     | 2 +-
 core-java-modules/pom.xml                                   | 1 +
 4 files changed, 7 insertions(+), 4 deletions(-)

diff --git a/core-java-modules/core-java-8-datetime/src/test/java/com/baeldung/datetime/UseDateTimeFormatterUnitTest.java b/core-java-modules/core-java-8-datetime/src/test/java/com/baeldung/datetime/UseDateTimeFormatterUnitTest.java
index 797e0b954a..8ca0066a0d 100644
--- a/core-java-modules/core-java-8-datetime/src/test/java/com/baeldung/datetime/UseDateTimeFormatterUnitTest.java
+++ b/core-java-modules/core-java-8-datetime/src/test/java/com/baeldung/datetime/UseDateTimeFormatterUnitTest.java
@@ -31,6 +31,6 @@ public class UseDateTimeFormatterUnitTest {
     public void givenALocalDate_whenFormattingWithStyleAndLocale_thenPass() {
         String result = subject.formatWithStyleAndLocale(localDateTime, FormatStyle.MEDIUM, Locale.UK);
 
-        assertThat(result).isEqualTo("25 Jan 2015, 06:30:00");
+        assertThat(result).isEqualTo("25-Jan-2015 06:30:00");
     }
 }
\ No newline at end of file
diff --git a/core-java-modules/core-java-8-datetime/src/test/java/com/baeldung/datetime/UseToInstantUnitTest.java b/core-java-modules/core-java-8-datetime/src/test/java/com/baeldung/datetime/UseToInstantUnitTest.java
index 78d9a647fe..cb6e804284 100644
--- a/core-java-modules/core-java-8-datetime/src/test/java/com/baeldung/datetime/UseToInstantUnitTest.java
+++ b/core-java-modules/core-java-8-datetime/src/test/java/com/baeldung/datetime/UseToInstantUnitTest.java
@@ -3,6 +3,7 @@ package com.baeldung.datetime;
 import static org.assertj.core.api.Assertions.assertThat;
 
 import java.time.LocalDateTime;
+import java.time.ZoneId;
 import java.util.Calendar;
 import java.util.Date;
 import java.util.GregorianCalendar;
@@ -24,10 +25,11 @@ public class UseToInstantUnitTest {
 
     @Test
     public void givenADate_whenConvertingToLocalDate_thenAsExpected() {
-        Date givenDate = new Date(1465817690000L);
+        LocalDateTime currentDateTime = LocalDateTime.now();
+        Date givenDate = Date.from(currentDateTime.atZone(ZoneId.systemDefault()).toInstant());
 
         LocalDateTime localDateTime = subject.convertDateToLocalDate(givenDate);
 
-        assertThat(localDateTime).isEqualTo("2016-06-13T13:34:50");
+        assertThat(localDateTime).isEqualTo(currentDateTime);
     }
 }
\ No newline at end of file
diff --git a/core-java-modules/core-java-8-datetime/src/test/java/com/baeldung/datetime/UseZonedDateTimeUnitTest.java b/core-java-modules/core-java-8-datetime/src/test/java/com/baeldung/datetime/UseZonedDateTimeUnitTest.java
index 4a39f6056e..0ee0f72d78 100644
--- a/core-java-modules/core-java-8-datetime/src/test/java/com/baeldung/datetime/UseZonedDateTimeUnitTest.java
+++ b/core-java-modules/core-java-8-datetime/src/test/java/com/baeldung/datetime/UseZonedDateTimeUnitTest.java
@@ -54,7 +54,7 @@ public class UseZonedDateTimeUnitTest {
     @Test
     public void givenAStringWithTimeZone_whenParsing_thenEqualsExpected() {
         ZonedDateTime resultFromString = zonedDateTime.getZonedDateTimeUsingParseMethod("2015-05-03T10:15:30+01:00[Europe/Paris]");
-        ZonedDateTime resultFromLocalDateTime = ZonedDateTime.of(2015, 5, 3, 11, 15, 30, 0, ZoneId.of("Europe/Paris"));
+        ZonedDateTime resultFromLocalDateTime = ZonedDateTime.of(2015, 5, 3, 10, 15, 30, 0, ZoneId.of("Europe/Paris"));
 
         assertThat(resultFromString.getZone()).isEqualTo(ZoneId.of("Europe/Paris"));
         assertThat(resultFromLocalDateTime.getZone()).isEqualTo(ZoneId.of("Europe/Paris"));
diff --git a/core-java-modules/pom.xml b/core-java-modules/pom.xml
index 589097cf48..e6fd449c87 100644
--- a/core-java-modules/pom.xml
+++ b/core-java-modules/pom.xml
@@ -64,6 +64,7 @@
         <module>core-java-date-operations-2</module>
         <!-- We haven't upgraded to java 9. -->
         <!-- <module>core-java-datetime-computations</module> <module>core-java-datetime-conversion</module> <module>core-java-datetime-java8</module> <module>core-java-datetime-string</module> -->
+        <module>core-java-8-datetime</module>
 
         <module>core-java-exceptions</module>
         <module>core-java-exceptions-2</module>

From 2bad67ff3831f2fd4b907983d3e726fa00c8b3d7 Mon Sep 17 00:00:00 2001
From: Amit Pandey <amit2103@users.noreply.github.com>
Date: Mon, 17 Aug 2020 10:33:20 +0530
Subject: [PATCH 134/156] added modules in parent (#9842)

* added modules in parent

* commented failed modules in pom
---
 core-java-modules/pom.xml                              | 5 +++++
 patterns/pom.xml                                       | 1 +
 persistence-modules/pom.xml                            | 2 ++
 spring-boot-modules/spring-boot-custom-starter/pom.xml | 1 +
 spring-cloud/pom.xml                                   | 2 ++
 spring-cloud/spring-cloud-stream/pom.xml               | 2 ++
 6 files changed, 13 insertions(+)

diff --git a/core-java-modules/pom.xml b/core-java-modules/pom.xml
index e6fd449c87..0b832223f4 100644
--- a/core-java-modules/pom.xml
+++ b/core-java-modules/pom.xml
@@ -22,6 +22,7 @@
         <!-- <module>core-java-11</module> --> <!-- We haven't upgraded to java 11. Fixing in BAEL-10841 -->
         <!-- <module>core-java-12</module> --> <!-- We haven't upgraded to java 12. Fixing in BAEL-10841 -->
         <!-- <module>core-java-13</module> --> <!-- We haven't upgraded to java 12. Fixing in BAEL-10841 -->
+        <!-- <module>core-java-14</module> --> <!-- We haven't upgraded to java 14.-->
         <module>core-java-8</module>
         <module>core-java-8-2</module>
 
@@ -59,7 +60,11 @@
         <module>core-java-concurrency-basic</module>
         <module>core-java-concurrency-basic-2</module>
         <module>core-java-concurrency-collections</module>
+        <module>core-java-concurrency-collections-2</module>
+        <module>core-java-console</module>
 
+        <!--<module>core-java-8-datetime</module>--> <!-- unit test case failure -->
+        <module>core-java-8-datetime-2</module>
         <!-- <module>core-java-date-operations-1</module> --> <!-- We haven't upgraded to java 9. Fixing in BAEL-10841 -->
         <module>core-java-date-operations-2</module>
         <!-- We haven't upgraded to java 9. -->
diff --git a/patterns/pom.xml b/patterns/pom.xml
index e1753aba56..a179d75ffe 100644
--- a/patterns/pom.xml
+++ b/patterns/pom.xml
@@ -21,6 +21,7 @@
         <module>dip</module>
         <module>cqrs-es</module>
         <module>front-controller</module>
+        <module>hexagonal-architecture</module>
         <module>intercepting-filter</module>
         <module>solid</module>
     </modules>
diff --git a/persistence-modules/pom.xml b/persistence-modules/pom.xml
index 6186900a6e..3e1a90b737 100644
--- a/persistence-modules/pom.xml
+++ b/persistence-modules/pom.xml
@@ -19,12 +19,14 @@
         <module>core-java-persistence</module>
         <module>deltaspike</module>
         <module>elasticsearch</module>
+        <module>flyway</module>
         <module>flyway-repair</module>
         <module>hbase</module>
         <module>hibernate5</module>
         <module>hibernate-mapping</module> <!-- long running -->
         <module>hibernate-ogm</module>
         <module>hibernate-annotations</module>
+        <module>hibernate-exceptions</module>
         <module>hibernate-libraries</module>
         <module>hibernate-jpa</module>
         <module>hibernate-queries</module>
diff --git a/spring-boot-modules/spring-boot-custom-starter/pom.xml b/spring-boot-modules/spring-boot-custom-starter/pom.xml
index 17f9fdc2cc..338bf22f46 100644
--- a/spring-boot-modules/spring-boot-custom-starter/pom.xml
+++ b/spring-boot-modules/spring-boot-custom-starter/pom.xml
@@ -18,6 +18,7 @@
 
     <modules>
         <module>greeter-library</module>
+        <module>greeter</module>
         <module>greeter-spring-boot-autoconfigure</module>
         <module>greeter-spring-boot-starter</module>
         <module>greeter-spring-boot-sample-app</module>
diff --git a/spring-cloud/pom.xml b/spring-cloud/pom.xml
index 0e2cac1ff9..99fde0daf4 100644
--- a/spring-cloud/pom.xml
+++ b/spring-cloud/pom.xml
@@ -41,6 +41,8 @@
         <module>spring-cloud-zuul</module>
         <module>spring-cloud-zuul-fallback</module>
         <module>spring-cloud-ribbon-retry</module>
+        <module>spring-cloud-circuit-breaker</module>
+        <module>spring-cloud-eureka-self-preservation</module>
     </modules>
 
     <build>
diff --git a/spring-cloud/spring-cloud-stream/pom.xml b/spring-cloud/spring-cloud-stream/pom.xml
index ebaaab0801..17c788c000 100644
--- a/spring-cloud/spring-cloud-stream/pom.xml
+++ b/spring-cloud/spring-cloud-stream/pom.xml
@@ -14,7 +14,9 @@
     </parent>
 
     <modules>
+        <module>spring-cloud-stream-kafka</module>
         <module>spring-cloud-stream-rabbit</module>
+        <module>spring-cloud-stream-kinesis</module>
     </modules>
 
     <dependencyManagement>

From b6e9fa3848f96fdd6628bf5919f2b6604f324485 Mon Sep 17 00:00:00 2001
From: Rutuja Joshi <67615932+rutujavjoshi@users.noreply.github.com>
Date: Mon, 17 Aug 2020 16:48:47 +0530
Subject: [PATCH 135/156] Delete MainMenuUnitTest.java

Moving code to  a new module - core-java-exceptions-3
---
 .../nosuchmethoderror/MainMenuUnitTest.java        | 14 --------------
 1 file changed, 14 deletions(-)
 delete mode 100644 core-java-modules/core-java-exceptions/src/test/java/com/baeldung/exceptions/nosuchmethoderror/MainMenuUnitTest.java

diff --git a/core-java-modules/core-java-exceptions/src/test/java/com/baeldung/exceptions/nosuchmethoderror/MainMenuUnitTest.java b/core-java-modules/core-java-exceptions/src/test/java/com/baeldung/exceptions/nosuchmethoderror/MainMenuUnitTest.java
deleted file mode 100644
index 7e53fa9c0e..0000000000
--- a/core-java-modules/core-java-exceptions/src/test/java/com/baeldung/exceptions/nosuchmethoderror/MainMenuUnitTest.java
+++ /dev/null
@@ -1,14 +0,0 @@
-package com.baeldung.exceptions.nosuchmethoderror;
-
-import static org.junit.Assert.assertNotNull;
-
-import org.junit.jupiter.api.Test;
-
-class MainMenuUnitTest {
-
-	@Test
-	void whenGetSpecials_thenNotNull() {
-		assertNotNull(MainMenu.getSpecials());
-	} 
- 
-}

From 02fb2aee854d7e11f3a39cdb8c2abcf86451c5f7 Mon Sep 17 00:00:00 2001
From: Rutuja Joshi <67615932+rutujavjoshi@users.noreply.github.com>
Date: Mon, 17 Aug 2020 16:50:59 +0530
Subject: [PATCH 136/156] Delete MainMenu.java

Moving code to  a new module - core-java-exceptions-3
---
 .../exceptions/nosuchmethoderror/MainMenu.java        | 11 -----------
 1 file changed, 11 deletions(-)
 delete mode 100644 core-java-modules/core-java-exceptions/src/main/java/com/baeldung/exceptions/nosuchmethoderror/MainMenu.java

diff --git a/core-java-modules/core-java-exceptions/src/main/java/com/baeldung/exceptions/nosuchmethoderror/MainMenu.java b/core-java-modules/core-java-exceptions/src/main/java/com/baeldung/exceptions/nosuchmethoderror/MainMenu.java
deleted file mode 100644
index f12cbe1897..0000000000
--- a/core-java-modules/core-java-exceptions/src/main/java/com/baeldung/exceptions/nosuchmethoderror/MainMenu.java
+++ /dev/null
@@ -1,11 +0,0 @@
-package com.baeldung.exceptions.nosuchmethoderror;
-
-public class MainMenu {
-    public static void main(String[] args) {
-        System.out.println("Today's Specials: " + getSpecials());
-    }
-
-    public static String getSpecials() {
-        return SpecialToday.getDesert();
-    }
-}

From ccad8d217f11a0d99b0e2853b4bed93076fe7099 Mon Sep 17 00:00:00 2001
From: Rutuja Joshi <67615932+rutujavjoshi@users.noreply.github.com>
Date: Mon, 17 Aug 2020 16:51:16 +0530
Subject: [PATCH 137/156] Delete SpecialToday.java

Moving code to  a new module - core-java-exceptions-3
---
 .../exceptions/nosuchmethoderror/SpecialToday.java        | 8 --------
 1 file changed, 8 deletions(-)
 delete mode 100644 core-java-modules/core-java-exceptions/src/main/java/com/baeldung/exceptions/nosuchmethoderror/SpecialToday.java

diff --git a/core-java-modules/core-java-exceptions/src/main/java/com/baeldung/exceptions/nosuchmethoderror/SpecialToday.java b/core-java-modules/core-java-exceptions/src/main/java/com/baeldung/exceptions/nosuchmethoderror/SpecialToday.java
deleted file mode 100644
index 1b0dea9784..0000000000
--- a/core-java-modules/core-java-exceptions/src/main/java/com/baeldung/exceptions/nosuchmethoderror/SpecialToday.java
+++ /dev/null
@@ -1,8 +0,0 @@
-package com.baeldung.exceptions.nosuchmethoderror;
-public class SpecialToday {
-    private static String desert = "Chocolate Cake";
-
-    public static String getDesert() {
-        return desert;
-    }
-}

From 3233bd6adc5e5485d9af8573c200291bd95c3beb Mon Sep 17 00:00:00 2001
From: Trixi Turny <writetotrixi@gmail.com>
Date: Mon, 17 Aug 2020 12:41:09 +0100
Subject: [PATCH 138/156] BAEL-4321 add new module to pom

---
 spring-boot-modules/pom.xml | 1 +
 1 file changed, 1 insertion(+)

diff --git a/spring-boot-modules/pom.xml b/spring-boot-modules/pom.xml
index 84f1f0e86c..f4e3e534c8 100644
--- a/spring-boot-modules/pom.xml
+++ b/spring-boot-modules/pom.xml
@@ -56,6 +56,7 @@
         <module>spring-boot-performance</module>
         <module>spring-boot-properties</module>
         <module>spring-boot-properties-2</module>
+        <module>spring-boot-properties-3</module>
         <module>spring-boot-property-exp</module>
         <module>spring-boot-runtime</module>
         <module>spring-boot-security</module>

From 5c46488ac82f826873f7214efd6dc0cb848dc0ea Mon Sep 17 00:00:00 2001
From: Amit Pandey <amit2103@users.noreply.github.com>
Date: Mon, 17 Aug 2020 18:21:42 +0530
Subject: [PATCH 139/156] used standard parent pom (#9885)

---
 .../spring-boot-basic-customization/pom.xml            | 10 ++++------
 1 file changed, 4 insertions(+), 6 deletions(-)

diff --git a/spring-boot-modules/spring-boot-basic-customization/pom.xml b/spring-boot-modules/spring-boot-basic-customization/pom.xml
index 2a4b321c5f..fc34994a85 100644
--- a/spring-boot-modules/spring-boot-basic-customization/pom.xml
+++ b/spring-boot-modules/spring-boot-basic-customization/pom.xml
@@ -4,13 +4,11 @@
          xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
     <modelVersion>4.0.0</modelVersion>
 
-    <!-- an article in the module requires 2.3.x version, hence we are overriding it here.
-         After the parent is upgraded, the explicit version mapping should be removed, and the module should inherit from its parent: spring-boot-modules -->
     <parent>
-        <groupId>org.springframework.boot</groupId>
-        <artifactId>spring-boot-starter-parent</artifactId>
-        <version>2.3.2.RELEASE</version>
-        <relativePath /> 
+        <groupId>com.baeldung.spring-boot-modules</groupId>
+        <artifactId>spring-boot-modules</artifactId>
+        <version>1.0.0-SNAPSHOT</version>
+        <relativePath>../</relativePath>
     </parent>
 
     <artifactId>spring-boot-basic-customization</artifactId>

From f00adab98c004db720aeee3a94db6ed27350ad20 Mon Sep 17 00:00:00 2001
From: Rutuja Joshi <67615932+rutujavjoshi@users.noreply.github.com>
Date: Mon, 17 Aug 2020 19:33:14 +0530
Subject: [PATCH 140/156] BAEL-4193 - initial commit

initial commit in new module core-java-exceptions-3
---
 .../core-java-exceptions-3/README.md          |  6 ++++
 .../core-java-exceptions-3/pom.xml            | 34 +++++++++++++++++++
 .../nosuchmethoderror/MainMenu.java           | 11 ++++++
 .../nosuchmethoderror/SpecialToday.java       |  8 +++++
 .../nosuchmethoderror/MainMenuUnitTest.java   | 13 +++++++
 5 files changed, 72 insertions(+)
 create mode 100644 core-java-modules/core-java-exceptions-3/README.md
 create mode 100644 core-java-modules/core-java-exceptions-3/pom.xml
 create mode 100644 core-java-modules/core-java-exceptions-3/src/main/java/com/baeldung/exceptions/nosuchmethoderror/MainMenu.java
 create mode 100644 core-java-modules/core-java-exceptions-3/src/main/java/com/baeldung/exceptions/nosuchmethoderror/SpecialToday.java
 create mode 100644 core-java-modules/core-java-exceptions-3/src/test/java/com/baeldung/exceptions/nosuchmethoderror/MainMenuUnitTest.java

diff --git a/core-java-modules/core-java-exceptions-3/README.md b/core-java-modules/core-java-exceptions-3/README.md
new file mode 100644
index 0000000000..52fca27486
--- /dev/null
+++ b/core-java-modules/core-java-exceptions-3/README.md
@@ -0,0 +1,6 @@
+## Core Java Exceptions
+
+This module contains articles about core java exceptions
+
+### Relevant articles:
+- [NoSuchMethodError in Java](https://www.baeldung.com/java-chained-exceptions)
diff --git a/core-java-modules/core-java-exceptions-3/pom.xml b/core-java-modules/core-java-exceptions-3/pom.xml
new file mode 100644
index 0000000000..32c522dab5
--- /dev/null
+++ b/core-java-modules/core-java-exceptions-3/pom.xml
@@ -0,0 +1,34 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<project
+    xmlns="http://maven.apache.org/POM/4.0.0"
+    xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+    xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
+    <modelVersion>4.0.0</modelVersion>
+    <groupId>com.baeldung.exceptions</groupId>
+    <artifactId>core-java-exceptions-3</artifactId>
+    <version>0.1.0-SNAPSHOT</version>
+    <name>core-java-exceptions-3</name>
+    <packaging>jar</packaging>
+    <parent>
+        <groupId>com.baeldung.core-java-modules</groupId>
+        <artifactId>core-java-modules</artifactId>
+        <version>0.0.1-SNAPSHOT</version>
+        <relativePath>../</relativePath>
+    </parent>
+
+    <dependencies>
+        <!-- test scoped -->
+        <dependency>
+            <groupId>org.assertj</groupId>
+            <artifactId>assertj-core</artifactId>
+            <version>${assertj-core.version}</version>
+            <scope>test</scope>
+        </dependency>
+    </dependencies>
+
+    <properties>
+        <!-- testing -->
+        <assertj-core.version>3.10.0</assertj-core.version>
+    </properties>
+
+</project>
\ No newline at end of file
diff --git a/core-java-modules/core-java-exceptions-3/src/main/java/com/baeldung/exceptions/nosuchmethoderror/MainMenu.java b/core-java-modules/core-java-exceptions-3/src/main/java/com/baeldung/exceptions/nosuchmethoderror/MainMenu.java
new file mode 100644
index 0000000000..f12cbe1897
--- /dev/null
+++ b/core-java-modules/core-java-exceptions-3/src/main/java/com/baeldung/exceptions/nosuchmethoderror/MainMenu.java
@@ -0,0 +1,11 @@
+package com.baeldung.exceptions.nosuchmethoderror;
+
+public class MainMenu {
+    public static void main(String[] args) {
+        System.out.println("Today's Specials: " + getSpecials());
+    }
+
+    public static String getSpecials() {
+        return SpecialToday.getDesert();
+    }
+}
diff --git a/core-java-modules/core-java-exceptions-3/src/main/java/com/baeldung/exceptions/nosuchmethoderror/SpecialToday.java b/core-java-modules/core-java-exceptions-3/src/main/java/com/baeldung/exceptions/nosuchmethoderror/SpecialToday.java
new file mode 100644
index 0000000000..1b0dea9784
--- /dev/null
+++ b/core-java-modules/core-java-exceptions-3/src/main/java/com/baeldung/exceptions/nosuchmethoderror/SpecialToday.java
@@ -0,0 +1,8 @@
+package com.baeldung.exceptions.nosuchmethoderror;
+public class SpecialToday {
+    private static String desert = "Chocolate Cake";
+
+    public static String getDesert() {
+        return desert;
+    }
+}
diff --git a/core-java-modules/core-java-exceptions-3/src/test/java/com/baeldung/exceptions/nosuchmethoderror/MainMenuUnitTest.java b/core-java-modules/core-java-exceptions-3/src/test/java/com/baeldung/exceptions/nosuchmethoderror/MainMenuUnitTest.java
new file mode 100644
index 0000000000..ce4374a9ba
--- /dev/null
+++ b/core-java-modules/core-java-exceptions-3/src/test/java/com/baeldung/exceptions/nosuchmethoderror/MainMenuUnitTest.java
@@ -0,0 +1,13 @@
+package com.baeldung.exceptions.nosuchmethoderror;
+
+import static org.junit.Assert.assertNotNull;
+
+import org.junit.jupiter.api.Test;
+
+class MainMenuUnitTest {
+
+    @Test
+    void whenGetSpecials_thenNotNull() {
+        assertNotNull(MainMenu.getSpecials());
+    }
+}

From 10d571fd1d93b89f337ce4c87e4b6bf0df8285fd Mon Sep 17 00:00:00 2001
From: Rutuja Joshi <67615932+rutujavjoshi@users.noreply.github.com>
Date: Mon, 17 Aug 2020 19:37:28 +0530
Subject: [PATCH 141/156] pom : added new module core-java-exceptions-3

added new module core-java-exceptions-3
---
 core-java-modules/pom.xml | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/core-java-modules/pom.xml b/core-java-modules/pom.xml
index 589097cf48..29f849ecf7 100644
--- a/core-java-modules/pom.xml
+++ b/core-java-modules/pom.xml
@@ -67,7 +67,7 @@
 
         <module>core-java-exceptions</module>
         <module>core-java-exceptions-2</module>
-
+        <module>core-java-exceptions-3</module>
         <module>core-java-function</module>
 
         <module>core-java-io</module>

From 0d2ae486e100cb5e94c8598670579e8393b690ce Mon Sep 17 00:00:00 2001
From: davidmartinezbarua <davmb5@gmail.com>
Date: Mon, 17 Aug 2020 11:52:28 -0300
Subject: [PATCH 142/156] Revert "BAEL-4321 demo app for yaml to pojo"

---
 spring-boot-modules/pom.xml                   |  1 -
 .../spring-boot-properties-3/pom.xml          | 54 -------------------
 .../boot/properties/DemoApplication.java      | 16 ------
 .../properties/config/TshirtSizeConfig.java   | 27 ----------
 .../controller/TshirtSizeController.java      | 21 --------
 .../properties/service/SizeConverterImpl.java | 22 --------
 .../service/SizeConverterService.java         |  8 ---
 .../src/main/resources/application.yml        | 30 -----------
 .../controller/TshirtSizeControllerTest.java  | 38 -------------
 9 files changed, 217 deletions(-)
 delete mode 100644 spring-boot-modules/spring-boot-properties-3/pom.xml
 delete mode 100644 spring-boot-modules/spring-boot-properties-3/src/main/java/com/baeldung/boot/properties/DemoApplication.java
 delete mode 100644 spring-boot-modules/spring-boot-properties-3/src/main/java/com/baeldung/boot/properties/config/TshirtSizeConfig.java
 delete mode 100644 spring-boot-modules/spring-boot-properties-3/src/main/java/com/baeldung/boot/properties/controller/TshirtSizeController.java
 delete mode 100644 spring-boot-modules/spring-boot-properties-3/src/main/java/com/baeldung/boot/properties/service/SizeConverterImpl.java
 delete mode 100644 spring-boot-modules/spring-boot-properties-3/src/main/java/com/baeldung/boot/properties/service/SizeConverterService.java
 delete mode 100644 spring-boot-modules/spring-boot-properties-3/src/main/resources/application.yml
 delete mode 100644 spring-boot-modules/spring-boot-properties-3/src/test/java/com/baeldung/boot/properties/controller/TshirtSizeControllerTest.java

diff --git a/spring-boot-modules/pom.xml b/spring-boot-modules/pom.xml
index b4cabaaedf..3a2f14f5df 100644
--- a/spring-boot-modules/pom.xml
+++ b/spring-boot-modules/pom.xml
@@ -56,7 +56,6 @@
         <module>spring-boot-performance</module>
         <module>spring-boot-properties</module>
         <module>spring-boot-properties-2</module>
-        <module>spring-boot-properties-3</module>
         <module>spring-boot-property-exp</module>
         <module>spring-boot-runtime</module>
         <module>spring-boot-security</module>
diff --git a/spring-boot-modules/spring-boot-properties-3/pom.xml b/spring-boot-modules/spring-boot-properties-3/pom.xml
deleted file mode 100644
index 1e3d627b19..0000000000
--- a/spring-boot-modules/spring-boot-properties-3/pom.xml
+++ /dev/null
@@ -1,54 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
-	xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 https://maven.apache.org/xsd/maven-4.0.0.xsd">
-	<modelVersion>4.0.0</modelVersion>
-	<parent>
-		<groupId>com.baeldung.spring-boot-modules</groupId>
-		<artifactId>spring-boot-modules</artifactId>
-		<version>1.0.0-SNAPSHOT</version>
-		<relativePath>../</relativePath>
-	</parent>
-
-	<artifactId>spring-boot-properties-3</artifactId>
-	<version>0.0.1-SNAPSHOT</version>
-	<name>spring-boot-properties-3</name>
-	<description>Spring Boot Properties Module</description>
-
-	<properties>
-		<java.version>1.8</java.version>
-	</properties>
-
-	<dependencies>
-		<dependency>
-			<groupId>org.springframework.boot</groupId>
-			<artifactId>spring-boot-starter</artifactId>
-		</dependency>
-
-		<dependency>
-			<groupId>org.springframework.boot</groupId>
-			<artifactId>spring-boot-starter-test</artifactId>
-			<scope>test</scope>
-			<exclusions>
-				<exclusion>
-					<groupId>org.junit.vintage</groupId>
-					<artifactId>junit-vintage-engine</artifactId>
-				</exclusion>
-			</exclusions>
-		</dependency>
-        <dependency>
-            <groupId>org.springframework.boot</groupId>
-            <artifactId>spring-boot-starter-web</artifactId>
-            <version>RELEASE</version>
-        </dependency>
-    </dependencies>
-
-	<build>
-		<plugins>
-			<plugin>
-				<groupId>org.springframework.boot</groupId>
-				<artifactId>spring-boot-maven-plugin</artifactId>
-			</plugin>
-		</plugins>
-	</build>
-
-</project>
diff --git a/spring-boot-modules/spring-boot-properties-3/src/main/java/com/baeldung/boot/properties/DemoApplication.java b/spring-boot-modules/spring-boot-properties-3/src/main/java/com/baeldung/boot/properties/DemoApplication.java
deleted file mode 100644
index cf2fb7f981..0000000000
--- a/spring-boot-modules/spring-boot-properties-3/src/main/java/com/baeldung/boot/properties/DemoApplication.java
+++ /dev/null
@@ -1,16 +0,0 @@
-package com.baeldung.boot.properties;
-
-import com.baeldung.boot.properties.config.TshirtSizeConfig;
-import org.springframework.boot.SpringApplication;
-import org.springframework.boot.autoconfigure.SpringBootApplication;
-import org.springframework.boot.context.properties.EnableConfigurationProperties;
-
-@SpringBootApplication
-@EnableConfigurationProperties(TshirtSizeConfig.class)
-public class DemoApplication {
-
-    public static void main(String[] args) {
-        SpringApplication.run(DemoApplication.class, args);
-    }
-
-}
diff --git a/spring-boot-modules/spring-boot-properties-3/src/main/java/com/baeldung/boot/properties/config/TshirtSizeConfig.java b/spring-boot-modules/spring-boot-properties-3/src/main/java/com/baeldung/boot/properties/config/TshirtSizeConfig.java
deleted file mode 100644
index 690763ab7b..0000000000
--- a/spring-boot-modules/spring-boot-properties-3/src/main/java/com/baeldung/boot/properties/config/TshirtSizeConfig.java
+++ /dev/null
@@ -1,27 +0,0 @@
-package com.baeldung.boot.properties.config;
-
-import org.springframework.boot.context.properties.ConfigurationProperties;
-
-import java.util.Map;
-
-@ConfigurationProperties(prefix = "t-shirt-size")
-public class TshirtSizeConfig {
-
-    private final Map<String, Integer> simpleMapping;
-
-    private final Map<String, Map<String, Integer>> complexMapping;
-
-
-    public TshirtSizeConfig(Map<String, Integer> simpleMapping, Map<String, Map<String, Integer>> complexMapping) {
-        this.simpleMapping = simpleMapping;
-        this.complexMapping = complexMapping;
-    }
-
-    public Map<String, Integer> getSimpleMapping() {
-        return simpleMapping;
-    }
-
-    public Map<String, Map<String, Integer>> getComplexMapping() {
-        return complexMapping;
-    }
-}
diff --git a/spring-boot-modules/spring-boot-properties-3/src/main/java/com/baeldung/boot/properties/controller/TshirtSizeController.java b/spring-boot-modules/spring-boot-properties-3/src/main/java/com/baeldung/boot/properties/controller/TshirtSizeController.java
deleted file mode 100644
index 6b713c5be8..0000000000
--- a/spring-boot-modules/spring-boot-properties-3/src/main/java/com/baeldung/boot/properties/controller/TshirtSizeController.java
+++ /dev/null
@@ -1,21 +0,0 @@
-package com.baeldung.boot.properties.controller;
-
-import org.springframework.web.bind.annotation.*;
-import com.baeldung.boot.properties.service.SizeConverterService;
-
-@RestController
-@RequestMapping(value = "/")
-public class TshirtSizeController {
-
-    private final SizeConverterService service;
-
-    public TshirtSizeController(SizeConverterService service) {
-        this.service = service;
-    }
-
-    @RequestMapping(value ="convertSize", method = RequestMethod.GET)
-    public int convertSize(@RequestParam(value = "label") final String label, @RequestParam(value = "countryCode", required = false) final String countryCode) {
-        return service.convertSize(label, countryCode);
-    }
-
-}
diff --git a/spring-boot-modules/spring-boot-properties-3/src/main/java/com/baeldung/boot/properties/service/SizeConverterImpl.java b/spring-boot-modules/spring-boot-properties-3/src/main/java/com/baeldung/boot/properties/service/SizeConverterImpl.java
deleted file mode 100644
index 34f7fe2ded..0000000000
--- a/spring-boot-modules/spring-boot-properties-3/src/main/java/com/baeldung/boot/properties/service/SizeConverterImpl.java
+++ /dev/null
@@ -1,22 +0,0 @@
-package com.baeldung.boot.properties.service;
-
-import org.springframework.stereotype.Service;
-import com.baeldung.boot.properties.config.TshirtSizeConfig;
-
-
-@Service
-public class SizeConverterImpl implements SizeConverterService {
-
-    private final TshirtSizeConfig tshirtSizeConfig;
-
-    public SizeConverterImpl(TshirtSizeConfig tshirtSizeConfig) {
-        this.tshirtSizeConfig = tshirtSizeConfig;
-    }
-
-    public int  convertSize(String label, String countryCode) {
-        if(countryCode == null) {
-            return tshirtSizeConfig.getSimpleMapping().get(label);
-        }
-        return tshirtSizeConfig.getComplexMapping().get(label).get(countryCode.toLowerCase());
-    }
-}
diff --git a/spring-boot-modules/spring-boot-properties-3/src/main/java/com/baeldung/boot/properties/service/SizeConverterService.java b/spring-boot-modules/spring-boot-properties-3/src/main/java/com/baeldung/boot/properties/service/SizeConverterService.java
deleted file mode 100644
index 412199b176..0000000000
--- a/spring-boot-modules/spring-boot-properties-3/src/main/java/com/baeldung/boot/properties/service/SizeConverterService.java
+++ /dev/null
@@ -1,8 +0,0 @@
-package com.baeldung.boot.properties.service;
-
-
-public interface SizeConverterService {
-
-    int convertSize(String label, String countryCode);
-
-}
diff --git a/spring-boot-modules/spring-boot-properties-3/src/main/resources/application.yml b/spring-boot-modules/spring-boot-properties-3/src/main/resources/application.yml
deleted file mode 100644
index 8779cb6b0c..0000000000
--- a/spring-boot-modules/spring-boot-properties-3/src/main/resources/application.yml
+++ /dev/null
@@ -1,30 +0,0 @@
-  t-shirt-size:
-    simple-mapping:
-      XS: 6
-      S:  8
-      M:  10
-      L:  12
-      XL: 14
-
-
-  complex-mapping:
-    XS:
-      uk: 6
-      fr: 34
-      us: 2
-    S:
-      uk: 8
-      fr: 36
-      us: 4
-    M:
-      uk: 10
-      fr: 38
-      us: 6
-    L:
-      uk: 12
-      fr: 40
-      us: 8
-    XL:
-      uk: 14
-      fr: 42
-      us: 10
diff --git a/spring-boot-modules/spring-boot-properties-3/src/test/java/com/baeldung/boot/properties/controller/TshirtSizeControllerTest.java b/spring-boot-modules/spring-boot-properties-3/src/test/java/com/baeldung/boot/properties/controller/TshirtSizeControllerTest.java
deleted file mode 100644
index 0b70ed8622..0000000000
--- a/spring-boot-modules/spring-boot-properties-3/src/test/java/com/baeldung/boot/properties/controller/TshirtSizeControllerTest.java
+++ /dev/null
@@ -1,38 +0,0 @@
-package com.baeldung.boot.properties.controller;
-
-import org.junit.jupiter.api.Test;
-import org.junit.jupiter.api.extension.ExtendWith;
-import org.mockito.InjectMocks;
-import org.mockito.Mock;
-import org.mockito.junit.jupiter.MockitoExtension;
-import com.baeldung.boot.properties.service.SizeConverterService;
-
-import static org.junit.jupiter.api.Assertions.*;
-import static org.mockito.Mockito.when;
-
-@ExtendWith(MockitoExtension.class)
-class TshirtSizeControllerUnitTest {
-
-    @Mock
-    private SizeConverterService service;
-
-    @InjectMocks
-    private TshirtSizeController tested;
-
-    @Test
-    void whenConvertSize_thenOK() {
-
-        // Given
-        String label = "S";
-        String countryCode = "fr";
-        int result = 36;
-
-        // When
-        when(service.convertSize(label, countryCode)).thenReturn(result);
-        int actual = tested.convertSize(label, countryCode);
-
-        // Then
-        assertEquals(actual, result);
-
-    }
-}
\ No newline at end of file

From f3c4e3e36df8ac3a92b4d50da27278cf76ea663a Mon Sep 17 00:00:00 2001
From: Philippe <phil@lighthouse.com.br>
Date: Mon, 17 Aug 2020 11:58:25 -0300
Subject: [PATCH 143/156] [BAEL-4381] Fix formatting

---
 .../archunit/smurfs/persistence/SmurfsRepository.java       | 6 +-----
 1 file changed, 1 insertion(+), 5 deletions(-)

diff --git a/libraries-testing/src/main/java/com/baeldung/archunit/smurfs/persistence/SmurfsRepository.java b/libraries-testing/src/main/java/com/baeldung/archunit/smurfs/persistence/SmurfsRepository.java
index c18fcbc839..5d90d0f288 100644
--- a/libraries-testing/src/main/java/com/baeldung/archunit/smurfs/persistence/SmurfsRepository.java
+++ b/libraries-testing/src/main/java/com/baeldung/archunit/smurfs/persistence/SmurfsRepository.java
@@ -26,11 +26,7 @@ public class SmurfsRepository {
         smurfs.put("Baker", new Smurf("Baker", true, true));
         smurfs.put("Baker", new Smurf("Baker", true, true));
     }
-    
-    public SmurfsRepository() {
-        
-    }
-    
+
     public List<Smurf> findAll() {
        return Collections.unmodifiableList(smurfs.values().stream().collect(toList()));
     }

From 39ba03a48843d668ee8d0852df5f8386b35c65d3 Mon Sep 17 00:00:00 2001
From: Rutuja Joshi <67615932+rutujavjoshi@users.noreply.github.com>
Date: Mon, 17 Aug 2020 21:11:50 +0530
Subject: [PATCH 144/156] Delete README.md

---
 core-java-modules/core-java-exceptions-3/README.md | 6 ------
 1 file changed, 6 deletions(-)
 delete mode 100644 core-java-modules/core-java-exceptions-3/README.md

diff --git a/core-java-modules/core-java-exceptions-3/README.md b/core-java-modules/core-java-exceptions-3/README.md
deleted file mode 100644
index 52fca27486..0000000000
--- a/core-java-modules/core-java-exceptions-3/README.md
+++ /dev/null
@@ -1,6 +0,0 @@
-## Core Java Exceptions
-
-This module contains articles about core java exceptions
-
-### Relevant articles:
-- [NoSuchMethodError in Java](https://www.baeldung.com/java-chained-exceptions)

From e4f034795d1e4cb5aef5c3a12f81a9d1c268f03f Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?Maciej=20G=C5=82=C3=B3wka?= <maciejglowka.pl@gmail.com>
Date: Mon, 17 Aug 2020 19:11:57 +0200
Subject: [PATCH 145/156] BAEL-4057: Hibernate Hi/Lo algorithm example (#9802)

* BAEL-4057: Hibernate Hi/Lo algorithm example

* BAEL-4057: fixed code indentation
---
 .../hibernate/hilo/RestaurantOrder.java       | 34 +++++++
 .../hibernate/hilo/HibernateHiloUnitTest.java | 99 +++++++++++++++++++
 .../test/resources/hibernate-hilo.properties  | 10 ++
 3 files changed, 143 insertions(+)
 create mode 100644 persistence-modules/hibernate5/src/main/java/com/baeldung/hibernate/hilo/RestaurantOrder.java
 create mode 100644 persistence-modules/hibernate5/src/test/java/com/baeldung/hibernate/hilo/HibernateHiloUnitTest.java
 create mode 100644 persistence-modules/hibernate5/src/test/resources/hibernate-hilo.properties

diff --git a/persistence-modules/hibernate5/src/main/java/com/baeldung/hibernate/hilo/RestaurantOrder.java b/persistence-modules/hibernate5/src/main/java/com/baeldung/hibernate/hilo/RestaurantOrder.java
new file mode 100644
index 0000000000..03d7edeae9
--- /dev/null
+++ b/persistence-modules/hibernate5/src/main/java/com/baeldung/hibernate/hilo/RestaurantOrder.java
@@ -0,0 +1,34 @@
+package com.baeldung.hibernate.hilo;
+
+import org.hibernate.annotations.GenericGenerator;
+import org.hibernate.annotations.Parameter;
+
+import javax.persistence.Entity;
+import javax.persistence.GeneratedValue;
+import javax.persistence.GenerationType;
+import javax.persistence.Id;
+
+@Entity
+public class RestaurantOrder {
+    @Id
+    @GeneratedValue(strategy = GenerationType.SEQUENCE, generator = "hilo_sequence_generator")
+    @GenericGenerator(
+      name = "hilo_sequence_generator",
+      strategy = "sequence",
+      parameters = {
+        @Parameter(name = "sequence_name", value = "hilo_seqeunce"),
+        @Parameter(name = "initial_value", value = "1"),
+        @Parameter(name = "increment_size", value = "3"),
+        @Parameter(name = "optimizer", value = "hilo")
+      }
+    )
+    private Long id;
+
+    public long getId() {
+        return id;
+    }
+
+    public void setId(long id) {
+        this.id = id;
+    }
+}
diff --git a/persistence-modules/hibernate5/src/test/java/com/baeldung/hibernate/hilo/HibernateHiloUnitTest.java b/persistence-modules/hibernate5/src/test/java/com/baeldung/hibernate/hilo/HibernateHiloUnitTest.java
new file mode 100644
index 0000000000..9285c30af5
--- /dev/null
+++ b/persistence-modules/hibernate5/src/test/java/com/baeldung/hibernate/hilo/HibernateHiloUnitTest.java
@@ -0,0 +1,99 @@
+package com.baeldung.hibernate.hilo;
+
+import org.apache.log4j.BasicConfigurator;
+import org.apache.log4j.Level;
+import org.apache.log4j.LogManager;
+import org.hibernate.HibernateException;
+import org.hibernate.Session;
+import org.hibernate.SessionFactory;
+import org.hibernate.Transaction;
+import org.hibernate.boot.Metadata;
+import org.hibernate.boot.MetadataSources;
+import org.hibernate.boot.SessionFactoryBuilder;
+import org.hibernate.boot.registry.StandardServiceRegistryBuilder;
+import org.hibernate.service.ServiceRegistry;
+import org.junit.After;
+import org.junit.Before;
+import org.junit.Test;
+
+import java.io.FileInputStream;
+import java.io.IOException;
+import java.net.URL;
+import java.util.Properties;
+
+import static org.junit.Assert.fail;
+
+public class HibernateHiloUnitTest {
+    private Session session;
+
+    @Before
+    public void init() {
+        try {
+            configureLogger();
+
+            ServiceRegistry serviceRegistry = configureServiceRegistry();
+            SessionFactory factory = getSessionFactoryBuilder(serviceRegistry).build();
+            session = factory.openSession();
+        } catch (HibernateException | IOException e) {
+            fail("Failed to initiate Hibernate Session [Exception:" + e.toString() + "]");
+        }
+    }
+
+    private void configureLogger() {
+        BasicConfigurator.configure();
+        LogManager.getLogger("org.hibernate").setLevel(Level.ERROR);
+        LogManager.getLogger("org.hibernate.id.enhanced.SequenceStructure").setLevel(Level.DEBUG);
+        LogManager.getLogger("org.hibernate.event.internal.AbstractSaveEventListener").setLevel(Level.DEBUG);
+        LogManager.getLogger("org.hibernate.SQL").setLevel(Level.DEBUG);
+    }
+
+
+    private static SessionFactoryBuilder getSessionFactoryBuilder(ServiceRegistry serviceRegistry) {
+        MetadataSources metadataSources = new MetadataSources(serviceRegistry);
+        metadataSources.addAnnotatedClass(RestaurantOrder.class);
+        Metadata metadata = metadataSources.buildMetadata();
+
+        return metadata.getSessionFactoryBuilder();
+    }
+
+    private static ServiceRegistry configureServiceRegistry() throws IOException {
+        Properties properties = getProperties();
+
+        return new StandardServiceRegistryBuilder().applySettings(properties)
+          .build();
+    }
+
+    private static Properties getProperties() throws IOException {
+        Properties properties = new Properties();
+        URL propertiesURL = getPropertiesURL();
+
+        try (FileInputStream inputStream = new FileInputStream(propertiesURL.getFile())) {
+            properties.load(inputStream);
+        }
+
+        return properties;
+    }
+
+    private static URL getPropertiesURL() {
+        return Thread.currentThread()
+          .getContextClassLoader()
+          .getResource("hibernate-hilo.properties");
+    }
+
+    @Test
+    public void givenHiLoAlgorithm_when9EntitiesArePersisted_Then3callsToDBForNextValueShouldBeMade() {
+        Transaction transaction = session.beginTransaction();
+
+        for (int i = 0; i < 9; i++) {
+            session.persist(new RestaurantOrder());
+            session.flush();
+        }
+
+        transaction.commit();
+    }
+
+    @After
+    public void cleanup() {
+        session.close();
+    }
+}
diff --git a/persistence-modules/hibernate5/src/test/resources/hibernate-hilo.properties b/persistence-modules/hibernate5/src/test/resources/hibernate-hilo.properties
new file mode 100644
index 0000000000..60d487c1bd
--- /dev/null
+++ b/persistence-modules/hibernate5/src/test/resources/hibernate-hilo.properties
@@ -0,0 +1,10 @@
+hibernate.connection.driver_class=org.h2.Driver
+hibernate.connection.url=jdbc:h2:mem:hilo_db;DB_CLOSE_DELAY=-1
+hibernate.connection.username=sa
+hibernate.dialect=org.hibernate.dialect.H2Dialect
+hibernate.show_sql=true
+hibernate.hbm2ddl.auto=create-drop
+hibernate.c3p0.min_size=5
+hibernate.c3p0.max_size=20
+hibernate.c3p0.acquire_increment=5
+hibernate.c3p0.timeout=1800

From 29a7bbe857d9e2240781b1910276c924c778bfe7 Mon Sep 17 00:00:00 2001
From: bfontana <bruno.fontana@gmail.com>
Date: Mon, 17 Aug 2020 21:49:49 -0300
Subject: [PATCH 146/156] Update SmurfsArchUnitTest.java

---
 .../java/com/baeldung/archunit/smurfs/SmurfsArchUnitTest.java  | 3 ---
 1 file changed, 3 deletions(-)

diff --git a/libraries-testing/src/test/java/com/baeldung/archunit/smurfs/SmurfsArchUnitTest.java b/libraries-testing/src/test/java/com/baeldung/archunit/smurfs/SmurfsArchUnitTest.java
index 68a33be69b..9724c2bcae 100644
--- a/libraries-testing/src/test/java/com/baeldung/archunit/smurfs/SmurfsArchUnitTest.java
+++ b/libraries-testing/src/test/java/com/baeldung/archunit/smurfs/SmurfsArchUnitTest.java
@@ -1,6 +1,3 @@
-/**
- * 
- */
 package com.baeldung.archunit.smurfs;
 
 

From 4e9ce6e4ccbbf269b87409260c310bab9e6b8bdb Mon Sep 17 00:00:00 2001
From: Trixi Turny <writetotrixi@gmail.com>
Date: Tue, 18 Aug 2020 09:32:12 +0100
Subject: [PATCH 147/156] BAEL-4321 yaml config to map in pojo demo

---
 spring-boot-modules/pom.xml                   |  1 +
 .../spring-boot-properties-3/pom.xml          | 54 +++++++++++++++++++
 .../boot/properties/DemoApplication.java      | 16 ++++++
 .../properties/config/TshirtSizeConfig.java   | 27 ++++++++++
 .../controller/TshirtSizeController.java      | 21 ++++++++
 .../properties/service/SizeConverterImpl.java | 22 ++++++++
 .../service/SizeConverterService.java         |  8 +++
 .../src/main/resources/application.yml        | 30 +++++++++++
 .../controller/TshirtSizeControllerTest.java  | 38 +++++++++++++
 9 files changed, 217 insertions(+)
 create mode 100644 spring-boot-modules/spring-boot-properties-3/pom.xml
 create mode 100644 spring-boot-modules/spring-boot-properties-3/src/main/java/com/baeldung/boot/properties/DemoApplication.java
 create mode 100644 spring-boot-modules/spring-boot-properties-3/src/main/java/com/baeldung/boot/properties/config/TshirtSizeConfig.java
 create mode 100644 spring-boot-modules/spring-boot-properties-3/src/main/java/com/baeldung/boot/properties/controller/TshirtSizeController.java
 create mode 100644 spring-boot-modules/spring-boot-properties-3/src/main/java/com/baeldung/boot/properties/service/SizeConverterImpl.java
 create mode 100644 spring-boot-modules/spring-boot-properties-3/src/main/java/com/baeldung/boot/properties/service/SizeConverterService.java
 create mode 100644 spring-boot-modules/spring-boot-properties-3/src/main/resources/application.yml
 create mode 100644 spring-boot-modules/spring-boot-properties-3/src/test/java/com/baeldung/boot/properties/controller/TshirtSizeControllerTest.java

diff --git a/spring-boot-modules/pom.xml b/spring-boot-modules/pom.xml
index 84f1f0e86c..f4e3e534c8 100644
--- a/spring-boot-modules/pom.xml
+++ b/spring-boot-modules/pom.xml
@@ -56,6 +56,7 @@
         <module>spring-boot-performance</module>
         <module>spring-boot-properties</module>
         <module>spring-boot-properties-2</module>
+        <module>spring-boot-properties-3</module>
         <module>spring-boot-property-exp</module>
         <module>spring-boot-runtime</module>
         <module>spring-boot-security</module>
diff --git a/spring-boot-modules/spring-boot-properties-3/pom.xml b/spring-boot-modules/spring-boot-properties-3/pom.xml
new file mode 100644
index 0000000000..cf94e1fc1d
--- /dev/null
+++ b/spring-boot-modules/spring-boot-properties-3/pom.xml
@@ -0,0 +1,54 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+         xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 https://maven.apache.org/xsd/maven-4.0.0.xsd">
+    <modelVersion>4.0.0</modelVersion>
+    <parent>
+        <groupId>com.baeldung.spring-boot-modules</groupId>
+        <artifactId>spring-boot-modules</artifactId>
+        <version>1.0.0-SNAPSHOT</version>
+        <relativePath>../</relativePath>
+    </parent>
+
+    <artifactId>spring-boot-properties-3</artifactId>
+    <version>0.0.1-SNAPSHOT</version>
+    <name>spring-boot-properties-3</name>
+    <description>Spring Boot Properties Module</description>
+
+    <properties>
+        <java.version>1.8</java.version>
+    </properties>
+
+    <dependencies>
+        <dependency>
+            <groupId>org.springframework.boot</groupId>
+            <artifactId>spring-boot-starter</artifactId>
+        </dependency>
+
+        <dependency>
+            <groupId>org.springframework.boot</groupId>
+            <artifactId>spring-boot-starter-test</artifactId>
+            <scope>test</scope>
+            <exclusions>
+                <exclusion>
+                    <groupId>org.junit.vintage</groupId>
+                    <artifactId>junit-vintage-engine</artifactId>
+                </exclusion>
+            </exclusions>
+        </dependency>
+        <dependency>
+            <groupId>org.springframework.boot</groupId>
+            <artifactId>spring-boot-starter-web</artifactId>
+            <version>RELEASE</version>
+        </dependency>
+    </dependencies>
+
+    <build>
+        <plugins>
+            <plugin>
+                <groupId>org.springframework.boot</groupId>
+                <artifactId>spring-boot-maven-plugin</artifactId>
+            </plugin>
+        </plugins>
+    </build>
+
+</project>
diff --git a/spring-boot-modules/spring-boot-properties-3/src/main/java/com/baeldung/boot/properties/DemoApplication.java b/spring-boot-modules/spring-boot-properties-3/src/main/java/com/baeldung/boot/properties/DemoApplication.java
new file mode 100644
index 0000000000..cf2fb7f981
--- /dev/null
+++ b/spring-boot-modules/spring-boot-properties-3/src/main/java/com/baeldung/boot/properties/DemoApplication.java
@@ -0,0 +1,16 @@
+package com.baeldung.boot.properties;
+
+import com.baeldung.boot.properties.config.TshirtSizeConfig;
+import org.springframework.boot.SpringApplication;
+import org.springframework.boot.autoconfigure.SpringBootApplication;
+import org.springframework.boot.context.properties.EnableConfigurationProperties;
+
+@SpringBootApplication
+@EnableConfigurationProperties(TshirtSizeConfig.class)
+public class DemoApplication {
+
+    public static void main(String[] args) {
+        SpringApplication.run(DemoApplication.class, args);
+    }
+
+}
diff --git a/spring-boot-modules/spring-boot-properties-3/src/main/java/com/baeldung/boot/properties/config/TshirtSizeConfig.java b/spring-boot-modules/spring-boot-properties-3/src/main/java/com/baeldung/boot/properties/config/TshirtSizeConfig.java
new file mode 100644
index 0000000000..690763ab7b
--- /dev/null
+++ b/spring-boot-modules/spring-boot-properties-3/src/main/java/com/baeldung/boot/properties/config/TshirtSizeConfig.java
@@ -0,0 +1,27 @@
+package com.baeldung.boot.properties.config;
+
+import org.springframework.boot.context.properties.ConfigurationProperties;
+
+import java.util.Map;
+
+@ConfigurationProperties(prefix = "t-shirt-size")
+public class TshirtSizeConfig {
+
+    private final Map<String, Integer> simpleMapping;
+
+    private final Map<String, Map<String, Integer>> complexMapping;
+
+
+    public TshirtSizeConfig(Map<String, Integer> simpleMapping, Map<String, Map<String, Integer>> complexMapping) {
+        this.simpleMapping = simpleMapping;
+        this.complexMapping = complexMapping;
+    }
+
+    public Map<String, Integer> getSimpleMapping() {
+        return simpleMapping;
+    }
+
+    public Map<String, Map<String, Integer>> getComplexMapping() {
+        return complexMapping;
+    }
+}
diff --git a/spring-boot-modules/spring-boot-properties-3/src/main/java/com/baeldung/boot/properties/controller/TshirtSizeController.java b/spring-boot-modules/spring-boot-properties-3/src/main/java/com/baeldung/boot/properties/controller/TshirtSizeController.java
new file mode 100644
index 0000000000..6b713c5be8
--- /dev/null
+++ b/spring-boot-modules/spring-boot-properties-3/src/main/java/com/baeldung/boot/properties/controller/TshirtSizeController.java
@@ -0,0 +1,21 @@
+package com.baeldung.boot.properties.controller;
+
+import org.springframework.web.bind.annotation.*;
+import com.baeldung.boot.properties.service.SizeConverterService;
+
+@RestController
+@RequestMapping(value = "/")
+public class TshirtSizeController {
+
+    private final SizeConverterService service;
+
+    public TshirtSizeController(SizeConverterService service) {
+        this.service = service;
+    }
+
+    @RequestMapping(value ="convertSize", method = RequestMethod.GET)
+    public int convertSize(@RequestParam(value = "label") final String label, @RequestParam(value = "countryCode", required = false) final String countryCode) {
+        return service.convertSize(label, countryCode);
+    }
+
+}
diff --git a/spring-boot-modules/spring-boot-properties-3/src/main/java/com/baeldung/boot/properties/service/SizeConverterImpl.java b/spring-boot-modules/spring-boot-properties-3/src/main/java/com/baeldung/boot/properties/service/SizeConverterImpl.java
new file mode 100644
index 0000000000..34f7fe2ded
--- /dev/null
+++ b/spring-boot-modules/spring-boot-properties-3/src/main/java/com/baeldung/boot/properties/service/SizeConverterImpl.java
@@ -0,0 +1,22 @@
+package com.baeldung.boot.properties.service;
+
+import org.springframework.stereotype.Service;
+import com.baeldung.boot.properties.config.TshirtSizeConfig;
+
+
+@Service
+public class SizeConverterImpl implements SizeConverterService {
+
+    private final TshirtSizeConfig tshirtSizeConfig;
+
+    public SizeConverterImpl(TshirtSizeConfig tshirtSizeConfig) {
+        this.tshirtSizeConfig = tshirtSizeConfig;
+    }
+
+    public int  convertSize(String label, String countryCode) {
+        if(countryCode == null) {
+            return tshirtSizeConfig.getSimpleMapping().get(label);
+        }
+        return tshirtSizeConfig.getComplexMapping().get(label).get(countryCode.toLowerCase());
+    }
+}
diff --git a/spring-boot-modules/spring-boot-properties-3/src/main/java/com/baeldung/boot/properties/service/SizeConverterService.java b/spring-boot-modules/spring-boot-properties-3/src/main/java/com/baeldung/boot/properties/service/SizeConverterService.java
new file mode 100644
index 0000000000..412199b176
--- /dev/null
+++ b/spring-boot-modules/spring-boot-properties-3/src/main/java/com/baeldung/boot/properties/service/SizeConverterService.java
@@ -0,0 +1,8 @@
+package com.baeldung.boot.properties.service;
+
+
+public interface SizeConverterService {
+
+    int convertSize(String label, String countryCode);
+
+}
diff --git a/spring-boot-modules/spring-boot-properties-3/src/main/resources/application.yml b/spring-boot-modules/spring-boot-properties-3/src/main/resources/application.yml
new file mode 100644
index 0000000000..8779cb6b0c
--- /dev/null
+++ b/spring-boot-modules/spring-boot-properties-3/src/main/resources/application.yml
@@ -0,0 +1,30 @@
+  t-shirt-size:
+    simple-mapping:
+      XS: 6
+      S:  8
+      M:  10
+      L:  12
+      XL: 14
+
+
+  complex-mapping:
+    XS:
+      uk: 6
+      fr: 34
+      us: 2
+    S:
+      uk: 8
+      fr: 36
+      us: 4
+    M:
+      uk: 10
+      fr: 38
+      us: 6
+    L:
+      uk: 12
+      fr: 40
+      us: 8
+    XL:
+      uk: 14
+      fr: 42
+      us: 10
diff --git a/spring-boot-modules/spring-boot-properties-3/src/test/java/com/baeldung/boot/properties/controller/TshirtSizeControllerTest.java b/spring-boot-modules/spring-boot-properties-3/src/test/java/com/baeldung/boot/properties/controller/TshirtSizeControllerTest.java
new file mode 100644
index 0000000000..0b70ed8622
--- /dev/null
+++ b/spring-boot-modules/spring-boot-properties-3/src/test/java/com/baeldung/boot/properties/controller/TshirtSizeControllerTest.java
@@ -0,0 +1,38 @@
+package com.baeldung.boot.properties.controller;
+
+import org.junit.jupiter.api.Test;
+import org.junit.jupiter.api.extension.ExtendWith;
+import org.mockito.InjectMocks;
+import org.mockito.Mock;
+import org.mockito.junit.jupiter.MockitoExtension;
+import com.baeldung.boot.properties.service.SizeConverterService;
+
+import static org.junit.jupiter.api.Assertions.*;
+import static org.mockito.Mockito.when;
+
+@ExtendWith(MockitoExtension.class)
+class TshirtSizeControllerUnitTest {
+
+    @Mock
+    private SizeConverterService service;
+
+    @InjectMocks
+    private TshirtSizeController tested;
+
+    @Test
+    void whenConvertSize_thenOK() {
+
+        // Given
+        String label = "S";
+        String countryCode = "fr";
+        int result = 36;
+
+        // When
+        when(service.convertSize(label, countryCode)).thenReturn(result);
+        int actual = tested.convertSize(label, countryCode);
+
+        // Then
+        assertEquals(actual, result);
+
+    }
+}
\ No newline at end of file

From 90e80fd32bb4e20c9db324619d83b9633334394b Mon Sep 17 00:00:00 2001
From: sampadawagde <sampada.wagde@gmail.com>
Date: Tue, 18 Aug 2020 15:37:27 +0530
Subject: [PATCH 148/156] JAVA-69: Renamed spring-security-rest to
 spring-security-web-rest

---
 .../.gitignore                                                | 0
 .../README.md                                                 | 0
 .../pom.xml                                                   | 4 ++--
 .../src/main/java/com/baeldung/errorhandling/ApiError.java    | 0
 .../baeldung/errorhandling/CustomRestExceptionHandler.java    | 0
 .../src/main/java/com/baeldung/persistence/model/Foo.java     | 0
 .../main/java/com/baeldung/security/SecurityJavaConfig.java   | 0
 .../baeldung/security/SecurityWebApplicationInitializer.java  | 0
 .../web/MySavedRequestAwareAuthenticationSuccessHandler.java  | 0
 .../baeldung/security/web/RestAuthenticationEntryPoint.java   | 0
 .../src/main/java/com/baeldung/spring/ClientWebConfig.java    | 0
 .../src/main/java/com/baeldung/spring/SecurityXmlConfig.java  | 0
 .../src/main/java/com/baeldung/spring/WebConfig.java          | 0
 .../src/main/java/com/baeldung/swagger2/SwaggerConfig.java    | 0
 .../java/com/baeldung/web/controller/AsyncController.java     | 0
 .../java/com/baeldung/web/controller/CustomController.java    | 0
 .../main/java/com/baeldung/web/controller/FooController.java  | 0
 .../main/java/com/baeldung/web/controller/RootController.java | 0
 .../com/baeldung/web/error/CustomAccessDeniedHandler.java     | 0
 .../web/error/RestResponseEntityExceptionHandler.java         | 0
 .../baeldung/web/exception/MyResourceNotFoundException.java   | 0
 .../src/main/java/com/baeldung/web/service/AsyncService.java  | 0
 .../main/java/com/baeldung/web/service/AsyncServiceImpl.java  | 0
 .../src/main/resources/logback.xml                            | 0
 .../src/main/resources/webSecurityConfig.xml                  | 0
 .../src/main/webapp/WEB-INF/api-servlet.xml                   | 0
 .../src/main/webapp/WEB-INF/view/csrfAttacker.jsp             | 0
 .../src/main/webapp/WEB-INF/web.xml                           | 0
 .../src/test/java/com/baeldung/SpringContextTest.java         | 0
 .../src/test/java/com/baeldung/errorhandling/FooLiveTest.java | 0
 .../java/com/baeldung/web/AsyncControllerIntegrationTest.java | 0
 .../src/test/java/com/baeldung/web/SwaggerLiveTest.java       | 0
 .../src/test/java/com/baeldung/web/TestConfig.java            | 0
 .../src/test/resources/.gitignore                             | 0
 34 files changed, 2 insertions(+), 2 deletions(-)
 rename spring-security-modules/{spring-security-rest => spring-security-web-rest}/.gitignore (100%)
 rename spring-security-modules/{spring-security-rest => spring-security-web-rest}/README.md (100%)
 rename spring-security-modules/{spring-security-rest => spring-security-web-rest}/pom.xml (99%)
 rename spring-security-modules/{spring-security-rest => spring-security-web-rest}/src/main/java/com/baeldung/errorhandling/ApiError.java (100%)
 rename spring-security-modules/{spring-security-rest => spring-security-web-rest}/src/main/java/com/baeldung/errorhandling/CustomRestExceptionHandler.java (100%)
 rename spring-security-modules/{spring-security-rest => spring-security-web-rest}/src/main/java/com/baeldung/persistence/model/Foo.java (100%)
 rename spring-security-modules/{spring-security-rest => spring-security-web-rest}/src/main/java/com/baeldung/security/SecurityJavaConfig.java (100%)
 rename spring-security-modules/{spring-security-rest => spring-security-web-rest}/src/main/java/com/baeldung/security/SecurityWebApplicationInitializer.java (100%)
 rename spring-security-modules/{spring-security-rest => spring-security-web-rest}/src/main/java/com/baeldung/security/web/MySavedRequestAwareAuthenticationSuccessHandler.java (100%)
 rename spring-security-modules/{spring-security-rest => spring-security-web-rest}/src/main/java/com/baeldung/security/web/RestAuthenticationEntryPoint.java (100%)
 rename spring-security-modules/{spring-security-rest => spring-security-web-rest}/src/main/java/com/baeldung/spring/ClientWebConfig.java (100%)
 rename spring-security-modules/{spring-security-rest => spring-security-web-rest}/src/main/java/com/baeldung/spring/SecurityXmlConfig.java (100%)
 rename spring-security-modules/{spring-security-rest => spring-security-web-rest}/src/main/java/com/baeldung/spring/WebConfig.java (100%)
 rename spring-security-modules/{spring-security-rest => spring-security-web-rest}/src/main/java/com/baeldung/swagger2/SwaggerConfig.java (100%)
 rename spring-security-modules/{spring-security-rest => spring-security-web-rest}/src/main/java/com/baeldung/web/controller/AsyncController.java (100%)
 rename spring-security-modules/{spring-security-rest => spring-security-web-rest}/src/main/java/com/baeldung/web/controller/CustomController.java (100%)
 rename spring-security-modules/{spring-security-rest => spring-security-web-rest}/src/main/java/com/baeldung/web/controller/FooController.java (100%)
 rename spring-security-modules/{spring-security-rest => spring-security-web-rest}/src/main/java/com/baeldung/web/controller/RootController.java (100%)
 rename spring-security-modules/{spring-security-rest => spring-security-web-rest}/src/main/java/com/baeldung/web/error/CustomAccessDeniedHandler.java (100%)
 rename spring-security-modules/{spring-security-rest => spring-security-web-rest}/src/main/java/com/baeldung/web/error/RestResponseEntityExceptionHandler.java (100%)
 rename spring-security-modules/{spring-security-rest => spring-security-web-rest}/src/main/java/com/baeldung/web/exception/MyResourceNotFoundException.java (100%)
 rename spring-security-modules/{spring-security-rest => spring-security-web-rest}/src/main/java/com/baeldung/web/service/AsyncService.java (100%)
 rename spring-security-modules/{spring-security-rest => spring-security-web-rest}/src/main/java/com/baeldung/web/service/AsyncServiceImpl.java (100%)
 rename spring-security-modules/{spring-security-rest => spring-security-web-rest}/src/main/resources/logback.xml (100%)
 rename spring-security-modules/{spring-security-rest => spring-security-web-rest}/src/main/resources/webSecurityConfig.xml (100%)
 rename spring-security-modules/{spring-security-rest => spring-security-web-rest}/src/main/webapp/WEB-INF/api-servlet.xml (100%)
 rename spring-security-modules/{spring-security-rest => spring-security-web-rest}/src/main/webapp/WEB-INF/view/csrfAttacker.jsp (100%)
 rename spring-security-modules/{spring-security-rest => spring-security-web-rest}/src/main/webapp/WEB-INF/web.xml (100%)
 rename spring-security-modules/{spring-security-rest => spring-security-web-rest}/src/test/java/com/baeldung/SpringContextTest.java (100%)
 rename spring-security-modules/{spring-security-rest => spring-security-web-rest}/src/test/java/com/baeldung/errorhandling/FooLiveTest.java (100%)
 rename spring-security-modules/{spring-security-rest => spring-security-web-rest}/src/test/java/com/baeldung/web/AsyncControllerIntegrationTest.java (100%)
 rename spring-security-modules/{spring-security-rest => spring-security-web-rest}/src/test/java/com/baeldung/web/SwaggerLiveTest.java (100%)
 rename spring-security-modules/{spring-security-rest => spring-security-web-rest}/src/test/java/com/baeldung/web/TestConfig.java (100%)
 rename spring-security-modules/{spring-security-rest => spring-security-web-rest}/src/test/resources/.gitignore (100%)

diff --git a/spring-security-modules/spring-security-rest/.gitignore b/spring-security-modules/spring-security-web-rest/.gitignore
similarity index 100%
rename from spring-security-modules/spring-security-rest/.gitignore
rename to spring-security-modules/spring-security-web-rest/.gitignore
diff --git a/spring-security-modules/spring-security-rest/README.md b/spring-security-modules/spring-security-web-rest/README.md
similarity index 100%
rename from spring-security-modules/spring-security-rest/README.md
rename to spring-security-modules/spring-security-web-rest/README.md
diff --git a/spring-security-modules/spring-security-rest/pom.xml b/spring-security-modules/spring-security-web-rest/pom.xml
similarity index 99%
rename from spring-security-modules/spring-security-rest/pom.xml
rename to spring-security-modules/spring-security-web-rest/pom.xml
index 9410f08378..d2468152da 100644
--- a/spring-security-modules/spring-security-rest/pom.xml
+++ b/spring-security-modules/spring-security-web-rest/pom.xml
@@ -2,9 +2,9 @@
 <project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
          xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
     <modelVersion>4.0.0</modelVersion>
-    <artifactId>spring-security-rest</artifactId>
+    <artifactId>spring-security-web-rest</artifactId>
     <version>0.1-SNAPSHOT</version>
-    <name>spring-security-rest</name>
+    <name>spring-security-web-rest</name>
     <packaging>war</packaging>
 
     <parent>
diff --git a/spring-security-modules/spring-security-rest/src/main/java/com/baeldung/errorhandling/ApiError.java b/spring-security-modules/spring-security-web-rest/src/main/java/com/baeldung/errorhandling/ApiError.java
similarity index 100%
rename from spring-security-modules/spring-security-rest/src/main/java/com/baeldung/errorhandling/ApiError.java
rename to spring-security-modules/spring-security-web-rest/src/main/java/com/baeldung/errorhandling/ApiError.java
diff --git a/spring-security-modules/spring-security-rest/src/main/java/com/baeldung/errorhandling/CustomRestExceptionHandler.java b/spring-security-modules/spring-security-web-rest/src/main/java/com/baeldung/errorhandling/CustomRestExceptionHandler.java
similarity index 100%
rename from spring-security-modules/spring-security-rest/src/main/java/com/baeldung/errorhandling/CustomRestExceptionHandler.java
rename to spring-security-modules/spring-security-web-rest/src/main/java/com/baeldung/errorhandling/CustomRestExceptionHandler.java
diff --git a/spring-security-modules/spring-security-rest/src/main/java/com/baeldung/persistence/model/Foo.java b/spring-security-modules/spring-security-web-rest/src/main/java/com/baeldung/persistence/model/Foo.java
similarity index 100%
rename from spring-security-modules/spring-security-rest/src/main/java/com/baeldung/persistence/model/Foo.java
rename to spring-security-modules/spring-security-web-rest/src/main/java/com/baeldung/persistence/model/Foo.java
diff --git a/spring-security-modules/spring-security-rest/src/main/java/com/baeldung/security/SecurityJavaConfig.java b/spring-security-modules/spring-security-web-rest/src/main/java/com/baeldung/security/SecurityJavaConfig.java
similarity index 100%
rename from spring-security-modules/spring-security-rest/src/main/java/com/baeldung/security/SecurityJavaConfig.java
rename to spring-security-modules/spring-security-web-rest/src/main/java/com/baeldung/security/SecurityJavaConfig.java
diff --git a/spring-security-modules/spring-security-rest/src/main/java/com/baeldung/security/SecurityWebApplicationInitializer.java b/spring-security-modules/spring-security-web-rest/src/main/java/com/baeldung/security/SecurityWebApplicationInitializer.java
similarity index 100%
rename from spring-security-modules/spring-security-rest/src/main/java/com/baeldung/security/SecurityWebApplicationInitializer.java
rename to spring-security-modules/spring-security-web-rest/src/main/java/com/baeldung/security/SecurityWebApplicationInitializer.java
diff --git a/spring-security-modules/spring-security-rest/src/main/java/com/baeldung/security/web/MySavedRequestAwareAuthenticationSuccessHandler.java b/spring-security-modules/spring-security-web-rest/src/main/java/com/baeldung/security/web/MySavedRequestAwareAuthenticationSuccessHandler.java
similarity index 100%
rename from spring-security-modules/spring-security-rest/src/main/java/com/baeldung/security/web/MySavedRequestAwareAuthenticationSuccessHandler.java
rename to spring-security-modules/spring-security-web-rest/src/main/java/com/baeldung/security/web/MySavedRequestAwareAuthenticationSuccessHandler.java
diff --git a/spring-security-modules/spring-security-rest/src/main/java/com/baeldung/security/web/RestAuthenticationEntryPoint.java b/spring-security-modules/spring-security-web-rest/src/main/java/com/baeldung/security/web/RestAuthenticationEntryPoint.java
similarity index 100%
rename from spring-security-modules/spring-security-rest/src/main/java/com/baeldung/security/web/RestAuthenticationEntryPoint.java
rename to spring-security-modules/spring-security-web-rest/src/main/java/com/baeldung/security/web/RestAuthenticationEntryPoint.java
diff --git a/spring-security-modules/spring-security-rest/src/main/java/com/baeldung/spring/ClientWebConfig.java b/spring-security-modules/spring-security-web-rest/src/main/java/com/baeldung/spring/ClientWebConfig.java
similarity index 100%
rename from spring-security-modules/spring-security-rest/src/main/java/com/baeldung/spring/ClientWebConfig.java
rename to spring-security-modules/spring-security-web-rest/src/main/java/com/baeldung/spring/ClientWebConfig.java
diff --git a/spring-security-modules/spring-security-rest/src/main/java/com/baeldung/spring/SecurityXmlConfig.java b/spring-security-modules/spring-security-web-rest/src/main/java/com/baeldung/spring/SecurityXmlConfig.java
similarity index 100%
rename from spring-security-modules/spring-security-rest/src/main/java/com/baeldung/spring/SecurityXmlConfig.java
rename to spring-security-modules/spring-security-web-rest/src/main/java/com/baeldung/spring/SecurityXmlConfig.java
diff --git a/spring-security-modules/spring-security-rest/src/main/java/com/baeldung/spring/WebConfig.java b/spring-security-modules/spring-security-web-rest/src/main/java/com/baeldung/spring/WebConfig.java
similarity index 100%
rename from spring-security-modules/spring-security-rest/src/main/java/com/baeldung/spring/WebConfig.java
rename to spring-security-modules/spring-security-web-rest/src/main/java/com/baeldung/spring/WebConfig.java
diff --git a/spring-security-modules/spring-security-rest/src/main/java/com/baeldung/swagger2/SwaggerConfig.java b/spring-security-modules/spring-security-web-rest/src/main/java/com/baeldung/swagger2/SwaggerConfig.java
similarity index 100%
rename from spring-security-modules/spring-security-rest/src/main/java/com/baeldung/swagger2/SwaggerConfig.java
rename to spring-security-modules/spring-security-web-rest/src/main/java/com/baeldung/swagger2/SwaggerConfig.java
diff --git a/spring-security-modules/spring-security-rest/src/main/java/com/baeldung/web/controller/AsyncController.java b/spring-security-modules/spring-security-web-rest/src/main/java/com/baeldung/web/controller/AsyncController.java
similarity index 100%
rename from spring-security-modules/spring-security-rest/src/main/java/com/baeldung/web/controller/AsyncController.java
rename to spring-security-modules/spring-security-web-rest/src/main/java/com/baeldung/web/controller/AsyncController.java
diff --git a/spring-security-modules/spring-security-rest/src/main/java/com/baeldung/web/controller/CustomController.java b/spring-security-modules/spring-security-web-rest/src/main/java/com/baeldung/web/controller/CustomController.java
similarity index 100%
rename from spring-security-modules/spring-security-rest/src/main/java/com/baeldung/web/controller/CustomController.java
rename to spring-security-modules/spring-security-web-rest/src/main/java/com/baeldung/web/controller/CustomController.java
diff --git a/spring-security-modules/spring-security-rest/src/main/java/com/baeldung/web/controller/FooController.java b/spring-security-modules/spring-security-web-rest/src/main/java/com/baeldung/web/controller/FooController.java
similarity index 100%
rename from spring-security-modules/spring-security-rest/src/main/java/com/baeldung/web/controller/FooController.java
rename to spring-security-modules/spring-security-web-rest/src/main/java/com/baeldung/web/controller/FooController.java
diff --git a/spring-security-modules/spring-security-rest/src/main/java/com/baeldung/web/controller/RootController.java b/spring-security-modules/spring-security-web-rest/src/main/java/com/baeldung/web/controller/RootController.java
similarity index 100%
rename from spring-security-modules/spring-security-rest/src/main/java/com/baeldung/web/controller/RootController.java
rename to spring-security-modules/spring-security-web-rest/src/main/java/com/baeldung/web/controller/RootController.java
diff --git a/spring-security-modules/spring-security-rest/src/main/java/com/baeldung/web/error/CustomAccessDeniedHandler.java b/spring-security-modules/spring-security-web-rest/src/main/java/com/baeldung/web/error/CustomAccessDeniedHandler.java
similarity index 100%
rename from spring-security-modules/spring-security-rest/src/main/java/com/baeldung/web/error/CustomAccessDeniedHandler.java
rename to spring-security-modules/spring-security-web-rest/src/main/java/com/baeldung/web/error/CustomAccessDeniedHandler.java
diff --git a/spring-security-modules/spring-security-rest/src/main/java/com/baeldung/web/error/RestResponseEntityExceptionHandler.java b/spring-security-modules/spring-security-web-rest/src/main/java/com/baeldung/web/error/RestResponseEntityExceptionHandler.java
similarity index 100%
rename from spring-security-modules/spring-security-rest/src/main/java/com/baeldung/web/error/RestResponseEntityExceptionHandler.java
rename to spring-security-modules/spring-security-web-rest/src/main/java/com/baeldung/web/error/RestResponseEntityExceptionHandler.java
diff --git a/spring-security-modules/spring-security-rest/src/main/java/com/baeldung/web/exception/MyResourceNotFoundException.java b/spring-security-modules/spring-security-web-rest/src/main/java/com/baeldung/web/exception/MyResourceNotFoundException.java
similarity index 100%
rename from spring-security-modules/spring-security-rest/src/main/java/com/baeldung/web/exception/MyResourceNotFoundException.java
rename to spring-security-modules/spring-security-web-rest/src/main/java/com/baeldung/web/exception/MyResourceNotFoundException.java
diff --git a/spring-security-modules/spring-security-rest/src/main/java/com/baeldung/web/service/AsyncService.java b/spring-security-modules/spring-security-web-rest/src/main/java/com/baeldung/web/service/AsyncService.java
similarity index 100%
rename from spring-security-modules/spring-security-rest/src/main/java/com/baeldung/web/service/AsyncService.java
rename to spring-security-modules/spring-security-web-rest/src/main/java/com/baeldung/web/service/AsyncService.java
diff --git a/spring-security-modules/spring-security-rest/src/main/java/com/baeldung/web/service/AsyncServiceImpl.java b/spring-security-modules/spring-security-web-rest/src/main/java/com/baeldung/web/service/AsyncServiceImpl.java
similarity index 100%
rename from spring-security-modules/spring-security-rest/src/main/java/com/baeldung/web/service/AsyncServiceImpl.java
rename to spring-security-modules/spring-security-web-rest/src/main/java/com/baeldung/web/service/AsyncServiceImpl.java
diff --git a/spring-security-modules/spring-security-rest/src/main/resources/logback.xml b/spring-security-modules/spring-security-web-rest/src/main/resources/logback.xml
similarity index 100%
rename from spring-security-modules/spring-security-rest/src/main/resources/logback.xml
rename to spring-security-modules/spring-security-web-rest/src/main/resources/logback.xml
diff --git a/spring-security-modules/spring-security-rest/src/main/resources/webSecurityConfig.xml b/spring-security-modules/spring-security-web-rest/src/main/resources/webSecurityConfig.xml
similarity index 100%
rename from spring-security-modules/spring-security-rest/src/main/resources/webSecurityConfig.xml
rename to spring-security-modules/spring-security-web-rest/src/main/resources/webSecurityConfig.xml
diff --git a/spring-security-modules/spring-security-rest/src/main/webapp/WEB-INF/api-servlet.xml b/spring-security-modules/spring-security-web-rest/src/main/webapp/WEB-INF/api-servlet.xml
similarity index 100%
rename from spring-security-modules/spring-security-rest/src/main/webapp/WEB-INF/api-servlet.xml
rename to spring-security-modules/spring-security-web-rest/src/main/webapp/WEB-INF/api-servlet.xml
diff --git a/spring-security-modules/spring-security-rest/src/main/webapp/WEB-INF/view/csrfAttacker.jsp b/spring-security-modules/spring-security-web-rest/src/main/webapp/WEB-INF/view/csrfAttacker.jsp
similarity index 100%
rename from spring-security-modules/spring-security-rest/src/main/webapp/WEB-INF/view/csrfAttacker.jsp
rename to spring-security-modules/spring-security-web-rest/src/main/webapp/WEB-INF/view/csrfAttacker.jsp
diff --git a/spring-security-modules/spring-security-rest/src/main/webapp/WEB-INF/web.xml b/spring-security-modules/spring-security-web-rest/src/main/webapp/WEB-INF/web.xml
similarity index 100%
rename from spring-security-modules/spring-security-rest/src/main/webapp/WEB-INF/web.xml
rename to spring-security-modules/spring-security-web-rest/src/main/webapp/WEB-INF/web.xml
diff --git a/spring-security-modules/spring-security-rest/src/test/java/com/baeldung/SpringContextTest.java b/spring-security-modules/spring-security-web-rest/src/test/java/com/baeldung/SpringContextTest.java
similarity index 100%
rename from spring-security-modules/spring-security-rest/src/test/java/com/baeldung/SpringContextTest.java
rename to spring-security-modules/spring-security-web-rest/src/test/java/com/baeldung/SpringContextTest.java
diff --git a/spring-security-modules/spring-security-rest/src/test/java/com/baeldung/errorhandling/FooLiveTest.java b/spring-security-modules/spring-security-web-rest/src/test/java/com/baeldung/errorhandling/FooLiveTest.java
similarity index 100%
rename from spring-security-modules/spring-security-rest/src/test/java/com/baeldung/errorhandling/FooLiveTest.java
rename to spring-security-modules/spring-security-web-rest/src/test/java/com/baeldung/errorhandling/FooLiveTest.java
diff --git a/spring-security-modules/spring-security-rest/src/test/java/com/baeldung/web/AsyncControllerIntegrationTest.java b/spring-security-modules/spring-security-web-rest/src/test/java/com/baeldung/web/AsyncControllerIntegrationTest.java
similarity index 100%
rename from spring-security-modules/spring-security-rest/src/test/java/com/baeldung/web/AsyncControllerIntegrationTest.java
rename to spring-security-modules/spring-security-web-rest/src/test/java/com/baeldung/web/AsyncControllerIntegrationTest.java
diff --git a/spring-security-modules/spring-security-rest/src/test/java/com/baeldung/web/SwaggerLiveTest.java b/spring-security-modules/spring-security-web-rest/src/test/java/com/baeldung/web/SwaggerLiveTest.java
similarity index 100%
rename from spring-security-modules/spring-security-rest/src/test/java/com/baeldung/web/SwaggerLiveTest.java
rename to spring-security-modules/spring-security-web-rest/src/test/java/com/baeldung/web/SwaggerLiveTest.java
diff --git a/spring-security-modules/spring-security-rest/src/test/java/com/baeldung/web/TestConfig.java b/spring-security-modules/spring-security-web-rest/src/test/java/com/baeldung/web/TestConfig.java
similarity index 100%
rename from spring-security-modules/spring-security-rest/src/test/java/com/baeldung/web/TestConfig.java
rename to spring-security-modules/spring-security-web-rest/src/test/java/com/baeldung/web/TestConfig.java
diff --git a/spring-security-modules/spring-security-rest/src/test/resources/.gitignore b/spring-security-modules/spring-security-web-rest/src/test/resources/.gitignore
similarity index 100%
rename from spring-security-modules/spring-security-rest/src/test/resources/.gitignore
rename to spring-security-modules/spring-security-web-rest/src/test/resources/.gitignore

From 526d66067f50eb52d6c8cac5056e00f98b9b4944 Mon Sep 17 00:00:00 2001
From: sampadawagde <sampada.wagde@gmail.com>
Date: Tue, 18 Aug 2020 15:37:55 +0530
Subject: [PATCH 149/156] JAVA-69: Renamed spring-security-rest-basic-auth to
 spring-security-web-rest-basic-auth

---
 .../.gitignore                                                | 0
 .../README.md                                                 | 0
 .../pom.xml                                                   | 4 ++--
 .../com/baeldung/basic/MyBasicAuthenticationEntryPoint.java   | 0
 .../HttpComponentsClientHttpRequestFactoryBasicAuth.java      | 0
 .../main/java/com/baeldung/client/RestTemplateFactory.java    | 0
 .../main/java/com/baeldung/client/spring/ClientConfig.java    | 0
 .../src/main/java/com/baeldung/filter/CustomFilter.java       | 0
 .../baeldung/filter/CustomWebSecurityConfigurerAdapter.java   | 0
 .../MySavedRequestAwareAuthenticationSuccessHandler.java      | 0
 .../com/baeldung/security/RestAuthenticationEntryPoint.java   | 0
 .../src/main/java/com/baeldung/spring/SecSecurityConfig.java  | 0
 .../src/main/java/com/baeldung/spring/WebConfig.java          | 0
 .../main/java/com/baeldung/web/controller/BarController.java  | 0
 .../main/java/com/baeldung/web/controller/FooController.java  | 0
 .../src/main/java/com/baeldung/web/dto/Bar.java               | 0
 .../src/main/java/com/baeldung/web/dto/Foo.java               | 0
 .../src/main/resources/logback.xml                            | 0
 .../src/main/resources/webSecurityConfig.xml                  | 0
 .../src/main/webapp/WEB-INF/api-servlet.xml                   | 0
 .../src/main/webapp/WEB-INF/web.xml                           | 0
 .../src/test/java/com/baeldung/SpringContextTest.java         | 0
 .../src/test/resources/.gitignore                             | 0
 23 files changed, 2 insertions(+), 2 deletions(-)
 rename spring-security-modules/{spring-security-rest-basic-auth => spring-security-web-rest-basic-auth}/.gitignore (100%)
 rename spring-security-modules/{spring-security-rest-basic-auth => spring-security-web-rest-basic-auth}/README.md (100%)
 rename spring-security-modules/{spring-security-rest-basic-auth => spring-security-web-rest-basic-auth}/pom.xml (98%)
 rename spring-security-modules/{spring-security-rest-basic-auth => spring-security-web-rest-basic-auth}/src/main/java/com/baeldung/basic/MyBasicAuthenticationEntryPoint.java (100%)
 rename spring-security-modules/{spring-security-rest-basic-auth => spring-security-web-rest-basic-auth}/src/main/java/com/baeldung/client/HttpComponentsClientHttpRequestFactoryBasicAuth.java (100%)
 rename spring-security-modules/{spring-security-rest-basic-auth => spring-security-web-rest-basic-auth}/src/main/java/com/baeldung/client/RestTemplateFactory.java (100%)
 rename spring-security-modules/{spring-security-rest-basic-auth => spring-security-web-rest-basic-auth}/src/main/java/com/baeldung/client/spring/ClientConfig.java (100%)
 rename spring-security-modules/{spring-security-rest-basic-auth => spring-security-web-rest-basic-auth}/src/main/java/com/baeldung/filter/CustomFilter.java (100%)
 rename spring-security-modules/{spring-security-rest-basic-auth => spring-security-web-rest-basic-auth}/src/main/java/com/baeldung/filter/CustomWebSecurityConfigurerAdapter.java (100%)
 rename spring-security-modules/{spring-security-rest-basic-auth => spring-security-web-rest-basic-auth}/src/main/java/com/baeldung/security/MySavedRequestAwareAuthenticationSuccessHandler.java (100%)
 rename spring-security-modules/{spring-security-rest-basic-auth => spring-security-web-rest-basic-auth}/src/main/java/com/baeldung/security/RestAuthenticationEntryPoint.java (100%)
 rename spring-security-modules/{spring-security-rest-basic-auth => spring-security-web-rest-basic-auth}/src/main/java/com/baeldung/spring/SecSecurityConfig.java (100%)
 rename spring-security-modules/{spring-security-rest-basic-auth => spring-security-web-rest-basic-auth}/src/main/java/com/baeldung/spring/WebConfig.java (100%)
 rename spring-security-modules/{spring-security-rest-basic-auth => spring-security-web-rest-basic-auth}/src/main/java/com/baeldung/web/controller/BarController.java (100%)
 rename spring-security-modules/{spring-security-rest-basic-auth => spring-security-web-rest-basic-auth}/src/main/java/com/baeldung/web/controller/FooController.java (100%)
 rename spring-security-modules/{spring-security-rest-basic-auth => spring-security-web-rest-basic-auth}/src/main/java/com/baeldung/web/dto/Bar.java (100%)
 rename spring-security-modules/{spring-security-rest-basic-auth => spring-security-web-rest-basic-auth}/src/main/java/com/baeldung/web/dto/Foo.java (100%)
 rename spring-security-modules/{spring-security-rest-basic-auth => spring-security-web-rest-basic-auth}/src/main/resources/logback.xml (100%)
 rename spring-security-modules/{spring-security-rest-basic-auth => spring-security-web-rest-basic-auth}/src/main/resources/webSecurityConfig.xml (100%)
 rename spring-security-modules/{spring-security-rest-basic-auth => spring-security-web-rest-basic-auth}/src/main/webapp/WEB-INF/api-servlet.xml (100%)
 rename spring-security-modules/{spring-security-rest-basic-auth => spring-security-web-rest-basic-auth}/src/main/webapp/WEB-INF/web.xml (100%)
 rename spring-security-modules/{spring-security-rest-basic-auth => spring-security-web-rest-basic-auth}/src/test/java/com/baeldung/SpringContextTest.java (100%)
 rename spring-security-modules/{spring-security-rest-basic-auth => spring-security-web-rest-basic-auth}/src/test/resources/.gitignore (100%)

diff --git a/spring-security-modules/spring-security-rest-basic-auth/.gitignore b/spring-security-modules/spring-security-web-rest-basic-auth/.gitignore
similarity index 100%
rename from spring-security-modules/spring-security-rest-basic-auth/.gitignore
rename to spring-security-modules/spring-security-web-rest-basic-auth/.gitignore
diff --git a/spring-security-modules/spring-security-rest-basic-auth/README.md b/spring-security-modules/spring-security-web-rest-basic-auth/README.md
similarity index 100%
rename from spring-security-modules/spring-security-rest-basic-auth/README.md
rename to spring-security-modules/spring-security-web-rest-basic-auth/README.md
diff --git a/spring-security-modules/spring-security-rest-basic-auth/pom.xml b/spring-security-modules/spring-security-web-rest-basic-auth/pom.xml
similarity index 98%
rename from spring-security-modules/spring-security-rest-basic-auth/pom.xml
rename to spring-security-modules/spring-security-web-rest-basic-auth/pom.xml
index 416882b3d4..0dc0b9cc42 100644
--- a/spring-security-modules/spring-security-rest-basic-auth/pom.xml
+++ b/spring-security-modules/spring-security-web-rest-basic-auth/pom.xml
@@ -2,9 +2,9 @@
 <project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
     xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
     <modelVersion>4.0.0</modelVersion>
-    <artifactId>spring-security-rest-basic-auth</artifactId>
+    <artifactId>spring-security-web-rest-basic-auth</artifactId>
     <version>0.2-SNAPSHOT</version>
-    <name>spring-security-rest-basic-auth</name>
+    <name>spring-security-web-rest-basic-auth</name>
     <packaging>war</packaging>
 
     <parent>
diff --git a/spring-security-modules/spring-security-rest-basic-auth/src/main/java/com/baeldung/basic/MyBasicAuthenticationEntryPoint.java b/spring-security-modules/spring-security-web-rest-basic-auth/src/main/java/com/baeldung/basic/MyBasicAuthenticationEntryPoint.java
similarity index 100%
rename from spring-security-modules/spring-security-rest-basic-auth/src/main/java/com/baeldung/basic/MyBasicAuthenticationEntryPoint.java
rename to spring-security-modules/spring-security-web-rest-basic-auth/src/main/java/com/baeldung/basic/MyBasicAuthenticationEntryPoint.java
diff --git a/spring-security-modules/spring-security-rest-basic-auth/src/main/java/com/baeldung/client/HttpComponentsClientHttpRequestFactoryBasicAuth.java b/spring-security-modules/spring-security-web-rest-basic-auth/src/main/java/com/baeldung/client/HttpComponentsClientHttpRequestFactoryBasicAuth.java
similarity index 100%
rename from spring-security-modules/spring-security-rest-basic-auth/src/main/java/com/baeldung/client/HttpComponentsClientHttpRequestFactoryBasicAuth.java
rename to spring-security-modules/spring-security-web-rest-basic-auth/src/main/java/com/baeldung/client/HttpComponentsClientHttpRequestFactoryBasicAuth.java
diff --git a/spring-security-modules/spring-security-rest-basic-auth/src/main/java/com/baeldung/client/RestTemplateFactory.java b/spring-security-modules/spring-security-web-rest-basic-auth/src/main/java/com/baeldung/client/RestTemplateFactory.java
similarity index 100%
rename from spring-security-modules/spring-security-rest-basic-auth/src/main/java/com/baeldung/client/RestTemplateFactory.java
rename to spring-security-modules/spring-security-web-rest-basic-auth/src/main/java/com/baeldung/client/RestTemplateFactory.java
diff --git a/spring-security-modules/spring-security-rest-basic-auth/src/main/java/com/baeldung/client/spring/ClientConfig.java b/spring-security-modules/spring-security-web-rest-basic-auth/src/main/java/com/baeldung/client/spring/ClientConfig.java
similarity index 100%
rename from spring-security-modules/spring-security-rest-basic-auth/src/main/java/com/baeldung/client/spring/ClientConfig.java
rename to spring-security-modules/spring-security-web-rest-basic-auth/src/main/java/com/baeldung/client/spring/ClientConfig.java
diff --git a/spring-security-modules/spring-security-rest-basic-auth/src/main/java/com/baeldung/filter/CustomFilter.java b/spring-security-modules/spring-security-web-rest-basic-auth/src/main/java/com/baeldung/filter/CustomFilter.java
similarity index 100%
rename from spring-security-modules/spring-security-rest-basic-auth/src/main/java/com/baeldung/filter/CustomFilter.java
rename to spring-security-modules/spring-security-web-rest-basic-auth/src/main/java/com/baeldung/filter/CustomFilter.java
diff --git a/spring-security-modules/spring-security-rest-basic-auth/src/main/java/com/baeldung/filter/CustomWebSecurityConfigurerAdapter.java b/spring-security-modules/spring-security-web-rest-basic-auth/src/main/java/com/baeldung/filter/CustomWebSecurityConfigurerAdapter.java
similarity index 100%
rename from spring-security-modules/spring-security-rest-basic-auth/src/main/java/com/baeldung/filter/CustomWebSecurityConfigurerAdapter.java
rename to spring-security-modules/spring-security-web-rest-basic-auth/src/main/java/com/baeldung/filter/CustomWebSecurityConfigurerAdapter.java
diff --git a/spring-security-modules/spring-security-rest-basic-auth/src/main/java/com/baeldung/security/MySavedRequestAwareAuthenticationSuccessHandler.java b/spring-security-modules/spring-security-web-rest-basic-auth/src/main/java/com/baeldung/security/MySavedRequestAwareAuthenticationSuccessHandler.java
similarity index 100%
rename from spring-security-modules/spring-security-rest-basic-auth/src/main/java/com/baeldung/security/MySavedRequestAwareAuthenticationSuccessHandler.java
rename to spring-security-modules/spring-security-web-rest-basic-auth/src/main/java/com/baeldung/security/MySavedRequestAwareAuthenticationSuccessHandler.java
diff --git a/spring-security-modules/spring-security-rest-basic-auth/src/main/java/com/baeldung/security/RestAuthenticationEntryPoint.java b/spring-security-modules/spring-security-web-rest-basic-auth/src/main/java/com/baeldung/security/RestAuthenticationEntryPoint.java
similarity index 100%
rename from spring-security-modules/spring-security-rest-basic-auth/src/main/java/com/baeldung/security/RestAuthenticationEntryPoint.java
rename to spring-security-modules/spring-security-web-rest-basic-auth/src/main/java/com/baeldung/security/RestAuthenticationEntryPoint.java
diff --git a/spring-security-modules/spring-security-rest-basic-auth/src/main/java/com/baeldung/spring/SecSecurityConfig.java b/spring-security-modules/spring-security-web-rest-basic-auth/src/main/java/com/baeldung/spring/SecSecurityConfig.java
similarity index 100%
rename from spring-security-modules/spring-security-rest-basic-auth/src/main/java/com/baeldung/spring/SecSecurityConfig.java
rename to spring-security-modules/spring-security-web-rest-basic-auth/src/main/java/com/baeldung/spring/SecSecurityConfig.java
diff --git a/spring-security-modules/spring-security-rest-basic-auth/src/main/java/com/baeldung/spring/WebConfig.java b/spring-security-modules/spring-security-web-rest-basic-auth/src/main/java/com/baeldung/spring/WebConfig.java
similarity index 100%
rename from spring-security-modules/spring-security-rest-basic-auth/src/main/java/com/baeldung/spring/WebConfig.java
rename to spring-security-modules/spring-security-web-rest-basic-auth/src/main/java/com/baeldung/spring/WebConfig.java
diff --git a/spring-security-modules/spring-security-rest-basic-auth/src/main/java/com/baeldung/web/controller/BarController.java b/spring-security-modules/spring-security-web-rest-basic-auth/src/main/java/com/baeldung/web/controller/BarController.java
similarity index 100%
rename from spring-security-modules/spring-security-rest-basic-auth/src/main/java/com/baeldung/web/controller/BarController.java
rename to spring-security-modules/spring-security-web-rest-basic-auth/src/main/java/com/baeldung/web/controller/BarController.java
diff --git a/spring-security-modules/spring-security-rest-basic-auth/src/main/java/com/baeldung/web/controller/FooController.java b/spring-security-modules/spring-security-web-rest-basic-auth/src/main/java/com/baeldung/web/controller/FooController.java
similarity index 100%
rename from spring-security-modules/spring-security-rest-basic-auth/src/main/java/com/baeldung/web/controller/FooController.java
rename to spring-security-modules/spring-security-web-rest-basic-auth/src/main/java/com/baeldung/web/controller/FooController.java
diff --git a/spring-security-modules/spring-security-rest-basic-auth/src/main/java/com/baeldung/web/dto/Bar.java b/spring-security-modules/spring-security-web-rest-basic-auth/src/main/java/com/baeldung/web/dto/Bar.java
similarity index 100%
rename from spring-security-modules/spring-security-rest-basic-auth/src/main/java/com/baeldung/web/dto/Bar.java
rename to spring-security-modules/spring-security-web-rest-basic-auth/src/main/java/com/baeldung/web/dto/Bar.java
diff --git a/spring-security-modules/spring-security-rest-basic-auth/src/main/java/com/baeldung/web/dto/Foo.java b/spring-security-modules/spring-security-web-rest-basic-auth/src/main/java/com/baeldung/web/dto/Foo.java
similarity index 100%
rename from spring-security-modules/spring-security-rest-basic-auth/src/main/java/com/baeldung/web/dto/Foo.java
rename to spring-security-modules/spring-security-web-rest-basic-auth/src/main/java/com/baeldung/web/dto/Foo.java
diff --git a/spring-security-modules/spring-security-rest-basic-auth/src/main/resources/logback.xml b/spring-security-modules/spring-security-web-rest-basic-auth/src/main/resources/logback.xml
similarity index 100%
rename from spring-security-modules/spring-security-rest-basic-auth/src/main/resources/logback.xml
rename to spring-security-modules/spring-security-web-rest-basic-auth/src/main/resources/logback.xml
diff --git a/spring-security-modules/spring-security-rest-basic-auth/src/main/resources/webSecurityConfig.xml b/spring-security-modules/spring-security-web-rest-basic-auth/src/main/resources/webSecurityConfig.xml
similarity index 100%
rename from spring-security-modules/spring-security-rest-basic-auth/src/main/resources/webSecurityConfig.xml
rename to spring-security-modules/spring-security-web-rest-basic-auth/src/main/resources/webSecurityConfig.xml
diff --git a/spring-security-modules/spring-security-rest-basic-auth/src/main/webapp/WEB-INF/api-servlet.xml b/spring-security-modules/spring-security-web-rest-basic-auth/src/main/webapp/WEB-INF/api-servlet.xml
similarity index 100%
rename from spring-security-modules/spring-security-rest-basic-auth/src/main/webapp/WEB-INF/api-servlet.xml
rename to spring-security-modules/spring-security-web-rest-basic-auth/src/main/webapp/WEB-INF/api-servlet.xml
diff --git a/spring-security-modules/spring-security-rest-basic-auth/src/main/webapp/WEB-INF/web.xml b/spring-security-modules/spring-security-web-rest-basic-auth/src/main/webapp/WEB-INF/web.xml
similarity index 100%
rename from spring-security-modules/spring-security-rest-basic-auth/src/main/webapp/WEB-INF/web.xml
rename to spring-security-modules/spring-security-web-rest-basic-auth/src/main/webapp/WEB-INF/web.xml
diff --git a/spring-security-modules/spring-security-rest-basic-auth/src/test/java/com/baeldung/SpringContextTest.java b/spring-security-modules/spring-security-web-rest-basic-auth/src/test/java/com/baeldung/SpringContextTest.java
similarity index 100%
rename from spring-security-modules/spring-security-rest-basic-auth/src/test/java/com/baeldung/SpringContextTest.java
rename to spring-security-modules/spring-security-web-rest-basic-auth/src/test/java/com/baeldung/SpringContextTest.java
diff --git a/spring-security-modules/spring-security-rest-basic-auth/src/test/resources/.gitignore b/spring-security-modules/spring-security-web-rest-basic-auth/src/test/resources/.gitignore
similarity index 100%
rename from spring-security-modules/spring-security-rest-basic-auth/src/test/resources/.gitignore
rename to spring-security-modules/spring-security-web-rest-basic-auth/src/test/resources/.gitignore

From 61dd35dc835df05d441ec84669142b4535b1978c Mon Sep 17 00:00:00 2001
From: sampadawagde <sampada.wagde@gmail.com>
Date: Tue, 18 Aug 2020 15:38:21 +0530
Subject: [PATCH 150/156] JAVA-69: Renamed spring-security-rest-custom to
 spring-security-web-rest-custom

---
 .../README.md                                                 | 0
 .../pom.xml                                                   | 4 ++--
 .../main/java/com/baeldung/config/MainWebAppInitializer.java  | 0
 .../java/com/baeldung/config/child/MethodSecurityConfig.java  | 0
 .../src/main/java/com/baeldung/config/child/WebConfig.java    | 0
 .../main/java/com/baeldung/config/parent/SecurityConfig.java  | 0
 .../main/java/com/baeldung/config/parent/ServiceConfig.java   | 0
 .../main/java/com/baeldung/security/AuthenticationFacade.java | 0
 .../com/baeldung/security/CustomAuthenticationProvider.java   | 0
 .../java/com/baeldung/security/IAuthenticationFacade.java     | 0
 .../MySavedRequestAwareAuthenticationSuccessHandler.java      | 0
 .../com/baeldung/security/RestAuthenticationEntryPoint.java   | 0
 .../src/main/java/com/baeldung/service/FooService.java        | 0
 .../src/main/java/com/baeldung/service/IFooService.java       | 0
 .../src/main/java/com/baeldung/service/RunAsService.java      | 0
 .../main/java/com/baeldung/web/controller/FooController.java  | 0
 .../web/controller/GetUserWithCustomInterfaceController.java  | 0
 .../controller/GetUserWithHTTPServletRequestController.java   | 0
 .../java/com/baeldung/web/controller/RunAsController.java     | 0
 .../java/com/baeldung/web/controller/SecurityController.java  | 0
 .../java/com/baeldung/web/controller/SecurityController1.java | 0
 .../java/com/baeldung/web/controller/SecurityController3.java | 0
 .../main/java/com/baeldung/web/controller/ViewController.java | 0
 .../src/main/java/com/baeldung/web/dto/Foo.java               | 0
 .../src/main/resources/foo.properties                         | 0
 .../src/main/resources/logback.xml                            | 0
 .../src/main/resources/prop.xml                               | 0
 .../src/main/resources/webSecurityConfig.xml                  | 0
 .../src/main/webapp/WEB-INF/templates/index.html              | 0
 .../src/main/webapp/WEB-INF/templates/runas.html              | 0
 .../src/main/webapp/WEB-INF/web_old.xml                       | 0
 .../src/test/resources/.gitignore                             | 0
 32 files changed, 2 insertions(+), 2 deletions(-)
 rename spring-security-modules/{spring-security-rest-custom => spring-security-web-rest-custom}/README.md (100%)
 rename spring-security-modules/{spring-security-rest-custom => spring-security-web-rest-custom}/pom.xml (98%)
 rename spring-security-modules/{spring-security-rest-custom => spring-security-web-rest-custom}/src/main/java/com/baeldung/config/MainWebAppInitializer.java (100%)
 rename spring-security-modules/{spring-security-rest-custom => spring-security-web-rest-custom}/src/main/java/com/baeldung/config/child/MethodSecurityConfig.java (100%)
 rename spring-security-modules/{spring-security-rest-custom => spring-security-web-rest-custom}/src/main/java/com/baeldung/config/child/WebConfig.java (100%)
 rename spring-security-modules/{spring-security-rest-custom => spring-security-web-rest-custom}/src/main/java/com/baeldung/config/parent/SecurityConfig.java (100%)
 rename spring-security-modules/{spring-security-rest-custom => spring-security-web-rest-custom}/src/main/java/com/baeldung/config/parent/ServiceConfig.java (100%)
 rename spring-security-modules/{spring-security-rest-custom => spring-security-web-rest-custom}/src/main/java/com/baeldung/security/AuthenticationFacade.java (100%)
 rename spring-security-modules/{spring-security-rest-custom => spring-security-web-rest-custom}/src/main/java/com/baeldung/security/CustomAuthenticationProvider.java (100%)
 rename spring-security-modules/{spring-security-rest-custom => spring-security-web-rest-custom}/src/main/java/com/baeldung/security/IAuthenticationFacade.java (100%)
 rename spring-security-modules/{spring-security-rest-custom => spring-security-web-rest-custom}/src/main/java/com/baeldung/security/MySavedRequestAwareAuthenticationSuccessHandler.java (100%)
 rename spring-security-modules/{spring-security-rest-custom => spring-security-web-rest-custom}/src/main/java/com/baeldung/security/RestAuthenticationEntryPoint.java (100%)
 rename spring-security-modules/{spring-security-rest-custom => spring-security-web-rest-custom}/src/main/java/com/baeldung/service/FooService.java (100%)
 rename spring-security-modules/{spring-security-rest-custom => spring-security-web-rest-custom}/src/main/java/com/baeldung/service/IFooService.java (100%)
 rename spring-security-modules/{spring-security-rest-custom => spring-security-web-rest-custom}/src/main/java/com/baeldung/service/RunAsService.java (100%)
 rename spring-security-modules/{spring-security-rest-custom => spring-security-web-rest-custom}/src/main/java/com/baeldung/web/controller/FooController.java (100%)
 rename spring-security-modules/{spring-security-rest-custom => spring-security-web-rest-custom}/src/main/java/com/baeldung/web/controller/GetUserWithCustomInterfaceController.java (100%)
 rename spring-security-modules/{spring-security-rest-custom => spring-security-web-rest-custom}/src/main/java/com/baeldung/web/controller/GetUserWithHTTPServletRequestController.java (100%)
 rename spring-security-modules/{spring-security-rest-custom => spring-security-web-rest-custom}/src/main/java/com/baeldung/web/controller/RunAsController.java (100%)
 rename spring-security-modules/{spring-security-rest-custom => spring-security-web-rest-custom}/src/main/java/com/baeldung/web/controller/SecurityController.java (100%)
 rename spring-security-modules/{spring-security-rest-custom => spring-security-web-rest-custom}/src/main/java/com/baeldung/web/controller/SecurityController1.java (100%)
 rename spring-security-modules/{spring-security-rest-custom => spring-security-web-rest-custom}/src/main/java/com/baeldung/web/controller/SecurityController3.java (100%)
 rename spring-security-modules/{spring-security-rest-custom => spring-security-web-rest-custom}/src/main/java/com/baeldung/web/controller/ViewController.java (100%)
 rename spring-security-modules/{spring-security-rest-custom => spring-security-web-rest-custom}/src/main/java/com/baeldung/web/dto/Foo.java (100%)
 rename spring-security-modules/{spring-security-rest-custom => spring-security-web-rest-custom}/src/main/resources/foo.properties (100%)
 rename spring-security-modules/{spring-security-rest-custom => spring-security-web-rest-custom}/src/main/resources/logback.xml (100%)
 rename spring-security-modules/{spring-security-rest-custom => spring-security-web-rest-custom}/src/main/resources/prop.xml (100%)
 rename spring-security-modules/{spring-security-rest-custom => spring-security-web-rest-custom}/src/main/resources/webSecurityConfig.xml (100%)
 rename spring-security-modules/{spring-security-rest-custom => spring-security-web-rest-custom}/src/main/webapp/WEB-INF/templates/index.html (100%)
 rename spring-security-modules/{spring-security-rest-custom => spring-security-web-rest-custom}/src/main/webapp/WEB-INF/templates/runas.html (100%)
 rename spring-security-modules/{spring-security-rest-custom => spring-security-web-rest-custom}/src/main/webapp/WEB-INF/web_old.xml (100%)
 rename spring-security-modules/{spring-security-rest-custom => spring-security-web-rest-custom}/src/test/resources/.gitignore (100%)

diff --git a/spring-security-modules/spring-security-rest-custom/README.md b/spring-security-modules/spring-security-web-rest-custom/README.md
similarity index 100%
rename from spring-security-modules/spring-security-rest-custom/README.md
rename to spring-security-modules/spring-security-web-rest-custom/README.md
diff --git a/spring-security-modules/spring-security-rest-custom/pom.xml b/spring-security-modules/spring-security-web-rest-custom/pom.xml
similarity index 98%
rename from spring-security-modules/spring-security-rest-custom/pom.xml
rename to spring-security-modules/spring-security-web-rest-custom/pom.xml
index b4f0f93bb6..0ba7f95de7 100644
--- a/spring-security-modules/spring-security-rest-custom/pom.xml
+++ b/spring-security-modules/spring-security-web-rest-custom/pom.xml
@@ -2,9 +2,9 @@
 <project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
          xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
     <modelVersion>4.0.0</modelVersion>
-    <artifactId>spring-security-rest-custom</artifactId>
+    <artifactId>spring-security-web-rest-custom</artifactId>
     <version>0.1-SNAPSHOT</version>
-    <name>spring-security-rest-custom</name>
+    <name>spring-security-web-rest-custom</name>
     <packaging>war</packaging>
 
     <parent>
diff --git a/spring-security-modules/spring-security-rest-custom/src/main/java/com/baeldung/config/MainWebAppInitializer.java b/spring-security-modules/spring-security-web-rest-custom/src/main/java/com/baeldung/config/MainWebAppInitializer.java
similarity index 100%
rename from spring-security-modules/spring-security-rest-custom/src/main/java/com/baeldung/config/MainWebAppInitializer.java
rename to spring-security-modules/spring-security-web-rest-custom/src/main/java/com/baeldung/config/MainWebAppInitializer.java
diff --git a/spring-security-modules/spring-security-rest-custom/src/main/java/com/baeldung/config/child/MethodSecurityConfig.java b/spring-security-modules/spring-security-web-rest-custom/src/main/java/com/baeldung/config/child/MethodSecurityConfig.java
similarity index 100%
rename from spring-security-modules/spring-security-rest-custom/src/main/java/com/baeldung/config/child/MethodSecurityConfig.java
rename to spring-security-modules/spring-security-web-rest-custom/src/main/java/com/baeldung/config/child/MethodSecurityConfig.java
diff --git a/spring-security-modules/spring-security-rest-custom/src/main/java/com/baeldung/config/child/WebConfig.java b/spring-security-modules/spring-security-web-rest-custom/src/main/java/com/baeldung/config/child/WebConfig.java
similarity index 100%
rename from spring-security-modules/spring-security-rest-custom/src/main/java/com/baeldung/config/child/WebConfig.java
rename to spring-security-modules/spring-security-web-rest-custom/src/main/java/com/baeldung/config/child/WebConfig.java
diff --git a/spring-security-modules/spring-security-rest-custom/src/main/java/com/baeldung/config/parent/SecurityConfig.java b/spring-security-modules/spring-security-web-rest-custom/src/main/java/com/baeldung/config/parent/SecurityConfig.java
similarity index 100%
rename from spring-security-modules/spring-security-rest-custom/src/main/java/com/baeldung/config/parent/SecurityConfig.java
rename to spring-security-modules/spring-security-web-rest-custom/src/main/java/com/baeldung/config/parent/SecurityConfig.java
diff --git a/spring-security-modules/spring-security-rest-custom/src/main/java/com/baeldung/config/parent/ServiceConfig.java b/spring-security-modules/spring-security-web-rest-custom/src/main/java/com/baeldung/config/parent/ServiceConfig.java
similarity index 100%
rename from spring-security-modules/spring-security-rest-custom/src/main/java/com/baeldung/config/parent/ServiceConfig.java
rename to spring-security-modules/spring-security-web-rest-custom/src/main/java/com/baeldung/config/parent/ServiceConfig.java
diff --git a/spring-security-modules/spring-security-rest-custom/src/main/java/com/baeldung/security/AuthenticationFacade.java b/spring-security-modules/spring-security-web-rest-custom/src/main/java/com/baeldung/security/AuthenticationFacade.java
similarity index 100%
rename from spring-security-modules/spring-security-rest-custom/src/main/java/com/baeldung/security/AuthenticationFacade.java
rename to spring-security-modules/spring-security-web-rest-custom/src/main/java/com/baeldung/security/AuthenticationFacade.java
diff --git a/spring-security-modules/spring-security-rest-custom/src/main/java/com/baeldung/security/CustomAuthenticationProvider.java b/spring-security-modules/spring-security-web-rest-custom/src/main/java/com/baeldung/security/CustomAuthenticationProvider.java
similarity index 100%
rename from spring-security-modules/spring-security-rest-custom/src/main/java/com/baeldung/security/CustomAuthenticationProvider.java
rename to spring-security-modules/spring-security-web-rest-custom/src/main/java/com/baeldung/security/CustomAuthenticationProvider.java
diff --git a/spring-security-modules/spring-security-rest-custom/src/main/java/com/baeldung/security/IAuthenticationFacade.java b/spring-security-modules/spring-security-web-rest-custom/src/main/java/com/baeldung/security/IAuthenticationFacade.java
similarity index 100%
rename from spring-security-modules/spring-security-rest-custom/src/main/java/com/baeldung/security/IAuthenticationFacade.java
rename to spring-security-modules/spring-security-web-rest-custom/src/main/java/com/baeldung/security/IAuthenticationFacade.java
diff --git a/spring-security-modules/spring-security-rest-custom/src/main/java/com/baeldung/security/MySavedRequestAwareAuthenticationSuccessHandler.java b/spring-security-modules/spring-security-web-rest-custom/src/main/java/com/baeldung/security/MySavedRequestAwareAuthenticationSuccessHandler.java
similarity index 100%
rename from spring-security-modules/spring-security-rest-custom/src/main/java/com/baeldung/security/MySavedRequestAwareAuthenticationSuccessHandler.java
rename to spring-security-modules/spring-security-web-rest-custom/src/main/java/com/baeldung/security/MySavedRequestAwareAuthenticationSuccessHandler.java
diff --git a/spring-security-modules/spring-security-rest-custom/src/main/java/com/baeldung/security/RestAuthenticationEntryPoint.java b/spring-security-modules/spring-security-web-rest-custom/src/main/java/com/baeldung/security/RestAuthenticationEntryPoint.java
similarity index 100%
rename from spring-security-modules/spring-security-rest-custom/src/main/java/com/baeldung/security/RestAuthenticationEntryPoint.java
rename to spring-security-modules/spring-security-web-rest-custom/src/main/java/com/baeldung/security/RestAuthenticationEntryPoint.java
diff --git a/spring-security-modules/spring-security-rest-custom/src/main/java/com/baeldung/service/FooService.java b/spring-security-modules/spring-security-web-rest-custom/src/main/java/com/baeldung/service/FooService.java
similarity index 100%
rename from spring-security-modules/spring-security-rest-custom/src/main/java/com/baeldung/service/FooService.java
rename to spring-security-modules/spring-security-web-rest-custom/src/main/java/com/baeldung/service/FooService.java
diff --git a/spring-security-modules/spring-security-rest-custom/src/main/java/com/baeldung/service/IFooService.java b/spring-security-modules/spring-security-web-rest-custom/src/main/java/com/baeldung/service/IFooService.java
similarity index 100%
rename from spring-security-modules/spring-security-rest-custom/src/main/java/com/baeldung/service/IFooService.java
rename to spring-security-modules/spring-security-web-rest-custom/src/main/java/com/baeldung/service/IFooService.java
diff --git a/spring-security-modules/spring-security-rest-custom/src/main/java/com/baeldung/service/RunAsService.java b/spring-security-modules/spring-security-web-rest-custom/src/main/java/com/baeldung/service/RunAsService.java
similarity index 100%
rename from spring-security-modules/spring-security-rest-custom/src/main/java/com/baeldung/service/RunAsService.java
rename to spring-security-modules/spring-security-web-rest-custom/src/main/java/com/baeldung/service/RunAsService.java
diff --git a/spring-security-modules/spring-security-rest-custom/src/main/java/com/baeldung/web/controller/FooController.java b/spring-security-modules/spring-security-web-rest-custom/src/main/java/com/baeldung/web/controller/FooController.java
similarity index 100%
rename from spring-security-modules/spring-security-rest-custom/src/main/java/com/baeldung/web/controller/FooController.java
rename to spring-security-modules/spring-security-web-rest-custom/src/main/java/com/baeldung/web/controller/FooController.java
diff --git a/spring-security-modules/spring-security-rest-custom/src/main/java/com/baeldung/web/controller/GetUserWithCustomInterfaceController.java b/spring-security-modules/spring-security-web-rest-custom/src/main/java/com/baeldung/web/controller/GetUserWithCustomInterfaceController.java
similarity index 100%
rename from spring-security-modules/spring-security-rest-custom/src/main/java/com/baeldung/web/controller/GetUserWithCustomInterfaceController.java
rename to spring-security-modules/spring-security-web-rest-custom/src/main/java/com/baeldung/web/controller/GetUserWithCustomInterfaceController.java
diff --git a/spring-security-modules/spring-security-rest-custom/src/main/java/com/baeldung/web/controller/GetUserWithHTTPServletRequestController.java b/spring-security-modules/spring-security-web-rest-custom/src/main/java/com/baeldung/web/controller/GetUserWithHTTPServletRequestController.java
similarity index 100%
rename from spring-security-modules/spring-security-rest-custom/src/main/java/com/baeldung/web/controller/GetUserWithHTTPServletRequestController.java
rename to spring-security-modules/spring-security-web-rest-custom/src/main/java/com/baeldung/web/controller/GetUserWithHTTPServletRequestController.java
diff --git a/spring-security-modules/spring-security-rest-custom/src/main/java/com/baeldung/web/controller/RunAsController.java b/spring-security-modules/spring-security-web-rest-custom/src/main/java/com/baeldung/web/controller/RunAsController.java
similarity index 100%
rename from spring-security-modules/spring-security-rest-custom/src/main/java/com/baeldung/web/controller/RunAsController.java
rename to spring-security-modules/spring-security-web-rest-custom/src/main/java/com/baeldung/web/controller/RunAsController.java
diff --git a/spring-security-modules/spring-security-rest-custom/src/main/java/com/baeldung/web/controller/SecurityController.java b/spring-security-modules/spring-security-web-rest-custom/src/main/java/com/baeldung/web/controller/SecurityController.java
similarity index 100%
rename from spring-security-modules/spring-security-rest-custom/src/main/java/com/baeldung/web/controller/SecurityController.java
rename to spring-security-modules/spring-security-web-rest-custom/src/main/java/com/baeldung/web/controller/SecurityController.java
diff --git a/spring-security-modules/spring-security-rest-custom/src/main/java/com/baeldung/web/controller/SecurityController1.java b/spring-security-modules/spring-security-web-rest-custom/src/main/java/com/baeldung/web/controller/SecurityController1.java
similarity index 100%
rename from spring-security-modules/spring-security-rest-custom/src/main/java/com/baeldung/web/controller/SecurityController1.java
rename to spring-security-modules/spring-security-web-rest-custom/src/main/java/com/baeldung/web/controller/SecurityController1.java
diff --git a/spring-security-modules/spring-security-rest-custom/src/main/java/com/baeldung/web/controller/SecurityController3.java b/spring-security-modules/spring-security-web-rest-custom/src/main/java/com/baeldung/web/controller/SecurityController3.java
similarity index 100%
rename from spring-security-modules/spring-security-rest-custom/src/main/java/com/baeldung/web/controller/SecurityController3.java
rename to spring-security-modules/spring-security-web-rest-custom/src/main/java/com/baeldung/web/controller/SecurityController3.java
diff --git a/spring-security-modules/spring-security-rest-custom/src/main/java/com/baeldung/web/controller/ViewController.java b/spring-security-modules/spring-security-web-rest-custom/src/main/java/com/baeldung/web/controller/ViewController.java
similarity index 100%
rename from spring-security-modules/spring-security-rest-custom/src/main/java/com/baeldung/web/controller/ViewController.java
rename to spring-security-modules/spring-security-web-rest-custom/src/main/java/com/baeldung/web/controller/ViewController.java
diff --git a/spring-security-modules/spring-security-rest-custom/src/main/java/com/baeldung/web/dto/Foo.java b/spring-security-modules/spring-security-web-rest-custom/src/main/java/com/baeldung/web/dto/Foo.java
similarity index 100%
rename from spring-security-modules/spring-security-rest-custom/src/main/java/com/baeldung/web/dto/Foo.java
rename to spring-security-modules/spring-security-web-rest-custom/src/main/java/com/baeldung/web/dto/Foo.java
diff --git a/spring-security-modules/spring-security-rest-custom/src/main/resources/foo.properties b/spring-security-modules/spring-security-web-rest-custom/src/main/resources/foo.properties
similarity index 100%
rename from spring-security-modules/spring-security-rest-custom/src/main/resources/foo.properties
rename to spring-security-modules/spring-security-web-rest-custom/src/main/resources/foo.properties
diff --git a/spring-security-modules/spring-security-rest-custom/src/main/resources/logback.xml b/spring-security-modules/spring-security-web-rest-custom/src/main/resources/logback.xml
similarity index 100%
rename from spring-security-modules/spring-security-rest-custom/src/main/resources/logback.xml
rename to spring-security-modules/spring-security-web-rest-custom/src/main/resources/logback.xml
diff --git a/spring-security-modules/spring-security-rest-custom/src/main/resources/prop.xml b/spring-security-modules/spring-security-web-rest-custom/src/main/resources/prop.xml
similarity index 100%
rename from spring-security-modules/spring-security-rest-custom/src/main/resources/prop.xml
rename to spring-security-modules/spring-security-web-rest-custom/src/main/resources/prop.xml
diff --git a/spring-security-modules/spring-security-rest-custom/src/main/resources/webSecurityConfig.xml b/spring-security-modules/spring-security-web-rest-custom/src/main/resources/webSecurityConfig.xml
similarity index 100%
rename from spring-security-modules/spring-security-rest-custom/src/main/resources/webSecurityConfig.xml
rename to spring-security-modules/spring-security-web-rest-custom/src/main/resources/webSecurityConfig.xml
diff --git a/spring-security-modules/spring-security-rest-custom/src/main/webapp/WEB-INF/templates/index.html b/spring-security-modules/spring-security-web-rest-custom/src/main/webapp/WEB-INF/templates/index.html
similarity index 100%
rename from spring-security-modules/spring-security-rest-custom/src/main/webapp/WEB-INF/templates/index.html
rename to spring-security-modules/spring-security-web-rest-custom/src/main/webapp/WEB-INF/templates/index.html
diff --git a/spring-security-modules/spring-security-rest-custom/src/main/webapp/WEB-INF/templates/runas.html b/spring-security-modules/spring-security-web-rest-custom/src/main/webapp/WEB-INF/templates/runas.html
similarity index 100%
rename from spring-security-modules/spring-security-rest-custom/src/main/webapp/WEB-INF/templates/runas.html
rename to spring-security-modules/spring-security-web-rest-custom/src/main/webapp/WEB-INF/templates/runas.html
diff --git a/spring-security-modules/spring-security-rest-custom/src/main/webapp/WEB-INF/web_old.xml b/spring-security-modules/spring-security-web-rest-custom/src/main/webapp/WEB-INF/web_old.xml
similarity index 100%
rename from spring-security-modules/spring-security-rest-custom/src/main/webapp/WEB-INF/web_old.xml
rename to spring-security-modules/spring-security-web-rest-custom/src/main/webapp/WEB-INF/web_old.xml
diff --git a/spring-security-modules/spring-security-rest-custom/src/test/resources/.gitignore b/spring-security-modules/spring-security-web-rest-custom/src/test/resources/.gitignore
similarity index 100%
rename from spring-security-modules/spring-security-rest-custom/src/test/resources/.gitignore
rename to spring-security-modules/spring-security-web-rest-custom/src/test/resources/.gitignore

From ec76361474cbe8d4afdd0d06e98c1dfa871d72b6 Mon Sep 17 00:00:00 2001
From: sampadawagde <sampada.wagde@gmail.com>
Date: Tue, 18 Aug 2020 15:38:54 +0530
Subject: [PATCH 151/156] JAVA-69: Renamed spring-security-thymeleaf to
 spring-security-web-thymeleaf

---
 .../README.MD => spring-security-web-thymeleaf/README.md}     | 0
 .../pom.xml                                                   | 4 ++--
 .../springsecuritythymeleaf/SecurityConfiguration.java        | 0
 .../SpringSecurityThymeleafApplication.java                   | 0
 .../com/baeldung/springsecuritythymeleaf/ViewController.java  | 0
 .../src/main/resources/application.properties                 | 0
 .../src/main/resources/logback.xml                            | 0
 .../src/main/resources/templates/index.html                   | 0
 .../src/main/resources/templates/login.html                   | 0
 .../SpringSecurityThymeleafApplicationIntegrationTest.java    | 0
 .../ViewControllerIntegrationTest.java                        | 0
 11 files changed, 2 insertions(+), 2 deletions(-)
 rename spring-security-modules/{spring-security-thymeleaf/README.MD => spring-security-web-thymeleaf/README.md} (100%)
 rename spring-security-modules/{spring-security-thymeleaf => spring-security-web-thymeleaf}/pom.xml (94%)
 rename spring-security-modules/{spring-security-thymeleaf => spring-security-web-thymeleaf}/src/main/java/com/baeldung/springsecuritythymeleaf/SecurityConfiguration.java (100%)
 rename spring-security-modules/{spring-security-thymeleaf => spring-security-web-thymeleaf}/src/main/java/com/baeldung/springsecuritythymeleaf/SpringSecurityThymeleafApplication.java (100%)
 rename spring-security-modules/{spring-security-thymeleaf => spring-security-web-thymeleaf}/src/main/java/com/baeldung/springsecuritythymeleaf/ViewController.java (100%)
 rename spring-security-modules/{spring-security-thymeleaf => spring-security-web-thymeleaf}/src/main/resources/application.properties (100%)
 rename spring-security-modules/{spring-security-thymeleaf => spring-security-web-thymeleaf}/src/main/resources/logback.xml (100%)
 rename spring-security-modules/{spring-security-thymeleaf => spring-security-web-thymeleaf}/src/main/resources/templates/index.html (100%)
 rename spring-security-modules/{spring-security-thymeleaf => spring-security-web-thymeleaf}/src/main/resources/templates/login.html (100%)
 rename spring-security-modules/{spring-security-thymeleaf => spring-security-web-thymeleaf}/src/test/java/com/baeldung/springsecuritythymeleaf/SpringSecurityThymeleafApplicationIntegrationTest.java (100%)
 rename spring-security-modules/{spring-security-thymeleaf => spring-security-web-thymeleaf}/src/test/java/com/baeldung/springsecuritythymeleaf/ViewControllerIntegrationTest.java (100%)

diff --git a/spring-security-modules/spring-security-thymeleaf/README.MD b/spring-security-modules/spring-security-web-thymeleaf/README.md
similarity index 100%
rename from spring-security-modules/spring-security-thymeleaf/README.MD
rename to spring-security-modules/spring-security-web-thymeleaf/README.md
diff --git a/spring-security-modules/spring-security-thymeleaf/pom.xml b/spring-security-modules/spring-security-web-thymeleaf/pom.xml
similarity index 94%
rename from spring-security-modules/spring-security-thymeleaf/pom.xml
rename to spring-security-modules/spring-security-web-thymeleaf/pom.xml
index a4ecbaff21..196ec0b86f 100644
--- a/spring-security-modules/spring-security-thymeleaf/pom.xml
+++ b/spring-security-modules/spring-security-web-thymeleaf/pom.xml
@@ -2,9 +2,9 @@
 <project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
          xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
     <modelVersion>4.0.0</modelVersion>
-    <artifactId>spring-security-thymeleaf</artifactId>
+    <artifactId>spring-security-web-thymeleaf</artifactId>
     <version>0.0.1-SNAPSHOT</version>
-    <name>spring-security-thymeleaf</name>
+    <name>spring-security-web-thymeleaf</name>
     <packaging>jar</packaging>
     <description>Spring Security with Thymeleaf tutorial</description>
 
diff --git a/spring-security-modules/spring-security-thymeleaf/src/main/java/com/baeldung/springsecuritythymeleaf/SecurityConfiguration.java b/spring-security-modules/spring-security-web-thymeleaf/src/main/java/com/baeldung/springsecuritythymeleaf/SecurityConfiguration.java
similarity index 100%
rename from spring-security-modules/spring-security-thymeleaf/src/main/java/com/baeldung/springsecuritythymeleaf/SecurityConfiguration.java
rename to spring-security-modules/spring-security-web-thymeleaf/src/main/java/com/baeldung/springsecuritythymeleaf/SecurityConfiguration.java
diff --git a/spring-security-modules/spring-security-thymeleaf/src/main/java/com/baeldung/springsecuritythymeleaf/SpringSecurityThymeleafApplication.java b/spring-security-modules/spring-security-web-thymeleaf/src/main/java/com/baeldung/springsecuritythymeleaf/SpringSecurityThymeleafApplication.java
similarity index 100%
rename from spring-security-modules/spring-security-thymeleaf/src/main/java/com/baeldung/springsecuritythymeleaf/SpringSecurityThymeleafApplication.java
rename to spring-security-modules/spring-security-web-thymeleaf/src/main/java/com/baeldung/springsecuritythymeleaf/SpringSecurityThymeleafApplication.java
diff --git a/spring-security-modules/spring-security-thymeleaf/src/main/java/com/baeldung/springsecuritythymeleaf/ViewController.java b/spring-security-modules/spring-security-web-thymeleaf/src/main/java/com/baeldung/springsecuritythymeleaf/ViewController.java
similarity index 100%
rename from spring-security-modules/spring-security-thymeleaf/src/main/java/com/baeldung/springsecuritythymeleaf/ViewController.java
rename to spring-security-modules/spring-security-web-thymeleaf/src/main/java/com/baeldung/springsecuritythymeleaf/ViewController.java
diff --git a/spring-security-modules/spring-security-thymeleaf/src/main/resources/application.properties b/spring-security-modules/spring-security-web-thymeleaf/src/main/resources/application.properties
similarity index 100%
rename from spring-security-modules/spring-security-thymeleaf/src/main/resources/application.properties
rename to spring-security-modules/spring-security-web-thymeleaf/src/main/resources/application.properties
diff --git a/spring-security-modules/spring-security-thymeleaf/src/main/resources/logback.xml b/spring-security-modules/spring-security-web-thymeleaf/src/main/resources/logback.xml
similarity index 100%
rename from spring-security-modules/spring-security-thymeleaf/src/main/resources/logback.xml
rename to spring-security-modules/spring-security-web-thymeleaf/src/main/resources/logback.xml
diff --git a/spring-security-modules/spring-security-thymeleaf/src/main/resources/templates/index.html b/spring-security-modules/spring-security-web-thymeleaf/src/main/resources/templates/index.html
similarity index 100%
rename from spring-security-modules/spring-security-thymeleaf/src/main/resources/templates/index.html
rename to spring-security-modules/spring-security-web-thymeleaf/src/main/resources/templates/index.html
diff --git a/spring-security-modules/spring-security-thymeleaf/src/main/resources/templates/login.html b/spring-security-modules/spring-security-web-thymeleaf/src/main/resources/templates/login.html
similarity index 100%
rename from spring-security-modules/spring-security-thymeleaf/src/main/resources/templates/login.html
rename to spring-security-modules/spring-security-web-thymeleaf/src/main/resources/templates/login.html
diff --git a/spring-security-modules/spring-security-thymeleaf/src/test/java/com/baeldung/springsecuritythymeleaf/SpringSecurityThymeleafApplicationIntegrationTest.java b/spring-security-modules/spring-security-web-thymeleaf/src/test/java/com/baeldung/springsecuritythymeleaf/SpringSecurityThymeleafApplicationIntegrationTest.java
similarity index 100%
rename from spring-security-modules/spring-security-thymeleaf/src/test/java/com/baeldung/springsecuritythymeleaf/SpringSecurityThymeleafApplicationIntegrationTest.java
rename to spring-security-modules/spring-security-web-thymeleaf/src/test/java/com/baeldung/springsecuritythymeleaf/SpringSecurityThymeleafApplicationIntegrationTest.java
diff --git a/spring-security-modules/spring-security-thymeleaf/src/test/java/com/baeldung/springsecuritythymeleaf/ViewControllerIntegrationTest.java b/spring-security-modules/spring-security-web-thymeleaf/src/test/java/com/baeldung/springsecuritythymeleaf/ViewControllerIntegrationTest.java
similarity index 100%
rename from spring-security-modules/spring-security-thymeleaf/src/test/java/com/baeldung/springsecuritythymeleaf/ViewControllerIntegrationTest.java
rename to spring-security-modules/spring-security-web-thymeleaf/src/test/java/com/baeldung/springsecuritythymeleaf/ViewControllerIntegrationTest.java

From 796b49b348af523baa367a3f3e01b6a9ed66fe3b Mon Sep 17 00:00:00 2001
From: sampadawagde <sampada.wagde@gmail.com>
Date: Tue, 18 Aug 2020 15:39:46 +0530
Subject: [PATCH 152/156] JAVA-69: Renamed spring-security-x509 to
 spring-security-web-x509

---
 .../README.md                                       |   0
 .../pom.xml                                         |   8 ++++----
 .../spring-security-web-x509-basic-auth}/pom.xml    |   6 +++---
 .../spring/security/x509/UserController.java        |   0
 .../security/x509/X509AuthenticationServer.java     |   0
 .../src/main/resources/application.properties       |   0
 .../src/main/resources/logback.xml                  |   0
 .../src/main/resources/templates/user.html          |   0
 .../test/java/com/baeldung/SpringContextTest.java   |   0
 .../X509AuthenticationServerIntegrationTest.java    |   0
 .../spring-security-web-x509-client-auth}/pom.xml   |   6 +++---
 .../spring/security/x509/UserController.java        |   0
 .../security/x509/X509AuthenticationServer.java     |   0
 .../src/main/resources/application.properties       |   0
 .../src/main/resources/logback.xml                  |   0
 .../src/main/resources/templates/user.html          |   0
 .../test/java/com/baeldung/SpringContextTest.java   |   0
 .../X509AuthenticationServerIntegrationTest.java    |   0
 .../store/clientBob.p12                             | Bin
 .../store/keystore.jks                              | Bin
 .../store/localhost.ext                             |   0
 .../store/rootCA.crt                                |   0
 .../store/truststore.jks                            | Bin
 23 files changed, 10 insertions(+), 10 deletions(-)
 rename spring-security-modules/{spring-security-x509 => spring-security-web-x509}/README.md (100%)
 rename spring-security-modules/{spring-security-x509 => spring-security-web-x509}/pom.xml (83%)
 rename spring-security-modules/{spring-security-x509/spring-security-x509-basic-auth => spring-security-web-x509/spring-security-web-x509-basic-auth}/pom.xml (87%)
 rename spring-security-modules/{spring-security-x509/spring-security-x509-basic-auth => spring-security-web-x509/spring-security-web-x509-basic-auth}/src/main/java/com/baeldung/spring/security/x509/UserController.java (100%)
 rename spring-security-modules/{spring-security-x509/spring-security-x509-basic-auth => spring-security-web-x509/spring-security-web-x509-basic-auth}/src/main/java/com/baeldung/spring/security/x509/X509AuthenticationServer.java (100%)
 rename spring-security-modules/{spring-security-x509/spring-security-x509-basic-auth => spring-security-web-x509/spring-security-web-x509-basic-auth}/src/main/resources/application.properties (100%)
 rename spring-security-modules/{spring-security-x509/spring-security-x509-basic-auth => spring-security-web-x509/spring-security-web-x509-basic-auth}/src/main/resources/logback.xml (100%)
 rename spring-security-modules/{spring-security-x509/spring-security-x509-basic-auth => spring-security-web-x509/spring-security-web-x509-basic-auth}/src/main/resources/templates/user.html (100%)
 rename spring-security-modules/{spring-security-x509/spring-security-x509-basic-auth => spring-security-web-x509/spring-security-web-x509-basic-auth}/src/test/java/com/baeldung/SpringContextTest.java (100%)
 rename spring-security-modules/{spring-security-x509/spring-security-x509-basic-auth => spring-security-web-x509/spring-security-web-x509-basic-auth}/src/test/java/com/baeldung/spring/security/x509/X509AuthenticationServerIntegrationTest.java (100%)
 rename spring-security-modules/{spring-security-x509/spring-security-x509-client-auth => spring-security-web-x509/spring-security-web-x509-client-auth}/pom.xml (94%)
 rename spring-security-modules/{spring-security-x509/spring-security-x509-client-auth => spring-security-web-x509/spring-security-web-x509-client-auth}/src/main/java/com/baeldung/spring/security/x509/UserController.java (100%)
 rename spring-security-modules/{spring-security-x509/spring-security-x509-client-auth => spring-security-web-x509/spring-security-web-x509-client-auth}/src/main/java/com/baeldung/spring/security/x509/X509AuthenticationServer.java (100%)
 rename spring-security-modules/{spring-security-x509/spring-security-x509-client-auth => spring-security-web-x509/spring-security-web-x509-client-auth}/src/main/resources/application.properties (100%)
 rename spring-security-modules/{spring-security-x509/spring-security-x509-client-auth => spring-security-web-x509/spring-security-web-x509-client-auth}/src/main/resources/logback.xml (100%)
 rename spring-security-modules/{spring-security-x509/spring-security-x509-client-auth => spring-security-web-x509/spring-security-web-x509-client-auth}/src/main/resources/templates/user.html (100%)
 rename spring-security-modules/{spring-security-x509/spring-security-x509-client-auth => spring-security-web-x509/spring-security-web-x509-client-auth}/src/test/java/com/baeldung/SpringContextTest.java (100%)
 rename spring-security-modules/{spring-security-x509/spring-security-x509-client-auth => spring-security-web-x509/spring-security-web-x509-client-auth}/src/test/java/com/baeldung/spring/security/x509/X509AuthenticationServerIntegrationTest.java (100%)
 rename spring-security-modules/{spring-security-x509 => spring-security-web-x509}/store/clientBob.p12 (100%)
 rename spring-security-modules/{spring-security-x509 => spring-security-web-x509}/store/keystore.jks (100%)
 rename spring-security-modules/{spring-security-x509 => spring-security-web-x509}/store/localhost.ext (100%)
 rename spring-security-modules/{spring-security-x509 => spring-security-web-x509}/store/rootCA.crt (100%)
 rename spring-security-modules/{spring-security-x509 => spring-security-web-x509}/store/truststore.jks (100%)

diff --git a/spring-security-modules/spring-security-x509/README.md b/spring-security-modules/spring-security-web-x509/README.md
similarity index 100%
rename from spring-security-modules/spring-security-x509/README.md
rename to spring-security-modules/spring-security-web-x509/README.md
diff --git a/spring-security-modules/spring-security-x509/pom.xml b/spring-security-modules/spring-security-web-x509/pom.xml
similarity index 83%
rename from spring-security-modules/spring-security-x509/pom.xml
rename to spring-security-modules/spring-security-web-x509/pom.xml
index d4132f058d..045c0aba6a 100644
--- a/spring-security-modules/spring-security-x509/pom.xml
+++ b/spring-security-modules/spring-security-web-x509/pom.xml
@@ -2,9 +2,9 @@
 <project xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns="http://maven.apache.org/POM/4.0.0"
          xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
     <modelVersion>4.0.0</modelVersion>
-    <artifactId>spring-security-x509</artifactId>
+    <artifactId>spring-security-web-x509</artifactId>
     <version>0.0.1-SNAPSHOT</version>
-    <name>spring-security-x509</name>
+    <name>spring-security-web-x509</name>
     <packaging>pom</packaging>
 
     <parent>
@@ -15,8 +15,8 @@
     </parent>
 
     <modules>
-        <module>spring-security-x509-basic-auth</module>
-        <module>spring-security-x509-client-auth</module>
+        <module>spring-security-web-x509-basic-auth</module>
+        <module>spring-security-web-x509-client-auth</module>
     </modules>
 
     <dependencies>
diff --git a/spring-security-modules/spring-security-x509/spring-security-x509-basic-auth/pom.xml b/spring-security-modules/spring-security-web-x509/spring-security-web-x509-basic-auth/pom.xml
similarity index 87%
rename from spring-security-modules/spring-security-x509/spring-security-x509-basic-auth/pom.xml
rename to spring-security-modules/spring-security-web-x509/spring-security-web-x509-basic-auth/pom.xml
index 3cff638894..917ffa6b0e 100644
--- a/spring-security-modules/spring-security-x509/spring-security-x509-basic-auth/pom.xml
+++ b/spring-security-modules/spring-security-web-x509/spring-security-web-x509-basic-auth/pom.xml
@@ -2,15 +2,15 @@
 <project xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns="http://maven.apache.org/POM/4.0.0"
          xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
     <modelVersion>4.0.0</modelVersion>
-    <artifactId>spring-security-x509-basic-auth</artifactId>
+    <artifactId>spring-security-web-x509-basic-auth</artifactId>
     <version>0.0.1-SNAPSHOT</version>
-    <name>spring-security-x509-basic-auth</name>
+    <name>spring-security-web-x509-basic-auth</name>
     <packaging>jar</packaging>
     <description>Spring x.509 Authentication Demo</description>
 
     <parent>
         <groupId>com.baeldung</groupId>
-        <artifactId>spring-security-x509</artifactId>
+        <artifactId>spring-security-web-x509</artifactId>
         <version>0.0.1-SNAPSHOT</version>
     </parent>
 
diff --git a/spring-security-modules/spring-security-x509/spring-security-x509-basic-auth/src/main/java/com/baeldung/spring/security/x509/UserController.java b/spring-security-modules/spring-security-web-x509/spring-security-web-x509-basic-auth/src/main/java/com/baeldung/spring/security/x509/UserController.java
similarity index 100%
rename from spring-security-modules/spring-security-x509/spring-security-x509-basic-auth/src/main/java/com/baeldung/spring/security/x509/UserController.java
rename to spring-security-modules/spring-security-web-x509/spring-security-web-x509-basic-auth/src/main/java/com/baeldung/spring/security/x509/UserController.java
diff --git a/spring-security-modules/spring-security-x509/spring-security-x509-basic-auth/src/main/java/com/baeldung/spring/security/x509/X509AuthenticationServer.java b/spring-security-modules/spring-security-web-x509/spring-security-web-x509-basic-auth/src/main/java/com/baeldung/spring/security/x509/X509AuthenticationServer.java
similarity index 100%
rename from spring-security-modules/spring-security-x509/spring-security-x509-basic-auth/src/main/java/com/baeldung/spring/security/x509/X509AuthenticationServer.java
rename to spring-security-modules/spring-security-web-x509/spring-security-web-x509-basic-auth/src/main/java/com/baeldung/spring/security/x509/X509AuthenticationServer.java
diff --git a/spring-security-modules/spring-security-x509/spring-security-x509-basic-auth/src/main/resources/application.properties b/spring-security-modules/spring-security-web-x509/spring-security-web-x509-basic-auth/src/main/resources/application.properties
similarity index 100%
rename from spring-security-modules/spring-security-x509/spring-security-x509-basic-auth/src/main/resources/application.properties
rename to spring-security-modules/spring-security-web-x509/spring-security-web-x509-basic-auth/src/main/resources/application.properties
diff --git a/spring-security-modules/spring-security-x509/spring-security-x509-basic-auth/src/main/resources/logback.xml b/spring-security-modules/spring-security-web-x509/spring-security-web-x509-basic-auth/src/main/resources/logback.xml
similarity index 100%
rename from spring-security-modules/spring-security-x509/spring-security-x509-basic-auth/src/main/resources/logback.xml
rename to spring-security-modules/spring-security-web-x509/spring-security-web-x509-basic-auth/src/main/resources/logback.xml
diff --git a/spring-security-modules/spring-security-x509/spring-security-x509-basic-auth/src/main/resources/templates/user.html b/spring-security-modules/spring-security-web-x509/spring-security-web-x509-basic-auth/src/main/resources/templates/user.html
similarity index 100%
rename from spring-security-modules/spring-security-x509/spring-security-x509-basic-auth/src/main/resources/templates/user.html
rename to spring-security-modules/spring-security-web-x509/spring-security-web-x509-basic-auth/src/main/resources/templates/user.html
diff --git a/spring-security-modules/spring-security-x509/spring-security-x509-basic-auth/src/test/java/com/baeldung/SpringContextTest.java b/spring-security-modules/spring-security-web-x509/spring-security-web-x509-basic-auth/src/test/java/com/baeldung/SpringContextTest.java
similarity index 100%
rename from spring-security-modules/spring-security-x509/spring-security-x509-basic-auth/src/test/java/com/baeldung/SpringContextTest.java
rename to spring-security-modules/spring-security-web-x509/spring-security-web-x509-basic-auth/src/test/java/com/baeldung/SpringContextTest.java
diff --git a/spring-security-modules/spring-security-x509/spring-security-x509-basic-auth/src/test/java/com/baeldung/spring/security/x509/X509AuthenticationServerIntegrationTest.java b/spring-security-modules/spring-security-web-x509/spring-security-web-x509-basic-auth/src/test/java/com/baeldung/spring/security/x509/X509AuthenticationServerIntegrationTest.java
similarity index 100%
rename from spring-security-modules/spring-security-x509/spring-security-x509-basic-auth/src/test/java/com/baeldung/spring/security/x509/X509AuthenticationServerIntegrationTest.java
rename to spring-security-modules/spring-security-web-x509/spring-security-web-x509-basic-auth/src/test/java/com/baeldung/spring/security/x509/X509AuthenticationServerIntegrationTest.java
diff --git a/spring-security-modules/spring-security-x509/spring-security-x509-client-auth/pom.xml b/spring-security-modules/spring-security-web-x509/spring-security-web-x509-client-auth/pom.xml
similarity index 94%
rename from spring-security-modules/spring-security-x509/spring-security-x509-client-auth/pom.xml
rename to spring-security-modules/spring-security-web-x509/spring-security-web-x509-client-auth/pom.xml
index 3a39f6af67..fdbc90c0f6 100644
--- a/spring-security-modules/spring-security-x509/spring-security-x509-client-auth/pom.xml
+++ b/spring-security-modules/spring-security-web-x509/spring-security-web-x509-client-auth/pom.xml
@@ -2,15 +2,15 @@
 <project xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns="http://maven.apache.org/POM/4.0.0"
          xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
     <modelVersion>4.0.0</modelVersion>
-    <artifactId>spring-security-x509-client-auth</artifactId>
+    <artifactId>spring-security-web-x509-client-auth</artifactId>
     <version>0.0.1-SNAPSHOT</version>
-    <name>spring-security-x509-client-auth</name>
+    <name>spring-security-web-x509-client-auth</name>
     <packaging>jar</packaging>
     <description>Spring x.509 Client Authentication Demo</description>
 
     <parent>
         <groupId>com.baeldung</groupId>
-        <artifactId>spring-security-x509</artifactId>
+        <artifactId>spring-security-web-x509</artifactId>
         <version>0.0.1-SNAPSHOT</version>
     </parent>
 
diff --git a/spring-security-modules/spring-security-x509/spring-security-x509-client-auth/src/main/java/com/baeldung/spring/security/x509/UserController.java b/spring-security-modules/spring-security-web-x509/spring-security-web-x509-client-auth/src/main/java/com/baeldung/spring/security/x509/UserController.java
similarity index 100%
rename from spring-security-modules/spring-security-x509/spring-security-x509-client-auth/src/main/java/com/baeldung/spring/security/x509/UserController.java
rename to spring-security-modules/spring-security-web-x509/spring-security-web-x509-client-auth/src/main/java/com/baeldung/spring/security/x509/UserController.java
diff --git a/spring-security-modules/spring-security-x509/spring-security-x509-client-auth/src/main/java/com/baeldung/spring/security/x509/X509AuthenticationServer.java b/spring-security-modules/spring-security-web-x509/spring-security-web-x509-client-auth/src/main/java/com/baeldung/spring/security/x509/X509AuthenticationServer.java
similarity index 100%
rename from spring-security-modules/spring-security-x509/spring-security-x509-client-auth/src/main/java/com/baeldung/spring/security/x509/X509AuthenticationServer.java
rename to spring-security-modules/spring-security-web-x509/spring-security-web-x509-client-auth/src/main/java/com/baeldung/spring/security/x509/X509AuthenticationServer.java
diff --git a/spring-security-modules/spring-security-x509/spring-security-x509-client-auth/src/main/resources/application.properties b/spring-security-modules/spring-security-web-x509/spring-security-web-x509-client-auth/src/main/resources/application.properties
similarity index 100%
rename from spring-security-modules/spring-security-x509/spring-security-x509-client-auth/src/main/resources/application.properties
rename to spring-security-modules/spring-security-web-x509/spring-security-web-x509-client-auth/src/main/resources/application.properties
diff --git a/spring-security-modules/spring-security-x509/spring-security-x509-client-auth/src/main/resources/logback.xml b/spring-security-modules/spring-security-web-x509/spring-security-web-x509-client-auth/src/main/resources/logback.xml
similarity index 100%
rename from spring-security-modules/spring-security-x509/spring-security-x509-client-auth/src/main/resources/logback.xml
rename to spring-security-modules/spring-security-web-x509/spring-security-web-x509-client-auth/src/main/resources/logback.xml
diff --git a/spring-security-modules/spring-security-x509/spring-security-x509-client-auth/src/main/resources/templates/user.html b/spring-security-modules/spring-security-web-x509/spring-security-web-x509-client-auth/src/main/resources/templates/user.html
similarity index 100%
rename from spring-security-modules/spring-security-x509/spring-security-x509-client-auth/src/main/resources/templates/user.html
rename to spring-security-modules/spring-security-web-x509/spring-security-web-x509-client-auth/src/main/resources/templates/user.html
diff --git a/spring-security-modules/spring-security-x509/spring-security-x509-client-auth/src/test/java/com/baeldung/SpringContextTest.java b/spring-security-modules/spring-security-web-x509/spring-security-web-x509-client-auth/src/test/java/com/baeldung/SpringContextTest.java
similarity index 100%
rename from spring-security-modules/spring-security-x509/spring-security-x509-client-auth/src/test/java/com/baeldung/SpringContextTest.java
rename to spring-security-modules/spring-security-web-x509/spring-security-web-x509-client-auth/src/test/java/com/baeldung/SpringContextTest.java
diff --git a/spring-security-modules/spring-security-x509/spring-security-x509-client-auth/src/test/java/com/baeldung/spring/security/x509/X509AuthenticationServerIntegrationTest.java b/spring-security-modules/spring-security-web-x509/spring-security-web-x509-client-auth/src/test/java/com/baeldung/spring/security/x509/X509AuthenticationServerIntegrationTest.java
similarity index 100%
rename from spring-security-modules/spring-security-x509/spring-security-x509-client-auth/src/test/java/com/baeldung/spring/security/x509/X509AuthenticationServerIntegrationTest.java
rename to spring-security-modules/spring-security-web-x509/spring-security-web-x509-client-auth/src/test/java/com/baeldung/spring/security/x509/X509AuthenticationServerIntegrationTest.java
diff --git a/spring-security-modules/spring-security-x509/store/clientBob.p12 b/spring-security-modules/spring-security-web-x509/store/clientBob.p12
similarity index 100%
rename from spring-security-modules/spring-security-x509/store/clientBob.p12
rename to spring-security-modules/spring-security-web-x509/store/clientBob.p12
diff --git a/spring-security-modules/spring-security-x509/store/keystore.jks b/spring-security-modules/spring-security-web-x509/store/keystore.jks
similarity index 100%
rename from spring-security-modules/spring-security-x509/store/keystore.jks
rename to spring-security-modules/spring-security-web-x509/store/keystore.jks
diff --git a/spring-security-modules/spring-security-x509/store/localhost.ext b/spring-security-modules/spring-security-web-x509/store/localhost.ext
similarity index 100%
rename from spring-security-modules/spring-security-x509/store/localhost.ext
rename to spring-security-modules/spring-security-web-x509/store/localhost.ext
diff --git a/spring-security-modules/spring-security-x509/store/rootCA.crt b/spring-security-modules/spring-security-web-x509/store/rootCA.crt
similarity index 100%
rename from spring-security-modules/spring-security-x509/store/rootCA.crt
rename to spring-security-modules/spring-security-web-x509/store/rootCA.crt
diff --git a/spring-security-modules/spring-security-x509/store/truststore.jks b/spring-security-modules/spring-security-web-x509/store/truststore.jks
similarity index 100%
rename from spring-security-modules/spring-security-x509/store/truststore.jks
rename to spring-security-modules/spring-security-web-x509/store/truststore.jks

From 7e6ddf0e4848d569cf4ca115d52414f02a7fe8fa Mon Sep 17 00:00:00 2001
From: sampadawagde <sampada.wagde@gmail.com>
Date: Tue, 18 Aug 2020 15:40:29 +0530
Subject: [PATCH 153/156] JAVA-69: parent module changes as per child module
 renaming

---
 spring-security-modules/pom.xml | 10 +++++-----
 1 file changed, 5 insertions(+), 5 deletions(-)

diff --git a/spring-security-modules/pom.xml b/spring-security-modules/pom.xml
index 815b84d448..b68138964b 100644
--- a/spring-security-modules/pom.xml
+++ b/spring-security-modules/pom.xml
@@ -32,12 +32,12 @@
         <module>spring-security-oidc</module>
         <module>spring-security-okta</module>
         <module>spring-security-web-react</module>   
-        <module>spring-security-rest</module>
-        <module>spring-security-rest-basic-auth</module>
-        <module>spring-security-rest-custom</module>
+        <module>spring-security-web-rest</module>
+        <module>spring-security-web-rest-basic-auth</module>
+        <module>spring-security-web-rest-custom</module>
         <module>spring-security-oauth2-sso</module>
-        <module>spring-security-thymeleaf</module>
-        <module>spring-security-x509</module>
+        <module>spring-security-web-thymeleaf</module>
+        <module>spring-security-web-x509</module>
         <module>spring-security-kotlin-dsl</module>
     </modules>
 

From eb9dd3bf5c02504a934a661841c0381a264ff48e Mon Sep 17 00:00:00 2001
From: sampadawagde <sampada.wagde@gmail.com>
Date: Tue, 18 Aug 2020 15:43:55 +0530
Subject: [PATCH 154/156] JAVA-69: README updates

---
 .../spring-security-web-rest-basic-auth/README.md               | 2 +-
 .../spring-security-web-rest-custom/README.md                   | 2 +-
 spring-security-modules/spring-security-web-rest/README.md      | 2 +-
 spring-security-modules/spring-security-web-thymeleaf/README.md | 2 +-
 spring-security-modules/spring-security-web-x509/README.md      | 2 +-
 5 files changed, 5 insertions(+), 5 deletions(-)

diff --git a/spring-security-modules/spring-security-web-rest-basic-auth/README.md b/spring-security-modules/spring-security-web-rest-basic-auth/README.md
index af6dd598cc..97f682acd3 100644
--- a/spring-security-modules/spring-security-web-rest-basic-auth/README.md
+++ b/spring-security-modules/spring-security-web-rest-basic-auth/README.md
@@ -1,4 +1,4 @@
-## Spring Security REST Basic Authentication
+## Spring Security Web - REST Basic Authentication
 
 This module contains articles about basic authentication in RESTful APIs with Spring Security
 
diff --git a/spring-security-modules/spring-security-web-rest-custom/README.md b/spring-security-modules/spring-security-web-rest-custom/README.md
index be360e035e..09b795c4b8 100644
--- a/spring-security-modules/spring-security-web-rest-custom/README.md
+++ b/spring-security-modules/spring-security-web-rest-custom/README.md
@@ -1,4 +1,4 @@
-## Spring Security REST Custom
+## Spring Security Web - REST Custom
 
 This module contains articles about REST APIs with Spring Security
 
diff --git a/spring-security-modules/spring-security-web-rest/README.md b/spring-security-modules/spring-security-web-rest/README.md
index 26c101d32c..c13668798d 100644
--- a/spring-security-modules/spring-security-web-rest/README.md
+++ b/spring-security-modules/spring-security-web-rest/README.md
@@ -1,4 +1,4 @@
-## Spring Security REST
+## Spring Security Web - REST
 
 This module contains articles about REST APIs with Spring Security
 
diff --git a/spring-security-modules/spring-security-web-thymeleaf/README.md b/spring-security-modules/spring-security-web-thymeleaf/README.md
index e0fca4067c..bb3281fa24 100644
--- a/spring-security-modules/spring-security-web-thymeleaf/README.md
+++ b/spring-security-modules/spring-security-web-thymeleaf/README.md
@@ -1,4 +1,4 @@
-## Spring Security Thymeleaf
+## Spring Security Web - Thymeleaf
 
 This module contains articles about Spring Security with Thymeleaf.
 
diff --git a/spring-security-modules/spring-security-web-x509/README.md b/spring-security-modules/spring-security-web-x509/README.md
index da431d862c..5fd63c0307 100644
--- a/spring-security-modules/spring-security-web-x509/README.md
+++ b/spring-security-modules/spring-security-web-x509/README.md
@@ -1,4 +1,4 @@
-## Spring Security X.509
+## Spring Security Web - X.509
 
 This module contains articles about X.509 authentication with Spring Security 
 

From afd00056a27667333500e812d782e414c11af146 Mon Sep 17 00:00:00 2001
From: Maiklins <kruemel@quantentunnel.de>
Date: Tue, 18 Aug 2020 13:46:29 +0200
Subject: [PATCH 155/156] Java-1457 Reduce logging - Modules jgit,
 libraries-testing (#9884)

* Java-1457 Reduce logging - Modules jgit, libraries-testing

* Java-1457 Reduce logging - Modules jgit, libraries-testing

Co-authored-by: mikr <michael.krimgen@ximedes.com>
---
 .../com/baeldung/jgit/porcelain/AddFile.java  |  6 ++++-
 .../baeldung/jgit/porcelain/CommitAll.java    |  6 ++++-
 .../jgit/porcelain/CreateAndDeleteTag.java    | 10 +++++---
 .../java/com/baeldung/jgit/porcelain/Log.java | 25 +++++++++++--------
 .../jgit/porcelain/PorcelainUnitTest.java     |  5 ++--
 .../src/test/resources/logback.xml            |  5 ++++
 6 files changed, 40 insertions(+), 17 deletions(-)
 create mode 100644 libraries-testing/src/test/resources/logback.xml

diff --git a/jgit/src/main/java/com/baeldung/jgit/porcelain/AddFile.java b/jgit/src/main/java/com/baeldung/jgit/porcelain/AddFile.java
index 314366f08c..e6b5dc1afc 100644
--- a/jgit/src/main/java/com/baeldung/jgit/porcelain/AddFile.java
+++ b/jgit/src/main/java/com/baeldung/jgit/porcelain/AddFile.java
@@ -6,6 +6,8 @@ import com.baeldung.jgit.helper.Helper;
 import org.eclipse.jgit.api.Git;
 import org.eclipse.jgit.api.errors.GitAPIException;
 import org.eclipse.jgit.lib.Repository;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
 
 /**
  * Simple snippet which shows how to add a file to the index
@@ -14,6 +16,8 @@ import org.eclipse.jgit.lib.Repository;
  */
 public class AddFile {
 
+    private static final Logger logger = LoggerFactory.getLogger(AddFile.class);
+
     public static void main(String[] args) throws IOException, GitAPIException {
         // prepare a new test-repository
         try (Repository repository = Helper.createNewRepository()) {
@@ -29,7 +33,7 @@ public class AddFile {
                         .addFilepattern("testfile")
                         .call();
 
-                System.out.println("Added file " + myfile + " to repository at " + repository.getDirectory());
+                logger.debug("Added file " + myfile + " to repository at " + repository.getDirectory());
             }
         }
     }
diff --git a/jgit/src/main/java/com/baeldung/jgit/porcelain/CommitAll.java b/jgit/src/main/java/com/baeldung/jgit/porcelain/CommitAll.java
index 4c0956ebf8..a2d071f392 100644
--- a/jgit/src/main/java/com/baeldung/jgit/porcelain/CommitAll.java
+++ b/jgit/src/main/java/com/baeldung/jgit/porcelain/CommitAll.java
@@ -7,6 +7,8 @@ import com.baeldung.jgit.helper.Helper;
 import org.eclipse.jgit.api.Git;
 import org.eclipse.jgit.api.errors.GitAPIException;
 import org.eclipse.jgit.lib.Repository;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
 
 /**
  * Simple snippet which shows how to commit all files
@@ -15,6 +17,8 @@ import org.eclipse.jgit.lib.Repository;
  */
 public class CommitAll {
 
+    private static final Logger logger = LoggerFactory.getLogger(CommitAll.class);
+
     public static void main(String[] args) throws IOException, GitAPIException {
         // prepare a new test-repository
         try (Repository repository = Helper.createNewRepository()) {
@@ -44,7 +48,7 @@ public class CommitAll {
                         .call();
 
 
-                System.out.println("Committed all changes to repository at " + repository.getDirectory());
+                logger.debug("Committed all changes to repository at " + repository.getDirectory());
             }
         }
     }
diff --git a/jgit/src/main/java/com/baeldung/jgit/porcelain/CreateAndDeleteTag.java b/jgit/src/main/java/com/baeldung/jgit/porcelain/CreateAndDeleteTag.java
index 0f735daf8c..e7b0e424e2 100644
--- a/jgit/src/main/java/com/baeldung/jgit/porcelain/CreateAndDeleteTag.java
+++ b/jgit/src/main/java/com/baeldung/jgit/porcelain/CreateAndDeleteTag.java
@@ -9,6 +9,8 @@ import org.eclipse.jgit.lib.Ref;
 import org.eclipse.jgit.lib.Repository;
 import org.eclipse.jgit.revwalk.RevCommit;
 import org.eclipse.jgit.revwalk.RevWalk;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
 
 /**
  * Simple snippet which shows how to create a tag
@@ -17,6 +19,8 @@ import org.eclipse.jgit.revwalk.RevWalk;
  */
 public class CreateAndDeleteTag {
 
+    private static final Logger logger = LoggerFactory.getLogger(CreateAndDeleteTag.class);
+
     public static void main(String[] args) throws IOException, GitAPIException {
         // prepare test-repository
         try (Repository repository = Helper.openJGitRepository()) {
@@ -26,7 +30,7 @@ public class CreateAndDeleteTag {
 
                 // set it on the current HEAD
                 Ref tag = git.tag().setName("tag_for_testing").call();
-                System.out.println("Created/moved tag " + tag + " to repository at " + repository.getDirectory());
+                logger.debug("Created/moved tag " + tag + " to repository at " + repository.getDirectory());
 
                 // remove the tag again
                 git.tagDelete().setTags("tag_for_testing").call();
@@ -36,14 +40,14 @@ public class CreateAndDeleteTag {
                 try (RevWalk walk = new RevWalk(repository)) {
                     RevCommit commit = walk.parseCommit(id);
                     tag = git.tag().setObjectId(commit).setName("tag_for_testing").call();
-                    System.out.println("Created/moved tag " + tag + " to repository at " + repository.getDirectory());
+                    logger.debug("Created/moved tag " + tag + " to repository at " + repository.getDirectory());
 
                     // remove the tag again
                     git.tagDelete().setTags("tag_for_testing").call();
 
                     // create an annotated tag
                     tag = git.tag().setName("tag_for_testing").setAnnotated(true).call();
-                    System.out.println("Created/moved tag " + tag + " to repository at " + repository.getDirectory());
+                    logger.debug("Created/moved tag " + tag + " to repository at " + repository.getDirectory());
 
                     // remove the tag again
                     git.tagDelete().setTags("tag_for_testing").call();
diff --git a/jgit/src/main/java/com/baeldung/jgit/porcelain/Log.java b/jgit/src/main/java/com/baeldung/jgit/porcelain/Log.java
index a50028a9ae..fba8a82962 100644
--- a/jgit/src/main/java/com/baeldung/jgit/porcelain/Log.java
+++ b/jgit/src/main/java/com/baeldung/jgit/porcelain/Log.java
@@ -7,6 +7,9 @@ import org.eclipse.jgit.api.errors.GitAPIException;
 import org.eclipse.jgit.lib.Repository;
 import org.eclipse.jgit.revwalk.RevCommit;
 
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
+
 /**
  * Simple snippet which shows how to get the commit-ids for a file to provide log information.
  *
@@ -14,6 +17,8 @@ import org.eclipse.jgit.revwalk.RevCommit;
  */
 public class Log {
 
+    private static final Logger logger = LoggerFactory.getLogger(Log.class);
+
     @SuppressWarnings("unused")
     public static void main(String[] args) throws IOException, GitAPIException {
         try (Repository repository = Helper.openJGitRepository()) {
@@ -22,30 +27,30 @@ public class Log {
                         .call();
                 int count = 0;
                 for (RevCommit rev : logs) {
-                    //System.out.println("Commit: " + rev /* + ", name: " + rev.getName() + ", id: " + rev.getId().getName() */);
+                    logger.trace("Commit: " + rev /* + ", name: " + rev.getName() + ", id: " + rev.getId().getName() */);
                     count++;
                 }
-                System.out.println("Had " + count + " commits overall on current branch");
+                logger.debug("Had " + count + " commits overall on current branch");
 
                 logs = git.log()
                         .add(repository.resolve(git.getRepository().getFullBranch()))
                         .call();
                 count = 0;
                 for (RevCommit rev : logs) {
-                    System.out.println("Commit: " + rev /* + ", name: " + rev.getName() + ", id: " + rev.getId().getName() */);
+                    logger.trace("Commit: " + rev /* + ", name: " + rev.getName() + ", id: " + rev.getId().getName() */);
                     count++;
                 }
-                System.out.println("Had " + count + " commits overall on "+git.getRepository().getFullBranch());
+                logger.debug("Had " + count + " commits overall on "+git.getRepository().getFullBranch());
 
                 logs = git.log()
                         .all()
                         .call();
                 count = 0;
                 for (RevCommit rev : logs) {
-                    //System.out.println("Commit: " + rev /* + ", name: " + rev.getName() + ", id: " + rev.getId().getName() */);
+                    logger.trace("Commit: " + rev /* + ", name: " + rev.getName() + ", id: " + rev.getId().getName() */);
                     count++;
                 }
-                System.out.println("Had " + count + " commits overall in repository");
+                logger.debug("Had " + count + " commits overall in repository");
 
                 logs = git.log()
                         // for all log.all()
@@ -53,10 +58,10 @@ public class Log {
                         .call();
                 count = 0;
                 for (RevCommit rev : logs) {
-                    //System.out.println("Commit: " + rev /* + ", name: " + rev.getName() + ", id: " + rev.getId().getName() */);
+                    logger.trace("Commit: " + rev /* + ", name: " + rev.getName() + ", id: " + rev.getId().getName() */);
                     count++;
                 }
-                System.out.println("Had " + count + " commits on README.md");
+                logger.debug("Had " + count + " commits on README.md");
 
                 logs = git.log()
                         // for all log.all()
@@ -64,10 +69,10 @@ public class Log {
                         .call();
                 count = 0;
                 for (RevCommit rev : logs) {
-                    //System.out.println("Commit: " + rev /* + ", name: " + rev.getName() + ", id: " + rev.getId().getName() */);
+                    logger.trace("Commit: " + rev /* + ", name: " + rev.getName() + ", id: " + rev.getId().getName() */);
                     count++;
                 }
-                System.out.println("Had " + count + " commits on pom.xml");
+                logger.debug("Had " + count + " commits on pom.xml");
             }
         }
     }
diff --git a/jgit/src/test/java/com/baeldung/jgit/porcelain/PorcelainUnitTest.java b/jgit/src/test/java/com/baeldung/jgit/porcelain/PorcelainUnitTest.java
index d3b3358664..842705e6ac 100644
--- a/jgit/src/test/java/com/baeldung/jgit/porcelain/PorcelainUnitTest.java
+++ b/jgit/src/test/java/com/baeldung/jgit/porcelain/PorcelainUnitTest.java
@@ -11,7 +11,8 @@ public class PorcelainUnitTest {
         CommitAll.main(null);
         
         CreateAndDeleteTag.main(null);
-         
-        Log.main(null);    
+
+        Log.main(null);
+
     }
 }
diff --git a/libraries-testing/src/test/resources/logback.xml b/libraries-testing/src/test/resources/logback.xml
new file mode 100644
index 0000000000..95160412c3
--- /dev/null
+++ b/libraries-testing/src/test/resources/logback.xml
@@ -0,0 +1,5 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<configuration>
+    <logger name="org.dbunit" level="INFO" />
+</configuration>
+

From 1ed8b7a2bfa2fd4f67139e9771d725ad98a7fc67 Mon Sep 17 00:00:00 2001
From: kwoyke <krzysztofwoyke@gmail.com>
Date: Tue, 18 Aug 2020 16:12:35 +0200
Subject: [PATCH 156/156] BAEL-4430: Update the email regexp pattern (#9893)

---
 .../src/main/java/com/baeldung/swagger2boot/model/User.java     | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/spring-boot-modules/spring-boot-mvc/src/main/java/com/baeldung/swagger2boot/model/User.java b/spring-boot-modules/spring-boot-mvc/src/main/java/com/baeldung/swagger2boot/model/User.java
index b724031536..339e85e0d4 100644
--- a/spring-boot-modules/spring-boot-mvc/src/main/java/com/baeldung/swagger2boot/model/User.java
+++ b/spring-boot-modules/spring-boot-mvc/src/main/java/com/baeldung/swagger2boot/model/User.java
@@ -20,7 +20,7 @@ public class User {
     @Max(value = 65, message = "Age should not be greater than 65")
     private int age;
 
-    @Email(regexp=".@.\\..*", message = "Email should be valid")
+    @Email(regexp=".*@.*\\..*", message = "Email should be valid")
     private String email;
 
     public Long getId() {