diff --git a/algorithms-searching/README.md b/algorithms-searching/README.md
index aed3c7d21f..a3ea023da3 100644
--- a/algorithms-searching/README.md
+++ b/algorithms-searching/README.md
@@ -3,6 +3,7 @@
This module contains articles about searching algorithms.
### Relevant articles:
+
- [Binary Search Algorithm in Java](https://www.baeldung.com/java-binary-search)
- [Depth First Search in Java](https://www.baeldung.com/java-depth-first-search)
- [Interpolation Search in Java](https://www.baeldung.com/java-interpolation-search)
@@ -11,3 +12,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)
+- [Find the Kth Smallest Element in Two Sorted Arrays](https://www.baeldung.com/java-kth-smallest-element-in-sorted-arrays)
diff --git a/apache-poi/README.md b/apache-poi/README.md
index b562fefc29..599b21e063 100644
--- a/apache-poi/README.md
+++ b/apache-poi/README.md
@@ -3,9 +3,11 @@
This module contains articles about Apache POI
### Relevant Articles:
+
- [Microsoft Word Processing in Java with Apache POI](https://www.baeldung.com/java-microsoft-word-with-apache-poi)
- [Working with Microsoft Excel in Java](https://www.baeldung.com/java-microsoft-excel)
- [Creating a MS PowerPoint Presentation in Java](https://www.baeldung.com/apache-poi-slideshow)
- [Merge Cells in Excel Using Apache POI](https://www.baeldung.com/java-apache-poi-merge-cells)
- [Get String Value of Excel Cell with Apache POI](https://www.baeldung.com/java-apache-poi-cell-string-value)
- [Read Excel Cell Value Rather Than Formula With Apache POI](https://www.baeldung.com/apache-poi-read-cell-value-formula)
+- [Setting Formulas in Excel with Apache POI](https://www.baeldung.com/java-apache-poi-set-formulas)
diff --git a/core-java-modules/core-java-10/README.md b/core-java-modules/core-java-10/README.md
index 2b57ec9064..23f598b902 100644
--- a/core-java-modules/core-java-10/README.md
+++ b/core-java-modules/core-java-10/README.md
@@ -9,3 +9,4 @@ This module contains articles about Java 10 core features
- [Copy a List to Another List in Java](http://www.baeldung.com/java-copy-list-to-another)
- [Deep Dive Into the New Java JIT Compiler – Graal](https://www.baeldung.com/graal-java-jit-compiler)
- [Copying Sets in Java](https://www.baeldung.com/java-copy-sets)
+- [Converting between a List and a Set in Java](https://www.baeldung.com/convert-list-to-set-and-set-to-list)
diff --git a/core-java-modules/core-java-10/pom.xml b/core-java-modules/core-java-10/pom.xml
index a9b991852f..b293eb6c2f 100644
--- a/core-java-modules/core-java-10/pom.xml
+++ b/core-java-modules/core-java-10/pom.xml
@@ -1,22 +1,29 @@
+ 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">
4.0.0
core-java-10
0.1.0-SNAPSHOT
core-java-10
jar
- http://maven.apache.org
- com.baeldung
- parent-modules
- 1.0.0-SNAPSHOT
- ../../
+ com.baeldung.core-java-modules
+ core-java-modules
+ 0.0.1-SNAPSHOT
+ ../
+
+
+ org.apache.commons
+ commons-collections4
+ ${commons-collections4.version}
+
+
+
@@ -34,6 +41,7 @@
10
10
+ 4.1
diff --git a/core-java-modules/core-java-10/src/test/java/com/baeldung/java10/collections/conversion/ListSetConversionUnitTest.java b/core-java-modules/core-java-10/src/test/java/com/baeldung/java10/collections/conversion/ListSetConversionUnitTest.java
new file mode 100644
index 0000000000..1526d1ae7f
--- /dev/null
+++ b/core-java-modules/core-java-10/src/test/java/com/baeldung/java10/collections/conversion/ListSetConversionUnitTest.java
@@ -0,0 +1,68 @@
+package com.baeldung.java10.collections.conversion;
+
+import com.google.common.collect.Lists;
+import com.google.common.collect.Sets;
+import org.apache.commons.collections4.CollectionUtils;
+import org.junit.Test;
+
+import java.util.ArrayList;
+import java.util.HashSet;
+import java.util.List;
+import java.util.Set;
+
+public class ListSetConversionUnitTest {
+
+ // Set -> List; List -> Set
+
+ @Test
+ public final void givenUsingCoreJava_whenSetConvertedToList_thenCorrect() {
+ final Set sourceSet = Sets.newHashSet(0, 1, 2, 3, 4, 5);
+ final List targetList = new ArrayList<>(sourceSet);
+ }
+
+ @Test
+ public final void givenUsingCoreJava_whenListConvertedToSet_thenCorrect() {
+ final List sourceList = Lists.newArrayList(0, 1, 2, 3, 4, 5);
+ final Set targetSet = new HashSet<>(sourceList);
+ }
+
+ @Test
+ public void givenUsingJava10_whenSetConvertedToList_thenCorrect() {
+ final Set sourceSet = Sets.newHashSet(0, 1, 2, 3, 4, 5);
+ final List targetList = List.copyOf(sourceSet);
+ }
+
+ @Test
+ public void givenUsingJava10_whenListConvertedToSet_thenCorrect() {
+ final List sourceList = Lists.newArrayList(0, 1, 2, 3, 4, 5);
+ final Set targetSet = Set.copyOf(sourceList);
+ }
+
+ @Test
+ public final void givenUsingGuava_whenSetConvertedToList_thenCorrect() {
+ final Set sourceSet = Sets.newHashSet(0, 1, 2, 3, 4, 5);
+ final List targetList = Lists.newArrayList(sourceSet);
+ }
+
+ @Test
+ public final void givenUsingGuava_whenListConvertedToSet_thenCorrect() {
+ final List sourceList = Lists.newArrayList(0, 1, 2, 3, 4, 5);
+ final Set targetSet = Sets.newHashSet(sourceList);
+ }
+
+ @Test
+ public final void givenUsingCommonsCollections_whenListConvertedToSet_thenCorrect() {
+ final List sourceList = Lists.newArrayList(0, 1, 2, 3, 4, 5);
+
+ final Set targetSet = new HashSet<>(6);
+ CollectionUtils.addAll(targetSet, sourceList);
+ }
+
+ @Test
+ public final void givenUsingCommonsCollections_whenSetConvertedToList_thenCorrect() {
+ final Set sourceSet = Sets.newHashSet(0, 1, 2, 3, 4, 5);
+
+ final List targetList = new ArrayList<>(6);
+ CollectionUtils.addAll(targetList, sourceSet);
+ }
+}
diff --git a/core-java-modules/core-java-arrays-operations-advanced/README.md b/core-java-modules/core-java-arrays-operations-advanced/README.md
index af0c00641a..c8ec3e74bc 100644
--- a/core-java-modules/core-java-arrays-operations-advanced/README.md
+++ b/core-java-modules/core-java-arrays-operations-advanced/README.md
@@ -3,7 +3,9 @@
This module contains articles about advanced operations on arrays in Java. They assume some background knowledge with arrays in Java.
### Relevant Articles:
+
- [How to Copy an Array in Java](https://www.baeldung.com/java-array-copy)
- [Arrays.deepEquals](https://www.baeldung.com/java-arrays-deepequals)
- [Find Sum and Average in a Java Array](https://www.baeldung.com/java-array-sum-average)
- [Intersection Between two Integer Arrays](https://www.baeldung.com/java-array-intersection)
+- [Comparing Arrays in Java](https://www.baeldung.com/java-comparing-arrays)
diff --git a/core-java-modules/core-java-collections-3/README.md b/core-java-modules/core-java-collections-3/README.md
index 4349ef6be3..c80e493767 100644
--- a/core-java-modules/core-java-collections-3/README.md
+++ b/core-java-modules/core-java-collections-3/README.md
@@ -12,3 +12,4 @@
- [Fail-Safe Iterator vs Fail-Fast Iterator](https://www.baeldung.com/java-fail-safe-vs-fail-fast-iterator)
- [Quick Guide to the Java Stack](https://www.baeldung.com/java-stack)
- [Convert an Array of Primitives to a List](https://www.baeldung.com/java-primitive-array-to-list)
+- [A Guide to BitSet in Java](https://www.baeldung.com/java-bitset)
diff --git a/core-java-modules/core-java-collections-list-3/README.md b/core-java-modules/core-java-collections-list-3/README.md
index 65c377bd99..967e148a99 100644
--- a/core-java-modules/core-java-collections-list-3/README.md
+++ b/core-java-modules/core-java-collections-list-3/README.md
@@ -10,4 +10,5 @@ This module contains articles about the Java List collection
- [Performance Comparison of Primitive Lists in Java](https://www.baeldung.com/java-list-primitive-performance)
- [Filtering a Java Collection by a List](https://www.baeldung.com/java-filter-collection-by-list)
- [How to Count Duplicate Elements in Arraylist](https://www.baeldung.com/java-count-duplicate-elements-arraylist)
+- [Finding the Differences Between Two Lists in Java](https://www.baeldung.com/java-lists-difference)
- [[<-- Prev]](/core-java-modules/core-java-collections-list-2)
diff --git a/core-java-modules/core-java-console/README.md b/core-java-modules/core-java-console/README.md
index 725e2482bb..0a31727588 100644
--- a/core-java-modules/core-java-console/README.md
+++ b/core-java-modules/core-java-console/README.md
@@ -1,5 +1,8 @@
#Core Java Console
-[Read and Write User Input in Java](http://www.baeldung.com/java-console-input-output)
-[Formatting with printf() in Java](https://www.baeldung.com/java-printstream-printf)
-[ASCII Art in Java](http://www.baeldung.com/ascii-art-in-java)
\ No newline at end of file
+### Relevant Articles:
+
+- [Read and Write User Input in Java](http://www.baeldung.com/java-console-input-output)
+- [Formatting with printf() in Java](https://www.baeldung.com/java-printstream-printf)
+- [ASCII Art in Java](http://www.baeldung.com/ascii-art-in-java)
+- [System.console() vs. System.out](https://www.baeldung.com/java-system-console-vs-system-out)
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..e6c7eda881
--- /dev/null
+++ b/core-java-modules/core-java-exceptions-3/README.md
@@ -0,0 +1,3 @@
+### Relevant Articles:
+
+- [NoSuchMethodError in Java](https://www.baeldung.com/java-nosuchmethod-error)
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 @@
+
+
+ 4.0.0
+ com.baeldung.exceptions
+ core-java-exceptions-3
+ 0.1.0-SNAPSHOT
+ core-java-exceptions-3
+ jar
+
+ com.baeldung.core-java-modules
+ core-java-modules
+ 0.0.1-SNAPSHOT
+ ../
+
+
+
+
+
+ org.assertj
+ assertj-core
+ ${assertj-core.version}
+ test
+
+
+
+
+
+ 3.10.0
+
+
+
\ 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());
+ }
+}
diff --git a/core-java-modules/core-java-io-3/README.md b/core-java-modules/core-java-io-3/README.md
index 61a040c1ce..c4eacdf27a 100644
--- a/core-java-modules/core-java-io-3/README.md
+++ b/core-java-modules/core-java-io-3/README.md
@@ -6,4 +6,7 @@ This module contains articles about core Java input and output (IO)
- [Java – Create a File](https://www.baeldung.com/java-how-to-create-a-file)
- [Check If a Directory Is Empty in Java](https://www.baeldung.com/java-check-empty-directory)
+- [Check If a File or Directory Exists in Java](https://www.baeldung.com/java-file-directory-exists)
+- [Copy a Directory in Java](https://www.baeldung.com/java-copy-directory)
+- [Java Files Open Options](https://www.baeldung.com/java-file-options)
- [[<-- Prev]](/core-java-modules/core-java-io-2)
diff --git a/core-java-modules/core-java-io-3/src/test/java/com/baeldung/linenumber/LineAtGivenNumberUnitTest.java b/core-java-modules/core-java-io-3/src/test/java/com/baeldung/linenumber/LineAtGivenNumberUnitTest.java
new file mode 100644
index 0000000000..ffe3221d62
--- /dev/null
+++ b/core-java-modules/core-java-io-3/src/test/java/com/baeldung/linenumber/LineAtGivenNumberUnitTest.java
@@ -0,0 +1,82 @@
+package com.baeldung.linenumber;
+
+import org.apache.commons.io.FileUtils;
+import org.apache.commons.io.IOUtils;
+import org.junit.Test;
+
+import java.io.BufferedReader;
+import java.io.File;
+import java.io.FileInputStream;
+import java.io.IOException;
+import java.nio.charset.StandardCharsets;
+import java.nio.file.Files;
+import java.nio.file.Paths;
+import java.util.List;
+import java.util.Scanner;
+import java.util.stream.Stream;
+
+import static org.junit.Assert.assertEquals;
+
+public class LineAtGivenNumberUnitTest {
+
+ private static final String FILE_PATH = "src/test/resources/linesInput.txt";
+
+ @Test
+ public void givenFile_whenUsingBufferedReader_thenExtractedLineIsCorrect() throws IOException {
+ try (BufferedReader br = Files.newBufferedReader(Paths.get(FILE_PATH))) {
+ for (int i = 0; i < 3; i++) {
+ br.readLine();
+ }
+
+ String extractedLine = br.readLine();
+ assertEquals("Line 4", extractedLine);
+ }
+ }
+
+ @Test
+ public void givenFile_whenUsingScanner_thenExtractedLineIsCorrect() throws IOException {
+ try (Scanner scanner = new Scanner(new File(FILE_PATH))) {
+ for (int i = 0; i < 3; i++) {
+ scanner.nextLine();
+ }
+
+ String extractedLine = scanner.nextLine();
+ assertEquals("Line 4", extractedLine);
+ }
+ }
+
+ @Test
+ public void givenSmallFile_whenUsingFilesAPI_thenExtractedLineIsCorrect() throws IOException {
+ String extractedLine = Files.readAllLines(Paths.get(FILE_PATH)).get(4);
+
+ assertEquals("Line 5", extractedLine);
+ }
+
+ @Test
+ public void givenLargeFile_whenUsingFilesAPI_thenExtractedLineIsCorrect() throws IOException {
+ try (Stream lines = Files.lines(Paths.get(FILE_PATH))) {
+ String extractedLine = lines.skip(4).findFirst().get();
+
+ assertEquals("Line 5", extractedLine);
+ }
+ }
+
+ @Test
+ public void givenFile_whenUsingFileUtils_thenExtractedLineIsCorrect() throws IOException {
+ ClassLoader classLoader = getClass().getClassLoader();
+ File file = new File(classLoader.getResource("linesInput.txt").getFile());
+
+ List lines = FileUtils.readLines(file, "UTF-8");
+
+ String extractedLine = lines.get(0);
+ assertEquals("Line 1", extractedLine);
+ }
+
+ @Test
+ public void givenFile_whenUsingIOUtils_thenExtractedLineIsCorrect() throws IOException {
+ String fileContent = IOUtils.toString(new FileInputStream(FILE_PATH), StandardCharsets.UTF_8);
+
+ String extractedLine = fileContent.split(System.lineSeparator())[0];
+ assertEquals("Line 1", extractedLine);
+ }
+}
diff --git a/core-java-modules/core-java-io-3/src/test/resources/linesInput.txt b/core-java-modules/core-java-io-3/src/test/resources/linesInput.txt
new file mode 100644
index 0000000000..572d5d9483
--- /dev/null
+++ b/core-java-modules/core-java-io-3/src/test/resources/linesInput.txt
@@ -0,0 +1,5 @@
+Line 1
+Line 2
+Line 3
+Line 4
+Line 5
diff --git a/core-java-modules/core-java-jvm-2/README.md b/core-java-modules/core-java-jvm-2/README.md
index 7206a9eef7..36cafd3288 100644
--- a/core-java-modules/core-java-jvm-2/README.md
+++ b/core-java-modules/core-java-jvm-2/README.md
@@ -10,4 +10,5 @@ This module contains articles about working with the Java Virtual Machine (JVM).
- [boolean and boolean[] Memory Layout in the JVM](https://www.baeldung.com/jvm-boolean-memory-layout)
- [Where Is the Array Length Stored in JVM?](https://www.baeldung.com/java-jvm-array-length)
- [Memory Address of Objects in Java](https://www.baeldung.com/java-object-memory-address)
+- [List All Classes Loaded in a Specific Class Loader](https://www.baeldung.com/java-list-classes-class-loader)
- More articles: [[<-- prev]](/core-java-modules/core-java-jvm)
diff --git a/core-java-modules/core-java-lambdas/src/main/java/com/baeldung/java8/lambda/tips/Bar.java b/core-java-modules/core-java-lambdas/src/main/java/com/baeldung/java8/lambda/tips/Bar.java
index 4cf0aa2399..3ee78bd7a3 100644
--- a/core-java-modules/core-java-lambdas/src/main/java/com/baeldung/java8/lambda/tips/Bar.java
+++ b/core-java-modules/core-java-lambdas/src/main/java/com/baeldung/java8/lambda/tips/Bar.java
@@ -6,8 +6,11 @@ public interface Bar {
String method(String string);
- default String defaultMethod() {
- return "String from Bar";
+ default String defaultBar() {
+ return "Default String from Bar";
}
+ default String defaultCommon() {
+ return "Default Common from Bar";
+ }
}
diff --git a/core-java-modules/core-java-lambdas/src/main/java/com/baeldung/java8/lambda/tips/Baz.java b/core-java-modules/core-java-lambdas/src/main/java/com/baeldung/java8/lambda/tips/Baz.java
index c7efe14c89..1e1e9ae094 100644
--- a/core-java-modules/core-java-lambdas/src/main/java/com/baeldung/java8/lambda/tips/Baz.java
+++ b/core-java-modules/core-java-lambdas/src/main/java/com/baeldung/java8/lambda/tips/Baz.java
@@ -6,7 +6,11 @@ public interface Baz {
String method(String string);
- default String defaultMethod() {
- return "String from Baz";
+ default String defaultBaz() {
+ return "Default String from Baz";
+ }
+
+ default String defaultCommon(){
+ return "Default Common from Baz";
}
}
diff --git a/core-java-modules/core-java-lambdas/src/main/java/com/baeldung/java8/lambda/tips/FooExtended.java b/core-java-modules/core-java-lambdas/src/main/java/com/baeldung/java8/lambda/tips/FooExtended.java
index 9141cd8eb8..27ab86dca3 100644
--- a/core-java-modules/core-java-lambdas/src/main/java/com/baeldung/java8/lambda/tips/FooExtended.java
+++ b/core-java-modules/core-java-lambdas/src/main/java/com/baeldung/java8/lambda/tips/FooExtended.java
@@ -5,8 +5,7 @@ package com.baeldung.java8.lambda.tips;
public interface FooExtended extends Baz, Bar {
@Override
- default String defaultMethod() {
- return Bar.super.defaultMethod();
+ default String defaultCommon() {
+ return Bar.super.defaultCommon();
}
-
}
diff --git a/core-java-modules/core-java-lambdas/src/test/java/com/baeldung/java8/lambda/tips/Java8FunctionalInteracesLambdasUnitTest.java b/core-java-modules/core-java-lambdas/src/test/java/com/baeldung/java8/lambda/tips/Java8FunctionalInteracesLambdasUnitTest.java
index b409f8e37f..acc3bc8fa3 100644
--- a/core-java-modules/core-java-lambdas/src/test/java/com/baeldung/java8/lambda/tips/Java8FunctionalInteracesLambdasUnitTest.java
+++ b/core-java-modules/core-java-lambdas/src/test/java/com/baeldung/java8/lambda/tips/Java8FunctionalInteracesLambdasUnitTest.java
@@ -39,9 +39,9 @@ public class Java8FunctionalInteracesLambdasUnitTest {
@Test
public void defaultMethodFromExtendedInterface_whenReturnDefiniteString_thenCorrect() {
final FooExtended fooExtended = string -> string;
- final String result = fooExtended.defaultMethod();
+ final String result = fooExtended.defaultCommon();
- assertEquals("String from Bar", result);
+ assertEquals("Default Common from Bar", result);
}
@Test
diff --git a/core-java-modules/core-java-lang-3/README.md b/core-java-modules/core-java-lang-3/README.md
index 9ce49da868..0fa08ef397 100644
--- a/core-java-modules/core-java-lang-3/README.md
+++ b/core-java-modules/core-java-lang-3/README.md
@@ -4,4 +4,5 @@ This module contains articles about core features in the Java language
- [Class.isInstance vs Class.isAssignableFrom](https://www.baeldung.com/java-isinstance-isassignablefrom)
- [Converting a Java String Into a Boolean](https://www.baeldung.com/java-string-to-boolean)
+- [When are Static Variables Initialized in Java?](https://www.baeldung.com/java-static-variables-initialization)
- [[<-- Prev]](/core-java-modules/core-java-lang-2)
diff --git a/core-java-modules/core-java-lang-oop-types/README.md b/core-java-modules/core-java-lang-oop-types/README.md
index 449a0f59cc..459352c490 100644
--- a/core-java-modules/core-java-lang-oop-types/README.md
+++ b/core-java-modules/core-java-lang-oop-types/README.md
@@ -3,6 +3,7 @@
This module contains articles about types in Java
### Relevant Articles:
+
- [Java Classes and Objects](https://www.baeldung.com/java-classes-objects)
- [Guide to the this Java Keyword](https://www.baeldung.com/java-this)
- [Nested Classes in Java](https://www.baeldung.com/java-nested-classes)
@@ -10,3 +11,4 @@ This module contains articles about types in Java
- [Iterating Over Enum Values in Java](https://www.baeldung.com/java-enum-iteration)
- [Attaching Values to Java Enum](https://www.baeldung.com/java-enum-values)
- [A Guide to Java Enums](https://www.baeldung.com/a-guide-to-java-enums)
+- [Determine if an Object is of Primitive Type](https://www.baeldung.com/java-object-primitive-type)
diff --git a/core-java-modules/core-java-os/README.md b/core-java-modules/core-java-os/README.md
index f2ec3f9d48..10e04a8ba6 100644
--- a/core-java-modules/core-java-os/README.md
+++ b/core-java-modules/core-java-os/README.md
@@ -12,5 +12,6 @@ This module contains articles about working with the operating system (OS) in Ja
- [How to Print Screen in Java](http://www.baeldung.com/print-screen-in-java)
- [Pattern Search with Grep in Java](http://www.baeldung.com/grep-in-java)
- [How to Run a Shell Command in Java](http://www.baeldung.com/run-shell-command-in-java)
+- [Taking Screenshots Using Java](https://www.baeldung.com/java-taking-screenshots)
-This module uses Java 9, so make sure to have the JDK 9 installed to run it.
\ No newline at end of file
+This module uses Java 9, so make sure to have the JDK 9 installed to run it.
diff --git a/core-java-modules/core-java-reflection-2/README.md b/core-java-modules/core-java-reflection-2/README.md
index 342fbd73bd..e5ddb7a8b8 100644
--- a/core-java-modules/core-java-reflection-2/README.md
+++ b/core-java-modules/core-java-reflection-2/README.md
@@ -1,3 +1,4 @@
### Relevant Articles:
- [Reading the Value of ‘private’ Fields from a Different Class in Java](https://www.baeldung.com/java-reflection-read-private-field-value)
+- [Set Field Value With Reflection](https://www.baeldung.com/java-set-private-field-value)
diff --git a/core-java-modules/pom.xml b/core-java-modules/pom.xml
index 0b832223f4..36fca8de93 100644
--- a/core-java-modules/pom.xml
+++ b/core-java-modules/pom.xml
@@ -73,7 +73,7 @@
core-java-exceptions
core-java-exceptions-2
-
+ core-java-exceptions-3
core-java-function
core-java-io
diff --git a/core-kotlin-modules/core-kotlin/README.md b/core-kotlin-modules/core-kotlin/README.md
index 359c5a4787..33f8745937 100644
--- a/core-kotlin-modules/core-kotlin/README.md
+++ b/core-kotlin-modules/core-kotlin/README.md
@@ -3,6 +3,7 @@
This module contains articles about Kotlin core features.
### Relevant articles:
+
- [Introduction to the Kotlin Language](https://www.baeldung.com/kotlin-intro)
- [Kotlin Java Interoperability](https://www.baeldung.com/kotlin-java-interoperability)
- [Get a Random Number in Kotlin](https://www.baeldung.com/kotlin-random-number)
@@ -10,3 +11,4 @@ This module contains articles about Kotlin core features.
- [Kotlin Ternary Conditional Operator](https://www.baeldung.com/kotlin-ternary-operator)
- [Sequences in Kotlin](https://www.baeldung.com/kotlin/sequences)
- [Converting Kotlin Data Class from JSON using GSON](https://www.baeldung.com/kotlin-json-convert-data-class)
+- [Exception Handling in Kotlin](https://www.baeldung.com/kotlin/exception-handling)
diff --git a/deeplearning4j/README.md b/deeplearning4j/README.md
index 47c2d8167d..5bd00778ce 100644
--- a/deeplearning4j/README.md
+++ b/deeplearning4j/README.md
@@ -5,3 +5,4 @@ This module contains articles about Deeplearning4j.
### Relevant Articles:
- [A Guide to Deeplearning4j](https://www.baeldung.com/deeplearning4j)
- [Logistic Regression in Java](https://www.baeldung.com/java-logistic-regression)
+- [How to Implement a CNN with Deeplearning4j](https://www.baeldung.com/java-cnn-deeplearning4j)
diff --git a/docker/README.md b/docker/README.md
index 7948b3d663..8e5cc2b621 100644
--- a/docker/README.md
+++ b/docker/README.md
@@ -1,3 +1,4 @@
## Relevant Articles:
- [Introduction to Docker Compose](https://www.baeldung.com/docker-compose)
+- [Creating Docker Images with Spring Boot](https://www.baeldung.com/spring-boot-docker-images)
diff --git a/excelformula/README.md b/excelformula/README.md
deleted file mode 100644
index 24560525cd..0000000000
--- a/excelformula/README.md
+++ /dev/null
@@ -1,5 +0,0 @@
-## Apache POI
-
-This module contains articles about Apache POI
-
-### Relevant Articles:
diff --git a/java-collections-conversions-2/README.md b/java-collections-conversions-2/README.md
index 11dddadc5c..9d0ba88cbf 100644
--- a/java-collections-conversions-2/README.md
+++ b/java-collections-conversions-2/README.md
@@ -3,6 +3,8 @@
This module contains articles about conversions among Collection types and arrays in Java.
### Relevant Articles:
+
- [Array to String Conversions](https://www.baeldung.com/java-array-to-string)
- [Mapping Lists with ModelMapper](https://www.baeldung.com/java-modelmapper-lists)
+- [Converting List to Map With a Custom Supplier](https://www.baeldung.com/list-to-map-supplier)
- More articles: [[<-- prev]](../java-collections-conversions)
diff --git a/java-collections-conversions-2/src/test/java/com/baeldung/arrayconversion/ArrayToListConversionUnitTest.java b/java-collections-conversions-2/src/test/java/com/baeldung/arrayconversion/ArrayToListConversionUnitTest.java
new file mode 100644
index 0000000000..551661810d
--- /dev/null
+++ b/java-collections-conversions-2/src/test/java/com/baeldung/arrayconversion/ArrayToListConversionUnitTest.java
@@ -0,0 +1,32 @@
+package com.baeldung.arrayconversion;
+
+import org.junit.Test;
+
+import java.util.ArrayList;
+import java.util.Arrays;
+import java.util.List;
+
+public class ArrayToListConversionUnitTest {
+
+ @Test(expected = UnsupportedOperationException.class)
+ public void givenAnArray_whenConvertingToList_returnUnmodifiableListUnitTest() {
+ String[] stringArray = new String[] { "A", "B", "C", "D" };
+ List stringList = Arrays.asList(stringArray);
+ System.out.println(stringList);
+ stringList.set(0, "E");
+ System.out.println(stringList);
+ System.out.println(Arrays.toString(stringArray));
+ stringList.add("F");
+ }
+
+ @Test
+ public void givenAnArray_whenConvertingToList_returnModifiableListUnitTest() {
+ String[] stringArray = new String[] { "A", "B", "C", "D" };
+ List stringList = new ArrayList<>(Arrays.asList(stringArray));
+ System.out.println(stringList);
+ stringList.set(0, "E");
+ System.out.println(stringList);
+ System.out.println(Arrays.toString(stringArray));
+ stringList.add("F");
+ }
+}
diff --git a/java-collections-conversions/README.md b/java-collections-conversions/README.md
index 2d3aa41f2d..25a4d11b8b 100644
--- a/java-collections-conversions/README.md
+++ b/java-collections-conversions/README.md
@@ -5,7 +5,6 @@ This module contains articles about conversions among Collection types and array
### Relevant Articles:
- [Converting between an Array and a List in Java](https://www.baeldung.com/convert-array-to-list-and-list-to-array)
- [Converting between an Array and a Set in Java](https://www.baeldung.com/convert-array-to-set-and-set-to-array)
-- [Converting between a List and a Set in Java](https://www.baeldung.com/convert-list-to-set-and-set-to-list)
- [Convert a Map to an Array, List or Set in Java](https://www.baeldung.com/convert-map-values-to-array-list-set)
- [Converting a List to String in Java](https://www.baeldung.com/java-list-to-string)
- [How to Convert List to Map in Java](https://www.baeldung.com/java-list-to-map)
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 7b856309f1..7947d1b6c7 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
@@ -101,42 +101,6 @@ public class JavaCollectionConversionUnitTest {
final int[] primitiveTargetArray = ArrayUtils.toPrimitive(targetArray);
}
- // Set -> List; List -> Set
-
- public final void givenUsingCoreJava_whenSetConvertedToList_thenCorrect() {
- final Set sourceSet = Sets.newHashSet(0, 1, 2, 3, 4, 5);
- final List targetList = new ArrayList<>(sourceSet);
- }
-
- public final void givenUsingCoreJava_whenListConvertedToSet_thenCorrect() {
- final List sourceList = Lists.newArrayList(0, 1, 2, 3, 4, 5);
- final Set targetSet = new HashSet<>(sourceList);
- }
-
- public final void givenUsingGuava_whenSetConvertedToList_thenCorrect() {
- final Set sourceSet = Sets.newHashSet(0, 1, 2, 3, 4, 5);
- final List targetList = Lists.newArrayList(sourceSet);
- }
-
- public final void givenUsingGuava_whenListConvertedToSet_thenCorrect() {
- final List sourceList = Lists.newArrayList(0, 1, 2, 3, 4, 5);
- final Set targetSet = Sets.newHashSet(sourceList);
- }
-
- public final void givenUsingCommonsCollections_whenListConvertedToSet_thenCorrect() {
- final List sourceList = Lists.newArrayList(0, 1, 2, 3, 4, 5);
-
- final Set targetSet = new HashSet<>(6);
- CollectionUtils.addAll(targetSet, sourceList);
- }
-
- public final void givenUsingCommonsCollections_whenSetConvertedToList_thenCorrect() {
- final Set sourceSet = Sets.newHashSet(0, 1, 2, 3, 4, 5);
-
- final List targetList = new ArrayList<>(6);
- CollectionUtils.addAll(targetList, sourceSet);
- }
-
// Map (values) -> Array, List, Set
@Test
diff --git a/java-numbers-4/README.md b/java-numbers-4/README.md
new file mode 100644
index 0000000000..344d348733
--- /dev/null
+++ b/java-numbers-4/README.md
@@ -0,0 +1,3 @@
+### Relevant Articles:
+
+- [Probability in Java](https://www.baeldung.com/java-probability)
diff --git a/javax-servlets/README.md b/javax-servlets/README.md
index 54f92064a0..fe070f73b5 100644
--- a/javax-servlets/README.md
+++ b/javax-servlets/README.md
@@ -12,4 +12,4 @@ This module contains articles about Servlets.
- [Jakarta EE Servlet Exception Handling](https://www.baeldung.com/servlet-exceptions)
- [Context and Servlet Initialization Parameters](https://www.baeldung.com/context-servlet-initialization-param)
- [The Difference between getRequestURI and getPathInfo in HttpServletRequest](https://www.baeldung.com/http-servlet-request-requesturi-pathinfo)
-- Difference between request.getSession() and request.getSession(true)
+- [Difference between request.getSession() and request.getSession(true)](https://www.baeldung.com/java-request-getsession)
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/jmh/README.md b/jmh/README.md
index 41bf16d6bb..3cfe847a3c 100644
--- a/jmh/README.md
+++ b/jmh/README.md
@@ -6,3 +6,4 @@ This module contains articles about the Java Microbenchmark Harness (JMH).
- [Microbenchmarking with Java](https://www.baeldung.com/java-microbenchmark-harness)
- [A Guide to False Sharing and @Contended](https://www.baeldung.com/java-false-sharing-contended)
+- [Performance Comparison of boolean[] vs BitSet](https://www.baeldung.com/java-boolean-array-bitset-performance)
diff --git a/json-2/README.md b/json-2/README.md
index c2b6b36a11..64ca7e6449 100644
--- a/json-2/README.md
+++ b/json-2/README.md
@@ -3,5 +3,7 @@
This module contains articles about JSON.
### Relevant Articles:
+
- [Introduction to Jsoniter](https://www.baeldung.com/java-jsoniter)
- [Introduction to Moshi Json](https://www.baeldung.com/java-json-moshi)
+- [Hypermedia Serialization With JSON-LD](https://www.baeldung.com/json-linked-data)
diff --git a/jsoup/README.md b/jsoup/README.md
index 690afe3099..42b30d4d83 100644
--- a/jsoup/README.md
+++ b/jsoup/README.md
@@ -5,6 +5,7 @@ This module contains articles about jsoup.
### Relevant Articles:
- [Parsing HTML in Java with Jsoup](https://www.baeldung.com/java-with-jsoup)
- [How to add proxy support to Jsoup?](https://www.baeldung.com/java-jsoup-proxy)
+- [Preserving Line Breaks When Using Jsoup](https://www.baeldung.com/jsoup-line-breaks)
### Build the Project
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 @@
+ 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">
4.0.0
libraries-testing
libraries-testing
@@ -158,6 +158,13 @@
test
+
+ com.tngtech.archunit
+ archunit-junit5
+ ${archunit.version}
+ test
+
+
@@ -193,7 +200,7 @@
1.5.7.1
- 1.9.9
+ 1.9.9
1.9.0
1.9.0
1.9.27
@@ -210,6 +217,7 @@
1.8
1.8
3.8.1
+ 0.14.1
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
new file mode 100644
index 0000000000..5d90d0f288
--- /dev/null
+++ b/libraries-testing/src/main/java/com/baeldung/archunit/smurfs/persistence/SmurfsRepository.java
@@ -0,0 +1,38 @@
+package com.baeldung.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.baeldung.archunit.smurfs.persistence.domain.Smurf;
+
+import static java.util.stream.Collectors.toList;
+
+public class SmurfsRepository {
+
+ private static Map 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 List findAll() {
+ return Collections.unmodifiableList(smurfs.values().stream().collect(toList()));
+ }
+
+ public Optional findByName(String name) {
+ return Optional.of(smurfs.get(name));
+ }
+
+}
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
new file mode 100644
index 0000000000..255a024cdc
--- /dev/null
+++ b/libraries-testing/src/main/java/com/baeldung/archunit/smurfs/persistence/domain/Smurf.java
@@ -0,0 +1,39 @@
+package com.baeldung.archunit.smurfs.persistence.domain;
+
+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;
+ }
+
+ public String getName() {
+ return name;
+ }
+
+ public void setName(String name) {
+ this.name = name;
+ }
+
+ public boolean isComic() {
+ return comic;
+ }
+
+ public void setCommic(boolean comic) {
+ this.comic = comic;
+ }
+
+ public boolean isCartoon() {
+ return cartoon;
+ }
+
+ public void setCartoon(boolean cartoon) {
+ this.cartoon = cartoon;
+ }
+}
diff --git a/libraries-testing/src/main/java/com/baeldung/archunit/smurfs/presentation/SmurfsController.java b/libraries-testing/src/main/java/com/baeldung/archunit/smurfs/presentation/SmurfsController.java
new file mode 100644
index 0000000000..7e31980d89
--- /dev/null
+++ b/libraries-testing/src/main/java/com/baeldung/archunit/smurfs/presentation/SmurfsController.java
@@ -0,0 +1,27 @@
+package com.baeldung.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.baeldung.archunit.smurfs.service.SmurfsService;
+import com.baeldung.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 getSmurfs() {
+ return smurfs.findAll();
+ }
+}
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
new file mode 100644
index 0000000000..4034b33b39
--- /dev/null
+++ b/libraries-testing/src/main/java/com/baeldung/archunit/smurfs/service/SmurfsService.java
@@ -0,0 +1,35 @@
+
+package com.baeldung.archunit.smurfs.service;
+
+import java.util.List;
+import java.util.stream.Collectors;
+
+import org.springframework.stereotype.Component;
+
+import com.baeldung.archunit.smurfs.persistence.SmurfsRepository;
+import com.baeldung.archunit.smurfs.persistence.domain.Smurf;
+import com.baeldung.archunit.smurfs.service.dto.SmurfDTO;
+
+@Component
+public class SmurfsService {
+
+ private SmurfsRepository repository;
+
+ public SmurfsService(SmurfsRepository repository) {
+ this.repository = repository;
+ }
+
+ public List 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/baeldung/archunit/smurfs/service/dto/SmurfDTO.java b/libraries-testing/src/main/java/com/baeldung/archunit/smurfs/service/dto/SmurfDTO.java
new file mode 100644
index 0000000000..523c639c41
--- /dev/null
+++ b/libraries-testing/src/main/java/com/baeldung/archunit/smurfs/service/dto/SmurfDTO.java
@@ -0,0 +1,41 @@
+
+package com.baeldung.archunit.smurfs.service.dto;
+
+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;
+ }
+
+ public String getName() {
+ return name;
+ }
+
+ public void setName(String name) {
+ this.name = name;
+ }
+
+ public boolean isComic() {
+ return comic;
+ }
+
+ public void setCommic(boolean comic) {
+ this.comic = comic;
+ }
+
+ public boolean isCartoon() {
+ return cartoon;
+ }
+
+ 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..9724c2bcae
--- /dev/null
+++ b/libraries-testing/src/test/java/com/baeldung/archunit/smurfs/SmurfsArchUnitTest.java
@@ -0,0 +1,76 @@
+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;
+
+public class SmurfsArchUnitTest {
+
+ @Test
+ public void givenPresentationLayerClasses_thenWrongCheckFails() {
+ JavaClasses jc = new ClassFileImporter().importPackages("com.baeldung.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.baeldung.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.baeldung.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.baeldung.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);
+ }
+}
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 @@
+
+
+
+
+
diff --git a/maven-modules/optional-dependencies/README.md b/maven-modules/optional-dependencies/README.md
index 6b4d3e7647..c17f75c539 100644
--- a/maven-modules/optional-dependencies/README.md
+++ b/maven-modules/optional-dependencies/README.md
@@ -1,3 +1,3 @@
### Relevant Articles:
-- Optional Dependency in Maven
\ No newline at end of file
+- [Optional Dependency in Maven](https://www.baeldung.com/maven-optional-dependency)
diff --git a/patterns/solid/README.md b/patterns/solid/README.md
index 41e986f544..b7eeb59a6f 100644
--- a/patterns/solid/README.md
+++ b/patterns/solid/README.md
@@ -4,3 +4,4 @@
- [Single Responsibility Principle in Java](https://www.baeldung.com/java-single-responsibility-principle)
- [Open/Closed Principle in Java](https://www.baeldung.com/java-open-closed-principle)
- [Interface Segregation Principle in Java](https://www.baeldung.com/java-interface-segregation)
+- [Liskov Substitution Principle in Java](https://www.baeldung.com/java-liskov-substitution-principle)
diff --git a/performance-tests/README.md b/performance-tests/README.md
index 09ed26ae19..27c0363010 100644
--- a/performance-tests/README.md
+++ b/performance-tests/README.md
@@ -5,6 +5,7 @@ This module contains articles about performance testing.
### Relevant Articles:
- [Performance of Java Mapping Frameworks](https://www.baeldung.com/java-performance-mapping-frameworks)
+- [Performance Effects of Exceptions in Java](https://www.baeldung.com/java-exceptions-performance)
### Running
diff --git a/performance-tests/pom.xml b/performance-tests/pom.xml
index c790dbbb16..fb3f82df38 100644
--- a/performance-tests/pom.xml
+++ b/performance-tests/pom.xml
@@ -19,27 +19,14 @@
${orika.version}
- net.sf.dozer
- dozer
+ com.github.dozermapper
+ dozer-core
${dozer.version}
-
-
- io.craftsman
- dozer-jdk8-support
- ${dozer-jdk8-support.version}
-
+
org.mapstruct
- mapstruct-jdk8
- ${mapstruct-jdk8.version}
- true
-
-
-
- org.mapstruct
- mapstruct-processor
- ${mapstruct-jdk8.version}
- provided
+ mapstruct
+ ${mapstruct.version}
@@ -77,10 +64,15 @@
${javac.target}
+
+ org.openjdk.jmh
+ jmh-generator-annprocess
+ ${jmh.version}
+
org.mapstruct
mapstruct-processor
- ${mapstruct-processor.version}
+ ${mapstruct.version}
@@ -120,28 +112,16 @@
-
- org.apache.maven.plugins
- maven-jar-plugin
- ${maven-jar-plugin.version}
-
-
-
- com.baeldung.performancetests.MappingFrameworksPerformance
-
-
-
-
maven-clean-plugin
- 2.5
+ ${clean.plugin.version}
maven-deploy-plugin
- 2.8.1
+ ${deploy.plugin.version}
maven-install-plugin
@@ -179,19 +159,13 @@
- 1.21
- 1.5.2
- 5.5.1
- 1.0.2
- 1.2.0.Final
- 1.1.0
- 1.6.0.1
- 1.2.0.Final
- 1.21
- 1.21
- 3.7.0
- 3.2.0
-
+ 1.23
+ 1.5.4
+ 6.5.0
+ 1.3.1.Final
+ 2.3.8
+ 1.6.1.CR2
+
@@ -201,14 +175,16 @@
Name of the benchmark Uber-JAR to generate.
-->
benchmarks
- 3.1
- 2.2
- 2.5.1
- 2.4
- 2.9.1
- 2.6
- 3.3
- 2.2.1
+ 3.1.0
+ 3.0.0-M1
+ 3.8.1
+ 3.2.4
+ 3.0.0-M1
+ 3.2.0
+ 3.2.0
+ 3.1.0
+ 3.9.1
+ 3.2.1
2.17
diff --git a/performance-tests/src/main/java/com/baeldung/performancetests/dozer/DozerConverter.java b/performance-tests/src/main/java/com/baeldung/performancetests/dozer/DozerConverter.java
index 710145ec58..e33c407dfa 100644
--- a/performance-tests/src/main/java/com/baeldung/performancetests/dozer/DozerConverter.java
+++ b/performance-tests/src/main/java/com/baeldung/performancetests/dozer/DozerConverter.java
@@ -2,28 +2,28 @@ package com.baeldung.performancetests.dozer;
import com.baeldung.performancetests.Converter;
import com.baeldung.performancetests.model.destination.DestinationCode;
+import com.baeldung.performancetests.model.destination.Order;
import com.baeldung.performancetests.model.source.SourceCode;
import com.baeldung.performancetests.model.source.SourceOrder;
-import com.baeldung.performancetests.model.destination.Order;
-import org.dozer.DozerBeanMapper;
-import org.dozer.Mapper;
+import com.github.dozermapper.core.DozerBeanMapperBuilder;
+import com.github.dozermapper.core.Mapper;
- public class DozerConverter implements Converter {
- private final Mapper mapper;
+public class DozerConverter implements Converter {
+ private final Mapper mapper;
- public DozerConverter() {
- DozerBeanMapper mapper = new DozerBeanMapper();
- mapper.addMapping(DozerConverter.class.getResourceAsStream("/dozer-mapping.xml"));
- this.mapper = mapper;
- }
-
- @Override
- public Order convert(SourceOrder sourceOrder) {
- return mapper.map(sourceOrder,Order.class);
- }
-
- @Override
- public DestinationCode convert(SourceCode sourceCode) {
- return mapper.map(sourceCode, DestinationCode.class);
- }
+ public DozerConverter() {
+ this.mapper = DozerBeanMapperBuilder.create()
+ .withMappingFiles("dozer-mapping.xml")
+ .build();
}
+
+ @Override
+ public Order convert(SourceOrder sourceOrder) {
+ return mapper.map(sourceOrder, Order.class);
+ }
+
+ @Override
+ public DestinationCode convert(SourceCode sourceCode) {
+ return mapper.map(sourceCode, DestinationCode.class);
+ }
+}
diff --git a/performance-tests/src/main/resources/dozer-mapping.xml b/performance-tests/src/main/resources/dozer-mapping.xml
index 7fd7e78e9f..3c4530561a 100644
--- a/performance-tests/src/main/resources/dozer-mapping.xml
+++ b/performance-tests/src/main/resources/dozer-mapping.xml
@@ -1,8 +1,6 @@
-
+
true
diff --git a/performance-tests/src/test/resources/dozer-mapping.xml b/performance-tests/src/test/resources/dozer-mapping.xml
index 7484812431..0476f45cdf 100644
--- a/performance-tests/src/test/resources/dozer-mapping.xml
+++ b/performance-tests/src/test/resources/dozer-mapping.xml
@@ -1,8 +1,6 @@
-
+
true
diff --git a/persistence-modules/core-java-persistence/README.md b/persistence-modules/core-java-persistence/README.md
index a760489480..b7eecdde0d 100644
--- a/persistence-modules/core-java-persistence/README.md
+++ b/persistence-modules/core-java-persistence/README.md
@@ -13,3 +13,4 @@
- [Returning the Generated Keys in JDBC](https://www.baeldung.com/jdbc-returning-generated-keys)
- [Loading JDBC Drivers](https://www.baeldung.com/java-jdbc-loading-drivers)
- [Difference Between Statement and PreparedStatement](https://www.baeldung.com/java-statement-preparedstatement)
+- [Extracting Database Metadata Using JDBC](https://www.baeldung.com/jdbc-database-metadata)
diff --git a/persistence-modules/flyway-repair/README.MD b/persistence-modules/flyway-repair/README.MD
index 7d843af9ea..939b8498da 100644
--- a/persistence-modules/flyway-repair/README.MD
+++ b/persistence-modules/flyway-repair/README.MD
@@ -1 +1,3 @@
### Relevant Articles:
+
+- [Flyway Repair With Spring Boot](https://www.baeldung.com/spring-boot-flyway-repair)
diff --git a/persistence-modules/hibernate5/README.md b/persistence-modules/hibernate5/README.md
index 8793e2e9c7..8fa6843b17 100644
--- a/persistence-modules/hibernate5/README.md
+++ b/persistence-modules/hibernate5/README.md
@@ -13,3 +13,4 @@ This module contains articles about Hibernate 5. Let's not add more articles her
- [Guide to the Hibernate EntityManager](https://www.baeldung.com/hibernate-entitymanager)
- [Using c3p0 with Hibernate](https://www.baeldung.com/hibernate-c3p0)
- [Persist a JSON Object Using Hibernate](https://www.baeldung.com/hibernate-persist-json-object)
+- [What Is the Hi/Lo Algorithm?](https://www.baeldung.com/hi-lo-algorithm-hibernate)
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
diff --git a/persistence-modules/java-jpa-3/README.md b/persistence-modules/java-jpa-3/README.md
index 01fdf05b53..dce9c4e711 100644
--- a/persistence-modules/java-jpa-3/README.md
+++ b/persistence-modules/java-jpa-3/README.md
@@ -1,3 +1,7 @@
## JPA in Java
This module contains articles about the Java Persistence API (JPA) in Java.
+
+### Relevant Articles:
+
+- [JPA Entity Equality](https://www.baeldung.com/jpa-entity-equality)
diff --git a/persistence-modules/spring-data-cosmosdb/README.md b/persistence-modules/spring-data-cosmosdb/README.md
new file mode 100644
index 0000000000..c4a102141f
--- /dev/null
+++ b/persistence-modules/spring-data-cosmosdb/README.md
@@ -0,0 +1,3 @@
+### Relevant Articles:
+
+- [Introduction to Spring Data Azure Cosmos DB](https://www.baeldung.com/spring-data-cosmos-db)
diff --git a/persistence-modules/spring-data-jdbc/README.md b/persistence-modules/spring-data-jdbc/README.md
new file mode 100644
index 0000000000..0e54d0ba88
--- /dev/null
+++ b/persistence-modules/spring-data-jdbc/README.md
@@ -0,0 +1,3 @@
+### Relevant Articles:
+
+- [Introduction to Spring Data JDBC](https://www.baeldung.com/spring-data-jdbc-intro)
diff --git a/persistence-modules/spring-data-jpa-query-2/README.md b/persistence-modules/spring-data-jpa-query-2/README.md
new file mode 100644
index 0000000000..a4d657d4c6
--- /dev/null
+++ b/persistence-modules/spring-data-jpa-query-2/README.md
@@ -0,0 +1,16 @@
+## Spring Data JPA - Query
+
+This module contains articles about querying data using Spring Data JPA
+
+### Relevant Articles:
+- [Use Criteria Queries in a Spring Data Application](https://www.baeldung.com/spring-data-criteria-queries)
+- More articles: [[<-- prev]](../spring-data-jpa-query)
+
+### 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-data-jpa-query-2/pom.xml b/persistence-modules/spring-data-jpa-query-2/pom.xml
new file mode 100644
index 0000000000..b9e5120543
--- /dev/null
+++ b/persistence-modules/spring-data-jpa-query-2/pom.xml
@@ -0,0 +1,33 @@
+
+
+ 4.0.0
+ spring-data-jpa-query
+ spring-data-jpa-query-2
+
+
+ com.baeldung
+ parent-boot-2
+ 0.0.1-SNAPSHOT
+ ../../parent-boot-2
+
+
+
+
+ org.springframework.boot
+ spring-boot-starter-data-jpa
+
+
+
+ com.h2database
+ h2
+
+
+
+ com.fasterxml.jackson.core
+ jackson-databind
+
+
+
+
\ No newline at end of file
diff --git a/persistence-modules/spring-jpa/src/main/java/com/baeldung/persistence/dao/BookRepository.java b/persistence-modules/spring-data-jpa-query-2/src/main/java/com/baeldung/persistence/dao/BookRepository.java
similarity index 100%
rename from persistence-modules/spring-jpa/src/main/java/com/baeldung/persistence/dao/BookRepository.java
rename to persistence-modules/spring-data-jpa-query-2/src/main/java/com/baeldung/persistence/dao/BookRepository.java
diff --git a/persistence-modules/spring-jpa/src/main/java/com/baeldung/persistence/dao/BookRepositoryCustom.java b/persistence-modules/spring-data-jpa-query-2/src/main/java/com/baeldung/persistence/dao/BookRepositoryCustom.java
similarity index 100%
rename from persistence-modules/spring-jpa/src/main/java/com/baeldung/persistence/dao/BookRepositoryCustom.java
rename to persistence-modules/spring-data-jpa-query-2/src/main/java/com/baeldung/persistence/dao/BookRepositoryCustom.java
index 1b46d0ecc3..eda34542df 100644
--- a/persistence-modules/spring-jpa/src/main/java/com/baeldung/persistence/dao/BookRepositoryCustom.java
+++ b/persistence-modules/spring-data-jpa-query-2/src/main/java/com/baeldung/persistence/dao/BookRepositoryCustom.java
@@ -1,9 +1,9 @@
package com.baeldung.persistence.dao;
-import java.util.List;
-
import com.baeldung.persistence.model.Book;
+import java.util.List;
+
public interface BookRepositoryCustom {
List findBooksByAuthorNameAndTitle(String authorName, String title);
diff --git a/persistence-modules/spring-jpa/src/main/java/com/baeldung/persistence/dao/BookRepositoryImpl.java b/persistence-modules/spring-data-jpa-query-2/src/main/java/com/baeldung/persistence/dao/BookRepositoryImpl.java
similarity index 99%
rename from persistence-modules/spring-jpa/src/main/java/com/baeldung/persistence/dao/BookRepositoryImpl.java
rename to persistence-modules/spring-data-jpa-query-2/src/main/java/com/baeldung/persistence/dao/BookRepositoryImpl.java
index 241a4c05aa..7f5bedd018 100644
--- a/persistence-modules/spring-jpa/src/main/java/com/baeldung/persistence/dao/BookRepositoryImpl.java
+++ b/persistence-modules/spring-data-jpa-query-2/src/main/java/com/baeldung/persistence/dao/BookRepositoryImpl.java
@@ -1,7 +1,7 @@
package com.baeldung.persistence.dao;
-import java.util.ArrayList;
-import java.util.List;
+import com.baeldung.persistence.model.Book;
+import org.springframework.stereotype.Repository;
import javax.persistence.EntityManager;
import javax.persistence.TypedQuery;
@@ -9,9 +9,8 @@ import javax.persistence.criteria.CriteriaBuilder;
import javax.persistence.criteria.CriteriaQuery;
import javax.persistence.criteria.Predicate;
import javax.persistence.criteria.Root;
-
-import com.baeldung.persistence.model.Book;
-import org.springframework.stereotype.Repository;
+import java.util.ArrayList;
+import java.util.List;
@Repository
public class BookRepositoryImpl implements BookRepositoryCustom {
diff --git a/persistence-modules/spring-jpa/src/main/java/com/baeldung/persistence/dao/BookService.java b/persistence-modules/spring-data-jpa-query-2/src/main/java/com/baeldung/persistence/dao/BookService.java
similarity index 90%
rename from persistence-modules/spring-jpa/src/main/java/com/baeldung/persistence/dao/BookService.java
rename to persistence-modules/spring-data-jpa-query-2/src/main/java/com/baeldung/persistence/dao/BookService.java
index f02f9daa11..4165cd8eb9 100644
--- a/persistence-modules/spring-jpa/src/main/java/com/baeldung/persistence/dao/BookService.java
+++ b/persistence-modules/spring-data-jpa-query-2/src/main/java/com/baeldung/persistence/dao/BookService.java
@@ -1,14 +1,14 @@
package com.baeldung.persistence.dao;
-import static com.baeldung.persistence.dao.BookSpecifications.hasAuthor;
-import static com.baeldung.persistence.dao.BookSpecifications.titleContains;
-import static org.springframework.data.jpa.domain.Specifications.where;
-
-import java.util.List;
-
import com.baeldung.persistence.model.Book;
import org.springframework.stereotype.Service;
+import java.util.List;
+
+import static com.baeldung.persistence.dao.BookSpecifications.hasAuthor;
+import static com.baeldung.persistence.dao.BookSpecifications.titleContains;
+import static org.springframework.data.jpa.domain.Specification.where;
+
@Service
public class BookService {
diff --git a/persistence-modules/spring-jpa/src/main/java/com/baeldung/persistence/dao/BookSpecifications.java b/persistence-modules/spring-data-jpa-query-2/src/main/java/com/baeldung/persistence/dao/BookSpecifications.java
similarity index 100%
rename from persistence-modules/spring-jpa/src/main/java/com/baeldung/persistence/dao/BookSpecifications.java
rename to persistence-modules/spring-data-jpa-query-2/src/main/java/com/baeldung/persistence/dao/BookSpecifications.java
diff --git a/persistence-modules/spring-jpa/src/main/java/com/baeldung/persistence/model/Book.java b/persistence-modules/spring-data-jpa-query-2/src/main/java/com/baeldung/persistence/model/Book.java
similarity index 100%
rename from persistence-modules/spring-jpa/src/main/java/com/baeldung/persistence/model/Book.java
rename to persistence-modules/spring-data-jpa-query-2/src/main/java/com/baeldung/persistence/model/Book.java
diff --git a/persistence-modules/spring-data-jpa-query/README.md b/persistence-modules/spring-data-jpa-query/README.md
index bfff3c0ef3..34e397394b 100644
--- a/persistence-modules/spring-data-jpa-query/README.md
+++ b/persistence-modules/spring-data-jpa-query/README.md
@@ -11,6 +11,7 @@ This module contains articles about querying data using Spring Data JPA
- [Spring Data JPA Query by Example](https://www.baeldung.com/spring-data-query-by-example)
- [JPA Join Types](https://www.baeldung.com/jpa-join-types)
- [Spring Data JPA and Named Entity Graphs](https://www.baeldung.com/spring-data-jpa-named-entity-graphs)
+- More articles: [[more -->]](../spring-data-jpa-query-2)
### Eclipse Config
After importing the project into Eclipse, you may see the following error:
diff --git a/persistence-modules/spring-jpa/README.md b/persistence-modules/spring-jpa/README.md
index d260913635..f60609e0de 100644
--- a/persistence-modules/spring-jpa/README.md
+++ b/persistence-modules/spring-jpa/README.md
@@ -7,7 +7,6 @@
- [Self-Contained Testing Using an In-Memory Database](https://www.baeldung.com/spring-jpa-test-in-memory-database)
- [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)
- More articles: [[next -->]](/spring-jpa-2)
### Eclipse Config
diff --git a/rule-engines/jess/README.md b/rule-engines/jess/README.md
new file mode 100644
index 0000000000..a5f02d2f3a
--- /dev/null
+++ b/rule-engines/jess/README.md
@@ -0,0 +1,3 @@
+### Relevant Articles:
+
+- [Jess Rule Engine and JSR 94](https://www.baeldung.com/java-rule-engine-jess-jsr-94)
diff --git a/spring-5-security/README.md b/spring-5-security/README.md
index 764d726ff8..6847d4bf5c 100644
--- a/spring-5-security/README.md
+++ b/spring-5-security/README.md
@@ -11,3 +11,4 @@ This module contains articles about Spring Security 5
- [Guide to the AuthenticationManagerResolver in Spring Security](https://www.baeldung.com/spring-security-authenticationmanagerresolver)
- [Disable Security for a Profile in Spring Boot](https://www.baeldung.com/spring-security-disable-profile)
- [Manual Logout With Spring Security](https://www.baeldung.com/spring-security-manual-logout)
+- [How to Disable Spring Security Logout Redirects](https://www.baeldung.com/spring-security-disable-logout-redirects)
diff --git a/spring-all/README.md b/spring-all/README.md
deleted file mode 100644
index 9ad78aa1ee..0000000000
--- a/spring-all/README.md
+++ /dev/null
@@ -1,3 +0,0 @@
-## Spring All
-
-This module contains articles about Spring
diff --git a/spring-all/src/main/java/org/baeldung/scopes/ScopesConfig.java b/spring-all/src/main/java/org/baeldung/scopes/ScopesConfig.java
deleted file mode 100644
index 11d3806b6e..0000000000
--- a/spring-all/src/main/java/org/baeldung/scopes/ScopesConfig.java
+++ /dev/null
@@ -1,61 +0,0 @@
-package org.baeldung.scopes;
-
-import org.springframework.context.annotation.Bean;
-import org.springframework.context.annotation.ComponentScan;
-import org.springframework.context.annotation.Configuration;
-import org.springframework.context.annotation.Scope;
-import org.springframework.context.annotation.ScopedProxyMode;
-import org.springframework.web.context.WebApplicationContext;
-import org.springframework.web.servlet.config.annotation.EnableWebMvc;
-import org.springframework.web.servlet.view.JstlView;
-import org.springframework.web.servlet.view.UrlBasedViewResolver;
-
-@Configuration
-@ComponentScan("org.baeldung.scopes")
-@EnableWebMvc
-public class ScopesConfig {
- @Bean
- public UrlBasedViewResolver setupViewResolver() {
- final UrlBasedViewResolver resolver = new UrlBasedViewResolver();
- resolver.setPrefix("/WEB-INF/view/");
- resolver.setSuffix(".jsp");
- resolver.setViewClass(JstlView.class);
- return resolver;
- }
-
- @Bean
- @Scope(value = WebApplicationContext.SCOPE_REQUEST, proxyMode = ScopedProxyMode.TARGET_CLASS)
- public HelloMessageGenerator requestScopedBean() {
- return new HelloMessageGenerator();
- }
-
- @Bean
- @Scope(value = WebApplicationContext.SCOPE_SESSION, proxyMode = ScopedProxyMode.TARGET_CLASS)
- public HelloMessageGenerator sessionScopedBean() {
- return new HelloMessageGenerator();
- }
-
- @Bean
- @Scope(value = WebApplicationContext.SCOPE_APPLICATION, proxyMode = ScopedProxyMode.TARGET_CLASS)
- public HelloMessageGenerator applicationScopedBean() {
- return new HelloMessageGenerator();
- }
-
- @Bean
- @Scope(scopeName = "websocket", proxyMode = ScopedProxyMode.TARGET_CLASS)
- public HelloMessageGenerator websocketScopedBean() {
- return new HelloMessageGenerator();
- }
-
- @Bean
- @Scope("prototype")
- public Person personPrototype() {
- return new Person();
- }
-
- @Bean
- @Scope("singleton")
- public Person personSingleton() {
- return new Person();
- }
-}
diff --git a/spring-boot-modules/pom.xml b/spring-boot-modules/pom.xml
index 3a2f14f5df..b4cabaaedf 100644
--- a/spring-boot-modules/pom.xml
+++ b/spring-boot-modules/pom.xml
@@ -56,6 +56,7 @@
spring-boot-performance
spring-boot-properties
spring-boot-properties-2
+ spring-boot-properties-3
spring-boot-property-exp
spring-boot-runtime
spring-boot-security
diff --git a/spring-boot-modules/spring-boot-actuator/pom.xml b/spring-boot-modules/spring-boot-actuator/pom.xml
index 0a7ad5725b..701949519e 100644
--- a/spring-boot-modules/spring-boot-actuator/pom.xml
+++ b/spring-boot-modules/spring-boot-actuator/pom.xml
@@ -43,6 +43,9 @@
org.springframework.boot
spring-boot-maven-plugin
+
+ com.baeldung.probes.ProbesApplication
+
diff --git a/spring-boot-modules/spring-boot-actuator/src/main/java/com/baeldung/health/CustomStatusCodeMapper.java b/spring-boot-modules/spring-boot-actuator/src/main/java/com/baeldung/health/CustomStatusCodeMapper.java
new file mode 100644
index 0000000000..483c21dfc1
--- /dev/null
+++ b/spring-boot-modules/spring-boot-actuator/src/main/java/com/baeldung/health/CustomStatusCodeMapper.java
@@ -0,0 +1,30 @@
+package com.baeldung.health;
+
+import org.springframework.boot.actuate.health.HttpCodeStatusMapper;
+import org.springframework.boot.actuate.health.Status;
+import org.springframework.stereotype.Component;
+
+@Component
+public class CustomStatusCodeMapper implements HttpCodeStatusMapper {
+
+ @Override
+ public int getStatusCode(Status status) {
+ if (status == Status.DOWN) {
+ return 500;
+ }
+
+ if (status == Status.OUT_OF_SERVICE) {
+ return 503;
+ }
+
+ if (status == Status.UNKNOWN) {
+ return 500;
+ }
+
+ if (status.getCode().equals("WARNING")) {
+ return 500;
+ }
+
+ return 200;
+ }
+}
diff --git a/spring-boot-modules/spring-boot-actuator/src/main/java/com/baeldung/health/HealthApplication.java b/spring-boot-modules/spring-boot-actuator/src/main/java/com/baeldung/health/HealthApplication.java
new file mode 100644
index 0000000000..af1f35b29f
--- /dev/null
+++ b/spring-boot-modules/spring-boot-actuator/src/main/java/com/baeldung/health/HealthApplication.java
@@ -0,0 +1,12 @@
+package com.baeldung.health;
+
+import org.springframework.boot.SpringApplication;
+import org.springframework.boot.autoconfigure.SpringBootApplication;
+
+@SpringBootApplication
+public class HealthApplication {
+
+ public static void main(String[] args) {
+ SpringApplication.run(HealthApplication.class, args);
+ }
+}
diff --git a/spring-boot-modules/spring-boot-actuator/src/main/java/com/baeldung/health/RandomHealthIndicator.java b/spring-boot-modules/spring-boot-actuator/src/main/java/com/baeldung/health/RandomHealthIndicator.java
new file mode 100644
index 0000000000..d8b27c7865
--- /dev/null
+++ b/spring-boot-modules/spring-boot-actuator/src/main/java/com/baeldung/health/RandomHealthIndicator.java
@@ -0,0 +1,30 @@
+package com.baeldung.health;
+
+import org.springframework.boot.actuate.autoconfigure.health.ConditionalOnEnabledHealthIndicator;
+import org.springframework.boot.actuate.health.Health;
+import org.springframework.boot.actuate.health.HealthIndicator;
+import org.springframework.stereotype.Component;
+
+import java.util.HashMap;
+import java.util.Map;
+import java.util.concurrent.ThreadLocalRandom;
+
+@Component
+@ConditionalOnEnabledHealthIndicator("random")
+public class RandomHealthIndicator implements HealthIndicator {
+
+ @Override
+ public Health health() {
+ double chance = ThreadLocalRandom.current().nextDouble();
+ Health.Builder status = Health.up();
+ if (chance > 0.9) {
+ status = Health.down(new RuntimeException("Bad Luck"));
+ }
+
+ Map details = new HashMap<>();
+ details.put("chance", chance);
+ details.put("strategy", "thread-local");
+
+ return status.withDetails(details).build();
+ }
+}
diff --git a/spring-boot-modules/spring-boot-actuator/src/main/java/com/baeldung/health/WarningHealthIndicator.java b/spring-boot-modules/spring-boot-actuator/src/main/java/com/baeldung/health/WarningHealthIndicator.java
new file mode 100644
index 0000000000..d978d90339
--- /dev/null
+++ b/spring-boot-modules/spring-boot-actuator/src/main/java/com/baeldung/health/WarningHealthIndicator.java
@@ -0,0 +1,14 @@
+package com.baeldung.health;
+
+import org.springframework.boot.actuate.health.Health;
+import org.springframework.boot.actuate.health.HealthIndicator;
+import org.springframework.stereotype.Component;
+
+@Component
+public class WarningHealthIndicator implements HealthIndicator {
+
+ @Override
+ public Health health() {
+ return Health.status("WARNING").build();
+ }
+}
diff --git a/spring-boot-modules/spring-boot-actuator/src/main/resources/application.properties b/spring-boot-modules/spring-boot-actuator/src/main/resources/application.properties
index 8c706a9b1d..27dba985b8 100644
--- a/spring-boot-modules/spring-boot-actuator/src/main/resources/application.properties
+++ b/spring-boot-modules/spring-boot-actuator/src/main/resources/application.properties
@@ -1 +1,5 @@
-management.health.probes.enabled=true
\ No newline at end of file
+management.health.probes.enabled=true
+management.endpoint.health.show-details=always
+management.endpoint.health.status.http-mapping.down=500
+management.endpoint.health.status.http-mapping.out_of_service=503
+management.endpoint.health.status.http-mapping.warning=500
\ No newline at end of file
diff --git a/spring-boot-modules/spring-boot-actuator/src/test/java/com/baeldung/health/DisabledRandomHealthIndicatorIntegrationTest.java b/spring-boot-modules/spring-boot-actuator/src/test/java/com/baeldung/health/DisabledRandomHealthIndicatorIntegrationTest.java
new file mode 100644
index 0000000000..b69e7fd1f8
--- /dev/null
+++ b/spring-boot-modules/spring-boot-actuator/src/test/java/com/baeldung/health/DisabledRandomHealthIndicatorIntegrationTest.java
@@ -0,0 +1,26 @@
+package com.baeldung.health;
+
+import org.junit.jupiter.api.Test;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.boot.test.autoconfigure.web.servlet.AutoConfigureMockMvc;
+import org.springframework.boot.test.context.SpringBootTest;
+import org.springframework.test.context.TestPropertySource;
+import org.springframework.test.web.servlet.MockMvc;
+
+import static org.springframework.test.web.servlet.request.MockMvcRequestBuilders.get;
+import static org.springframework.test.web.servlet.result.MockMvcResultMatchers.status;
+
+@SpringBootTest
+@AutoConfigureMockMvc
+@TestPropertySource(properties = "management.health.random.enabled=false")
+class DisabledRandomHealthIndicatorIntegrationTest {
+
+ @Autowired
+ private MockMvc mockMvc;
+
+ @Test
+ void givenADisabledIndicator_whenSendingRequest_thenReturns404() throws Exception {
+ mockMvc.perform(get("/actuator/health/random"))
+ .andExpect(status().isNotFound());
+ }
+}
diff --git a/spring-boot-modules/spring-boot-actuator/src/test/java/com/baeldung/health/RandomHealthIndicatorIntegrationTest.java b/spring-boot-modules/spring-boot-actuator/src/test/java/com/baeldung/health/RandomHealthIndicatorIntegrationTest.java
new file mode 100644
index 0000000000..dba38d4da3
--- /dev/null
+++ b/spring-boot-modules/spring-boot-actuator/src/test/java/com/baeldung/health/RandomHealthIndicatorIntegrationTest.java
@@ -0,0 +1,26 @@
+package com.baeldung.health;
+
+import org.junit.jupiter.api.Test;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.boot.test.autoconfigure.web.servlet.AutoConfigureMockMvc;
+import org.springframework.boot.test.context.SpringBootTest;
+import org.springframework.test.web.servlet.MockMvc;
+
+import static org.springframework.test.web.servlet.request.MockMvcRequestBuilders.get;
+import static org.springframework.test.web.servlet.result.MockMvcResultMatchers.jsonPath;
+
+@SpringBootTest
+@AutoConfigureMockMvc
+class RandomHealthIndicatorIntegrationTest {
+
+ @Autowired
+ private MockMvc mockMvc;
+
+ @Test
+ void givenRandomIndicator_whenCallingTheAPI_thenReturnsExpectedDetails() throws Exception {
+ mockMvc.perform(get("/actuator/health/random"))
+ .andExpect(jsonPath("$.status").exists())
+ .andExpect(jsonPath("$.details.strategy").value("thread-local"))
+ .andExpect(jsonPath("$.details.chance").exists());
+ }
+}
\ No newline at end of file
diff --git a/spring-boot-modules/spring-boot-actuator/src/test/java/com/baeldung/health/WarningHealthIndicatorIntegrationTest.java b/spring-boot-modules/spring-boot-actuator/src/test/java/com/baeldung/health/WarningHealthIndicatorIntegrationTest.java
new file mode 100644
index 0000000000..60d11a00c7
--- /dev/null
+++ b/spring-boot-modules/spring-boot-actuator/src/test/java/com/baeldung/health/WarningHealthIndicatorIntegrationTest.java
@@ -0,0 +1,26 @@
+package com.baeldung.health;
+
+import org.junit.jupiter.api.Test;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.boot.test.autoconfigure.web.servlet.AutoConfigureMockMvc;
+import org.springframework.boot.test.context.SpringBootTest;
+import org.springframework.test.web.servlet.MockMvc;
+
+import static org.springframework.test.web.servlet.request.MockMvcRequestBuilders.get;
+import static org.springframework.test.web.servlet.result.MockMvcResultMatchers.jsonPath;
+import static org.springframework.test.web.servlet.result.MockMvcResultMatchers.status;
+
+@SpringBootTest
+@AutoConfigureMockMvc
+class WarningHealthIndicatorIntegrationTest {
+
+ @Autowired
+ private MockMvc mockMvc;
+
+ @Test
+ void givenCustomMapping_whenCallingTheAPI_thenTheStatusCodeIsAsExpected() throws Exception {
+ mockMvc.perform(get("/actuator/health/warning"))
+ .andExpect(jsonPath("$.status").value("WARNING"))
+ .andExpect(status().isInternalServerError());
+ }
+}
\ No newline at end of file
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() {
diff --git a/spring-boot-modules/spring-boot-properties-3/README.md b/spring-boot-modules/spring-boot-properties-3/README.md
new file mode 100644
index 0000000000..d89f825c86
--- /dev/null
+++ b/spring-boot-modules/spring-boot-properties-3/README.md
@@ -0,0 +1,9 @@
+
+## Spring Boot Properties
+
+
+
+### Relevant Articles:
+
+- [How to Define a Map in YAML for a POJO?](https://www.baeldung.com/yaml-map-pojo)
+
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..44e2ef52ac
--- /dev/null
+++ b/spring-boot-modules/spring-boot-properties-3/pom.xml
@@ -0,0 +1,51 @@
+
+
+ 4.0.0
+
+ com.baeldung.spring-boot-modules
+ spring-boot-modules
+ 1.0.0-SNAPSHOT
+ ../
+
+
+ spring-boot-properties-3
+ 0.0.1-SNAPSHOT
+ spring-boot-properties-3
+ Spring Boot Properties Module
+
+
+ 1.8
+
+
+
+ org.springframework.boot
+ spring-boot-starter
+
+
+ org.springframework.boot
+ spring-boot-starter-test
+ test
+
+
+ org.junit.vintage
+ junit-vintage-engine
+
+
+
+
+ org.springframework.boot
+ spring-boot-starter-web
+ RELEASE
+
+
+
+
+
+
+ org.springframework.boot
+ spring-boot-maven-plugin
+
+
+
+
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 simpleMapping;
+
+ private final Map> complexMapping;
+
+
+ public TshirtSizeConfig(Map simpleMapping, Map> complexMapping) {
+ this.simpleMapping = simpleMapping;
+ this.complexMapping = complexMapping;
+ }
+
+ public Map getSimpleMapping() {
+ return simpleMapping;
+ }
+
+ public Map> 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/java/com/baeldung/propertiesvsyaml/ConfigProperties.java b/spring-boot-modules/spring-boot-properties-3/src/main/java/com/baeldung/propertiesvsyaml/ConfigProperties.java
new file mode 100644
index 0000000000..3a7ed76276
--- /dev/null
+++ b/spring-boot-modules/spring-boot-properties-3/src/main/java/com/baeldung/propertiesvsyaml/ConfigProperties.java
@@ -0,0 +1,27 @@
+package com.baeldung.propertiesvsyaml;
+
+import org.springframework.boot.context.properties.ConfigurationProperties;
+
+
+@ConfigurationProperties(prefix = "app")
+public class ConfigProperties {
+
+ String name;
+ String description;
+
+ public String getName() {
+ return name;
+ }
+
+ public void setName(String name) {
+ this.name = name;
+ }
+
+ public String getDescription() {
+ return description;
+ }
+
+ public void setDescription(String description) {
+ this.description = description;
+ }
+}
\ No newline at end of file
diff --git a/spring-boot-modules/spring-boot-properties-3/src/main/java/com/baeldung/propertiesvsyaml/EnvironmentProperties.java b/spring-boot-modules/spring-boot-properties-3/src/main/java/com/baeldung/propertiesvsyaml/EnvironmentProperties.java
new file mode 100644
index 0000000000..b5586956cc
--- /dev/null
+++ b/spring-boot-modules/spring-boot-properties-3/src/main/java/com/baeldung/propertiesvsyaml/EnvironmentProperties.java
@@ -0,0 +1,16 @@
+package com.baeldung.propertiesvsyaml;
+
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.core.env.Environment;
+import org.springframework.stereotype.Component;
+
+@Component
+public class EnvironmentProperties {
+
+ @Autowired
+ private Environment env;
+
+ public String getSomeKey() {
+ return env.getProperty("key.something");
+ }
+}
diff --git a/spring-boot-modules/spring-boot-properties-3/src/main/java/com/baeldung/propertiesvsyaml/ValueProperties.java b/spring-boot-modules/spring-boot-properties-3/src/main/java/com/baeldung/propertiesvsyaml/ValueProperties.java
new file mode 100644
index 0000000000..fb9ef9b1cf
--- /dev/null
+++ b/spring-boot-modules/spring-boot-properties-3/src/main/java/com/baeldung/propertiesvsyaml/ValueProperties.java
@@ -0,0 +1,13 @@
+package com.baeldung.propertiesvsyaml;
+
+import org.springframework.beans.factory.annotation.Value;
+
+public class ValueProperties {
+
+ @Value("${key.something}")
+ private String injectedProperty;
+
+ public String getAppName() {
+ return injectedProperty;
+ }
+}
diff --git a/spring-boot-modules/spring-boot-properties-3/src/main/resources/application.properties b/spring-boot-modules/spring-boot-properties-3/src/main/resources/application.properties
new file mode 100644
index 0000000000..eace1f0e46
--- /dev/null
+++ b/spring-boot-modules/spring-boot-properties-3/src/main/resources/application.properties
@@ -0,0 +1,11 @@
+application.servers[0].ip=127.0.0.1
+application.servers[0].path=/path1
+application.servers[1].ip=127.0.0.2
+application.servers[1].path=/path2
+application.servers[2].ip=127.0.0.3
+application.servers[2].path=/path3
+spring.datasource.url=jdbc:h2:dev
+spring.datasource.username=SA
+spring.datasource.password=password
+app.name=MyApp
+app.description=${app.name} is a Spring Boot application
\ No newline at end of file
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..00baeade9c
--- /dev/null
+++ b/spring-boot-modules/spring-boot-properties-3/src/main/resources/application.yml
@@ -0,0 +1,52 @@
+logging:
+ file:
+ name: myapplication.log
+spring:
+ datasource:
+ password: 'password'
+ url: jdbc:h2:dev
+ username: SA
+---
+spring:
+ datasource:
+ password: 'password'
+ url: jdbc:mysql://localhost:3306/db_production
+ username: user
+application:
+ servers:
+ - ip: '127.0.0.1'
+ path: '/path1'
+ - ip: '127.0.0.2'
+ path: '/path2'
+ - ip: '127.0.0.3'
+ path: '/path3'
+ 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
diff --git a/spring-boot-modules/spring-boot-xml/README.md b/spring-boot-modules/spring-boot-xml/README.md
new file mode 100644
index 0000000000..7a9a0bdc09
--- /dev/null
+++ b/spring-boot-modules/spring-boot-xml/README.md
@@ -0,0 +1,3 @@
+### Relevant Articles:
+
+- [XML Defined Beans in Spring Boot](https://www.baeldung.com/spring-boot-xml-beans)
diff --git a/spring-cloud/spring-cloud-config/pom.xml b/spring-cloud/spring-cloud-config/pom.xml
index 5097a63092..8411a65500 100644
--- a/spring-cloud/spring-cloud-config/pom.xml
+++ b/spring-cloud/spring-cloud-config/pom.xml
@@ -33,8 +33,7 @@
- Hoxton.RELEASE
- 2.2.2.RELEASE
+ Hoxton.SR4
diff --git a/spring-cloud/spring-cloud-consul/pom.xml b/spring-cloud/spring-cloud-consul/pom.xml
index f7f5f84c56..4d4ac0aa01 100644
--- a/spring-cloud/spring-cloud-consul/pom.xml
+++ b/spring-cloud/spring-cloud-consul/pom.xml
@@ -12,6 +12,13 @@
spring-cloud
1.0.0-SNAPSHOT
+
+
+
+ jitpack.io
+ https://jitpack.io
+
+
@@ -25,18 +32,32 @@
spring-cloud-starter-consul-config
${spring-cloud-starter-consul.version}
-
+
+ org.springframework.boot
+ spring-boot-starter-web
+
org.springframework.boot
spring-boot-starter-test
- ${spring-boot-starter-test.version}
test
+
+ com.github.kinguinltdhk
+ leadership-consul
+ ${kinguinltdhk.version}
+
+
+ com.ecwid.consul
+ consul-api
+
+
+
- 1.3.0.RELEASE
- 1.5.10.RELEASE
+ 2.2.3.RELEASE
+ 0.3.1
+ com.baeldung.spring.cloud.consul.discovery.DiscoveryClientApplication
diff --git a/spring-cloud/spring-cloud-consul/src/main/java/com/baeldung/spring/cloud/consul/discovery/DiscoveryClientApplication.java b/spring-cloud/spring-cloud-consul/src/main/java/com/baeldung/spring/cloud/consul/discovery/DiscoveryClientApplication.java
index e01799b8d9..e27aaf09ae 100644
--- a/spring-cloud/spring-cloud-consul/src/main/java/com/baeldung/spring/cloud/consul/discovery/DiscoveryClientApplication.java
+++ b/spring-cloud/spring-cloud-consul/src/main/java/com/baeldung/spring/cloud/consul/discovery/DiscoveryClientApplication.java
@@ -11,7 +11,7 @@ import static org.springframework.boot.WebApplicationType.NONE;
public class DiscoveryClientApplication {
public static void main(String[] args) {
- new SpringApplicationBuilder(DiscoveryClientApplication.class).web(NONE)
+ new SpringApplicationBuilder(DiscoveryClientApplication.class)
.run(args);
}
diff --git a/spring-cloud/spring-cloud-consul/src/main/java/com/baeldung/spring/cloud/consul/leadership/LeadershipElection.java b/spring-cloud/spring-cloud-consul/src/main/java/com/baeldung/spring/cloud/consul/leadership/LeadershipElection.java
new file mode 100644
index 0000000000..184a1e2213
--- /dev/null
+++ b/spring-cloud/spring-cloud-consul/src/main/java/com/baeldung/spring/cloud/consul/leadership/LeadershipElection.java
@@ -0,0 +1,16 @@
+package com.baeldung.spring.cloud.consul.leadership;
+
+import java.util.concurrent.ExecutionException;
+
+import net.kinguin.leadership.consul.factory.SimpleConsulClusterFactory;
+
+public class LeadershipElection {
+ public static void main(String[] args) throws ExecutionException, InterruptedException {
+ new SimpleConsulClusterFactory()
+ .mode(SimpleConsulClusterFactory.MODE_MULTI)
+ .debug(true)
+ .build()
+ .asObservable()
+ .subscribe(i -> System.out.println(i));
+ }
+}
diff --git a/spring-cloud/spring-cloud-consul/src/main/resources/application.yml b/spring-cloud/spring-cloud-consul/src/main/resources/application.yml
index ccdc3fdeee..85cfb35685 100644
--- a/spring-cloud/spring-cloud-consul/src/main/resources/application.yml
+++ b/spring-cloud/spring-cloud-consul/src/main/resources/application.yml
@@ -11,4 +11,19 @@ spring:
enabled: true
instanceId: ${spring.application.name}:${random.value}
server:
- port: 0
\ No newline at end of file
+ port: 0
+
+cluster:
+ leader:
+ serviceName: cluster
+ serviceId: node-1
+ consul:
+ host: localhost
+ port: 8500
+ discovery:
+ enabled: false
+ session:
+ ttl: 15
+ refresh: 7
+ election:
+ envelopeTemplate: services/%s/leader
\ No newline at end of file
diff --git a/spring-mvc-java-2/README.md b/spring-mvc-java-2/README.md
index 42fa056b99..41ff7bdf7c 100644
--- a/spring-mvc-java-2/README.md
+++ b/spring-mvc-java-2/README.md
@@ -6,3 +6,4 @@
- [A Quick Guide to Spring MVC Matrix Variables](https://www.baeldung.com/spring-mvc-matrix-variables)
- [Converting a Spring MultipartFile to a File](https://www.baeldung.com/spring-multipartfile-to-file)
- [Testing a Spring Multipart POST Request](https://www.baeldung.com/spring-multipart-post-request-test)
+- [Spring @Pathvariable Annotation](https://www.baeldung.com/spring-pathvariable)
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 @@
spring-security-oidc
spring-security-okta
spring-security-web-react
- spring-security-rest
- spring-security-rest-basic-auth
- spring-security-rest-custom
+ spring-security-web-rest
+ spring-security-web-rest-basic-auth
+ spring-security-web-rest-custom
spring-security-oauth2-sso
- spring-security-thymeleaf
- spring-security-x509
+ spring-security-web-thymeleaf
+ spring-security-web-x509
spring-security-kotlin-dsl
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 91%
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
index af6dd598cc..97f682acd3 100644
--- a/spring-security-modules/spring-security-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-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 @@
4.0.0
- spring-security-rest-basic-auth
+ spring-security-web-rest-basic-auth
0.2-SNAPSHOT
- spring-security-rest-basic-auth
+ spring-security-web-rest-basic-auth
war
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
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 93%
rename from spring-security-modules/spring-security-rest-custom/README.md
rename to spring-security-modules/spring-security-web-rest-custom/README.md
index be360e035e..09b795c4b8 100644
--- a/spring-security-modules/spring-security-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-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 @@
4.0.0
- spring-security-rest-custom
+ spring-security-web-rest-custom
0.1-SNAPSHOT
- spring-security-rest-custom
+ spring-security-web-rest-custom
war
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
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 97%
rename from spring-security-modules/spring-security-rest/README.md
rename to spring-security-modules/spring-security-web-rest/README.md
index 26c101d32c..c13668798d 100644
--- a/spring-security-modules/spring-security-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-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 @@
4.0.0
- spring-security-rest
+ spring-security-web-rest
0.1-SNAPSHOT
- spring-security-rest
+ spring-security-web-rest
war
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
diff --git a/spring-security-modules/spring-security-thymeleaf/README.MD b/spring-security-modules/spring-security-web-thymeleaf/README.md
similarity index 83%
rename from spring-security-modules/spring-security-thymeleaf/README.MD
rename to spring-security-modules/spring-security-web-thymeleaf/README.md
index e0fca4067c..bb3281fa24 100644
--- a/spring-security-modules/spring-security-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-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 @@
4.0.0
- spring-security-thymeleaf
+ spring-security-web-thymeleaf
0.0.1-SNAPSHOT
- spring-security-thymeleaf
+ spring-security-web-thymeleaf
jar
Spring Security with Thymeleaf tutorial
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
diff --git a/spring-security-modules/spring-security-x509/README.md b/spring-security-modules/spring-security-web-x509/README.md
similarity index 95%
rename from spring-security-modules/spring-security-x509/README.md
rename to spring-security-modules/spring-security-web-x509/README.md
index da431d862c..5fd63c0307 100644
--- a/spring-security-modules/spring-security-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
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 @@
4.0.0
- spring-security-x509
+ spring-security-web-x509
0.0.1-SNAPSHOT
- spring-security-x509
+ spring-security-web-x509
pom
@@ -15,8 +15,8 @@
- spring-security-x509-basic-auth
- spring-security-x509-client-auth
+ spring-security-web-x509-basic-auth
+ spring-security-web-x509-client-auth
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 @@
4.0.0
- spring-security-x509-basic-auth
+ spring-security-web-x509-basic-auth
0.0.1-SNAPSHOT
- spring-security-x509-basic-auth
+ spring-security-web-x509-basic-auth
jar
Spring x.509 Authentication Demo
com.baeldung
- spring-security-x509
+ spring-security-web-x509
0.0.1-SNAPSHOT
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 @@
4.0.0
- spring-security-x509-client-auth
+ spring-security-web-x509-client-auth
0.0.1-SNAPSHOT
- spring-security-x509-client-auth
+ spring-security-web-x509-client-auth
jar
Spring x.509 Client Authentication Demo
com.baeldung
- spring-security-x509
+ spring-security-web-x509
0.0.1-SNAPSHOT
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
diff --git a/spring-session/spring-session-redis/src/main/java/com/baeldung/spring/session/SessionConfig.java b/spring-session/spring-session-redis/src/main/java/com/baeldung/spring/session/SessionConfig.java
deleted file mode 100644
index 5a9bc9ff28..0000000000
--- a/spring-session/spring-session-redis/src/main/java/com/baeldung/spring/session/SessionConfig.java
+++ /dev/null
@@ -1,10 +0,0 @@
-package com.baeldung.spring.session;
-
-import org.springframework.context.annotation.Configuration;
-import org.springframework.session.data.redis.config.annotation.web.http.EnableRedisHttpSession;
-import org.springframework.session.web.context.AbstractHttpSessionApplicationInitializer;
-
-@Configuration
-@EnableRedisHttpSession
-public class SessionConfig extends AbstractHttpSessionApplicationInitializer {
-}
diff --git a/spring-webflux-threads/README.md b/spring-webflux-threads/README.md
new file mode 100644
index 0000000000..746514feda
--- /dev/null
+++ b/spring-webflux-threads/README.md
@@ -0,0 +1,3 @@
+### Relevant Articles:
+
+- [Concurrency in Spring WebFlux](https://www.baeldung.com/spring-webflux-concurrency)
diff --git a/testing-modules/mockito-2/README.md b/testing-modules/mockito-2/README.md
index bb7235c2cc..9ca5a38e2e 100644
--- a/testing-modules/mockito-2/README.md
+++ b/testing-modules/mockito-2/README.md
@@ -7,3 +7,4 @@
- [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)
- [Mockito – Using Spies](https://www.baeldung.com/mockito-spy)
+- [Using Mockito ArgumentCaptor](https://www.baeldung.com/mockito-argumentcaptor)