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/cdi/pom.xml b/cdi/pom.xml
index fec12a9b16..226ca529e1 100644
--- a/cdi/pom.xml
+++ b/cdi/pom.xml
@@ -1,8 +1,8 @@
+ 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
cdi
1.0-SNAPSHOT
@@ -10,9 +10,9 @@
com.baeldung
- parent-spring-4
+ parent-spring-5
0.0.1-SNAPSHOT
- ../parent-spring-4
+ ../parent-spring-5
@@ -26,28 +26,22 @@
weld-se-core
${weld-se-core.version}
-
- org.hamcrest
- hamcrest
- ${hamcrest.version}
- test
-
org.assertj
assertj-core
${assertj-core.version}
test
-
- org.springframework
- spring-context
- ${spring.version}
-
org.aspectj
aspectjweaver
${aspectjweaver.version}
+
+ org.springframework
+ spring-context
+ ${spring.version}
+
org.springframework
spring-test
@@ -61,7 +55,6 @@
3.0.5.Final
1.9.2
3.10.0
- 5.1.2.RELEASE
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-10/src/test/java/com/baeldung/java10/list/CopyListServiceUnitTest.java b/core-java-modules/core-java-10/src/test/java/com/baeldung/java10/list/CopyListServiceUnitTest.java
index f529e219a6..0b70516146 100644
--- a/core-java-modules/core-java-10/src/test/java/com/baeldung/java10/list/CopyListServiceUnitTest.java
+++ b/core-java-modules/core-java-10/src/test/java/com/baeldung/java10/list/CopyListServiceUnitTest.java
@@ -10,5 +10,6 @@ public class CopyListServiceUnitTest {
@Test(expected = UnsupportedOperationException.class)
public void whenModifyCopyOfList_thenThrowsException() {
List copyList = List.copyOf(Arrays.asList(1, 2, 3, 4));
+ copyList.add(4);
}
}
diff --git a/core-java-modules/core-java-8-datetime/src/test/java/com/baeldung/datetime/UseDateTimeFormatterUnitTest.java b/core-java-modules/core-java-8-datetime/src/test/java/com/baeldung/datetime/UseDateTimeFormatterUnitTest.java
index 797e0b954a..8ca0066a0d 100644
--- a/core-java-modules/core-java-8-datetime/src/test/java/com/baeldung/datetime/UseDateTimeFormatterUnitTest.java
+++ b/core-java-modules/core-java-8-datetime/src/test/java/com/baeldung/datetime/UseDateTimeFormatterUnitTest.java
@@ -31,6 +31,6 @@ public class UseDateTimeFormatterUnitTest {
public void givenALocalDate_whenFormattingWithStyleAndLocale_thenPass() {
String result = subject.formatWithStyleAndLocale(localDateTime, FormatStyle.MEDIUM, Locale.UK);
- assertThat(result).isEqualTo("25 Jan 2015, 06:30:00");
+ assertThat(result).isEqualTo("25-Jan-2015 06:30:00");
}
}
\ No newline at end of file
diff --git a/core-java-modules/core-java-8-datetime/src/test/java/com/baeldung/datetime/UseToInstantUnitTest.java b/core-java-modules/core-java-8-datetime/src/test/java/com/baeldung/datetime/UseToInstantUnitTest.java
index 78d9a647fe..cb6e804284 100644
--- a/core-java-modules/core-java-8-datetime/src/test/java/com/baeldung/datetime/UseToInstantUnitTest.java
+++ b/core-java-modules/core-java-8-datetime/src/test/java/com/baeldung/datetime/UseToInstantUnitTest.java
@@ -3,6 +3,7 @@ package com.baeldung.datetime;
import static org.assertj.core.api.Assertions.assertThat;
import java.time.LocalDateTime;
+import java.time.ZoneId;
import java.util.Calendar;
import java.util.Date;
import java.util.GregorianCalendar;
@@ -24,10 +25,11 @@ public class UseToInstantUnitTest {
@Test
public void givenADate_whenConvertingToLocalDate_thenAsExpected() {
- Date givenDate = new Date(1465817690000L);
+ LocalDateTime currentDateTime = LocalDateTime.now();
+ Date givenDate = Date.from(currentDateTime.atZone(ZoneId.systemDefault()).toInstant());
LocalDateTime localDateTime = subject.convertDateToLocalDate(givenDate);
- assertThat(localDateTime).isEqualTo("2016-06-13T13:34:50");
+ assertThat(localDateTime).isEqualTo(currentDateTime);
}
}
\ No newline at end of file
diff --git a/core-java-modules/core-java-8-datetime/src/test/java/com/baeldung/datetime/UseZonedDateTimeUnitTest.java b/core-java-modules/core-java-8-datetime/src/test/java/com/baeldung/datetime/UseZonedDateTimeUnitTest.java
index 4a39f6056e..0ee0f72d78 100644
--- a/core-java-modules/core-java-8-datetime/src/test/java/com/baeldung/datetime/UseZonedDateTimeUnitTest.java
+++ b/core-java-modules/core-java-8-datetime/src/test/java/com/baeldung/datetime/UseZonedDateTimeUnitTest.java
@@ -54,7 +54,7 @@ public class UseZonedDateTimeUnitTest {
@Test
public void givenAStringWithTimeZone_whenParsing_thenEqualsExpected() {
ZonedDateTime resultFromString = zonedDateTime.getZonedDateTimeUsingParseMethod("2015-05-03T10:15:30+01:00[Europe/Paris]");
- ZonedDateTime resultFromLocalDateTime = ZonedDateTime.of(2015, 5, 3, 11, 15, 30, 0, ZoneId.of("Europe/Paris"));
+ ZonedDateTime resultFromLocalDateTime = ZonedDateTime.of(2015, 5, 3, 10, 15, 30, 0, ZoneId.of("Europe/Paris"));
assertThat(resultFromString.getZone()).isEqualTo(ZoneId.of("Europe/Paris"));
assertThat(resultFromLocalDateTime.getZone()).isEqualTo(ZoneId.of("Europe/Paris"));
diff --git a/core-java-modules/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-collections-maps-2/pom.xml b/core-java-modules/core-java-collections-maps-2/pom.xml
index a64a11c6ea..7c4ab19945 100644
--- a/core-java-modules/core-java-collections-maps-2/pom.xml
+++ b/core-java-modules/core-java-collections-maps-2/pom.xml
@@ -21,20 +21,15 @@
${eclipse-collections.version}
- net.sf.trove4j
- trove4j
- ${trove4j.version}
+ com.carrotsearch
+ hppc
+ ${hppc.version}
it.unimi.dsi
fastutil
${fastutil.version}
-
- colt
- colt
- ${colt.version}
-
org.apache.commons
commons-lang3
@@ -69,9 +64,8 @@
4.1
1.7.0
8.2.0
- 3.0.2
+ 0.7.2
8.1.0
- 1.2.0
3.11.1
diff --git a/core-java-modules/core-java-collections-maps-2/src/main/java/com/baeldung/map/primitives/PrimitiveMaps.java b/core-java-modules/core-java-collections-maps-2/src/main/java/com/baeldung/map/primitives/PrimitiveMaps.java
index 30bec12ccc..e53290f93a 100644
--- a/core-java-modules/core-java-collections-maps-2/src/main/java/com/baeldung/map/primitives/PrimitiveMaps.java
+++ b/core-java-modules/core-java-collections-maps-2/src/main/java/com/baeldung/map/primitives/PrimitiveMaps.java
@@ -1,29 +1,68 @@
package com.baeldung.map.primitives;
-import cern.colt.map.AbstractIntDoubleMap;
-import cern.colt.map.OpenIntDoubleHashMap;
-import gnu.trove.map.TDoubleIntMap;
-import gnu.trove.map.hash.TDoubleIntHashMap;
+import com.carrotsearch.hppc.IntLongHashMap;
+import com.carrotsearch.hppc.IntLongScatterMap;
+import com.carrotsearch.hppc.IntObjectHashMap;
+import com.carrotsearch.hppc.IntObjectMap;
+import com.carrotsearch.hppc.IntObjectScatterMap;
+
import it.unimi.dsi.fastutil.ints.Int2BooleanMap;
+import it.unimi.dsi.fastutil.ints.Int2BooleanMaps;
import it.unimi.dsi.fastutil.ints.Int2BooleanOpenHashMap;
import it.unimi.dsi.fastutil.ints.Int2BooleanSortedMap;
import it.unimi.dsi.fastutil.ints.Int2BooleanSortedMaps;
+import it.unimi.dsi.fastutil.objects.ObjectIterator;
+
import org.eclipse.collections.api.map.primitive.ImmutableIntIntMap;
import org.eclipse.collections.api.map.primitive.MutableIntIntMap;
import org.eclipse.collections.api.map.primitive.MutableObjectDoubleMap;
import org.eclipse.collections.impl.factory.primitive.IntIntMaps;
import org.eclipse.collections.impl.factory.primitive.ObjectDoubleMaps;
+import static java.lang.String.format;
+
+import java.math.BigDecimal;
+
public class PrimitiveMaps {
public static void main(String[] args) {
+ hppcMap();
eclipseCollectionsMap();
- troveMap();
- coltMap();
fastutilMap();
}
+ private static void hppcMap() {
+ //Regular maps
+ IntLongHashMap intLongHashMap = new IntLongHashMap();
+ intLongHashMap.put(25,1L);
+ intLongHashMap.put(150,Long.MAX_VALUE);
+ intLongHashMap.put(1,0L);
+
+ intLongHashMap.get(150);
+
+ IntObjectMap intObjectMap = new IntObjectHashMap();
+ intObjectMap.put(1, BigDecimal.valueOf(1));
+ intObjectMap.put(2, BigDecimal.valueOf(2500));
+
+ BigDecimal value = intObjectMap.get(2);
+
+ //Scatter maps
+ IntLongScatterMap intLongScatterMap = new IntLongScatterMap();
+ intLongScatterMap.put(1, 1L);
+ intLongScatterMap.put(2, -2L);
+ intLongScatterMap.put(1000,0L);
+
+ intLongScatterMap.get(1000);
+
+ IntObjectScatterMap intObjectScatterMap = new IntObjectScatterMap();
+ intObjectScatterMap.put(1, BigDecimal.valueOf(1));
+ intObjectScatterMap.put(2, BigDecimal.valueOf(2500));
+
+ value = intObjectScatterMap.get(2);
+ }
+
+
private static void fastutilMap() {
Int2BooleanMap int2BooleanMap = new Int2BooleanOpenHashMap();
int2BooleanMap.put(1, true);
@@ -32,13 +71,19 @@ public class PrimitiveMaps {
boolean value = int2BooleanMap.get(1);
- Int2BooleanSortedMap int2BooleanSorted = Int2BooleanSortedMaps.EMPTY_MAP;
- }
+ //Lambda style iteration
+ Int2BooleanMaps.fastForEach(int2BooleanMap, entry -> {
+ System.out.println(String.format("Key: %d, Value: %b",entry.getIntKey(),entry.getBooleanValue()));
+ });
+
+ //Iterator based loop
+ ObjectIterator iterator = Int2BooleanMaps.fastIterator(int2BooleanMap);
+ while(iterator.hasNext()) {
+ Int2BooleanMap.Entry entry = iterator.next();
+ System.out.println(String.format("Key: %d, Value: %b",entry.getIntKey(),entry.getBooleanValue()));
+
+ }
- private static void coltMap() {
- AbstractIntDoubleMap map = new OpenIntDoubleHashMap();
- map.put(1, 4.5);
- double value = map.get(1);
}
private static void eclipseCollectionsMap() {
@@ -53,17 +98,5 @@ public class PrimitiveMaps {
dObject.addToValue("stability", 0.8);
}
- private static void troveMap() {
- double[] doubles = new double[] {1.2, 4.5, 0.3};
- int[] ints = new int[] {1, 4, 0};
- TDoubleIntMap doubleIntMap = new TDoubleIntHashMap(doubles, ints);
-
- doubleIntMap.put(1.2, 22);
- doubleIntMap.put(4.5, 16);
-
- doubleIntMap.adjustValue(1.2, 1);
- doubleIntMap.adjustValue(4.5, 4);
- doubleIntMap.adjustValue(0.3, 7);
- }
}
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..b909572afe
--- /dev/null
+++ b/core-java-modules/core-java-exceptions-3/pom.xml
@@ -0,0 +1,33 @@
+
+
+ 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
+
+
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/main/java/com/baeldung/nullmethodparameter/NullParameterExample.java b/core-java-modules/core-java-exceptions-3/src/main/java/com/baeldung/nullmethodparameter/NullParameterExample.java
new file mode 100644
index 0000000000..c2c76bdc46
--- /dev/null
+++ b/core-java-modules/core-java-exceptions-3/src/main/java/com/baeldung/nullmethodparameter/NullParameterExample.java
@@ -0,0 +1,17 @@
+package com.baeldung.nullmethodparameter;
+
+public class NullParameterExample {
+ public void processSomethingNotNull(Object myParameter) {
+ if (myParameter == null) {
+ throw new IllegalArgumentException("Parameter 'myParameter' cannot be null");
+ }
+ //Do something with the parameter
+ }
+
+ public void processSomethingElseNotNull(Object myParameter) {
+ if (myParameter == null) {
+ throw new NullPointerException("Parameter 'myParameter' cannot be null");
+ }
+ //Do something with the parameter
+ }
+}
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-exceptions-3/src/test/java/com/baeldung/nullmethodparameter/NullParameterExampleUnitTest.java b/core-java-modules/core-java-exceptions-3/src/test/java/com/baeldung/nullmethodparameter/NullParameterExampleUnitTest.java
new file mode 100644
index 0000000000..aa4b332e52
--- /dev/null
+++ b/core-java-modules/core-java-exceptions-3/src/test/java/com/baeldung/nullmethodparameter/NullParameterExampleUnitTest.java
@@ -0,0 +1,17 @@
+package com.baeldung.nullmethodparameter;
+
+import org.junit.Test;
+
+public class NullParameterExampleUnitTest {
+ @Test(expected = IllegalArgumentException.class)
+ public void givenNullParameter_whenProcessSomethingNotNull_thenIllegalArgumentException() {
+ NullParameterExample example = new NullParameterExample();
+ example.processSomethingNotNull(null);
+ }
+
+ @Test(expected = NullPointerException.class)
+ public void givenNullParameter_whenProcessSomethingElseNotNull_thenNullPointerException() {
+ NullParameterExample example = new NullParameterExample();
+ example.processSomethingElseNotNull(null);
+ }
+}
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-jvm-2/src/main/java/com/baeldung/loadedclasslisting/Launcher.java b/core-java-modules/core-java-jvm-2/src/main/java/com/baeldung/loadedclasslisting/Launcher.java
new file mode 100644
index 0000000000..bd9573d6b5
--- /dev/null
+++ b/core-java-modules/core-java-jvm-2/src/main/java/com/baeldung/loadedclasslisting/Launcher.java
@@ -0,0 +1,19 @@
+package com.baeldung.loadedclasslisting;
+
+import java.util.Arrays;
+
+public class Launcher {
+
+ public static void main(String[] args) {
+ printClassesLoadedBy("BOOTSTRAP");
+ printClassesLoadedBy("SYSTEM");
+ printClassesLoadedBy("EXTENSION");
+ }
+
+ private static void printClassesLoadedBy(String classLoaderType) {
+ System.out.println(classLoaderType + " ClassLoader : ");
+ Class>[] classes = ListLoadedClassesAgent.listLoadedClasses(classLoaderType);
+ Arrays.asList(classes)
+ .forEach(clazz -> System.out.println(clazz.getCanonicalName()));
+ }
+}
diff --git a/core-java-modules/core-java-jvm-2/src/main/java/com/baeldung/loadedclasslisting/ListLoadedClassesAgent.java b/core-java-modules/core-java-jvm-2/src/main/java/com/baeldung/loadedclasslisting/ListLoadedClassesAgent.java
new file mode 100644
index 0000000000..337214a664
--- /dev/null
+++ b/core-java-modules/core-java-jvm-2/src/main/java/com/baeldung/loadedclasslisting/ListLoadedClassesAgent.java
@@ -0,0 +1,40 @@
+package com.baeldung.loadedclasslisting;
+
+import java.lang.instrument.Instrumentation;
+
+public class ListLoadedClassesAgent {
+
+ private static Instrumentation instrumentation;
+
+ public static void premain(String agentArgs, Instrumentation instrumentation) {
+ ListLoadedClassesAgent.instrumentation = instrumentation;
+ }
+
+ public static Class>[] listLoadedClasses(String classLoaderType) {
+ if (instrumentation == null) {
+ throw new IllegalStateException(
+ "ListLoadedClassesAgent is not initialized.");
+ }
+ return instrumentation.getInitiatedClasses(
+ getClassLoader(classLoaderType));
+ }
+
+ private static ClassLoader getClassLoader(String classLoaderType) {
+ ClassLoader classLoader = null;
+ switch (classLoaderType) {
+ case "SYSTEM":
+ classLoader = ClassLoader.getSystemClassLoader();
+ break;
+ case "EXTENSION":
+ classLoader = ClassLoader.getSystemClassLoader().getParent();
+ break;
+ // passing a null value to the Instrumentation : getInitiatedClasses method
+ // defaults to the bootstrap class loader
+ case "BOOTSTRAP":
+ break;
+ default:
+ break;
+ }
+ return classLoader;
+ }
+}
diff --git a/core-java-modules/core-java-jvm-2/src/main/java/com/baeldung/loadedclasslisting/MANIFEST.MF b/core-java-modules/core-java-jvm-2/src/main/java/com/baeldung/loadedclasslisting/MANIFEST.MF
new file mode 100644
index 0000000000..4a60bda0b7
--- /dev/null
+++ b/core-java-modules/core-java-jvm-2/src/main/java/com/baeldung/loadedclasslisting/MANIFEST.MF
@@ -0,0 +1 @@
+Premain-Class: com.baeldung.loadedclasslisting.ListLoadedClassesAgent
\ No newline at end of file
diff --git a/core-java-modules/core-java-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-math-2/src/main/java/com/baeldung/algorithms/largestpowerof2/LargestPowerOf2.java b/core-java-modules/core-java-lang-math-2/src/main/java/com/baeldung/algorithms/largestpowerof2/LargestPowerOf2.java
new file mode 100644
index 0000000000..ca6b25b3e7
--- /dev/null
+++ b/core-java-modules/core-java-lang-math-2/src/main/java/com/baeldung/algorithms/largestpowerof2/LargestPowerOf2.java
@@ -0,0 +1,60 @@
+package com.baeldung.algorithms.largestpowerof2;
+
+import org.nd4j.linalg.io.Assert;
+
+public class LargestPowerOf2 {
+ public long findLargestPowerOf2LessThanTheGivenNumber(long input) {
+ Assert.isTrue(input > 1, "Invalid input");
+
+ long firstPowerOf2 = 1;
+ long nextPowerOf2 = 2;
+
+ while (nextPowerOf2 < input) {
+ firstPowerOf2 = nextPowerOf2;
+ nextPowerOf2 = nextPowerOf2 * 2;
+ }
+ return firstPowerOf2;
+ }
+
+ public long findLargestPowerOf2LessThanTheGivenNumberUsingLogBase2(long input) {
+ Assert.isTrue(input > 1, "Invalid input");
+
+ long temp = input;
+ if (input % 2 == 0) {
+ temp = input - 1;
+ }
+
+ // Find log base 2 of a given number
+ long power = (long) (Math.log(temp) / Math.log(2));
+ long result = (long) Math.pow(2, power);
+
+ return result;
+ }
+
+ public long findLargestPowerOf2LessThanTheGivenNumberUsingBitwiseAnd(long input) {
+ Assert.isTrue(input > 1, "Invalid input");
+ long result = 1;
+ for (long i = input - 1; i > 1; i--) {
+ if ((i & (i - 1)) == 0) {
+ result = i;
+ break;
+ }
+ }
+ return result;
+ }
+
+ public long findLargestPowerOf2LessThanTheGivenNumberUsingBitShiftApproach(long input) {
+ Assert.isTrue(input > 1, "Invalid input");
+ long result = 1;
+ long powerOf2;
+
+ for (long i = 0; i < Long.BYTES * 8; i++) {
+ powerOf2 = 1 << i;
+ if (powerOf2 >= input) {
+ break;
+ }
+ result = powerOf2;
+ }
+ return result;
+ }
+}
diff --git a/core-java-modules/core-java-lang-math-2/src/test/java/com/baeldung/algorithms/largestpowerof2/LargestPowerOf2UnitTest.java b/core-java-modules/core-java-lang-math-2/src/test/java/com/baeldung/algorithms/largestpowerof2/LargestPowerOf2UnitTest.java
new file mode 100644
index 0000000000..63f7b03cf7
--- /dev/null
+++ b/core-java-modules/core-java-lang-math-2/src/test/java/com/baeldung/algorithms/largestpowerof2/LargestPowerOf2UnitTest.java
@@ -0,0 +1,67 @@
+package com.baeldung.algorithms.largestpowerof2;
+
+import java.util.Arrays;
+import java.util.Collection;
+
+import org.junit.Assert;
+import org.junit.Test;
+import org.junit.runner.RunWith;
+import org.junit.runners.Parameterized;
+
+@RunWith(Parameterized.class)
+public class LargestPowerOf2UnitTest {
+ private long input;
+ private long expectedResult;
+
+ public LargestPowerOf2UnitTest(long input, long expectedResult) {
+ this.input = input;
+ this.expectedResult = expectedResult;
+ }
+
+ @Parameterized.Parameters(name = "{index}: verifyLargestPowerOf2LessThanTheGivenNumber({0}) = {1}")
+ public static Collection
+
+ 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..171f2f17db
--- /dev/null
+++ b/libraries-testing/src/main/java/com/baeldung/archunit/smurfs/persistence/SmurfsRepository.java
@@ -0,0 +1,37 @@
+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));
+ }
+
+ 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..938257ba17
--- /dev/null
+++ b/libraries-testing/src/main/java/com/baeldung/archunit/smurfs/persistence/domain/Smurf.java
@@ -0,0 +1,37 @@
+package com.baeldung.archunit.smurfs.persistence.domain;
+
+public class Smurf {
+ private String name;
+ private boolean comic;
+ private boolean cartoon;
+
+ 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/spring-security-modules/spring-security-thymeleaf/src/main/resources/application.properties b/logging-modules/log-mdc/Dockerfile
similarity index 100%
rename from spring-security-modules/spring-security-thymeleaf/src/main/resources/application.properties
rename to logging-modules/log-mdc/Dockerfile
diff --git a/logging-modules/log-mdc/pom.xml b/logging-modules/log-mdc/pom.xml
index e367a63de6..bc4800ea37 100644
--- a/logging-modules/log-mdc/pom.xml
+++ b/logging-modules/log-mdc/pom.xml
@@ -10,9 +10,9 @@
com.baeldung
- parent-spring-4
+ parent-spring-5
0.0.1-SNAPSHOT
- ../../parent-spring-4
+ ../../parent-spring-5
diff --git a/maven-modules/maven-profiles/pom.xml b/maven-modules/maven-profiles/pom.xml
index 4937bc7c5d..f3aeb9d549 100644
--- a/maven-modules/maven-profiles/pom.xml
+++ b/maven-modules/maven-profiles/pom.xml
@@ -66,27 +66,29 @@
+
+ show-active-profiles
+
+
+
+ org.apache.maven.plugins
+ maven-help-plugin
+ ${help.plugin.version}
+
+
+ show-profiles
+ compile
+
+ active-profiles
+
+
+
+
+
+
+
-
-
-
- org.apache.maven.plugins
- maven-help-plugin
- ${help.plugin.version}
-
-
- show-profiles
- compile
-
- active-profiles
-
-
-
-
-
-
-
3.2.0
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/open-liberty/pom.xml b/open-liberty/pom.xml
index d6588ce49a..0e8b159043 100644
--- a/open-liberty/pom.xml
+++ b/open-liberty/pom.xml
@@ -27,6 +27,7 @@
org.apache.derby
derby
${version.derby}
+ provided
@@ -70,27 +71,16 @@
io.openliberty.tools
liberty-maven-plugin
${version.liberty-maven-plugin}
-
-
- org.apache.maven.plugins
- maven-dependency-plugin
- ${version.maven-dependency-plugin}
-
-
- copy-derby-dependency
- package
-
- copy-dependencies
-
-
- derby
- ${project.build.directory}/liberty/wlp/usr/shared/resources/
-
- ${testServerHttpPort}
-
-
-
-
+
+
+ ${project.build.directory}/liberty/wlp/usr/shared/resources/
+
+ org.apache.derby
+ derby
+ ${version.derby}
+
+
+
org.apache.maven.plugins
@@ -112,8 +102,7 @@
8.0.0
3.2
10.14.2.0
- 3.1
- 2.10
+ 3.3-M3
3.2.3
4.12
1.0.5
diff --git a/patterns/pom.xml b/patterns/pom.xml
index e1753aba56..a179d75ffe 100644
--- a/patterns/pom.xml
+++ b/patterns/pom.xml
@@ -21,6 +21,7 @@
dip
cqrs-es
front-controller
+ hexagonal-architecture
intercepting-filter
solid
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/java-jpa-3/src/main/java/com/baeldung/jpa/equality/EqualByBusinessKey.java b/persistence-modules/java-jpa-3/src/main/java/com/baeldung/jpa/equality/EqualByBusinessKey.java
index 3fe858936a..8cfee8f5d6 100644
--- a/persistence-modules/java-jpa-3/src/main/java/com/baeldung/jpa/equality/EqualByBusinessKey.java
+++ b/persistence-modules/java-jpa-3/src/main/java/com/baeldung/jpa/equality/EqualByBusinessKey.java
@@ -44,7 +44,7 @@ public class EqualByBusinessKey {
return false;
}
if (obj instanceof EqualByBusinessKey) {
- if (((EqualByBusinessKey) obj).getEmail() == getEmail()) {
+ if (((EqualByBusinessKey) obj).getEmail().equals(getEmail())) {
return true;
}
}
diff --git a/persistence-modules/pom.xml b/persistence-modules/pom.xml
index 78f1afd39a..522c281386 100644
--- a/persistence-modules/pom.xml
+++ b/persistence-modules/pom.xml
@@ -19,12 +19,14 @@
core-java-persistence
deltaspike
elasticsearch
+ flyway
flyway-repair
hbase
hibernate5
hibernate-mapping
hibernate-ogm
hibernate-annotations
+ hibernate-exceptions
hibernate-libraries
hibernate-jpa
hibernate-queries
@@ -53,6 +55,7 @@
spring-boot-persistence-mongodb
spring-data-cassandra
spring-data-cassandra-reactive
+ spring-data-cosmosdb
spring-data-couchbase-2
spring-data-dynamodb
spring-data-eclipselink
@@ -78,6 +81,7 @@
spring-hibernate-5
spring-hibernate4
spring-jpa
+ spring-jpa-2
spring-persistence-simple
spring-persistence-simple-2
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-cosmosdb/pom.xml b/persistence-modules/spring-data-cosmosdb/pom.xml
new file mode 100644
index 0000000000..75cc830578
--- /dev/null
+++ b/persistence-modules/spring-data-cosmosdb/pom.xml
@@ -0,0 +1,51 @@
+
+
+ 4.0.0
+ spring-data-cosmosdb
+ spring-data-cosmos-db
+ tutorial for spring-data-cosmosdb
+
+ com.baeldung
+ parent-boot-2
+ 0.0.1-SNAPSHOT
+ ../../parent-boot-2
+
+
+
+ 1.8
+ 2.3.0
+
+
+
+
+ org.springframework.boot
+ spring-boot-starter-web
+
+
+ com.microsoft.azure
+ spring-data-cosmosdb
+ ${cosmodb.version}
+
+
+ org.springframework.boot
+ spring-boot-starter-test
+ test
+
+
+ org.projectlombok
+ lombok
+
+
+
+
+
+
+ org.springframework.boot
+ spring-boot-maven-plugin
+
+
+
+
+
diff --git a/persistence-modules/spring-data-cosmosdb/src/main/java/com/baeldung/spring/data/cosmosdb/AzureCosmosDbApplication.java b/persistence-modules/spring-data-cosmosdb/src/main/java/com/baeldung/spring/data/cosmosdb/AzureCosmosDbApplication.java
new file mode 100644
index 0000000000..5a1764adc6
--- /dev/null
+++ b/persistence-modules/spring-data-cosmosdb/src/main/java/com/baeldung/spring/data/cosmosdb/AzureCosmosDbApplication.java
@@ -0,0 +1,12 @@
+package com.baeldung.spring.data.cosmosdb;
+
+import org.springframework.boot.SpringApplication;
+import org.springframework.boot.autoconfigure.SpringBootApplication;
+
+@SpringBootApplication
+public class AzureCosmosDbApplication {
+
+ public static void main(String[] args) {
+ SpringApplication.run(AzureCosmosDbApplication.class, args);
+ }
+}
diff --git a/persistence-modules/spring-data-cosmosdb/src/main/java/com/baeldung/spring/data/cosmosdb/config/AzureCosmosDbConfiguration.java b/persistence-modules/spring-data-cosmosdb/src/main/java/com/baeldung/spring/data/cosmosdb/config/AzureCosmosDbConfiguration.java
new file mode 100644
index 0000000000..7d3322faf6
--- /dev/null
+++ b/persistence-modules/spring-data-cosmosdb/src/main/java/com/baeldung/spring/data/cosmosdb/config/AzureCosmosDbConfiguration.java
@@ -0,0 +1,37 @@
+package com.baeldung.spring.data.cosmosdb.config;
+
+import com.azure.data.cosmos.CosmosKeyCredential;
+import com.microsoft.azure.spring.data.cosmosdb.config.AbstractCosmosConfiguration;
+import com.microsoft.azure.spring.data.cosmosdb.config.CosmosDBConfig;
+import com.microsoft.azure.spring.data.cosmosdb.repository.config.EnableCosmosRepositories;
+
+import org.springframework.beans.factory.annotation.Value;
+import org.springframework.context.annotation.Bean;
+import org.springframework.context.annotation.Configuration;
+
+@Configuration
+@EnableCosmosRepositories(basePackages = "com.baeldung.spring.data.cosmosdb.repository")
+public class AzureCosmosDbConfiguration extends AbstractCosmosConfiguration {
+
+ @Value("${azure.cosmosdb.uri}")
+ private String uri;
+
+ @Value("${azure.cosmosdb.key}")
+ private String key;
+
+ @Value("${azure.cosmosdb.secondaryKey}")
+ private String secondaryKey;
+
+ @Value("${azure.cosmosdb.database}")
+ private String dbName;
+
+ private CosmosKeyCredential cosmosKeyCredential;
+
+ @Bean
+ public CosmosDBConfig getConfig() {
+ this.cosmosKeyCredential = new CosmosKeyCredential(key);
+ CosmosDBConfig cosmosdbConfig = CosmosDBConfig.builder(uri, this.cosmosKeyCredential, dbName)
+ .build();
+ return cosmosdbConfig;
+ }
+}
diff --git a/persistence-modules/spring-data-cosmosdb/src/main/java/com/baeldung/spring/data/cosmosdb/controller/ProductController.java b/persistence-modules/spring-data-cosmosdb/src/main/java/com/baeldung/spring/data/cosmosdb/controller/ProductController.java
new file mode 100644
index 0000000000..25f88bac72
--- /dev/null
+++ b/persistence-modules/spring-data-cosmosdb/src/main/java/com/baeldung/spring/data/cosmosdb/controller/ProductController.java
@@ -0,0 +1,53 @@
+package com.baeldung.spring.data.cosmosdb.controller;
+
+import com.baeldung.spring.data.cosmosdb.entity.Product;
+import com.baeldung.spring.data.cosmosdb.service.ProductService;
+
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.http.HttpStatus;
+import org.springframework.web.bind.annotation.DeleteMapping;
+import org.springframework.web.bind.annotation.GetMapping;
+import org.springframework.web.bind.annotation.PathVariable;
+import org.springframework.web.bind.annotation.PostMapping;
+import org.springframework.web.bind.annotation.RequestBody;
+import org.springframework.web.bind.annotation.RequestMapping;
+import org.springframework.web.bind.annotation.RequestParam;
+import org.springframework.web.bind.annotation.ResponseStatus;
+import org.springframework.web.bind.annotation.RestController;
+
+import java.util.List;
+import java.util.Optional;
+
+@RestController
+@RequestMapping("/products")
+public class ProductController {
+
+ private ProductService productService;
+
+ @Autowired
+ public ProductController(ProductService productService) {
+ this.productService = productService;
+ }
+
+ @PostMapping
+ @ResponseStatus(HttpStatus.CREATED)
+ public void create(@RequestBody Product product) {
+ productService.saveProduct(product);
+ }
+
+ @GetMapping(value = "/{id}/category/{category}")
+ public Optional get(@PathVariable String id, @PathVariable String category) {
+ return productService.findById(id, category);
+ }
+
+ @DeleteMapping(value = "/{id}/category/{category}")
+ public void delete(@PathVariable String id, @PathVariable String category) {
+ productService.delete(id, category);
+ }
+
+ @GetMapping
+ public List getByName(@RequestParam String name) {
+ return productService.findProductByName(name);
+ }
+
+}
diff --git a/persistence-modules/spring-data-cosmosdb/src/main/java/com/baeldung/spring/data/cosmosdb/entity/Product.java b/persistence-modules/spring-data-cosmosdb/src/main/java/com/baeldung/spring/data/cosmosdb/entity/Product.java
new file mode 100644
index 0000000000..10bbe1b9ae
--- /dev/null
+++ b/persistence-modules/spring-data-cosmosdb/src/main/java/com/baeldung/spring/data/cosmosdb/entity/Product.java
@@ -0,0 +1,26 @@
+package com.baeldung.spring.data.cosmosdb.entity;
+
+import com.microsoft.azure.spring.data.cosmosdb.core.mapping.Document;
+import com.microsoft.azure.spring.data.cosmosdb.core.mapping.PartitionKey;
+
+import org.springframework.data.annotation.Id;
+
+import lombok.Getter;
+import lombok.Setter;
+
+@Getter
+@Setter
+@Document(collection = "products")
+public class Product {
+
+ @Id
+ private String productid;
+
+ private String productName;
+
+ private double price;
+
+ @PartitionKey
+ private String productCategory;
+
+}
diff --git a/persistence-modules/spring-data-cosmosdb/src/main/java/com/baeldung/spring/data/cosmosdb/repository/ProductRepository.java b/persistence-modules/spring-data-cosmosdb/src/main/java/com/baeldung/spring/data/cosmosdb/repository/ProductRepository.java
new file mode 100644
index 0000000000..1e4a2987a1
--- /dev/null
+++ b/persistence-modules/spring-data-cosmosdb/src/main/java/com/baeldung/spring/data/cosmosdb/repository/ProductRepository.java
@@ -0,0 +1,14 @@
+package com.baeldung.spring.data.cosmosdb.repository;
+
+import com.baeldung.spring.data.cosmosdb.entity.Product;
+import com.microsoft.azure.spring.data.cosmosdb.repository.CosmosRepository;
+
+import org.springframework.stereotype.Repository;
+
+import java.util.List;
+
+@Repository
+public interface ProductRepository extends CosmosRepository {
+ List findByProductName(String productName);
+
+}
diff --git a/persistence-modules/spring-data-cosmosdb/src/main/java/com/baeldung/spring/data/cosmosdb/service/ProductService.java b/persistence-modules/spring-data-cosmosdb/src/main/java/com/baeldung/spring/data/cosmosdb/service/ProductService.java
new file mode 100644
index 0000000000..0d1cf7c6a6
--- /dev/null
+++ b/persistence-modules/spring-data-cosmosdb/src/main/java/com/baeldung/spring/data/cosmosdb/service/ProductService.java
@@ -0,0 +1,38 @@
+package com.baeldung.spring.data.cosmosdb.service;
+
+import com.azure.data.cosmos.PartitionKey;
+import com.baeldung.spring.data.cosmosdb.entity.Product;
+import com.baeldung.spring.data.cosmosdb.repository.ProductRepository;
+
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.stereotype.Component;
+
+import java.util.List;
+import java.util.Optional;
+
+@Component
+public class ProductService {
+
+ private ProductRepository repository;
+
+ @Autowired
+ public ProductService(ProductRepository repository) {
+ this.repository = repository;
+ }
+
+ public List findProductByName(String productName) {
+ return repository.findByProductName(productName);
+ }
+
+ public Optional findById(String productId, String category) {
+ return repository.findById(productId, new PartitionKey(category));
+ }
+
+ public void saveProduct(Product product) {
+ repository.save(product);
+ }
+
+ public void delete(String productId, String category) {
+ repository.deleteById(productId, new PartitionKey(category));
+ }
+}
diff --git a/persistence-modules/spring-data-cosmosdb/src/main/resources/application.properties b/persistence-modules/spring-data-cosmosdb/src/main/resources/application.properties
new file mode 100644
index 0000000000..ba99ea2e6e
--- /dev/null
+++ b/persistence-modules/spring-data-cosmosdb/src/main/resources/application.properties
@@ -0,0 +1,4 @@
+azure.cosmosdb.uri=cosmodb-uri
+azure.cosmosdb.key=cosmodb-primary-key
+azure.cosmosdb.secondaryKey=cosmodb-second-key
+azure.cosmosdb.database=cosmodb-name
\ No newline at end of file
diff --git a/persistence-modules/spring-data-cosmosdb/src/test/java/com/baeldung/spring/data/cosmosdb/AzureCosmosDbApplicationManualTest.java b/persistence-modules/spring-data-cosmosdb/src/test/java/com/baeldung/spring/data/cosmosdb/AzureCosmosDbApplicationManualTest.java
new file mode 100644
index 0000000000..9170068173
--- /dev/null
+++ b/persistence-modules/spring-data-cosmosdb/src/test/java/com/baeldung/spring/data/cosmosdb/AzureCosmosDbApplicationManualTest.java
@@ -0,0 +1,33 @@
+package com.baeldung.spring.data.cosmosdb;
+
+import com.azure.data.cosmos.PartitionKey;
+import com.baeldung.spring.data.cosmosdb.entity.Product;
+import com.baeldung.spring.data.cosmosdb.repository.ProductRepository;
+
+import org.junit.jupiter.api.Test;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.boot.test.context.SpringBootTest;
+import org.springframework.util.Assert;
+
+@SpringBootTest
+public class AzureCosmosDbApplicationManualTest {
+
+ @Autowired
+ ProductRepository productRepository;
+
+ @Test
+ public void givenProductIsCreated_whenCallFindById_thenProductIsFound() {
+ Product product = new Product();
+ product.setProductid("1001");
+ product.setProductCategory("Shirt");
+ product.setPrice(110.0);
+ product.setProductName("Blue Shirt");
+
+ productRepository.save(product);
+ Product retrievedProduct = productRepository.findById("1001", new PartitionKey("Shirt"))
+ .orElse(null);
+ Assert.notNull(retrievedProduct, "Retrieved Product is Null");
+
+ }
+
+}
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-2/README.md b/persistence-modules/spring-jpa-2/README.md
index 71b368b44a..b1786f49bd 100644
--- a/persistence-modules/spring-jpa-2/README.md
+++ b/persistence-modules/spring-jpa-2/README.md
@@ -1,19 +1,5 @@
-=========
-
-## Spring JPA Example Project
-
+## Spring JPA (2)
### Relevant Articles:
- [Many-To-Many Relationship in JPA](https://www.baeldung.com/jpa-many-to-many)
-- More articles: [[<-- prev]](/spring-jpa)
-
-
-### Eclipse Config
-After importing the project into Eclipse, you may see the following error:
-"No persistence xml file found in project"
-
-This can be ignored:
-- Project -> Properties -> Java Persistance -> JPA -> Error/Warnings -> Select Ignore on "No persistence xml file found in project"
-Or:
-- Eclipse -> Preferences - Validation - disable the "Build" execution of the JPA Validator
-
+- More articles: [[<-- prev]](/spring-jpa)
\ No newline at end of file
diff --git a/persistence-modules/spring-jpa-2/pom.xml b/persistence-modules/spring-jpa-2/pom.xml
index 410ed592b0..08a1f0c6a3 100644
--- a/persistence-modules/spring-jpa-2/pom.xml
+++ b/persistence-modules/spring-jpa-2/pom.xml
@@ -2,9 +2,9 @@
4.0.0
- spring-jpa
+ spring-jpa-2
0.1-SNAPSHOT
- spring-jpa
+ spring-jpa-2
war
@@ -31,94 +31,20 @@
spring-context
${org.springframework.version}
-
- org.springframework
- spring-webmvc
- ${org.springframework.version}
-
-
org.hibernate
hibernate-entitymanager
${hibernate.version}
-
- xml-apis
- xml-apis
- ${xml-apis.version}
-
-
- org.javassist
- javassist
- ${javassist.version}
-
-
- mysql
- mysql-connector-java
- ${mysql-connector-java.version}
- runtime
-
-
- org.springframework.data
- spring-data-jpa
- ${spring-data-jpa.version}
-
com.h2database
h2
${h2.version}
-
-
-
- org.hibernate
- hibernate-validator
- ${hibernate-validator.version}
-
-
- javax.el
- javax.el-api
- ${javax.el-api.version}
-
-
-
-
- javax.servlet
- jstl
- ${jstl.version}
-
-
- javax.servlet
- servlet-api
- provided
- ${javax.servlet.servlet-api.version}
-
-
-
-
-
- com.google.guava
- guava
- ${guava.version}
-
-
- org.assertj
- assertj-core
- ${assertj.version}
-
-
-
-
- org.apache.commons
- commons-lang3
- ${commons-lang3.version}
- test
-
-
org.springframework
spring-test
@@ -131,22 +57,6 @@
5.1.5.RELEASE
- 3.21.0-GA
-
- 6.0.6
- 2.1.5.RELEASE
-
-
- 2.5
-
-
- 6.0.15.Final
- 1.4.01
- 2.2.5
-
-
- 21.0
- 3.8.0
\ No newline at end of file
diff --git a/persistence-modules/spring-jpa-2/src/main/java/com/baeldung/config/PersistenceJPAConfig.java b/persistence-modules/spring-jpa-2/src/main/java/com/baeldung/config/PersistenceJPAConfig.java
deleted file mode 100644
index c489321122..0000000000
--- a/persistence-modules/spring-jpa-2/src/main/java/com/baeldung/config/PersistenceJPAConfig.java
+++ /dev/null
@@ -1,85 +0,0 @@
-package com.baeldung.config;
-
-import com.google.common.base.Preconditions;
-import org.springframework.beans.factory.annotation.Autowired;
-import org.springframework.context.annotation.Bean;
-import org.springframework.context.annotation.ComponentScan;
-import org.springframework.context.annotation.Configuration;
-import org.springframework.context.annotation.PropertySource;
-import org.springframework.core.env.Environment;
-import org.springframework.dao.annotation.PersistenceExceptionTranslationPostProcessor;
-import org.springframework.data.jpa.repository.config.EnableJpaRepositories;
-import org.springframework.jdbc.datasource.DriverManagerDataSource;
-import org.springframework.orm.jpa.JpaTransactionManager;
-import org.springframework.orm.jpa.LocalContainerEntityManagerFactoryBean;
-import org.springframework.orm.jpa.vendor.HibernateJpaVendorAdapter;
-import org.springframework.transaction.PlatformTransactionManager;
-import org.springframework.transaction.annotation.EnableTransactionManagement;
-
-import javax.persistence.EntityManagerFactory;
-import javax.sql.DataSource;
-import java.util.Properties;
-
-@Configuration
-@EnableTransactionManagement
-@PropertySource({ "classpath:persistence-h2.properties" })
-@ComponentScan({ "com.baeldung.persistence" })
-@EnableJpaRepositories(basePackages = "com.baeldung.persistence.dao")
-public class PersistenceJPAConfig {
-
- @Autowired
- private Environment env;
-
- public PersistenceJPAConfig() {
- super();
- }
-
- // beans
-
- @Bean
- public LocalContainerEntityManagerFactoryBean entityManagerFactory() {
- final LocalContainerEntityManagerFactoryBean em = new LocalContainerEntityManagerFactoryBean();
- em.setDataSource(dataSource());
- em.setPackagesToScan(new String[] { "com.baeldung.persistence.model" });
-
- final HibernateJpaVendorAdapter vendorAdapter = new HibernateJpaVendorAdapter();
- em.setJpaVendorAdapter(vendorAdapter);
- em.setJpaProperties(additionalProperties());
-
- return em;
- }
-
- @Bean
- public DataSource dataSource() {
- final DriverManagerDataSource dataSource = new DriverManagerDataSource();
- dataSource.setDriverClassName(Preconditions.checkNotNull(env.getProperty("jdbc.driverClassName")));
- dataSource.setUrl(Preconditions.checkNotNull(env.getProperty("jdbc.url")));
- dataSource.setUsername(Preconditions.checkNotNull(env.getProperty("jdbc.user")));
- dataSource.setPassword(Preconditions.checkNotNull(env.getProperty("jdbc.pass")));
-
- return dataSource;
- }
-
- @Bean
- public PlatformTransactionManager transactionManager(final EntityManagerFactory emf) {
- final JpaTransactionManager transactionManager = new JpaTransactionManager();
- transactionManager.setEntityManagerFactory(emf);
- return transactionManager;
- }
-
- @Bean
- public PersistenceExceptionTranslationPostProcessor exceptionTranslation() {
- return new PersistenceExceptionTranslationPostProcessor();
- }
-
- final Properties additionalProperties() {
- final Properties hibernateProperties = new Properties();
- hibernateProperties.setProperty("hibernate.hbm2ddl.auto", env.getProperty("hibernate.hbm2ddl.auto"));
- hibernateProperties.setProperty("hibernate.dialect", env.getProperty("hibernate.dialect"));
- hibernateProperties.setProperty("hibernate.cache.use_second_level_cache", "false");
-
-
- return hibernateProperties;
- }
-
-}
\ No newline at end of file
diff --git a/persistence-modules/spring-jpa-2/src/main/java/com/baeldung/config/PersistenceJPAConfigXml.java b/persistence-modules/spring-jpa-2/src/main/java/com/baeldung/config/PersistenceJPAConfigXml.java
deleted file mode 100644
index 95224a4662..0000000000
--- a/persistence-modules/spring-jpa-2/src/main/java/com/baeldung/config/PersistenceJPAConfigXml.java
+++ /dev/null
@@ -1,17 +0,0 @@
-package com.baeldung.config;
-
-import org.springframework.context.annotation.ComponentScan;
-import org.springframework.context.annotation.ImportResource;
-import org.springframework.transaction.annotation.EnableTransactionManagement;
-
-// @Configuration
-@EnableTransactionManagement
-@ComponentScan({ "com.baeldung.persistence" })
-@ImportResource({ "classpath:jpaConfig.xml" })
-public class PersistenceJPAConfigXml {
-
- public PersistenceJPAConfigXml() {
- super();
- }
-
-}
\ No newline at end of file
diff --git a/persistence-modules/spring-jpa-2/src/main/java/com/baeldung/config/SpringWebConfig.java b/persistence-modules/spring-jpa-2/src/main/java/com/baeldung/config/SpringWebConfig.java
deleted file mode 100644
index 475970d1f0..0000000000
--- a/persistence-modules/spring-jpa-2/src/main/java/com/baeldung/config/SpringWebConfig.java
+++ /dev/null
@@ -1,24 +0,0 @@
-package com.baeldung.config;
-
-import org.springframework.context.annotation.Bean;
-import org.springframework.context.annotation.ComponentScan;
-import org.springframework.context.annotation.Configuration;
-import org.springframework.web.servlet.config.annotation.EnableWebMvc;
-import org.springframework.web.servlet.config.annotation.WebMvcConfigurerAdapter;
-import org.springframework.web.servlet.view.InternalResourceViewResolver;
-import org.springframework.web.servlet.view.JstlView;
-
-@EnableWebMvc
-@Configuration
-@ComponentScan({ "com.baeldung.web" })
-public class SpringWebConfig extends WebMvcConfigurerAdapter {
-
- @Bean
- public InternalResourceViewResolver viewResolver() {
- InternalResourceViewResolver viewResolver = new InternalResourceViewResolver();
- viewResolver.setViewClass(JstlView.class);
- viewResolver.setPrefix("/WEB-INF/views/jsp/");
- viewResolver.setSuffix(".jsp");
- return viewResolver;
- }
-}
diff --git a/persistence-modules/spring-jpa-2/src/main/java/com/baeldung/config/StudentJpaConfig.java b/persistence-modules/spring-jpa-2/src/main/java/com/baeldung/config/StudentJpaConfig.java
deleted file mode 100644
index 54ced72dd1..0000000000
--- a/persistence-modules/spring-jpa-2/src/main/java/com/baeldung/config/StudentJpaConfig.java
+++ /dev/null
@@ -1,67 +0,0 @@
-package com.baeldung.config;
-
-import org.springframework.beans.factory.annotation.Autowired;
-import org.springframework.context.annotation.Bean;
-import org.springframework.context.annotation.Configuration;
-import org.springframework.context.annotation.PropertySource;
-import org.springframework.core.env.Environment;
-import org.springframework.data.jpa.repository.config.EnableJpaRepositories;
-import org.springframework.jdbc.datasource.DriverManagerDataSource;
-import org.springframework.orm.jpa.JpaTransactionManager;
-import org.springframework.orm.jpa.LocalContainerEntityManagerFactoryBean;
-import org.springframework.orm.jpa.vendor.HibernateJpaVendorAdapter;
-import org.springframework.transaction.annotation.EnableTransactionManagement;
-
-import javax.persistence.EntityManagerFactory;
-import javax.sql.DataSource;
-import java.util.Properties;
-
-@Configuration
-@EnableJpaRepositories(basePackages = "com.baeldung.inmemory.persistence.dao")
-@PropertySource("persistence-student.properties")
-@EnableTransactionManagement
-public class StudentJpaConfig {
-
- @Autowired
- private Environment env;
-
- @Bean
- public DataSource dataSource() {
- final DriverManagerDataSource dataSource = new DriverManagerDataSource();
- dataSource.setDriverClassName(env.getProperty("jdbc.driverClassName"));
- dataSource.setUrl(env.getProperty("jdbc.url"));
- dataSource.setUsername(env.getProperty("jdbc.user"));
- dataSource.setPassword(env.getProperty("jdbc.pass"));
-
- return dataSource;
- }
-
- @Bean
- public LocalContainerEntityManagerFactoryBean entityManagerFactory() {
- final LocalContainerEntityManagerFactoryBean em = new LocalContainerEntityManagerFactoryBean();
- em.setDataSource(dataSource());
- em.setPackagesToScan(new String[] { "com.baeldung.inmemory.persistence.model" });
- em.setJpaVendorAdapter(new HibernateJpaVendorAdapter());
- em.setJpaProperties(additionalProperties());
- return em;
- }
-
- @Bean
- JpaTransactionManager transactionManager(EntityManagerFactory entityManagerFactory) {
- JpaTransactionManager transactionManager = new JpaTransactionManager();
- transactionManager.setEntityManagerFactory(entityManagerFactory);
- return transactionManager;
- }
-
- final Properties additionalProperties() {
- final Properties hibernateProperties = new Properties();
-
- hibernateProperties.setProperty("hibernate.hbm2ddl.auto", env.getProperty("hibernate.hbm2ddl.auto"));
- hibernateProperties.setProperty("hibernate.dialect", env.getProperty("hibernate.dialect"));
- hibernateProperties.setProperty("hibernate.show_sql", env.getProperty("hibernate.show_sql"));
- hibernateProperties.setProperty("hibernate.cache.use_second_level_cache", env.getProperty("hibernate.cache.use_second_level_cache"));
- hibernateProperties.setProperty("hibernate.cache.use_query_cache", env.getProperty("hibernate.cache.use_query_cache"));
-
- return hibernateProperties;
- }
-}
diff --git a/persistence-modules/spring-jpa-2/src/main/java/com/baeldung/config/WebInitializer.java b/persistence-modules/spring-jpa-2/src/main/java/com/baeldung/config/WebInitializer.java
deleted file mode 100644
index be81cca76b..0000000000
--- a/persistence-modules/spring-jpa-2/src/main/java/com/baeldung/config/WebInitializer.java
+++ /dev/null
@@ -1,20 +0,0 @@
-package com.baeldung.config;
-
-import org.springframework.web.servlet.support.AbstractAnnotationConfigDispatcherServletInitializer;
-
-public class WebInitializer extends AbstractAnnotationConfigDispatcherServletInitializer {
- @Override
- protected Class>[] getRootConfigClasses() {
- return new Class[] { PersistenceJPAConfig.class };
- }
-
- @Override
- protected Class>[] getServletConfigClasses() {
- return new Class[] { SpringWebConfig.class };
- }
-
- @Override
- protected String[] getServletMappings() {
- return new String[] { "/" };
- }
-}
diff --git a/persistence-modules/spring-jpa-2/src/main/java/com/baeldung/manytomany/model/Course.java b/persistence-modules/spring-jpa-2/src/main/java/com/baeldung/manytomany/model/Course.java
index bdfb8e890f..d824505629 100644
--- a/persistence-modules/spring-jpa-2/src/main/java/com/baeldung/manytomany/model/Course.java
+++ b/persistence-modules/spring-jpa-2/src/main/java/com/baeldung/manytomany/model/Course.java
@@ -1,14 +1,9 @@
package com.baeldung.manytomany.model;
+import javax.persistence.*;
+import java.util.HashSet;
import java.util.Set;
-import javax.persistence.Column;
-import javax.persistence.Entity;
-import javax.persistence.Id;
-import javax.persistence.ManyToMany;
-import javax.persistence.OneToMany;
-import javax.persistence.Table;
-
@Entity
@Table(name = "course")
public class Course {
@@ -18,31 +13,55 @@ public class Course {
private Long id;
@ManyToMany(mappedBy = "likedCourses")
- private Set likes;
+ private Set likes = new HashSet<>();
@OneToMany(mappedBy = "course")
- private Set ratings;
+ private Set ratings = new HashSet<>();
@OneToMany(mappedBy = "course")
- private Set registrations;
+ private Set registrations = new HashSet<>();
// additional properties
public Course() {
}
+ public Course(Long id) {
+ this.id = id;
+ }
+
public Long getId() {
return id;
}
+ public void setId(Long id) {
+ this.id = id;
+ }
+
+ public Set getLikes() {
+ return likes;
+ }
+
+ public void setLikes(Set likes) {
+ this.likes = likes;
+ }
+
public Set getRatings() {
return ratings;
}
+ public void setRatings(Set ratings) {
+ this.ratings = ratings;
+ }
+
public Set getRegistrations() {
return registrations;
}
+ public void setRegistrations(Set registrations) {
+ this.registrations = registrations;
+ }
+
@Override
public int hashCode() {
final int prime = 31;
diff --git a/persistence-modules/spring-jpa-2/src/main/java/com/baeldung/manytomany/model/CourseRating.java b/persistence-modules/spring-jpa-2/src/main/java/com/baeldung/manytomany/model/CourseRating.java
index 4951f766bc..b89cc1dae9 100644
--- a/persistence-modules/spring-jpa-2/src/main/java/com/baeldung/manytomany/model/CourseRating.java
+++ b/persistence-modules/spring-jpa-2/src/main/java/com/baeldung/manytomany/model/CourseRating.java
@@ -1,12 +1,6 @@
package com.baeldung.manytomany.model;
-import javax.persistence.Column;
-import javax.persistence.EmbeddedId;
-import javax.persistence.Entity;
-import javax.persistence.JoinColumn;
-import javax.persistence.ManyToOne;
-import javax.persistence.MapsId;
-import javax.persistence.Table;
+import javax.persistence.*;
@Entity
@Table(name = "course_rating")
@@ -16,12 +10,12 @@ public class CourseRating {
private CourseRatingKey id;
@ManyToOne
- @MapsId("student_id")
+ @MapsId("studentId")
@JoinColumn(name = "student_id")
private Student student;
@ManyToOne
- @MapsId("course_id")
+ @MapsId("courseId")
@JoinColumn(name = "course_id")
private Course course;
@@ -31,26 +25,38 @@ public class CourseRating {
public CourseRating() {
}
- public int getRating() {
- return rating;
- }
-
- public void setRating(int rating) {
- this.rating = rating;
- }
-
public CourseRatingKey getId() {
return id;
}
+ public void setId(CourseRatingKey id) {
+ this.id = id;
+ }
+
public Student getStudent() {
return student;
}
+ public void setStudent(Student student) {
+ this.student = student;
+ }
+
public Course getCourse() {
return course;
}
+ public void setCourse(Course course) {
+ this.course = course;
+ }
+
+ public int getRating() {
+ return rating;
+ }
+
+ public void setRating(int rating) {
+ this.rating = rating;
+ }
+
@Override
public int hashCode() {
final int prime = 31;
diff --git a/persistence-modules/spring-jpa-2/src/main/java/com/baeldung/manytomany/model/CourseRatingKey.java b/persistence-modules/spring-jpa-2/src/main/java/com/baeldung/manytomany/model/CourseRatingKey.java
index 4e7430ed92..a4b2df9b07 100644
--- a/persistence-modules/spring-jpa-2/src/main/java/com/baeldung/manytomany/model/CourseRatingKey.java
+++ b/persistence-modules/spring-jpa-2/src/main/java/com/baeldung/manytomany/model/CourseRatingKey.java
@@ -1,9 +1,8 @@
package com.baeldung.manytomany.model;
-import java.io.Serializable;
-
import javax.persistence.Column;
import javax.persistence.Embeddable;
+import java.io.Serializable;
@Embeddable
public class CourseRatingKey implements Serializable {
@@ -17,14 +16,27 @@ public class CourseRatingKey implements Serializable {
public CourseRatingKey() {
}
+ public CourseRatingKey(Long studentId, Long courseId) {
+ this.studentId = studentId;
+ this.courseId = courseId;
+ }
+
public Long getStudentId() {
return studentId;
}
+ public void setStudentId(Long studentId) {
+ this.studentId = studentId;
+ }
+
public Long getCourseId() {
return courseId;
}
+ public void setCourseId(Long courseId) {
+ this.courseId = courseId;
+ }
+
@Override
public int hashCode() {
final int prime = 31;
diff --git a/persistence-modules/spring-jpa-2/src/main/java/com/baeldung/manytomany/model/CourseRegistration.java b/persistence-modules/spring-jpa-2/src/main/java/com/baeldung/manytomany/model/CourseRegistration.java
index e1f30af883..ba914b564d 100644
--- a/persistence-modules/spring-jpa-2/src/main/java/com/baeldung/manytomany/model/CourseRegistration.java
+++ b/persistence-modules/spring-jpa-2/src/main/java/com/baeldung/manytomany/model/CourseRegistration.java
@@ -1,14 +1,8 @@
package com.baeldung.manytomany.model;
+import javax.persistence.*;
import java.time.LocalDateTime;
-import javax.persistence.Column;
-import javax.persistence.Entity;
-import javax.persistence.Id;
-import javax.persistence.JoinColumn;
-import javax.persistence.ManyToOne;
-import javax.persistence.Table;
-
@Entity
@Table(name = "course_registration")
public class CourseRegistration {
@@ -36,6 +30,14 @@ public class CourseRegistration {
public CourseRegistration() {
}
+ public Long getId() {
+ return id;
+ }
+
+ public void setId(Long id) {
+ this.id = id;
+ }
+
public Student getStudent() {
return student;
}
@@ -68,10 +70,6 @@ public class CourseRegistration {
this.grade = grade;
}
- public Long getId() {
- return id;
- }
-
@Override
public int hashCode() {
final int prime = 31;
diff --git a/persistence-modules/spring-jpa-2/src/main/java/com/baeldung/manytomany/model/Student.java b/persistence-modules/spring-jpa-2/src/main/java/com/baeldung/manytomany/model/Student.java
index 00561593a6..53c5d88a57 100644
--- a/persistence-modules/spring-jpa-2/src/main/java/com/baeldung/manytomany/model/Student.java
+++ b/persistence-modules/spring-jpa-2/src/main/java/com/baeldung/manytomany/model/Student.java
@@ -1,16 +1,9 @@
package com.baeldung.manytomany.model;
+import javax.persistence.*;
+import java.util.HashSet;
import java.util.Set;
-import javax.persistence.Column;
-import javax.persistence.Entity;
-import javax.persistence.Id;
-import javax.persistence.JoinColumn;
-import javax.persistence.JoinTable;
-import javax.persistence.ManyToMany;
-import javax.persistence.OneToMany;
-import javax.persistence.Table;
-
@Entity
@Table(name = "student")
public class Student {
@@ -21,35 +14,55 @@ public class Student {
@ManyToMany
@JoinTable(name = "course_like", joinColumns = @JoinColumn(name = "student_id"), inverseJoinColumns = @JoinColumn(name = "course_id"))
- private Set likedCourses;
+ private Set likedCourses = new HashSet<>();
@OneToMany(mappedBy = "student")
- private Set ratings;
+ private Set ratings = new HashSet<>();
@OneToMany(mappedBy = "student")
- private Set registrations;
+ private Set registrations = new HashSet<>();
// additional properties
public Student() {
}
+ public Student(Long id) {
+ this.id = id;
+ }
+
public Long getId() {
return id;
}
+ public void setId(Long id) {
+ this.id = id;
+ }
+
public Set getLikedCourses() {
return likedCourses;
}
+ public void setLikedCourses(Set likedCourses) {
+ this.likedCourses = likedCourses;
+ }
+
public Set getRatings() {
return ratings;
}
+ public void setRatings(Set ratings) {
+ this.ratings = ratings;
+ }
+
public Set getRegistrations() {
return registrations;
}
+ public void setRegistrations(Set registrations) {
+ this.registrations = registrations;
+ }
+
@Override
public int hashCode() {
final int prime = 31;
diff --git a/persistence-modules/spring-jpa-2/src/main/resources/context.xml b/persistence-modules/spring-jpa-2/src/main/resources/context.xml
deleted file mode 100644
index a64dfe9a61..0000000000
--- a/persistence-modules/spring-jpa-2/src/main/resources/context.xml
+++ /dev/null
@@ -1 +0,0 @@
-
\ No newline at end of file
diff --git a/persistence-modules/spring-jpa-2/src/main/resources/logback.xml b/persistence-modules/spring-jpa-2/src/main/resources/logback.xml
deleted file mode 100644
index ec0dc2469a..0000000000
--- a/persistence-modules/spring-jpa-2/src/main/resources/logback.xml
+++ /dev/null
@@ -1,19 +0,0 @@
-
-
-
-
- web - %date [%thread] %-5level %logger{36} - %message%n
-
-
-
-
-
-
-
-
-
-
-
-
-
-
\ No newline at end of file
diff --git a/persistence-modules/spring-jpa-2/src/main/resources/persistence-h2.properties b/persistence-modules/spring-jpa-2/src/main/resources/persistence-h2.properties
deleted file mode 100644
index a3060cc796..0000000000
--- a/persistence-modules/spring-jpa-2/src/main/resources/persistence-h2.properties
+++ /dev/null
@@ -1,10 +0,0 @@
-# jdbc.X
-jdbc.driverClassName=org.h2.Driver
-jdbc.url=jdbc:h2:mem:db;DB_CLOSE_DELAY=-1
-jdbc.user=sa
-jdbc.pass=
-
-# hibernate.X
-hibernate.dialect=org.hibernate.dialect.H2Dialect
-hibernate.show_sql=true
-hibernate.hbm2ddl.auto=create-drop
\ No newline at end of file
diff --git a/persistence-modules/spring-jpa-2/src/main/resources/persistence-student.properties b/persistence-modules/spring-jpa-2/src/main/resources/persistence-student.properties
deleted file mode 100644
index d4c82420de..0000000000
--- a/persistence-modules/spring-jpa-2/src/main/resources/persistence-student.properties
+++ /dev/null
@@ -1,11 +0,0 @@
-jdbc.driverClassName=com.mysql.cj.jdbc.Driver
-jdbc.url=jdbc:mysql://localhost:3306/myDb
-jdbc.user=tutorialuser
-jdbc.pass=tutorialpass
-
-hibernate.dialect=org.hibernate.dialect.MySQL5Dialect
-hibernate.show_sql=true
-hibernate.hbm2ddl.auto=create-drop
-
-hibernate.cache.use_second_level_cache=false
-hibernate.cache.use_query_cache=false
\ No newline at end of file
diff --git a/persistence-modules/spring-jpa-2/src/main/resources/persistence.xml b/persistence-modules/spring-jpa-2/src/main/resources/persistence.xml
deleted file mode 100644
index 57687c306d..0000000000
--- a/persistence-modules/spring-jpa-2/src/main/resources/persistence.xml
+++ /dev/null
@@ -1,42 +0,0 @@
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- ${hibernate.hbm2ddl.auto}
- ${hibernate.dialect}
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
\ No newline at end of file
diff --git a/persistence-modules/spring-jpa-2/src/main/resources/server.xml b/persistence-modules/spring-jpa-2/src/main/resources/server.xml
deleted file mode 100644
index 5c61659018..0000000000
--- a/persistence-modules/spring-jpa-2/src/main/resources/server.xml
+++ /dev/null
@@ -1,6 +0,0 @@
-
-
-
\ No newline at end of file
diff --git a/persistence-modules/spring-jpa-2/src/main/resources/sqlfiles.properties b/persistence-modules/spring-jpa-2/src/main/resources/sqlfiles.properties
deleted file mode 100644
index 0bea6adad1..0000000000
--- a/persistence-modules/spring-jpa-2/src/main/resources/sqlfiles.properties
+++ /dev/null
@@ -1 +0,0 @@
-spring.jpa.hibernate.ddl-auto=none
\ No newline at end of file
diff --git a/persistence-modules/spring-jpa-2/src/test/java/META-INF/persistence.xml b/persistence-modules/spring-jpa-2/src/test/java/META-INF/persistence.xml
deleted file mode 100644
index 495f076fef..0000000000
--- a/persistence-modules/spring-jpa-2/src/test/java/META-INF/persistence.xml
+++ /dev/null
@@ -1,20 +0,0 @@
-
-
-
- com.baeldung.persistence.model.Foo
- com.baeldung.persistence.model.Bar
-
-
-
-
-
-
-
-
-
-
-
-
-
diff --git a/persistence-modules/spring-jpa-2/src/test/java/com/baeldung/SpringContextTest.java b/persistence-modules/spring-jpa-2/src/test/java/com/baeldung/SpringContextTest.java
deleted file mode 100644
index abc73e250d..0000000000
--- a/persistence-modules/spring-jpa-2/src/test/java/com/baeldung/SpringContextTest.java
+++ /dev/null
@@ -1,21 +0,0 @@
-package com.baeldung;
-
-import com.baeldung.config.PersistenceJPAConfig;
-import org.junit.Test;
-import org.junit.runner.RunWith;
-import org.springframework.test.annotation.DirtiesContext;
-import org.springframework.test.context.ContextConfiguration;
-import org.springframework.test.context.junit4.SpringJUnit4ClassRunner;
-import org.springframework.test.context.support.AnnotationConfigContextLoader;
-import org.springframework.test.context.web.WebAppConfiguration;
-
-@RunWith(SpringJUnit4ClassRunner.class)
-@ContextConfiguration(classes = { PersistenceJPAConfig.class }, loader = AnnotationConfigContextLoader.class)
-@WebAppConfiguration
-@DirtiesContext
-public class SpringContextTest {
-
- @Test
- public void whenSpringContextIsBootstrapped_thenNoExceptions() {
- }
-}
diff --git a/persistence-modules/spring-jpa-2/src/test/java/com/baeldung/manytomany/ManyToManyIntegrationTest.java b/persistence-modules/spring-jpa-2/src/test/java/com/baeldung/manytomany/ManyToManyIntegrationTest.java
index 5e4334f5d4..f5b02ec2c1 100644
--- a/persistence-modules/spring-jpa-2/src/test/java/com/baeldung/manytomany/ManyToManyIntegrationTest.java
+++ b/persistence-modules/spring-jpa-2/src/test/java/com/baeldung/manytomany/ManyToManyIntegrationTest.java
@@ -1,17 +1,27 @@
package com.baeldung.manytomany;
-import javax.persistence.EntityManager;
-import javax.persistence.PersistenceContext;
-
+import com.baeldung.manytomany.model.Course;
+import com.baeldung.manytomany.model.CourseRating;
+import com.baeldung.manytomany.model.CourseRatingKey;
+import com.baeldung.manytomany.model.Student;
import org.junit.Test;
import org.junit.runner.RunWith;
import org.springframework.test.annotation.DirtiesContext;
import org.springframework.test.context.ContextConfiguration;
import org.springframework.test.context.junit4.SpringRunner;
+import org.springframework.transaction.annotation.Transactional;
+
+import javax.persistence.EntityManager;
+import javax.persistence.PersistenceContext;
+
+import static org.hamcrest.CoreMatchers.is;
+import static org.hamcrest.CoreMatchers.notNullValue;
+import static org.junit.Assert.assertThat;
@RunWith(SpringRunner.class)
@ContextConfiguration(classes = ManyToManyTestConfiguration.class)
@DirtiesContext
+@Transactional
public class ManyToManyIntegrationTest {
@PersistenceContext
@@ -21,4 +31,25 @@ public class ManyToManyIntegrationTest {
public void contextStarted() {
}
+ @Test
+ public void whenCourseRatingPersisted_thenCorrect() {
+ Student student = new Student(101L);
+ entityManager.persist(student);
+
+ Course course = new Course(201L);
+ entityManager.persist(course);
+
+ CourseRating courseRating = new CourseRating();
+ courseRating.setId(new CourseRatingKey());
+ courseRating.setStudent(student);
+ courseRating.setCourse(course);
+ courseRating.setRating(100);
+ entityManager.persist(courseRating);
+
+ CourseRating persistedCourseRating = entityManager.find(CourseRating.class, new CourseRatingKey(101L, 201L));
+
+ assertThat(persistedCourseRating, notNullValue());
+ assertThat(persistedCourseRating.getStudent().getId(), is(101L));
+ assertThat(persistedCourseRating.getCourse().getId(), is(201L));
+ }
}
diff --git a/persistence-modules/spring-jpa-2/src/test/java/com/baeldung/manytomany/ManyToManyTestConfiguration.java b/persistence-modules/spring-jpa-2/src/test/java/com/baeldung/manytomany/ManyToManyTestConfiguration.java
index 1cc3621f0d..fa12828074 100644
--- a/persistence-modules/spring-jpa-2/src/test/java/com/baeldung/manytomany/ManyToManyTestConfiguration.java
+++ b/persistence-modules/spring-jpa-2/src/test/java/com/baeldung/manytomany/ManyToManyTestConfiguration.java
@@ -1,20 +1,21 @@
package com.baeldung.manytomany;
-import java.util.HashMap;
-import java.util.Map;
-
-import javax.sql.DataSource;
-
import org.springframework.beans.factory.annotation.Value;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import org.springframework.context.annotation.PropertySource;
import org.springframework.jdbc.datasource.embedded.EmbeddedDatabaseBuilder;
import org.springframework.jdbc.datasource.embedded.EmbeddedDatabaseType;
+import org.springframework.orm.jpa.JpaTransactionManager;
import org.springframework.orm.jpa.JpaVendorAdapter;
import org.springframework.orm.jpa.LocalContainerEntityManagerFactoryBean;
import org.springframework.orm.jpa.vendor.HibernateJpaVendorAdapter;
+import javax.persistence.EntityManagerFactory;
+import javax.sql.DataSource;
+import java.util.HashMap;
+import java.util.Map;
+
@Configuration
@PropertySource("manytomany/test.properties")
public class ManyToManyTestConfiguration {
@@ -23,8 +24,8 @@ public class ManyToManyTestConfiguration {
public DataSource dataSource() {
EmbeddedDatabaseBuilder dbBuilder = new EmbeddedDatabaseBuilder();
return dbBuilder.setType(EmbeddedDatabaseType.H2)
- .addScript("classpath:/manytomany/db.sql")
- .build();
+ .addScript("classpath:/manytomany/db.sql")
+ .build();
}
@Bean
@@ -44,6 +45,13 @@ public class ManyToManyTestConfiguration {
return result;
}
+ @Bean
+ JpaTransactionManager transactionManager(EntityManagerFactory entityManagerFactory) {
+ JpaTransactionManager transactionManager = new JpaTransactionManager();
+ transactionManager.setEntityManagerFactory(entityManagerFactory);
+ return transactionManager;
+ }
+
public JpaVendorAdapter jpaVendorAdapter() {
return new HibernateJpaVendorAdapter();
}
diff --git a/persistence-modules/spring-jpa-2/src/test/resources/persistence-student.properties b/persistence-modules/spring-jpa-2/src/test/resources/persistence-student.properties
deleted file mode 100644
index 3b6b580630..0000000000
--- a/persistence-modules/spring-jpa-2/src/test/resources/persistence-student.properties
+++ /dev/null
@@ -1,9 +0,0 @@
-jdbc.driverClassName=org.h2.Driver
-jdbc.url=jdbc:h2:mem:myDb;DB_CLOSE_DELAY=-1
-
-hibernate.dialect=org.hibernate.dialect.H2Dialect
-hibernate.show_sql=true
-hibernate.hbm2ddl.auto=create
-
-hibernate.cache.use_second_level_cache=false
-hibernate.cache.use_query_cache=false
\ No newline at end of file
diff --git a/persistence-modules/spring-jpa/README.md b/persistence-modules/spring-jpa/README.md
index 3eb8ae8d55..f60609e0de 100644
--- a/persistence-modules/spring-jpa/README.md
+++ b/persistence-modules/spring-jpa/README.md
@@ -1,7 +1,4 @@
-=========
-
-## Spring JPA Example Project
-
+## Spring JPA (1)
### Relevant Articles:
- [The DAO with JPA and Spring](https://www.baeldung.com/spring-dao-jpa)
@@ -10,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/pom.xml b/pom.xml
index 3565c2dc4b..ffdfe4cffa 100644
--- a/pom.xml
+++ b/pom.xml
@@ -701,6 +701,7 @@
spring-rest-compress
spring-rest-hal-browser
spring-rest-http
+ spring-rest-http-2
spring-rest-query-language
spring-rest-shell
spring-rest-simple
diff --git a/quarkus/pom.xml b/quarkus/pom.xml
index 09eb90d110..67356abdef 100644
--- a/quarkus/pom.xml
+++ b/quarkus/pom.xml
@@ -30,9 +30,48 @@
io.quarkus
quarkus-resteasy
+
+ io.quarkus
+ quarkus-resteasy-jackson
+ ${quarkus.version}
+
+
+ io.quarkus
+ quarkus-hibernate-orm-panache
+ ${quarkus.version}
+
+
+ io.quarkus
+ quarkus-jdbc-h2
+ ${quarkus.version}
+
+
+ org.apache.commons
+ commons-lang3
+ 3.9
+
+
+ org.projectlombok
+ lombok
+ 1.18.6
+ provided
+
io.quarkus
quarkus-junit5
+ ${quarkus.version}
+ test
+
+
+ io.quarkus
+ quarkus-junit5-mockito
+ ${quarkus.version}
+ test
+
+
+ io.quarkus
+ quarkus-test-h2
+ ${quarkus.version}
test
@@ -117,7 +156,8 @@
2.22.0
- 0.15.0
+ 1.7.0.Final
+ 5.6.0
diff --git a/quarkus/src/main/java/com/baeldung/quarkus/LibraryResource.java b/quarkus/src/main/java/com/baeldung/quarkus/LibraryResource.java
new file mode 100644
index 0000000000..88c3f0ed6e
--- /dev/null
+++ b/quarkus/src/main/java/com/baeldung/quarkus/LibraryResource.java
@@ -0,0 +1,25 @@
+package com.baeldung.quarkus;
+
+import com.baeldung.quarkus.model.Book;
+import com.baeldung.quarkus.service.LibraryService;
+
+import javax.inject.Inject;
+import javax.ws.rs.*;
+import javax.ws.rs.core.MediaType;
+import java.util.Set;
+
+@Path("/library")
+@Produces(MediaType.APPLICATION_JSON)
+@Consumes(MediaType.APPLICATION_JSON)
+public class LibraryResource {
+
+ @Inject
+ LibraryService libraryService;
+
+ @GET
+ @Path("/book")
+ public Set findBooks(@QueryParam("query") String query) {
+ return libraryService.find(query);
+ }
+
+}
diff --git a/quarkus/src/main/java/com/baeldung/quarkus/model/Book.java b/quarkus/src/main/java/com/baeldung/quarkus/model/Book.java
new file mode 100644
index 0000000000..7d258c1934
--- /dev/null
+++ b/quarkus/src/main/java/com/baeldung/quarkus/model/Book.java
@@ -0,0 +1,17 @@
+package com.baeldung.quarkus.model;
+
+import io.quarkus.hibernate.orm.panache.PanacheEntity;
+import lombok.*;
+
+import javax.persistence.Entity;
+
+@Data
+@Entity
+@AllArgsConstructor
+@EqualsAndHashCode(callSuper = true)
+@NoArgsConstructor(access = AccessLevel.PROTECTED)
+public class Book extends PanacheEntity {
+ private String title;
+ private String author;
+}
+
diff --git a/quarkus/src/main/java/com/baeldung/quarkus/repository/BookRepository.java b/quarkus/src/main/java/com/baeldung/quarkus/repository/BookRepository.java
new file mode 100644
index 0000000000..b142fa569b
--- /dev/null
+++ b/quarkus/src/main/java/com/baeldung/quarkus/repository/BookRepository.java
@@ -0,0 +1,18 @@
+package com.baeldung.quarkus.repository;
+
+import com.baeldung.quarkus.model.Book;
+import io.quarkus.hibernate.orm.panache.PanacheRepository;
+
+import javax.enterprise.context.ApplicationScoped;
+import java.util.stream.Stream;
+
+import static io.quarkus.panache.common.Parameters.with;
+
+@ApplicationScoped
+public class BookRepository implements PanacheRepository {
+
+ public Stream findBy(String query) {
+ return find("author like :query or title like :query", with("query", "%"+query+"%")).stream();
+ }
+
+}
diff --git a/quarkus/src/main/java/com/baeldung/quarkus/service/LibraryService.java b/quarkus/src/main/java/com/baeldung/quarkus/service/LibraryService.java
new file mode 100644
index 0000000000..be687589bf
--- /dev/null
+++ b/quarkus/src/main/java/com/baeldung/quarkus/service/LibraryService.java
@@ -0,0 +1,28 @@
+package com.baeldung.quarkus.service;
+
+import com.baeldung.quarkus.model.Book;
+import com.baeldung.quarkus.repository.BookRepository;
+
+import javax.enterprise.context.ApplicationScoped;
+import javax.inject.Inject;
+import javax.transaction.Transactional;
+import java.util.Set;
+
+import static java.util.stream.Collectors.toSet;
+
+@Transactional
+@ApplicationScoped
+public class LibraryService {
+
+ @Inject
+ BookRepository bookRepository;
+
+ public Set find(String query) {
+ if (query == null) {
+ return bookRepository.findAll().stream().collect(toSet());
+ }
+
+ return bookRepository.findBy(query).collect(toSet());
+ }
+
+}
diff --git a/quarkus/src/main/resources/application.properties b/quarkus/src/main/resources/application.properties
index 3f05d2198f..283cf763b9 100644
--- a/quarkus/src/main/resources/application.properties
+++ b/quarkus/src/main/resources/application.properties
@@ -1,3 +1,12 @@
# Configuration file
# key = value
-greeting=Good morning
\ No newline at end of file
+greeting=Good morning
+
+quarkus.datasource.db-kind = h2
+quarkus.datasource.jdbc.url = jdbc:h2:tcp://localhost/mem:test
+
+quarkus.hibernate-orm.database.generation = drop-and-create
+
+%custom-profile.quarkus.datasource.jdbc.url = jdbc:h2:file:./testdb
+
+quarkus.http.test-port=0
diff --git a/quarkus/src/test/java/com/baeldung/quarkus/CustomLibraryResourceManualTest.java b/quarkus/src/test/java/com/baeldung/quarkus/CustomLibraryResourceManualTest.java
new file mode 100644
index 0000000000..b9175ae457
--- /dev/null
+++ b/quarkus/src/test/java/com/baeldung/quarkus/CustomLibraryResourceManualTest.java
@@ -0,0 +1,27 @@
+package com.baeldung.quarkus;
+
+import com.baeldung.quarkus.utils.CustomTestProfile;
+import io.quarkus.test.junit.QuarkusTest;
+import io.quarkus.test.junit.TestProfile;
+import io.restassured.http.ContentType;
+import org.junit.jupiter.api.Test;
+
+import static io.restassured.RestAssured.given;
+import static org.hamcrest.CoreMatchers.is;
+import static org.hamcrest.Matchers.hasItems;
+
+@QuarkusTest
+@TestProfile(CustomTestProfile.class)
+class CustomLibraryResourceManualTest {
+
+ public static final String BOOKSTORE_ENDPOINT = "/custom/library/book";
+
+ @Test
+ void whenGetBooksGivenNoQuery_thenAllBooksShouldBeReturned() {
+ given().contentType(ContentType.JSON)
+ .when().get(BOOKSTORE_ENDPOINT)
+ .then().statusCode(200)
+ .body("size()", is(2))
+ .body("title", hasItems("Foundation", "Dune"));
+ }
+}
diff --git a/quarkus/src/test/java/com/baeldung/quarkus/LibraryHttpEndpointIntegrationTest.java b/quarkus/src/test/java/com/baeldung/quarkus/LibraryHttpEndpointIntegrationTest.java
new file mode 100644
index 0000000000..f3a30a2383
--- /dev/null
+++ b/quarkus/src/test/java/com/baeldung/quarkus/LibraryHttpEndpointIntegrationTest.java
@@ -0,0 +1,21 @@
+package com.baeldung.quarkus;
+
+import io.quarkus.test.common.http.TestHTTPEndpoint;
+import io.quarkus.test.junit.QuarkusTest;
+import io.restassured.http.ContentType;
+import org.junit.jupiter.api.Test;
+
+import static io.restassured.RestAssured.given;
+
+@QuarkusTest
+@TestHTTPEndpoint(LibraryResource.class)
+class LibraryHttpEndpointIntegrationTest {
+
+ @Test
+ void whenGetBooks_thenShouldReturnSuccessfully() {
+ given().contentType(ContentType.JSON)
+ .when().get("book")
+ .then().statusCode(200);
+ }
+
+}
diff --git a/quarkus/src/test/java/com/baeldung/quarkus/LibraryResourceHttpResourceIntegrationTest.java b/quarkus/src/test/java/com/baeldung/quarkus/LibraryResourceHttpResourceIntegrationTest.java
new file mode 100644
index 0000000000..1931460aaa
--- /dev/null
+++ b/quarkus/src/test/java/com/baeldung/quarkus/LibraryResourceHttpResourceIntegrationTest.java
@@ -0,0 +1,40 @@
+package com.baeldung.quarkus;
+
+import io.quarkus.test.common.http.TestHTTPEndpoint;
+import io.quarkus.test.common.http.TestHTTPResource;
+import io.quarkus.test.junit.QuarkusTest;
+import io.restassured.http.ContentType;
+import org.apache.commons.io.IOUtils;
+import org.junit.jupiter.api.Test;
+
+import java.io.IOException;
+import java.net.URL;
+
+import static io.restassured.RestAssured.given;
+import static java.nio.charset.Charset.defaultCharset;
+import static org.hamcrest.CoreMatchers.is;
+import static org.hamcrest.Matchers.hasItem;
+import static org.junit.jupiter.api.Assertions.assertTrue;
+
+@QuarkusTest
+class LibraryResourceHttpResourceIntegrationTest {
+
+ @TestHTTPEndpoint(LibraryResource.class)
+ @TestHTTPResource("book")
+ URL libraryEndpoint;
+
+ @Test
+ void whenGetBooksByTitle_thenBookShouldBeFound() {
+ given().contentType(ContentType.JSON).param("query", "Dune")
+ .when().get(libraryEndpoint)
+ .then().statusCode(200)
+ .body("size()", is(1))
+ .body("title", hasItem("Dune"))
+ .body("author", hasItem("Frank Herbert"));
+ }
+
+ @Test
+ void whenGetBooks_thenBooksShouldBeFound() throws IOException {
+ assertTrue(IOUtils.toString(libraryEndpoint.openStream(), defaultCharset()).contains("Asimov"));
+ }
+}
diff --git a/quarkus/src/test/java/com/baeldung/quarkus/LibraryResourceInjectSpyIntegrationTest.java b/quarkus/src/test/java/com/baeldung/quarkus/LibraryResourceInjectSpyIntegrationTest.java
new file mode 100644
index 0000000000..48ec1786fa
--- /dev/null
+++ b/quarkus/src/test/java/com/baeldung/quarkus/LibraryResourceInjectSpyIntegrationTest.java
@@ -0,0 +1,27 @@
+package com.baeldung.quarkus;
+
+import com.baeldung.quarkus.service.LibraryService;
+import io.quarkus.test.junit.QuarkusTest;
+import io.quarkus.test.junit.mockito.InjectSpy;
+import io.restassured.http.ContentType;
+import org.junit.jupiter.api.Test;
+
+import static io.restassured.RestAssured.given;
+import static org.mockito.Mockito.verify;
+
+@QuarkusTest
+class LibraryResourceInjectSpyIntegrationTest {
+
+ @InjectSpy
+ LibraryService libraryService;
+
+ @Test
+ void whenGetBooksByAuthor_thenBookShouldBeFound() {
+ given().contentType(ContentType.JSON).param("query", "Asimov")
+ .when().get("/library/book")
+ .then().statusCode(200);
+
+ verify(libraryService).find("Asimov");
+ }
+
+}
diff --git a/quarkus/src/test/java/com/baeldung/quarkus/LibraryResourceIntegrationTest.java b/quarkus/src/test/java/com/baeldung/quarkus/LibraryResourceIntegrationTest.java
new file mode 100644
index 0000000000..28eba8da44
--- /dev/null
+++ b/quarkus/src/test/java/com/baeldung/quarkus/LibraryResourceIntegrationTest.java
@@ -0,0 +1,24 @@
+package com.baeldung.quarkus;
+
+import io.quarkus.test.junit.QuarkusTest;
+import io.restassured.http.ContentType;
+import org.junit.jupiter.api.Test;
+
+import static io.restassured.RestAssured.given;
+import static org.hamcrest.CoreMatchers.is;
+import static org.hamcrest.Matchers.hasItem;
+
+@QuarkusTest
+class LibraryResourceIntegrationTest {
+
+ @Test
+ void whenGetBooksByTitle_thenBookShouldBeFound() {
+ given().contentType(ContentType.JSON).param("query", "Dune")
+ .when().get("/library/book")
+ .then().statusCode(200)
+ .body("size()", is(1))
+ .body("title", hasItem("Dune"))
+ .body("author", hasItem("Frank Herbert"));
+ }
+
+}
diff --git a/quarkus/src/test/java/com/baeldung/quarkus/NativeHelloResourceIT.java b/quarkus/src/test/java/com/baeldung/quarkus/NativeHelloResourceIT.java
index 9ada64b6a5..e6c8a3b8fb 100644
--- a/quarkus/src/test/java/com/baeldung/quarkus/NativeHelloResourceIT.java
+++ b/quarkus/src/test/java/com/baeldung/quarkus/NativeHelloResourceIT.java
@@ -1,8 +1,11 @@
package com.baeldung.quarkus;
-import io.quarkus.test.junit.SubstrateTest;
+import io.quarkus.test.common.QuarkusTestResource;
+import io.quarkus.test.h2.H2DatabaseTestResource;
+import io.quarkus.test.junit.NativeImageTest;
-@SubstrateTest
+@NativeImageTest
+@QuarkusTestResource(H2DatabaseTestResource.class)
public class NativeHelloResourceIT extends HelloResourceUnitTest {
// Execute the same tests but in native mode.
diff --git a/quarkus/src/test/java/com/baeldung/quarkus/NativeLibraryResourceIT.java b/quarkus/src/test/java/com/baeldung/quarkus/NativeLibraryResourceIT.java
new file mode 100644
index 0000000000..0c11fa6fb4
--- /dev/null
+++ b/quarkus/src/test/java/com/baeldung/quarkus/NativeLibraryResourceIT.java
@@ -0,0 +1,10 @@
+package com.baeldung.quarkus;
+
+import io.quarkus.test.common.QuarkusTestResource;
+import io.quarkus.test.h2.H2DatabaseTestResource;
+import io.quarkus.test.junit.NativeImageTest;
+
+@NativeImageTest
+@QuarkusTestResource(H2DatabaseTestResource.class)
+class NativeLibraryResourceIT extends LibraryHttpEndpointIntegrationTest {
+}
diff --git a/quarkus/src/test/java/com/baeldung/quarkus/repository/BookRepositoryIntegrationTest.java b/quarkus/src/test/java/com/baeldung/quarkus/repository/BookRepositoryIntegrationTest.java
new file mode 100644
index 0000000000..7d811b2268
--- /dev/null
+++ b/quarkus/src/test/java/com/baeldung/quarkus/repository/BookRepositoryIntegrationTest.java
@@ -0,0 +1,20 @@
+package com.baeldung.quarkus.repository;
+
+import com.baeldung.quarkus.utils.QuarkusTransactionalTest;
+import org.junit.jupiter.api.Test;
+
+import javax.inject.Inject;
+
+import static org.junit.jupiter.api.Assertions.assertTrue;
+
+@QuarkusTransactionalTest
+class BookRepositoryIntegrationTest {
+
+ @Inject
+ BookRepository bookRepository;
+
+ @Test
+ void givenBookInRepository_whenFindByAuthor_thenShouldReturnBookFromRepository() {
+ assertTrue(bookRepository.findBy("Herbert").findAny().isPresent());
+ }
+}
diff --git a/quarkus/src/test/java/com/baeldung/quarkus/service/LibraryServiceInjectMockUnitTest.java b/quarkus/src/test/java/com/baeldung/quarkus/service/LibraryServiceInjectMockUnitTest.java
new file mode 100644
index 0000000000..f0b7260c7d
--- /dev/null
+++ b/quarkus/src/test/java/com/baeldung/quarkus/service/LibraryServiceInjectMockUnitTest.java
@@ -0,0 +1,38 @@
+package com.baeldung.quarkus.service;
+
+import com.baeldung.quarkus.model.Book;
+import com.baeldung.quarkus.repository.BookRepository;
+import io.quarkus.test.junit.QuarkusTest;
+import io.quarkus.test.junit.mockito.InjectMock;
+import org.junit.jupiter.api.BeforeEach;
+import org.junit.jupiter.api.Test;
+
+import javax.inject.Inject;
+import java.util.Arrays;
+
+import static org.junit.jupiter.api.Assertions.assertEquals;
+import static org.mockito.Mockito.when;
+
+@QuarkusTest
+class LibraryServiceInjectMockUnitTest {
+
+ @Inject
+ LibraryService libraryService;
+
+ @InjectMock
+ BookRepository bookRepository;
+
+ @BeforeEach
+ void setUp() {
+ when(bookRepository.findBy("Frank Herbert"))
+ .thenReturn(Arrays.stream(new Book[] {
+ new Book("Dune", "Frank Herbert"),
+ new Book("Children of Dune", "Frank Herbert")}));
+ }
+
+ @Test
+ void whenFindByAuthor_thenBooksShouldBeFound() {
+ assertEquals(2, libraryService.find("Frank Herbert").size());
+ }
+
+}
diff --git a/quarkus/src/test/java/com/baeldung/quarkus/service/LibraryServiceIntegrationTest.java b/quarkus/src/test/java/com/baeldung/quarkus/service/LibraryServiceIntegrationTest.java
new file mode 100644
index 0000000000..16cce4d726
--- /dev/null
+++ b/quarkus/src/test/java/com/baeldung/quarkus/service/LibraryServiceIntegrationTest.java
@@ -0,0 +1,21 @@
+package com.baeldung.quarkus.service;
+
+import io.quarkus.test.junit.QuarkusTest;
+import org.junit.jupiter.api.Test;
+
+import javax.inject.Inject;
+
+import static org.junit.jupiter.api.Assertions.assertFalse;
+
+@QuarkusTest
+class LibraryServiceIntegrationTest {
+
+ @Inject
+ LibraryService libraryService;
+
+ @Test
+ void whenFindByAuthor_thenBookShouldBeFound() {
+ assertFalse(libraryService.find("Frank Herbert").isEmpty());
+ }
+
+}
diff --git a/quarkus/src/test/java/com/baeldung/quarkus/service/LibraryServiceQuarkusMockUnitTest.java b/quarkus/src/test/java/com/baeldung/quarkus/service/LibraryServiceQuarkusMockUnitTest.java
new file mode 100644
index 0000000000..e2d40a0a0b
--- /dev/null
+++ b/quarkus/src/test/java/com/baeldung/quarkus/service/LibraryServiceQuarkusMockUnitTest.java
@@ -0,0 +1,38 @@
+package com.baeldung.quarkus.service;
+
+import com.baeldung.quarkus.model.Book;
+import com.baeldung.quarkus.repository.BookRepository;
+import com.baeldung.quarkus.utils.TestBookRepository;
+import io.quarkus.test.junit.QuarkusMock;
+import io.quarkus.test.junit.QuarkusTest;
+import org.junit.jupiter.api.BeforeEach;
+import org.junit.jupiter.api.Test;
+import org.mockito.Mockito;
+
+import javax.inject.Inject;
+import java.util.Arrays;
+
+import static org.junit.jupiter.api.Assertions.assertEquals;
+
+@QuarkusTest
+class LibraryServiceQuarkusMockUnitTest {
+
+ @Inject
+ LibraryService libraryService;
+
+ @BeforeEach
+ void setUp() {
+ BookRepository mock = Mockito.mock(TestBookRepository.class);
+ Mockito.when(mock.findBy("Asimov"))
+ .thenReturn(Arrays.stream(new Book[] {
+ new Book("Foundation", "Isaac Asimov"),
+ new Book("I Robot", "Isaac Asimov")}));
+ QuarkusMock.installMockForType(mock, BookRepository.class);
+ }
+
+ @Test
+ void whenFindByAuthor_thenBooksShouldBeFound() {
+ assertEquals(2, libraryService.find("Asimov").size());
+ }
+
+}
diff --git a/quarkus/src/test/java/com/baeldung/quarkus/utils/CustomTestProfile.java b/quarkus/src/test/java/com/baeldung/quarkus/utils/CustomTestProfile.java
new file mode 100644
index 0000000000..75fb736acc
--- /dev/null
+++ b/quarkus/src/test/java/com/baeldung/quarkus/utils/CustomTestProfile.java
@@ -0,0 +1,26 @@
+package com.baeldung.quarkus.utils;
+
+import io.quarkus.test.junit.QuarkusTestProfile;
+
+import java.util.Collections;
+import java.util.Map;
+import java.util.Set;
+
+public class CustomTestProfile implements QuarkusTestProfile {
+
+ @Override
+ public Map getConfigOverrides() {
+ return Collections.singletonMap("quarkus.resteasy.path", "/custom");
+ }
+
+ @Override
+ public Set> getEnabledAlternatives() {
+ return Collections.singleton(TestBookRepository.class);
+ }
+
+ @Override
+ public String getConfigProfile() {
+ return "custom-profile";
+ }
+
+}
diff --git a/quarkus/src/test/java/com/baeldung/quarkus/utils/QuarkusTransactionalTest.java b/quarkus/src/test/java/com/baeldung/quarkus/utils/QuarkusTransactionalTest.java
new file mode 100644
index 0000000000..d02cff2662
--- /dev/null
+++ b/quarkus/src/test/java/com/baeldung/quarkus/utils/QuarkusTransactionalTest.java
@@ -0,0 +1,18 @@
+package com.baeldung.quarkus.utils;
+
+import io.quarkus.test.junit.QuarkusTest;
+
+import javax.enterprise.inject.Stereotype;
+import javax.transaction.Transactional;
+import java.lang.annotation.ElementType;
+import java.lang.annotation.Retention;
+import java.lang.annotation.RetentionPolicy;
+import java.lang.annotation.Target;
+
+@QuarkusTest
+@Stereotype
+@Transactional
+@Target(ElementType.TYPE)
+@Retention(RetentionPolicy.RUNTIME)
+public @interface QuarkusTransactionalTest {
+}
diff --git a/quarkus/src/test/java/com/baeldung/quarkus/utils/TestBookRepository.java b/quarkus/src/test/java/com/baeldung/quarkus/utils/TestBookRepository.java
new file mode 100644
index 0000000000..baaa9fd005
--- /dev/null
+++ b/quarkus/src/test/java/com/baeldung/quarkus/utils/TestBookRepository.java
@@ -0,0 +1,22 @@
+package com.baeldung.quarkus.utils;
+
+import com.baeldung.quarkus.model.Book;
+import com.baeldung.quarkus.repository.BookRepository;
+
+import javax.annotation.PostConstruct;
+import javax.annotation.Priority;
+import javax.enterprise.context.ApplicationScoped;
+import javax.enterprise.inject.Alternative;
+
+@Priority(1)
+@Alternative
+@ApplicationScoped
+public class TestBookRepository extends BookRepository {
+
+ @PostConstruct
+ public void init() {
+ persist(new Book("Dune", "Frank Herbert"),
+ new Book("Foundation", "Isaac Asimov"));
+ }
+
+}
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-cognito/pom.xml b/spring-5-security-cognito/pom.xml
index 8d03b91ce0..5f8f328086 100644
--- a/spring-5-security-cognito/pom.xml
+++ b/spring-5-security-cognito/pom.xml
@@ -34,11 +34,6 @@
-
- org.springframework.security.oauth.boot
- spring-security-oauth2-autoconfigure
- ${oauth-auto.version}
-
org.springframework.security
spring-security-oauth2-client
@@ -62,10 +57,8 @@
test
-
+
- 2.1.0.RELEASE
- 2.1.0.RELEASE
com.baeldung.cognito.SpringCognitoApplication
diff --git a/spring-5-security-cognito/src/main/java/com/baeldung/cognito/CognitoWebConfiguration.java b/spring-5-security-cognito/src/main/java/com/baeldung/cognito/CognitoWebConfiguration.java
index 6841fa7a65..df35a46ef3 100644
--- a/spring-5-security-cognito/src/main/java/com/baeldung/cognito/CognitoWebConfiguration.java
+++ b/spring-5-security-cognito/src/main/java/com/baeldung/cognito/CognitoWebConfiguration.java
@@ -1,12 +1,10 @@
package com.baeldung.cognito;
import org.springframework.context.annotation.Configuration;
-import org.springframework.context.annotation.PropertySource;
import org.springframework.web.servlet.config.annotation.ViewControllerRegistry;
import org.springframework.web.servlet.config.annotation.WebMvcConfigurer;
@Configuration
-@PropertySource("cognito/application-cognito.yml")
public class CognitoWebConfiguration implements WebMvcConfigurer {
@Override
diff --git a/spring-5-security-cognito/src/main/java/com/baeldung/cognito/SecurityConfiguration.java b/spring-5-security-cognito/src/main/java/com/baeldung/cognito/SecurityConfiguration.java
new file mode 100644
index 0000000000..ba0436d20d
--- /dev/null
+++ b/spring-5-security-cognito/src/main/java/com/baeldung/cognito/SecurityConfiguration.java
@@ -0,0 +1,23 @@
+package com.baeldung.cognito;
+
+import org.springframework.context.annotation.Configuration;
+import org.springframework.security.config.annotation.web.builders.HttpSecurity;
+import org.springframework.security.config.annotation.web.configuration.WebSecurityConfigurerAdapter;
+
+@Configuration
+public class SecurityConfiguration extends WebSecurityConfigurerAdapter {
+
+ @Override
+ protected void configure(HttpSecurity http) throws Exception {
+ http.csrf()
+ .and()
+ .authorizeRequests(authz -> authz.mvcMatchers("/")
+ .permitAll()
+ .anyRequest()
+ .authenticated())
+ .oauth2Login()
+ .and()
+ .logout()
+ .logoutSuccessUrl("/");
+ }
+}
\ No newline at end of file
diff --git a/spring-5-security-cognito/src/main/java/com/baeldung/cognito/SpringCognitoApplication.java b/spring-5-security-cognito/src/main/java/com/baeldung/cognito/SpringCognitoApplication.java
index eebe6d8f45..fc55de590c 100644
--- a/spring-5-security-cognito/src/main/java/com/baeldung/cognito/SpringCognitoApplication.java
+++ b/spring-5-security-cognito/src/main/java/com/baeldung/cognito/SpringCognitoApplication.java
@@ -2,10 +2,8 @@ package com.baeldung.cognito;
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
-import org.springframework.context.annotation.PropertySource;
@SpringBootApplication
-@PropertySource("cognito/application-cognito.yml")
public class SpringCognitoApplication {
public static void main(String[] args) {
diff --git a/spring-5-security-cognito/src/main/resources/application.yml b/spring-5-security-cognito/src/main/resources/application.yml
new file mode 100644
index 0000000000..e53a2642e0
--- /dev/null
+++ b/spring-5-security-cognito/src/main/resources/application.yml
@@ -0,0 +1,15 @@
+spring:
+ security:
+ oauth2:
+ client:
+ registration:
+ cognito:
+ client-id: your_clientId
+ client-secret: your_clientSecret
+ scope: openid
+ redirect-uri: http://localhost:8080/login/oauth2/code/cognito
+ clientName: your_clientName
+ provider:
+ cognito:
+ issuerUri: https://cognito-idp.{region}.amazonaws.com/{poolId}
+ user-name-attribute: cognito:username
diff --git a/spring-5-security-cognito/src/main/resources/cognito/application-cognito.yml b/spring-5-security-cognito/src/main/resources/cognito/application-cognito.yml
deleted file mode 100644
index 0a28dbccb4..0000000000
--- a/spring-5-security-cognito/src/main/resources/cognito/application-cognito.yml
+++ /dev/null
@@ -1,15 +0,0 @@
-spring:
- security:
- oauth2:
- client:
- registration:
- cognito:
- client-id: clientId
- client-secret: clientSecret
- scope: openid
- redirectUriTemplate: "http://localhost:8080/login/oauth2/code/cognito"
- clientName: cognito-client-name
- provider:
- cognito:
- issuerUri: https://cognito-idp.{region}.amazonaws.com/{poolId}
- usernameAttribute: cognito:username
diff --git a/spring-5-security-cognito/src/main/resources/cognito/home.html b/spring-5-security-cognito/src/main/resources/cognito/home.html
deleted file mode 100644
index f0bd9e52a8..0000000000
--- a/spring-5-security-cognito/src/main/resources/cognito/home.html
+++ /dev/null
@@ -1,32 +0,0 @@
-
-
-
-
-
- OAuth2 Cognito Demo
-
-
-
-
-
-
-
-
-
OAuth2 Spring Security Cognito Demo
-
-
-
-
-
-
-
-
-
diff --git a/spring-5-security-cognito/src/main/resources/cognito/style.css b/spring-5-security-cognito/src/main/resources/cognito/style.css
deleted file mode 100644
index 45190d6d70..0000000000
--- a/spring-5-security-cognito/src/main/resources/cognito/style.css
+++ /dev/null
@@ -1,9 +0,0 @@
-.login {
- background-color: #7289da;
- color: #fff;
-}
-
-.login:hover {
- background-color: #697ec4;
- color: #fff;
-}
diff --git a/spring-5-security-cognito/src/main/resources/templates/home.html b/spring-5-security-cognito/src/main/resources/templates/home.html
new file mode 100644
index 0000000000..df3c86fe2a
--- /dev/null
+++ b/spring-5-security-cognito/src/main/resources/templates/home.html
@@ -0,0 +1,35 @@
+
+
+
+
+
+OAuth2 Cognito Demo
+
+
+
+
+
+
+
+
OAuth2 Spring Security Cognito Demo
+
+
+
+
+
+
+
+
+
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-5-webflux/.gitignore b/spring-5-webflux/.gitignore
index aa4871eeea..4dff7c9a4b 100644
--- a/spring-5-webflux/.gitignore
+++ b/spring-5-webflux/.gitignore
@@ -1,2 +1,2 @@
# Files #
-*.log
\ No newline at end of file
+*.log
diff --git a/spring-5-webflux/src/main/java/com/baeldung/spring/asyncvsflux/AsyncVsWebFluxApp.java b/spring-5-webflux/src/main/java/com/baeldung/spring/asyncvsflux/AsyncVsWebFluxApp.java
new file mode 100644
index 0000000000..5ae6784536
--- /dev/null
+++ b/spring-5-webflux/src/main/java/com/baeldung/spring/asyncvsflux/AsyncVsWebFluxApp.java
@@ -0,0 +1,11 @@
+package com.baeldung.spring.asyncvsflux;
+
+import org.springframework.boot.SpringApplication;
+import org.springframework.boot.autoconfigure.SpringBootApplication;
+
+@SpringBootApplication
+public class AsyncVsWebFluxApp {
+ public static void main(String[] args) {
+ SpringApplication.run(AsyncVsWebFluxApp.class, args);
+ }
+}
\ No newline at end of file
diff --git a/spring-5-webflux/src/main/java/com/baeldung/spring/asyncvsflux/WebFluxController.java b/spring-5-webflux/src/main/java/com/baeldung/spring/asyncvsflux/WebFluxController.java
new file mode 100644
index 0000000000..8ef1ef3e7e
--- /dev/null
+++ b/spring-5-webflux/src/main/java/com/baeldung/spring/asyncvsflux/WebFluxController.java
@@ -0,0 +1,17 @@
+package com.baeldung.spring.asyncvsflux;
+
+import java.time.Duration;
+import org.springframework.http.server.reactive.ServerHttpRequest;
+import org.springframework.web.bind.annotation.GetMapping;
+import org.springframework.web.bind.annotation.RestController;
+import reactor.core.publisher.Mono;
+
+@RestController
+public class WebFluxController {
+
+ @GetMapping("/flux_result")
+ public Mono getResult(ServerHttpRequest request) {
+ return Mono.defer(() -> Mono.just("Result is ready!"))
+ .delaySubscription(Duration.ofMillis(500));
+ }
+}
diff --git a/spring-5-webflux/src/main/java/com/baeldung/spring/asyncvsflux/WebFluxFilter.java b/spring-5-webflux/src/main/java/com/baeldung/spring/asyncvsflux/WebFluxFilter.java
new file mode 100644
index 0000000000..3a78047ab8
--- /dev/null
+++ b/spring-5-webflux/src/main/java/com/baeldung/spring/asyncvsflux/WebFluxFilter.java
@@ -0,0 +1,20 @@
+package com.baeldung.spring.asyncvsflux;
+
+import java.time.Duration;
+import org.springframework.stereotype.Component;
+import org.springframework.web.server.ServerWebExchange;
+import org.springframework.web.server.WebFilterChain;
+import reactor.core.publisher.Mono;
+
+@Component
+public class WebFluxFilter implements org.springframework.web.server.WebFilter {
+
+ @Override
+ public Mono filter(ServerWebExchange serverWebExchange, WebFilterChain webFilterChain) {
+ return Mono
+ .delay(Duration.ofMillis(200))
+ .then(
+ webFilterChain.filter(serverWebExchange)
+ );
+ }
+}
\ No newline at end of file
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-autoconfiguration/src/main/java/com/baeldung/conditionalonproperty/NotificationApplication.java b/spring-boot-modules/spring-boot-autoconfiguration/src/main/java/com/baeldung/conditionalonproperty/NotificationApplication.java
new file mode 100644
index 0000000000..977de5534d
--- /dev/null
+++ b/spring-boot-modules/spring-boot-autoconfiguration/src/main/java/com/baeldung/conditionalonproperty/NotificationApplication.java
@@ -0,0 +1,12 @@
+package com.baeldung.conditionalonproperty;
+
+import org.springframework.boot.SpringApplication;
+import org.springframework.boot.autoconfigure.SpringBootApplication;
+
+@SpringBootApplication
+public class NotificationApplication {
+
+ public static void main(String[] args) {
+ SpringApplication.run(NotificationApplication.class, args);
+ }
+}
diff --git a/spring-boot-modules/spring-boot-autoconfiguration/src/main/java/com/baeldung/conditionalonproperty/config/NotificationConfig.java b/spring-boot-modules/spring-boot-autoconfiguration/src/main/java/com/baeldung/conditionalonproperty/config/NotificationConfig.java
new file mode 100644
index 0000000000..ffd942cd02
--- /dev/null
+++ b/spring-boot-modules/spring-boot-autoconfiguration/src/main/java/com/baeldung/conditionalonproperty/config/NotificationConfig.java
@@ -0,0 +1,26 @@
+package com.baeldung.conditionalonproperty.config;
+
+import org.springframework.boot.autoconfigure.condition.ConditionalOnProperty;
+import org.springframework.context.annotation.Bean;
+import org.springframework.context.annotation.Configuration;
+
+import com.baeldung.conditionalonproperty.service.EmailNotification;
+import com.baeldung.conditionalonproperty.service.NotificationSender;
+import com.baeldung.conditionalonproperty.service.SmsNotification;
+
+@Configuration
+public class NotificationConfig {
+
+ @Bean(name = "emailNotification")
+ @ConditionalOnProperty(prefix = "notification", name = "service", havingValue = "email")
+ public NotificationSender notificationSender() {
+ return new EmailNotification();
+ }
+
+ @Bean(name = "smsNotification")
+ @ConditionalOnProperty(prefix = "notification", name = "service", havingValue = "sms")
+ public NotificationSender notificationSender2() {
+ return new SmsNotification();
+ }
+
+}
diff --git a/spring-boot-modules/spring-boot-autoconfiguration/src/main/java/com/baeldung/conditionalonproperty/service/EmailNotification.java b/spring-boot-modules/spring-boot-autoconfiguration/src/main/java/com/baeldung/conditionalonproperty/service/EmailNotification.java
new file mode 100644
index 0000000000..c66800f817
--- /dev/null
+++ b/spring-boot-modules/spring-boot-autoconfiguration/src/main/java/com/baeldung/conditionalonproperty/service/EmailNotification.java
@@ -0,0 +1,10 @@
+package com.baeldung.conditionalonproperty.service;
+
+public class EmailNotification implements NotificationSender {
+
+ @Override
+ public String send(String message) {
+ return "Email Notification: " + message;
+ }
+
+}
diff --git a/spring-boot-modules/spring-boot-autoconfiguration/src/main/java/com/baeldung/conditionalonproperty/service/NotificationSender.java b/spring-boot-modules/spring-boot-autoconfiguration/src/main/java/com/baeldung/conditionalonproperty/service/NotificationSender.java
new file mode 100644
index 0000000000..945306e7c4
--- /dev/null
+++ b/spring-boot-modules/spring-boot-autoconfiguration/src/main/java/com/baeldung/conditionalonproperty/service/NotificationSender.java
@@ -0,0 +1,5 @@
+package com.baeldung.conditionalonproperty.service;
+
+public interface NotificationSender {
+ String send(String message);
+}
diff --git a/spring-boot-modules/spring-boot-autoconfiguration/src/main/java/com/baeldung/conditionalonproperty/service/SmsNotification.java b/spring-boot-modules/spring-boot-autoconfiguration/src/main/java/com/baeldung/conditionalonproperty/service/SmsNotification.java
new file mode 100644
index 0000000000..dcf611da19
--- /dev/null
+++ b/spring-boot-modules/spring-boot-autoconfiguration/src/main/java/com/baeldung/conditionalonproperty/service/SmsNotification.java
@@ -0,0 +1,10 @@
+package com.baeldung.conditionalonproperty.service;
+
+public class SmsNotification implements NotificationSender {
+
+ @Override
+ public String send(String message) {
+ return "SMS notification: " + message;
+ }
+
+}
diff --git a/spring-boot-modules/spring-boot-autoconfiguration/src/main/resources/application.properties b/spring-boot-modules/spring-boot-autoconfiguration/src/main/resources/application.properties
index 4456c78e5d..03f753abf9 100644
--- a/spring-boot-modules/spring-boot-autoconfiguration/src/main/resources/application.properties
+++ b/spring-boot-modules/spring-boot-autoconfiguration/src/main/resources/application.properties
@@ -1,2 +1,4 @@
spring.jpa.show-sql=true
spring.jpa.hibernate.ddl-auto = update
+
+notification.service=email
diff --git a/spring-boot-modules/spring-boot-autoconfiguration/src/test/java/com/baeldung/conditionalonproperty/NotificationUnitTest.java b/spring-boot-modules/spring-boot-autoconfiguration/src/test/java/com/baeldung/conditionalonproperty/NotificationUnitTest.java
new file mode 100644
index 0000000000..fb9b177e5f
--- /dev/null
+++ b/spring-boot-modules/spring-boot-autoconfiguration/src/test/java/com/baeldung/conditionalonproperty/NotificationUnitTest.java
@@ -0,0 +1,27 @@
+package com.baeldung.conditionalonproperty;
+
+import static org.assertj.core.api.Assertions.assertThat;
+
+import org.junit.jupiter.api.Test;
+import org.springframework.boot.test.context.runner.ApplicationContextRunner;
+
+import com.baeldung.conditionalonproperty.config.NotificationConfig;
+import com.baeldung.conditionalonproperty.service.EmailNotification;
+import com.baeldung.conditionalonproperty.service.NotificationSender;
+
+public class NotificationUnitTest {
+
+ private final ApplicationContextRunner contextRunner = new ApplicationContextRunner();
+
+ @Test
+ public void whenValueSetToEmail_thenCreateEmailNotification() {
+ this.contextRunner.withPropertyValues("notification.service=email")
+ .withUserConfiguration(NotificationConfig.class)
+ .run(context -> {
+ assertThat(context).hasBean("emailNotification");
+ NotificationSender notificationSender = context.getBean(EmailNotification.class);
+ assertThat(notificationSender.send("Hello From Baeldung!")).isEqualTo("Email Notification: Hello From Baeldung!");
+ assertThat(context).doesNotHaveBean("smsNotification");
+ });
+ }
+}
diff --git a/spring-boot-modules/spring-boot-basic-customization/pom.xml b/spring-boot-modules/spring-boot-basic-customization/pom.xml
index 2a4b321c5f..fc34994a85 100644
--- a/spring-boot-modules/spring-boot-basic-customization/pom.xml
+++ b/spring-boot-modules/spring-boot-basic-customization/pom.xml
@@ -4,13 +4,11 @@
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
4.0.0
-
- org.springframework.boot
- spring-boot-starter-parent
- 2.3.2.RELEASE
-
+ com.baeldung.spring-boot-modules
+ spring-boot-modules
+ 1.0.0-SNAPSHOT
+ ../
spring-boot-basic-customization
diff --git a/spring-boot-modules/spring-boot-custom-starter/pom.xml b/spring-boot-modules/spring-boot-custom-starter/pom.xml
index 17f9fdc2cc..338bf22f46 100644
--- a/spring-boot-modules/spring-boot-custom-starter/pom.xml
+++ b/spring-boot-modules/spring-boot-custom-starter/pom.xml
@@ -18,6 +18,7 @@
greeter-library
+ greeter
greeter-spring-boot-autoconfigure
greeter-spring-boot-starter
greeter-spring-boot-sample-app
diff --git a/spring-boot-modules/spring-boot-mvc-3/src/main/java/com/baeldung/asyncvsflux/AsyncController.java b/spring-boot-modules/spring-boot-mvc-3/src/main/java/com/baeldung/asyncvsflux/AsyncController.java
new file mode 100644
index 0000000000..ece06f3fc5
--- /dev/null
+++ b/spring-boot-modules/spring-boot-mvc-3/src/main/java/com/baeldung/asyncvsflux/AsyncController.java
@@ -0,0 +1,23 @@
+package com.baeldung.asyncvsflux;
+
+import java.util.concurrent.CompletableFuture;
+import javax.servlet.http.HttpServletRequest;
+import org.springframework.scheduling.annotation.Async;
+import org.springframework.web.bind.annotation.GetMapping;
+import org.springframework.web.bind.annotation.RestController;
+
+@RestController
+public class AsyncController {
+
+ @GetMapping("/async_result")
+ @Async
+ public CompletableFuture getResultAsyc(HttpServletRequest request) {
+ try {
+ Thread.sleep(500);
+ } catch (InterruptedException e) {
+ e.printStackTrace();
+ }
+ return CompletableFuture.completedFuture("Result is ready!");
+ }
+
+}
diff --git a/spring-boot-modules/spring-boot-mvc-3/src/main/java/com/baeldung/asyncvsflux/AsyncFilter.java b/spring-boot-modules/spring-boot-mvc-3/src/main/java/com/baeldung/asyncvsflux/AsyncFilter.java
new file mode 100644
index 0000000000..5a8ac4d9df
--- /dev/null
+++ b/spring-boot-modules/spring-boot-mvc-3/src/main/java/com/baeldung/asyncvsflux/AsyncFilter.java
@@ -0,0 +1,34 @@
+package com.baeldung.asyncvsflux;
+
+import java.io.IOException;
+import javax.servlet.Filter;
+import javax.servlet.FilterChain;
+import javax.servlet.FilterConfig;
+import javax.servlet.ServletException;
+import javax.servlet.ServletRequest;
+import javax.servlet.ServletResponse;
+import org.springframework.stereotype.Component;
+
+@Component
+public class AsyncFilter implements Filter {
+
+ @Override
+ public void init(FilterConfig filterConfig) throws ServletException {
+
+ }
+
+ @Override
+ public void doFilter(ServletRequest servletRequest, ServletResponse servletResponse, FilterChain filterChain) throws IOException, ServletException {
+ try {
+ Thread.sleep(200);
+ } catch (InterruptedException e) {
+ e.printStackTrace();
+ }
+ filterChain.doFilter(servletRequest, servletResponse);
+ }
+
+ @Override
+ public void destroy() {
+
+ }
+}
diff --git a/spring-boot-modules/spring-boot-mvc-3/src/main/java/com/baeldung/asyncvsflux/AsyncVsWebFluxApp.java b/spring-boot-modules/spring-boot-mvc-3/src/main/java/com/baeldung/asyncvsflux/AsyncVsWebFluxApp.java
new file mode 100644
index 0000000000..3905199468
--- /dev/null
+++ b/spring-boot-modules/spring-boot-mvc-3/src/main/java/com/baeldung/asyncvsflux/AsyncVsWebFluxApp.java
@@ -0,0 +1,13 @@
+package com.baeldung.asyncvsflux;
+
+import org.springframework.boot.SpringApplication;
+import org.springframework.boot.autoconfigure.SpringBootApplication;
+import org.springframework.scheduling.annotation.EnableAsync;
+
+@SpringBootApplication
+@EnableAsync
+public class AsyncVsWebFluxApp {
+ public static void main(String[] args) {
+ SpringApplication.run(AsyncVsWebFluxApp.class, args);
+ }
+}
\ No newline at end of file
diff --git a/spring-boot-modules/spring-boot-mvc/pom.xml b/spring-boot-modules/spring-boot-mvc/pom.xml
index 9ae6d8341a..39046ee6d9 100644
--- a/spring-boot-modules/spring-boot-mvc/pom.xml
+++ b/spring-boot-modules/spring-boot-mvc/pom.xml
@@ -49,6 +49,10 @@
org.springframework.boot
spring-boot-starter-data-jpa
+
+ org.springframework.boot
+ spring-boot-starter-data-rest
+
mysql
@@ -99,24 +103,7 @@
io.springfox
- springfox-swagger2
- ${spring.fox.version}
-
-
- io.springfox
- springfox-swagger-ui
- ${spring.fox.version}
-
-
-
- io.springfox
- springfox-data-rest
- ${spring.fox.version}
-
-
-
- io.springfox
- springfox-bean-validators
+ springfox-boot-starter
${spring.fox.version}
diff --git a/spring-boot-modules/spring-boot-mvc/src/main/java/com/baeldung/swagger2boot/configuration/SpringFoxConfig.java b/spring-boot-modules/spring-boot-mvc/src/main/java/com/baeldung/swagger2boot/configuration/SpringFoxConfig.java
index 434a8d77cb..b404b0c2f8 100644
--- a/spring-boot-modules/spring-boot-mvc/src/main/java/com/baeldung/swagger2boot/configuration/SpringFoxConfig.java
+++ b/spring-boot-modules/spring-boot-mvc/src/main/java/com/baeldung/swagger2boot/configuration/SpringFoxConfig.java
@@ -1,13 +1,9 @@
package com.baeldung.swagger2boot.configuration;
-import org.springframework.boot.autoconfigure.domain.EntityScan;
+import com.baeldung.swagger2boot.plugin.EmailAnnotationPlugin;
import org.springframework.context.annotation.Bean;
-import org.springframework.context.annotation.ComponentScan;
import org.springframework.context.annotation.Configuration;
import org.springframework.context.annotation.Import;
-
-import com.baeldung.swagger2boot.plugin.EmailAnnotationPlugin;
-
import springfox.bean.validators.configuration.BeanValidatorPluginsConfiguration;
import springfox.documentation.builders.PathSelectors;
import springfox.documentation.builders.RequestHandlerSelectors;
@@ -16,13 +12,16 @@ import springfox.documentation.service.Contact;
import springfox.documentation.spi.DocumentationType;
import springfox.documentation.spring.data.rest.configuration.SpringDataRestConfiguration;
import springfox.documentation.spring.web.plugins.Docket;
-import springfox.documentation.swagger.web.*;
-import springfox.documentation.swagger2.annotations.EnableSwagger2WebMvc;
+import springfox.documentation.swagger.web.DocExpansion;
+import springfox.documentation.swagger.web.ModelRendering;
+import springfox.documentation.swagger.web.OperationsSorter;
+import springfox.documentation.swagger.web.TagsSorter;
+import springfox.documentation.swagger.web.UiConfiguration;
+import springfox.documentation.swagger.web.UiConfigurationBuilder;
import java.util.Collections;
@Configuration
-@EnableSwagger2WebMvc
@Import({SpringDataRestConfiguration.class, BeanValidatorPluginsConfiguration.class})
public class SpringFoxConfig {
@@ -43,8 +42,8 @@ public class SpringFoxConfig {
return new Docket(DocumentationType.SWAGGER_2)
.apiInfo(apiInfo())
.select()
- .apis(RequestHandlerSelectors.any())
- .paths(PathSelectors.any())
+ .apis(RequestHandlerSelectors.any())
+ .paths(PathSelectors.any())
.build();
}
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/pom.xml b/spring-cloud/pom.xml
index 0e2cac1ff9..99fde0daf4 100644
--- a/spring-cloud/pom.xml
+++ b/spring-cloud/pom.xml
@@ -41,6 +41,8 @@
spring-cloud-zuul
spring-cloud-zuul-fallback
spring-cloud-ribbon-retry
+ spring-cloud-circuit-breaker
+ spring-cloud-eureka-self-preservation
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-cloud/spring-cloud-stream/pom.xml b/spring-cloud/spring-cloud-stream/pom.xml
index ebaaab0801..17c788c000 100644
--- a/spring-cloud/spring-cloud-stream/pom.xml
+++ b/spring-cloud/spring-cloud-stream/pom.xml
@@ -14,7 +14,9 @@
+ spring-cloud-stream-kafka
spring-cloud-stream-rabbit
+ spring-cloud-stream-kinesis
diff --git a/spring-cloud/spring-cloud-stream/spring-cloud-stream-kinesis/pom.xml b/spring-cloud/spring-cloud-stream/spring-cloud-stream-kinesis/pom.xml
index bb515fcb36..9e706cc239 100644
--- a/spring-cloud/spring-cloud-stream/spring-cloud-stream-kinesis/pom.xml
+++ b/spring-cloud/spring-cloud-stream/spring-cloud-stream-kinesis/pom.xml
@@ -41,7 +41,7 @@
1.11.632
- 1.2.1.RELEASE
+ 2.0.2.RELEASE
2.2.1.RELEASE
diff --git a/spring-core-2/src/main/java/com/baeldung/springevents/synchronous/CustomSpringEventPublisher.java b/spring-core-2/src/main/java/com/baeldung/springevents/synchronous/CustomSpringEventPublisher.java
index e4d7fcdc99..0ed06afd00 100644
--- a/spring-core-2/src/main/java/com/baeldung/springevents/synchronous/CustomSpringEventPublisher.java
+++ b/spring-core-2/src/main/java/com/baeldung/springevents/synchronous/CustomSpringEventPublisher.java
@@ -10,7 +10,7 @@ public class CustomSpringEventPublisher {
@Autowired
private ApplicationEventPublisher applicationEventPublisher;
- public void publishEvent(final String message) {
+ public void publishCustomEvent(final String message) {
System.out.println("Publishing custom event. ");
final CustomSpringEvent customSpringEvent = new CustomSpringEvent(this, message);
applicationEventPublisher.publishEvent(customSpringEvent);
diff --git a/spring-core-2/src/test/java/com/baeldung/springevents/asynchronous/AsynchronousCustomSpringEventsIntegrationTest.java b/spring-core-2/src/test/java/com/baeldung/springevents/asynchronous/AsynchronousCustomSpringEventsIntegrationTest.java
index 4f8035bcbe..d41f0114ca 100644
--- a/spring-core-2/src/test/java/com/baeldung/springevents/asynchronous/AsynchronousCustomSpringEventsIntegrationTest.java
+++ b/spring-core-2/src/test/java/com/baeldung/springevents/asynchronous/AsynchronousCustomSpringEventsIntegrationTest.java
@@ -17,7 +17,7 @@ public class AsynchronousCustomSpringEventsIntegrationTest {
@Test
public void testCustomSpringEvents() throws InterruptedException {
- publisher.publishEvent("Hello world!!");
+ publisher.publishCustomEvent("Hello world!!");
System.out.println("Done publishing asynchronous custom event. ");
}
}
diff --git a/spring-core-2/src/test/java/com/baeldung/springevents/synchronous/SynchronousCustomSpringEventsIntegrationTest.java b/spring-core-2/src/test/java/com/baeldung/springevents/synchronous/SynchronousCustomSpringEventsIntegrationTest.java
index 1d624d2289..d4d718f980 100644
--- a/spring-core-2/src/test/java/com/baeldung/springevents/synchronous/SynchronousCustomSpringEventsIntegrationTest.java
+++ b/spring-core-2/src/test/java/com/baeldung/springevents/synchronous/SynchronousCustomSpringEventsIntegrationTest.java
@@ -22,7 +22,7 @@ public class SynchronousCustomSpringEventsIntegrationTest {
@Test
public void testCustomSpringEvents() {
isTrue(!listener.isHitCustomEventHandler(), "The value should be false");
- publisher.publishEvent("Hello world!!");
+ publisher.publishCustomEvent("Hello world!!");
System.out.println("Done publishing synchronous custom event. ");
isTrue(listener.isHitCustomEventHandler(), "Now the value should be changed to true");
}
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-rest-http-2/README.md b/spring-rest-http-2/README.md
new file mode 100644
index 0000000000..74ec59e0b5
--- /dev/null
+++ b/spring-rest-http-2/README.md
@@ -0,0 +1,10 @@
+## Spring REST HTTP 2
+
+This module contains articles about HTTP in REST APIs with Spring
+
+### The Course
+The "REST With Spring 2" Classes: http://bit.ly/restwithspring
+
+### Relevant Articles:
+
+
diff --git a/spring-rest-http-2/pom.xml b/spring-rest-http-2/pom.xml
new file mode 100644
index 0000000000..8678d7243d
--- /dev/null
+++ b/spring-rest-http-2/pom.xml
@@ -0,0 +1,38 @@
+
+
+ 4.0.0
+ spring-rest-http-2
+ 0.1-SNAPSHOT
+ spring-rest-http-2
+ war
+
+
+ com.baeldung
+ parent-boot-2
+ 0.0.1-SNAPSHOT
+ ../parent-boot-2
+
+
+
+
+ org.springframework.boot
+ spring-boot-starter-web
+
+
+ io.springfox
+ springfox-swagger2
+ ${swagger2.version}
+
+
+ io.springfox
+ springfox-swagger-ui
+ ${swagger2.version}
+
+
+
+
+ 2.9.2
+
+
+
diff --git a/spring-rest-http-2/src/main/java/com/baeldung/SpringBootRest2Application.java b/spring-rest-http-2/src/main/java/com/baeldung/SpringBootRest2Application.java
new file mode 100644
index 0000000000..f8127f3686
--- /dev/null
+++ b/spring-rest-http-2/src/main/java/com/baeldung/SpringBootRest2Application.java
@@ -0,0 +1,12 @@
+package com.baeldung;
+
+import org.springframework.boot.SpringApplication;
+import org.springframework.boot.autoconfigure.SpringBootApplication;
+
+@SpringBootApplication
+public class SpringBootRest2Application {
+
+ public static void main(String[] args) {
+ SpringApplication.run(SpringBootRest2Application.class, args);
+ }
+}
diff --git a/spring-rest-http-2/src/main/java/com/baeldung/swaggerui/disable/config/SwaggerConfig.java b/spring-rest-http-2/src/main/java/com/baeldung/swaggerui/disable/config/SwaggerConfig.java
new file mode 100644
index 0000000000..8a9a921036
--- /dev/null
+++ b/spring-rest-http-2/src/main/java/com/baeldung/swaggerui/disable/config/SwaggerConfig.java
@@ -0,0 +1,38 @@
+package com.baeldung.swaggerui.disable.config;
+
+import org.springframework.boot.autoconfigure.condition.ConditionalOnExpression;
+import org.springframework.context.annotation.Bean;
+import org.springframework.context.annotation.Configuration;
+import org.springframework.context.annotation.Profile;
+import org.springframework.web.servlet.config.annotation.ResourceHandlerRegistry;
+import org.springframework.web.servlet.config.annotation.WebMvcConfigurer;
+import springfox.documentation.builders.PathSelectors;
+import springfox.documentation.builders.RequestHandlerSelectors;
+import springfox.documentation.spi.DocumentationType;
+import springfox.documentation.spring.web.plugins.Docket;
+import springfox.documentation.swagger2.annotations.EnableSwagger2;
+
+@Profile("!prod")
+// @Profile("swagger")
+// @Profile("!prod && swagger")
+// @ConditionalOnExpression(value = "${useSwagger:false}")
+@Configuration
+@EnableSwagger2
+public class SwaggerConfig implements WebMvcConfigurer {
+
+ @Bean
+ public Docket api() {
+ return new Docket(DocumentationType.SWAGGER_2).select()
+ .apis(RequestHandlerSelectors.basePackage("com.baeldung"))
+ .paths(PathSelectors.regex("/.*"))
+ .build();
+ }
+
+ @Override
+ public void addResourceHandlers(ResourceHandlerRegistry registry) {
+ registry.addResourceHandler("swagger-ui.html")
+ .addResourceLocations("classpath:/META-INF/resources/");
+ registry.addResourceHandler("/webjars/**")
+ .addResourceLocations("classpath:/META-INF/resources/webjars/");
+ }
+}
diff --git a/spring-rest-http-2/src/main/java/com/baeldung/swaggerui/disable/controllers/VersionController.java b/spring-rest-http-2/src/main/java/com/baeldung/swaggerui/disable/controllers/VersionController.java
new file mode 100644
index 0000000000..8f8115197e
--- /dev/null
+++ b/spring-rest-http-2/src/main/java/com/baeldung/swaggerui/disable/controllers/VersionController.java
@@ -0,0 +1,40 @@
+package com.baeldung.swaggerui.disable.controllers;
+
+import io.swagger.annotations.ApiOperation;
+import org.springframework.core.env.Environment;
+import org.springframework.web.bind.annotation.GetMapping;
+import org.springframework.web.bind.annotation.RestController;
+
+@RestController
+public class VersionController {
+
+ private final Environment environment;
+
+ public VersionController(Environment environment) {
+ this.environment = environment;
+ }
+
+ @ApiOperation(value = "Get the currently deployed API version and active Spring profiles")
+ @GetMapping("/api/version")
+ public Version getVersion() {
+ return new Version("1.0", environment.getActiveProfiles());
+ }
+
+ private static class Version {
+ private final String version;
+ private String[] activeProfiles;
+
+ private Version(String version, String[] activeProfiles) {
+ this.version = version;
+ this.activeProfiles = activeProfiles;
+ }
+
+ public String getVersion() {
+ return version;
+ }
+
+ public String[] getActiveProfiles() {
+ return activeProfiles;
+ }
+ }
+}
diff --git a/spring-security-modules/pom.xml b/spring-security-modules/pom.xml
index d7b5844e6f..b68138964b 100644
--- a/spring-security-modules/pom.xml
+++ b/spring-security-modules/pom.xml
@@ -24,21 +24,20 @@
spring-security-web-boot-2
spring-security-web-mvc-custom
spring-security-web-digest-auth
- spring-security-mvc-jsonview
+ spring-security-web-jsonview
spring-security-ldap
- spring-security-mvc-login
- spring-security-mvc-persisted-remember-me
- spring-security-mvc-socket
+ spring-security-web-login
+ spring-security-web-persisted-remember-me
+ spring-security-web-sockets
spring-security-oidc
spring-security-okta
- spring-security-react
- spring-security-rest
- spring-security-rest-basic-auth
- spring-security-rest-custom
- spring-security-sso
- spring-security-stormpath
- spring-security-thymeleaf
- spring-security-x509
+ spring-security-web-react
+ spring-security-web-rest
+ spring-security-web-rest-basic-auth
+ spring-security-web-rest-custom
+ spring-security-oauth2-sso
+ spring-security-web-thymeleaf
+ spring-security-web-x509
spring-security-kotlin-dsl
diff --git a/spring-security-modules/spring-security-sso/README.md b/spring-security-modules/spring-security-oauth2-sso/README.md
similarity index 100%
rename from spring-security-modules/spring-security-sso/README.md
rename to spring-security-modules/spring-security-oauth2-sso/README.md
diff --git a/spring-security-modules/spring-security-sso/pom.xml b/spring-security-modules/spring-security-oauth2-sso/pom.xml
similarity index 92%
rename from spring-security-modules/spring-security-sso/pom.xml
rename to spring-security-modules/spring-security-oauth2-sso/pom.xml
index 4e5bb49aa3..ed4b1d64ba 100644
--- a/spring-security-modules/spring-security-sso/pom.xml
+++ b/spring-security-modules/spring-security-oauth2-sso/pom.xml
@@ -3,9 +3,9 @@
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
4.0.0
com.baeldung
- spring-security-sso
+ spring-security-oauth2-sso
1.0.0-SNAPSHOT
- spring-security-sso
+ spring-security-oauth2-sso
pom
diff --git a/spring-security-modules/spring-security-sso/spring-security-sso-auth-server/pom.xml b/spring-security-modules/spring-security-oauth2-sso/spring-security-sso-auth-server/pom.xml
similarity index 100%
rename from spring-security-modules/spring-security-sso/spring-security-sso-auth-server/pom.xml
rename to spring-security-modules/spring-security-oauth2-sso/spring-security-sso-auth-server/pom.xml
diff --git a/spring-security-modules/spring-security-sso/spring-security-sso-auth-server/src/main/java/com/baeldung/config/AuthServerConfig.java b/spring-security-modules/spring-security-oauth2-sso/spring-security-sso-auth-server/src/main/java/com/baeldung/config/AuthServerConfig.java
similarity index 100%
rename from spring-security-modules/spring-security-sso/spring-security-sso-auth-server/src/main/java/com/baeldung/config/AuthServerConfig.java
rename to spring-security-modules/spring-security-oauth2-sso/spring-security-sso-auth-server/src/main/java/com/baeldung/config/AuthServerConfig.java
diff --git a/spring-security-modules/spring-security-sso/spring-security-sso-auth-server/src/main/java/com/baeldung/config/AuthorizationServerApplication.java b/spring-security-modules/spring-security-oauth2-sso/spring-security-sso-auth-server/src/main/java/com/baeldung/config/AuthorizationServerApplication.java
similarity index 100%
rename from spring-security-modules/spring-security-sso/spring-security-sso-auth-server/src/main/java/com/baeldung/config/AuthorizationServerApplication.java
rename to spring-security-modules/spring-security-oauth2-sso/spring-security-sso-auth-server/src/main/java/com/baeldung/config/AuthorizationServerApplication.java
diff --git a/spring-security-modules/spring-security-sso/spring-security-sso-auth-server/src/main/java/com/baeldung/config/SecurityConfig.java b/spring-security-modules/spring-security-oauth2-sso/spring-security-sso-auth-server/src/main/java/com/baeldung/config/SecurityConfig.java
similarity index 100%
rename from spring-security-modules/spring-security-sso/spring-security-sso-auth-server/src/main/java/com/baeldung/config/SecurityConfig.java
rename to spring-security-modules/spring-security-oauth2-sso/spring-security-sso-auth-server/src/main/java/com/baeldung/config/SecurityConfig.java
diff --git a/spring-security-modules/spring-security-sso/spring-security-sso-auth-server/src/main/java/com/baeldung/config/UserController.java b/spring-security-modules/spring-security-oauth2-sso/spring-security-sso-auth-server/src/main/java/com/baeldung/config/UserController.java
similarity index 100%
rename from spring-security-modules/spring-security-sso/spring-security-sso-auth-server/src/main/java/com/baeldung/config/UserController.java
rename to spring-security-modules/spring-security-oauth2-sso/spring-security-sso-auth-server/src/main/java/com/baeldung/config/UserController.java
diff --git a/spring-security-modules/spring-security-sso/spring-security-sso-auth-server/src/main/resources/application.properties b/spring-security-modules/spring-security-oauth2-sso/spring-security-sso-auth-server/src/main/resources/application.properties
similarity index 100%
rename from spring-security-modules/spring-security-sso/spring-security-sso-auth-server/src/main/resources/application.properties
rename to spring-security-modules/spring-security-oauth2-sso/spring-security-sso-auth-server/src/main/resources/application.properties
diff --git a/spring-security-modules/spring-security-mvc-socket/src/main/resources/logback.xml b/spring-security-modules/spring-security-oauth2-sso/spring-security-sso-auth-server/src/main/resources/logback.xml
similarity index 100%
rename from spring-security-modules/spring-security-mvc-socket/src/main/resources/logback.xml
rename to spring-security-modules/spring-security-oauth2-sso/spring-security-sso-auth-server/src/main/resources/logback.xml
diff --git a/spring-security-modules/spring-security-sso/spring-security-sso-auth-server/src/test/java/com/baeldung/SpringContextTest.java b/spring-security-modules/spring-security-oauth2-sso/spring-security-sso-auth-server/src/test/java/com/baeldung/SpringContextTest.java
similarity index 100%
rename from spring-security-modules/spring-security-sso/spring-security-sso-auth-server/src/test/java/com/baeldung/SpringContextTest.java
rename to spring-security-modules/spring-security-oauth2-sso/spring-security-sso-auth-server/src/test/java/com/baeldung/SpringContextTest.java
diff --git a/spring-security-modules/spring-security-sso/spring-security-sso-auth-server/src/test/java/com/baeldung/UserInfoEndpointLiveTest.java b/spring-security-modules/spring-security-oauth2-sso/spring-security-sso-auth-server/src/test/java/com/baeldung/UserInfoEndpointLiveTest.java
similarity index 100%
rename from spring-security-modules/spring-security-sso/spring-security-sso-auth-server/src/test/java/com/baeldung/UserInfoEndpointLiveTest.java
rename to spring-security-modules/spring-security-oauth2-sso/spring-security-sso-auth-server/src/test/java/com/baeldung/UserInfoEndpointLiveTest.java
diff --git a/spring-security-modules/spring-security-sso/spring-security-sso-kerberos/.gitignore b/spring-security-modules/spring-security-oauth2-sso/spring-security-sso-kerberos/.gitignore
similarity index 100%
rename from spring-security-modules/spring-security-sso/spring-security-sso-kerberos/.gitignore
rename to spring-security-modules/spring-security-oauth2-sso/spring-security-sso-kerberos/.gitignore
diff --git a/spring-security-modules/spring-security-sso/spring-security-sso-kerberos/README.md b/spring-security-modules/spring-security-oauth2-sso/spring-security-sso-kerberos/README.md
similarity index 100%
rename from spring-security-modules/spring-security-sso/spring-security-sso-kerberos/README.md
rename to spring-security-modules/spring-security-oauth2-sso/spring-security-sso-kerberos/README.md
diff --git a/spring-security-modules/spring-security-sso/spring-security-sso-kerberos/pom.xml b/spring-security-modules/spring-security-oauth2-sso/spring-security-sso-kerberos/pom.xml
similarity index 100%
rename from spring-security-modules/spring-security-sso/spring-security-sso-kerberos/pom.xml
rename to spring-security-modules/spring-security-oauth2-sso/spring-security-sso-kerberos/pom.xml
diff --git a/spring-security-modules/spring-security-sso/spring-security-sso-kerberos/src/main/java/com/baeldung/intro/Application.java b/spring-security-modules/spring-security-oauth2-sso/spring-security-sso-kerberos/src/main/java/com/baeldung/intro/Application.java
similarity index 100%
rename from spring-security-modules/spring-security-sso/spring-security-sso-kerberos/src/main/java/com/baeldung/intro/Application.java
rename to spring-security-modules/spring-security-oauth2-sso/spring-security-sso-kerberos/src/main/java/com/baeldung/intro/Application.java
diff --git a/spring-security-modules/spring-security-sso/spring-security-sso-kerberos/src/main/java/com/baeldung/intro/config/WebSecurityConfig.java b/spring-security-modules/spring-security-oauth2-sso/spring-security-sso-kerberos/src/main/java/com/baeldung/intro/config/WebSecurityConfig.java
similarity index 100%
rename from spring-security-modules/spring-security-sso/spring-security-sso-kerberos/src/main/java/com/baeldung/intro/config/WebSecurityConfig.java
rename to spring-security-modules/spring-security-oauth2-sso/spring-security-sso-kerberos/src/main/java/com/baeldung/intro/config/WebSecurityConfig.java
diff --git a/spring-security-modules/spring-security-sso/spring-security-sso-kerberos/src/main/java/com/baeldung/intro/security/DummyUserDetailsService.java b/spring-security-modules/spring-security-oauth2-sso/spring-security-sso-kerberos/src/main/java/com/baeldung/intro/security/DummyUserDetailsService.java
similarity index 100%
rename from spring-security-modules/spring-security-sso/spring-security-sso-kerberos/src/main/java/com/baeldung/intro/security/DummyUserDetailsService.java
rename to spring-security-modules/spring-security-oauth2-sso/spring-security-sso-kerberos/src/main/java/com/baeldung/intro/security/DummyUserDetailsService.java
diff --git a/spring-security-modules/spring-security-sso/spring-security-sso-kerberos/src/main/java/kerberos/client/KerberosClientApp.java b/spring-security-modules/spring-security-oauth2-sso/spring-security-sso-kerberos/src/main/java/kerberos/client/KerberosClientApp.java
similarity index 100%
rename from spring-security-modules/spring-security-sso/spring-security-sso-kerberos/src/main/java/kerberos/client/KerberosClientApp.java
rename to spring-security-modules/spring-security-oauth2-sso/spring-security-sso-kerberos/src/main/java/kerberos/client/KerberosClientApp.java
diff --git a/spring-security-modules/spring-security-sso/spring-security-sso-kerberos/src/main/java/kerberos/client/SampleClient.java b/spring-security-modules/spring-security-oauth2-sso/spring-security-sso-kerberos/src/main/java/kerberos/client/SampleClient.java
similarity index 100%
rename from spring-security-modules/spring-security-sso/spring-security-sso-kerberos/src/main/java/kerberos/client/SampleClient.java
rename to spring-security-modules/spring-security-oauth2-sso/spring-security-sso-kerberos/src/main/java/kerberos/client/SampleClient.java
diff --git a/spring-security-modules/spring-security-sso/spring-security-sso-kerberos/src/main/java/kerberos/client/config/AppConfig.java b/spring-security-modules/spring-security-oauth2-sso/spring-security-sso-kerberos/src/main/java/kerberos/client/config/AppConfig.java
similarity index 100%
rename from spring-security-modules/spring-security-sso/spring-security-sso-kerberos/src/main/java/kerberos/client/config/AppConfig.java
rename to spring-security-modules/spring-security-oauth2-sso/spring-security-sso-kerberos/src/main/java/kerberos/client/config/AppConfig.java
diff --git a/spring-security-modules/spring-security-sso/spring-security-sso-kerberos/src/main/java/kerberos/client/config/KerberosConfig.java b/spring-security-modules/spring-security-oauth2-sso/spring-security-sso-kerberos/src/main/java/kerberos/client/config/KerberosConfig.java
similarity index 100%
rename from spring-security-modules/spring-security-sso/spring-security-sso-kerberos/src/main/java/kerberos/client/config/KerberosConfig.java
rename to spring-security-modules/spring-security-oauth2-sso/spring-security-sso-kerberos/src/main/java/kerberos/client/config/KerberosConfig.java
diff --git a/spring-security-modules/spring-security-sso/spring-security-sso-kerberos/src/main/java/kerberos/kdc/KerberosMiniKdc.java b/spring-security-modules/spring-security-oauth2-sso/spring-security-sso-kerberos/src/main/java/kerberos/kdc/KerberosMiniKdc.java
similarity index 100%
rename from spring-security-modules/spring-security-sso/spring-security-sso-kerberos/src/main/java/kerberos/kdc/KerberosMiniKdc.java
rename to spring-security-modules/spring-security-oauth2-sso/spring-security-sso-kerberos/src/main/java/kerberos/kdc/KerberosMiniKdc.java
diff --git a/spring-security-modules/spring-security-sso/spring-security-sso-kerberos/src/main/java/kerberos/kdc/MiniKdcConfigBuilder.java b/spring-security-modules/spring-security-oauth2-sso/spring-security-sso-kerberos/src/main/java/kerberos/kdc/MiniKdcConfigBuilder.java
similarity index 100%
rename from spring-security-modules/spring-security-sso/spring-security-sso-kerberos/src/main/java/kerberos/kdc/MiniKdcConfigBuilder.java
rename to spring-security-modules/spring-security-oauth2-sso/spring-security-sso-kerberos/src/main/java/kerberos/kdc/MiniKdcConfigBuilder.java
diff --git a/spring-security-modules/spring-security-sso/spring-security-sso-kerberos/src/main/java/kerberos/server/KerberizedServerApp.java b/spring-security-modules/spring-security-oauth2-sso/spring-security-sso-kerberos/src/main/java/kerberos/server/KerberizedServerApp.java
similarity index 100%
rename from spring-security-modules/spring-security-sso/spring-security-sso-kerberos/src/main/java/kerberos/server/KerberizedServerApp.java
rename to spring-security-modules/spring-security-oauth2-sso/spring-security-sso-kerberos/src/main/java/kerberos/server/KerberizedServerApp.java
diff --git a/spring-security-modules/spring-security-sso/spring-security-sso-kerberos/src/main/java/kerberos/server/config/MvcConfig.java b/spring-security-modules/spring-security-oauth2-sso/spring-security-sso-kerberos/src/main/java/kerberos/server/config/MvcConfig.java
similarity index 100%
rename from spring-security-modules/spring-security-sso/spring-security-sso-kerberos/src/main/java/kerberos/server/config/MvcConfig.java
rename to spring-security-modules/spring-security-oauth2-sso/spring-security-sso-kerberos/src/main/java/kerberos/server/config/MvcConfig.java
diff --git a/spring-security-modules/spring-security-sso/spring-security-sso-kerberos/src/main/java/kerberos/server/config/WebSecurityConfig.java b/spring-security-modules/spring-security-oauth2-sso/spring-security-sso-kerberos/src/main/java/kerberos/server/config/WebSecurityConfig.java
similarity index 100%
rename from spring-security-modules/spring-security-sso/spring-security-sso-kerberos/src/main/java/kerberos/server/config/WebSecurityConfig.java
rename to spring-security-modules/spring-security-oauth2-sso/spring-security-sso-kerberos/src/main/java/kerberos/server/config/WebSecurityConfig.java
diff --git a/spring-security-modules/spring-security-sso/spring-security-sso-kerberos/src/main/java/kerberos/server/controller/SampleController.java b/spring-security-modules/spring-security-oauth2-sso/spring-security-sso-kerberos/src/main/java/kerberos/server/controller/SampleController.java
similarity index 100%
rename from spring-security-modules/spring-security-sso/spring-security-sso-kerberos/src/main/java/kerberos/server/controller/SampleController.java
rename to spring-security-modules/spring-security-oauth2-sso/spring-security-sso-kerberos/src/main/java/kerberos/server/controller/SampleController.java
diff --git a/spring-security-modules/spring-security-sso/spring-security-sso-kerberos/src/main/java/kerberos/server/service/DummyUserDetailsService.java b/spring-security-modules/spring-security-oauth2-sso/spring-security-sso-kerberos/src/main/java/kerberos/server/service/DummyUserDetailsService.java
similarity index 100%
rename from spring-security-modules/spring-security-sso/spring-security-sso-kerberos/src/main/java/kerberos/server/service/DummyUserDetailsService.java
rename to spring-security-modules/spring-security-oauth2-sso/spring-security-sso-kerberos/src/main/java/kerberos/server/service/DummyUserDetailsService.java
diff --git a/spring-security-modules/spring-security-sso/spring-security-sso-kerberos/src/main/resources/application.properties b/spring-security-modules/spring-security-oauth2-sso/spring-security-sso-kerberos/src/main/resources/application.properties
similarity index 100%
rename from spring-security-modules/spring-security-sso/spring-security-sso-kerberos/src/main/resources/application.properties
rename to spring-security-modules/spring-security-oauth2-sso/spring-security-sso-kerberos/src/main/resources/application.properties
diff --git a/spring-security-modules/spring-security-sso/spring-security-sso-kerberos/src/main/resources/minikdc-krb5.conf b/spring-security-modules/spring-security-oauth2-sso/spring-security-sso-kerberos/src/main/resources/minikdc-krb5.conf
similarity index 100%
rename from spring-security-modules/spring-security-sso/spring-security-sso-kerberos/src/main/resources/minikdc-krb5.conf
rename to spring-security-modules/spring-security-oauth2-sso/spring-security-sso-kerberos/src/main/resources/minikdc-krb5.conf
diff --git a/spring-security-modules/spring-security-sso/spring-security-sso-kerberos/src/main/resources/minikdc.ldiff b/spring-security-modules/spring-security-oauth2-sso/spring-security-sso-kerberos/src/main/resources/minikdc.ldiff
similarity index 100%
rename from spring-security-modules/spring-security-sso/spring-security-sso-kerberos/src/main/resources/minikdc.ldiff
rename to spring-security-modules/spring-security-oauth2-sso/spring-security-sso-kerberos/src/main/resources/minikdc.ldiff
diff --git a/spring-security-modules/spring-security-sso/spring-security-sso-kerberos/src/main/resources/templates/hello.html b/spring-security-modules/spring-security-oauth2-sso/spring-security-sso-kerberos/src/main/resources/templates/hello.html
similarity index 100%
rename from spring-security-modules/spring-security-sso/spring-security-sso-kerberos/src/main/resources/templates/hello.html
rename to spring-security-modules/spring-security-oauth2-sso/spring-security-sso-kerberos/src/main/resources/templates/hello.html
diff --git a/spring-security-modules/spring-security-sso/spring-security-sso-kerberos/src/main/resources/templates/home.html b/spring-security-modules/spring-security-oauth2-sso/spring-security-sso-kerberos/src/main/resources/templates/home.html
similarity index 100%
rename from spring-security-modules/spring-security-sso/spring-security-sso-kerberos/src/main/resources/templates/home.html
rename to spring-security-modules/spring-security-oauth2-sso/spring-security-sso-kerberos/src/main/resources/templates/home.html
diff --git a/spring-security-modules/spring-security-sso/spring-security-sso-kerberos/src/main/resources/templates/login.html b/spring-security-modules/spring-security-oauth2-sso/spring-security-sso-kerberos/src/main/resources/templates/login.html
similarity index 100%
rename from spring-security-modules/spring-security-sso/spring-security-sso-kerberos/src/main/resources/templates/login.html
rename to spring-security-modules/spring-security-oauth2-sso/spring-security-sso-kerberos/src/main/resources/templates/login.html
diff --git a/spring-security-modules/spring-security-sso/spring-security-sso-kerberos/src/test/java/kerberos/client/SampleClientManualTest.java b/spring-security-modules/spring-security-oauth2-sso/spring-security-sso-kerberos/src/test/java/kerberos/client/SampleClientManualTest.java
similarity index 100%
rename from spring-security-modules/spring-security-sso/spring-security-sso-kerberos/src/test/java/kerberos/client/SampleClientManualTest.java
rename to spring-security-modules/spring-security-oauth2-sso/spring-security-sso-kerberos/src/test/java/kerberos/client/SampleClientManualTest.java
diff --git a/spring-security-modules/spring-security-sso/spring-security-sso-ui-2/pom.xml b/spring-security-modules/spring-security-oauth2-sso/spring-security-sso-ui-2/pom.xml
similarity index 100%
rename from spring-security-modules/spring-security-sso/spring-security-sso-ui-2/pom.xml
rename to spring-security-modules/spring-security-oauth2-sso/spring-security-sso-ui-2/pom.xml
diff --git a/spring-security-modules/spring-security-sso/spring-security-sso-ui-2/src/main/java/com/baeldung/config/UiApplication.java b/spring-security-modules/spring-security-oauth2-sso/spring-security-sso-ui-2/src/main/java/com/baeldung/config/UiApplication.java
similarity index 100%
rename from spring-security-modules/spring-security-sso/spring-security-sso-ui-2/src/main/java/com/baeldung/config/UiApplication.java
rename to spring-security-modules/spring-security-oauth2-sso/spring-security-sso-ui-2/src/main/java/com/baeldung/config/UiApplication.java
diff --git a/spring-security-modules/spring-security-sso/spring-security-sso-ui-2/src/main/java/com/baeldung/config/UiSecurityConfig.java b/spring-security-modules/spring-security-oauth2-sso/spring-security-sso-ui-2/src/main/java/com/baeldung/config/UiSecurityConfig.java
similarity index 100%
rename from spring-security-modules/spring-security-sso/spring-security-sso-ui-2/src/main/java/com/baeldung/config/UiSecurityConfig.java
rename to spring-security-modules/spring-security-oauth2-sso/spring-security-sso-ui-2/src/main/java/com/baeldung/config/UiSecurityConfig.java
diff --git a/spring-security-modules/spring-security-sso/spring-security-sso-ui-2/src/main/java/com/baeldung/config/UiWebConfig.java b/spring-security-modules/spring-security-oauth2-sso/spring-security-sso-ui-2/src/main/java/com/baeldung/config/UiWebConfig.java
similarity index 100%
rename from spring-security-modules/spring-security-sso/spring-security-sso-ui-2/src/main/java/com/baeldung/config/UiWebConfig.java
rename to spring-security-modules/spring-security-oauth2-sso/spring-security-sso-ui-2/src/main/java/com/baeldung/config/UiWebConfig.java
diff --git a/spring-security-modules/spring-security-sso/spring-security-sso-ui-2/src/main/resources/application.yml b/spring-security-modules/spring-security-oauth2-sso/spring-security-sso-ui-2/src/main/resources/application.yml
similarity index 100%
rename from spring-security-modules/spring-security-sso/spring-security-sso-ui-2/src/main/resources/application.yml
rename to spring-security-modules/spring-security-oauth2-sso/spring-security-sso-ui-2/src/main/resources/application.yml
diff --git a/spring-security-modules/spring-security-sso/spring-security-sso-auth-server/src/main/resources/logback.xml b/spring-security-modules/spring-security-oauth2-sso/spring-security-sso-ui-2/src/main/resources/logback.xml
similarity index 100%
rename from spring-security-modules/spring-security-sso/spring-security-sso-auth-server/src/main/resources/logback.xml
rename to spring-security-modules/spring-security-oauth2-sso/spring-security-sso-ui-2/src/main/resources/logback.xml
diff --git a/spring-security-modules/spring-security-sso/spring-security-sso-ui-2/src/main/resources/templates/index.html b/spring-security-modules/spring-security-oauth2-sso/spring-security-sso-ui-2/src/main/resources/templates/index.html
similarity index 100%
rename from spring-security-modules/spring-security-sso/spring-security-sso-ui-2/src/main/resources/templates/index.html
rename to spring-security-modules/spring-security-oauth2-sso/spring-security-sso-ui-2/src/main/resources/templates/index.html
diff --git a/spring-security-modules/spring-security-sso/spring-security-sso-ui-2/src/main/resources/templates/securedPage.html b/spring-security-modules/spring-security-oauth2-sso/spring-security-sso-ui-2/src/main/resources/templates/securedPage.html
similarity index 100%
rename from spring-security-modules/spring-security-sso/spring-security-sso-ui-2/src/main/resources/templates/securedPage.html
rename to spring-security-modules/spring-security-oauth2-sso/spring-security-sso-ui-2/src/main/resources/templates/securedPage.html
diff --git a/spring-security-modules/spring-security-sso/spring-security-sso-ui-2/src/test/java/com/baeldung/SpringContextTest.java b/spring-security-modules/spring-security-oauth2-sso/spring-security-sso-ui-2/src/test/java/com/baeldung/SpringContextTest.java
similarity index 100%
rename from spring-security-modules/spring-security-sso/spring-security-sso-ui-2/src/test/java/com/baeldung/SpringContextTest.java
rename to spring-security-modules/spring-security-oauth2-sso/spring-security-sso-ui-2/src/test/java/com/baeldung/SpringContextTest.java
diff --git a/spring-security-modules/spring-security-sso/spring-security-sso-ui/pom.xml b/spring-security-modules/spring-security-oauth2-sso/spring-security-sso-ui/pom.xml
similarity index 100%
rename from spring-security-modules/spring-security-sso/spring-security-sso-ui/pom.xml
rename to spring-security-modules/spring-security-oauth2-sso/spring-security-sso-ui/pom.xml
diff --git a/spring-security-modules/spring-security-sso/spring-security-sso-ui/src/main/java/com/baeldung/config/UiApplication.java b/spring-security-modules/spring-security-oauth2-sso/spring-security-sso-ui/src/main/java/com/baeldung/config/UiApplication.java
similarity index 100%
rename from spring-security-modules/spring-security-sso/spring-security-sso-ui/src/main/java/com/baeldung/config/UiApplication.java
rename to spring-security-modules/spring-security-oauth2-sso/spring-security-sso-ui/src/main/java/com/baeldung/config/UiApplication.java
diff --git a/spring-security-modules/spring-security-sso/spring-security-sso-ui/src/main/java/com/baeldung/config/UiSecurityConfig.java b/spring-security-modules/spring-security-oauth2-sso/spring-security-sso-ui/src/main/java/com/baeldung/config/UiSecurityConfig.java
similarity index 100%
rename from spring-security-modules/spring-security-sso/spring-security-sso-ui/src/main/java/com/baeldung/config/UiSecurityConfig.java
rename to spring-security-modules/spring-security-oauth2-sso/spring-security-sso-ui/src/main/java/com/baeldung/config/UiSecurityConfig.java
diff --git a/spring-security-modules/spring-security-sso/spring-security-sso-ui/src/main/java/com/baeldung/config/UiWebConfig.java b/spring-security-modules/spring-security-oauth2-sso/spring-security-sso-ui/src/main/java/com/baeldung/config/UiWebConfig.java
similarity index 100%
rename from spring-security-modules/spring-security-sso/spring-security-sso-ui/src/main/java/com/baeldung/config/UiWebConfig.java
rename to spring-security-modules/spring-security-oauth2-sso/spring-security-sso-ui/src/main/java/com/baeldung/config/UiWebConfig.java
diff --git a/spring-security-modules/spring-security-sso/spring-security-sso-ui/src/main/resources/application.yml b/spring-security-modules/spring-security-oauth2-sso/spring-security-sso-ui/src/main/resources/application.yml
similarity index 100%
rename from spring-security-modules/spring-security-sso/spring-security-sso-ui/src/main/resources/application.yml
rename to spring-security-modules/spring-security-oauth2-sso/spring-security-sso-ui/src/main/resources/application.yml
diff --git a/spring-security-modules/spring-security-sso/spring-security-sso-ui-2/src/main/resources/logback.xml b/spring-security-modules/spring-security-oauth2-sso/spring-security-sso-ui/src/main/resources/logback.xml
similarity index 100%
rename from spring-security-modules/spring-security-sso/spring-security-sso-ui-2/src/main/resources/logback.xml
rename to spring-security-modules/spring-security-oauth2-sso/spring-security-sso-ui/src/main/resources/logback.xml
diff --git a/spring-security-modules/spring-security-sso/spring-security-sso-ui/src/main/resources/templates/index.html b/spring-security-modules/spring-security-oauth2-sso/spring-security-sso-ui/src/main/resources/templates/index.html
similarity index 100%
rename from spring-security-modules/spring-security-sso/spring-security-sso-ui/src/main/resources/templates/index.html
rename to spring-security-modules/spring-security-oauth2-sso/spring-security-sso-ui/src/main/resources/templates/index.html
diff --git a/spring-security-modules/spring-security-sso/spring-security-sso-ui/src/main/resources/templates/securedPage.html b/spring-security-modules/spring-security-oauth2-sso/spring-security-sso-ui/src/main/resources/templates/securedPage.html
similarity index 100%
rename from spring-security-modules/spring-security-sso/spring-security-sso-ui/src/main/resources/templates/securedPage.html
rename to spring-security-modules/spring-security-oauth2-sso/spring-security-sso-ui/src/main/resources/templates/securedPage.html
diff --git a/spring-security-modules/spring-security-sso/spring-security-sso-ui/src/test/java/com/baeldung/SpringContextTest.java b/spring-security-modules/spring-security-oauth2-sso/spring-security-sso-ui/src/test/java/com/baeldung/SpringContextTest.java
similarity index 100%
rename from spring-security-modules/spring-security-sso/spring-security-sso-ui/src/test/java/com/baeldung/SpringContextTest.java
rename to spring-security-modules/spring-security-oauth2-sso/spring-security-sso-ui/src/test/java/com/baeldung/SpringContextTest.java
diff --git a/spring-security-modules/spring-security-stormpath/README.md b/spring-security-modules/spring-security-stormpath/README.md
deleted file mode 100644
index 971d4cc858..0000000000
--- a/spring-security-modules/spring-security-stormpath/README.md
+++ /dev/null
@@ -1,7 +0,0 @@
-## Spring Security Stormpath
-
-This module contains articles about Spring Security with Stormpath
-
-### Relevant articles
-
-- [Spring Security with Stormpath](https://www.baeldung.com/spring-security-stormpath)
diff --git a/spring-security-modules/spring-security-stormpath/pom.xml b/spring-security-modules/spring-security-stormpath/pom.xml
deleted file mode 100644
index 81a7c40aef..0000000000
--- a/spring-security-modules/spring-security-stormpath/pom.xml
+++ /dev/null
@@ -1,68 +0,0 @@
-
-
- 4.0.0
- spring-security-stormpath
- 1.0-SNAPSHOT
- spring-security-stormpath
- war
- http://maven.apache.org
-
-
-
- abhinabkanrar@gmail.com
- Abhinab Kanrar
- https://github.com/AbhinabKanrar
- abhinabkanrar
-
-
-
-
- com.baeldung
- parent-boot-1
- 0.0.1-SNAPSHOT
- ../../parent-boot-1
-
-
-
-
- org.springframework.boot
- spring-boot-starter-web
-
-
- com.stormpath.spring
- stormpath-default-spring-boot-starter
- ${stormpath-spring.version}
-
-
-
-
- spring-security-stormpath
-
-
- src/main/resources
-
-
-
-
- org.springframework.boot
- spring-boot-maven-plugin
-
- true
-
-
-
-
- repackage
-
-
-
-
-
-
-
-
- 1.5.4
-
-
-
diff --git a/spring-security-modules/spring-security-stormpath/src/main/java/com/baeldung/Application.java b/spring-security-modules/spring-security-stormpath/src/main/java/com/baeldung/Application.java
deleted file mode 100644
index 3d1409eaeb..0000000000
--- a/spring-security-modules/spring-security-stormpath/src/main/java/com/baeldung/Application.java
+++ /dev/null
@@ -1,25 +0,0 @@
-/**
- *
- */
-package com.baeldung;
-
-import org.springframework.boot.CommandLineRunner;
-import org.springframework.boot.SpringApplication;
-import org.springframework.boot.autoconfigure.SpringBootApplication;
-
-/**
- * @author abhinab
- *
- */
-@SpringBootApplication
-public class Application implements CommandLineRunner {
-
- @Override
- public void run(String... args) throws Exception {
- }
-
- public static void main(String[] args) {
- SpringApplication.run(Application.class, args);
- }
-
-}
diff --git a/spring-security-modules/spring-security-stormpath/src/main/java/com/baeldung/security/SecurityConfiguration.java b/spring-security-modules/spring-security-stormpath/src/main/java/com/baeldung/security/SecurityConfiguration.java
deleted file mode 100644
index 5d75ecea8a..0000000000
--- a/spring-security-modules/spring-security-stormpath/src/main/java/com/baeldung/security/SecurityConfiguration.java
+++ /dev/null
@@ -1,24 +0,0 @@
-/**
- *
- */
-package com.baeldung.security;
-
-import org.springframework.context.annotation.Configuration;
-import org.springframework.security.config.annotation.web.builders.HttpSecurity;
-import org.springframework.security.config.annotation.web.configuration.WebSecurityConfigurerAdapter;
-
-import static com.stormpath.spring.config.StormpathWebSecurityConfigurer.stormpath;
-
-/**
- * @author abhinab
- *
- */
-@Configuration
-public class SecurityConfiguration extends WebSecurityConfigurerAdapter {
-
- @Override
- protected void configure(HttpSecurity http) throws Exception {
- http.apply(stormpath());
- }
-
-}
diff --git a/spring-security-modules/spring-security-stormpath/src/main/resources/application.properties b/spring-security-modules/spring-security-stormpath/src/main/resources/application.properties
deleted file mode 100644
index 64a9ca456c..0000000000
--- a/spring-security-modules/spring-security-stormpath/src/main/resources/application.properties
+++ /dev/null
@@ -1,6 +0,0 @@
-security.basic.enabled = false
-
-stormpath.web.stormpathFilter.order = 0
-
-stormpath.client.apiKey.id = 668HU0EOZQ7F4MT53ND2HSGBA
-stormpath.client.apiKey.secret = RPTaYX07csTJR0AMKjM462KRdiP6q037kBWoDrBC3DI
diff --git a/spring-security-modules/spring-security-mvc-jsonview/.gitignore b/spring-security-modules/spring-security-web-jsonview/.gitignore
similarity index 100%
rename from spring-security-modules/spring-security-mvc-jsonview/.gitignore
rename to spring-security-modules/spring-security-web-jsonview/.gitignore
diff --git a/spring-security-modules/spring-security-mvc-jsonview/README.md b/spring-security-modules/spring-security-web-jsonview/README.md
similarity index 86%
rename from spring-security-modules/spring-security-mvc-jsonview/README.md
rename to spring-security-modules/spring-security-web-jsonview/README.md
index 0e28d4c292..83f8106df9 100644
--- a/spring-security-modules/spring-security-mvc-jsonview/README.md
+++ b/spring-security-modules/spring-security-web-jsonview/README.md
@@ -1,4 +1,4 @@
-## Spring Security MVC Json View
+## Spring Security Web Json View
This module contains articles about Spring Security with JSON
diff --git a/spring-security-modules/spring-security-mvc-jsonview/pom.xml b/spring-security-modules/spring-security-web-jsonview/pom.xml
similarity index 98%
rename from spring-security-modules/spring-security-mvc-jsonview/pom.xml
rename to spring-security-modules/spring-security-web-jsonview/pom.xml
index f6ba997c62..0d1b0b09db 100644
--- a/spring-security-modules/spring-security-mvc-jsonview/pom.xml
+++ b/spring-security-modules/spring-security-web-jsonview/pom.xml
@@ -2,9 +2,9 @@
4.0.0
- spring-security-mvc-jsonview
+ spring-security-web-jsonview
0.1-SNAPSHOT
- spring-security-mvc-jsonview
+ spring-security-web-jsonview
war
diff --git a/spring-security-modules/spring-security-mvc-jsonview/src/main/java/com/baeldung/AppInitializer.java b/spring-security-modules/spring-security-web-jsonview/src/main/java/com/baeldung/AppInitializer.java
similarity index 100%
rename from spring-security-modules/spring-security-mvc-jsonview/src/main/java/com/baeldung/AppInitializer.java
rename to spring-security-modules/spring-security-web-jsonview/src/main/java/com/baeldung/AppInitializer.java
diff --git a/spring-security-modules/spring-security-mvc-jsonview/src/main/java/com/baeldung/controller/ItemsController.java b/spring-security-modules/spring-security-web-jsonview/src/main/java/com/baeldung/controller/ItemsController.java
similarity index 100%
rename from spring-security-modules/spring-security-mvc-jsonview/src/main/java/com/baeldung/controller/ItemsController.java
rename to spring-security-modules/spring-security-web-jsonview/src/main/java/com/baeldung/controller/ItemsController.java
diff --git a/spring-security-modules/spring-security-mvc-jsonview/src/main/java/com/baeldung/controller/View.java b/spring-security-modules/spring-security-web-jsonview/src/main/java/com/baeldung/controller/View.java
similarity index 100%
rename from spring-security-modules/spring-security-mvc-jsonview/src/main/java/com/baeldung/controller/View.java
rename to spring-security-modules/spring-security-web-jsonview/src/main/java/com/baeldung/controller/View.java
diff --git a/spring-security-modules/spring-security-mvc-jsonview/src/main/java/com/baeldung/model/Item.java b/spring-security-modules/spring-security-web-jsonview/src/main/java/com/baeldung/model/Item.java
similarity index 100%
rename from spring-security-modules/spring-security-mvc-jsonview/src/main/java/com/baeldung/model/Item.java
rename to spring-security-modules/spring-security-web-jsonview/src/main/java/com/baeldung/model/Item.java
diff --git a/spring-security-modules/spring-security-mvc-jsonview/src/main/java/com/baeldung/spring/AppConfig.java b/spring-security-modules/spring-security-web-jsonview/src/main/java/com/baeldung/spring/AppConfig.java
similarity index 100%
rename from spring-security-modules/spring-security-mvc-jsonview/src/main/java/com/baeldung/spring/AppConfig.java
rename to spring-security-modules/spring-security-web-jsonview/src/main/java/com/baeldung/spring/AppConfig.java
diff --git a/spring-security-modules/spring-security-mvc-jsonview/src/main/java/com/baeldung/spring/SecurityJsonViewControllerAdvice.java b/spring-security-modules/spring-security-web-jsonview/src/main/java/com/baeldung/spring/SecurityJsonViewControllerAdvice.java
similarity index 100%
rename from spring-security-modules/spring-security-mvc-jsonview/src/main/java/com/baeldung/spring/SecurityJsonViewControllerAdvice.java
rename to spring-security-modules/spring-security-web-jsonview/src/main/java/com/baeldung/spring/SecurityJsonViewControllerAdvice.java
diff --git a/spring-security-modules/spring-security-mvc-jsonview/src/main/resources/logback.xml b/spring-security-modules/spring-security-web-jsonview/src/main/resources/logback.xml
similarity index 100%
rename from spring-security-modules/spring-security-mvc-jsonview/src/main/resources/logback.xml
rename to spring-security-modules/spring-security-web-jsonview/src/main/resources/logback.xml
diff --git a/spring-security-modules/spring-security-mvc-jsonview/src/test/java/com/baeldung/SpringContextTest.java b/spring-security-modules/spring-security-web-jsonview/src/test/java/com/baeldung/SpringContextTest.java
similarity index 100%
rename from spring-security-modules/spring-security-mvc-jsonview/src/test/java/com/baeldung/SpringContextTest.java
rename to spring-security-modules/spring-security-web-jsonview/src/test/java/com/baeldung/SpringContextTest.java
diff --git a/spring-security-modules/spring-security-mvc-jsonview/src/test/java/com/baeldung/security/SpringSecurityJsonViewIntegrationTest.java b/spring-security-modules/spring-security-web-jsonview/src/test/java/com/baeldung/security/SpringSecurityJsonViewIntegrationTest.java
similarity index 100%
rename from spring-security-modules/spring-security-mvc-jsonview/src/test/java/com/baeldung/security/SpringSecurityJsonViewIntegrationTest.java
rename to spring-security-modules/spring-security-web-jsonview/src/test/java/com/baeldung/security/SpringSecurityJsonViewIntegrationTest.java
diff --git a/spring-security-modules/spring-security-mvc-login/.gitignore b/spring-security-modules/spring-security-web-login/.gitignore
similarity index 100%
rename from spring-security-modules/spring-security-mvc-login/.gitignore
rename to spring-security-modules/spring-security-web-login/.gitignore
diff --git a/spring-security-modules/spring-security-mvc-login/README.md b/spring-security-modules/spring-security-web-login/README.md
similarity index 100%
rename from spring-security-modules/spring-security-mvc-login/README.md
rename to spring-security-modules/spring-security-web-login/README.md
diff --git a/spring-security-modules/spring-security-mvc-login/pom.xml b/spring-security-modules/spring-security-web-login/pom.xml
similarity index 98%
rename from spring-security-modules/spring-security-mvc-login/pom.xml
rename to spring-security-modules/spring-security-web-login/pom.xml
index 4e0fe00176..2b64d157d3 100644
--- a/spring-security-modules/spring-security-mvc-login/pom.xml
+++ b/spring-security-modules/spring-security-web-login/pom.xml
@@ -2,9 +2,9 @@
4.0.0
- spring-security-mvc-login
+ spring-security-web-login
0.1-SNAPSHOT
- spring-security-mvc-login
+ spring-security-web-login
war
diff --git a/spring-security-modules/spring-security-mvc-login/src/main/java/com/baeldung/AppInitializer.java b/spring-security-modules/spring-security-web-login/src/main/java/com/baeldung/AppInitializer.java
similarity index 100%
rename from spring-security-modules/spring-security-mvc-login/src/main/java/com/baeldung/AppInitializer.java
rename to spring-security-modules/spring-security-web-login/src/main/java/com/baeldung/AppInitializer.java
diff --git a/spring-security-modules/spring-security-mvc-login/src/main/java/com/baeldung/controller/SecuredResourceController.java b/spring-security-modules/spring-security-web-login/src/main/java/com/baeldung/controller/SecuredResourceController.java
similarity index 100%
rename from spring-security-modules/spring-security-mvc-login/src/main/java/com/baeldung/controller/SecuredResourceController.java
rename to spring-security-modules/spring-security-web-login/src/main/java/com/baeldung/controller/SecuredResourceController.java
diff --git a/spring-security-modules/spring-security-mvc-login/src/main/java/com/baeldung/security/CustomAccessDeniedHandler.java b/spring-security-modules/spring-security-web-login/src/main/java/com/baeldung/security/CustomAccessDeniedHandler.java
similarity index 100%
rename from spring-security-modules/spring-security-mvc-login/src/main/java/com/baeldung/security/CustomAccessDeniedHandler.java
rename to spring-security-modules/spring-security-web-login/src/main/java/com/baeldung/security/CustomAccessDeniedHandler.java
diff --git a/spring-security-modules/spring-security-mvc-login/src/main/java/com/baeldung/security/CustomAuthenticationFailureHandler.java b/spring-security-modules/spring-security-web-login/src/main/java/com/baeldung/security/CustomAuthenticationFailureHandler.java
similarity index 100%
rename from spring-security-modules/spring-security-mvc-login/src/main/java/com/baeldung/security/CustomAuthenticationFailureHandler.java
rename to spring-security-modules/spring-security-web-login/src/main/java/com/baeldung/security/CustomAuthenticationFailureHandler.java
diff --git a/spring-security-modules/spring-security-mvc-login/src/main/java/com/baeldung/security/CustomLogoutSuccessHandler.java b/spring-security-modules/spring-security-web-login/src/main/java/com/baeldung/security/CustomLogoutSuccessHandler.java
similarity index 100%
rename from spring-security-modules/spring-security-mvc-login/src/main/java/com/baeldung/security/CustomLogoutSuccessHandler.java
rename to spring-security-modules/spring-security-web-login/src/main/java/com/baeldung/security/CustomLogoutSuccessHandler.java
diff --git a/spring-security-modules/spring-security-mvc-login/src/main/java/com/baeldung/security/RefererAuthenticationSuccessHandler.java b/spring-security-modules/spring-security-web-login/src/main/java/com/baeldung/security/RefererAuthenticationSuccessHandler.java
similarity index 100%
rename from spring-security-modules/spring-security-mvc-login/src/main/java/com/baeldung/security/RefererAuthenticationSuccessHandler.java
rename to spring-security-modules/spring-security-web-login/src/main/java/com/baeldung/security/RefererAuthenticationSuccessHandler.java
diff --git a/spring-security-modules/spring-security-mvc-login/src/main/java/com/baeldung/security/config/SecSecurityConfig.java b/spring-security-modules/spring-security-web-login/src/main/java/com/baeldung/security/config/SecSecurityConfig.java
similarity index 100%
rename from spring-security-modules/spring-security-mvc-login/src/main/java/com/baeldung/security/config/SecSecurityConfig.java
rename to spring-security-modules/spring-security-web-login/src/main/java/com/baeldung/security/config/SecSecurityConfig.java
diff --git a/spring-security-modules/spring-security-mvc-login/src/main/java/com/baeldung/spring/ChannelSecSecurityConfig.java b/spring-security-modules/spring-security-web-login/src/main/java/com/baeldung/spring/ChannelSecSecurityConfig.java
similarity index 100%
rename from spring-security-modules/spring-security-mvc-login/src/main/java/com/baeldung/spring/ChannelSecSecurityConfig.java
rename to spring-security-modules/spring-security-web-login/src/main/java/com/baeldung/spring/ChannelSecSecurityConfig.java
diff --git a/spring-security-modules/spring-security-mvc-login/src/main/java/com/baeldung/spring/MvcConfig.java b/spring-security-modules/spring-security-web-login/src/main/java/com/baeldung/spring/MvcConfig.java
similarity index 100%
rename from spring-security-modules/spring-security-mvc-login/src/main/java/com/baeldung/spring/MvcConfig.java
rename to spring-security-modules/spring-security-web-login/src/main/java/com/baeldung/spring/MvcConfig.java
diff --git a/spring-security-modules/spring-security-mvc-login/src/main/java/com/baeldung/spring/RedirectionSecurityConfig.java b/spring-security-modules/spring-security-web-login/src/main/java/com/baeldung/spring/RedirectionSecurityConfig.java
similarity index 100%
rename from spring-security-modules/spring-security-mvc-login/src/main/java/com/baeldung/spring/RedirectionSecurityConfig.java
rename to spring-security-modules/spring-security-web-login/src/main/java/com/baeldung/spring/RedirectionSecurityConfig.java
diff --git a/spring-security-modules/spring-security-mvc-login/src/main/resources/RedirectionWebSecurityConfig.xml b/spring-security-modules/spring-security-web-login/src/main/resources/RedirectionWebSecurityConfig.xml
similarity index 100%
rename from spring-security-modules/spring-security-mvc-login/src/main/resources/RedirectionWebSecurityConfig.xml
rename to spring-security-modules/spring-security-web-login/src/main/resources/RedirectionWebSecurityConfig.xml
diff --git a/spring-security-modules/spring-security-mvc-login/src/main/resources/channelWebSecurityConfig.xml b/spring-security-modules/spring-security-web-login/src/main/resources/channelWebSecurityConfig.xml
similarity index 100%
rename from spring-security-modules/spring-security-mvc-login/src/main/resources/channelWebSecurityConfig.xml
rename to spring-security-modules/spring-security-web-login/src/main/resources/channelWebSecurityConfig.xml
diff --git a/spring-security-modules/spring-security-mvc-login/src/main/resources/logback.xml b/spring-security-modules/spring-security-web-login/src/main/resources/logback.xml
similarity index 100%
rename from spring-security-modules/spring-security-mvc-login/src/main/resources/logback.xml
rename to spring-security-modules/spring-security-web-login/src/main/resources/logback.xml
diff --git a/spring-security-modules/spring-security-mvc-login/src/main/resources/webSecurityConfig.xml b/spring-security-modules/spring-security-web-login/src/main/resources/webSecurityConfig.xml
similarity index 100%
rename from spring-security-modules/spring-security-mvc-login/src/main/resources/webSecurityConfig.xml
rename to spring-security-modules/spring-security-web-login/src/main/resources/webSecurityConfig.xml
diff --git a/spring-security-modules/spring-security-mvc-login/src/main/webapp/WEB-INF/mvc-servlet.xml b/spring-security-modules/spring-security-web-login/src/main/webapp/WEB-INF/mvc-servlet.xml
similarity index 100%
rename from spring-security-modules/spring-security-mvc-login/src/main/webapp/WEB-INF/mvc-servlet.xml
rename to spring-security-modules/spring-security-web-login/src/main/webapp/WEB-INF/mvc-servlet.xml
diff --git a/spring-security-modules/spring-security-mvc-login/src/main/webapp/WEB-INF/view/accessDenied.jsp b/spring-security-modules/spring-security-web-login/src/main/webapp/WEB-INF/view/accessDenied.jsp
similarity index 100%
rename from spring-security-modules/spring-security-mvc-login/src/main/webapp/WEB-INF/view/accessDenied.jsp
rename to spring-security-modules/spring-security-web-login/src/main/webapp/WEB-INF/view/accessDenied.jsp
diff --git a/spring-security-modules/spring-security-mvc-login/src/main/webapp/WEB-INF/view/admin/adminpage.jsp b/spring-security-modules/spring-security-web-login/src/main/webapp/WEB-INF/view/admin/adminpage.jsp
similarity index 100%
rename from spring-security-modules/spring-security-mvc-login/src/main/webapp/WEB-INF/view/admin/adminpage.jsp
rename to spring-security-modules/spring-security-web-login/src/main/webapp/WEB-INF/view/admin/adminpage.jsp
diff --git a/spring-security-modules/spring-security-mvc-login/src/main/webapp/WEB-INF/view/anonymous.jsp b/spring-security-modules/spring-security-web-login/src/main/webapp/WEB-INF/view/anonymous.jsp
similarity index 100%
rename from spring-security-modules/spring-security-mvc-login/src/main/webapp/WEB-INF/view/anonymous.jsp
rename to spring-security-modules/spring-security-web-login/src/main/webapp/WEB-INF/view/anonymous.jsp
diff --git a/spring-security-modules/spring-security-mvc-login/src/main/webapp/WEB-INF/view/homepage.jsp b/spring-security-modules/spring-security-web-login/src/main/webapp/WEB-INF/view/homepage.jsp
similarity index 100%
rename from spring-security-modules/spring-security-mvc-login/src/main/webapp/WEB-INF/view/homepage.jsp
rename to spring-security-modules/spring-security-web-login/src/main/webapp/WEB-INF/view/homepage.jsp
diff --git a/spring-security-modules/spring-security-mvc-login/src/main/webapp/WEB-INF/view/login.jsp b/spring-security-modules/spring-security-web-login/src/main/webapp/WEB-INF/view/login.jsp
similarity index 100%
rename from spring-security-modules/spring-security-mvc-login/src/main/webapp/WEB-INF/view/login.jsp
rename to spring-security-modules/spring-security-web-login/src/main/webapp/WEB-INF/view/login.jsp
diff --git a/spring-security-modules/spring-security-mvc-login/src/main/webapp/WEB-INF/web-old.xml b/spring-security-modules/spring-security-web-login/src/main/webapp/WEB-INF/web-old.xml
similarity index 100%
rename from spring-security-modules/spring-security-mvc-login/src/main/webapp/WEB-INF/web-old.xml
rename to spring-security-modules/spring-security-web-login/src/main/webapp/WEB-INF/web-old.xml
diff --git a/spring-security-modules/spring-security-mvc-login/src/test/java/com/baeldung/SpringContextTest.java b/spring-security-modules/spring-security-web-login/src/test/java/com/baeldung/SpringContextTest.java
similarity index 100%
rename from spring-security-modules/spring-security-mvc-login/src/test/java/com/baeldung/SpringContextTest.java
rename to spring-security-modules/spring-security-web-login/src/test/java/com/baeldung/SpringContextTest.java
diff --git a/spring-security-modules/spring-security-mvc-login/src/test/java/com/baeldung/security/FormLoginUnitTest.java b/spring-security-modules/spring-security-web-login/src/test/java/com/baeldung/security/FormLoginUnitTest.java
similarity index 100%
rename from spring-security-modules/spring-security-mvc-login/src/test/java/com/baeldung/security/FormLoginUnitTest.java
rename to spring-security-modules/spring-security-web-login/src/test/java/com/baeldung/security/FormLoginUnitTest.java
diff --git a/spring-security-modules/spring-security-mvc-login/src/test/java/com/baeldung/security/RedirectionSecurityIntegrationTest.java b/spring-security-modules/spring-security-web-login/src/test/java/com/baeldung/security/RedirectionSecurityIntegrationTest.java
similarity index 100%
rename from spring-security-modules/spring-security-mvc-login/src/test/java/com/baeldung/security/RedirectionSecurityIntegrationTest.java
rename to spring-security-modules/spring-security-web-login/src/test/java/com/baeldung/security/RedirectionSecurityIntegrationTest.java
diff --git a/spring-security-modules/spring-security-mvc-login/src/test/resources/.gitignore b/spring-security-modules/spring-security-web-login/src/test/resources/.gitignore
similarity index 100%
rename from spring-security-modules/spring-security-mvc-login/src/test/resources/.gitignore
rename to spring-security-modules/spring-security-web-login/src/test/resources/.gitignore
diff --git a/spring-security-modules/spring-security-mvc-persisted-remember-me/.gitignore b/spring-security-modules/spring-security-web-persisted-remember-me/.gitignore
similarity index 100%
rename from spring-security-modules/spring-security-mvc-persisted-remember-me/.gitignore
rename to spring-security-modules/spring-security-web-persisted-remember-me/.gitignore
diff --git a/spring-security-modules/spring-security-mvc-persisted-remember-me/README.md b/spring-security-modules/spring-security-web-persisted-remember-me/README.md
similarity index 100%
rename from spring-security-modules/spring-security-mvc-persisted-remember-me/README.md
rename to spring-security-modules/spring-security-web-persisted-remember-me/README.md
diff --git a/spring-security-modules/spring-security-mvc-persisted-remember-me/pom.xml b/spring-security-modules/spring-security-web-persisted-remember-me/pom.xml
similarity index 98%
rename from spring-security-modules/spring-security-mvc-persisted-remember-me/pom.xml
rename to spring-security-modules/spring-security-web-persisted-remember-me/pom.xml
index 9410793222..25c5ddd9d0 100644
--- a/spring-security-modules/spring-security-mvc-persisted-remember-me/pom.xml
+++ b/spring-security-modules/spring-security-web-persisted-remember-me/pom.xml
@@ -2,9 +2,9 @@
4.0.0
- spring-security-mvc-persisted-remember-me
+ spring-security-web-persisted-remember-me
0.1-SNAPSHOT
- spring-security-mvc-persisted-remember-me
+ spring-security-web-persisted-remember-me
war
diff --git a/spring-security-modules/spring-security-mvc-persisted-remember-me/src/main/java/com/baeldung/controller/MyController.java b/spring-security-modules/spring-security-web-persisted-remember-me/src/main/java/com/baeldung/controller/MyController.java
similarity index 100%
rename from spring-security-modules/spring-security-mvc-persisted-remember-me/src/main/java/com/baeldung/controller/MyController.java
rename to spring-security-modules/spring-security-web-persisted-remember-me/src/main/java/com/baeldung/controller/MyController.java
diff --git a/spring-security-modules/spring-security-mvc-persisted-remember-me/src/main/java/com/baeldung/security/MySimpleUrlAuthenticationSuccessHandler.java b/spring-security-modules/spring-security-web-persisted-remember-me/src/main/java/com/baeldung/security/MySimpleUrlAuthenticationSuccessHandler.java
similarity index 100%
rename from spring-security-modules/spring-security-mvc-persisted-remember-me/src/main/java/com/baeldung/security/MySimpleUrlAuthenticationSuccessHandler.java
rename to spring-security-modules/spring-security-web-persisted-remember-me/src/main/java/com/baeldung/security/MySimpleUrlAuthenticationSuccessHandler.java
diff --git a/spring-security-modules/spring-security-mvc-persisted-remember-me/src/main/java/com/baeldung/security/SecurityRole.java b/spring-security-modules/spring-security-web-persisted-remember-me/src/main/java/com/baeldung/security/SecurityRole.java
similarity index 100%
rename from spring-security-modules/spring-security-mvc-persisted-remember-me/src/main/java/com/baeldung/security/SecurityRole.java
rename to spring-security-modules/spring-security-web-persisted-remember-me/src/main/java/com/baeldung/security/SecurityRole.java
diff --git a/spring-security-modules/spring-security-mvc-persisted-remember-me/src/main/java/com/baeldung/security/SecurityWebApplicationInitializer.java b/spring-security-modules/spring-security-web-persisted-remember-me/src/main/java/com/baeldung/security/SecurityWebApplicationInitializer.java
similarity index 100%
rename from spring-security-modules/spring-security-mvc-persisted-remember-me/src/main/java/com/baeldung/security/SecurityWebApplicationInitializer.java
rename to spring-security-modules/spring-security-web-persisted-remember-me/src/main/java/com/baeldung/security/SecurityWebApplicationInitializer.java
diff --git a/spring-security-modules/spring-security-mvc-persisted-remember-me/src/main/java/com/baeldung/service/MyUserDetailsService.java b/spring-security-modules/spring-security-web-persisted-remember-me/src/main/java/com/baeldung/service/MyUserDetailsService.java
similarity index 100%
rename from spring-security-modules/spring-security-mvc-persisted-remember-me/src/main/java/com/baeldung/service/MyUserDetailsService.java
rename to spring-security-modules/spring-security-web-persisted-remember-me/src/main/java/com/baeldung/service/MyUserDetailsService.java
diff --git a/spring-security-modules/spring-security-mvc-persisted-remember-me/src/main/java/com/baeldung/spring/MvcConfig.java b/spring-security-modules/spring-security-web-persisted-remember-me/src/main/java/com/baeldung/spring/MvcConfig.java
similarity index 100%
rename from spring-security-modules/spring-security-mvc-persisted-remember-me/src/main/java/com/baeldung/spring/MvcConfig.java
rename to spring-security-modules/spring-security-web-persisted-remember-me/src/main/java/com/baeldung/spring/MvcConfig.java
diff --git a/spring-security-modules/spring-security-mvc-persisted-remember-me/src/main/java/com/baeldung/spring/PersistenceConfig.java b/spring-security-modules/spring-security-web-persisted-remember-me/src/main/java/com/baeldung/spring/PersistenceConfig.java
similarity index 100%
rename from spring-security-modules/spring-security-mvc-persisted-remember-me/src/main/java/com/baeldung/spring/PersistenceConfig.java
rename to spring-security-modules/spring-security-web-persisted-remember-me/src/main/java/com/baeldung/spring/PersistenceConfig.java
diff --git a/spring-security-modules/spring-security-mvc-persisted-remember-me/src/main/java/com/baeldung/spring/SecurityConfig.java b/spring-security-modules/spring-security-web-persisted-remember-me/src/main/java/com/baeldung/spring/SecurityConfig.java
similarity index 100%
rename from spring-security-modules/spring-security-mvc-persisted-remember-me/src/main/java/com/baeldung/spring/SecurityConfig.java
rename to spring-security-modules/spring-security-web-persisted-remember-me/src/main/java/com/baeldung/spring/SecurityConfig.java
diff --git a/spring-security-modules/spring-security-mvc-persisted-remember-me/src/main/resources/logback.xml b/spring-security-modules/spring-security-web-persisted-remember-me/src/main/resources/logback.xml
similarity index 100%
rename from spring-security-modules/spring-security-mvc-persisted-remember-me/src/main/resources/logback.xml
rename to spring-security-modules/spring-security-web-persisted-remember-me/src/main/resources/logback.xml
diff --git a/spring-security-modules/spring-security-mvc-persisted-remember-me/src/main/resources/persisted_logins_create_table.sql b/spring-security-modules/spring-security-web-persisted-remember-me/src/main/resources/persisted_logins_create_table.sql
similarity index 100%
rename from spring-security-modules/spring-security-mvc-persisted-remember-me/src/main/resources/persisted_logins_create_table.sql
rename to spring-security-modules/spring-security-web-persisted-remember-me/src/main/resources/persisted_logins_create_table.sql
diff --git a/spring-security-modules/spring-security-mvc-persisted-remember-me/src/main/resources/persistence-h2.properties b/spring-security-modules/spring-security-web-persisted-remember-me/src/main/resources/persistence-h2.properties
similarity index 100%
rename from spring-security-modules/spring-security-mvc-persisted-remember-me/src/main/resources/persistence-h2.properties
rename to spring-security-modules/spring-security-web-persisted-remember-me/src/main/resources/persistence-h2.properties
diff --git a/spring-security-modules/spring-security-mvc-persisted-remember-me/src/main/resources/persistence-postgres.properties b/spring-security-modules/spring-security-web-persisted-remember-me/src/main/resources/persistence-postgres.properties
similarity index 100%
rename from spring-security-modules/spring-security-mvc-persisted-remember-me/src/main/resources/persistence-postgres.properties
rename to spring-security-modules/spring-security-web-persisted-remember-me/src/main/resources/persistence-postgres.properties
diff --git a/spring-security-modules/spring-security-mvc-persisted-remember-me/src/main/resources/webSecurityConfig.xml b/spring-security-modules/spring-security-web-persisted-remember-me/src/main/resources/webSecurityConfig.xml
similarity index 100%
rename from spring-security-modules/spring-security-mvc-persisted-remember-me/src/main/resources/webSecurityConfig.xml
rename to spring-security-modules/spring-security-web-persisted-remember-me/src/main/resources/webSecurityConfig.xml
diff --git a/spring-security-modules/spring-security-mvc-persisted-remember-me/src/main/webapp/WEB-INF/mvc-servlet.xml b/spring-security-modules/spring-security-web-persisted-remember-me/src/main/webapp/WEB-INF/mvc-servlet.xml
similarity index 100%
rename from spring-security-modules/spring-security-mvc-persisted-remember-me/src/main/webapp/WEB-INF/mvc-servlet.xml
rename to spring-security-modules/spring-security-web-persisted-remember-me/src/main/webapp/WEB-INF/mvc-servlet.xml
diff --git a/spring-security-modules/spring-security-mvc-persisted-remember-me/src/main/webapp/WEB-INF/view/anonymous.jsp b/spring-security-modules/spring-security-web-persisted-remember-me/src/main/webapp/WEB-INF/view/anonymous.jsp
similarity index 100%
rename from spring-security-modules/spring-security-mvc-persisted-remember-me/src/main/webapp/WEB-INF/view/anonymous.jsp
rename to spring-security-modules/spring-security-web-persisted-remember-me/src/main/webapp/WEB-INF/view/anonymous.jsp
diff --git a/spring-security-modules/spring-security-mvc-persisted-remember-me/src/main/webapp/WEB-INF/view/console.jsp b/spring-security-modules/spring-security-web-persisted-remember-me/src/main/webapp/WEB-INF/view/console.jsp
similarity index 100%
rename from spring-security-modules/spring-security-mvc-persisted-remember-me/src/main/webapp/WEB-INF/view/console.jsp
rename to spring-security-modules/spring-security-web-persisted-remember-me/src/main/webapp/WEB-INF/view/console.jsp
diff --git a/spring-security-modules/spring-security-mvc-persisted-remember-me/src/main/webapp/WEB-INF/view/homepage.jsp b/spring-security-modules/spring-security-web-persisted-remember-me/src/main/webapp/WEB-INF/view/homepage.jsp
similarity index 100%
rename from spring-security-modules/spring-security-mvc-persisted-remember-me/src/main/webapp/WEB-INF/view/homepage.jsp
rename to spring-security-modules/spring-security-web-persisted-remember-me/src/main/webapp/WEB-INF/view/homepage.jsp
diff --git a/spring-security-modules/spring-security-mvc-persisted-remember-me/src/main/webapp/WEB-INF/view/login.jsp b/spring-security-modules/spring-security-web-persisted-remember-me/src/main/webapp/WEB-INF/view/login.jsp
similarity index 100%
rename from spring-security-modules/spring-security-mvc-persisted-remember-me/src/main/webapp/WEB-INF/view/login.jsp
rename to spring-security-modules/spring-security-web-persisted-remember-me/src/main/webapp/WEB-INF/view/login.jsp
diff --git a/spring-security-modules/spring-security-mvc-persisted-remember-me/src/main/webapp/WEB-INF/web.xml b/spring-security-modules/spring-security-web-persisted-remember-me/src/main/webapp/WEB-INF/web.xml
similarity index 100%
rename from spring-security-modules/spring-security-mvc-persisted-remember-me/src/main/webapp/WEB-INF/web.xml
rename to spring-security-modules/spring-security-web-persisted-remember-me/src/main/webapp/WEB-INF/web.xml
diff --git a/spring-security-modules/spring-security-mvc-persisted-remember-me/src/test/java/com/baeldung/SpringContextTest.java b/spring-security-modules/spring-security-web-persisted-remember-me/src/test/java/com/baeldung/SpringContextTest.java
similarity index 100%
rename from spring-security-modules/spring-security-mvc-persisted-remember-me/src/test/java/com/baeldung/SpringContextTest.java
rename to spring-security-modules/spring-security-web-persisted-remember-me/src/test/java/com/baeldung/SpringContextTest.java
diff --git a/spring-security-modules/spring-security-mvc-persisted-remember-me/src/test/resources/.gitignore b/spring-security-modules/spring-security-web-persisted-remember-me/src/test/resources/.gitignore
similarity index 100%
rename from spring-security-modules/spring-security-mvc-persisted-remember-me/src/test/resources/.gitignore
rename to spring-security-modules/spring-security-web-persisted-remember-me/src/test/resources/.gitignore
diff --git a/spring-security-modules/spring-security-react/.gitignore b/spring-security-modules/spring-security-web-react/.gitignore
similarity index 100%
rename from spring-security-modules/spring-security-react/.gitignore
rename to spring-security-modules/spring-security-web-react/.gitignore
diff --git a/spring-security-modules/spring-security-react/README.md b/spring-security-modules/spring-security-web-react/README.md
similarity index 100%
rename from spring-security-modules/spring-security-react/README.md
rename to spring-security-modules/spring-security-web-react/README.md
diff --git a/spring-security-modules/spring-security-react/pom.xml b/spring-security-modules/spring-security-web-react/pom.xml
similarity index 98%
rename from spring-security-modules/spring-security-react/pom.xml
rename to spring-security-modules/spring-security-web-react/pom.xml
index 19240fe88c..d0ca6f8c8d 100644
--- a/spring-security-modules/spring-security-react/pom.xml
+++ b/spring-security-modules/spring-security-web-react/pom.xml
@@ -2,9 +2,9 @@
4.0.0
- spring-security-react
+ spring-security-web-react
0.1-SNAPSHOT
- spring-security-react
+ spring-security-web-react
war
diff --git a/spring-security-modules/spring-security-react/src/main/java/com/baeldung/spring/MvcConfig.java b/spring-security-modules/spring-security-web-react/src/main/java/com/baeldung/spring/MvcConfig.java
similarity index 100%
rename from spring-security-modules/spring-security-react/src/main/java/com/baeldung/spring/MvcConfig.java
rename to spring-security-modules/spring-security-web-react/src/main/java/com/baeldung/spring/MvcConfig.java
diff --git a/spring-security-modules/spring-security-react/src/main/java/com/baeldung/spring/SecSecurityConfig.java b/spring-security-modules/spring-security-web-react/src/main/java/com/baeldung/spring/SecSecurityConfig.java
similarity index 100%
rename from spring-security-modules/spring-security-react/src/main/java/com/baeldung/spring/SecSecurityConfig.java
rename to spring-security-modules/spring-security-web-react/src/main/java/com/baeldung/spring/SecSecurityConfig.java
diff --git a/spring-security-modules/spring-security-react/src/main/resources/logback.xml b/spring-security-modules/spring-security-web-react/src/main/resources/logback.xml
similarity index 100%
rename from spring-security-modules/spring-security-react/src/main/resources/logback.xml
rename to spring-security-modules/spring-security-web-react/src/main/resources/logback.xml
diff --git a/spring-security-modules/spring-security-react/src/main/webapp/WEB-INF/mvc-servlet.xml b/spring-security-modules/spring-security-web-react/src/main/webapp/WEB-INF/mvc-servlet.xml
similarity index 100%
rename from spring-security-modules/spring-security-react/src/main/webapp/WEB-INF/mvc-servlet.xml
rename to spring-security-modules/spring-security-web-react/src/main/webapp/WEB-INF/mvc-servlet.xml
diff --git a/spring-security-modules/spring-security-react/src/main/webapp/WEB-INF/view/accessDenied.jsp b/spring-security-modules/spring-security-web-react/src/main/webapp/WEB-INF/view/accessDenied.jsp
similarity index 100%
rename from spring-security-modules/spring-security-react/src/main/webapp/WEB-INF/view/accessDenied.jsp
rename to spring-security-modules/spring-security-web-react/src/main/webapp/WEB-INF/view/accessDenied.jsp
diff --git a/spring-security-modules/spring-security-react/src/main/webapp/WEB-INF/view/admin/adminpage.jsp b/spring-security-modules/spring-security-web-react/src/main/webapp/WEB-INF/view/admin/adminpage.jsp
similarity index 100%
rename from spring-security-modules/spring-security-react/src/main/webapp/WEB-INF/view/admin/adminpage.jsp
rename to spring-security-modules/spring-security-web-react/src/main/webapp/WEB-INF/view/admin/adminpage.jsp
diff --git a/spring-security-modules/spring-security-react/src/main/webapp/WEB-INF/view/anonymous.jsp b/spring-security-modules/spring-security-web-react/src/main/webapp/WEB-INF/view/anonymous.jsp
similarity index 100%
rename from spring-security-modules/spring-security-react/src/main/webapp/WEB-INF/view/anonymous.jsp
rename to spring-security-modules/spring-security-web-react/src/main/webapp/WEB-INF/view/anonymous.jsp
diff --git a/spring-security-modules/spring-security-react/src/main/webapp/WEB-INF/view/homepage.jsp b/spring-security-modules/spring-security-web-react/src/main/webapp/WEB-INF/view/homepage.jsp
similarity index 100%
rename from spring-security-modules/spring-security-react/src/main/webapp/WEB-INF/view/homepage.jsp
rename to spring-security-modules/spring-security-web-react/src/main/webapp/WEB-INF/view/homepage.jsp
diff --git a/spring-security-modules/spring-security-react/src/main/webapp/WEB-INF/view/react/.babelrc b/spring-security-modules/spring-security-web-react/src/main/webapp/WEB-INF/view/react/.babelrc
similarity index 100%
rename from spring-security-modules/spring-security-react/src/main/webapp/WEB-INF/view/react/.babelrc
rename to spring-security-modules/spring-security-web-react/src/main/webapp/WEB-INF/view/react/.babelrc
diff --git a/spring-security-modules/spring-security-react/src/main/webapp/WEB-INF/view/react/.eslintignore b/spring-security-modules/spring-security-web-react/src/main/webapp/WEB-INF/view/react/.eslintignore
similarity index 100%
rename from spring-security-modules/spring-security-react/src/main/webapp/WEB-INF/view/react/.eslintignore
rename to spring-security-modules/spring-security-web-react/src/main/webapp/WEB-INF/view/react/.eslintignore
diff --git a/spring-security-modules/spring-security-react/src/main/webapp/WEB-INF/view/react/.eslintrc b/spring-security-modules/spring-security-web-react/src/main/webapp/WEB-INF/view/react/.eslintrc
similarity index 100%
rename from spring-security-modules/spring-security-react/src/main/webapp/WEB-INF/view/react/.eslintrc
rename to spring-security-modules/spring-security-web-react/src/main/webapp/WEB-INF/view/react/.eslintrc
diff --git a/spring-security-modules/spring-security-react/src/main/webapp/WEB-INF/view/react/.gitignore b/spring-security-modules/spring-security-web-react/src/main/webapp/WEB-INF/view/react/.gitignore
similarity index 100%
rename from spring-security-modules/spring-security-react/src/main/webapp/WEB-INF/view/react/.gitignore
rename to spring-security-modules/spring-security-web-react/src/main/webapp/WEB-INF/view/react/.gitignore
diff --git a/spring-security-modules/spring-security-react/src/main/webapp/WEB-INF/view/react/package-lock.json b/spring-security-modules/spring-security-web-react/src/main/webapp/WEB-INF/view/react/package-lock.json
similarity index 100%
rename from spring-security-modules/spring-security-react/src/main/webapp/WEB-INF/view/react/package-lock.json
rename to spring-security-modules/spring-security-web-react/src/main/webapp/WEB-INF/view/react/package-lock.json
diff --git a/spring-security-modules/spring-security-react/src/main/webapp/WEB-INF/view/react/package.json b/spring-security-modules/spring-security-web-react/src/main/webapp/WEB-INF/view/react/package.json
similarity index 100%
rename from spring-security-modules/spring-security-react/src/main/webapp/WEB-INF/view/react/package.json
rename to spring-security-modules/spring-security-web-react/src/main/webapp/WEB-INF/view/react/package.json
diff --git a/spring-security-modules/spring-security-react/src/main/webapp/WEB-INF/view/react/public/favicon.ico b/spring-security-modules/spring-security-web-react/src/main/webapp/WEB-INF/view/react/public/favicon.ico
similarity index 100%
rename from spring-security-modules/spring-security-react/src/main/webapp/WEB-INF/view/react/public/favicon.ico
rename to spring-security-modules/spring-security-web-react/src/main/webapp/WEB-INF/view/react/public/favicon.ico
diff --git a/spring-security-modules/spring-security-react/src/main/webapp/WEB-INF/view/react/public/index.html b/spring-security-modules/spring-security-web-react/src/main/webapp/WEB-INF/view/react/public/index.html
similarity index 100%
rename from spring-security-modules/spring-security-react/src/main/webapp/WEB-INF/view/react/public/index.html
rename to spring-security-modules/spring-security-web-react/src/main/webapp/WEB-INF/view/react/public/index.html
diff --git a/spring-security-modules/spring-security-react/src/main/webapp/WEB-INF/view/react/public/manifest.json b/spring-security-modules/spring-security-web-react/src/main/webapp/WEB-INF/view/react/public/manifest.json
similarity index 100%
rename from spring-security-modules/spring-security-react/src/main/webapp/WEB-INF/view/react/public/manifest.json
rename to spring-security-modules/spring-security-web-react/src/main/webapp/WEB-INF/view/react/public/manifest.json
diff --git a/spring-security-modules/spring-security-react/src/main/webapp/WEB-INF/view/react/src/Form.js b/spring-security-modules/spring-security-web-react/src/main/webapp/WEB-INF/view/react/src/Form.js
similarity index 100%
rename from spring-security-modules/spring-security-react/src/main/webapp/WEB-INF/view/react/src/Form.js
rename to spring-security-modules/spring-security-web-react/src/main/webapp/WEB-INF/view/react/src/Form.js
diff --git a/spring-security-modules/spring-security-react/src/main/webapp/WEB-INF/view/react/src/Input.js b/spring-security-modules/spring-security-web-react/src/main/webapp/WEB-INF/view/react/src/Input.js
similarity index 100%
rename from spring-security-modules/spring-security-react/src/main/webapp/WEB-INF/view/react/src/Input.js
rename to spring-security-modules/spring-security-web-react/src/main/webapp/WEB-INF/view/react/src/Input.js
diff --git a/spring-security-modules/spring-security-react/src/main/webapp/WEB-INF/view/react/src/index.css b/spring-security-modules/spring-security-web-react/src/main/webapp/WEB-INF/view/react/src/index.css
similarity index 100%
rename from spring-security-modules/spring-security-react/src/main/webapp/WEB-INF/view/react/src/index.css
rename to spring-security-modules/spring-security-web-react/src/main/webapp/WEB-INF/view/react/src/index.css
diff --git a/spring-security-modules/spring-security-react/src/main/webapp/WEB-INF/view/react/src/index.js b/spring-security-modules/spring-security-web-react/src/main/webapp/WEB-INF/view/react/src/index.js
similarity index 100%
rename from spring-security-modules/spring-security-react/src/main/webapp/WEB-INF/view/react/src/index.js
rename to spring-security-modules/spring-security-web-react/src/main/webapp/WEB-INF/view/react/src/index.js
diff --git a/spring-security-modules/spring-security-react/src/main/webapp/WEB-INF/view/react/src/registerServiceWorker.js b/spring-security-modules/spring-security-web-react/src/main/webapp/WEB-INF/view/react/src/registerServiceWorker.js
similarity index 100%
rename from spring-security-modules/spring-security-react/src/main/webapp/WEB-INF/view/react/src/registerServiceWorker.js
rename to spring-security-modules/spring-security-web-react/src/main/webapp/WEB-INF/view/react/src/registerServiceWorker.js
diff --git a/spring-security-modules/spring-security-react/src/main/webapp/WEB-INF/web.xml b/spring-security-modules/spring-security-web-react/src/main/webapp/WEB-INF/web.xml
similarity index 100%
rename from spring-security-modules/spring-security-react/src/main/webapp/WEB-INF/web.xml
rename to spring-security-modules/spring-security-web-react/src/main/webapp/WEB-INF/web.xml
diff --git a/spring-security-modules/spring-security-react/src/test/java/com/baeldung/SpringContextTest.java b/spring-security-modules/spring-security-web-react/src/test/java/com/baeldung/SpringContextTest.java
similarity index 100%
rename from spring-security-modules/spring-security-react/src/test/java/com/baeldung/SpringContextTest.java
rename to spring-security-modules/spring-security-web-react/src/test/java/com/baeldung/SpringContextTest.java
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-mvc-socket/.gitignore b/spring-security-modules/spring-security-web-sockets/.gitignore
similarity index 100%
rename from spring-security-modules/spring-security-mvc-socket/.gitignore
rename to spring-security-modules/spring-security-web-sockets/.gitignore
diff --git a/spring-security-modules/spring-security-mvc-socket/README.md b/spring-security-modules/spring-security-web-sockets/README.md
similarity index 95%
rename from spring-security-modules/spring-security-mvc-socket/README.md
rename to spring-security-modules/spring-security-web-sockets/README.md
index d134d19c84..14ef0c8b99 100644
--- a/spring-security-modules/spring-security-mvc-socket/README.md
+++ b/spring-security-modules/spring-security-web-sockets/README.md
@@ -1,4 +1,4 @@
-## Spring Security MVC Socket
+## Spring Security Web Sockets
This module contains articles about WebSockets with Spring Security
diff --git a/spring-security-modules/spring-security-mvc-socket/pom.xml b/spring-security-modules/spring-security-web-sockets/pom.xml
similarity index 98%
rename from spring-security-modules/spring-security-mvc-socket/pom.xml
rename to spring-security-modules/spring-security-web-sockets/pom.xml
index 6515121f9f..3a3ec47af5 100644
--- a/spring-security-modules/spring-security-mvc-socket/pom.xml
+++ b/spring-security-modules/spring-security-web-sockets/pom.xml
@@ -3,9 +3,9 @@
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
4.0.0
com.baeldung.springsecuredsockets
- spring-security-mvc-socket
+ spring-security-web-sockets
1.0.0
- spring-security-mvc-socket
+ spring-security-web-sockets
war
diff --git a/spring-security-modules/spring-security-mvc-socket/src/main/java/com/baeldung/springsecuredsockets/Constants.java b/spring-security-modules/spring-security-web-sockets/src/main/java/com/baeldung/springsecuredsockets/Constants.java
similarity index 100%
rename from spring-security-modules/spring-security-mvc-socket/src/main/java/com/baeldung/springsecuredsockets/Constants.java
rename to spring-security-modules/spring-security-web-sockets/src/main/java/com/baeldung/springsecuredsockets/Constants.java
diff --git a/spring-security-modules/spring-security-mvc-socket/src/main/java/com/baeldung/springsecuredsockets/config/AppConfig.java b/spring-security-modules/spring-security-web-sockets/src/main/java/com/baeldung/springsecuredsockets/config/AppConfig.java
similarity index 100%
rename from spring-security-modules/spring-security-mvc-socket/src/main/java/com/baeldung/springsecuredsockets/config/AppConfig.java
rename to spring-security-modules/spring-security-web-sockets/src/main/java/com/baeldung/springsecuredsockets/config/AppConfig.java
diff --git a/spring-security-modules/spring-security-mvc-socket/src/main/java/com/baeldung/springsecuredsockets/config/DataStoreConfig.java b/spring-security-modules/spring-security-web-sockets/src/main/java/com/baeldung/springsecuredsockets/config/DataStoreConfig.java
similarity index 100%
rename from spring-security-modules/spring-security-mvc-socket/src/main/java/com/baeldung/springsecuredsockets/config/DataStoreConfig.java
rename to spring-security-modules/spring-security-web-sockets/src/main/java/com/baeldung/springsecuredsockets/config/DataStoreConfig.java
diff --git a/spring-security-modules/spring-security-mvc-socket/src/main/java/com/baeldung/springsecuredsockets/config/SecurityConfig.java b/spring-security-modules/spring-security-web-sockets/src/main/java/com/baeldung/springsecuredsockets/config/SecurityConfig.java
similarity index 100%
rename from spring-security-modules/spring-security-mvc-socket/src/main/java/com/baeldung/springsecuredsockets/config/SecurityConfig.java
rename to spring-security-modules/spring-security-web-sockets/src/main/java/com/baeldung/springsecuredsockets/config/SecurityConfig.java
diff --git a/spring-security-modules/spring-security-mvc-socket/src/main/java/com/baeldung/springsecuredsockets/config/SocketBrokerConfig.java b/spring-security-modules/spring-security-web-sockets/src/main/java/com/baeldung/springsecuredsockets/config/SocketBrokerConfig.java
similarity index 100%
rename from spring-security-modules/spring-security-mvc-socket/src/main/java/com/baeldung/springsecuredsockets/config/SocketBrokerConfig.java
rename to spring-security-modules/spring-security-web-sockets/src/main/java/com/baeldung/springsecuredsockets/config/SocketBrokerConfig.java
diff --git a/spring-security-modules/spring-security-mvc-socket/src/main/java/com/baeldung/springsecuredsockets/config/SocketSecurityConfig.java b/spring-security-modules/spring-security-web-sockets/src/main/java/com/baeldung/springsecuredsockets/config/SocketSecurityConfig.java
similarity index 100%
rename from spring-security-modules/spring-security-mvc-socket/src/main/java/com/baeldung/springsecuredsockets/config/SocketSecurityConfig.java
rename to spring-security-modules/spring-security-web-sockets/src/main/java/com/baeldung/springsecuredsockets/config/SocketSecurityConfig.java
diff --git a/spring-security-modules/spring-security-mvc-socket/src/main/java/com/baeldung/springsecuredsockets/config/WebAppInitializer.java b/spring-security-modules/spring-security-web-sockets/src/main/java/com/baeldung/springsecuredsockets/config/WebAppInitializer.java
similarity index 100%
rename from spring-security-modules/spring-security-mvc-socket/src/main/java/com/baeldung/springsecuredsockets/config/WebAppInitializer.java
rename to spring-security-modules/spring-security-web-sockets/src/main/java/com/baeldung/springsecuredsockets/config/WebAppInitializer.java
diff --git a/spring-security-modules/spring-security-mvc-socket/src/main/java/com/baeldung/springsecuredsockets/controllers/CsrfTokenController.java b/spring-security-modules/spring-security-web-sockets/src/main/java/com/baeldung/springsecuredsockets/controllers/CsrfTokenController.java
similarity index 100%
rename from spring-security-modules/spring-security-mvc-socket/src/main/java/com/baeldung/springsecuredsockets/controllers/CsrfTokenController.java
rename to spring-security-modules/spring-security-web-sockets/src/main/java/com/baeldung/springsecuredsockets/controllers/CsrfTokenController.java
diff --git a/spring-security-modules/spring-security-mvc-socket/src/main/java/com/baeldung/springsecuredsockets/controllers/SocketController.java b/spring-security-modules/spring-security-web-sockets/src/main/java/com/baeldung/springsecuredsockets/controllers/SocketController.java
similarity index 100%
rename from spring-security-modules/spring-security-mvc-socket/src/main/java/com/baeldung/springsecuredsockets/controllers/SocketController.java
rename to spring-security-modules/spring-security-web-sockets/src/main/java/com/baeldung/springsecuredsockets/controllers/SocketController.java
diff --git a/spring-security-modules/spring-security-mvc-socket/src/main/java/com/baeldung/springsecuredsockets/domain/Role.java b/spring-security-modules/spring-security-web-sockets/src/main/java/com/baeldung/springsecuredsockets/domain/Role.java
similarity index 100%
rename from spring-security-modules/spring-security-mvc-socket/src/main/java/com/baeldung/springsecuredsockets/domain/Role.java
rename to spring-security-modules/spring-security-web-sockets/src/main/java/com/baeldung/springsecuredsockets/domain/Role.java
diff --git a/spring-security-modules/spring-security-mvc-socket/src/main/java/com/baeldung/springsecuredsockets/domain/User.java b/spring-security-modules/spring-security-web-sockets/src/main/java/com/baeldung/springsecuredsockets/domain/User.java
similarity index 100%
rename from spring-security-modules/spring-security-mvc-socket/src/main/java/com/baeldung/springsecuredsockets/domain/User.java
rename to spring-security-modules/spring-security-web-sockets/src/main/java/com/baeldung/springsecuredsockets/domain/User.java
diff --git a/spring-security-modules/spring-security-mvc-socket/src/main/java/com/baeldung/springsecuredsockets/repositories/UserRepository.java b/spring-security-modules/spring-security-web-sockets/src/main/java/com/baeldung/springsecuredsockets/repositories/UserRepository.java
similarity index 100%
rename from spring-security-modules/spring-security-mvc-socket/src/main/java/com/baeldung/springsecuredsockets/repositories/UserRepository.java
rename to spring-security-modules/spring-security-web-sockets/src/main/java/com/baeldung/springsecuredsockets/repositories/UserRepository.java
diff --git a/spring-security-modules/spring-security-mvc-socket/src/main/java/com/baeldung/springsecuredsockets/security/CustomAccessDeniedHandler.java b/spring-security-modules/spring-security-web-sockets/src/main/java/com/baeldung/springsecuredsockets/security/CustomAccessDeniedHandler.java
similarity index 100%
rename from spring-security-modules/spring-security-mvc-socket/src/main/java/com/baeldung/springsecuredsockets/security/CustomAccessDeniedHandler.java
rename to spring-security-modules/spring-security-web-sockets/src/main/java/com/baeldung/springsecuredsockets/security/CustomAccessDeniedHandler.java
diff --git a/spring-security-modules/spring-security-mvc-socket/src/main/java/com/baeldung/springsecuredsockets/security/CustomDaoAuthenticationProvider.java b/spring-security-modules/spring-security-web-sockets/src/main/java/com/baeldung/springsecuredsockets/security/CustomDaoAuthenticationProvider.java
similarity index 100%
rename from spring-security-modules/spring-security-mvc-socket/src/main/java/com/baeldung/springsecuredsockets/security/CustomDaoAuthenticationProvider.java
rename to spring-security-modules/spring-security-web-sockets/src/main/java/com/baeldung/springsecuredsockets/security/CustomDaoAuthenticationProvider.java
diff --git a/spring-security-modules/spring-security-mvc-socket/src/main/java/com/baeldung/springsecuredsockets/security/CustomLoginSuccessHandler.java b/spring-security-modules/spring-security-web-sockets/src/main/java/com/baeldung/springsecuredsockets/security/CustomLoginSuccessHandler.java
similarity index 100%
rename from spring-security-modules/spring-security-mvc-socket/src/main/java/com/baeldung/springsecuredsockets/security/CustomLoginSuccessHandler.java
rename to spring-security-modules/spring-security-web-sockets/src/main/java/com/baeldung/springsecuredsockets/security/CustomLoginSuccessHandler.java
diff --git a/spring-security-modules/spring-security-mvc-socket/src/main/java/com/baeldung/springsecuredsockets/security/CustomLogoutSuccessHandler.java b/spring-security-modules/spring-security-web-sockets/src/main/java/com/baeldung/springsecuredsockets/security/CustomLogoutSuccessHandler.java
similarity index 100%
rename from spring-security-modules/spring-security-mvc-socket/src/main/java/com/baeldung/springsecuredsockets/security/CustomLogoutSuccessHandler.java
rename to spring-security-modules/spring-security-web-sockets/src/main/java/com/baeldung/springsecuredsockets/security/CustomLogoutSuccessHandler.java
diff --git a/spring-security-modules/spring-security-mvc-socket/src/main/java/com/baeldung/springsecuredsockets/security/CustomUserDetailsService.java b/spring-security-modules/spring-security-web-sockets/src/main/java/com/baeldung/springsecuredsockets/security/CustomUserDetailsService.java
similarity index 100%
rename from spring-security-modules/spring-security-mvc-socket/src/main/java/com/baeldung/springsecuredsockets/security/CustomUserDetailsService.java
rename to spring-security-modules/spring-security-web-sockets/src/main/java/com/baeldung/springsecuredsockets/security/CustomUserDetailsService.java
diff --git a/spring-security-modules/spring-security-mvc-socket/src/main/java/com/baeldung/springsecuredsockets/security/SecurityWebApplicationInitializer.java b/spring-security-modules/spring-security-web-sockets/src/main/java/com/baeldung/springsecuredsockets/security/SecurityWebApplicationInitializer.java
similarity index 100%
rename from spring-security-modules/spring-security-mvc-socket/src/main/java/com/baeldung/springsecuredsockets/security/SecurityWebApplicationInitializer.java
rename to spring-security-modules/spring-security-web-sockets/src/main/java/com/baeldung/springsecuredsockets/security/SecurityWebApplicationInitializer.java
diff --git a/spring-security-modules/spring-security-mvc-socket/src/main/java/com/baeldung/springsecuredsockets/transfer/socket/Message.java b/spring-security-modules/spring-security-web-sockets/src/main/java/com/baeldung/springsecuredsockets/transfer/socket/Message.java
similarity index 100%
rename from spring-security-modules/spring-security-mvc-socket/src/main/java/com/baeldung/springsecuredsockets/transfer/socket/Message.java
rename to spring-security-modules/spring-security-web-sockets/src/main/java/com/baeldung/springsecuredsockets/transfer/socket/Message.java
diff --git a/spring-security-modules/spring-security-mvc-socket/src/main/java/com/baeldung/springsecuredsockets/transfer/socket/OutputMessage.java b/spring-security-modules/spring-security-web-sockets/src/main/java/com/baeldung/springsecuredsockets/transfer/socket/OutputMessage.java
similarity index 100%
rename from spring-security-modules/spring-security-mvc-socket/src/main/java/com/baeldung/springsecuredsockets/transfer/socket/OutputMessage.java
rename to spring-security-modules/spring-security-web-sockets/src/main/java/com/baeldung/springsecuredsockets/transfer/socket/OutputMessage.java
diff --git a/spring-security-modules/spring-security-mvc-socket/src/main/java/com/baeldung/springsecuredsockets/transfer/user/CustomUserDetails.java b/spring-security-modules/spring-security-web-sockets/src/main/java/com/baeldung/springsecuredsockets/transfer/user/CustomUserDetails.java
similarity index 100%
rename from spring-security-modules/spring-security-mvc-socket/src/main/java/com/baeldung/springsecuredsockets/transfer/user/CustomUserDetails.java
rename to spring-security-modules/spring-security-web-sockets/src/main/java/com/baeldung/springsecuredsockets/transfer/user/CustomUserDetails.java
diff --git a/spring-security-modules/spring-security-mvc-socket/src/main/java/com/baeldung/springsockets/config/WebSocketMessageBrokerConfig.java b/spring-security-modules/spring-security-web-sockets/src/main/java/com/baeldung/springsockets/config/WebSocketMessageBrokerConfig.java
similarity index 100%
rename from spring-security-modules/spring-security-mvc-socket/src/main/java/com/baeldung/springsockets/config/WebSocketMessageBrokerConfig.java
rename to spring-security-modules/spring-security-web-sockets/src/main/java/com/baeldung/springsockets/config/WebSocketMessageBrokerConfig.java
diff --git a/spring-security-modules/spring-security-mvc-socket/src/main/java/com/baeldung/springsockets/controllers/RestAPIController.java b/spring-security-modules/spring-security-web-sockets/src/main/java/com/baeldung/springsockets/controllers/RestAPIController.java
similarity index 100%
rename from spring-security-modules/spring-security-mvc-socket/src/main/java/com/baeldung/springsockets/controllers/RestAPIController.java
rename to spring-security-modules/spring-security-web-sockets/src/main/java/com/baeldung/springsockets/controllers/RestAPIController.java
diff --git a/spring-security-modules/spring-security-mvc-socket/src/main/java/com/baeldung/springsockets/controllers/WebSocketController.java b/spring-security-modules/spring-security-web-sockets/src/main/java/com/baeldung/springsockets/controllers/WebSocketController.java
similarity index 100%
rename from spring-security-modules/spring-security-mvc-socket/src/main/java/com/baeldung/springsockets/controllers/WebSocketController.java
rename to spring-security-modules/spring-security-web-sockets/src/main/java/com/baeldung/springsockets/controllers/WebSocketController.java
diff --git a/spring-security-modules/spring-security-mvc-socket/src/main/java/com/baeldung/springsockets/models/Greeting.java b/spring-security-modules/spring-security-web-sockets/src/main/java/com/baeldung/springsockets/models/Greeting.java
similarity index 100%
rename from spring-security-modules/spring-security-mvc-socket/src/main/java/com/baeldung/springsockets/models/Greeting.java
rename to spring-security-modules/spring-security-web-sockets/src/main/java/com/baeldung/springsockets/models/Greeting.java
diff --git a/spring-security-modules/spring-security-mvc-socket/src/main/java/com/baeldung/springsockets/models/Message.java b/spring-security-modules/spring-security-web-sockets/src/main/java/com/baeldung/springsockets/models/Message.java
similarity index 100%
rename from spring-security-modules/spring-security-mvc-socket/src/main/java/com/baeldung/springsockets/models/Message.java
rename to spring-security-modules/spring-security-web-sockets/src/main/java/com/baeldung/springsockets/models/Message.java
diff --git a/spring-security-modules/spring-security-mvc-socket/src/main/resources/data.sql b/spring-security-modules/spring-security-web-sockets/src/main/resources/data.sql
similarity index 100%
rename from spring-security-modules/spring-security-mvc-socket/src/main/resources/data.sql
rename to spring-security-modules/spring-security-web-sockets/src/main/resources/data.sql
diff --git a/spring-security-modules/spring-security-sso/spring-security-sso-ui/src/main/resources/logback.xml b/spring-security-modules/spring-security-web-sockets/src/main/resources/logback.xml
similarity index 100%
rename from spring-security-modules/spring-security-sso/spring-security-sso-ui/src/main/resources/logback.xml
rename to spring-security-modules/spring-security-web-sockets/src/main/resources/logback.xml
diff --git a/spring-security-modules/spring-security-mvc-socket/src/main/resources/schema.sql b/spring-security-modules/spring-security-web-sockets/src/main/resources/schema.sql
similarity index 100%
rename from spring-security-modules/spring-security-mvc-socket/src/main/resources/schema.sql
rename to spring-security-modules/spring-security-web-sockets/src/main/resources/schema.sql
diff --git a/spring-security-modules/spring-security-mvc-socket/src/main/resources/static/rest.html b/spring-security-modules/spring-security-web-sockets/src/main/resources/static/rest.html
similarity index 100%
rename from spring-security-modules/spring-security-mvc-socket/src/main/resources/static/rest.html
rename to spring-security-modules/spring-security-web-sockets/src/main/resources/static/rest.html
diff --git a/spring-security-modules/spring-security-mvc-socket/src/main/resources/static/rest.js b/spring-security-modules/spring-security-web-sockets/src/main/resources/static/rest.js
similarity index 100%
rename from spring-security-modules/spring-security-mvc-socket/src/main/resources/static/rest.js
rename to spring-security-modules/spring-security-web-sockets/src/main/resources/static/rest.js
diff --git a/spring-security-modules/spring-security-mvc-socket/src/main/resources/static/ws.html b/spring-security-modules/spring-security-web-sockets/src/main/resources/static/ws.html
similarity index 100%
rename from spring-security-modules/spring-security-mvc-socket/src/main/resources/static/ws.html
rename to spring-security-modules/spring-security-web-sockets/src/main/resources/static/ws.html
diff --git a/spring-security-modules/spring-security-mvc-socket/src/main/resources/static/ws.js b/spring-security-modules/spring-security-web-sockets/src/main/resources/static/ws.js
similarity index 100%
rename from spring-security-modules/spring-security-mvc-socket/src/main/resources/static/ws.js
rename to spring-security-modules/spring-security-web-sockets/src/main/resources/static/ws.js
diff --git a/spring-security-modules/spring-security-mvc-socket/src/main/webapp/WEB-INF/jsp/denied.jsp b/spring-security-modules/spring-security-web-sockets/src/main/webapp/WEB-INF/jsp/denied.jsp
similarity index 100%
rename from spring-security-modules/spring-security-mvc-socket/src/main/webapp/WEB-INF/jsp/denied.jsp
rename to spring-security-modules/spring-security-web-sockets/src/main/webapp/WEB-INF/jsp/denied.jsp
diff --git a/spring-security-modules/spring-security-mvc-socket/src/main/webapp/WEB-INF/jsp/index.jsp b/spring-security-modules/spring-security-web-sockets/src/main/webapp/WEB-INF/jsp/index.jsp
similarity index 100%
rename from spring-security-modules/spring-security-mvc-socket/src/main/webapp/WEB-INF/jsp/index.jsp
rename to spring-security-modules/spring-security-web-sockets/src/main/webapp/WEB-INF/jsp/index.jsp
diff --git a/spring-security-modules/spring-security-mvc-socket/src/main/webapp/WEB-INF/jsp/login.jsp b/spring-security-modules/spring-security-web-sockets/src/main/webapp/WEB-INF/jsp/login.jsp
similarity index 100%
rename from spring-security-modules/spring-security-mvc-socket/src/main/webapp/WEB-INF/jsp/login.jsp
rename to spring-security-modules/spring-security-web-sockets/src/main/webapp/WEB-INF/jsp/login.jsp
diff --git a/spring-security-modules/spring-security-mvc-socket/src/main/webapp/WEB-INF/jsp/socket.jsp b/spring-security-modules/spring-security-web-sockets/src/main/webapp/WEB-INF/jsp/socket.jsp
similarity index 100%
rename from spring-security-modules/spring-security-mvc-socket/src/main/webapp/WEB-INF/jsp/socket.jsp
rename to spring-security-modules/spring-security-web-sockets/src/main/webapp/WEB-INF/jsp/socket.jsp
diff --git a/spring-security-modules/spring-security-mvc-socket/src/main/webapp/WEB-INF/jsp/success.jsp b/spring-security-modules/spring-security-web-sockets/src/main/webapp/WEB-INF/jsp/success.jsp
similarity index 100%
rename from spring-security-modules/spring-security-mvc-socket/src/main/webapp/WEB-INF/jsp/success.jsp
rename to spring-security-modules/spring-security-web-sockets/src/main/webapp/WEB-INF/jsp/success.jsp
diff --git a/spring-security-modules/spring-security-mvc-socket/src/main/webapp/resources/scripts/app.js b/spring-security-modules/spring-security-web-sockets/src/main/webapp/resources/scripts/app.js
similarity index 100%
rename from spring-security-modules/spring-security-mvc-socket/src/main/webapp/resources/scripts/app.js
rename to spring-security-modules/spring-security-web-sockets/src/main/webapp/resources/scripts/app.js
diff --git a/spring-security-modules/spring-security-mvc-socket/src/main/webapp/resources/scripts/controllers/indexController.js b/spring-security-modules/spring-security-web-sockets/src/main/webapp/resources/scripts/controllers/indexController.js
similarity index 100%
rename from spring-security-modules/spring-security-mvc-socket/src/main/webapp/resources/scripts/controllers/indexController.js
rename to spring-security-modules/spring-security-web-sockets/src/main/webapp/resources/scripts/controllers/indexController.js
diff --git a/spring-security-modules/spring-security-mvc-socket/src/main/webapp/resources/scripts/controllers/socketController.js b/spring-security-modules/spring-security-web-sockets/src/main/webapp/resources/scripts/controllers/socketController.js
similarity index 100%
rename from spring-security-modules/spring-security-mvc-socket/src/main/webapp/resources/scripts/controllers/socketController.js
rename to spring-security-modules/spring-security-web-sockets/src/main/webapp/resources/scripts/controllers/socketController.js
diff --git a/spring-security-modules/spring-security-mvc-socket/src/main/webapp/resources/scripts/controllers/successController.js b/spring-security-modules/spring-security-web-sockets/src/main/webapp/resources/scripts/controllers/successController.js
similarity index 100%
rename from spring-security-modules/spring-security-mvc-socket/src/main/webapp/resources/scripts/controllers/successController.js
rename to spring-security-modules/spring-security-web-sockets/src/main/webapp/resources/scripts/controllers/successController.js
diff --git a/spring-security-modules/spring-security-mvc-socket/src/main/webapp/resources/scripts/routes/router.js b/spring-security-modules/spring-security-web-sockets/src/main/webapp/resources/scripts/routes/router.js
similarity index 100%
rename from spring-security-modules/spring-security-mvc-socket/src/main/webapp/resources/scripts/routes/router.js
rename to spring-security-modules/spring-security-web-sockets/src/main/webapp/resources/scripts/routes/router.js
diff --git a/spring-security-modules/spring-security-mvc-socket/src/main/webapp/resources/scripts/services/SocketService.js b/spring-security-modules/spring-security-web-sockets/src/main/webapp/resources/scripts/services/SocketService.js
similarity index 100%
rename from spring-security-modules/spring-security-mvc-socket/src/main/webapp/resources/scripts/services/SocketService.js
rename to spring-security-modules/spring-security-web-sockets/src/main/webapp/resources/scripts/services/SocketService.js
diff --git a/spring-security-modules/spring-security-mvc-socket/src/main/webapp/resources/styles/app.css b/spring-security-modules/spring-security-web-sockets/src/main/webapp/resources/styles/app.css
similarity index 100%
rename from spring-security-modules/spring-security-mvc-socket/src/main/webapp/resources/styles/app.css
rename to spring-security-modules/spring-security-web-sockets/src/main/webapp/resources/styles/app.css
diff --git a/spring-security-modules/spring-security-mvc-socket/src/main/webapp/resources/styles/denied.css b/spring-security-modules/spring-security-web-sockets/src/main/webapp/resources/styles/denied.css
similarity index 100%
rename from spring-security-modules/spring-security-mvc-socket/src/main/webapp/resources/styles/denied.css
rename to spring-security-modules/spring-security-web-sockets/src/main/webapp/resources/styles/denied.css
diff --git a/spring-security-modules/spring-security-mvc-socket/src/main/webapp/resources/styles/index.css b/spring-security-modules/spring-security-web-sockets/src/main/webapp/resources/styles/index.css
similarity index 100%
rename from spring-security-modules/spring-security-mvc-socket/src/main/webapp/resources/styles/index.css
rename to spring-security-modules/spring-security-web-sockets/src/main/webapp/resources/styles/index.css
diff --git a/spring-security-modules/spring-security-mvc-socket/src/main/webapp/resources/styles/login.css b/spring-security-modules/spring-security-web-sockets/src/main/webapp/resources/styles/login.css
similarity index 100%
rename from spring-security-modules/spring-security-mvc-socket/src/main/webapp/resources/styles/login.css
rename to spring-security-modules/spring-security-web-sockets/src/main/webapp/resources/styles/login.css
diff --git a/spring-security-modules/spring-security-mvc-socket/src/main/webapp/resources/styles/socket.css b/spring-security-modules/spring-security-web-sockets/src/main/webapp/resources/styles/socket.css
similarity index 100%
rename from spring-security-modules/spring-security-mvc-socket/src/main/webapp/resources/styles/socket.css
rename to spring-security-modules/spring-security-web-sockets/src/main/webapp/resources/styles/socket.css
diff --git a/spring-security-modules/spring-security-mvc-socket/src/main/webapp/resources/styles/success.css b/spring-security-modules/spring-security-web-sockets/src/main/webapp/resources/styles/success.css
similarity index 100%
rename from spring-security-modules/spring-security-mvc-socket/src/main/webapp/resources/styles/success.css
rename to spring-security-modules/spring-security-web-sockets/src/main/webapp/resources/styles/success.css
diff --git a/spring-security-modules/spring-security-mvc-socket/src/main/webapp/resources/vendor/angular/angular-route.min.js b/spring-security-modules/spring-security-web-sockets/src/main/webapp/resources/vendor/angular/angular-route.min.js
similarity index 100%
rename from spring-security-modules/spring-security-mvc-socket/src/main/webapp/resources/vendor/angular/angular-route.min.js
rename to spring-security-modules/spring-security-web-sockets/src/main/webapp/resources/vendor/angular/angular-route.min.js
diff --git a/spring-security-modules/spring-security-mvc-socket/src/main/webapp/resources/vendor/angular/angular-route.min.js.map b/spring-security-modules/spring-security-web-sockets/src/main/webapp/resources/vendor/angular/angular-route.min.js.map
similarity index 100%
rename from spring-security-modules/spring-security-mvc-socket/src/main/webapp/resources/vendor/angular/angular-route.min.js.map
rename to spring-security-modules/spring-security-web-sockets/src/main/webapp/resources/vendor/angular/angular-route.min.js.map
diff --git a/spring-security-modules/spring-security-mvc-socket/src/main/webapp/resources/vendor/angular/angular.min.js b/spring-security-modules/spring-security-web-sockets/src/main/webapp/resources/vendor/angular/angular.min.js
similarity index 100%
rename from spring-security-modules/spring-security-mvc-socket/src/main/webapp/resources/vendor/angular/angular.min.js
rename to spring-security-modules/spring-security-web-sockets/src/main/webapp/resources/vendor/angular/angular.min.js
diff --git a/spring-security-modules/spring-security-mvc-socket/src/main/webapp/resources/vendor/angular/angular.min.js.map b/spring-security-modules/spring-security-web-sockets/src/main/webapp/resources/vendor/angular/angular.min.js.map
similarity index 100%
rename from spring-security-modules/spring-security-mvc-socket/src/main/webapp/resources/vendor/angular/angular.min.js.map
rename to spring-security-modules/spring-security-web-sockets/src/main/webapp/resources/vendor/angular/angular.min.js.map
diff --git a/spring-security-modules/spring-security-mvc-socket/src/main/webapp/resources/vendor/jquery/jquery.min.js b/spring-security-modules/spring-security-web-sockets/src/main/webapp/resources/vendor/jquery/jquery.min.js
similarity index 100%
rename from spring-security-modules/spring-security-mvc-socket/src/main/webapp/resources/vendor/jquery/jquery.min.js
rename to spring-security-modules/spring-security-web-sockets/src/main/webapp/resources/vendor/jquery/jquery.min.js
diff --git a/spring-security-modules/spring-security-mvc-socket/src/main/webapp/resources/vendor/sockjs/sockjs.min.js b/spring-security-modules/spring-security-web-sockets/src/main/webapp/resources/vendor/sockjs/sockjs.min.js
similarity index 100%
rename from spring-security-modules/spring-security-mvc-socket/src/main/webapp/resources/vendor/sockjs/sockjs.min.js
rename to spring-security-modules/spring-security-web-sockets/src/main/webapp/resources/vendor/sockjs/sockjs.min.js
diff --git a/spring-security-modules/spring-security-mvc-socket/src/main/webapp/resources/vendor/sockjs/sockjs.min.js.map b/spring-security-modules/spring-security-web-sockets/src/main/webapp/resources/vendor/sockjs/sockjs.min.js.map
similarity index 100%
rename from spring-security-modules/spring-security-mvc-socket/src/main/webapp/resources/vendor/sockjs/sockjs.min.js.map
rename to spring-security-modules/spring-security-web-sockets/src/main/webapp/resources/vendor/sockjs/sockjs.min.js.map
diff --git a/spring-security-modules/spring-security-mvc-socket/src/main/webapp/resources/vendor/stomp/stomp.min.js b/spring-security-modules/spring-security-web-sockets/src/main/webapp/resources/vendor/stomp/stomp.min.js
similarity index 100%
rename from spring-security-modules/spring-security-mvc-socket/src/main/webapp/resources/vendor/stomp/stomp.min.js
rename to spring-security-modules/spring-security-web-sockets/src/main/webapp/resources/vendor/stomp/stomp.min.js
diff --git a/spring-security-modules/spring-security-mvc-socket/src/test/java/com/baeldung/SpringContextTest.java b/spring-security-modules/spring-security-web-sockets/src/test/java/com/baeldung/SpringContextTest.java
similarity index 100%
rename from spring-security-modules/spring-security-mvc-socket/src/test/java/com/baeldung/SpringContextTest.java
rename to spring-security-modules/spring-security-web-sockets/src/test/java/com/baeldung/SpringContextTest.java
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-web-thymeleaf/src/main/resources/application.properties b/spring-security-modules/spring-security-web-thymeleaf/src/main/resources/application.properties
new file mode 100644
index 0000000000..e69de29bb2
diff --git a/spring-security-modules/spring-security-stormpath/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-stormpath/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-thymeleaf/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-thymeleaf/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-basic-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-basic-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-security-modules/spring-security-x509/spring-security-x509-client-auth/src/main/resources/logback.xml b/spring-security-modules/spring-security-x509/spring-security-x509-client-auth/src/main/resources/logback.xml
deleted file mode 100644
index 7d900d8ea8..0000000000
--- a/spring-security-modules/spring-security-x509/spring-security-x509-client-auth/src/main/resources/logback.xml
+++ /dev/null
@@ -1,13 +0,0 @@
-
-
-
-
- %d{HH:mm:ss.SSS} [%thread] %-5level %logger{36} - %msg%n
-
-
-
-
-
-
-
-
\ No newline at end of file
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/.gitignore b/spring-webflux-threads/.gitignore
deleted file mode 100644
index 82eca336e3..0000000000
--- a/spring-webflux-threads/.gitignore
+++ /dev/null
@@ -1,25 +0,0 @@
-/target/
-!.mvn/wrapper/maven-wrapper.jar
-
-### STS ###
-.apt_generated
-.classpath
-.factorypath
-.project
-.settings
-.springBeans
-.sts4-cache
-
-### IntelliJ IDEA ###
-.idea
-*.iws
-*.iml
-*.ipr
-
-### NetBeans ###
-/nbproject/private/
-/build/
-/nbbuild/
-/dist/
-/nbdist/
-/.nb-gradle/
\ No newline at end of file
diff --git a/spring-webflux-threads/README.md b/spring-webflux-threads/README.md
index 204b1f0081..746514feda 100644
--- a/spring-webflux-threads/README.md
+++ b/spring-webflux-threads/README.md
@@ -1,9 +1,3 @@
-## Spring WebFlux Concurrency
+### Relevant Articles:
-This module contains articles about concurrency model in Spring WebFlux.
-Please note that some of the code assumes Mongo and Kafka are running on the local machine on default configurations.
-If you want to experiment with Tomcat/Jetty instead of Netty, just uncomment the lines in pom.xml and rebuild.
-
-### Relevant Articles:
-
-- [Concurrency in Spring WebFlux]()
+- [Concurrency in Spring WebFlux](https://www.baeldung.com/spring-webflux-concurrency)
diff --git a/spring-webflux-threads/src/main/java/com/baeldung/webflux/Application.java b/spring-webflux-threads/src/main/java/com/baeldung/webflux/Application.java
index 1dfa00eae0..06a148a77f 100644
--- a/spring-webflux-threads/src/main/java/com/baeldung/webflux/Application.java
+++ b/spring-webflux-threads/src/main/java/com/baeldung/webflux/Application.java
@@ -3,6 +3,10 @@ package com.baeldung.webflux;
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
+/**
+* Please note we assume Mongo and Kafka are running in the local machine and on default configuration.
+* Additionally, if you want to experiment with Tomcat/Jetty instead of Netty, just uncomment the lines in pom.xml and rebuild.
+*/
@SpringBootApplication
public class Application {
diff --git a/spring-webflux-threads/src/main/java/com/baeldung/webflux/Controller.java b/spring-webflux-threads/src/main/java/com/baeldung/webflux/Controller.java
index ec6d7a596b..3c7e4e41ca 100644
--- a/spring-webflux-threads/src/main/java/com/baeldung/webflux/Controller.java
+++ b/spring-webflux-threads/src/main/java/com/baeldung/webflux/Controller.java
@@ -53,31 +53,31 @@ public class Controller {
@GetMapping("/threads/webclient")
public Flux getThreadsWebClient() {
WebClient.create("http://localhost:8080/index")
- .get()
- .retrieve()
- .bodyToMono(String.class)
- .subscribeOn(scheduler)
- .publishOn(scheduler)
- .doOnNext(s -> logger.info("Response: {}", s))
- .subscribe();
+ .get()
+ .retrieve()
+ .bodyToMono(String.class)
+ .subscribeOn(scheduler)
+ .publishOn(scheduler)
+ .doOnNext(s -> logger.info("Response: {}", s))
+ .subscribe();
return Flux.fromIterable(getThreads());
}
@GetMapping("/threads/rxjava")
public Observable getIndexRxJava() {
Observable.fromIterable(Arrays.asList("Hello", "World"))
- .map(s -> s.toUpperCase())
- .observeOn(io.reactivex.schedulers.Schedulers.trampoline())
- .doOnNext(s -> logger.info("String: {}", s))
- .subscribe();
+ .map(s -> s.toUpperCase())
+ .observeOn(io.reactivex.schedulers.Schedulers.trampoline())
+ .doOnNext(s -> logger.info("String: {}", s))
+ .subscribe();
return Observable.fromIterable(getThreads());
}
@GetMapping("/threads/mongodb")
public Flux getIndexMongo() {
personRepository.findAll()
- .doOnNext(p -> logger.info("Person: {}", p))
- .subscribe();
+ .doOnNext(p -> logger.info("Person: {}", p))
+ .subscribe();
return Flux.fromIterable(getThreads());
}
@@ -90,9 +90,9 @@ public class Controller {
SenderOptions senderOptions = SenderOptions.create(producerProps);
KafkaSender sender = KafkaSender.create(senderOptions);
Flux> outboundFlux = Flux.range(1, 10)
- .map(i -> SenderRecord.create(new ProducerRecord<>("reactive-test", i, "Message_" + i), i));
+ .map(i -> SenderRecord.create(new ProducerRecord<>("reactive-test", i, "Message_" + i), i));
sender.send(outboundFlux)
- .subscribe();
+ .subscribe();
Map consumerProps = new HashMap<>();
consumerProps.put(ConsumerConfig.BOOTSTRAP_SERVERS_CONFIG, "localhost:9092");
@@ -108,7 +108,7 @@ public class Controller {
inboundFlux.subscribe(r -> {
logger.info("Received message: {}", r.value());
r.receiverOffset()
- .acknowledge();
+ .acknowledge();
});
return Flux.fromIterable(getThreads());
}
@@ -120,9 +120,9 @@ public class Controller {
private List getThreads() {
return Thread.getAllStackTraces()
- .keySet()
- .stream()
- .map(t -> String.format("%-20s \t %s \t %d \t %s\n", t.getName(), t.getState(), t.getPriority(), t.isDaemon() ? "Daemon" : "Normal"))
- .collect(Collectors.toList());
+ .keySet()
+ .stream()
+ .map(t -> String.format("%-20s \t %s \t %d \t %s\n", t.getName(), t.getState(), t.getPriority(), t.isDaemon() ? "Daemon" : "Normal"))
+ .collect(Collectors.toList());
}
}
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)