diff --git a/.local-db/todos.mv.db b/.local-db/todos.mv.db
deleted file mode 100644
index c081aa5aad..0000000000
Binary files a/.local-db/todos.mv.db and /dev/null differ
diff --git a/.local-db/topics.mv.db b/.local-db/topics.mv.db
deleted file mode 100644
index 204bc60d70..0000000000
Binary files a/.local-db/topics.mv.db and /dev/null differ
diff --git a/akka-modules/pom.xml b/akka-modules/pom.xml
index bb182b38bb..490da5b7a8 100644
--- a/akka-modules/pom.xml
+++ b/akka-modules/pom.xml
@@ -4,7 +4,6 @@
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
4.0.0
akka-modules
- 1.0.0-SNAPSHOT
akka-modules
pom
diff --git a/core-java-modules/java-collections-conversions-2/README.md b/core-java-modules/core-java-collections-conversions-2/README.md
similarity index 89%
rename from core-java-modules/java-collections-conversions-2/README.md
rename to core-java-modules/core-java-collections-conversions-2/README.md
index 83b3ec8786..075f2b8736 100644
--- a/core-java-modules/java-collections-conversions-2/README.md
+++ b/core-java-modules/core-java-collections-conversions-2/README.md
@@ -9,4 +9,4 @@ This module contains articles about conversions among Collection types and array
- [Converting List to Map With a Custom Supplier](https://www.baeldung.com/list-to-map-supplier)
- [Arrays.asList vs new ArrayList(Arrays.asList())](https://www.baeldung.com/java-arrays-aslist-vs-new-arraylist)
- [Iterate Over a Set in Java](https://www.baeldung.com/java-iterate-set)
-- More articles: [[<-- prev]](../java-collections-conversions)
+- More articles: [[<-- prev]](../core-java-collections-conversions)
diff --git a/core-java-modules/java-collections-conversions-2/pom.xml b/core-java-modules/core-java-collections-conversions-2/pom.xml
similarity index 88%
rename from core-java-modules/java-collections-conversions-2/pom.xml
rename to core-java-modules/core-java-collections-conversions-2/pom.xml
index 510921c35e..f6775a7a42 100644
--- a/core-java-modules/java-collections-conversions-2/pom.xml
+++ b/core-java-modules/core-java-collections-conversions-2/pom.xml
@@ -3,9 +3,9 @@
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
4.0.0
- java-collections-conversions-2
+ core-java-collections-conversions-2
0.1.0-SNAPSHOT
- java-collections-conversions-2
+ core-java-collections-conversions-2
jar
@@ -33,7 +33,7 @@
- java-collections-conversions-2
+ core-java-collections-conversions-2
src/main/resources
diff --git a/core-java-modules/java-collections-conversions-2/src/main/java/com/baeldung/convertlisttomap/ListToMapConverter.java b/core-java-modules/core-java-collections-conversions-2/src/main/java/com/baeldung/convertlisttomap/ListToMapConverter.java
similarity index 100%
rename from core-java-modules/java-collections-conversions-2/src/main/java/com/baeldung/convertlisttomap/ListToMapConverter.java
rename to core-java-modules/core-java-collections-conversions-2/src/main/java/com/baeldung/convertlisttomap/ListToMapConverter.java
diff --git a/core-java-modules/java-collections-conversions-2/src/main/java/com/baeldung/modelmapper/MapperUtil.java b/core-java-modules/core-java-collections-conversions-2/src/main/java/com/baeldung/modelmapper/MapperUtil.java
similarity index 100%
rename from core-java-modules/java-collections-conversions-2/src/main/java/com/baeldung/modelmapper/MapperUtil.java
rename to core-java-modules/core-java-collections-conversions-2/src/main/java/com/baeldung/modelmapper/MapperUtil.java
diff --git a/core-java-modules/java-collections-conversions-2/src/main/java/com/baeldung/modelmapper/User.java b/core-java-modules/core-java-collections-conversions-2/src/main/java/com/baeldung/modelmapper/User.java
similarity index 100%
rename from core-java-modules/java-collections-conversions-2/src/main/java/com/baeldung/modelmapper/User.java
rename to core-java-modules/core-java-collections-conversions-2/src/main/java/com/baeldung/modelmapper/User.java
diff --git a/core-java-modules/java-collections-conversions-2/src/main/java/com/baeldung/modelmapper/UserDTO.java b/core-java-modules/core-java-collections-conversions-2/src/main/java/com/baeldung/modelmapper/UserDTO.java
similarity index 100%
rename from core-java-modules/java-collections-conversions-2/src/main/java/com/baeldung/modelmapper/UserDTO.java
rename to core-java-modules/core-java-collections-conversions-2/src/main/java/com/baeldung/modelmapper/UserDTO.java
diff --git a/core-java-modules/java-collections-conversions-2/src/main/java/com/baeldung/modelmapper/UserList.java b/core-java-modules/core-java-collections-conversions-2/src/main/java/com/baeldung/modelmapper/UserList.java
similarity index 100%
rename from core-java-modules/java-collections-conversions-2/src/main/java/com/baeldung/modelmapper/UserList.java
rename to core-java-modules/core-java-collections-conversions-2/src/main/java/com/baeldung/modelmapper/UserList.java
diff --git a/core-java-modules/java-collections-conversions-2/src/main/java/com/baeldung/modelmapper/UserListDTO.java b/core-java-modules/core-java-collections-conversions-2/src/main/java/com/baeldung/modelmapper/UserListDTO.java
similarity index 100%
rename from core-java-modules/java-collections-conversions-2/src/main/java/com/baeldung/modelmapper/UserListDTO.java
rename to core-java-modules/core-java-collections-conversions-2/src/main/java/com/baeldung/modelmapper/UserListDTO.java
diff --git a/core-java-modules/java-collections-conversions-2/src/main/java/com/baeldung/modelmapper/UsersListConverter.java b/core-java-modules/core-java-collections-conversions-2/src/main/java/com/baeldung/modelmapper/UsersListConverter.java
similarity index 100%
rename from core-java-modules/java-collections-conversions-2/src/main/java/com/baeldung/modelmapper/UsersListConverter.java
rename to core-java-modules/core-java-collections-conversions-2/src/main/java/com/baeldung/modelmapper/UsersListConverter.java
diff --git a/core-java-modules/java-collections-conversions-2/src/test/java/com/baeldung/arrayconversion/ArrayToListConversionUnitTest.java b/core-java-modules/core-java-collections-conversions-2/src/test/java/com/baeldung/arrayconversion/ArrayToListConversionUnitTest.java
similarity index 100%
rename from core-java-modules/java-collections-conversions-2/src/test/java/com/baeldung/arrayconversion/ArrayToListConversionUnitTest.java
rename to core-java-modules/core-java-collections-conversions-2/src/test/java/com/baeldung/arrayconversion/ArrayToListConversionUnitTest.java
diff --git a/core-java-modules/java-collections-conversions-2/src/test/java/com/baeldung/convertarraytostring/ArrayToStringUnitTest.java b/core-java-modules/core-java-collections-conversions-2/src/test/java/com/baeldung/convertarraytostring/ArrayToStringUnitTest.java
similarity index 100%
rename from core-java-modules/java-collections-conversions-2/src/test/java/com/baeldung/convertarraytostring/ArrayToStringUnitTest.java
rename to core-java-modules/core-java-collections-conversions-2/src/test/java/com/baeldung/convertarraytostring/ArrayToStringUnitTest.java
diff --git a/core-java-modules/java-collections-conversions-2/src/test/java/com/baeldung/convertlisttomap/ListToMapUnitTest.java b/core-java-modules/core-java-collections-conversions-2/src/test/java/com/baeldung/convertlisttomap/ListToMapUnitTest.java
similarity index 100%
rename from core-java-modules/java-collections-conversions-2/src/test/java/com/baeldung/convertlisttomap/ListToMapUnitTest.java
rename to core-java-modules/core-java-collections-conversions-2/src/test/java/com/baeldung/convertlisttomap/ListToMapUnitTest.java
diff --git a/core-java-modules/java-collections-conversions-2/src/test/java/com/baeldung/modelmapper/UsersListMappingUnitTest.java b/core-java-modules/core-java-collections-conversions-2/src/test/java/com/baeldung/modelmapper/UsersListMappingUnitTest.java
similarity index 100%
rename from core-java-modules/java-collections-conversions-2/src/test/java/com/baeldung/modelmapper/UsersListMappingUnitTest.java
rename to core-java-modules/core-java-collections-conversions-2/src/test/java/com/baeldung/modelmapper/UsersListMappingUnitTest.java
diff --git a/core-java-modules/java-collections-conversions-2/src/test/java/com/baeldung/setiteration/SetIteration.java b/core-java-modules/core-java-collections-conversions-2/src/test/java/com/baeldung/setiteration/SetIteration.java
similarity index 100%
rename from core-java-modules/java-collections-conversions-2/src/test/java/com/baeldung/setiteration/SetIteration.java
rename to core-java-modules/core-java-collections-conversions-2/src/test/java/com/baeldung/setiteration/SetIteration.java
diff --git a/core-java-modules/java-collections-conversions/README.md b/core-java-modules/core-java-collections-conversions/README.md
similarity index 93%
rename from core-java-modules/java-collections-conversions/README.md
rename to core-java-modules/core-java-collections-conversions/README.md
index 25a4d11b8b..98dda116d9 100644
--- a/core-java-modules/java-collections-conversions/README.md
+++ b/core-java-modules/core-java-collections-conversions/README.md
@@ -12,4 +12,4 @@ This module contains articles about conversions among Collection types and array
- [Java 8 Collectors toMap](https://www.baeldung.com/java-collectors-tomap)
- [Converting Iterable to Collection in Java](https://www.baeldung.com/java-iterable-to-collection)
- [Converting Iterator to List](https://www.baeldung.com/java-convert-iterator-to-list)
-- More articles: [[next -->]](../java-collections-conversions-2)
\ No newline at end of file
+- More articles: [[next -->]](../core-java-collections-conversions-2)
\ No newline at end of file
diff --git a/core-java-modules/java-collections-conversions/pom.xml b/core-java-modules/core-java-collections-conversions/pom.xml
similarity index 87%
rename from core-java-modules/java-collections-conversions/pom.xml
rename to core-java-modules/core-java-collections-conversions/pom.xml
index 2751e0100a..08a452da51 100644
--- a/core-java-modules/java-collections-conversions/pom.xml
+++ b/core-java-modules/core-java-collections-conversions/pom.xml
@@ -3,9 +3,9 @@
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
4.0.0
- java-collections-conversions
+ core-java-collections-conversions
0.1.0-SNAPSHOT
- java-collections-conversions
+ core-java-collections-conversions
jar
@@ -28,7 +28,7 @@
- java-collections-conversions
+ core-java-collections-conversions
src/main/resources
diff --git a/core-java-modules/java-collections-conversions/src/main/java/com/baeldung/convertToMap/Book.java b/core-java-modules/core-java-collections-conversions/src/main/java/com/baeldung/convertToMap/Book.java
similarity index 100%
rename from core-java-modules/java-collections-conversions/src/main/java/com/baeldung/convertToMap/Book.java
rename to core-java-modules/core-java-collections-conversions/src/main/java/com/baeldung/convertToMap/Book.java
diff --git a/core-java-modules/java-collections-conversions/src/main/java/com/baeldung/convertToMap/ConvertToMap.java b/core-java-modules/core-java-collections-conversions/src/main/java/com/baeldung/convertToMap/ConvertToMap.java
similarity index 100%
rename from core-java-modules/java-collections-conversions/src/main/java/com/baeldung/convertToMap/ConvertToMap.java
rename to core-java-modules/core-java-collections-conversions/src/main/java/com/baeldung/convertToMap/ConvertToMap.java
diff --git a/core-java-modules/java-collections-conversions/src/main/java/com/baeldung/convertcollectiontoarraylist/Foo.java b/core-java-modules/core-java-collections-conversions/src/main/java/com/baeldung/convertcollectiontoarraylist/Foo.java
similarity index 100%
rename from core-java-modules/java-collections-conversions/src/main/java/com/baeldung/convertcollectiontoarraylist/Foo.java
rename to core-java-modules/core-java-collections-conversions/src/main/java/com/baeldung/convertcollectiontoarraylist/Foo.java
diff --git a/core-java-modules/java-collections-conversions/src/main/java/com/baeldung/convertlisttomap/Animal.java b/core-java-modules/core-java-collections-conversions/src/main/java/com/baeldung/convertlisttomap/Animal.java
similarity index 100%
rename from core-java-modules/java-collections-conversions/src/main/java/com/baeldung/convertlisttomap/Animal.java
rename to core-java-modules/core-java-collections-conversions/src/main/java/com/baeldung/convertlisttomap/Animal.java
diff --git a/core-java-modules/java-collections-conversions/src/main/java/com/baeldung/convertlisttomap/ConvertListToMapService.java b/core-java-modules/core-java-collections-conversions/src/main/java/com/baeldung/convertlisttomap/ConvertListToMapService.java
similarity index 100%
rename from core-java-modules/java-collections-conversions/src/main/java/com/baeldung/convertlisttomap/ConvertListToMapService.java
rename to core-java-modules/core-java-collections-conversions/src/main/java/com/baeldung/convertlisttomap/ConvertListToMapService.java
diff --git a/core-java-modules/java-collections-conversions/src/main/resources/logback.xml b/core-java-modules/core-java-collections-conversions/src/main/resources/logback.xml
similarity index 100%
rename from core-java-modules/java-collections-conversions/src/main/resources/logback.xml
rename to core-java-modules/core-java-collections-conversions/src/main/resources/logback.xml
diff --git a/core-java-modules/java-collections-conversions/src/test/java/com/baeldung/convertToMap/ConvertToMapUnitTest.java b/core-java-modules/core-java-collections-conversions/src/test/java/com/baeldung/convertToMap/ConvertToMapUnitTest.java
similarity index 100%
rename from core-java-modules/java-collections-conversions/src/test/java/com/baeldung/convertToMap/ConvertToMapUnitTest.java
rename to core-java-modules/core-java-collections-conversions/src/test/java/com/baeldung/convertToMap/ConvertToMapUnitTest.java
diff --git a/core-java-modules/java-collections-conversions/src/test/java/com/baeldung/convertcollectiontoarraylist/CollectionToArrayListUnitTest.java b/core-java-modules/core-java-collections-conversions/src/test/java/com/baeldung/convertcollectiontoarraylist/CollectionToArrayListUnitTest.java
similarity index 100%
rename from core-java-modules/java-collections-conversions/src/test/java/com/baeldung/convertcollectiontoarraylist/CollectionToArrayListUnitTest.java
rename to core-java-modules/core-java-collections-conversions/src/test/java/com/baeldung/convertcollectiontoarraylist/CollectionToArrayListUnitTest.java
diff --git a/core-java-modules/java-collections-conversions/src/test/java/com/baeldung/convertiteratortolist/ConvertIteratorToListServiceUnitTest.java b/core-java-modules/core-java-collections-conversions/src/test/java/com/baeldung/convertiteratortolist/ConvertIteratorToListServiceUnitTest.java
similarity index 100%
rename from core-java-modules/java-collections-conversions/src/test/java/com/baeldung/convertiteratortolist/ConvertIteratorToListServiceUnitTest.java
rename to core-java-modules/core-java-collections-conversions/src/test/java/com/baeldung/convertiteratortolist/ConvertIteratorToListServiceUnitTest.java
diff --git a/core-java-modules/java-collections-conversions/src/test/java/com/baeldung/convertlisttomap/ConvertListToMapServiceUnitTest.java b/core-java-modules/core-java-collections-conversions/src/test/java/com/baeldung/convertlisttomap/ConvertListToMapServiceUnitTest.java
similarity index 100%
rename from core-java-modules/java-collections-conversions/src/test/java/com/baeldung/convertlisttomap/ConvertListToMapServiceUnitTest.java
rename to core-java-modules/core-java-collections-conversions/src/test/java/com/baeldung/convertlisttomap/ConvertListToMapServiceUnitTest.java
diff --git a/core-java-modules/java-collections-conversions/src/test/java/com/baeldung/convertlisttomap/ConvertListWithDuplicatedIdToMapServiceUnitTest.java b/core-java-modules/core-java-collections-conversions/src/test/java/com/baeldung/convertlisttomap/ConvertListWithDuplicatedIdToMapServiceUnitTest.java
similarity index 100%
rename from core-java-modules/java-collections-conversions/src/test/java/com/baeldung/convertlisttomap/ConvertListWithDuplicatedIdToMapServiceUnitTest.java
rename to core-java-modules/core-java-collections-conversions/src/test/java/com/baeldung/convertlisttomap/ConvertListWithDuplicatedIdToMapServiceUnitTest.java
diff --git a/core-java-modules/java-collections-conversions/src/test/java/com/baeldung/java/collections/IterableToCollectionUnitTest.java b/core-java-modules/core-java-collections-conversions/src/test/java/com/baeldung/java/collections/IterableToCollectionUnitTest.java
similarity index 100%
rename from core-java-modules/java-collections-conversions/src/test/java/com/baeldung/java/collections/IterableToCollectionUnitTest.java
rename to core-java-modules/core-java-collections-conversions/src/test/java/com/baeldung/java/collections/IterableToCollectionUnitTest.java
diff --git a/core-java-modules/java-collections-conversions/src/test/java/com/baeldung/java/collections/JavaCollectionConversionUnitTest.java b/core-java-modules/core-java-collections-conversions/src/test/java/com/baeldung/java/collections/JavaCollectionConversionUnitTest.java
similarity index 100%
rename from core-java-modules/java-collections-conversions/src/test/java/com/baeldung/java/collections/JavaCollectionConversionUnitTest.java
rename to core-java-modules/core-java-collections-conversions/src/test/java/com/baeldung/java/collections/JavaCollectionConversionUnitTest.java
diff --git a/core-java-modules/java-collections-conversions/src/test/java/com/baeldung/java/lists/ListToStringUnitTest.java b/core-java-modules/core-java-collections-conversions/src/test/java/com/baeldung/java/lists/ListToStringUnitTest.java
similarity index 100%
rename from core-java-modules/java-collections-conversions/src/test/java/com/baeldung/java/lists/ListToStringUnitTest.java
rename to core-java-modules/core-java-collections-conversions/src/test/java/com/baeldung/java/lists/ListToStringUnitTest.java
diff --git a/core-java-modules/java-collections-maps-3/README.md b/core-java-modules/core-java-collections-maps-5/README.md
similarity index 92%
rename from core-java-modules/java-collections-maps-3/README.md
rename to core-java-modules/core-java-collections-maps-5/README.md
index e2e0a56489..24fb1b56d8 100644
--- a/core-java-modules/java-collections-maps-3/README.md
+++ b/core-java-modules/core-java-collections-maps-5/README.md
@@ -8,3 +8,4 @@
- [Java Map – keySet() vs. entrySet() vs. values() Methods](https://www.baeldung.com/java-map-entries-methods)
- [Java IdentityHashMap Class and Its Use Cases](https://www.baeldung.com/java-identityhashmap)
- [How to Invert a Map in Java](https://www.baeldung.com/java-invert-map)
+- More articles: [[<-- prev]](../core-java-collections-maps-4)
diff --git a/core-java-modules/java-collections-maps-3/pom.xml b/core-java-modules/core-java-collections-maps-5/pom.xml
similarity index 93%
rename from core-java-modules/java-collections-maps-3/pom.xml
rename to core-java-modules/core-java-collections-maps-5/pom.xml
index ab80a9e2fd..ba7083e42e 100644
--- a/core-java-modules/java-collections-maps-3/pom.xml
+++ b/core-java-modules/core-java-collections-maps-5/pom.xml
@@ -3,9 +3,9 @@
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
4.0.0
- java-collections-maps-3
+ core-java-collections-maps-5
0.1.0-SNAPSHOT
- java-collections-maps-3
+ core-java-collections-maps-5
jar
diff --git a/core-java-modules/java-collections-maps-3/src/main/java/com/baeldung/map/bytearrays/BytesKey.java b/core-java-modules/core-java-collections-maps-5/src/main/java/com/baeldung/map/bytearrays/BytesKey.java
similarity index 100%
rename from core-java-modules/java-collections-maps-3/src/main/java/com/baeldung/map/bytearrays/BytesKey.java
rename to core-java-modules/core-java-collections-maps-5/src/main/java/com/baeldung/map/bytearrays/BytesKey.java
diff --git a/core-java-modules/java-collections-maps-3/src/main/java/com/baeldung/map/entry/Book.java b/core-java-modules/core-java-collections-maps-5/src/main/java/com/baeldung/map/entry/Book.java
similarity index 100%
rename from core-java-modules/java-collections-maps-3/src/main/java/com/baeldung/map/entry/Book.java
rename to core-java-modules/core-java-collections-maps-5/src/main/java/com/baeldung/map/entry/Book.java
diff --git a/core-java-modules/java-collections-maps-3/src/main/java/com/baeldung/map/entry/MapEntryEfficiencyExample.java b/core-java-modules/core-java-collections-maps-5/src/main/java/com/baeldung/map/entry/MapEntryEfficiencyExample.java
similarity index 100%
rename from core-java-modules/java-collections-maps-3/src/main/java/com/baeldung/map/entry/MapEntryEfficiencyExample.java
rename to core-java-modules/core-java-collections-maps-5/src/main/java/com/baeldung/map/entry/MapEntryEfficiencyExample.java
diff --git a/core-java-modules/java-collections-maps-3/src/main/java/com/baeldung/map/entry/MapEntryTupleExample.java b/core-java-modules/core-java-collections-maps-5/src/main/java/com/baeldung/map/entry/MapEntryTupleExample.java
similarity index 100%
rename from core-java-modules/java-collections-maps-3/src/main/java/com/baeldung/map/entry/MapEntryTupleExample.java
rename to core-java-modules/core-java-collections-maps-5/src/main/java/com/baeldung/map/entry/MapEntryTupleExample.java
diff --git a/core-java-modules/java-collections-maps-3/src/main/java/com/baeldung/map/hashing/Member.java b/core-java-modules/core-java-collections-maps-5/src/main/java/com/baeldung/map/hashing/Member.java
similarity index 100%
rename from core-java-modules/java-collections-maps-3/src/main/java/com/baeldung/map/hashing/Member.java
rename to core-java-modules/core-java-collections-maps-5/src/main/java/com/baeldung/map/hashing/Member.java
diff --git a/core-java-modules/java-collections-maps-3/src/main/java/com/baeldung/map/hashing/MemberWithBadHashing.java b/core-java-modules/core-java-collections-maps-5/src/main/java/com/baeldung/map/hashing/MemberWithBadHashing.java
similarity index 100%
rename from core-java-modules/java-collections-maps-3/src/main/java/com/baeldung/map/hashing/MemberWithBadHashing.java
rename to core-java-modules/core-java-collections-maps-5/src/main/java/com/baeldung/map/hashing/MemberWithBadHashing.java
diff --git a/core-java-modules/java-collections-maps-3/src/main/java/com/baeldung/map/hashing/MemberWithGuavaHashing.java b/core-java-modules/core-java-collections-maps-5/src/main/java/com/baeldung/map/hashing/MemberWithGuavaHashing.java
similarity index 100%
rename from core-java-modules/java-collections-maps-3/src/main/java/com/baeldung/map/hashing/MemberWithGuavaHashing.java
rename to core-java-modules/core-java-collections-maps-5/src/main/java/com/baeldung/map/hashing/MemberWithGuavaHashing.java
diff --git a/core-java-modules/java-collections-maps-3/src/main/java/com/baeldung/map/hashing/MemberWithId.java b/core-java-modules/core-java-collections-maps-5/src/main/java/com/baeldung/map/hashing/MemberWithId.java
similarity index 100%
rename from core-java-modules/java-collections-maps-3/src/main/java/com/baeldung/map/hashing/MemberWithId.java
rename to core-java-modules/core-java-collections-maps-5/src/main/java/com/baeldung/map/hashing/MemberWithId.java
diff --git a/core-java-modules/java-collections-maps-3/src/main/java/com/baeldung/map/hashing/MemberWithIdAndName.java b/core-java-modules/core-java-collections-maps-5/src/main/java/com/baeldung/map/hashing/MemberWithIdAndName.java
similarity index 100%
rename from core-java-modules/java-collections-maps-3/src/main/java/com/baeldung/map/hashing/MemberWithIdAndName.java
rename to core-java-modules/core-java-collections-maps-5/src/main/java/com/baeldung/map/hashing/MemberWithIdAndName.java
diff --git a/core-java-modules/java-collections-maps-3/src/main/java/com/baeldung/map/hashing/MemberWithObjects.java b/core-java-modules/core-java-collections-maps-5/src/main/java/com/baeldung/map/hashing/MemberWithObjects.java
similarity index 100%
rename from core-java-modules/java-collections-maps-3/src/main/java/com/baeldung/map/hashing/MemberWithObjects.java
rename to core-java-modules/core-java-collections-maps-5/src/main/java/com/baeldung/map/hashing/MemberWithObjects.java
diff --git a/core-java-modules/java-collections-maps-3/src/main/java/com/baeldung/map/identity/IdentityHashMapDemonstrator.java b/core-java-modules/core-java-collections-maps-5/src/main/java/com/baeldung/map/identity/IdentityHashMapDemonstrator.java
similarity index 100%
rename from core-java-modules/java-collections-maps-3/src/main/java/com/baeldung/map/identity/IdentityHashMapDemonstrator.java
rename to core-java-modules/core-java-collections-maps-5/src/main/java/com/baeldung/map/identity/IdentityHashMapDemonstrator.java
diff --git a/core-java-modules/java-collections-maps-3/src/main/java/com/baeldung/map/invert/InvertHashMapExample.java b/core-java-modules/core-java-collections-maps-5/src/main/java/com/baeldung/map/invert/InvertHashMapExample.java
similarity index 100%
rename from core-java-modules/java-collections-maps-3/src/main/java/com/baeldung/map/invert/InvertHashMapExample.java
rename to core-java-modules/core-java-collections-maps-5/src/main/java/com/baeldung/map/invert/InvertHashMapExample.java
diff --git a/core-java-modules/java-collections-maps-3/src/test/java/com/baeldung/map/bytearrays/ByteArrayKeyUnitTest.java b/core-java-modules/core-java-collections-maps-5/src/test/java/com/baeldung/map/bytearrays/ByteArrayKeyUnitTest.java
similarity index 100%
rename from core-java-modules/java-collections-maps-3/src/test/java/com/baeldung/map/bytearrays/ByteArrayKeyUnitTest.java
rename to core-java-modules/core-java-collections-maps-5/src/test/java/com/baeldung/map/bytearrays/ByteArrayKeyUnitTest.java
diff --git a/core-java-modules/java-collections-maps-3/src/test/java/com/baeldung/map/caseinsensitivekeys/CaseInsensitiveMapUnitTest.java b/core-java-modules/core-java-collections-maps-5/src/test/java/com/baeldung/map/caseinsensitivekeys/CaseInsensitiveMapUnitTest.java
similarity index 100%
rename from core-java-modules/java-collections-maps-3/src/test/java/com/baeldung/map/caseinsensitivekeys/CaseInsensitiveMapUnitTest.java
rename to core-java-modules/core-java-collections-maps-5/src/test/java/com/baeldung/map/caseinsensitivekeys/CaseInsensitiveMapUnitTest.java
diff --git a/core-java-modules/java-collections-maps-3/src/test/java/com/baeldung/map/entry/MapEntryUnitTest.java b/core-java-modules/core-java-collections-maps-5/src/test/java/com/baeldung/map/entry/MapEntryUnitTest.java
similarity index 100%
rename from core-java-modules/java-collections-maps-3/src/test/java/com/baeldung/map/entry/MapEntryUnitTest.java
rename to core-java-modules/core-java-collections-maps-5/src/test/java/com/baeldung/map/entry/MapEntryUnitTest.java
diff --git a/core-java-modules/java-collections-maps-3/src/test/java/com/baeldung/map/hashing/HashMapUpdateUnitTest.java b/core-java-modules/core-java-collections-maps-5/src/test/java/com/baeldung/map/hashing/HashMapUpdateUnitTest.java
similarity index 100%
rename from core-java-modules/java-collections-maps-3/src/test/java/com/baeldung/map/hashing/HashMapUpdateUnitTest.java
rename to core-java-modules/core-java-collections-maps-5/src/test/java/com/baeldung/map/hashing/HashMapUpdateUnitTest.java
diff --git a/core-java-modules/java-collections-maps-3/src/test/java/com/baeldung/map/hashing/HashingUnitTest.java b/core-java-modules/core-java-collections-maps-5/src/test/java/com/baeldung/map/hashing/HashingUnitTest.java
similarity index 100%
rename from core-java-modules/java-collections-maps-3/src/test/java/com/baeldung/map/hashing/HashingUnitTest.java
rename to core-java-modules/core-java-collections-maps-5/src/test/java/com/baeldung/map/hashing/HashingUnitTest.java
diff --git a/core-java-modules/java-collections-maps-3/src/test/java/com/baeldung/map/identity/IdentityHashMapDemonstratorUnitTest.java b/core-java-modules/core-java-collections-maps-5/src/test/java/com/baeldung/map/identity/IdentityHashMapDemonstratorUnitTest.java
similarity index 100%
rename from core-java-modules/java-collections-maps-3/src/test/java/com/baeldung/map/identity/IdentityHashMapDemonstratorUnitTest.java
rename to core-java-modules/core-java-collections-maps-5/src/test/java/com/baeldung/map/identity/IdentityHashMapDemonstratorUnitTest.java
diff --git a/core-java-modules/java-collections-maps-3/src/test/java/com/baeldung/map/invert/InvertHashMapUnitTest.java b/core-java-modules/core-java-collections-maps-5/src/test/java/com/baeldung/map/invert/InvertHashMapUnitTest.java
similarity index 100%
rename from core-java-modules/java-collections-maps-3/src/test/java/com/baeldung/map/invert/InvertHashMapUnitTest.java
rename to core-java-modules/core-java-collections-maps-5/src/test/java/com/baeldung/map/invert/InvertHashMapUnitTest.java
diff --git a/core-java-modules/java-collections-maps-3/src/test/java/com/baeldung/map/keysetValuesEntrySet/EntrySetExampleUnitTest.java b/core-java-modules/core-java-collections-maps-5/src/test/java/com/baeldung/map/keysetValuesEntrySet/EntrySetExampleUnitTest.java
similarity index 100%
rename from core-java-modules/java-collections-maps-3/src/test/java/com/baeldung/map/keysetValuesEntrySet/EntrySetExampleUnitTest.java
rename to core-java-modules/core-java-collections-maps-5/src/test/java/com/baeldung/map/keysetValuesEntrySet/EntrySetExampleUnitTest.java
diff --git a/core-java-modules/java-collections-maps-3/src/test/java/com/baeldung/map/keysetValuesEntrySet/KeySetExampleUnitTest.java b/core-java-modules/core-java-collections-maps-5/src/test/java/com/baeldung/map/keysetValuesEntrySet/KeySetExampleUnitTest.java
similarity index 100%
rename from core-java-modules/java-collections-maps-3/src/test/java/com/baeldung/map/keysetValuesEntrySet/KeySetExampleUnitTest.java
rename to core-java-modules/core-java-collections-maps-5/src/test/java/com/baeldung/map/keysetValuesEntrySet/KeySetExampleUnitTest.java
diff --git a/core-java-modules/java-collections-maps-3/src/test/java/com/baeldung/map/keysetValuesEntrySet/ValuesExampleUnitTest.java b/core-java-modules/core-java-collections-maps-5/src/test/java/com/baeldung/map/keysetValuesEntrySet/ValuesExampleUnitTest.java
similarity index 100%
rename from core-java-modules/java-collections-maps-3/src/test/java/com/baeldung/map/keysetValuesEntrySet/ValuesExampleUnitTest.java
rename to core-java-modules/core-java-collections-maps-5/src/test/java/com/baeldung/map/keysetValuesEntrySet/ValuesExampleUnitTest.java
diff --git a/core-java-modules/core-java-concurrency-advanced-3/src/test/java/com/baeldung/abaproblem/AccountUnitTest.java b/core-java-modules/core-java-concurrency-advanced-3/src/test/java/com/baeldung/abaproblem/AccountManualTest.java
similarity index 99%
rename from core-java-modules/core-java-concurrency-advanced-3/src/test/java/com/baeldung/abaproblem/AccountUnitTest.java
rename to core-java-modules/core-java-concurrency-advanced-3/src/test/java/com/baeldung/abaproblem/AccountManualTest.java
index 3e188d682e..013352cce9 100644
--- a/core-java-modules/core-java-concurrency-advanced-3/src/test/java/com/baeldung/abaproblem/AccountUnitTest.java
+++ b/core-java-modules/core-java-concurrency-advanced-3/src/test/java/com/baeldung/abaproblem/AccountManualTest.java
@@ -12,7 +12,7 @@ import static org.junit.jupiter.api.Assertions.assertEquals;
import static org.junit.jupiter.api.Assertions.assertNotEquals;
import static org.junit.jupiter.api.Assertions.assertTrue;
-public class AccountUnitTest {
+public class AccountManualTest {
private Account account;
diff --git a/core-java-modules/core-java-function/README.md b/core-java-modules/core-java-function/README.md
index 677f148bdb..7fe6044835 100644
--- a/core-java-modules/core-java-function/README.md
+++ b/core-java-modules/core-java-function/README.md
@@ -3,4 +3,5 @@
## Core Java 8 Cookbooks and Examples
### Relevant Articles:
-- [Java 8 Predicate Chain](https://www.baeldung.com/java-predicate-chain)
\ No newline at end of file
+- [Java 8 Predicate Chain](https://www.baeldung.com/java-predicate-chain)
+- [Use Cases for Static Methods in Java](https://www.baeldung.com/java-static-methods-use-cases)
diff --git a/core-java-modules/core-java-function/pom.xml b/core-java-modules/core-java-function/pom.xml
index a3add5a686..c05f9585b2 100644
--- a/core-java-modules/core-java-function/pom.xml
+++ b/core-java-modules/core-java-function/pom.xml
@@ -14,6 +14,26 @@
0.0.1-SNAPSHOT
+
+
+ org.apache.commons
+ commons-lang3
+ ${commons-lang3.version}
+
+
+ org.assertj
+ assertj-core
+ ${assertj.version}
+ test
+
+
+ org.mockito
+ mockito-inline
+ ${mockito-inline.version}
+ test
+
+
+
core-java-function
@@ -24,4 +44,10 @@
+
+ 3.8.0
+ 3.22.0
+ 3.12.0
+
+
\ No newline at end of file
diff --git a/core-java-modules/core-java-function/src/main/java/com/baeldung/staticmethods/CustomStringUtils.java b/core-java-modules/core-java-function/src/main/java/com/baeldung/staticmethods/CustomStringUtils.java
new file mode 100644
index 0000000000..5561123e54
--- /dev/null
+++ b/core-java-modules/core-java-function/src/main/java/com/baeldung/staticmethods/CustomStringUtils.java
@@ -0,0 +1,9 @@
+package com.baeldung.staticmethods;
+
+public final class CustomStringUtils {
+
+ private CustomStringUtils() {}
+
+ public static boolean isEmpty(CharSequence cs) { return cs == null || cs.length() == 0; }
+
+}
diff --git a/core-java-modules/core-java-function/src/main/java/com/baeldung/staticmethods/StaticCounter.java b/core-java-modules/core-java-function/src/main/java/com/baeldung/staticmethods/StaticCounter.java
new file mode 100644
index 0000000000..9abf97e8df
--- /dev/null
+++ b/core-java-modules/core-java-function/src/main/java/com/baeldung/staticmethods/StaticCounter.java
@@ -0,0 +1,15 @@
+package com.baeldung.staticmethods;
+
+public class StaticCounter {
+
+ private static int counter = 0;
+
+ public static int incrementCounter() {
+ return ++counter;
+ }
+
+ public static int getCounterValue() {
+ return counter;
+ }
+
+}
diff --git a/core-java-modules/core-java-function/src/test/java/com/baeldung/staticmethods/CollectionUtilsUnitTest.java b/core-java-modules/core-java-function/src/test/java/com/baeldung/staticmethods/CollectionUtilsUnitTest.java
new file mode 100644
index 0000000000..74aac8deb7
--- /dev/null
+++ b/core-java-modules/core-java-function/src/test/java/com/baeldung/staticmethods/CollectionUtilsUnitTest.java
@@ -0,0 +1,20 @@
+package com.baeldung.staticmethods;
+
+import org.junit.jupiter.api.Test;
+
+import java.util.Arrays;
+import java.util.Collections;
+import java.util.List;
+
+import static org.assertj.core.api.Assertions.assertThat;
+
+class CollectionUtilsUnitTest {
+
+ @Test
+ void givenListOfNumbers_whenReverseStaticMethodIsCalled_thenNumbersInReversedOrderAreReturned() {
+ List list = Arrays.asList("1", "2", "3");
+ Collections.reverse(list);
+ assertThat(list).containsExactly("3", "2", "1");
+ }
+
+}
diff --git a/core-java-modules/core-java-function/src/test/java/com/baeldung/staticmethods/CustomStringUtilsUnitTest.java b/core-java-modules/core-java-function/src/test/java/com/baeldung/staticmethods/CustomStringUtilsUnitTest.java
new file mode 100644
index 0000000000..d01b97d938
--- /dev/null
+++ b/core-java-modules/core-java-function/src/test/java/com/baeldung/staticmethods/CustomStringUtilsUnitTest.java
@@ -0,0 +1,21 @@
+package com.baeldung.staticmethods;
+
+import org.junit.jupiter.api.Test;
+
+import static org.assertj.core.api.Assertions.assertThat;
+
+class CustomStringUtilsUnitTest {
+
+ @Test
+ void givenNonEmptyString_whenIsEmptyMethodIsCalled_thenFalseIsReturned() {
+ boolean empty = CustomStringUtils.isEmpty("baeldung");
+ assertThat(empty).isFalse();
+ }
+
+ @Test
+ void givenEmptyString_whenIsEmptyMethodIsCalled_thenTrueIsReturned() {
+ boolean empty = CustomStringUtils.isEmpty("");
+ assertThat(empty).isTrue();
+ }
+
+}
diff --git a/core-java-modules/core-java-function/src/test/java/com/baeldung/staticmethods/StaticCounterUnitTest.java b/core-java-modules/core-java-function/src/test/java/com/baeldung/staticmethods/StaticCounterUnitTest.java
new file mode 100644
index 0000000000..f8605883ba
--- /dev/null
+++ b/core-java-modules/core-java-function/src/test/java/com/baeldung/staticmethods/StaticCounterUnitTest.java
@@ -0,0 +1,16 @@
+package com.baeldung.staticmethods;
+
+import org.junit.jupiter.api.Test;
+
+import static org.assertj.core.api.Assertions.assertThat;
+
+class StaticCounterUnitTest {
+
+ @Test
+ void givenStaticCounter_whenIncrementCounterIsCalled_thenValueIsIncresedByOne() {
+ int oldValue = StaticCounter.getCounterValue();
+ int newValue = StaticCounter.incrementCounter();
+ assertThat(newValue).isEqualTo(oldValue + 1);
+ }
+
+}
diff --git a/core-java-modules/core-java-function/src/test/java/com/baeldung/staticmethods/StringUtilsUnitTest.java b/core-java-modules/core-java-function/src/test/java/com/baeldung/staticmethods/StringUtilsUnitTest.java
new file mode 100644
index 0000000000..d7a379a246
--- /dev/null
+++ b/core-java-modules/core-java-function/src/test/java/com/baeldung/staticmethods/StringUtilsUnitTest.java
@@ -0,0 +1,16 @@
+package com.baeldung.staticmethods;
+
+import org.apache.commons.lang3.StringUtils;
+import org.junit.jupiter.api.Test;
+
+import static org.assertj.core.api.Assertions.assertThat;
+
+class StringUtilsUnitTest {
+
+ @Test
+ void givenSimpleString_whenCapitalizeStaticMethodIsCalled_thenCapitalizedStringIsReturned() {
+ String str = StringUtils.capitalize("baeldung");
+ assertThat(str).isEqualTo("Baeldung");
+ }
+
+}
diff --git a/core-java-modules/core-java-io-conversions-2/README.md b/core-java-modules/core-java-io-conversions-2/README.md
index 9abb539066..c83a3fb1d7 100644
--- a/core-java-modules/core-java-io-conversions-2/README.md
+++ b/core-java-modules/core-java-io-conversions-2/README.md
@@ -9,4 +9,5 @@ This module contains articles about core Java input/output(IO) conversions.
- [Converting a BufferedReader to a JSONObject](https://www.baeldung.com/java-bufferedreader-to-jsonobject)
- [Reading a CSV File into an Array](https://www.baeldung.com/java-csv-file-array)
- [How to Write to a CSV File in Java](https://www.baeldung.com/java-csv)
+- [How to Convert InputStream to Base64 String](https://www.baeldung.com/java-inputstream-to-base64-string)
- More articles: [[<-- prev]](/core-java-modules/core-java-io-conversions)
diff --git a/core-java-modules/core-java-io-conversions-2/src/test/java/com/baeldung/inputstreamtobase64/InputStreamToBase64UnitTest.java b/core-java-modules/core-java-io-conversions-2/src/test/java/com/baeldung/inputstreamtobase64/InputStreamToBase64UnitTest.java
new file mode 100644
index 0000000000..d8de202ba3
--- /dev/null
+++ b/core-java-modules/core-java-io-conversions-2/src/test/java/com/baeldung/inputstreamtobase64/InputStreamToBase64UnitTest.java
@@ -0,0 +1,49 @@
+package com.baeldung.inputstreamtobase64;
+
+import static org.junit.jupiter.api.Assertions.assertNotNull;
+import static org.junit.jupiter.api.Assertions.assertTrue;
+
+import java.io.InputStream;
+import java.util.Base64;
+
+import org.apache.commons.io.IOUtils;
+import org.junit.Test;
+/**
+ * Test the Stream to base64 conversion
+ */
+public class InputStreamToBase64UnitTest {
+
+ /**
+ * Test stream to base64 conversion
+ * @throws Exception
+ */
+ @Test
+ public void givenABinaryInputStream_whenItIsConvertedToBase64_thenItCanBeDecoded() throws Exception {
+ // given a binary input stream
+ InputStream sourceStream = getClass().getClassLoader().getResourceAsStream("logo.png");
+ byte[] sourceBytes = IOUtils.toByteArray(sourceStream);
+
+ // when it is converted to base64
+ String encodedString = Base64.getEncoder().encodeToString(sourceBytes);
+ assertNotNull(encodedString);
+
+ // then it can be decoded
+ byte[] decodedBytes = Base64.getDecoder().decode(encodedString);
+ assertNotNull(decodedBytes);
+ assertTrue(decodedBytes.length == sourceBytes.length);
+ assertTrue(calculateChecksum(decodedBytes) == calculateChecksum(sourceBytes));
+ }
+
+ /**
+ * Calculate a checksum
+ * @param bytes array of bytes to check
+ * @return the total sum of all bytes
+ */
+ private int calculateChecksum(byte[] bytes) {
+ int checksum = 0;
+ for(int index=0; index < bytes.length; index++) {
+ checksum+=bytes[index];
+ }
+ return checksum;
+ }
+}
diff --git a/core-java-modules/core-java-io-conversions-2/src/test/resources/logo.png b/core-java-modules/core-java-io-conversions-2/src/test/resources/logo.png
new file mode 100644
index 0000000000..dc6d7c8340
Binary files /dev/null and b/core-java-modules/core-java-io-conversions-2/src/test/resources/logo.png differ
diff --git a/core-java-modules/core-java-jar/README.md b/core-java-modules/core-java-jar/README.md
index fe57ede08a..b1e24e3ab9 100644
--- a/core-java-modules/core-java-jar/README.md
+++ b/core-java-modules/core-java-jar/README.md
@@ -8,4 +8,5 @@ This module contains articles about JAR files
- [Importance of Main Manifest Attribute in a Self-Executing JAR](http://www.baeldung.com/java-jar-executable-manifest-main-class)
- [Guide to Creating and Running a Jar File in Java](https://www.baeldung.com/java-create-jar)
- [Get Names of Classes Inside a JAR File](https://www.baeldung.com/jar-file-get-class-names)
- [Find All Jars Containing Given Class](https://baeldung.com/find-all-jars-containing-given-class/)
\ No newline at end of file
+- [Find All Jars Containing Given Class](https://baeldung.com/find-all-jars-containing-given-class/)
+- [Creating JAR Files Programmatically](https://www.baeldung.com/jar-create-programatically)
diff --git a/core-java-modules/core-java-lang-oop-types-2/README.md b/core-java-modules/core-java-lang-oop-types-2/README.md
index c5e2a75f25..474d0c8a22 100644
--- a/core-java-modules/core-java-lang-oop-types-2/README.md
+++ b/core-java-modules/core-java-lang-oop-types-2/README.md
@@ -6,3 +6,4 @@ This module contains articles about types in Java
- [Convert an Array of Primitives to an Array of Objects](https://www.baeldung.com/java-primitive-array-to-object-array)
- [Check if an Enum Value Exists in Java](https://www.baeldung.com/java-search-enum-values)
+- [Generate a Random Value From an Enum](https://www.baeldung.com/java-enum-random-value)
diff --git a/core-java-modules/java-numbers-2/README.md b/core-java-modules/core-java-numbers-2/README.md
similarity index 91%
rename from core-java-modules/java-numbers-2/README.md
rename to core-java-modules/core-java-numbers-2/README.md
index 1a680183be..54f6cf30e8 100644
--- a/core-java-modules/java-numbers-2/README.md
+++ b/core-java-modules/core-java-numbers-2/README.md
@@ -13,4 +13,4 @@ This module contains articles about numbers in Java.
- [Binary Numbers in Java](https://www.baeldung.com/java-binary-numbers)
- [Finding the Least Common Multiple in Java](https://www.baeldung.com/java-least-common-multiple)
- [Binary Numbers in Java](https://www.baeldung.com/java-binary-numbers)
-- More articles: [[<-- prev]](../java-numbers) [[next -->]](../java-numbers-3)
+- More articles: [[<-- prev]](../core-java-numbers) [[next -->]](../core-java-numbers-3)
diff --git a/core-java-modules/java-numbers-2/pom.xml b/core-java-modules/core-java-numbers-2/pom.xml
similarity index 90%
rename from core-java-modules/java-numbers-2/pom.xml
rename to core-java-modules/core-java-numbers-2/pom.xml
index b41348e375..ac3843607e 100644
--- a/core-java-modules/java-numbers-2/pom.xml
+++ b/core-java-modules/core-java-numbers-2/pom.xml
@@ -3,9 +3,9 @@
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
4.0.0
- java-numbers-2
+ core-java-numbers-2
0.1.0-SNAPSHOT
- java-numbers-2
+ core-java-numbers-2
jar
@@ -28,7 +28,7 @@
- java-numbers-2
+ core-java-numbers-2
src/main/resources
diff --git a/core-java-modules/java-numbers-2/src/main/java/com/baeldung/algorithms/primechecker/BigIntegerPrimeChecker.java b/core-java-modules/core-java-numbers-2/src/main/java/com/baeldung/algorithms/primechecker/BigIntegerPrimeChecker.java
similarity index 100%
rename from core-java-modules/java-numbers-2/src/main/java/com/baeldung/algorithms/primechecker/BigIntegerPrimeChecker.java
rename to core-java-modules/core-java-numbers-2/src/main/java/com/baeldung/algorithms/primechecker/BigIntegerPrimeChecker.java
diff --git a/core-java-modules/java-numbers-2/src/main/java/com/baeldung/algorithms/primechecker/BruteForcePrimeChecker.java b/core-java-modules/core-java-numbers-2/src/main/java/com/baeldung/algorithms/primechecker/BruteForcePrimeChecker.java
similarity index 100%
rename from core-java-modules/java-numbers-2/src/main/java/com/baeldung/algorithms/primechecker/BruteForcePrimeChecker.java
rename to core-java-modules/core-java-numbers-2/src/main/java/com/baeldung/algorithms/primechecker/BruteForcePrimeChecker.java
diff --git a/core-java-modules/java-numbers-2/src/main/java/com/baeldung/algorithms/primechecker/OptimisedPrimeChecker.java b/core-java-modules/core-java-numbers-2/src/main/java/com/baeldung/algorithms/primechecker/OptimisedPrimeChecker.java
similarity index 100%
rename from core-java-modules/java-numbers-2/src/main/java/com/baeldung/algorithms/primechecker/OptimisedPrimeChecker.java
rename to core-java-modules/core-java-numbers-2/src/main/java/com/baeldung/algorithms/primechecker/OptimisedPrimeChecker.java
diff --git a/core-java-modules/java-numbers-2/src/main/java/com/baeldung/algorithms/primechecker/PrimeChecker.java b/core-java-modules/core-java-numbers-2/src/main/java/com/baeldung/algorithms/primechecker/PrimeChecker.java
similarity index 100%
rename from core-java-modules/java-numbers-2/src/main/java/com/baeldung/algorithms/primechecker/PrimeChecker.java
rename to core-java-modules/core-java-numbers-2/src/main/java/com/baeldung/algorithms/primechecker/PrimeChecker.java
diff --git a/core-java-modules/java-numbers-2/src/main/java/com/baeldung/algorithms/primechecker/PrimesPrimeChecker.java b/core-java-modules/core-java-numbers-2/src/main/java/com/baeldung/algorithms/primechecker/PrimesPrimeChecker.java
similarity index 100%
rename from core-java-modules/java-numbers-2/src/main/java/com/baeldung/algorithms/primechecker/PrimesPrimeChecker.java
rename to core-java-modules/core-java-numbers-2/src/main/java/com/baeldung/algorithms/primechecker/PrimesPrimeChecker.java
diff --git a/core-java-modules/java-numbers-2/src/main/java/com/baeldung/area/circle/Circle.java b/core-java-modules/core-java-numbers-2/src/main/java/com/baeldung/area/circle/Circle.java
similarity index 100%
rename from core-java-modules/java-numbers-2/src/main/java/com/baeldung/area/circle/Circle.java
rename to core-java-modules/core-java-numbers-2/src/main/java/com/baeldung/area/circle/Circle.java
diff --git a/core-java-modules/java-numbers-2/src/main/java/com/baeldung/area/circle/CircleArea.java b/core-java-modules/core-java-numbers-2/src/main/java/com/baeldung/area/circle/CircleArea.java
similarity index 100%
rename from core-java-modules/java-numbers-2/src/main/java/com/baeldung/area/circle/CircleArea.java
rename to core-java-modules/core-java-numbers-2/src/main/java/com/baeldung/area/circle/CircleArea.java
diff --git a/core-java-modules/java-numbers-2/src/main/java/com/baeldung/binarynumbers/BinaryNumbers.java b/core-java-modules/core-java-numbers-2/src/main/java/com/baeldung/binarynumbers/BinaryNumbers.java
similarity index 100%
rename from core-java-modules/java-numbers-2/src/main/java/com/baeldung/binarynumbers/BinaryNumbers.java
rename to core-java-modules/core-java-numbers-2/src/main/java/com/baeldung/binarynumbers/BinaryNumbers.java
diff --git a/core-java-modules/java-numbers-2/src/main/java/com/baeldung/lcm/BigIntegerLCM.java b/core-java-modules/core-java-numbers-2/src/main/java/com/baeldung/lcm/BigIntegerLCM.java
similarity index 100%
rename from core-java-modules/java-numbers-2/src/main/java/com/baeldung/lcm/BigIntegerLCM.java
rename to core-java-modules/core-java-numbers-2/src/main/java/com/baeldung/lcm/BigIntegerLCM.java
diff --git a/core-java-modules/java-numbers-2/src/main/java/com/baeldung/lcm/EuclideanAlgorithm.java b/core-java-modules/core-java-numbers-2/src/main/java/com/baeldung/lcm/EuclideanAlgorithm.java
similarity index 100%
rename from core-java-modules/java-numbers-2/src/main/java/com/baeldung/lcm/EuclideanAlgorithm.java
rename to core-java-modules/core-java-numbers-2/src/main/java/com/baeldung/lcm/EuclideanAlgorithm.java
diff --git a/core-java-modules/java-numbers-2/src/main/java/com/baeldung/lcm/PrimeFactorizationAlgorithm.java b/core-java-modules/core-java-numbers-2/src/main/java/com/baeldung/lcm/PrimeFactorizationAlgorithm.java
similarity index 100%
rename from core-java-modules/java-numbers-2/src/main/java/com/baeldung/lcm/PrimeFactorizationAlgorithm.java
rename to core-java-modules/core-java-numbers-2/src/main/java/com/baeldung/lcm/PrimeFactorizationAlgorithm.java
diff --git a/core-java-modules/java-numbers-2/src/main/java/com/baeldung/lcm/SimpleAlgorithm.java b/core-java-modules/core-java-numbers-2/src/main/java/com/baeldung/lcm/SimpleAlgorithm.java
similarity index 100%
rename from core-java-modules/java-numbers-2/src/main/java/com/baeldung/lcm/SimpleAlgorithm.java
rename to core-java-modules/core-java-numbers-2/src/main/java/com/baeldung/lcm/SimpleAlgorithm.java
diff --git a/core-java-modules/java-numbers-2/src/main/java/com/baeldung/nan/NaNExample.java b/core-java-modules/core-java-numbers-2/src/main/java/com/baeldung/nan/NaNExample.java
similarity index 100%
rename from core-java-modules/java-numbers-2/src/main/java/com/baeldung/nan/NaNExample.java
rename to core-java-modules/core-java-numbers-2/src/main/java/com/baeldung/nan/NaNExample.java
diff --git a/core-java-modules/java-numbers-2/src/main/java/com/baeldung/pow/PowerExample.java b/core-java-modules/core-java-numbers-2/src/main/java/com/baeldung/pow/PowerExample.java
similarity index 100%
rename from core-java-modules/java-numbers-2/src/main/java/com/baeldung/pow/PowerExample.java
rename to core-java-modules/core-java-numbers-2/src/main/java/com/baeldung/pow/PowerExample.java
diff --git a/core-java-modules/java-numbers-2/src/main/java/com/baeldung/prime/PrimeGenerator.java b/core-java-modules/core-java-numbers-2/src/main/java/com/baeldung/prime/PrimeGenerator.java
similarity index 100%
rename from core-java-modules/java-numbers-2/src/main/java/com/baeldung/prime/PrimeGenerator.java
rename to core-java-modules/core-java-numbers-2/src/main/java/com/baeldung/prime/PrimeGenerator.java
diff --git a/core-java-modules/java-numbers-2/src/test/java/com/baeldung/algorithms/primechecker/PrimeCheckerUnitTest.java b/core-java-modules/core-java-numbers-2/src/test/java/com/baeldung/algorithms/primechecker/PrimeCheckerUnitTest.java
similarity index 100%
rename from core-java-modules/java-numbers-2/src/test/java/com/baeldung/algorithms/primechecker/PrimeCheckerUnitTest.java
rename to core-java-modules/core-java-numbers-2/src/test/java/com/baeldung/algorithms/primechecker/PrimeCheckerUnitTest.java
diff --git a/core-java-modules/java-numbers-2/src/test/java/com/baeldung/binarynumbers/BinaryNumbersUnitTest.java b/core-java-modules/core-java-numbers-2/src/test/java/com/baeldung/binarynumbers/BinaryNumbersUnitTest.java
similarity index 100%
rename from core-java-modules/java-numbers-2/src/test/java/com/baeldung/binarynumbers/BinaryNumbersUnitTest.java
rename to core-java-modules/core-java-numbers-2/src/test/java/com/baeldung/binarynumbers/BinaryNumbersUnitTest.java
diff --git a/core-java-modules/java-numbers-2/src/test/java/com/baeldung/java/math/MathUnitTest.java b/core-java-modules/core-java-numbers-2/src/test/java/com/baeldung/java/math/MathUnitTest.java
similarity index 100%
rename from core-java-modules/java-numbers-2/src/test/java/com/baeldung/java/math/MathUnitTest.java
rename to core-java-modules/core-java-numbers-2/src/test/java/com/baeldung/java/math/MathUnitTest.java
diff --git a/core-java-modules/java-numbers-2/src/test/java/com/baeldung/lcm/BigIntegerLCMUnitTest.java b/core-java-modules/core-java-numbers-2/src/test/java/com/baeldung/lcm/BigIntegerLCMUnitTest.java
similarity index 100%
rename from core-java-modules/java-numbers-2/src/test/java/com/baeldung/lcm/BigIntegerLCMUnitTest.java
rename to core-java-modules/core-java-numbers-2/src/test/java/com/baeldung/lcm/BigIntegerLCMUnitTest.java
diff --git a/core-java-modules/java-numbers-2/src/test/java/com/baeldung/lcm/EuclideanAlgorithmUnitTest.java b/core-java-modules/core-java-numbers-2/src/test/java/com/baeldung/lcm/EuclideanAlgorithmUnitTest.java
similarity index 100%
rename from core-java-modules/java-numbers-2/src/test/java/com/baeldung/lcm/EuclideanAlgorithmUnitTest.java
rename to core-java-modules/core-java-numbers-2/src/test/java/com/baeldung/lcm/EuclideanAlgorithmUnitTest.java
diff --git a/core-java-modules/java-numbers-2/src/test/java/com/baeldung/lcm/PrimeFactorizationAlgorithmUnitTest.java b/core-java-modules/core-java-numbers-2/src/test/java/com/baeldung/lcm/PrimeFactorizationAlgorithmUnitTest.java
similarity index 100%
rename from core-java-modules/java-numbers-2/src/test/java/com/baeldung/lcm/PrimeFactorizationAlgorithmUnitTest.java
rename to core-java-modules/core-java-numbers-2/src/test/java/com/baeldung/lcm/PrimeFactorizationAlgorithmUnitTest.java
diff --git a/core-java-modules/java-numbers-2/src/test/java/com/baeldung/lcm/SimpleAlgorithmUnitTest.java b/core-java-modules/core-java-numbers-2/src/test/java/com/baeldung/lcm/SimpleAlgorithmUnitTest.java
similarity index 100%
rename from core-java-modules/java-numbers-2/src/test/java/com/baeldung/lcm/SimpleAlgorithmUnitTest.java
rename to core-java-modules/core-java-numbers-2/src/test/java/com/baeldung/lcm/SimpleAlgorithmUnitTest.java
diff --git a/core-java-modules/java-numbers-2/src/test/java/com/baeldung/lossyconversion/ConversionTechniquesUnitTest.java b/core-java-modules/core-java-numbers-2/src/test/java/com/baeldung/lossyconversion/ConversionTechniquesUnitTest.java
similarity index 100%
rename from core-java-modules/java-numbers-2/src/test/java/com/baeldung/lossyconversion/ConversionTechniquesUnitTest.java
rename to core-java-modules/core-java-numbers-2/src/test/java/com/baeldung/lossyconversion/ConversionTechniquesUnitTest.java
diff --git a/core-java-modules/java-numbers-2/src/test/java/com/baeldung/prime/PrimeGeneratorUnitTest.java b/core-java-modules/core-java-numbers-2/src/test/java/com/baeldung/prime/PrimeGeneratorUnitTest.java
similarity index 100%
rename from core-java-modules/java-numbers-2/src/test/java/com/baeldung/prime/PrimeGeneratorUnitTest.java
rename to core-java-modules/core-java-numbers-2/src/test/java/com/baeldung/prime/PrimeGeneratorUnitTest.java
diff --git a/core-java-modules/java-numbers-3/README.md b/core-java-modules/core-java-numbers-3/README.md
similarity index 92%
rename from core-java-modules/java-numbers-3/README.md
rename to core-java-modules/core-java-numbers-3/README.md
index c588b46d9b..fa2095131f 100644
--- a/core-java-modules/java-numbers-3/README.md
+++ b/core-java-modules/core-java-numbers-3/README.md
@@ -14,4 +14,4 @@ This module contains articles about numbers in Java.
- [Print an Integer in Binary Format in Java](https://www.baeldung.com/java-print-integer-binary)
- [Number Formatting in Java](https://www.baeldung.com/java-number-formatting)
- [Division by Zero in Java: Exception, Infinity, or Not a Number](https://www.baeldung.com/java-division-by-zero)
-- More articles: [[<-- prev]](../java-numbers-2) [[next -->]](../java-numbers-4)
+- More articles: [[<-- prev]](../core-java-numbers-2) [[next -->]](../core-java-numbers-4)
diff --git a/core-java-modules/java-numbers-3/pom.xml b/core-java-modules/core-java-numbers-3/pom.xml
similarity index 91%
rename from core-java-modules/java-numbers-3/pom.xml
rename to core-java-modules/core-java-numbers-3/pom.xml
index 2c2006e303..8acdaa6be4 100644
--- a/core-java-modules/java-numbers-3/pom.xml
+++ b/core-java-modules/core-java-numbers-3/pom.xml
@@ -2,8 +2,8 @@
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
- java-numbers-3
- java-numbers-3
+ core-java-numbers-3
+ core-java-numbers-3
jar
@@ -32,7 +32,7 @@
- java-numbers-3
+ core-java-numbers-3
src/main/resources
diff --git a/core-java-modules/java-numbers-3/src/main/java/com/baeldung/fibonacci/FibonacciSeriesUtils.java b/core-java-modules/core-java-numbers-3/src/main/java/com/baeldung/fibonacci/FibonacciSeriesUtils.java
similarity index 100%
rename from core-java-modules/java-numbers-3/src/main/java/com/baeldung/fibonacci/FibonacciSeriesUtils.java
rename to core-java-modules/core-java-numbers-3/src/main/java/com/baeldung/fibonacci/FibonacciSeriesUtils.java
diff --git a/core-java-modules/java-numbers-3/src/main/java/com/baeldung/formatNumber/FormatNumber.java b/core-java-modules/core-java-numbers-3/src/main/java/com/baeldung/formatNumber/FormatNumber.java
similarity index 100%
rename from core-java-modules/java-numbers-3/src/main/java/com/baeldung/formatNumber/FormatNumber.java
rename to core-java-modules/core-java-numbers-3/src/main/java/com/baeldung/formatNumber/FormatNumber.java
diff --git a/core-java-modules/java-numbers-3/src/main/java/com/baeldung/integerToBinary/IntegerToBinary.java b/core-java-modules/core-java-numbers-3/src/main/java/com/baeldung/integerToBinary/IntegerToBinary.java
similarity index 100%
rename from core-java-modules/java-numbers-3/src/main/java/com/baeldung/integerToBinary/IntegerToBinary.java
rename to core-java-modules/core-java-numbers-3/src/main/java/com/baeldung/integerToBinary/IntegerToBinary.java
diff --git a/core-java-modules/java-numbers-3/src/main/java/com/baeldung/numbersinrange/NumbersInARange.java b/core-java-modules/core-java-numbers-3/src/main/java/com/baeldung/numbersinrange/NumbersInARange.java
similarity index 100%
rename from core-java-modules/java-numbers-3/src/main/java/com/baeldung/numbersinrange/NumbersInARange.java
rename to core-java-modules/core-java-numbers-3/src/main/java/com/baeldung/numbersinrange/NumbersInARange.java
diff --git a/core-java-modules/java-numbers-3/src/main/java/com/baeldung/numbersinrange/RandomNumbersInARange.java b/core-java-modules/core-java-numbers-3/src/main/java/com/baeldung/numbersinrange/RandomNumbersInARange.java
similarity index 100%
rename from core-java-modules/java-numbers-3/src/main/java/com/baeldung/numbersinrange/RandomNumbersInARange.java
rename to core-java-modules/core-java-numbers-3/src/main/java/com/baeldung/numbersinrange/RandomNumbersInARange.java
diff --git a/core-java-modules/java-numbers-3/src/main/java/com/baeldung/randomnumbers/RandomNumbersGenerator.java b/core-java-modules/core-java-numbers-3/src/main/java/com/baeldung/randomnumbers/RandomNumbersGenerator.java
similarity index 100%
rename from core-java-modules/java-numbers-3/src/main/java/com/baeldung/randomnumbers/RandomNumbersGenerator.java
rename to core-java-modules/core-java-numbers-3/src/main/java/com/baeldung/randomnumbers/RandomNumbersGenerator.java
diff --git a/core-java-modules/java-numbers-3/src/test/java/com/baeldung/abstractnumber/AbstractNumberUnitTest.java b/core-java-modules/core-java-numbers-3/src/test/java/com/baeldung/abstractnumber/AbstractNumberUnitTest.java
similarity index 100%
rename from core-java-modules/java-numbers-3/src/test/java/com/baeldung/abstractnumber/AbstractNumberUnitTest.java
rename to core-java-modules/core-java-numbers-3/src/test/java/com/baeldung/abstractnumber/AbstractNumberUnitTest.java
diff --git a/core-java-modules/java-numbers-3/src/test/java/com/baeldung/divisionbyzero/DivisionByZeroUnitTest.java b/core-java-modules/core-java-numbers-3/src/test/java/com/baeldung/divisionbyzero/DivisionByZeroUnitTest.java
similarity index 100%
rename from core-java-modules/java-numbers-3/src/test/java/com/baeldung/divisionbyzero/DivisionByZeroUnitTest.java
rename to core-java-modules/core-java-numbers-3/src/test/java/com/baeldung/divisionbyzero/DivisionByZeroUnitTest.java
diff --git a/core-java-modules/java-numbers-3/src/test/java/com/baeldung/doubletolong/DoubleToLongUnitTest.java b/core-java-modules/core-java-numbers-3/src/test/java/com/baeldung/doubletolong/DoubleToLongUnitTest.java
similarity index 100%
rename from core-java-modules/java-numbers-3/src/test/java/com/baeldung/doubletolong/DoubleToLongUnitTest.java
rename to core-java-modules/core-java-numbers-3/src/test/java/com/baeldung/doubletolong/DoubleToLongUnitTest.java
diff --git a/core-java-modules/java-numbers-3/src/test/java/com/baeldung/fibonacci/FibonacciSeriesUtilsUnitTest.java b/core-java-modules/core-java-numbers-3/src/test/java/com/baeldung/fibonacci/FibonacciSeriesUtilsUnitTest.java
similarity index 100%
rename from core-java-modules/java-numbers-3/src/test/java/com/baeldung/fibonacci/FibonacciSeriesUtilsUnitTest.java
rename to core-java-modules/core-java-numbers-3/src/test/java/com/baeldung/fibonacci/FibonacciSeriesUtilsUnitTest.java
diff --git a/core-java-modules/java-numbers-3/src/test/java/com/baeldung/formatNumber/FormatNumberUnitTest.java b/core-java-modules/core-java-numbers-3/src/test/java/com/baeldung/formatNumber/FormatNumberUnitTest.java
similarity index 100%
rename from core-java-modules/java-numbers-3/src/test/java/com/baeldung/formatNumber/FormatNumberUnitTest.java
rename to core-java-modules/core-java-numbers-3/src/test/java/com/baeldung/formatNumber/FormatNumberUnitTest.java
diff --git a/core-java-modules/java-numbers-3/src/test/java/com/baeldung/integerToBinary/IntegerToBinaryUnitTest.java b/core-java-modules/core-java-numbers-3/src/test/java/com/baeldung/integerToBinary/IntegerToBinaryUnitTest.java
similarity index 100%
rename from core-java-modules/java-numbers-3/src/test/java/com/baeldung/integerToBinary/IntegerToBinaryUnitTest.java
rename to core-java-modules/core-java-numbers-3/src/test/java/com/baeldung/integerToBinary/IntegerToBinaryUnitTest.java
diff --git a/core-java-modules/java-numbers-3/src/test/java/com/baeldung/numbersinrange/NumbersInARangeUnitTest.java b/core-java-modules/core-java-numbers-3/src/test/java/com/baeldung/numbersinrange/NumbersInARangeUnitTest.java
similarity index 100%
rename from core-java-modules/java-numbers-3/src/test/java/com/baeldung/numbersinrange/NumbersInARangeUnitTest.java
rename to core-java-modules/core-java-numbers-3/src/test/java/com/baeldung/numbersinrange/NumbersInARangeUnitTest.java
diff --git a/core-java-modules/java-numbers-3/src/test/java/com/baeldung/numbersinrange/RandomNumbersInARangeUnitTest.java b/core-java-modules/core-java-numbers-3/src/test/java/com/baeldung/numbersinrange/RandomNumbersInARangeUnitTest.java
similarity index 100%
rename from core-java-modules/java-numbers-3/src/test/java/com/baeldung/numbersinrange/RandomNumbersInARangeUnitTest.java
rename to core-java-modules/core-java-numbers-3/src/test/java/com/baeldung/numbersinrange/RandomNumbersInARangeUnitTest.java
diff --git a/core-java-modules/java-numbers-3/src/test/java/com/baeldung/parsedouble/StringToDoubleParserUnitTest.java b/core-java-modules/core-java-numbers-3/src/test/java/com/baeldung/parsedouble/StringToDoubleParserUnitTest.java
similarity index 100%
rename from core-java-modules/java-numbers-3/src/test/java/com/baeldung/parsedouble/StringToDoubleParserUnitTest.java
rename to core-java-modules/core-java-numbers-3/src/test/java/com/baeldung/parsedouble/StringToDoubleParserUnitTest.java
diff --git a/core-java-modules/java-numbers-3/src/test/java/com/baeldung/randomnumbers/RandomNumbersGeneratorUnitTest.java b/core-java-modules/core-java-numbers-3/src/test/java/com/baeldung/randomnumbers/RandomNumbersGeneratorUnitTest.java
similarity index 100%
rename from core-java-modules/java-numbers-3/src/test/java/com/baeldung/randomnumbers/RandomNumbersGeneratorUnitTest.java
rename to core-java-modules/core-java-numbers-3/src/test/java/com/baeldung/randomnumbers/RandomNumbersGeneratorUnitTest.java
diff --git a/core-java-modules/java-numbers-4/README.md b/core-java-modules/core-java-numbers-4/README.md
similarity index 85%
rename from core-java-modules/java-numbers-4/README.md
rename to core-java-modules/core-java-numbers-4/README.md
index 2a7578dbb0..f8cc655f55 100644
--- a/core-java-modules/java-numbers-4/README.md
+++ b/core-java-modules/core-java-numbers-4/README.md
@@ -7,7 +7,6 @@
- [Automorphic Numbers in Java](https://www.baeldung.com/java-automorphic-numbers)
- [Convert Byte Size Into a Human-Readable Format in Java](https://www.baeldung.com/java-human-readable-byte-size)
- [Convert boolean to int in Java](https://www.baeldung.com/java-boolean-to-int)
-- [Generate a Random Value From an Enum](https://www.baeldung.com/java-enum-random-value)
- [Reverse a Number in Java](https://www.baeldung.com/java-reverse-number)
- [Check if BigDecimal Value Is Zero](https://www.baeldung.com/java-bigdecimal-zero)
-- More articles: [[<-- prev]](../java-numbers-3)
\ No newline at end of file
+- More articles: [[<-- prev]](../core-java-numbers-3) [[next -->]](../core-java-numbers-5)
\ No newline at end of file
diff --git a/core-java-modules/java-numbers-4/pom.xml b/core-java-modules/core-java-numbers-4/pom.xml
similarity index 90%
rename from core-java-modules/java-numbers-4/pom.xml
rename to core-java-modules/core-java-numbers-4/pom.xml
index b3ecb3be42..4fe8b292da 100644
--- a/core-java-modules/java-numbers-4/pom.xml
+++ b/core-java-modules/core-java-numbers-4/pom.xml
@@ -2,8 +2,8 @@
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
- java-numbers-4
- java-numbers-4
+ core-java-numbers-4
+ core-java-numbers-4
jar
@@ -31,7 +31,7 @@
- java-numbers-4
+ core-java-numbers-4
src/main/resources
diff --git a/core-java-modules/java-numbers-4/src/main/java/com/baeldung/automorphicnumber/AutomorphicNumber.java b/core-java-modules/core-java-numbers-4/src/main/java/com/baeldung/automorphicnumber/AutomorphicNumber.java
similarity index 100%
rename from core-java-modules/java-numbers-4/src/main/java/com/baeldung/automorphicnumber/AutomorphicNumber.java
rename to core-java-modules/core-java-numbers-4/src/main/java/com/baeldung/automorphicnumber/AutomorphicNumber.java
diff --git a/core-java-modules/java-numbers-4/src/main/java/com/baeldung/booleantoint/BooleanToInt.java b/core-java-modules/core-java-numbers-4/src/main/java/com/baeldung/booleantoint/BooleanToInt.java
similarity index 100%
rename from core-java-modules/java-numbers-4/src/main/java/com/baeldung/booleantoint/BooleanToInt.java
rename to core-java-modules/core-java-numbers-4/src/main/java/com/baeldung/booleantoint/BooleanToInt.java
diff --git a/core-java-modules/java-numbers-4/src/main/java/com/baeldung/convertLongToInt/ConvertLongToInt.java b/core-java-modules/core-java-numbers-4/src/main/java/com/baeldung/convertLongToInt/ConvertLongToInt.java
similarity index 100%
rename from core-java-modules/java-numbers-4/src/main/java/com/baeldung/convertLongToInt/ConvertLongToInt.java
rename to core-java-modules/core-java-numbers-4/src/main/java/com/baeldung/convertLongToInt/ConvertLongToInt.java
diff --git a/core-java-modules/java-numbers-4/src/main/java/com/baeldung/humanreadablebytes/FileSizeFormatUtil.java b/core-java-modules/core-java-numbers-4/src/main/java/com/baeldung/humanreadablebytes/FileSizeFormatUtil.java
similarity index 100%
rename from core-java-modules/java-numbers-4/src/main/java/com/baeldung/humanreadablebytes/FileSizeFormatUtil.java
rename to core-java-modules/core-java-numbers-4/src/main/java/com/baeldung/humanreadablebytes/FileSizeFormatUtil.java
diff --git a/core-java-modules/java-numbers-4/src/main/java/com/baeldung/number_0xff/Number0xff.java b/core-java-modules/core-java-numbers-4/src/main/java/com/baeldung/number_0xff/Number0xff.java
similarity index 100%
rename from core-java-modules/java-numbers-4/src/main/java/com/baeldung/number_0xff/Number0xff.java
rename to core-java-modules/core-java-numbers-4/src/main/java/com/baeldung/number_0xff/Number0xff.java
diff --git a/core-java-modules/java-numbers-4/src/main/java/com/baeldung/perfectsquare/PerfectSquareUtil.java b/core-java-modules/core-java-numbers-4/src/main/java/com/baeldung/perfectsquare/PerfectSquareUtil.java
similarity index 100%
rename from core-java-modules/java-numbers-4/src/main/java/com/baeldung/perfectsquare/PerfectSquareUtil.java
rename to core-java-modules/core-java-numbers-4/src/main/java/com/baeldung/perfectsquare/PerfectSquareUtil.java
diff --git a/core-java-modules/java-numbers-4/src/main/java/com/baeldung/probability/MaleHeightGenerator.java b/core-java-modules/core-java-numbers-4/src/main/java/com/baeldung/probability/MaleHeightGenerator.java
similarity index 100%
rename from core-java-modules/java-numbers-4/src/main/java/com/baeldung/probability/MaleHeightGenerator.java
rename to core-java-modules/core-java-numbers-4/src/main/java/com/baeldung/probability/MaleHeightGenerator.java
diff --git a/core-java-modules/java-numbers-4/src/main/java/com/baeldung/probability/RandomInvoker.java b/core-java-modules/core-java-numbers-4/src/main/java/com/baeldung/probability/RandomInvoker.java
similarity index 100%
rename from core-java-modules/java-numbers-4/src/main/java/com/baeldung/probability/RandomInvoker.java
rename to core-java-modules/core-java-numbers-4/src/main/java/com/baeldung/probability/RandomInvoker.java
diff --git a/core-java-modules/java-numbers-4/src/main/java/com/baeldung/reversenumber/ReverseNumber.java b/core-java-modules/core-java-numbers-4/src/main/java/com/baeldung/reversenumber/ReverseNumber.java
similarity index 100%
rename from core-java-modules/java-numbers-4/src/main/java/com/baeldung/reversenumber/ReverseNumber.java
rename to core-java-modules/core-java-numbers-4/src/main/java/com/baeldung/reversenumber/ReverseNumber.java
diff --git a/core-java-modules/java-numbers-4/src/test/java/com/baeldung/automorphicnumber/AutomorphicNumberUnitTest.java b/core-java-modules/core-java-numbers-4/src/test/java/com/baeldung/automorphicnumber/AutomorphicNumberUnitTest.java
similarity index 100%
rename from core-java-modules/java-numbers-4/src/test/java/com/baeldung/automorphicnumber/AutomorphicNumberUnitTest.java
rename to core-java-modules/core-java-numbers-4/src/test/java/com/baeldung/automorphicnumber/AutomorphicNumberUnitTest.java
diff --git a/core-java-modules/java-numbers-4/src/test/java/com/baeldung/bigdecimalzero/BigDecimalZeroChkUnitTest.java b/core-java-modules/core-java-numbers-4/src/test/java/com/baeldung/bigdecimalzero/BigDecimalZeroChkUnitTest.java
similarity index 100%
rename from core-java-modules/java-numbers-4/src/test/java/com/baeldung/bigdecimalzero/BigDecimalZeroChkUnitTest.java
rename to core-java-modules/core-java-numbers-4/src/test/java/com/baeldung/bigdecimalzero/BigDecimalZeroChkUnitTest.java
diff --git a/core-java-modules/java-numbers-4/src/test/java/com/baeldung/biginteger/BigIntegerUnitTest.java b/core-java-modules/core-java-numbers-4/src/test/java/com/baeldung/biginteger/BigIntegerUnitTest.java
similarity index 100%
rename from core-java-modules/java-numbers-4/src/test/java/com/baeldung/biginteger/BigIntegerUnitTest.java
rename to core-java-modules/core-java-numbers-4/src/test/java/com/baeldung/biginteger/BigIntegerUnitTest.java
diff --git a/core-java-modules/java-numbers-4/src/test/java/com/baeldung/booleantoint/BooleanToIntUnitTest.java b/core-java-modules/core-java-numbers-4/src/test/java/com/baeldung/booleantoint/BooleanToIntUnitTest.java
similarity index 100%
rename from core-java-modules/java-numbers-4/src/test/java/com/baeldung/booleantoint/BooleanToIntUnitTest.java
rename to core-java-modules/core-java-numbers-4/src/test/java/com/baeldung/booleantoint/BooleanToIntUnitTest.java
diff --git a/core-java-modules/java-numbers-4/src/test/java/com/baeldung/convertLongToInt/ConvertLongToIntUnitTest.java b/core-java-modules/core-java-numbers-4/src/test/java/com/baeldung/convertLongToInt/ConvertLongToIntUnitTest.java
similarity index 100%
rename from core-java-modules/java-numbers-4/src/test/java/com/baeldung/convertLongToInt/ConvertLongToIntUnitTest.java
rename to core-java-modules/core-java-numbers-4/src/test/java/com/baeldung/convertLongToInt/ConvertLongToIntUnitTest.java
diff --git a/core-java-modules/java-numbers-4/src/test/java/com/baeldung/humanreadablebytes/FileSizeFormatUtilUnitTest.java b/core-java-modules/core-java-numbers-4/src/test/java/com/baeldung/humanreadablebytes/FileSizeFormatUtilUnitTest.java
similarity index 100%
rename from core-java-modules/java-numbers-4/src/test/java/com/baeldung/humanreadablebytes/FileSizeFormatUtilUnitTest.java
rename to core-java-modules/core-java-numbers-4/src/test/java/com/baeldung/humanreadablebytes/FileSizeFormatUtilUnitTest.java
diff --git a/core-java-modules/java-numbers-4/src/test/java/com/baeldung/number_0xff/Number0xffUnitTest.java b/core-java-modules/core-java-numbers-4/src/test/java/com/baeldung/number_0xff/Number0xffUnitTest.java
similarity index 100%
rename from core-java-modules/java-numbers-4/src/test/java/com/baeldung/number_0xff/Number0xffUnitTest.java
rename to core-java-modules/core-java-numbers-4/src/test/java/com/baeldung/number_0xff/Number0xffUnitTest.java
diff --git a/core-java-modules/java-numbers-4/src/test/java/com/baeldung/perfectsquare/PerfectSquareUnitTest.java b/core-java-modules/core-java-numbers-4/src/test/java/com/baeldung/perfectsquare/PerfectSquareUnitTest.java
similarity index 100%
rename from core-java-modules/java-numbers-4/src/test/java/com/baeldung/perfectsquare/PerfectSquareUnitTest.java
rename to core-java-modules/core-java-numbers-4/src/test/java/com/baeldung/perfectsquare/PerfectSquareUnitTest.java
diff --git a/core-java-modules/java-numbers-4/src/test/java/com/baeldung/probability/RandomInvokerUnitTest.java b/core-java-modules/core-java-numbers-4/src/test/java/com/baeldung/probability/RandomInvokerUnitTest.java
similarity index 100%
rename from core-java-modules/java-numbers-4/src/test/java/com/baeldung/probability/RandomInvokerUnitTest.java
rename to core-java-modules/core-java-numbers-4/src/test/java/com/baeldung/probability/RandomInvokerUnitTest.java
diff --git a/core-java-modules/java-numbers-4/src/test/java/com/baeldung/reversenumber/ReverseNumberUnitTest.java b/core-java-modules/core-java-numbers-4/src/test/java/com/baeldung/reversenumber/ReverseNumberUnitTest.java
similarity index 100%
rename from core-java-modules/java-numbers-4/src/test/java/com/baeldung/reversenumber/ReverseNumberUnitTest.java
rename to core-java-modules/core-java-numbers-4/src/test/java/com/baeldung/reversenumber/ReverseNumberUnitTest.java
diff --git a/core-java-modules/core-java-numbers-5/README.md b/core-java-modules/core-java-numbers-5/README.md
new file mode 100644
index 0000000000..dd80febce9
--- /dev/null
+++ b/core-java-modules/core-java-numbers-5/README.md
@@ -0,0 +1,2 @@
+### Relevant Articles:
+- [Check if a Number Is Odd or Even](https://www.baeldung.com/java-check-number-parity)
diff --git a/core-java-modules/java-numbers-5/pom.xml b/core-java-modules/core-java-numbers-5/pom.xml
similarity index 83%
rename from core-java-modules/java-numbers-5/pom.xml
rename to core-java-modules/core-java-numbers-5/pom.xml
index f5805981ae..f236d28ccb 100644
--- a/core-java-modules/java-numbers-5/pom.xml
+++ b/core-java-modules/core-java-numbers-5/pom.xml
@@ -2,8 +2,8 @@
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
- java-numbers-5
- java-numbers-5
+ core-java-numbers-5
+ core-java-numbers-5
jar
@@ -13,7 +13,7 @@
- java-numbers-5
+ core-java-numbers-5
src/main/resources
diff --git a/core-java-modules/java-numbers-5/src/main/java/com/baeldung/evenodd/EvenOdd.java b/core-java-modules/core-java-numbers-5/src/main/java/com/baeldung/evenodd/EvenOdd.java
similarity index 96%
rename from core-java-modules/java-numbers-5/src/main/java/com/baeldung/evenodd/EvenOdd.java
rename to core-java-modules/core-java-numbers-5/src/main/java/com/baeldung/evenodd/EvenOdd.java
index 5323dcbe11..ade3421ee7 100644
--- a/core-java-modules/java-numbers-5/src/main/java/com/baeldung/evenodd/EvenOdd.java
+++ b/core-java-modules/core-java-numbers-5/src/main/java/com/baeldung/evenodd/EvenOdd.java
@@ -7,7 +7,7 @@ public class EvenOdd {
}
static boolean isOdd(int x) {
- return x % 2 == 1;
+ return x % 2 != 0;
}
static boolean isOrEven(int x) {
diff --git a/core-java-modules/java-numbers-5/src/test/java/com/baeldung/evenodd/EvenOddUnitTest.java b/core-java-modules/core-java-numbers-5/src/test/java/com/baeldung/evenodd/EvenOddUnitTest.java
similarity index 100%
rename from core-java-modules/java-numbers-5/src/test/java/com/baeldung/evenodd/EvenOddUnitTest.java
rename to core-java-modules/core-java-numbers-5/src/test/java/com/baeldung/evenodd/EvenOddUnitTest.java
diff --git a/core-java-modules/java-numbers/.gitignore b/core-java-modules/core-java-numbers/.gitignore
similarity index 100%
rename from core-java-modules/java-numbers/.gitignore
rename to core-java-modules/core-java-numbers/.gitignore
diff --git a/core-java-modules/java-numbers/README.md b/core-java-modules/core-java-numbers/README.md
similarity index 95%
rename from core-java-modules/java-numbers/README.md
rename to core-java-modules/core-java-numbers/README.md
index 772d09869e..f84959b994 100644
--- a/core-java-modules/java-numbers/README.md
+++ b/core-java-modules/core-java-numbers/README.md
@@ -13,4 +13,4 @@ This module contains articles about numbers in Java.
- [Convert Double to String, Removing Decimal Places](https://www.baeldung.com/java-double-to-string)
- [Changing the Order in a Sum Operation Can Produce Different Results?](https://www.baeldung.com/java-floating-point-sum-order)
- [Using Math.sin with Degrees](https://www.baeldung.com/java-math-sin-degrees)
-- More articles: [[next -->]](../java-numbers-2)
+- More articles: [[next -->]](../core-java-numbers-2)
diff --git a/core-java-modules/java-numbers/pom.xml b/core-java-modules/core-java-numbers/pom.xml
similarity index 91%
rename from core-java-modules/java-numbers/pom.xml
rename to core-java-modules/core-java-numbers/pom.xml
index 9bd0f33a85..4b2cae8ee9 100644
--- a/core-java-modules/java-numbers/pom.xml
+++ b/core-java-modules/core-java-numbers/pom.xml
@@ -3,9 +3,9 @@
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
4.0.0
- java-numbers
+ core-java-numbers
0.1.0-SNAPSHOT
- java-numbers
+ core-java-numbers
jar
@@ -33,7 +33,7 @@
- java-numbers
+ core-java-numbers
src/main/resources
diff --git a/core-java-modules/java-numbers/src/main/java/com/baeldung/maths/BigDecimalDemo.java b/core-java-modules/core-java-numbers/src/main/java/com/baeldung/maths/BigDecimalDemo.java
similarity index 100%
rename from core-java-modules/java-numbers/src/main/java/com/baeldung/maths/BigDecimalDemo.java
rename to core-java-modules/core-java-numbers/src/main/java/com/baeldung/maths/BigDecimalDemo.java
diff --git a/core-java-modules/java-numbers/src/main/java/com/baeldung/maths/FloatingPointArithmetic.java b/core-java-modules/core-java-numbers/src/main/java/com/baeldung/maths/FloatingPointArithmetic.java
similarity index 100%
rename from core-java-modules/java-numbers/src/main/java/com/baeldung/maths/FloatingPointArithmetic.java
rename to core-java-modules/core-java-numbers/src/main/java/com/baeldung/maths/FloatingPointArithmetic.java
diff --git a/core-java-modules/java-numbers/src/main/java/com/baeldung/maths/Round.java b/core-java-modules/core-java-numbers/src/main/java/com/baeldung/maths/Round.java
similarity index 100%
rename from core-java-modules/java-numbers/src/main/java/com/baeldung/maths/Round.java
rename to core-java-modules/core-java-numbers/src/main/java/com/baeldung/maths/Round.java
diff --git a/core-java-modules/java-numbers/src/main/java/com/baeldung/nth/root/calculator/NthRootCalculator.java b/core-java-modules/core-java-numbers/src/main/java/com/baeldung/nth/root/calculator/NthRootCalculator.java
similarity index 100%
rename from core-java-modules/java-numbers/src/main/java/com/baeldung/nth/root/calculator/NthRootCalculator.java
rename to core-java-modules/core-java-numbers/src/main/java/com/baeldung/nth/root/calculator/NthRootCalculator.java
diff --git a/core-java-modules/java-numbers/src/main/java/com/baeldung/nth/root/main/Main.java b/core-java-modules/core-java-numbers/src/main/java/com/baeldung/nth/root/main/Main.java
similarity index 100%
rename from core-java-modules/java-numbers/src/main/java/com/baeldung/nth/root/main/Main.java
rename to core-java-modules/core-java-numbers/src/main/java/com/baeldung/nth/root/main/Main.java
diff --git a/core-java-modules/java-numbers/src/main/java/com/baeldung/numberofdigits/Benchmarking.java b/core-java-modules/core-java-numbers/src/main/java/com/baeldung/numberofdigits/Benchmarking.java
similarity index 100%
rename from core-java-modules/java-numbers/src/main/java/com/baeldung/numberofdigits/Benchmarking.java
rename to core-java-modules/core-java-numbers/src/main/java/com/baeldung/numberofdigits/Benchmarking.java
diff --git a/core-java-modules/java-numbers/src/main/java/com/baeldung/numberofdigits/NumberOfDigits.java b/core-java-modules/core-java-numbers/src/main/java/com/baeldung/numberofdigits/NumberOfDigits.java
similarity index 100%
rename from core-java-modules/java-numbers/src/main/java/com/baeldung/numberofdigits/NumberOfDigits.java
rename to core-java-modules/core-java-numbers/src/main/java/com/baeldung/numberofdigits/NumberOfDigits.java
diff --git a/core-java-modules/java-numbers/src/main/java/com/baeldung/numberofdigits/NumberOfDigitsDriver.java b/core-java-modules/core-java-numbers/src/main/java/com/baeldung/numberofdigits/NumberOfDigitsDriver.java
similarity index 100%
rename from core-java-modules/java-numbers/src/main/java/com/baeldung/numberofdigits/NumberOfDigitsDriver.java
rename to core-java-modules/core-java-numbers/src/main/java/com/baeldung/numberofdigits/NumberOfDigitsDriver.java
diff --git a/core-java-modules/java-numbers/src/main/java/com/baeldung/pairsaddupnumber/DifferentPairs.java b/core-java-modules/core-java-numbers/src/main/java/com/baeldung/pairsaddupnumber/DifferentPairs.java
similarity index 100%
rename from core-java-modules/java-numbers/src/main/java/com/baeldung/pairsaddupnumber/DifferentPairs.java
rename to core-java-modules/core-java-numbers/src/main/java/com/baeldung/pairsaddupnumber/DifferentPairs.java
diff --git a/core-java-modules/java-numbers/src/main/java/com/baeldung/pairsaddupnumber/ExistingPairs.java b/core-java-modules/core-java-numbers/src/main/java/com/baeldung/pairsaddupnumber/ExistingPairs.java
similarity index 100%
rename from core-java-modules/java-numbers/src/main/java/com/baeldung/pairsaddupnumber/ExistingPairs.java
rename to core-java-modules/core-java-numbers/src/main/java/com/baeldung/pairsaddupnumber/ExistingPairs.java
diff --git a/core-java-modules/java-numbers/src/main/java/com/baeldung/pairsaddupnumber/FindPairs.java b/core-java-modules/core-java-numbers/src/main/java/com/baeldung/pairsaddupnumber/FindPairs.java
similarity index 100%
rename from core-java-modules/java-numbers/src/main/java/com/baeldung/pairsaddupnumber/FindPairs.java
rename to core-java-modules/core-java-numbers/src/main/java/com/baeldung/pairsaddupnumber/FindPairs.java
diff --git a/core-java-modules/java-numbers/src/main/java/com/baeldung/random/SecureRandomDemo.java b/core-java-modules/core-java-numbers/src/main/java/com/baeldung/random/SecureRandomDemo.java
similarity index 100%
rename from core-java-modules/java-numbers/src/main/java/com/baeldung/random/SecureRandomDemo.java
rename to core-java-modules/core-java-numbers/src/main/java/com/baeldung/random/SecureRandomDemo.java
diff --git a/core-java-modules/java-numbers/src/main/java/com/baeldung/string/DoubleToString.java b/core-java-modules/core-java-numbers/src/main/java/com/baeldung/string/DoubleToString.java
similarity index 100%
rename from core-java-modules/java-numbers/src/main/java/com/baeldung/string/DoubleToString.java
rename to core-java-modules/core-java-numbers/src/main/java/com/baeldung/string/DoubleToString.java
diff --git a/core-java-modules/java-numbers/src/main/resources/log4j.properties b/core-java-modules/core-java-numbers/src/main/resources/log4j.properties
similarity index 100%
rename from core-java-modules/java-numbers/src/main/resources/log4j.properties
rename to core-java-modules/core-java-numbers/src/main/resources/log4j.properties
diff --git a/core-java-modules/java-numbers/src/main/resources/logback.xml b/core-java-modules/core-java-numbers/src/main/resources/logback.xml
similarity index 100%
rename from core-java-modules/java-numbers/src/main/resources/logback.xml
rename to core-java-modules/core-java-numbers/src/main/resources/logback.xml
diff --git a/core-java-modules/java-numbers/src/test/java/com/baeldung/decimalformat/DecimalFormatExamplesUnitTest.java b/core-java-modules/core-java-numbers/src/test/java/com/baeldung/decimalformat/DecimalFormatExamplesUnitTest.java
similarity index 100%
rename from core-java-modules/java-numbers/src/test/java/com/baeldung/decimalformat/DecimalFormatExamplesUnitTest.java
rename to core-java-modules/core-java-numbers/src/test/java/com/baeldung/decimalformat/DecimalFormatExamplesUnitTest.java
diff --git a/core-java-modules/java-numbers/src/test/java/com/baeldung/maths/BigDecimalDemoUnitTest.java b/core-java-modules/core-java-numbers/src/test/java/com/baeldung/maths/BigDecimalDemoUnitTest.java
similarity index 100%
rename from core-java-modules/java-numbers/src/test/java/com/baeldung/maths/BigDecimalDemoUnitTest.java
rename to core-java-modules/core-java-numbers/src/test/java/com/baeldung/maths/BigDecimalDemoUnitTest.java
diff --git a/core-java-modules/java-numbers/src/test/java/com/baeldung/maths/BigDecimalImplUnitTest.java b/core-java-modules/core-java-numbers/src/test/java/com/baeldung/maths/BigDecimalImplUnitTest.java
similarity index 100%
rename from core-java-modules/java-numbers/src/test/java/com/baeldung/maths/BigDecimalImplUnitTest.java
rename to core-java-modules/core-java-numbers/src/test/java/com/baeldung/maths/BigDecimalImplUnitTest.java
diff --git a/core-java-modules/java-numbers/src/test/java/com/baeldung/maths/BigIntegerDemoUnitTest.java b/core-java-modules/core-java-numbers/src/test/java/com/baeldung/maths/BigIntegerDemoUnitTest.java
similarity index 100%
rename from core-java-modules/java-numbers/src/test/java/com/baeldung/maths/BigIntegerDemoUnitTest.java
rename to core-java-modules/core-java-numbers/src/test/java/com/baeldung/maths/BigIntegerDemoUnitTest.java
diff --git a/core-java-modules/java-numbers/src/test/java/com/baeldung/maths/BigIntegerImplUnitTest.java b/core-java-modules/core-java-numbers/src/test/java/com/baeldung/maths/BigIntegerImplUnitTest.java
similarity index 100%
rename from core-java-modules/java-numbers/src/test/java/com/baeldung/maths/BigIntegerImplUnitTest.java
rename to core-java-modules/core-java-numbers/src/test/java/com/baeldung/maths/BigIntegerImplUnitTest.java
diff --git a/core-java-modules/java-numbers/src/test/java/com/baeldung/maths/FloatingPointArithmeticUnitTest.java b/core-java-modules/core-java-numbers/src/test/java/com/baeldung/maths/FloatingPointArithmeticUnitTest.java
similarity index 100%
rename from core-java-modules/java-numbers/src/test/java/com/baeldung/maths/FloatingPointArithmeticUnitTest.java
rename to core-java-modules/core-java-numbers/src/test/java/com/baeldung/maths/FloatingPointArithmeticUnitTest.java
diff --git a/core-java-modules/java-numbers/src/test/java/com/baeldung/maths/MathSinUnitTest.java b/core-java-modules/core-java-numbers/src/test/java/com/baeldung/maths/MathSinUnitTest.java
similarity index 100%
rename from core-java-modules/java-numbers/src/test/java/com/baeldung/maths/MathSinUnitTest.java
rename to core-java-modules/core-java-numbers/src/test/java/com/baeldung/maths/MathSinUnitTest.java
diff --git a/core-java-modules/java-numbers/src/test/java/com/baeldung/maths/RoundUnitTest.java b/core-java-modules/core-java-numbers/src/test/java/com/baeldung/maths/RoundUnitTest.java
similarity index 100%
rename from core-java-modules/java-numbers/src/test/java/com/baeldung/maths/RoundUnitTest.java
rename to core-java-modules/core-java-numbers/src/test/java/com/baeldung/maths/RoundUnitTest.java
diff --git a/core-java-modules/java-numbers/src/test/java/com/baeldung/nth/root/calculator/NthRootCalculatorUnitTest.java b/core-java-modules/core-java-numbers/src/test/java/com/baeldung/nth/root/calculator/NthRootCalculatorUnitTest.java
similarity index 100%
rename from core-java-modules/java-numbers/src/test/java/com/baeldung/nth/root/calculator/NthRootCalculatorUnitTest.java
rename to core-java-modules/core-java-numbers/src/test/java/com/baeldung/nth/root/calculator/NthRootCalculatorUnitTest.java
diff --git a/core-java-modules/java-numbers/src/test/java/com/baeldung/numberofdigits/NumberOfDigitsIntegrationTest.java b/core-java-modules/core-java-numbers/src/test/java/com/baeldung/numberofdigits/NumberOfDigitsIntegrationTest.java
similarity index 100%
rename from core-java-modules/java-numbers/src/test/java/com/baeldung/numberofdigits/NumberOfDigitsIntegrationTest.java
rename to core-java-modules/core-java-numbers/src/test/java/com/baeldung/numberofdigits/NumberOfDigitsIntegrationTest.java
diff --git a/core-java-modules/java-numbers/src/test/java/com/baeldung/pairsaddupnumber/DifferentPairsUnitTest.java b/core-java-modules/core-java-numbers/src/test/java/com/baeldung/pairsaddupnumber/DifferentPairsUnitTest.java
similarity index 100%
rename from core-java-modules/java-numbers/src/test/java/com/baeldung/pairsaddupnumber/DifferentPairsUnitTest.java
rename to core-java-modules/core-java-numbers/src/test/java/com/baeldung/pairsaddupnumber/DifferentPairsUnitTest.java
diff --git a/core-java-modules/java-numbers/src/test/java/com/baeldung/pairsaddupnumber/ExistingPairsUnitTest.java b/core-java-modules/core-java-numbers/src/test/java/com/baeldung/pairsaddupnumber/ExistingPairsUnitTest.java
similarity index 100%
rename from core-java-modules/java-numbers/src/test/java/com/baeldung/pairsaddupnumber/ExistingPairsUnitTest.java
rename to core-java-modules/core-java-numbers/src/test/java/com/baeldung/pairsaddupnumber/ExistingPairsUnitTest.java
diff --git a/core-java-modules/java-numbers/src/test/java/com/baeldung/random/JavaRandomUnitTest.java b/core-java-modules/core-java-numbers/src/test/java/com/baeldung/random/JavaRandomUnitTest.java
similarity index 100%
rename from core-java-modules/java-numbers/src/test/java/com/baeldung/random/JavaRandomUnitTest.java
rename to core-java-modules/core-java-numbers/src/test/java/com/baeldung/random/JavaRandomUnitTest.java
diff --git a/core-java-modules/java-numbers/src/test/java/com/baeldung/removingdecimals/RemovingDecimalsManualTest.java b/core-java-modules/core-java-numbers/src/test/java/com/baeldung/removingdecimals/RemovingDecimalsManualTest.java
similarity index 100%
rename from core-java-modules/java-numbers/src/test/java/com/baeldung/removingdecimals/RemovingDecimalsManualTest.java
rename to core-java-modules/core-java-numbers/src/test/java/com/baeldung/removingdecimals/RemovingDecimalsManualTest.java
diff --git a/core-java-modules/java-numbers/src/test/java/com/baeldung/removingdecimals/RemovingDecimalsUnitTest.java b/core-java-modules/core-java-numbers/src/test/java/com/baeldung/removingdecimals/RemovingDecimalsUnitTest.java
similarity index 100%
rename from core-java-modules/java-numbers/src/test/java/com/baeldung/removingdecimals/RemovingDecimalsUnitTest.java
rename to core-java-modules/core-java-numbers/src/test/java/com/baeldung/removingdecimals/RemovingDecimalsUnitTest.java
diff --git a/core-java-modules/java-numbers/src/test/java/com/baeldung/string/DoubleToStringUnitTest.java b/core-java-modules/core-java-numbers/src/test/java/com/baeldung/string/DoubleToStringUnitTest.java
similarity index 100%
rename from core-java-modules/java-numbers/src/test/java/com/baeldung/string/DoubleToStringUnitTest.java
rename to core-java-modules/core-java-numbers/src/test/java/com/baeldung/string/DoubleToStringUnitTest.java
diff --git a/core-java-modules/core-java-streams-3/src/main/java/com/baeldung/streams/parallel/FileSearchCost.java b/core-java-modules/core-java-streams-3/src/main/java/com/baeldung/streams/parallel/FileSearchCost.java
new file mode 100644
index 0000000000..a3d850dd66
--- /dev/null
+++ b/core-java-modules/core-java-streams-3/src/main/java/com/baeldung/streams/parallel/FileSearchCost.java
@@ -0,0 +1,60 @@
+package com.baeldung.streams.parallel;
+
+import java.io.File;
+import java.io.IOException;
+import java.nio.file.Files;
+import java.nio.file.Path;
+import java.nio.file.Paths;
+import java.util.concurrent.TimeUnit;
+import java.util.stream.Collectors;
+
+import org.apache.commons.io.FileUtils;
+import org.openjdk.jmh.annotations.Benchmark;
+import org.openjdk.jmh.annotations.BenchmarkMode;
+import org.openjdk.jmh.annotations.Level;
+import org.openjdk.jmh.annotations.Mode;
+import org.openjdk.jmh.annotations.OutputTimeUnit;
+import org.openjdk.jmh.annotations.Scope;
+import org.openjdk.jmh.annotations.Setup;
+import org.openjdk.jmh.annotations.State;
+import org.openjdk.jmh.annotations.TearDown;
+
+@State(Scope.Benchmark)
+public class FileSearchCost {
+
+ private final static String FILE_NAME = "src/main/resources/Test";
+
+ @Setup(Level.Trial)
+ public void setup() throws IOException {
+ for (int i = 0; i < 1500; i++) {
+ File targetFile = new File(FILE_NAME + i);
+ FileUtils.writeStringToFile(targetFile, "Test", "UTF8");
+ }
+ }
+
+ @TearDown(Level.Trial)
+ public void tearDown() {
+ for (int i = 0; i < 1500; i++) {
+ File fileToDelete = new File(FILE_NAME + i);
+ fileToDelete.delete();
+ }
+ }
+
+ @Benchmark
+ @BenchmarkMode(Mode.AverageTime)
+ @OutputTimeUnit(TimeUnit.NANOSECONDS)
+ public static void textFileSearchSequential() throws IOException {
+ Files.walk(Paths.get("src/main/resources/")).map(Path::normalize).filter(Files::isRegularFile)
+ .filter(path -> path.getFileName().toString().endsWith(".txt")).collect(Collectors.toList());
+ }
+
+ @Benchmark
+ @BenchmarkMode(Mode.AverageTime)
+ @OutputTimeUnit(TimeUnit.NANOSECONDS)
+ public static void textFileSearchParallel() throws IOException {
+ Files.walk(Paths.get("src/main/resources/")).parallel().map(Path::normalize).filter(Files::isRegularFile)
+ .filter(path -> path.getFileName().toString().endsWith(".txt")).collect(Collectors.toList());
+ }
+
+}
+
diff --git a/core-java-modules/core-java-streams-4/README.md b/core-java-modules/core-java-streams-4/README.md
index 6eeee943aa..86b293566a 100644
--- a/core-java-modules/core-java-streams-4/README.md
+++ b/core-java-modules/core-java-streams-4/README.md
@@ -1,3 +1,4 @@
## Relevant Articles:
- [Count Occurrences Using Java groupingBy Collector](https://www.baeldung.com/java-groupingby-count)
+- [How to Split a Stream into Multiple Streams](https://www.baeldung.com/java-split-stream)
diff --git a/core-java-modules/core-java-streams-4/pom.xml b/core-java-modules/core-java-streams-4/pom.xml
index 110ec50b8c..8c4d98979c 100644
--- a/core-java-modules/core-java-streams-4/pom.xml
+++ b/core-java-modules/core-java-streams-4/pom.xml
@@ -15,6 +15,16 @@
+
+ io.reactivex
+ rxjava
+ ${rx.java.version}
+
+
+ io.reactivex.rxjava2
+ rxjava
+ ${rx.java2.version}
+
log4j
log4j
@@ -27,6 +37,13 @@
pom
import
+
+ org.assertj
+ assertj-core
+ 3.23.1
+ test
+
+
@@ -54,8 +71,10 @@
3.1
- 1.8
- 1.8
+ 12
+ 12
+ 1.2.5
+ 2.2.2
\ No newline at end of file
diff --git a/core-java-modules/core-java-streams-4/src/test/java/splitting/Article.java b/core-java-modules/core-java-streams-4/src/test/java/splitting/Article.java
new file mode 100644
index 0000000000..fe1265df19
--- /dev/null
+++ b/core-java-modules/core-java-streams-4/src/test/java/splitting/Article.java
@@ -0,0 +1,37 @@
+package splitting;
+
+class Article {
+ private final String target;
+ private final boolean featured;
+
+ public Article(String target, boolean featured) {
+ this.target = target;
+ this.featured = featured;
+ }
+
+ public String getTarget() {
+ return target;
+ }
+
+ public boolean isFeatured() {
+ return featured;
+ }
+
+ @Override
+ public boolean equals(Object o) {
+ if (this == o) return true;
+ if (o == null || getClass() != o.getClass()) return false;
+
+ Article article = (Article) o;
+
+ if (featured != article.featured) return false;
+ return target.equals(article.target);
+ }
+
+ @Override
+ public int hashCode() {
+ int result = target.hashCode();
+ result = 31 * result + (featured ? 1 : 0);
+ return result;
+ }
+}
diff --git a/core-java-modules/core-java-streams-4/src/test/java/splitting/StreamSplittingUnitTest.java b/core-java-modules/core-java-streams-4/src/test/java/splitting/StreamSplittingUnitTest.java
new file mode 100644
index 0000000000..75c60af4ac
--- /dev/null
+++ b/core-java-modules/core-java-streams-4/src/test/java/splitting/StreamSplittingUnitTest.java
@@ -0,0 +1,95 @@
+package splitting;
+
+import com.google.common.collect.Lists;
+import org.junit.Test;
+import rx.Observable;
+
+import java.util.ArrayList;
+import java.util.List;
+import java.util.Map;
+import java.util.stream.Collectors;
+
+import static org.assertj.core.api.Assertions.assertThat;
+
+public class StreamSplittingUnitTest {
+ private final static List articles = Lists.newArrayList(
+ new Article("Baeldung", true),
+ new Article("Baeldung", false),
+ new Article("Programming Daily", false),
+ new Article("The Code", false)
+ );
+
+ @Test
+ public void givenListOfArticles_shouldSplitListInTwoCategories_usingPartitioningBy() {
+ Map> groupedArticles = articles.stream().collect(Collectors.partitioningBy(a -> a.getTarget().equals("Baeldung")));
+
+ assertThat(groupedArticles.get(true)).containsExactly(
+ new Article("Baeldung", true),
+ new Article("Baeldung", false));
+ assertThat(groupedArticles.get(false)).containsExactly(
+ new Article("Programming Daily", false),
+ new Article("The Code", false));
+ }
+
+ @Test
+ public void givenListOfArticles_shouldSplitListInMultipleCategories_usingGroupingBy() {
+ Map> groupedArticles = articles.stream().collect(Collectors.groupingBy(Article::getTarget));
+
+ assertThat(groupedArticles.get("Baeldung")).hasSize(2);
+ assertThat(groupedArticles.get("Programming Daily")).hasSize(1);
+ assertThat(groupedArticles.get("The Code")).hasSize(1);
+
+ assertThat(groupedArticles.get("Baeldung")).containsExactly(
+ new Article("Baeldung", true),
+ new Article("Baeldung", false));
+ assertThat(groupedArticles.get("Programming Daily")).containsExactly(new Article("Programming Daily", false));
+ assertThat(groupedArticles.get("The Code")).containsExactly(new Article("The Code", false));
+ }
+
+ @Test
+ public void givenListOfArticles_shouldSplitListInTwoCategories_usingTeeing() {
+ List countedArticles = articles.stream().collect(Collectors.teeing(
+ Collectors.filtering(article -> article.getTarget().equals("Baeldung"), Collectors.counting()),
+ Collectors.filtering(article -> !article.getTarget().equals("Baeldung"), Collectors.counting()),
+ List::of));
+
+ assertThat(countedArticles.get(0)).isEqualTo(2);
+ assertThat(countedArticles.get(1)).isEqualTo(2);
+ }
+
+ @Test
+ public void givenListOfArticles_shouldSplitListInTwoOVerlappingCategories_usingTeeing() {
+ List> groupedArticles = articles.stream().collect(Collectors.teeing(
+ Collectors.filtering(article -> article.getTarget().equals("Baeldung"), Collectors.toList()),
+ Collectors.filtering(Article::isFeatured, Collectors.toList()),
+ List::of));
+
+ assertThat(groupedArticles.get(0)).hasSize(2);
+ assertThat(groupedArticles.get(1)).hasSize(1);
+
+ assertThat(groupedArticles.get(0)).containsExactly(
+ new Article("Baeldung", true),
+ new Article("Baeldung", false));
+ assertThat(groupedArticles.get(1)).containsExactly(new Article("Baeldung", true));
+ }
+
+ @Test
+ public void givenListOfArticles_shouldSplitStreamInMultipleCategories_usingRxJava() {
+ Observable observableArticles = Observable.from(articles);
+
+ Observable baeldungObservable = observableArticles.filter(article -> article.getTarget().equals("Baeldung"));
+ Observable featuredObservable = observableArticles.filter(Article::isFeatured);
+ List baeldungArticles = new ArrayList<>();
+ List featuredArticles = new ArrayList<>();
+ baeldungObservable.subscribe(baeldungArticles::add);
+ featuredObservable.subscribe(featuredArticles::add);
+
+ assertThat(baeldungArticles).hasSize(2);
+ assertThat(featuredArticles).hasSize(1);
+
+ assertThat(baeldungArticles).containsExactly(
+ new Article("Baeldung", true),
+ new Article("Baeldung", false));
+ assertThat(featuredArticles).containsExactly(new Article("Baeldung", true));
+ }
+}
diff --git a/core-java-modules/java-numbers-5/README.md b/core-java-modules/java-numbers-5/README.md
deleted file mode 100644
index 7d843af9ea..0000000000
--- a/core-java-modules/java-numbers-5/README.md
+++ /dev/null
@@ -1 +0,0 @@
-### Relevant Articles:
diff --git a/core-java-modules/pom.xml b/core-java-modules/pom.xml
index c2576d84f1..6911ace6eb 100644
--- a/core-java-modules/pom.xml
+++ b/core-java-modules/pom.xml
@@ -32,6 +32,8 @@
core-java-collections-3
core-java-collections-4
core-java-collections-array-list
+ core-java-collections-conversions
+ core-java-collections-conversions-2
core-java-collections-list
core-java-collections-list-2
core-java-collections-list-3
@@ -39,6 +41,7 @@
core-java-collections-maps
core-java-collections-maps-2
core-java-collections-maps-3
+ core-java-collections-maps-5
core-java-concurrency-2
core-java-concurrency-advanced
core-java-concurrency-advanced-2
@@ -95,6 +98,11 @@
core-java-networking-2
core-java-nio
core-java-nio-2
+ core-java-numbers
+ core-java-numbers-2
+ core-java-numbers-3
+ core-java-numbers-4
+ core-java-numbers-5
core-java-optional
core-java-perf
core-java-reflection
@@ -107,7 +115,6 @@
core-java-streams
core-java-streams-2
core-java-streams-3
- core-java-streams-4
core-java-string-algorithms
core-java-string-algorithms-2
core-java-string-apis
@@ -119,15 +126,7 @@
core-java-regex
core-java-regex-2
core-java-uuid
- java-collections-conversions
- java-collections-conversions-2
- java-collections-maps-3
- pre-jpms
- java-numbers
- java-numbers-2
- java-numbers-3
- java-numbers-4
- java-numbers-5
+ pre-jpms
@@ -147,4 +146,4 @@
-
\ No newline at end of file
+
diff --git a/docker-modules/docker-compose/README.md b/docker-modules/docker-compose/README.md
index 243e81fc80..fbb58107d3 100644
--- a/docker-modules/docker-compose/README.md
+++ b/docker-modules/docker-compose/README.md
@@ -1,4 +1,5 @@
## Relevant Articles:
- [Introduction to Docker Compose](https://www.baeldung.com/ops/docker-compose)
+- [How to Get Docker-Compose to Always Use the Latest Image](https://www.baeldung.com/ops/docker-compose-latest-image)
diff --git a/docker-modules/docker-compose/docker-compose.yml b/docker-modules/docker-compose/intro/docker-compose.yml
similarity index 100%
rename from docker-modules/docker-compose/docker-compose.yml
rename to docker-modules/docker-compose/intro/docker-compose.yml
diff --git a/docker-modules/docker-sample-app/Dockerfile b/docker-modules/docker-compose/latest-image/Dockerfile
similarity index 100%
rename from docker-modules/docker-sample-app/Dockerfile
rename to docker-modules/docker-compose/latest-image/Dockerfile
diff --git a/docker-modules/docker-sample-app/docker-compose-build-image.yaml b/docker-modules/docker-compose/latest-image/docker-compose-build-image.yaml
similarity index 100%
rename from docker-modules/docker-sample-app/docker-compose-build-image.yaml
rename to docker-modules/docker-compose/latest-image/docker-compose-build-image.yaml
diff --git a/docker-modules/docker-sample-app/docker-compose-with-image.yaml b/docker-modules/docker-compose/latest-image/docker-compose-with-image.yaml
similarity index 100%
rename from docker-modules/docker-sample-app/docker-compose-with-image.yaml
rename to docker-modules/docker-compose/latest-image/docker-compose-with-image.yaml
diff --git a/docker-modules/docker-sample-app/pom.xml b/docker-modules/docker-compose/pom.xml
similarity index 79%
rename from docker-modules/docker-sample-app/pom.xml
rename to docker-modules/docker-compose/pom.xml
index 893fb4ebe2..29981f2ccc 100644
--- a/docker-modules/docker-sample-app/pom.xml
+++ b/docker-modules/docker-compose/pom.xml
@@ -3,14 +3,14 @@
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 https://maven.apache.org/xsd/maven-4.0.0.xsd">
4.0.0
- docker-sample-app
- docker-sample-app
+ docker-compose
Demo project for Spring Boot and Docker
-
- com.baeldung.docker
- docker-modules
- 0.0.1
+
+ com.baeldung
+ parent-boot-2
+ 0.0.1-SNAPSHOT
+ ../../parent-boot-2
@@ -39,8 +39,4 @@
-
- 11
-
-
\ No newline at end of file
diff --git a/docker-modules/docker-sample-app/src/main/java/com/baeldung/docker/app/DockAppApplication.java b/docker-modules/docker-compose/src/main/java/com/baeldung/docker/app/DockAppApplication.java
similarity index 100%
rename from docker-modules/docker-sample-app/src/main/java/com/baeldung/docker/app/DockAppApplication.java
rename to docker-modules/docker-compose/src/main/java/com/baeldung/docker/app/DockAppApplication.java
diff --git a/docker-modules/docker-sample-app/src/main/java/com/baeldung/docker/app/endpoint/MyController.java b/docker-modules/docker-compose/src/main/java/com/baeldung/docker/app/endpoint/MyController.java
similarity index 100%
rename from docker-modules/docker-sample-app/src/main/java/com/baeldung/docker/app/endpoint/MyController.java
rename to docker-modules/docker-compose/src/main/java/com/baeldung/docker/app/endpoint/MyController.java
diff --git a/docker-modules/docker-push-to-private-repo/src/main/resources/application.properties b/docker-modules/docker-compose/src/main/resources/application.properties
similarity index 100%
rename from docker-modules/docker-push-to-private-repo/src/main/resources/application.properties
rename to docker-modules/docker-compose/src/main/resources/application.properties
diff --git a/docker-modules/docker-sample-app/src/test/java/com/baeldung/docker/app/DockAppApplicationUnitTest.java b/docker-modules/docker-compose/src/test/java/com/baeldung/docker/app/DockAppApplicationUnitTest.java
similarity index 100%
rename from docker-modules/docker-sample-app/src/test/java/com/baeldung/docker/app/DockAppApplicationUnitTest.java
rename to docker-modules/docker-compose/src/test/java/com/baeldung/docker/app/DockAppApplicationUnitTest.java
diff --git a/docker-modules/heap-sizing/README.md b/docker-modules/docker-containers/README.md
similarity index 100%
rename from docker-modules/heap-sizing/README.md
rename to docker-modules/docker-containers/README.md
diff --git a/docker-modules/heap-sizing/Dockerfile b/docker-modules/docker-containers/heapsizing/Dockerfile
similarity index 100%
rename from docker-modules/heap-sizing/Dockerfile
rename to docker-modules/docker-containers/heapsizing/Dockerfile
diff --git a/docker-modules/heap-sizing/pom.xml b/docker-modules/docker-containers/pom.xml
similarity index 88%
rename from docker-modules/heap-sizing/pom.xml
rename to docker-modules/docker-containers/pom.xml
index 32c200c1c0..42c2d403e4 100644
--- a/docker-modules/heap-sizing/pom.xml
+++ b/docker-modules/docker-containers/pom.xml
@@ -4,9 +4,8 @@
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 https://maven.apache.org/xsd/maven-4.0.0.xsd">
4.0.0
com.baeldung.docker
- heap-sizing
+ docker-containers
0.0.1-SNAPSHOT
- heap-sizing
Demo project for Spring Boot
@@ -40,7 +39,7 @@
spring-boot-maven-plugin
- heapsizing-demo
+ docker-demo
@@ -50,15 +49,11 @@
2.7.1
- heapsizing-demo-jib
+ docker-demo-jib
-
- 11
-
-
\ No newline at end of file
diff --git a/docker-modules/heap-sizing/src/main/java/com/baeldung/docker/heapsizing/HeapSizingApplication.java b/docker-modules/docker-containers/src/main/java/com/baeldung/docker/heapsizing/HeapSizingApplication.java
similarity index 100%
rename from docker-modules/heap-sizing/src/main/java/com/baeldung/docker/heapsizing/HeapSizingApplication.java
rename to docker-modules/docker-containers/src/main/java/com/baeldung/docker/heapsizing/HeapSizingApplication.java
diff --git a/docker-modules/heap-sizing/src/main/java/com/baeldung/docker/heapsizing/PrintXmxXms.java b/docker-modules/docker-containers/src/main/java/com/baeldung/docker/heapsizing/PrintXmxXms.java
similarity index 100%
rename from docker-modules/heap-sizing/src/main/java/com/baeldung/docker/heapsizing/PrintXmxXms.java
rename to docker-modules/docker-containers/src/main/java/com/baeldung/docker/heapsizing/PrintXmxXms.java
diff --git a/docker-modules/docker-environment-variables/Dockerfile b/docker-modules/docker-environment-variables/Dockerfile
new file mode 100644
index 0000000000..dcf69ec2cd
--- /dev/null
+++ b/docker-modules/docker-environment-variables/Dockerfile
@@ -0,0 +1,10 @@
+FROM alpine:latest
+
+ARG name
+ENV env_name $name
+
+COPY greetings.sh .
+
+RUN chmod +x /greetings.sh
+
+CMD ["/greetings.sh"]
\ No newline at end of file
diff --git a/docker-modules/docker-environment-variables/README.md b/docker-modules/docker-environment-variables/README.md
new file mode 100644
index 0000000000..12da2931a3
--- /dev/null
+++ b/docker-modules/docker-environment-variables/README.md
@@ -0,0 +1,3 @@
+
+## Relevant Articles:
+- [How to Pass Environment Variable Value into Dockerfile](https://www.baeldung.com/ops/dockerfile-env-variable)
diff --git a/docker-modules/docker-environment-variables/greetings.sh b/docker-modules/docker-environment-variables/greetings.sh
new file mode 100644
index 0000000000..6b9cd61105
--- /dev/null
+++ b/docker-modules/docker-environment-variables/greetings.sh
@@ -0,0 +1,3 @@
+#!/bin/sh
+
+echo Hello $env_name
\ No newline at end of file
diff --git a/docker-modules/docker-push-to-private-repo/.gitignore b/docker-modules/docker-images/.gitignore
similarity index 100%
rename from docker-modules/docker-push-to-private-repo/.gitignore
rename to docker-modules/docker-images/.gitignore
diff --git a/docker-modules/docker-push-to-private-repo/README.md b/docker-modules/docker-images/README.md
similarity index 51%
rename from docker-modules/docker-push-to-private-repo/README.md
rename to docker-modules/docker-images/README.md
index 61fe00e016..c86134c7a0 100644
--- a/docker-modules/docker-push-to-private-repo/README.md
+++ b/docker-modules/docker-images/README.md
@@ -1,3 +1,4 @@
### Relevant Articles:
- [Pushing a Docker Image to a Private Repository](https://www.baeldung.com/ops/docker-push-image-to-private-repository)
+- [How to Include Files Outside of Docker’s Build Context](https://www.baeldung.com/ops/docker-include-files-outside-build-context)
diff --git a/docker-modules/docker-include-outside-build-context/projects/config/Dockerfile b/docker-modules/docker-images/files-outside-context/projects/config/Dockerfile
similarity index 100%
rename from docker-modules/docker-include-outside-build-context/projects/config/Dockerfile
rename to docker-modules/docker-images/files-outside-context/projects/config/Dockerfile
diff --git a/docker-modules/docker-include-outside-build-context/projects/config/nginx.conf b/docker-modules/docker-images/files-outside-context/projects/config/nginx.conf
similarity index 100%
rename from docker-modules/docker-include-outside-build-context/projects/config/nginx.conf
rename to docker-modules/docker-images/files-outside-context/projects/config/nginx.conf
diff --git a/docker-modules/docker-include-outside-build-context/projects/sample-site/docker/Dockerfile b/docker-modules/docker-images/files-outside-context/projects/sample-site/docker/Dockerfile
similarity index 100%
rename from docker-modules/docker-include-outside-build-context/projects/sample-site/docker/Dockerfile
rename to docker-modules/docker-images/files-outside-context/projects/sample-site/docker/Dockerfile
diff --git a/docker-modules/docker-include-outside-build-context/projects/sample-site/docker/Dockerfile-from-base b/docker-modules/docker-images/files-outside-context/projects/sample-site/docker/Dockerfile-from-base
similarity index 100%
rename from docker-modules/docker-include-outside-build-context/projects/sample-site/docker/Dockerfile-from-base
rename to docker-modules/docker-images/files-outside-context/projects/sample-site/docker/Dockerfile-from-base
diff --git a/docker-modules/docker-include-outside-build-context/projects/sample-site/docker/Dockerfile-script b/docker-modules/docker-images/files-outside-context/projects/sample-site/docker/Dockerfile-script
similarity index 100%
rename from docker-modules/docker-include-outside-build-context/projects/sample-site/docker/Dockerfile-script
rename to docker-modules/docker-images/files-outside-context/projects/sample-site/docker/Dockerfile-script
diff --git a/docker-modules/docker-include-outside-build-context/projects/sample-site/docker/build-docker.sh b/docker-modules/docker-images/files-outside-context/projects/sample-site/docker/build-docker.sh
old mode 100755
new mode 100644
similarity index 100%
rename from docker-modules/docker-include-outside-build-context/projects/sample-site/docker/build-docker.sh
rename to docker-modules/docker-images/files-outside-context/projects/sample-site/docker/build-docker.sh
diff --git a/docker-modules/docker-include-outside-build-context/projects/sample-site/html/index.html b/docker-modules/docker-images/files-outside-context/projects/sample-site/html/index.html
similarity index 100%
rename from docker-modules/docker-include-outside-build-context/projects/sample-site/html/index.html
rename to docker-modules/docker-images/files-outside-context/projects/sample-site/html/index.html
diff --git a/docker-modules/docker-push-to-private-repo/pom.xml b/docker-modules/docker-images/pom.xml
similarity index 70%
rename from docker-modules/docker-push-to-private-repo/pom.xml
rename to docker-modules/docker-images/pom.xml
index c45baa65c3..5f6510cf8d 100644
--- a/docker-modules/docker-push-to-private-repo/pom.xml
+++ b/docker-modules/docker-images/pom.xml
@@ -3,15 +3,14 @@
xmlns="http://maven.apache.org/POM/4.0.0"
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 https://maven.apache.org/xsd/maven-4.0.0.xsd">
4.0.0
- docker-push-to-private-repo
- 0.0.1-SNAPSHOT
- docker-push-to-private-repo
- Example application to showcase how to push a docker image to a private repository
+ docker-images
+ Example application to showcase Docker images features
- com.baeldung.docker
- docker-modules
- 0.0.1
+ com.baeldung
+ parent-boot-2
+ 0.0.1-SNAPSHOT
+ ../../parent-boot-2
@@ -40,8 +39,4 @@
-
- 11
-
-
\ No newline at end of file
diff --git a/docker-modules/docker-push-to-private-repo/Dockerfile b/docker-modules/docker-images/private-repo/Dockerfile
similarity index 100%
rename from docker-modules/docker-push-to-private-repo/Dockerfile
rename to docker-modules/docker-images/private-repo/Dockerfile
diff --git a/docker-modules/docker-push-to-private-repo/src/main/java/com/baeldung/docker/push/PushToPrivateRepoApplication.java b/docker-modules/docker-images/src/main/java/com/baeldung/docker/MainApplication.java
similarity index 56%
rename from docker-modules/docker-push-to-private-repo/src/main/java/com/baeldung/docker/push/PushToPrivateRepoApplication.java
rename to docker-modules/docker-images/src/main/java/com/baeldung/docker/MainApplication.java
index 7f516b3158..b5e46f3eac 100644
--- a/docker-modules/docker-push-to-private-repo/src/main/java/com/baeldung/docker/push/PushToPrivateRepoApplication.java
+++ b/docker-modules/docker-images/src/main/java/com/baeldung/docker/MainApplication.java
@@ -1,13 +1,13 @@
-package com.baeldung.docker.push;
+package com.baeldung.docker;
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
@SpringBootApplication
-public class PushToPrivateRepoApplication {
+public class MainApplication {
public static void main(String[] args) {
- SpringApplication.run(PushToPrivateRepoApplication.class, args);
+ SpringApplication.run(MainApplication .class, args);
}
}
diff --git a/docker-modules/docker-push-to-private-repo/src/main/java/com/baeldung/docker/push/HelloWorldController.java b/docker-modules/docker-images/src/main/java/com/baeldung/docker/controllers/HelloWorldController.java
similarity index 86%
rename from docker-modules/docker-push-to-private-repo/src/main/java/com/baeldung/docker/push/HelloWorldController.java
rename to docker-modules/docker-images/src/main/java/com/baeldung/docker/controllers/HelloWorldController.java
index 58486c3086..f7ade95075 100644
--- a/docker-modules/docker-push-to-private-repo/src/main/java/com/baeldung/docker/push/HelloWorldController.java
+++ b/docker-modules/docker-images/src/main/java/com/baeldung/docker/controllers/HelloWorldController.java
@@ -1,4 +1,4 @@
-package com.baeldung.docker.push;
+package com.baeldung.docker.controllers;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RestController;
diff --git a/docker-modules/docker-sample-app/src/main/resources/application.properties b/docker-modules/docker-images/src/main/resources/application.properties
similarity index 100%
rename from docker-modules/docker-sample-app/src/main/resources/application.properties
rename to docker-modules/docker-images/src/main/resources/application.properties
diff --git a/docker-modules/docker-include-outside-build-context/README.md b/docker-modules/docker-include-outside-build-context/README.md
deleted file mode 100644
index 55cc564163..0000000000
--- a/docker-modules/docker-include-outside-build-context/README.md
+++ /dev/null
@@ -1,3 +0,0 @@
-## Relevant Articles:
-
-- [How to Include Files Outside of Docker’s Build Context](https://www.baeldung.com/ops/docker-include-files-outside-build-context)
\ No newline at end of file
diff --git a/docker-modules/docker-internal-dto/pom.xml b/docker-modules/docker-internal-dto/pom.xml
deleted file mode 100644
index 467d46e7ae..0000000000
--- a/docker-modules/docker-internal-dto/pom.xml
+++ /dev/null
@@ -1,15 +0,0 @@
-
-
- 4.0.0
- docker-internal-dto
- docker-internal-dto
-
-
- com.baeldung.docker
- docker-modules
- 0.0.1
-
-
-
diff --git a/docker-modules/docker-internal-dto/src/main/java/com/baeldung/docker/dto/VariableDto.java b/docker-modules/docker-internal-dto/src/main/java/com/baeldung/docker/dto/VariableDto.java
deleted file mode 100644
index 2de3b734ea..0000000000
--- a/docker-modules/docker-internal-dto/src/main/java/com/baeldung/docker/dto/VariableDto.java
+++ /dev/null
@@ -1,14 +0,0 @@
-package com.baeldung.docker.dto;
-
-public class VariableDto {
-
- private final String value;
-
- public VariableDto(String value) {
- this.value = value;
- }
-
- public String getValue() {
- return value;
- }
-}
diff --git a/docker-modules/docker-sample-app/README.md b/docker-modules/docker-sample-app/README.md
deleted file mode 100644
index d35abbc7e5..0000000000
--- a/docker-modules/docker-sample-app/README.md
+++ /dev/null
@@ -1,3 +0,0 @@
-## Relevant Articles:
-
-- [How to Get Docker-Compose to Always Use the Latest Image](https://www.baeldung.com/ops/docker-compose-latest-image)
\ No newline at end of file
diff --git a/docker-modules/docker-spring-boot-postgres/.mvn/wrapper/MavenWrapperDownloader.java b/docker-modules/docker-spring-boot-postgres/.mvn/wrapper/MavenWrapperDownloader.java
deleted file mode 100644
index e76d1f3241..0000000000
--- a/docker-modules/docker-spring-boot-postgres/.mvn/wrapper/MavenWrapperDownloader.java
+++ /dev/null
@@ -1,117 +0,0 @@
-/*
- * Copyright 2007-present the original author or authors.
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- * https://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-import java.net.*;
-import java.io.*;
-import java.nio.channels.*;
-import java.util.Properties;
-
-public class MavenWrapperDownloader {
-
- private static final String WRAPPER_VERSION = "0.5.6";
- /**
- * Default URL to download the maven-wrapper.jar from, if no 'downloadUrl' is provided.
- */
- private static final String DEFAULT_DOWNLOAD_URL = "https://repo.maven.apache.org/maven2/io/takari/maven-wrapper/"
- + WRAPPER_VERSION + "/maven-wrapper-" + WRAPPER_VERSION + ".jar";
-
- /**
- * Path to the maven-wrapper.properties file, which might contain a downloadUrl property to
- * use instead of the default one.
- */
- private static final String MAVEN_WRAPPER_PROPERTIES_PATH =
- ".mvn/wrapper/maven-wrapper.properties";
-
- /**
- * Path where the maven-wrapper.jar will be saved to.
- */
- private static final String MAVEN_WRAPPER_JAR_PATH =
- ".mvn/wrapper/maven-wrapper.jar";
-
- /**
- * Name of the property which should be used to override the default download url for the wrapper.
- */
- private static final String PROPERTY_NAME_WRAPPER_URL = "wrapperUrl";
-
- public static void main(String args[]) {
- System.out.println("- Downloader started");
- File baseDirectory = new File(args[0]);
- System.out.println("- Using base directory: " + baseDirectory.getAbsolutePath());
-
- // If the maven-wrapper.properties exists, read it and check if it contains a custom
- // wrapperUrl parameter.
- File mavenWrapperPropertyFile = new File(baseDirectory, MAVEN_WRAPPER_PROPERTIES_PATH);
- String url = DEFAULT_DOWNLOAD_URL;
- if(mavenWrapperPropertyFile.exists()) {
- FileInputStream mavenWrapperPropertyFileInputStream = null;
- try {
- mavenWrapperPropertyFileInputStream = new FileInputStream(mavenWrapperPropertyFile);
- Properties mavenWrapperProperties = new Properties();
- mavenWrapperProperties.load(mavenWrapperPropertyFileInputStream);
- url = mavenWrapperProperties.getProperty(PROPERTY_NAME_WRAPPER_URL, url);
- } catch (IOException e) {
- System.out.println("- ERROR loading '" + MAVEN_WRAPPER_PROPERTIES_PATH + "'");
- } finally {
- try {
- if(mavenWrapperPropertyFileInputStream != null) {
- mavenWrapperPropertyFileInputStream.close();
- }
- } catch (IOException e) {
- // Ignore ...
- }
- }
- }
- System.out.println("- Downloading from: " + url);
-
- File outputFile = new File(baseDirectory.getAbsolutePath(), MAVEN_WRAPPER_JAR_PATH);
- if(!outputFile.getParentFile().exists()) {
- if(!outputFile.getParentFile().mkdirs()) {
- System.out.println(
- "- ERROR creating output directory '" + outputFile.getParentFile().getAbsolutePath() + "'");
- }
- }
- System.out.println("- Downloading to: " + outputFile.getAbsolutePath());
- try {
- downloadFileFromURL(url, outputFile);
- System.out.println("Done");
- System.exit(0);
- } catch (Throwable e) {
- System.out.println("- Error downloading");
- e.printStackTrace();
- System.exit(1);
- }
- }
-
- private static void downloadFileFromURL(String urlString, File destination) throws Exception {
- if (System.getenv("MVNW_USERNAME") != null && System.getenv("MVNW_PASSWORD") != null) {
- String username = System.getenv("MVNW_USERNAME");
- char[] password = System.getenv("MVNW_PASSWORD").toCharArray();
- Authenticator.setDefault(new Authenticator() {
- @Override
- protected PasswordAuthentication getPasswordAuthentication() {
- return new PasswordAuthentication(username, password);
- }
- });
- }
- URL website = new URL(urlString);
- ReadableByteChannel rbc;
- rbc = Channels.newChannel(website.openStream());
- FileOutputStream fos = new FileOutputStream(destination);
- fos.getChannel().transferFrom(rbc, 0, Long.MAX_VALUE);
- fos.close();
- rbc.close();
- }
-
-}
diff --git a/docker-modules/docker-spring-boot-postgres/.mvn/wrapper/maven-wrapper.jar b/docker-modules/docker-spring-boot-postgres/.mvn/wrapper/maven-wrapper.jar
deleted file mode 100644
index 2cc7d4a55c..0000000000
Binary files a/docker-modules/docker-spring-boot-postgres/.mvn/wrapper/maven-wrapper.jar and /dev/null differ
diff --git a/docker-modules/docker-spring-boot-postgres/.mvn/wrapper/maven-wrapper.properties b/docker-modules/docker-spring-boot-postgres/.mvn/wrapper/maven-wrapper.properties
deleted file mode 100644
index 642d572ce9..0000000000
--- a/docker-modules/docker-spring-boot-postgres/.mvn/wrapper/maven-wrapper.properties
+++ /dev/null
@@ -1,2 +0,0 @@
-distributionUrl=https://repo.maven.apache.org/maven2/org/apache/maven/apache-maven/3.6.3/apache-maven-3.6.3-bin.zip
-wrapperUrl=https://repo.maven.apache.org/maven2/io/takari/maven-wrapper/0.5.6/maven-wrapper-0.5.6.jar
diff --git a/docker-modules/docker-spring-boot-postgres/pom.xml b/docker-modules/docker-spring-boot-postgres/pom.xml
index 7a4ed1db3c..3c2a523c16 100644
--- a/docker-modules/docker-spring-boot-postgres/pom.xml
+++ b/docker-modules/docker-spring-boot-postgres/pom.xml
@@ -3,7 +3,7 @@
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 https://maven.apache.org/xsd/maven-4.0.0.xsd">
4.0.0
- com.baeldung.docker
+ com.baeldung
docker-spring-boot-postgres
0.0.1-SNAPSHOT
docker-spring-boot-postgres
@@ -42,8 +42,4 @@
-
- 11
-
-
\ No newline at end of file
diff --git a/docker-modules/docker-spring-boot-postgres/src/test/java/com/baeldung/docker/DemoApplicationTests.java b/docker-modules/docker-spring-boot-postgres/src/test/java/com/baeldung/docker/SpringContextLiveTest.java
similarity index 67%
rename from docker-modules/docker-spring-boot-postgres/src/test/java/com/baeldung/docker/DemoApplicationTests.java
rename to docker-modules/docker-spring-boot-postgres/src/test/java/com/baeldung/docker/SpringContextLiveTest.java
index 87bd1dd6ba..c007afcb9c 100644
--- a/docker-modules/docker-spring-boot-postgres/src/test/java/com/baeldung/docker/DemoApplicationTests.java
+++ b/docker-modules/docker-spring-boot-postgres/src/test/java/com/baeldung/docker/SpringContextLiveTest.java
@@ -4,10 +4,10 @@ import org.junit.jupiter.api.Test;
import org.springframework.boot.test.context.SpringBootTest;
@SpringBootTest
-class DemoApplicationTests {
+class SpringContextLiveTest {
- @Test
- void contextLoads() {
- }
+ @Test
+ void contextLoads() {
+ }
}
diff --git a/docker-modules/docker-spring-boot/pom.xml b/docker-modules/docker-spring-boot/pom.xml
index 22a5e254fe..9732ed294d 100644
--- a/docker-modules/docker-spring-boot/pom.xml
+++ b/docker-modules/docker-spring-boot/pom.xml
@@ -7,10 +7,11 @@
docker-spring-boot
Demo project showing Spring Boot and Docker
-
- com.baeldung.docker
- docker-modules
- 0.0.1
+
+ com.baeldung
+ parent-boot-2
+ 0.0.1-SNAPSHOT
+ ../../parent-boot-2
@@ -53,8 +54,4 @@
-
- 11
-
-
\ No newline at end of file
diff --git a/docker-modules/dockerfile-with-git/README.md b/docker-modules/dockerfile/README.md
similarity index 100%
rename from docker-modules/dockerfile-with-git/README.md
rename to docker-modules/dockerfile/README.md
diff --git a/docker-modules/dockerfile-with-git/.gitmodules b/docker-modules/dockerfile/git-strategies/.gitmodules
similarity index 100%
rename from docker-modules/dockerfile-with-git/.gitmodules
rename to docker-modules/dockerfile/git-strategies/.gitmodules
diff --git a/docker-modules/dockerfile-with-git/Dockerfile b/docker-modules/dockerfile/git-strategies/Dockerfile
similarity index 100%
rename from docker-modules/dockerfile-with-git/Dockerfile
rename to docker-modules/dockerfile/git-strategies/Dockerfile
diff --git a/docker-modules/pom.xml b/docker-modules/pom.xml
index 87c7960a7f..f2b8f059a1 100644
--- a/docker-modules/pom.xml
+++ b/docker-modules/pom.xml
@@ -3,27 +3,26 @@
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 https://maven.apache.org/xsd/maven-4.0.0.xsd">
4.0.0
- com.baeldung.docker
+ com.baeldung
docker-modules
- 0.0.1
+ 1.0.0-SNAPSHOT
docker-modules
- Demo project showing Spring Boot and Docker
pom
com.baeldung
- parent-boot-2
- 0.0.1-SNAPSHOT
- ../parent-boot-2
+ parent-modules
+ 1.0.0-SNAPSHOT
- docker-internal-dto
- docker-spring-boot
- docker-sample-app
docker-caching/single-module-caching
docker-caching/multi-module-caching
- docker-push-to-private-repo
+ docker-compose
+ docker-containers
+ docker-images
+ docker-spring-boot
+ docker-spring-boot-postgres
diff --git a/json-modules/json-2/README.md b/json-modules/json-2/README.md
index 65bc6d5bd9..8087927ad3 100644
--- a/json-modules/json-2/README.md
+++ b/json-modules/json-2/README.md
@@ -10,4 +10,6 @@ This module contains articles about JSON.
- [Generate a Java Class From JSON](https://www.baeldung.com/java-generate-class-from-json)
- [A Guide to FastJson](https://www.baeldung.com/fastjson)
- [Check Whether a String is Valid JSON in Java](https://www.baeldung.com/java-validate-json-string)
+
- More Articles: [[<-- prev]](/json-modules/json)
+
diff --git a/json-modules/pom.xml b/json-modules/pom.xml
index 6d18738a51..171086db2e 100644
--- a/json-modules/pom.xml
+++ b/json-modules/pom.xml
@@ -4,7 +4,6 @@
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
4.0.0
json-modules
- 1.0.0-SNAPSHOT
json-modules
pom
diff --git a/kubernetes/k8s-admission-controller/README.md b/kubernetes/k8s-admission-controller/README.md
index 9c824d76b3..fd41c3b4e6 100644
--- a/kubernetes/k8s-admission-controller/README.md
+++ b/kubernetes/k8s-admission-controller/README.md
@@ -1,4 +1,4 @@
## Relevant Articles:
-- [Creating a Kubertes Admission Controller in Java](https://www.baeldung.com/java-kubernetes-admission-controller)
+- [Creating a Kubernetes Admission Controller in Java](https://www.baeldung.com/java-kubernetes-admission-controller)
- [Access Control Models](https://www.baeldung.com/java-access-control-models)
diff --git a/lombok-modules/lombok-2/README.md b/lombok-modules/lombok-2/README.md
index 650dc5ddab..632d676567 100644
--- a/lombok-modules/lombok-2/README.md
+++ b/lombok-modules/lombok-2/README.md
@@ -7,5 +7,5 @@ This module contains articles about Project Lombok.
- [Using Lombok’s @Accessors Annotation](https://www.baeldung.com/lombok-accessors)
- [Declaring Val and Var Variables in Lombok](https://www.baeldung.com/java-lombok-val-var)
- [Lombok Using @With Annotations](https://www.baeldung.com/lombok-with-annotations)
-- [Lombok's @ToString Annotation](https://www.baeldung.com/lombok-tostring)
+- [Lombok’s @ToString Annotation](https://www.baeldung.com/lombok-tostring)
- More articles: [[<-- prev]](../lombok)
diff --git a/persistence-modules/hibernate-exceptions/README.md b/persistence-modules/hibernate-exceptions/README.md
index c485de2f34..4acd6cd363 100644
--- a/persistence-modules/hibernate-exceptions/README.md
+++ b/persistence-modules/hibernate-exceptions/README.md
@@ -6,3 +6,4 @@
- [Hibernate’s “Object References an Unsaved Transient Instance” Error](https://www.baeldung.com/hibernate-unsaved-transient-instance-error)
- [EntityNotFoundException in Hibernate](https://www.baeldung.com/hibernate-entitynotfoundexception)
- [Hibernate’s “Not-Null Property References a Null or Transient Value” Error](https://www.baeldung.com/hibernate-not-null-error)
+- [Hibernate's “Detached Entity Passed to Persist” Error](https://www.baeldung.com/hibernate-detached-entity-passed-to-persist)
diff --git a/persistence-modules/hibernate-exceptions/src/main/java/com/baeldung/hibernate/exception/detachedentity/HibernateUtil.java b/persistence-modules/hibernate-exceptions/src/main/java/com/baeldung/hibernate/exception/detachedentity/HibernateUtil.java
new file mode 100644
index 0000000000..0420755354
--- /dev/null
+++ b/persistence-modules/hibernate-exceptions/src/main/java/com/baeldung/hibernate/exception/detachedentity/HibernateUtil.java
@@ -0,0 +1,46 @@
+package com.baeldung.hibernate.exception.detachedentity;
+
+import java.util.Properties;
+
+import org.hibernate.SessionFactory;
+import org.hibernate.boot.registry.StandardServiceRegistryBuilder;
+import org.hibernate.cfg.Configuration;
+import org.hibernate.cfg.Environment;
+import org.hibernate.service.ServiceRegistry;
+
+import com.baeldung.hibernate.exception.detachedentity.entity.Comment;
+import com.baeldung.hibernate.exception.detachedentity.entity.Post;
+
+public class HibernateUtil {
+ private static SessionFactory sessionFactory;
+
+ public static SessionFactory getSessionFactory() {
+ if (sessionFactory == null) {
+ try {
+ Configuration configuration = new Configuration();
+ Properties settings = new Properties();
+ settings.put(Environment.DRIVER, "org.hsqldb.jdbcDriver");
+ settings.put(Environment.URL, "jdbc:hsqldb:mem:transient");
+ settings.put(Environment.USER, "sa");
+ settings.put(Environment.PASS, "");
+ settings.put(Environment.DIALECT, "org.hibernate.dialect.HSQLDialect");
+ settings.put(Environment.SHOW_SQL, "true");
+ settings.put(Environment.FORMAT_SQL, "true");
+ settings.put(Environment.USE_SQL_COMMENTS, "true");
+ settings.put(Environment.HBM2DDL_AUTO, "update");
+ configuration.setProperties(settings);
+
+ configuration.addAnnotatedClass(Comment.class);
+ configuration.addAnnotatedClass(Post.class);
+
+ ServiceRegistry serviceRegistry = new StandardServiceRegistryBuilder().applySettings(configuration.getProperties())
+ .build();
+ sessionFactory = configuration.buildSessionFactory(serviceRegistry);
+
+ } catch (Exception e) {
+ e.printStackTrace();
+ }
+ }
+ return sessionFactory;
+ }
+}
\ No newline at end of file
diff --git a/persistence-modules/hibernate-exceptions/src/main/java/com/baeldung/hibernate/exception/detachedentity/entity/Comment.java b/persistence-modules/hibernate-exceptions/src/main/java/com/baeldung/hibernate/exception/detachedentity/entity/Comment.java
new file mode 100644
index 0000000000..4a3e9739e2
--- /dev/null
+++ b/persistence-modules/hibernate-exceptions/src/main/java/com/baeldung/hibernate/exception/detachedentity/entity/Comment.java
@@ -0,0 +1,56 @@
+package com.baeldung.hibernate.exception.detachedentity.entity;
+
+import javax.persistence.Entity;
+import javax.persistence.GeneratedValue;
+import javax.persistence.GenerationType;
+import javax.persistence.Id;
+import javax.persistence.ManyToOne;
+
+@Entity
+public class Comment {
+
+ @Id
+ @GeneratedValue(strategy = GenerationType.IDENTITY)
+ private Long id;
+
+ private String text;
+
+ public Comment(String text) {
+ this.text = text;
+ }
+
+ public Comment() {
+ }
+
+ @ManyToOne
+ private Post post;
+
+ public Long getId() {
+ return id;
+ }
+
+ public void setId(Long id) {
+ this.id = id;
+ }
+
+ public String getText() {
+ return text;
+ }
+
+ public void setText(String text) {
+ this.text = text;
+ }
+
+ public Post getPost() {
+ return post;
+ }
+
+ public void setPost(Post post) {
+ this.post = post;
+ }
+
+ @Override
+ public String toString() {
+ return "Comment{" + "id=" + id + ", name='" + text + '\'' + ", post=" + post + '}';
+ }
+}
diff --git a/persistence-modules/hibernate-exceptions/src/main/java/com/baeldung/hibernate/exception/detachedentity/entity/Post.java b/persistence-modules/hibernate-exceptions/src/main/java/com/baeldung/hibernate/exception/detachedentity/entity/Post.java
new file mode 100644
index 0000000000..7d95b41948
--- /dev/null
+++ b/persistence-modules/hibernate-exceptions/src/main/java/com/baeldung/hibernate/exception/detachedentity/entity/Post.java
@@ -0,0 +1,44 @@
+package com.baeldung.hibernate.exception.detachedentity.entity;
+
+import javax.persistence.Entity;
+import javax.persistence.GeneratedValue;
+import javax.persistence.GenerationType;
+import javax.persistence.Id;
+
+@Entity
+public class Post {
+
+ @Id
+ @GeneratedValue(strategy = GenerationType.IDENTITY)
+ private Long id;
+
+ private String title;
+
+ public Post() {
+ }
+
+ public Post(String title) {
+ this.title = title;
+ }
+
+ public Long getId() {
+ return id;
+ }
+
+ public void setId(Long id) {
+ this.id = id;
+ }
+
+ public String getTitle() {
+ return title;
+ }
+
+ public void setTitle(String title) {
+ this.title = title;
+ }
+
+ @Override
+ public String toString() {
+ return "Post{" + "id=" + id + ", text='" + title + '\'' + '}';
+ }
+}
diff --git a/persistence-modules/hibernate-exceptions/src/test/java/com/baeldung/hibernate/exception/detachedentity/DetachedEntityUnitTest.java b/persistence-modules/hibernate-exceptions/src/test/java/com/baeldung/hibernate/exception/detachedentity/DetachedEntityUnitTest.java
new file mode 100644
index 0000000000..afb0efae77
--- /dev/null
+++ b/persistence-modules/hibernate-exceptions/src/test/java/com/baeldung/hibernate/exception/detachedentity/DetachedEntityUnitTest.java
@@ -0,0 +1,106 @@
+package com.baeldung.hibernate.exception.detachedentity;
+
+import com.baeldung.hibernate.exception.detachedentity.entity.Comment;
+import com.baeldung.hibernate.exception.detachedentity.entity.Post;
+
+import org.assertj.core.api.Assertions;
+import org.hibernate.Session;
+import org.junit.After;
+import org.junit.Before;
+import org.junit.Test;
+
+import javax.persistence.PersistenceException;
+
+import java.util.List;
+
+import static org.assertj.core.api.Assertions.assertThat;
+import static org.assertj.core.api.Assertions.assertThatThrownBy;
+
+public class DetachedEntityUnitTest {
+
+ private static Session session;
+ private Post detachedPost;
+
+ @Before
+ public void beforeEach() {
+ session = HibernateUtil.getSessionFactory()
+ .openSession();
+ session.beginTransaction();
+ this.detachedPost = new Post("Hibernate Tutorial");
+ session.persist(detachedPost);
+ session.evict(detachedPost);
+ }
+
+ @After
+ public void afterEach() {
+ clearDatabase();
+ session.close();
+ }
+
+ @Test
+ public void givenDetachedPost_whenTryingToPersist_thenThrowException() {
+ detachedPost.setTitle("Hibernate Tutorial for Absolute Beginners");
+
+ assertThatThrownBy(() -> session.persist(detachedPost))
+ .isInstanceOf(PersistenceException.class)
+ .hasMessageContaining("org.hibernate.PersistentObjectException: detached entity passed to persist");
+ }
+
+ @Test
+ public void givenDetachedPost_whenTryingToMerge_thenNoExceptionIsThrown() {
+ detachedPost.setTitle("Hibernate Tutorial for Beginners");
+
+ session.merge(detachedPost);
+ session.getTransaction()
+ .commit();
+
+ List posts = session.createQuery("Select p from Post p", Post.class)
+ .list();
+ assertThat(posts).hasSize(1);
+ assertThat(posts.get(0)
+ .getTitle()).isEqualTo("Hibernate Tutorial for Beginners");
+ }
+
+ @Test
+ public void givenDetachedPost_whenPersistingNewCommentWithIt_thenThrowException() {
+ Comment comment = new Comment("nice article!");
+ comment.setPost(detachedPost);
+
+ session.persist(comment);
+ session.getTransaction()
+ .commit();
+
+ assertThatThrownBy(() -> session.persist(detachedPost))
+ .isInstanceOf(PersistenceException.class)
+ .hasMessageContaining("org.hibernate.PersistentObjectException: detached entity passed to persist");
+ }
+
+ @Test
+ public void givenDetachedPost_whenMergeAndPersistComment_thenNoExceptionIsThrown() {
+ Comment comment = new Comment("nice article!");
+ Post mergedPost = (Post) session.merge(detachedPost);
+ comment.setPost(mergedPost);
+
+ session.persist(comment);
+ session.getTransaction()
+ .commit();
+
+ List comments = session.createQuery("Select c from Comment c", Comment.class)
+ .list();
+ Comment savedComment = comments.get(0);
+ assertThat(savedComment.getText()).isEqualTo("nice article!");
+ assertThat(savedComment.getPost()
+ .getTitle()).isEqualTo("Hibernate Tutorial");
+ }
+
+ private void clearDatabase() {
+ if (!session.getTransaction()
+ .isActive()) {
+ session.beginTransaction();
+ }
+ session.createQuery("DELETE FROM Comment")
+ .executeUpdate();
+ session.createQuery("DELETE FROM Post")
+ .executeUpdate();
+ }
+}
diff --git a/persistence-modules/java-mongodb-3/.gitignore b/persistence-modules/java-mongodb-3/.gitignore
new file mode 100644
index 0000000000..79ba317cb5
--- /dev/null
+++ b/persistence-modules/java-mongodb-3/.gitignore
@@ -0,0 +1,5 @@
+.classpath
+.project
+.settings
+target
+build
\ No newline at end of file
diff --git a/persistence-modules/java-mongodb-3/README.md b/persistence-modules/java-mongodb-3/README.md
new file mode 100644
index 0000000000..3ffe5980da
--- /dev/null
+++ b/persistence-modules/java-mongodb-3/README.md
@@ -0,0 +1,3 @@
+
+### Relevant Artilces:
+- [Guide to Find in MongoDB](https://www.baeldung.com/mongodb-find)
diff --git a/persistence-modules/java-mongodb-3/pom.xml b/persistence-modules/java-mongodb-3/pom.xml
new file mode 100644
index 0000000000..6b02172491
--- /dev/null
+++ b/persistence-modules/java-mongodb-3/pom.xml
@@ -0,0 +1,28 @@
+
+
+ 4.0.0
+ java-mongodb-3
+ 1.0-SNAPSHOT
+ java-mongodb-3
+
+
+ com.baeldung
+ persistence-modules
+ 1.0.0-SNAPSHOT
+
+
+
+
+ org.mongodb
+ mongo-java-driver
+ ${mongo.version}
+
+
+
+
+ 3.12.1
+
+
+
diff --git a/persistence-modules/java-mongodb-3/src/main/java/com/baeldung/mongo/find/FindOperation.java b/persistence-modules/java-mongodb-3/src/main/java/com/baeldung/mongo/find/FindOperation.java
new file mode 100644
index 0000000000..6000684deb
--- /dev/null
+++ b/persistence-modules/java-mongodb-3/src/main/java/com/baeldung/mongo/find/FindOperation.java
@@ -0,0 +1,86 @@
+package com.baeldung.mongo.find;
+
+import com.mongodb.MongoClient;
+import com.mongodb.client.FindIterable;
+import com.mongodb.client.MongoCollection;
+import com.mongodb.client.MongoCursor;
+import com.mongodb.client.MongoDatabase;
+import org.bson.Document;
+import org.bson.conversions.Bson;
+
+import static com.mongodb.client.model.Filters.eq;
+import static com.mongodb.client.model.Projections.fields;
+import static com.mongodb.client.model.Projections.include;
+
+public class FindOperation {
+
+ private static MongoClient mongoClient;
+ private static MongoDatabase database;
+ private static MongoCollection collection;
+ private static String collectionName;
+ private static String databaseName;
+
+ public static void setUp() {
+ if (mongoClient == null) {
+ mongoClient = new MongoClient("localhost", 27017);
+
+ databaseName = "baeldung";
+ collectionName = "employee";
+
+ database = mongoClient.getDatabase(databaseName);
+ collection = database.getCollection(collectionName);
+ }
+ }
+
+ public static void retrieveAllDocumentsUsingFind() {
+ FindIterable documents = collection.find();
+
+ MongoCursor cursor = documents.iterator();
+ while (cursor.hasNext()) {
+ System.out.println(cursor.next());
+ }
+ }
+
+ public static void retrieveAllDocumentsUsingFindWithQueryFilter() {
+ Bson filter = eq("department", "Engineering");
+ FindIterable documents = collection.find(filter);
+
+ MongoCursor cursor = documents.iterator();
+ while (cursor.hasNext()) {
+ System.out.println(cursor.next());
+ }
+ }
+
+ public static void retrieveAllDocumentsUsingFindWithQueryFilterAndProjection() {
+ Bson filter = eq("department", "Engineering");
+ Bson projection = fields(include("name", "age"));
+ FindIterable documents = collection.find(filter)
+ .projection(projection);
+
+ MongoCursor cursor = documents.iterator();
+ while (cursor.hasNext()) {
+ System.out.println(cursor.next());
+ }
+ }
+
+ public static void retrieveFirstDocument() {
+ FindIterable documents = collection.find();
+ Document document = documents.first();
+
+ System.out.println(document);
+ }
+
+ public static void main(String args[]) {
+
+ setUp();
+
+ retrieveAllDocumentsUsingFind();
+
+ retrieveAllDocumentsUsingFindWithQueryFilter();
+
+ retrieveAllDocumentsUsingFindWithQueryFilterAndProjection();
+
+ retrieveFirstDocument();
+ }
+}
+
diff --git a/spring-cloud-modules/spring-cloud-rest/spring-cloud-rest-books-api/src/main/resources/logback.xml b/persistence-modules/java-mongodb-3/src/main/resources/logback.xml
similarity index 100%
rename from spring-cloud-modules/spring-cloud-rest/spring-cloud-rest-books-api/src/main/resources/logback.xml
rename to persistence-modules/java-mongodb-3/src/main/resources/logback.xml
diff --git a/persistence-modules/java-mongodb-3/src/test/java/com/baeldung/mongo/find/FindOperationLiveTest.java b/persistence-modules/java-mongodb-3/src/test/java/com/baeldung/mongo/find/FindOperationLiveTest.java
new file mode 100644
index 0000000000..21a263381d
--- /dev/null
+++ b/persistence-modules/java-mongodb-3/src/test/java/com/baeldung/mongo/find/FindOperationLiveTest.java
@@ -0,0 +1,94 @@
+package com.baeldung.mongo.find;
+
+import com.mongodb.MongoClient;
+import com.mongodb.client.FindIterable;
+import com.mongodb.client.MongoCollection;
+import com.mongodb.client.MongoCursor;
+import com.mongodb.client.MongoDatabase;
+import org.bson.Document;
+import org.bson.conversions.Bson;
+import org.junit.AfterClass;
+import org.junit.BeforeClass;
+import org.junit.Test;
+
+import java.io.BufferedReader;
+import java.io.IOException;
+import java.io.InputStream;
+import java.io.InputStreamReader;
+
+import static com.mongodb.client.model.Filters.eq;
+import static com.mongodb.client.model.Projections.fields;
+import static com.mongodb.client.model.Projections.include;
+import static org.junit.Assert.*;
+
+public class FindOperationLiveTest {
+
+ private static MongoClient mongoClient;
+ private static MongoDatabase database;
+ private static MongoCollection collection;
+ private static final String DATASET_JSON = "/employee.json";
+
+ @BeforeClass
+ public static void setUp() throws IOException {
+ if (mongoClient == null) {
+ mongoClient = new MongoClient("localhost", 27017);
+
+ database = mongoClient.getDatabase("baeldung");
+ collection = database.getCollection("employee");
+
+ collection.drop();
+
+ InputStream is = FindOperationLiveTest.class.getResourceAsStream(DATASET_JSON);
+ BufferedReader reader = new BufferedReader(new InputStreamReader(is));
+ reader.lines()
+ .forEach(line -> collection.insertOne(Document.parse(line)));
+ reader.close();
+ }
+ }
+
+ @Test
+ public void givenEmployeeCollection_whenFetchingUsingFindOperations_thenCheckingForDocuments() {
+ FindIterable documents = collection.find();
+ MongoCursor cursor = documents.iterator();
+
+ assertNotNull(cursor);
+ assertTrue(cursor.hasNext());
+ }
+
+ @Test
+ public void givenEmployeeCollection_whenFetchingUsingFindOperationsWithFilters_thenCheckingForDocuments() {
+ Bson filter = eq("department", "Engineering");
+ FindIterable documents = collection.find(filter);
+ MongoCursor cursor = documents.iterator();
+
+ assertNotNull(cursor);
+ assertTrue(cursor.hasNext());
+ }
+
+ @Test
+ public void givenEmployeeCollection_whenFetchingUsingFindOperationsWithFiltersAndProjection_thenCheckingForDocuments() {
+ Bson filter = eq("department", "Engineering");
+ Bson projection = fields(include("name", "age"));
+ FindIterable documents = collection.find(filter)
+ .projection(projection);
+ MongoCursor cursor = documents.iterator();
+
+ assertNotNull(cursor);
+ assertTrue(cursor.hasNext());
+ }
+
+ @Test
+ public void givenEmployeeCollection_whenFetchingFirstDocumentUsingFindOperations_thenCheckingForDocument() {
+ Document employee = collection.find()
+ .first();
+
+ assertNotNull(employee);
+ assertFalse(employee.isEmpty());
+ }
+
+ @AfterClass
+ public static void cleanUp() {
+ mongoClient.close();
+ }
+}
+
diff --git a/persistence-modules/java-mongodb-3/src/test/resources/employee.json b/persistence-modules/java-mongodb-3/src/test/resources/employee.json
new file mode 100644
index 0000000000..bcc7814c3b
--- /dev/null
+++ b/persistence-modules/java-mongodb-3/src/test/resources/employee.json
@@ -0,0 +1,3 @@
+{"employeeId":"EMP1","name":"Sam","age":23,"type":"Full Time","department":"Engineering"}
+{"employeeId":"EMP2","name":"Tony","age":31,"type":"Full Time","department":"Admin"}
+{"employeeId":"EMP3","name":"Lisa","age":42,"type":"Part Time","department":"Engineering"}
\ No newline at end of file
diff --git a/persistence-modules/pom.xml b/persistence-modules/pom.xml
index 4637ab7ecc..4bab0631bd 100644
--- a/persistence-modules/pom.xml
+++ b/persistence-modules/pom.xml
@@ -44,6 +44,7 @@
java-jpa-3
java-mongodb
java-mongodb-2
+ java-mongodb-3
jnosql
jooq
jpa-hibernate-cascade-type
diff --git a/persistence-modules/spring-boot-persistence-mongodb-2/README.md b/persistence-modules/spring-boot-persistence-mongodb-2/README.md
index 45d3d192f1..f3be63c8b5 100644
--- a/persistence-modules/spring-boot-persistence-mongodb-2/README.md
+++ b/persistence-modules/spring-boot-persistence-mongodb-2/README.md
@@ -3,4 +3,5 @@
- [Logging MongoDB Queries with Spring Boot](https://www.baeldung.com/spring-boot-mongodb-logging)
- [Configure MongoDB Collection Name for a Class in Spring Data](https://www.baeldung.com/spring-data-mongodb-collection-name)
- [MongoDB Composite Key With Spring Data](https://www.baeldung.com/spring-data-mongodb-composite-key)
+- [Unique Field in MongoDB Document in Spring Data](https://www.baeldung.com/spring-data-mongodb-unique)
- More articles: [[<--prev]](../spring-boot-persistence-mongodb)
diff --git a/persistence-modules/spring-boot-persistence-mongodb-2/src/main/java/com/baeldung/boot/unique/field/SpringBootUniqueFieldApplication.java b/persistence-modules/spring-boot-persistence-mongodb-2/src/main/java/com/baeldung/boot/unique/field/SpringBootUniqueFieldApplication.java
new file mode 100644
index 0000000000..648ecd4dfb
--- /dev/null
+++ b/persistence-modules/spring-boot-persistence-mongodb-2/src/main/java/com/baeldung/boot/unique/field/SpringBootUniqueFieldApplication.java
@@ -0,0 +1,15 @@
+package com.baeldung.boot.unique.field;
+
+import org.springframework.boot.SpringApplication;
+import org.springframework.boot.autoconfigure.SpringBootApplication;
+import org.springframework.context.annotation.PropertySource;
+import org.springframework.data.mongodb.repository.config.EnableMongoRepositories;
+
+@SpringBootApplication
+@PropertySource("classpath:boot.unique.field/app.properties")
+@EnableMongoRepositories(basePackages = { "com.baeldung.boot.unique.field" })
+public class SpringBootUniqueFieldApplication {
+ public static void main(String... args) {
+ SpringApplication.run(SpringBootUniqueFieldApplication.class, args);
+ }
+}
diff --git a/persistence-modules/spring-boot-persistence-mongodb-2/src/main/java/com/baeldung/boot/unique/field/dao/AssetRepository.java b/persistence-modules/spring-boot-persistence-mongodb-2/src/main/java/com/baeldung/boot/unique/field/dao/AssetRepository.java
new file mode 100644
index 0000000000..9adca8b4bd
--- /dev/null
+++ b/persistence-modules/spring-boot-persistence-mongodb-2/src/main/java/com/baeldung/boot/unique/field/dao/AssetRepository.java
@@ -0,0 +1,8 @@
+package com.baeldung.boot.unique.field.dao;
+
+import org.springframework.data.mongodb.repository.MongoRepository;
+
+import com.baeldung.boot.unique.field.data.Asset;
+
+public interface AssetRepository extends MongoRepository {
+}
diff --git a/persistence-modules/spring-boot-persistence-mongodb-2/src/main/java/com/baeldung/boot/unique/field/dao/CompanyRepository.java b/persistence-modules/spring-boot-persistence-mongodb-2/src/main/java/com/baeldung/boot/unique/field/dao/CompanyRepository.java
new file mode 100644
index 0000000000..718e284efe
--- /dev/null
+++ b/persistence-modules/spring-boot-persistence-mongodb-2/src/main/java/com/baeldung/boot/unique/field/dao/CompanyRepository.java
@@ -0,0 +1,11 @@
+package com.baeldung.boot.unique.field.dao;
+
+import java.util.Optional;
+
+import org.springframework.data.mongodb.repository.MongoRepository;
+
+import com.baeldung.boot.unique.field.data.Company;
+
+public interface CompanyRepository extends MongoRepository {
+ Optional findByEmail(String email);
+}
diff --git a/persistence-modules/spring-boot-persistence-mongodb-2/src/main/java/com/baeldung/boot/unique/field/dao/CustomerRepository.java b/persistence-modules/spring-boot-persistence-mongodb-2/src/main/java/com/baeldung/boot/unique/field/dao/CustomerRepository.java
new file mode 100644
index 0000000000..f6e5b54470
--- /dev/null
+++ b/persistence-modules/spring-boot-persistence-mongodb-2/src/main/java/com/baeldung/boot/unique/field/dao/CustomerRepository.java
@@ -0,0 +1,11 @@
+package com.baeldung.boot.unique.field.dao;
+
+import java.util.Optional;
+
+import org.springframework.data.mongodb.repository.MongoRepository;
+
+import com.baeldung.boot.unique.field.data.Customer;
+
+public interface CustomerRepository extends MongoRepository {
+ Optional findByStoreIdAndNumber(Long storeId, Long number);
+}
diff --git a/persistence-modules/spring-boot-persistence-mongodb-2/src/main/java/com/baeldung/boot/unique/field/dao/SaleRepository.java b/persistence-modules/spring-boot-persistence-mongodb-2/src/main/java/com/baeldung/boot/unique/field/dao/SaleRepository.java
new file mode 100644
index 0000000000..8547a5ab76
--- /dev/null
+++ b/persistence-modules/spring-boot-persistence-mongodb-2/src/main/java/com/baeldung/boot/unique/field/dao/SaleRepository.java
@@ -0,0 +1,12 @@
+package com.baeldung.boot.unique.field.dao;
+
+import java.util.Optional;
+
+import org.springframework.data.mongodb.repository.MongoRepository;
+
+import com.baeldung.boot.unique.field.data.Sale;
+import com.baeldung.boot.unique.field.data.SaleId;
+
+public interface SaleRepository extends MongoRepository {
+ Optional findBySaleId(SaleId id);
+}
diff --git a/persistence-modules/spring-boot-persistence-mongodb-2/src/main/java/com/baeldung/boot/unique/field/data/Asset.java b/persistence-modules/spring-boot-persistence-mongodb-2/src/main/java/com/baeldung/boot/unique/field/data/Asset.java
new file mode 100644
index 0000000000..9652691a8b
--- /dev/null
+++ b/persistence-modules/spring-boot-persistence-mongodb-2/src/main/java/com/baeldung/boot/unique/field/data/Asset.java
@@ -0,0 +1,29 @@
+package com.baeldung.boot.unique.field.data;
+
+import org.springframework.data.mongodb.core.index.Indexed;
+import org.springframework.data.mongodb.core.mapping.Document;
+
+@Document
+public class Asset {
+ @Indexed(unique = true)
+ private String name;
+
+ @Indexed(unique = true)
+ private Integer number;
+
+ public String getName() {
+ return name;
+ }
+
+ public void setName(String name) {
+ this.name = name;
+ }
+
+ public Integer getNumber() {
+ return number;
+ }
+
+ public void setNumber(Integer number) {
+ this.number = number;
+ }
+}
diff --git a/persistence-modules/spring-boot-persistence-mongodb-2/src/main/java/com/baeldung/boot/unique/field/data/Company.java b/persistence-modules/spring-boot-persistence-mongodb-2/src/main/java/com/baeldung/boot/unique/field/data/Company.java
new file mode 100644
index 0000000000..31b4cf0588
--- /dev/null
+++ b/persistence-modules/spring-boot-persistence-mongodb-2/src/main/java/com/baeldung/boot/unique/field/data/Company.java
@@ -0,0 +1,40 @@
+package com.baeldung.boot.unique.field.data;
+
+import org.springframework.data.annotation.Id;
+import org.springframework.data.mongodb.core.index.Indexed;
+import org.springframework.data.mongodb.core.mapping.Document;
+
+@Document
+public class Company {
+ @Id
+ private String id;
+
+ private String name;
+
+ @Indexed(unique = true)
+ private String email;
+
+ public String getId() {
+ return id;
+ }
+
+ public void setId(String id) {
+ this.id = id;
+ }
+
+ public String getName() {
+ return name;
+ }
+
+ public void setName(String name) {
+ this.name = name;
+ }
+
+ public String getEmail() {
+ return email;
+ }
+
+ public void setEmail(String email) {
+ this.email = email;
+ }
+}
diff --git a/persistence-modules/spring-boot-persistence-mongodb-2/src/main/java/com/baeldung/boot/unique/field/data/Customer.java b/persistence-modules/spring-boot-persistence-mongodb-2/src/main/java/com/baeldung/boot/unique/field/data/Customer.java
new file mode 100644
index 0000000000..d1459dc663
--- /dev/null
+++ b/persistence-modules/spring-boot-persistence-mongodb-2/src/main/java/com/baeldung/boot/unique/field/data/Customer.java
@@ -0,0 +1,57 @@
+package com.baeldung.boot.unique.field.data;
+
+import org.springframework.data.annotation.Id;
+import org.springframework.data.mongodb.core.index.CompoundIndex;
+import org.springframework.data.mongodb.core.mapping.Document;
+
+@Document
+@CompoundIndex(name = "customer_idx", def = "{ 'storeId': 1, 'number': 1 }", unique = true)
+public class Customer {
+ @Id
+ private String id;
+
+ private Long storeId;
+
+ private Long number;
+
+ private String name;
+
+ public Customer() {
+ }
+
+ public Customer(String name) {
+ this.name = name;
+ }
+
+ public String getId() {
+ return id;
+ }
+
+ public void setId(String id) {
+ this.id = id;
+ }
+
+ public Long getStoreId() {
+ return storeId;
+ }
+
+ public void setStoreId(Long storeId) {
+ this.storeId = storeId;
+ }
+
+ public Long getNumber() {
+ return number;
+ }
+
+ public void setNumber(Long number) {
+ this.number = number;
+ }
+
+ public String getName() {
+ return name;
+ }
+
+ public void setName(String name) {
+ this.name = name;
+ }
+}
diff --git a/persistence-modules/spring-boot-persistence-mongodb-2/src/main/java/com/baeldung/boot/unique/field/data/Sale.java b/persistence-modules/spring-boot-persistence-mongodb-2/src/main/java/com/baeldung/boot/unique/field/data/Sale.java
new file mode 100644
index 0000000000..3d0a549575
--- /dev/null
+++ b/persistence-modules/spring-boot-persistence-mongodb-2/src/main/java/com/baeldung/boot/unique/field/data/Sale.java
@@ -0,0 +1,36 @@
+package com.baeldung.boot.unique.field.data;
+
+import org.springframework.data.mongodb.core.index.Indexed;
+import org.springframework.data.mongodb.core.mapping.Document;
+
+@Document
+public class Sale {
+ @Indexed(unique = true)
+ private SaleId saleId;
+
+ private Double value;
+
+ public Sale() {
+ }
+
+ public Sale(SaleId saleId) {
+ super();
+ this.saleId = saleId;
+ }
+
+ public SaleId getSaleId() {
+ return saleId;
+ }
+
+ public void setSaleId(SaleId saleId) {
+ this.saleId = saleId;
+ }
+
+ public Double getValue() {
+ return value;
+ }
+
+ public void setValue(Double value) {
+ this.value = value;
+ }
+}
diff --git a/persistence-modules/spring-boot-persistence-mongodb-2/src/main/java/com/baeldung/boot/unique/field/data/SaleId.java b/persistence-modules/spring-boot-persistence-mongodb-2/src/main/java/com/baeldung/boot/unique/field/data/SaleId.java
new file mode 100644
index 0000000000..69a5c5a561
--- /dev/null
+++ b/persistence-modules/spring-boot-persistence-mongodb-2/src/main/java/com/baeldung/boot/unique/field/data/SaleId.java
@@ -0,0 +1,22 @@
+package com.baeldung.boot.unique.field.data;
+
+public class SaleId {
+ private Long item;
+ private String date;
+
+ public Long getItem() {
+ return item;
+ }
+
+ public void setItem(Long item) {
+ this.item = item;
+ }
+
+ public String getDate() {
+ return date;
+ }
+
+ public void setDate(String date) {
+ this.date = date;
+ }
+}
\ No newline at end of file
diff --git a/persistence-modules/spring-boot-persistence-mongodb-2/src/main/java/com/baeldung/boot/unique/field/web/UniqueFieldController.java b/persistence-modules/spring-boot-persistence-mongodb-2/src/main/java/com/baeldung/boot/unique/field/web/UniqueFieldController.java
new file mode 100644
index 0000000000..716977edd4
--- /dev/null
+++ b/persistence-modules/spring-boot-persistence-mongodb-2/src/main/java/com/baeldung/boot/unique/field/web/UniqueFieldController.java
@@ -0,0 +1,83 @@
+package com.baeldung.boot.unique.field.web;
+
+import java.util.Optional;
+
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.web.bind.annotation.GetMapping;
+import org.springframework.web.bind.annotation.PathVariable;
+import org.springframework.web.bind.annotation.PostMapping;
+import org.springframework.web.bind.annotation.PutMapping;
+import org.springframework.web.bind.annotation.RequestBody;
+import org.springframework.web.bind.annotation.RequestMapping;
+import org.springframework.web.bind.annotation.RestController;
+
+import com.baeldung.boot.unique.field.dao.AssetRepository;
+import com.baeldung.boot.unique.field.dao.CompanyRepository;
+import com.baeldung.boot.unique.field.dao.CustomerRepository;
+import com.baeldung.boot.unique.field.dao.SaleRepository;
+import com.baeldung.boot.unique.field.data.Asset;
+import com.baeldung.boot.unique.field.data.Company;
+import com.baeldung.boot.unique.field.data.Customer;
+import com.baeldung.boot.unique.field.data.Sale;
+import com.baeldung.boot.unique.field.data.SaleId;
+
+@RestController
+@RequestMapping("/unique-field")
+public class UniqueFieldController {
+ @Autowired
+ private SaleRepository saleRepo;
+
+ @Autowired
+ private CompanyRepository companyRepo;
+
+ @Autowired
+ private CustomerRepository customerRepo;
+
+ @Autowired
+ private AssetRepository assetRepo;
+
+ @PostMapping("/sale")
+ public Sale post(@RequestBody Sale sale) {
+ return saleRepo.insert(sale);
+ }
+
+ @GetMapping("/sale")
+ public Optional getSale(SaleId id) {
+ return saleRepo.findBySaleId(id);
+ }
+
+ @PostMapping("/company")
+ public Company post(@RequestBody Company company) {
+ return companyRepo.insert(company);
+ }
+
+ @PutMapping("/company")
+ public Company put(@RequestBody Company company) {
+ return companyRepo.save(company);
+ }
+
+ @GetMapping("/company/{id}")
+ public Optional getCompany(@PathVariable String id) {
+ return companyRepo.findById(id);
+ }
+
+ @PostMapping("/customer")
+ public Customer post(@RequestBody Customer customer) {
+ return customerRepo.insert(customer);
+ }
+
+ @GetMapping("/customer/{id}")
+ public Optional getCustomer(@PathVariable String id) {
+ return customerRepo.findById(id);
+ }
+
+ @PostMapping("/asset")
+ public Asset post(@RequestBody Asset asset) {
+ return assetRepo.insert(asset);
+ }
+
+ @GetMapping("/asset/{id}")
+ public Optional getAsset(@PathVariable String id) {
+ return assetRepo.findById(id);
+ }
+}
diff --git a/persistence-modules/spring-boot-persistence-mongodb-2/src/main/resources/boot.unique.field/app.properties b/persistence-modules/spring-boot-persistence-mongodb-2/src/main/resources/boot.unique.field/app.properties
new file mode 100644
index 0000000000..a73a94d850
--- /dev/null
+++ b/persistence-modules/spring-boot-persistence-mongodb-2/src/main/resources/boot.unique.field/app.properties
@@ -0,0 +1 @@
+spring.data.mongodb.auto-index-creation=true
diff --git a/persistence-modules/spring-boot-persistence-mongodb-2/src/test/java/com/baeldung/boot/unique/field/UniqueFieldIntegrationTest.java b/persistence-modules/spring-boot-persistence-mongodb-2/src/test/java/com/baeldung/boot/unique/field/UniqueFieldIntegrationTest.java
new file mode 100644
index 0000000000..c18a877b79
--- /dev/null
+++ b/persistence-modules/spring-boot-persistence-mongodb-2/src/test/java/com/baeldung/boot/unique/field/UniqueFieldIntegrationTest.java
@@ -0,0 +1,112 @@
+package com.baeldung.boot.unique.field;
+
+import static org.junit.Assert.assertThrows;
+
+import org.junit.Test;
+import org.junit.runner.RunWith;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.boot.test.context.SpringBootTest;
+import org.springframework.dao.DuplicateKeyException;
+import org.springframework.test.annotation.DirtiesContext;
+import org.springframework.test.context.junit4.SpringRunner;
+
+import com.baeldung.boot.unique.field.dao.AssetRepository;
+import com.baeldung.boot.unique.field.dao.CompanyRepository;
+import com.baeldung.boot.unique.field.dao.CustomerRepository;
+import com.baeldung.boot.unique.field.dao.SaleRepository;
+import com.baeldung.boot.unique.field.data.Asset;
+import com.baeldung.boot.unique.field.data.Company;
+import com.baeldung.boot.unique.field.data.Customer;
+import com.baeldung.boot.unique.field.data.Sale;
+import com.baeldung.boot.unique.field.data.SaleId;
+
+@SpringBootTest
+@DirtiesContext
+@RunWith(SpringRunner.class)
+public class UniqueFieldIntegrationTest {
+ @Autowired
+ private SaleRepository saleRepo;
+
+ @Autowired
+ private CompanyRepository companyRepo;
+
+ @Autowired
+ private CustomerRepository customerRepo;
+
+ @Autowired
+ private AssetRepository assetRepo;
+
+ @Test
+ public void givenMultipleIndexes_whenAnyFieldDupe_thenExceptionIsThrown() {
+ Asset a = new Asset();
+ a.setName("Name");
+ a.setNumber(1);
+
+ assetRepo.insert(a);
+
+ Asset b = new Asset();
+ b.setName("Name");
+ b.setNumber(2);
+ assertThrows(DuplicateKeyException.class, () -> {
+ assetRepo.insert(b);
+ });
+
+ Asset c = new Asset();
+ c.setName("Other");
+ c.setNumber(1);
+ assertThrows(DuplicateKeyException.class, () -> {
+ assetRepo.insert(c);
+ });
+ }
+
+ @Test
+ public void givenUniqueIndex_whenInsertingDupe_thenExceptionIsThrown() {
+ Company a = new Company();
+ a.setName("Name");
+ a.setEmail("a@mail.com");
+
+ companyRepo.insert(a);
+
+ Company b = new Company();
+ b.setName("Other");
+ b.setEmail("a@mail.com");
+ assertThrows(DuplicateKeyException.class, () -> {
+ companyRepo.insert(b);
+ });
+ }
+
+ @Test
+ public void givenCompoundIndex_whenDupeInsert_thenExceptionIsThrown() {
+ Customer customerA = new Customer("Name A");
+ customerA.setNumber(1l);
+ customerA.setStoreId(2l);
+
+ Customer customerB = new Customer("Name B");
+ customerB.setNumber(1l);
+ customerB.setStoreId(2l);
+
+ customerRepo.insert(customerA);
+
+ assertThrows(DuplicateKeyException.class, () -> {
+ customerRepo.insert(customerB);
+ });
+ }
+
+ @Test
+ public void givenCustomTypeIndex_whenInsertingDupe_thenExceptionIsThrown() {
+ SaleId id = new SaleId();
+ id.setDate("2022-06-15");
+ id.setItem(1L);
+
+ Sale a = new Sale(id);
+ a.setValue(53.94);
+
+ saleRepo.insert(a);
+
+ Sale b = new Sale(id);
+ b.setValue(100.00);
+ assertThrows(DuplicateKeyException.class, () -> {
+ saleRepo.insert(b);
+ });
+ }
+}
diff --git a/persistence-modules/spring-data-mongodb-2/src/main/java/com/baeldung/uuid/event/UuidIdentifiedEntityEventListener.java b/persistence-modules/spring-data-mongodb-2/src/main/java/com/baeldung/uuid/event/UuidIdentifiedEntityEventListener.java
new file mode 100644
index 0000000000..ce45d1e7bb
--- /dev/null
+++ b/persistence-modules/spring-data-mongodb-2/src/main/java/com/baeldung/uuid/event/UuidIdentifiedEntityEventListener.java
@@ -0,0 +1,23 @@
+package com.baeldung.uuid.event;
+
+import java.util.UUID;
+
+import org.springframework.data.mongodb.core.mapping.event.AbstractMongoEventListener;
+import org.springframework.data.mongodb.core.mapping.event.BeforeConvertEvent;
+
+import com.baeldung.uuid.model.UuidIdentifiedEntity;
+
+
+public class UuidIdentifiedEntityEventListener extends AbstractMongoEventListener {
+
+ @Override
+ public void onBeforeConvert(BeforeConvertEvent event) {
+
+ super.onBeforeConvert(event);
+ UuidIdentifiedEntity entity = event.getSource();
+
+ if(entity.getId() == null) {
+ entity.setId(UUID.randomUUID());
+ }
+ }
+}
diff --git a/persistence-modules/spring-data-mongodb-2/src/main/java/com/baeldung/uuid/model/Book.java b/persistence-modules/spring-data-mongodb-2/src/main/java/com/baeldung/uuid/model/Book.java
new file mode 100644
index 0000000000..f6aa1c615e
--- /dev/null
+++ b/persistence-modules/spring-data-mongodb-2/src/main/java/com/baeldung/uuid/model/Book.java
@@ -0,0 +1,26 @@
+package com.baeldung.uuid.model;
+
+import org.springframework.data.mongodb.core.mapping.Document;
+
+@Document
+public class Book extends UuidIdentifiedEntity {
+
+ private String title;
+ private String author;
+
+ public String getTitle() {
+ return title;
+ }
+
+ public void setTitle(String title) {
+ this.title = title;
+ }
+
+ public String getAuthor() {
+ return author;
+ }
+
+ public void setAuthor(String author) {
+ this.author = author;
+ }
+}
diff --git a/persistence-modules/spring-data-mongodb-2/src/main/java/com/baeldung/uuid/model/UuidIdentifiedEntity.java b/persistence-modules/spring-data-mongodb-2/src/main/java/com/baeldung/uuid/model/UuidIdentifiedEntity.java
new file mode 100644
index 0000000000..aee0368b46
--- /dev/null
+++ b/persistence-modules/spring-data-mongodb-2/src/main/java/com/baeldung/uuid/model/UuidIdentifiedEntity.java
@@ -0,0 +1,25 @@
+package com.baeldung.uuid.model;
+
+import java.util.UUID;
+
+import org.springframework.data.annotation.Id;
+
+public abstract class UuidIdentifiedEntity {
+
+ @Id
+ protected UUID id;
+
+ public UUID getId() {
+ return id;
+ }
+
+ public void setId(UUID id) {
+
+ if(this.id != null) {
+
+ throw new UnsupportedOperationException("ID is already defined");
+ }
+
+ this.id = id;
+ }
+}
diff --git a/persistence-modules/spring-data-mongodb-2/src/main/java/com/baeldung/uuid/repository/BookRepository.java b/persistence-modules/spring-data-mongodb-2/src/main/java/com/baeldung/uuid/repository/BookRepository.java
new file mode 100644
index 0000000000..0d6eb790aa
--- /dev/null
+++ b/persistence-modules/spring-data-mongodb-2/src/main/java/com/baeldung/uuid/repository/BookRepository.java
@@ -0,0 +1,11 @@
+package com.baeldung.uuid.repository;
+
+import java.util.UUID;
+
+import org.springframework.data.mongodb.repository.MongoRepository;
+
+import com.baeldung.uuid.model.Book;
+
+public interface BookRepository extends MongoRepository {
+
+}
diff --git a/persistence-modules/spring-data-mongodb-2/src/main/java/com/baeldung/uuid/repository/CustomMongoRepository.java b/persistence-modules/spring-data-mongodb-2/src/main/java/com/baeldung/uuid/repository/CustomMongoRepository.java
new file mode 100644
index 0000000000..599bc9ef61
--- /dev/null
+++ b/persistence-modules/spring-data-mongodb-2/src/main/java/com/baeldung/uuid/repository/CustomMongoRepository.java
@@ -0,0 +1,14 @@
+package com.baeldung.uuid.repository;
+
+import java.util.UUID;
+
+import org.springframework.data.mongodb.repository.MongoRepository;
+import org.springframework.data.repository.NoRepositoryBean;
+
+import com.baeldung.uuid.model.UuidIdentifiedEntity;
+
+
+@NoRepositoryBean
+public interface CustomMongoRepository extends MongoRepository {
+
+}
diff --git a/persistence-modules/spring-data-mongodb-2/src/main/java/com/baeldung/uuid/repository/impl/CustomMongoRepositoryImpl.java b/persistence-modules/spring-data-mongodb-2/src/main/java/com/baeldung/uuid/repository/impl/CustomMongoRepositoryImpl.java
new file mode 100644
index 0000000000..9764d0b06e
--- /dev/null
+++ b/persistence-modules/spring-data-mongodb-2/src/main/java/com/baeldung/uuid/repository/impl/CustomMongoRepositoryImpl.java
@@ -0,0 +1,52 @@
+package com.baeldung.uuid.repository.impl;
+
+import java.util.List;
+import java.util.UUID;
+
+import org.springframework.data.mongodb.core.MongoOperations;
+import org.springframework.data.mongodb.repository.query.MongoEntityInformation;
+import org.springframework.data.mongodb.repository.support.SimpleMongoRepository;
+
+import com.baeldung.uuid.model.UuidIdentifiedEntity;
+import com.baeldung.uuid.repository.CustomMongoRepository;
+
+
+public class CustomMongoRepositoryImpl extends SimpleMongoRepository implements CustomMongoRepository {
+
+ public CustomMongoRepositoryImpl(MongoEntityInformation metadata, MongoOperations mongoOperations) {
+
+ super(metadata, mongoOperations);
+ }
+
+ @Override
+ public S save(S entity) {
+ generateId(entity);
+ return super.save(entity);
+ }
+
+ @Override
+ public List saveAll(Iterable entities) {
+ entities.forEach(entity -> generateId(entity));
+ return super.saveAll(entities);
+ }
+
+ @Override
+ public S insert(S entity) {
+ generateId(entity);
+ return super.insert(entity);
+ }
+
+ @Override
+ public List insert(Iterable entities) {
+ entities.forEach(entity -> generateId(entity));
+ return super.insert(entities);
+ }
+
+ protected void generateId(S entity) {
+
+ if(entity != null && entity.getId() == null) {
+ entity.setId(UUID.randomUUID());
+ }
+ }
+
+}
diff --git a/persistence-modules/spring-data-mongodb-2/src/test/java/com/baeldung/uuid/CustomRepositoryLiveTest.java b/persistence-modules/spring-data-mongodb-2/src/test/java/com/baeldung/uuid/CustomRepositoryLiveTest.java
new file mode 100644
index 0000000000..0fc3fddfd7
--- /dev/null
+++ b/persistence-modules/spring-data-mongodb-2/src/test/java/com/baeldung/uuid/CustomRepositoryLiveTest.java
@@ -0,0 +1,59 @@
+package com.baeldung.uuid;
+
+import static org.junit.jupiter.api.Assertions.assertEquals;
+
+import org.junit.After;
+import org.junit.Before;
+import org.junit.Test;
+import org.junit.runner.RunWith;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.data.mongodb.core.MongoOperations;
+import org.springframework.data.mongodb.core.query.Criteria;
+import org.springframework.data.mongodb.core.query.Query;
+import org.springframework.test.context.ContextConfiguration;
+import org.springframework.test.context.junit4.SpringJUnit4ClassRunner;
+
+import com.baeldung.uuid.config.CustomRepositoryMongoConfig;
+import com.baeldung.uuid.model.Book;
+import com.baeldung.uuid.repository.BookRepository;
+
+/**
+ *
+ * This test requires:
+ * * mongodb instance running on the environment
+ *
+ */
+@RunWith(SpringJUnit4ClassRunner.class)
+@ContextConfiguration(classes = CustomRepositoryMongoConfig.class)
+public class CustomRepositoryLiveTest {
+
+ @Autowired
+ private BookRepository bookRepository;
+
+ @Autowired
+ private MongoOperations mongoOps;
+
+ @Before
+ public void testSetup() {
+ if (!mongoOps.collectionExists(Book.class)) {
+ mongoOps.createCollection(Book.class);
+ }
+ }
+
+ @After
+ public void tearDown() {
+ mongoOps.dropCollection(Book.class);
+ }
+
+ @Test
+ public void whenInsertingBook_thenBookIsInserted() {
+ final Book book = new Book();
+ book.setTitle("The Lord of the Rings");
+ book.setAuthor("JRR Tolkien");
+ Book savedBook = bookRepository.save(book);
+
+ Book result = mongoOps.findOne(Query.query(Criteria.where("_id").is(savedBook.getId())), Book.class);
+
+ assertEquals(result.getTitle(), "The Lord of the Rings");
+ }
+}
diff --git a/persistence-modules/spring-data-mongodb-2/src/test/java/com/baeldung/uuid/EntityCallbackLiveTest.java b/persistence-modules/spring-data-mongodb-2/src/test/java/com/baeldung/uuid/EntityCallbackLiveTest.java
new file mode 100644
index 0000000000..737c2d8adb
--- /dev/null
+++ b/persistence-modules/spring-data-mongodb-2/src/test/java/com/baeldung/uuid/EntityCallbackLiveTest.java
@@ -0,0 +1,64 @@
+package com.baeldung.uuid;
+
+import static org.junit.Assert.assertNotNull;
+import static org.junit.jupiter.api.Assertions.assertEquals;
+
+import org.junit.After;
+import org.junit.Before;
+import org.junit.Test;
+import org.junit.runner.RunWith;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.data.mongodb.core.MongoOperations;
+import org.springframework.data.mongodb.core.query.Criteria;
+import org.springframework.data.mongodb.core.query.Query;
+import org.springframework.test.context.ContextConfiguration;
+import org.springframework.test.context.junit4.SpringJUnit4ClassRunner;
+
+import com.baeldung.uuid.config.EntityCallbackMongoConfig;
+import com.baeldung.uuid.model.Book;
+import com.baeldung.uuid.repository.BookRepository;
+
+/**
+ *
+ * This test requires:
+ * * mongodb instance running on the environment
+ *
+ */
+@RunWith(SpringJUnit4ClassRunner.class)
+@ContextConfiguration(classes = EntityCallbackMongoConfig.class)
+public class EntityCallbackLiveTest {
+
+ @Autowired
+ private BookRepository bookRepository;
+
+ @Autowired
+ private MongoOperations mongoOps;
+
+ @Before
+ public void testSetup() {
+ if (!mongoOps.collectionExists(Book.class)) {
+ mongoOps.createCollection(Book.class);
+ }
+ }
+
+ @After
+ public void tearDown() {
+ mongoOps.dropCollection(Book.class);
+ }
+
+ @Test
+ public void whenSavingArticle_thenArticleIsInserted() {
+ final Book book = new Book();
+ book.setTitle("The Lord of the Rings");
+ book.setAuthor("JRR Tolkien");
+
+ Book savedArticle = bookRepository.save(book);
+
+ Book result = mongoOps.findOne(Query.query(Criteria.where("_id").is(savedArticle.getId())), Book.class);
+
+ assertNotNull(result);
+ assertEquals(result.getTitle(), "The Lord of the Rings");
+ }
+
+
+}
diff --git a/persistence-modules/spring-data-mongodb-2/src/test/java/com/baeldung/uuid/EventLiveTest.java b/persistence-modules/spring-data-mongodb-2/src/test/java/com/baeldung/uuid/EventLiveTest.java
new file mode 100644
index 0000000000..2c6bc72da6
--- /dev/null
+++ b/persistence-modules/spring-data-mongodb-2/src/test/java/com/baeldung/uuid/EventLiveTest.java
@@ -0,0 +1,64 @@
+package com.baeldung.uuid;
+
+import static org.junit.Assert.assertNotNull;
+import static org.junit.jupiter.api.Assertions.assertEquals;
+
+import org.junit.After;
+import org.junit.Before;
+import org.junit.Test;
+import org.junit.runner.RunWith;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.data.mongodb.core.MongoOperations;
+import org.springframework.data.mongodb.core.query.Criteria;
+import org.springframework.data.mongodb.core.query.Query;
+import org.springframework.test.context.ContextConfiguration;
+import org.springframework.test.context.junit4.SpringJUnit4ClassRunner;
+
+import com.baeldung.uuid.config.EventMongoConfig;
+import com.baeldung.uuid.model.Book;
+import com.baeldung.uuid.repository.BookRepository;
+
+/**
+ *
+ * This test requires:
+ * * mongodb instance running on the environment
+ *
+ */
+@RunWith(SpringJUnit4ClassRunner.class)
+@ContextConfiguration(classes = EventMongoConfig.class)
+public class EventLiveTest {
+
+ @Autowired
+ private BookRepository bookRepository;
+
+ @Autowired
+ private MongoOperations mongoOps;
+
+ @Before
+ public void testSetup() {
+ if (!mongoOps.collectionExists(Book.class)) {
+ mongoOps.createCollection(Book.class);
+ }
+ }
+
+ @After
+ public void tearDown() {
+ mongoOps.dropCollection(Book.class);
+ }
+
+ @Test
+ public void whenSavingArticle_thenArticleIsInserted() {
+ final Book book = new Book();
+ book.setTitle("The Lord of the Rings");
+ book.setAuthor("JRR Tolkien");
+
+ Book savedArticle = bookRepository.save(book);
+
+ Book result = mongoOps.findOne(Query.query(Criteria.where("_id").is(savedArticle.getId())), Book.class);
+
+ assertNotNull(result);
+ assertEquals(result.getTitle(), "The Lord of the Rings");
+ }
+
+
+}
diff --git a/persistence-modules/spring-data-mongodb-2/src/test/java/com/baeldung/uuid/config/CustomRepositoryMongoConfig.java b/persistence-modules/spring-data-mongodb-2/src/test/java/com/baeldung/uuid/config/CustomRepositoryMongoConfig.java
new file mode 100644
index 0000000000..833a407ae2
--- /dev/null
+++ b/persistence-modules/spring-data-mongodb-2/src/test/java/com/baeldung/uuid/config/CustomRepositoryMongoConfig.java
@@ -0,0 +1,32 @@
+package com.baeldung.uuid.config;
+
+import org.bson.UuidRepresentation;
+import org.springframework.context.annotation.Bean;
+import org.springframework.context.annotation.Configuration;
+import org.springframework.data.mongodb.core.MongoTemplate;
+import org.springframework.data.mongodb.repository.config.EnableMongoRepositories;
+
+import com.baeldung.uuid.repository.impl.CustomMongoRepositoryImpl;
+import com.mongodb.ConnectionString;
+import com.mongodb.MongoClientSettings;
+import com.mongodb.client.MongoClient;
+import com.mongodb.client.MongoClients;
+
+@Configuration
+@EnableMongoRepositories(basePackages = "com.baeldung.uuid.repository", repositoryBaseClass = CustomMongoRepositoryImpl.class)
+public class CustomRepositoryMongoConfig {
+
+ @Bean
+ public MongoClient mongo() throws Exception {
+ final ConnectionString connectionString = new ConnectionString("mongodb://localhost:27017/test");
+ final MongoClientSettings mongoClientSettings = MongoClientSettings.builder()
+ .uuidRepresentation(UuidRepresentation.STANDARD)
+ .applyConnectionString(connectionString).build();
+ return MongoClients.create(mongoClientSettings);
+ }
+
+ @Bean
+ public MongoTemplate mongoTemplate() throws Exception {
+ return new MongoTemplate(mongo(), "test");
+ }
+}
diff --git a/persistence-modules/spring-data-mongodb-2/src/test/java/com/baeldung/uuid/config/EntityCallbackMongoConfig.java b/persistence-modules/spring-data-mongodb-2/src/test/java/com/baeldung/uuid/config/EntityCallbackMongoConfig.java
new file mode 100644
index 0000000000..baf69dd5e8
--- /dev/null
+++ b/persistence-modules/spring-data-mongodb-2/src/test/java/com/baeldung/uuid/config/EntityCallbackMongoConfig.java
@@ -0,0 +1,48 @@
+package com.baeldung.uuid.config;
+
+import java.util.UUID;
+
+import org.bson.UuidRepresentation;
+import org.springframework.context.annotation.Bean;
+import org.springframework.context.annotation.Configuration;
+import org.springframework.data.mongodb.core.MongoTemplate;
+import org.springframework.data.mongodb.core.mapping.event.BeforeConvertCallback;
+import org.springframework.data.mongodb.repository.config.EnableMongoRepositories;
+
+import com.baeldung.uuid.model.UuidIdentifiedEntity;
+import com.mongodb.ConnectionString;
+import com.mongodb.MongoClientSettings;
+import com.mongodb.client.MongoClient;
+import com.mongodb.client.MongoClients;
+
+@Configuration
+@EnableMongoRepositories(basePackages = "com.baeldung.uuid.repository")
+public class EntityCallbackMongoConfig {
+
+ @Bean
+ public MongoClient mongo() throws Exception {
+ final ConnectionString connectionString = new ConnectionString("mongodb://localhost:27017/test");
+ final MongoClientSettings mongoClientSettings = MongoClientSettings.builder()
+ .uuidRepresentation(UuidRepresentation.STANDARD)
+ .applyConnectionString(connectionString).build();
+ return MongoClients.create(mongoClientSettings);
+ }
+
+ @Bean
+ public MongoTemplate mongoTemplate() throws Exception {
+ return new MongoTemplate(mongo(), "test");
+ }
+
+ @Bean
+ public BeforeConvertCallback beforeSaveCallback() {
+
+ return (entity, collection) -> {
+
+ if(entity.getId() == null) {
+ entity.setId(UUID.randomUUID());
+ }
+ return entity;
+ };
+ }
+
+}
diff --git a/persistence-modules/spring-data-mongodb-2/src/test/java/com/baeldung/uuid/config/EventMongoConfig.java b/persistence-modules/spring-data-mongodb-2/src/test/java/com/baeldung/uuid/config/EventMongoConfig.java
new file mode 100644
index 0000000000..d26281dd4a
--- /dev/null
+++ b/persistence-modules/spring-data-mongodb-2/src/test/java/com/baeldung/uuid/config/EventMongoConfig.java
@@ -0,0 +1,38 @@
+package com.baeldung.uuid.config;
+
+import org.bson.UuidRepresentation;
+import org.springframework.context.annotation.Bean;
+import org.springframework.context.annotation.Configuration;
+import org.springframework.data.mongodb.core.MongoTemplate;
+import org.springframework.data.mongodb.repository.config.EnableMongoRepositories;
+
+import com.baeldung.uuid.event.UuidIdentifiedEntityEventListener;
+import com.mongodb.ConnectionString;
+import com.mongodb.MongoClientSettings;
+import com.mongodb.client.MongoClient;
+import com.mongodb.client.MongoClients;
+
+@Configuration
+@EnableMongoRepositories(basePackages = "com.baeldung.uuid.repository")
+public class EventMongoConfig {
+
+ @Bean
+ public MongoClient mongo() throws Exception {
+ final ConnectionString connectionString = new ConnectionString("mongodb://localhost:27017/test");
+ final MongoClientSettings mongoClientSettings = MongoClientSettings.builder()
+ .uuidRepresentation(UuidRepresentation.STANDARD)
+ .applyConnectionString(connectionString).build();
+ return MongoClients.create(mongoClientSettings);
+ }
+
+ @Bean
+ public MongoTemplate mongoTemplate() throws Exception {
+ return new MongoTemplate(mongo(), "test");
+ }
+
+ @Bean
+ public UuidIdentifiedEntityEventListener uuidIdentifiedEntityEventListener() {
+
+ return new UuidIdentifiedEntityEventListener();
+ }
+}
diff --git a/persistence-modules/spring-data-mongodb/README.md b/persistence-modules/spring-data-mongodb/README.md
index acc978c68e..be2071440b 100644
--- a/persistence-modules/spring-data-mongodb/README.md
+++ b/persistence-modules/spring-data-mongodb/README.md
@@ -11,6 +11,7 @@
- [Spring Data MongoDB: Projections and Aggregations](http://www.baeldung.com/spring-data-mongodb-projections-aggregations)
- [Spring Data Annotations](http://www.baeldung.com/spring-data-annotations)
- [Spring Data MongoDB Transactions](https://www.baeldung.com/spring-data-mongodb-transactions)
+- [UUID as Entity ID in MongoDB](https://www.baeldung.com/java-mongodb-uuid)
## Spring Data MongoDB Live Testing
diff --git a/pom.xml b/pom.xml
index 5ecd457f7b..0801fbab46 100644
--- a/pom.xml
+++ b/pom.xml
@@ -504,9 +504,8 @@
protobuffer
- quarkus
- quarkus-extension
-
+ quarkus-modules
+
rabbitmq
ratpack
@@ -941,8 +940,7 @@
protobuffer
- quarkus
- quarkus-extension
+ quarkus-modules
rabbitmq
@@ -1240,6 +1238,7 @@
core-java-modules/core-java-io-conversions-2
core-java-modules/core-java-jpms
core-java-modules/core-java-os
+ core-java-modules/core-java-streams-4
core-java-modules/core-java-string-algorithms-3
core-java-modules/core-java-string-operations-3
core-java-modules/core-java-string-operations-4
@@ -1254,8 +1253,8 @@
maven-modules/multimodulemavenproject
persistence-modules/sirix
persistence-modules/spring-data-cassandra-2
- quarkus-vs-springboot
- quarkus-jandex
+ quarkus-modules/quarkus-vs-springboot
+ quarkus-modules/quarkus-jandex
spring-boot-modules/spring-boot-cassandre
spring-boot-modules/spring-boot-camel
testing-modules/testing-assertions
@@ -1322,8 +1321,8 @@
maven-modules/multimodulemavenproject
persistence-modules/sirix
persistence-modules/spring-data-cassandra-2
- quarkus-vs-springboot
- quarkus-jandex
+ quarkus-modules/quarkus-vs-springboot
+ quarkus-modules/quarkus-jandex
spring-boot-modules/spring-boot-cassandre
spring-boot-modules/spring-boot-camel
testing-modules/testing-assertions
diff --git a/quarkus-jandex/hello-app/mvnw b/quarkus-jandex/hello-app/mvnw
deleted file mode 100644
index a16b5431b4..0000000000
--- a/quarkus-jandex/hello-app/mvnw
+++ /dev/null
@@ -1,310 +0,0 @@
-#!/bin/sh
-# ----------------------------------------------------------------------------
-# Licensed to the Apache Software Foundation (ASF) under one
-# or more contributor license agreements. See the NOTICE file
-# distributed with this work for additional information
-# regarding copyright ownership. The ASF licenses this file
-# to you under the Apache License, Version 2.0 (the
-# "License"); you may not use this file except in compliance
-# with the License. You may obtain a copy of the License at
-#
-# https://www.apache.org/licenses/LICENSE-2.0
-#
-# Unless required by applicable law or agreed to in writing,
-# software distributed under the License is distributed on an
-# "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
-# KIND, either express or implied. See the License for the
-# specific language governing permissions and limitations
-# under the License.
-# ----------------------------------------------------------------------------
-
-# ----------------------------------------------------------------------------
-# Maven Start Up Batch script
-#
-# Required ENV vars:
-# ------------------
-# JAVA_HOME - location of a JDK home dir
-#
-# Optional ENV vars
-# -----------------
-# M2_HOME - location of maven2's installed home dir
-# MAVEN_OPTS - parameters passed to the Java VM when running Maven
-# e.g. to debug Maven itself, use
-# set MAVEN_OPTS=-Xdebug -Xrunjdwp:transport=dt_socket,server=y,suspend=y,address=8000
-# MAVEN_SKIP_RC - flag to disable loading of mavenrc files
-# ----------------------------------------------------------------------------
-
-if [ -z "$MAVEN_SKIP_RC" ] ; then
-
- if [ -f /etc/mavenrc ] ; then
- . /etc/mavenrc
- fi
-
- if [ -f "$HOME/.mavenrc" ] ; then
- . "$HOME/.mavenrc"
- fi
-
-fi
-
-# OS specific support. $var _must_ be set to either true or false.
-cygwin=false;
-darwin=false;
-mingw=false
-case "`uname`" in
- CYGWIN*) cygwin=true ;;
- MINGW*) mingw=true;;
- Darwin*) darwin=true
- # Use /usr/libexec/java_home if available, otherwise fall back to /Library/Java/Home
- # See https://developer.apple.com/library/mac/qa/qa1170/_index.html
- if [ -z "$JAVA_HOME" ]; then
- if [ -x "/usr/libexec/java_home" ]; then
- export JAVA_HOME="`/usr/libexec/java_home`"
- else
- export JAVA_HOME="/Library/Java/Home"
- fi
- fi
- ;;
-esac
-
-if [ -z "$JAVA_HOME" ] ; then
- if [ -r /etc/gentoo-release ] ; then
- JAVA_HOME=`java-config --jre-home`
- fi
-fi
-
-if [ -z "$M2_HOME" ] ; then
- ## resolve links - $0 may be a link to maven's home
- PRG="$0"
-
- # need this for relative symlinks
- while [ -h "$PRG" ] ; do
- ls=`ls -ld "$PRG"`
- link=`expr "$ls" : '.*-> \(.*\)$'`
- if expr "$link" : '/.*' > /dev/null; then
- PRG="$link"
- else
- PRG="`dirname "$PRG"`/$link"
- fi
- done
-
- saveddir=`pwd`
-
- M2_HOME=`dirname "$PRG"`/..
-
- # make it fully qualified
- M2_HOME=`cd "$M2_HOME" && pwd`
-
- cd "$saveddir"
- # echo Using m2 at $M2_HOME
-fi
-
-# For Cygwin, ensure paths are in UNIX format before anything is touched
-if $cygwin ; then
- [ -n "$M2_HOME" ] &&
- M2_HOME=`cygpath --unix "$M2_HOME"`
- [ -n "$JAVA_HOME" ] &&
- JAVA_HOME=`cygpath --unix "$JAVA_HOME"`
- [ -n "$CLASSPATH" ] &&
- CLASSPATH=`cygpath --path --unix "$CLASSPATH"`
-fi
-
-# For Mingw, ensure paths are in UNIX format before anything is touched
-if $mingw ; then
- [ -n "$M2_HOME" ] &&
- M2_HOME="`(cd "$M2_HOME"; pwd)`"
- [ -n "$JAVA_HOME" ] &&
- JAVA_HOME="`(cd "$JAVA_HOME"; pwd)`"
-fi
-
-if [ -z "$JAVA_HOME" ]; then
- javaExecutable="`which javac`"
- if [ -n "$javaExecutable" ] && ! [ "`expr \"$javaExecutable\" : '\([^ ]*\)'`" = "no" ]; then
- # readlink(1) is not available as standard on Solaris 10.
- readLink=`which readlink`
- if [ ! `expr "$readLink" : '\([^ ]*\)'` = "no" ]; then
- if $darwin ; then
- javaHome="`dirname \"$javaExecutable\"`"
- javaExecutable="`cd \"$javaHome\" && pwd -P`/javac"
- else
- javaExecutable="`readlink -f \"$javaExecutable\"`"
- fi
- javaHome="`dirname \"$javaExecutable\"`"
- javaHome=`expr "$javaHome" : '\(.*\)/bin'`
- JAVA_HOME="$javaHome"
- export JAVA_HOME
- fi
- fi
-fi
-
-if [ -z "$JAVACMD" ] ; then
- if [ -n "$JAVA_HOME" ] ; then
- if [ -x "$JAVA_HOME/jre/sh/java" ] ; then
- # IBM's JDK on AIX uses strange locations for the executables
- JAVACMD="$JAVA_HOME/jre/sh/java"
- else
- JAVACMD="$JAVA_HOME/bin/java"
- fi
- else
- JAVACMD="`which java`"
- fi
-fi
-
-if [ ! -x "$JAVACMD" ] ; then
- echo "Error: JAVA_HOME is not defined correctly." >&2
- echo " We cannot execute $JAVACMD" >&2
- exit 1
-fi
-
-if [ -z "$JAVA_HOME" ] ; then
- echo "Warning: JAVA_HOME environment variable is not set."
-fi
-
-CLASSWORLDS_LAUNCHER=org.codehaus.plexus.classworlds.launcher.Launcher
-
-# traverses directory structure from process work directory to filesystem root
-# first directory with .mvn subdirectory is considered project base directory
-find_maven_basedir() {
-
- if [ -z "$1" ]
- then
- echo "Path not specified to find_maven_basedir"
- return 1
- fi
-
- basedir="$1"
- wdir="$1"
- while [ "$wdir" != '/' ] ; do
- if [ -d "$wdir"/.mvn ] ; then
- basedir=$wdir
- break
- fi
- # workaround for JBEAP-8937 (on Solaris 10/Sparc)
- if [ -d "${wdir}" ]; then
- wdir=`cd "$wdir/.."; pwd`
- fi
- # end of workaround
- done
- echo "${basedir}"
-}
-
-# concatenates all lines of a file
-concat_lines() {
- if [ -f "$1" ]; then
- echo "$(tr -s '\n' ' ' < "$1")"
- fi
-}
-
-BASE_DIR=`find_maven_basedir "$(pwd)"`
-if [ -z "$BASE_DIR" ]; then
- exit 1;
-fi
-
-##########################################################################################
-# Extension to allow automatically downloading the maven-wrapper.jar from Maven-central
-# This allows using the maven wrapper in projects that prohibit checking in binary data.
-##########################################################################################
-if [ -r "$BASE_DIR/.mvn/wrapper/maven-wrapper.jar" ]; then
- if [ "$MVNW_VERBOSE" = true ]; then
- echo "Found .mvn/wrapper/maven-wrapper.jar"
- fi
-else
- if [ "$MVNW_VERBOSE" = true ]; then
- echo "Couldn't find .mvn/wrapper/maven-wrapper.jar, downloading it ..."
- fi
- if [ -n "$MVNW_REPOURL" ]; then
- jarUrl="$MVNW_REPOURL/io/takari/maven-wrapper/0.5.6/maven-wrapper-0.5.6.jar"
- else
- jarUrl="https://repo.maven.apache.org/maven2/io/takari/maven-wrapper/0.5.6/maven-wrapper-0.5.6.jar"
- fi
- while IFS="=" read key value; do
- case "$key" in (wrapperUrl) jarUrl="$value"; break ;;
- esac
- done < "$BASE_DIR/.mvn/wrapper/maven-wrapper.properties"
- if [ "$MVNW_VERBOSE" = true ]; then
- echo "Downloading from: $jarUrl"
- fi
- wrapperJarPath="$BASE_DIR/.mvn/wrapper/maven-wrapper.jar"
- if $cygwin; then
- wrapperJarPath=`cygpath --path --windows "$wrapperJarPath"`
- fi
-
- if command -v wget > /dev/null; then
- if [ "$MVNW_VERBOSE" = true ]; then
- echo "Found wget ... using wget"
- fi
- if [ -z "$MVNW_USERNAME" ] || [ -z "$MVNW_PASSWORD" ]; then
- wget "$jarUrl" -O "$wrapperJarPath"
- else
- wget --http-user=$MVNW_USERNAME --http-password=$MVNW_PASSWORD "$jarUrl" -O "$wrapperJarPath"
- fi
- elif command -v curl > /dev/null; then
- if [ "$MVNW_VERBOSE" = true ]; then
- echo "Found curl ... using curl"
- fi
- if [ -z "$MVNW_USERNAME" ] || [ -z "$MVNW_PASSWORD" ]; then
- curl -o "$wrapperJarPath" "$jarUrl" -f
- else
- curl --user $MVNW_USERNAME:$MVNW_PASSWORD -o "$wrapperJarPath" "$jarUrl" -f
- fi
-
- else
- if [ "$MVNW_VERBOSE" = true ]; then
- echo "Falling back to using Java to download"
- fi
- javaClass="$BASE_DIR/.mvn/wrapper/MavenWrapperDownloader.java"
- # For Cygwin, switch paths to Windows format before running javac
- if $cygwin; then
- javaClass=`cygpath --path --windows "$javaClass"`
- fi
- if [ -e "$javaClass" ]; then
- if [ ! -e "$BASE_DIR/.mvn/wrapper/MavenWrapperDownloader.class" ]; then
- if [ "$MVNW_VERBOSE" = true ]; then
- echo " - Compiling MavenWrapperDownloader.java ..."
- fi
- # Compiling the Java class
- ("$JAVA_HOME/bin/javac" "$javaClass")
- fi
- if [ -e "$BASE_DIR/.mvn/wrapper/MavenWrapperDownloader.class" ]; then
- # Running the downloader
- if [ "$MVNW_VERBOSE" = true ]; then
- echo " - Running MavenWrapperDownloader.java ..."
- fi
- ("$JAVA_HOME/bin/java" -cp .mvn/wrapper MavenWrapperDownloader "$MAVEN_PROJECTBASEDIR")
- fi
- fi
- fi
-fi
-##########################################################################################
-# End of extension
-##########################################################################################
-
-export MAVEN_PROJECTBASEDIR=${MAVEN_BASEDIR:-"$BASE_DIR"}
-if [ "$MVNW_VERBOSE" = true ]; then
- echo $MAVEN_PROJECTBASEDIR
-fi
-MAVEN_OPTS="$(concat_lines "$MAVEN_PROJECTBASEDIR/.mvn/jvm.config") $MAVEN_OPTS"
-
-# For Cygwin, switch paths to Windows format before running java
-if $cygwin; then
- [ -n "$M2_HOME" ] &&
- M2_HOME=`cygpath --path --windows "$M2_HOME"`
- [ -n "$JAVA_HOME" ] &&
- JAVA_HOME=`cygpath --path --windows "$JAVA_HOME"`
- [ -n "$CLASSPATH" ] &&
- CLASSPATH=`cygpath --path --windows "$CLASSPATH"`
- [ -n "$MAVEN_PROJECTBASEDIR" ] &&
- MAVEN_PROJECTBASEDIR=`cygpath --path --windows "$MAVEN_PROJECTBASEDIR"`
-fi
-
-# Provide a "standardized" way to retrieve the CLI args that will
-# work with both Windows and non-Windows executions.
-MAVEN_CMD_LINE_ARGS="$MAVEN_CONFIG $@"
-export MAVEN_CMD_LINE_ARGS
-
-WRAPPER_LAUNCHER=org.apache.maven.wrapper.MavenWrapperMain
-
-exec "$JAVACMD" \
- $MAVEN_OPTS \
- -classpath "$MAVEN_PROJECTBASEDIR/.mvn/wrapper/maven-wrapper.jar" \
- "-Dmaven.home=${M2_HOME}" "-Dmaven.multiModuleProjectDirectory=${MAVEN_PROJECTBASEDIR}" \
- ${WRAPPER_LAUNCHER} $MAVEN_CONFIG "$@"
diff --git a/quarkus-jandex/hello-app/mvnw.cmd b/quarkus-jandex/hello-app/mvnw.cmd
deleted file mode 100644
index c8d43372c9..0000000000
--- a/quarkus-jandex/hello-app/mvnw.cmd
+++ /dev/null
@@ -1,182 +0,0 @@
-@REM ----------------------------------------------------------------------------
-@REM Licensed to the Apache Software Foundation (ASF) under one
-@REM or more contributor license agreements. See the NOTICE file
-@REM distributed with this work for additional information
-@REM regarding copyright ownership. The ASF licenses this file
-@REM to you under the Apache License, Version 2.0 (the
-@REM "License"); you may not use this file except in compliance
-@REM with the License. You may obtain a copy of the License at
-@REM
-@REM https://www.apache.org/licenses/LICENSE-2.0
-@REM
-@REM Unless required by applicable law or agreed to in writing,
-@REM software distributed under the License is distributed on an
-@REM "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
-@REM KIND, either express or implied. See the License for the
-@REM specific language governing permissions and limitations
-@REM under the License.
-@REM ----------------------------------------------------------------------------
-
-@REM ----------------------------------------------------------------------------
-@REM Maven Start Up Batch script
-@REM
-@REM Required ENV vars:
-@REM JAVA_HOME - location of a JDK home dir
-@REM
-@REM Optional ENV vars
-@REM M2_HOME - location of maven2's installed home dir
-@REM MAVEN_BATCH_ECHO - set to 'on' to enable the echoing of the batch commands
-@REM MAVEN_BATCH_PAUSE - set to 'on' to wait for a keystroke before ending
-@REM MAVEN_OPTS - parameters passed to the Java VM when running Maven
-@REM e.g. to debug Maven itself, use
-@REM set MAVEN_OPTS=-Xdebug -Xrunjdwp:transport=dt_socket,server=y,suspend=y,address=8000
-@REM MAVEN_SKIP_RC - flag to disable loading of mavenrc files
-@REM ----------------------------------------------------------------------------
-
-@REM Begin all REM lines with '@' in case MAVEN_BATCH_ECHO is 'on'
-@echo off
-@REM set title of command window
-title %0
-@REM enable echoing by setting MAVEN_BATCH_ECHO to 'on'
-@if "%MAVEN_BATCH_ECHO%" == "on" echo %MAVEN_BATCH_ECHO%
-
-@REM set %HOME% to equivalent of $HOME
-if "%HOME%" == "" (set "HOME=%HOMEDRIVE%%HOMEPATH%")
-
-@REM Execute a user defined script before this one
-if not "%MAVEN_SKIP_RC%" == "" goto skipRcPre
-@REM check for pre script, once with legacy .bat ending and once with .cmd ending
-if exist "%HOME%\mavenrc_pre.bat" call "%HOME%\mavenrc_pre.bat"
-if exist "%HOME%\mavenrc_pre.cmd" call "%HOME%\mavenrc_pre.cmd"
-:skipRcPre
-
-@setlocal
-
-set ERROR_CODE=0
-
-@REM To isolate internal variables from possible post scripts, we use another setlocal
-@setlocal
-
-@REM ==== START VALIDATION ====
-if not "%JAVA_HOME%" == "" goto OkJHome
-
-echo.
-echo Error: JAVA_HOME not found in your environment. >&2
-echo Please set the JAVA_HOME variable in your environment to match the >&2
-echo location of your Java installation. >&2
-echo.
-goto error
-
-:OkJHome
-if exist "%JAVA_HOME%\bin\java.exe" goto init
-
-echo.
-echo Error: JAVA_HOME is set to an invalid directory. >&2
-echo JAVA_HOME = "%JAVA_HOME%" >&2
-echo Please set the JAVA_HOME variable in your environment to match the >&2
-echo location of your Java installation. >&2
-echo.
-goto error
-
-@REM ==== END VALIDATION ====
-
-:init
-
-@REM Find the project base dir, i.e. the directory that contains the folder ".mvn".
-@REM Fallback to current working directory if not found.
-
-set MAVEN_PROJECTBASEDIR=%MAVEN_BASEDIR%
-IF NOT "%MAVEN_PROJECTBASEDIR%"=="" goto endDetectBaseDir
-
-set EXEC_DIR=%CD%
-set WDIR=%EXEC_DIR%
-:findBaseDir
-IF EXIST "%WDIR%"\.mvn goto baseDirFound
-cd ..
-IF "%WDIR%"=="%CD%" goto baseDirNotFound
-set WDIR=%CD%
-goto findBaseDir
-
-:baseDirFound
-set MAVEN_PROJECTBASEDIR=%WDIR%
-cd "%EXEC_DIR%"
-goto endDetectBaseDir
-
-:baseDirNotFound
-set MAVEN_PROJECTBASEDIR=%EXEC_DIR%
-cd "%EXEC_DIR%"
-
-:endDetectBaseDir
-
-IF NOT EXIST "%MAVEN_PROJECTBASEDIR%\.mvn\jvm.config" goto endReadAdditionalConfig
-
-@setlocal EnableExtensions EnableDelayedExpansion
-for /F "usebackq delims=" %%a in ("%MAVEN_PROJECTBASEDIR%\.mvn\jvm.config") do set JVM_CONFIG_MAVEN_PROPS=!JVM_CONFIG_MAVEN_PROPS! %%a
-@endlocal & set JVM_CONFIG_MAVEN_PROPS=%JVM_CONFIG_MAVEN_PROPS%
-
-:endReadAdditionalConfig
-
-SET MAVEN_JAVA_EXE="%JAVA_HOME%\bin\java.exe"
-set WRAPPER_JAR="%MAVEN_PROJECTBASEDIR%\.mvn\wrapper\maven-wrapper.jar"
-set WRAPPER_LAUNCHER=org.apache.maven.wrapper.MavenWrapperMain
-
-set DOWNLOAD_URL="https://repo.maven.apache.org/maven2/io/takari/maven-wrapper/0.5.6/maven-wrapper-0.5.6.jar"
-
-FOR /F "tokens=1,2 delims==" %%A IN ("%MAVEN_PROJECTBASEDIR%\.mvn\wrapper\maven-wrapper.properties") DO (
- IF "%%A"=="wrapperUrl" SET DOWNLOAD_URL=%%B
-)
-
-@REM Extension to allow automatically downloading the maven-wrapper.jar from Maven-central
-@REM This allows using the maven wrapper in projects that prohibit checking in binary data.
-if exist %WRAPPER_JAR% (
- if "%MVNW_VERBOSE%" == "true" (
- echo Found %WRAPPER_JAR%
- )
-) else (
- if not "%MVNW_REPOURL%" == "" (
- SET DOWNLOAD_URL="%MVNW_REPOURL%/io/takari/maven-wrapper/0.5.6/maven-wrapper-0.5.6.jar"
- )
- if "%MVNW_VERBOSE%" == "true" (
- echo Couldn't find %WRAPPER_JAR%, downloading it ...
- echo Downloading from: %DOWNLOAD_URL%
- )
-
- powershell -Command "&{"^
- "$webclient = new-object System.Net.WebClient;"^
- "if (-not ([string]::IsNullOrEmpty('%MVNW_USERNAME%') -and [string]::IsNullOrEmpty('%MVNW_PASSWORD%'))) {"^
- "$webclient.Credentials = new-object System.Net.NetworkCredential('%MVNW_USERNAME%', '%MVNW_PASSWORD%');"^
- "}"^
- "[Net.ServicePointManager]::SecurityProtocol = [Net.SecurityProtocolType]::Tls12; $webclient.DownloadFile('%DOWNLOAD_URL%', '%WRAPPER_JAR%')"^
- "}"
- if "%MVNW_VERBOSE%" == "true" (
- echo Finished downloading %WRAPPER_JAR%
- )
-)
-@REM End of extension
-
-@REM Provide a "standardized" way to retrieve the CLI args that will
-@REM work with both Windows and non-Windows executions.
-set MAVEN_CMD_LINE_ARGS=%*
-
-%MAVEN_JAVA_EXE% %JVM_CONFIG_MAVEN_PROPS% %MAVEN_OPTS% %MAVEN_DEBUG_OPTS% -classpath %WRAPPER_JAR% "-Dmaven.multiModuleProjectDirectory=%MAVEN_PROJECTBASEDIR%" %WRAPPER_LAUNCHER% %MAVEN_CONFIG% %*
-if ERRORLEVEL 1 goto error
-goto end
-
-:error
-set ERROR_CODE=1
-
-:end
-@endlocal & set ERROR_CODE=%ERROR_CODE%
-
-if not "%MAVEN_SKIP_RC%" == "" goto skipRcPost
-@REM check for post script, once with legacy .bat ending and once with .cmd ending
-if exist "%HOME%\mavenrc_post.bat" call "%HOME%\mavenrc_post.bat"
-if exist "%HOME%\mavenrc_post.cmd" call "%HOME%\mavenrc_post.cmd"
-:skipRcPost
-
-@REM pause the script if MAVEN_BATCH_PAUSE is set to 'on'
-if "%MAVEN_BATCH_PAUSE%" == "on" pause
-
-if "%MAVEN_TERMINATE_CMD%" == "on" exit %ERROR_CODE%
-
-exit /B %ERROR_CODE%
diff --git a/quarkus-modules/README.md b/quarkus-modules/README.md
new file mode 100644
index 0000000000..aa45f710d0
--- /dev/null
+++ b/quarkus-modules/README.md
@@ -0,0 +1,3 @@
+## Quarkus Modules
+
+This module contains articles about quarkus. Actual articles go into its submodules.
diff --git a/quarkus-modules/pom.xml b/quarkus-modules/pom.xml
new file mode 100644
index 0000000000..86e2132035
--- /dev/null
+++ b/quarkus-modules/pom.xml
@@ -0,0 +1,25 @@
+
+
+ 4.0.0
+ quarkus-modules
+ quarkus-modules
+ pom
+
+
+ com.baeldung
+ parent-modules
+ 1.0.0-SNAPSHOT
+
+
+
+ quarkus
+ quarkus-extension
+
+
+
+
diff --git a/quarkus-extension/README.md b/quarkus-modules/quarkus-extension/README.md
similarity index 100%
rename from quarkus-extension/README.md
rename to quarkus-modules/quarkus-extension/README.md
diff --git a/quarkus-extension/pom.xml b/quarkus-modules/quarkus-extension/pom.xml
similarity index 93%
rename from quarkus-extension/pom.xml
rename to quarkus-modules/quarkus-extension/pom.xml
index c2ae66a3a0..a40d83e6ce 100644
--- a/quarkus-extension/pom.xml
+++ b/quarkus-modules/quarkus-extension/pom.xml
@@ -11,7 +11,7 @@
com.baeldung
- parent-modules
+ quarkus-modules
1.0.0-SNAPSHOT
diff --git a/quarkus-extension/quarkus-app/pom.xml b/quarkus-modules/quarkus-extension/quarkus-app/pom.xml
similarity index 100%
rename from quarkus-extension/quarkus-app/pom.xml
rename to quarkus-modules/quarkus-extension/quarkus-app/pom.xml
diff --git a/quarkus-extension/quarkus-app/src/main/resources/application.properties b/quarkus-modules/quarkus-extension/quarkus-app/src/main/resources/application.properties
similarity index 100%
rename from quarkus-extension/quarkus-app/src/main/resources/application.properties
rename to quarkus-modules/quarkus-extension/quarkus-app/src/main/resources/application.properties
diff --git a/quarkus-extension/quarkus-app/src/main/resources/db/liquibase-changelog-master.xml b/quarkus-modules/quarkus-extension/quarkus-app/src/main/resources/db/liquibase-changelog-master.xml
similarity index 100%
rename from quarkus-extension/quarkus-app/src/main/resources/db/liquibase-changelog-master.xml
rename to quarkus-modules/quarkus-extension/quarkus-app/src/main/resources/db/liquibase-changelog-master.xml
diff --git a/quarkus-extension/quarkus-liquibase/deployment/pom.xml b/quarkus-modules/quarkus-extension/quarkus-liquibase/deployment/pom.xml
similarity index 100%
rename from quarkus-extension/quarkus-liquibase/deployment/pom.xml
rename to quarkus-modules/quarkus-extension/quarkus-liquibase/deployment/pom.xml
diff --git a/quarkus-extension/quarkus-liquibase/deployment/src/main/java/com/baeldung/quarkus/liquibase/LiquibaseProcessor.java b/quarkus-modules/quarkus-extension/quarkus-liquibase/deployment/src/main/java/com/baeldung/quarkus/liquibase/LiquibaseProcessor.java
similarity index 100%
rename from quarkus-extension/quarkus-liquibase/deployment/src/main/java/com/baeldung/quarkus/liquibase/LiquibaseProcessor.java
rename to quarkus-modules/quarkus-extension/quarkus-liquibase/deployment/src/main/java/com/baeldung/quarkus/liquibase/LiquibaseProcessor.java
diff --git a/quarkus-extension/quarkus-liquibase/pom.xml b/quarkus-modules/quarkus-extension/quarkus-liquibase/pom.xml
similarity index 100%
rename from quarkus-extension/quarkus-liquibase/pom.xml
rename to quarkus-modules/quarkus-extension/quarkus-liquibase/pom.xml
diff --git a/quarkus-extension/quarkus-liquibase/runtime/pom.xml b/quarkus-modules/quarkus-extension/quarkus-liquibase/runtime/pom.xml
similarity index 100%
rename from quarkus-extension/quarkus-liquibase/runtime/pom.xml
rename to quarkus-modules/quarkus-extension/quarkus-liquibase/runtime/pom.xml
diff --git a/quarkus-extension/quarkus-liquibase/runtime/src/main/java/com/baeldung/quarkus/liquibase/LiquibaseConfig.java b/quarkus-modules/quarkus-extension/quarkus-liquibase/runtime/src/main/java/com/baeldung/quarkus/liquibase/LiquibaseConfig.java
similarity index 100%
rename from quarkus-extension/quarkus-liquibase/runtime/src/main/java/com/baeldung/quarkus/liquibase/LiquibaseConfig.java
rename to quarkus-modules/quarkus-extension/quarkus-liquibase/runtime/src/main/java/com/baeldung/quarkus/liquibase/LiquibaseConfig.java
diff --git a/quarkus-extension/quarkus-liquibase/runtime/src/main/java/com/baeldung/quarkus/liquibase/LiquibaseProducer.java b/quarkus-modules/quarkus-extension/quarkus-liquibase/runtime/src/main/java/com/baeldung/quarkus/liquibase/LiquibaseProducer.java
similarity index 100%
rename from quarkus-extension/quarkus-liquibase/runtime/src/main/java/com/baeldung/quarkus/liquibase/LiquibaseProducer.java
rename to quarkus-modules/quarkus-extension/quarkus-liquibase/runtime/src/main/java/com/baeldung/quarkus/liquibase/LiquibaseProducer.java
diff --git a/quarkus-extension/quarkus-liquibase/runtime/src/main/java/com/baeldung/quarkus/liquibase/LiquibaseRecorder.java b/quarkus-modules/quarkus-extension/quarkus-liquibase/runtime/src/main/java/com/baeldung/quarkus/liquibase/LiquibaseRecorder.java
similarity index 100%
rename from quarkus-extension/quarkus-liquibase/runtime/src/main/java/com/baeldung/quarkus/liquibase/LiquibaseRecorder.java
rename to quarkus-modules/quarkus-extension/quarkus-liquibase/runtime/src/main/java/com/baeldung/quarkus/liquibase/LiquibaseRecorder.java
diff --git a/quarkus-jandex/README.md b/quarkus-modules/quarkus-jandex/README.md
similarity index 100%
rename from quarkus-jandex/README.md
rename to quarkus-modules/quarkus-jandex/README.md
diff --git a/quarkus-jandex/hello-app/.dockerignore b/quarkus-modules/quarkus-jandex/hello-app/.dockerignore
similarity index 100%
rename from quarkus-jandex/hello-app/.dockerignore
rename to quarkus-modules/quarkus-jandex/hello-app/.dockerignore
diff --git a/quarkus-jandex/hello-app/.gitignore b/quarkus-modules/quarkus-jandex/hello-app/.gitignore
similarity index 100%
rename from quarkus-jandex/hello-app/.gitignore
rename to quarkus-modules/quarkus-jandex/hello-app/.gitignore
diff --git a/quarkus-jandex/hello-app/.mvn/wrapper/MavenWrapperDownloader.java b/quarkus-modules/quarkus-jandex/hello-app/.mvn/wrapper/MavenWrapperDownloader.java
similarity index 100%
rename from quarkus-jandex/hello-app/.mvn/wrapper/MavenWrapperDownloader.java
rename to quarkus-modules/quarkus-jandex/hello-app/.mvn/wrapper/MavenWrapperDownloader.java
diff --git a/quarkus-jandex/hello-app/.mvn/wrapper/maven-wrapper.properties b/quarkus-modules/quarkus-jandex/hello-app/.mvn/wrapper/maven-wrapper.properties
similarity index 100%
rename from quarkus-jandex/hello-app/.mvn/wrapper/maven-wrapper.properties
rename to quarkus-modules/quarkus-jandex/hello-app/.mvn/wrapper/maven-wrapper.properties
diff --git a/quarkus-jandex/hello-app/README.md b/quarkus-modules/quarkus-jandex/hello-app/README.md
similarity index 100%
rename from quarkus-jandex/hello-app/README.md
rename to quarkus-modules/quarkus-jandex/hello-app/README.md
diff --git a/docker-modules/docker-spring-boot-postgres/mvnw b/quarkus-modules/quarkus-jandex/hello-app/mvnw
old mode 100755
new mode 100644
similarity index 100%
rename from docker-modules/docker-spring-boot-postgres/mvnw
rename to quarkus-modules/quarkus-jandex/hello-app/mvnw
diff --git a/docker-modules/docker-spring-boot-postgres/mvnw.cmd b/quarkus-modules/quarkus-jandex/hello-app/mvnw.cmd
similarity index 100%
rename from docker-modules/docker-spring-boot-postgres/mvnw.cmd
rename to quarkus-modules/quarkus-jandex/hello-app/mvnw.cmd
diff --git a/quarkus-jandex/hello-app/pom.xml b/quarkus-modules/quarkus-jandex/hello-app/pom.xml
similarity index 100%
rename from quarkus-jandex/hello-app/pom.xml
rename to quarkus-modules/quarkus-jandex/hello-app/pom.xml
diff --git a/quarkus-jandex/hello-app/src/main/docker/Dockerfile.jvm b/quarkus-modules/quarkus-jandex/hello-app/src/main/docker/Dockerfile.jvm
similarity index 100%
rename from quarkus-jandex/hello-app/src/main/docker/Dockerfile.jvm
rename to quarkus-modules/quarkus-jandex/hello-app/src/main/docker/Dockerfile.jvm
diff --git a/quarkus-jandex/hello-app/src/main/docker/Dockerfile.legacy-jar b/quarkus-modules/quarkus-jandex/hello-app/src/main/docker/Dockerfile.legacy-jar
similarity index 100%
rename from quarkus-jandex/hello-app/src/main/docker/Dockerfile.legacy-jar
rename to quarkus-modules/quarkus-jandex/hello-app/src/main/docker/Dockerfile.legacy-jar
diff --git a/quarkus-jandex/hello-app/src/main/docker/Dockerfile.native b/quarkus-modules/quarkus-jandex/hello-app/src/main/docker/Dockerfile.native
similarity index 100%
rename from quarkus-jandex/hello-app/src/main/docker/Dockerfile.native
rename to quarkus-modules/quarkus-jandex/hello-app/src/main/docker/Dockerfile.native
diff --git a/quarkus-jandex/hello-app/src/main/docker/Dockerfile.native-distroless b/quarkus-modules/quarkus-jandex/hello-app/src/main/docker/Dockerfile.native-distroless
similarity index 100%
rename from quarkus-jandex/hello-app/src/main/docker/Dockerfile.native-distroless
rename to quarkus-modules/quarkus-jandex/hello-app/src/main/docker/Dockerfile.native-distroless
diff --git a/quarkus-jandex/hello-app/src/main/java/com/baeldung/quarkus/hello/HelloResource.java b/quarkus-modules/quarkus-jandex/hello-app/src/main/java/com/baeldung/quarkus/hello/HelloResource.java
similarity index 100%
rename from quarkus-jandex/hello-app/src/main/java/com/baeldung/quarkus/hello/HelloResource.java
rename to quarkus-modules/quarkus-jandex/hello-app/src/main/java/com/baeldung/quarkus/hello/HelloResource.java
diff --git a/quarkus-jandex/hello-app/src/main/resources/META-INF/resources/index.html b/quarkus-modules/quarkus-jandex/hello-app/src/main/resources/META-INF/resources/index.html
similarity index 100%
rename from quarkus-jandex/hello-app/src/main/resources/META-INF/resources/index.html
rename to quarkus-modules/quarkus-jandex/hello-app/src/main/resources/META-INF/resources/index.html
diff --git a/quarkus-jandex/hello-app/src/main/resources/application.properties b/quarkus-modules/quarkus-jandex/hello-app/src/main/resources/application.properties
similarity index 100%
rename from quarkus-jandex/hello-app/src/main/resources/application.properties
rename to quarkus-modules/quarkus-jandex/hello-app/src/main/resources/application.properties
diff --git a/quarkus-jandex/hello-sender-application-properties/pom.xml b/quarkus-modules/quarkus-jandex/hello-sender-application-properties/pom.xml
similarity index 100%
rename from quarkus-jandex/hello-sender-application-properties/pom.xml
rename to quarkus-modules/quarkus-jandex/hello-sender-application-properties/pom.xml
diff --git a/quarkus-jandex/hello-sender-application-properties/src/main/java/com/baeldung/quarkus/hello/sender/applicationproperties/ApplicationPropertiesHelloSender.java b/quarkus-modules/quarkus-jandex/hello-sender-application-properties/src/main/java/com/baeldung/quarkus/hello/sender/applicationproperties/ApplicationPropertiesHelloSender.java
similarity index 100%
rename from quarkus-jandex/hello-sender-application-properties/src/main/java/com/baeldung/quarkus/hello/sender/applicationproperties/ApplicationPropertiesHelloSender.java
rename to quarkus-modules/quarkus-jandex/hello-sender-application-properties/src/main/java/com/baeldung/quarkus/hello/sender/applicationproperties/ApplicationPropertiesHelloSender.java
diff --git a/quarkus-jandex/hello-sender-beans-xml/pom.xml b/quarkus-modules/quarkus-jandex/hello-sender-beans-xml/pom.xml
similarity index 100%
rename from quarkus-jandex/hello-sender-beans-xml/pom.xml
rename to quarkus-modules/quarkus-jandex/hello-sender-beans-xml/pom.xml
diff --git a/quarkus-jandex/hello-sender-beans-xml/src/main/java/com/baeldung/quarkus/hello/sender/beansxml/BeansXmlHelloSender.java b/quarkus-modules/quarkus-jandex/hello-sender-beans-xml/src/main/java/com/baeldung/quarkus/hello/sender/beansxml/BeansXmlHelloSender.java
similarity index 100%
rename from quarkus-jandex/hello-sender-beans-xml/src/main/java/com/baeldung/quarkus/hello/sender/beansxml/BeansXmlHelloSender.java
rename to quarkus-modules/quarkus-jandex/hello-sender-beans-xml/src/main/java/com/baeldung/quarkus/hello/sender/beansxml/BeansXmlHelloSender.java
diff --git a/quarkus-jandex/hello-sender-beans-xml/src/main/resources/META-INF/beans.xml b/quarkus-modules/quarkus-jandex/hello-sender-beans-xml/src/main/resources/META-INF/beans.xml
similarity index 100%
rename from quarkus-jandex/hello-sender-beans-xml/src/main/resources/META-INF/beans.xml
rename to quarkus-modules/quarkus-jandex/hello-sender-beans-xml/src/main/resources/META-INF/beans.xml
diff --git a/quarkus-jandex/hello-sender-maven-plugin/pom.xml b/quarkus-modules/quarkus-jandex/hello-sender-maven-plugin/pom.xml
similarity index 100%
rename from quarkus-jandex/hello-sender-maven-plugin/pom.xml
rename to quarkus-modules/quarkus-jandex/hello-sender-maven-plugin/pom.xml
diff --git a/quarkus-jandex/hello-sender-maven-plugin/src/main/java/com/baeldung/quarkus/hello/sender/mavenplugin/MavenPluginHelloSender.java b/quarkus-modules/quarkus-jandex/hello-sender-maven-plugin/src/main/java/com/baeldung/quarkus/hello/sender/mavenplugin/MavenPluginHelloSender.java
similarity index 100%
rename from quarkus-jandex/hello-sender-maven-plugin/src/main/java/com/baeldung/quarkus/hello/sender/mavenplugin/MavenPluginHelloSender.java
rename to quarkus-modules/quarkus-jandex/hello-sender-maven-plugin/src/main/java/com/baeldung/quarkus/hello/sender/mavenplugin/MavenPluginHelloSender.java
diff --git a/quarkus-jandex/hello-sender-undetected/pom.xml b/quarkus-modules/quarkus-jandex/hello-sender-undetected/pom.xml
similarity index 100%
rename from quarkus-jandex/hello-sender-undetected/pom.xml
rename to quarkus-modules/quarkus-jandex/hello-sender-undetected/pom.xml
diff --git a/quarkus-jandex/hello-sender-undetected/src/main/java/com/baeldung/quarkus/hello/sender/undetected/UndetectedHelloSender.java b/quarkus-modules/quarkus-jandex/hello-sender-undetected/src/main/java/com/baeldung/quarkus/hello/sender/undetected/UndetectedHelloSender.java
similarity index 100%
rename from quarkus-jandex/hello-sender-undetected/src/main/java/com/baeldung/quarkus/hello/sender/undetected/UndetectedHelloSender.java
rename to quarkus-modules/quarkus-jandex/hello-sender-undetected/src/main/java/com/baeldung/quarkus/hello/sender/undetected/UndetectedHelloSender.java
diff --git a/quarkus-jandex/hello-service/pom.xml b/quarkus-modules/quarkus-jandex/hello-service/pom.xml
similarity index 100%
rename from quarkus-jandex/hello-service/pom.xml
rename to quarkus-modules/quarkus-jandex/hello-service/pom.xml
diff --git a/quarkus-jandex/hello-service/src/main/java/com/baeldung/quarkus/hello/service/HelloRetrieving.java b/quarkus-modules/quarkus-jandex/hello-service/src/main/java/com/baeldung/quarkus/hello/service/HelloRetrieving.java
similarity index 100%
rename from quarkus-jandex/hello-service/src/main/java/com/baeldung/quarkus/hello/service/HelloRetrieving.java
rename to quarkus-modules/quarkus-jandex/hello-service/src/main/java/com/baeldung/quarkus/hello/service/HelloRetrieving.java
diff --git a/quarkus-jandex/hello-service/src/main/java/com/baeldung/quarkus/hello/service/HelloService.java b/quarkus-modules/quarkus-jandex/hello-service/src/main/java/com/baeldung/quarkus/hello/service/HelloService.java
similarity index 100%
rename from quarkus-jandex/hello-service/src/main/java/com/baeldung/quarkus/hello/service/HelloService.java
rename to quarkus-modules/quarkus-jandex/hello-service/src/main/java/com/baeldung/quarkus/hello/service/HelloService.java
diff --git a/quarkus-jandex/hello-service/src/main/resources/META-INF/beans.xml b/quarkus-modules/quarkus-jandex/hello-service/src/main/resources/META-INF/beans.xml
similarity index 100%
rename from quarkus-jandex/hello-service/src/main/resources/META-INF/beans.xml
rename to quarkus-modules/quarkus-jandex/hello-service/src/main/resources/META-INF/beans.xml
diff --git a/quarkus-jandex/pom.xml b/quarkus-modules/quarkus-jandex/pom.xml
similarity index 93%
rename from quarkus-jandex/pom.xml
rename to quarkus-modules/quarkus-jandex/pom.xml
index e3cdfa3835..a254716e42 100644
--- a/quarkus-jandex/pom.xml
+++ b/quarkus-modules/quarkus-jandex/pom.xml
@@ -8,6 +8,12 @@
1.0.0-SNAPSHOT
pom
+
+ com.baeldung
+ quarkus-modules
+ 1.0.0-SNAPSHOT
+
+
hello-service
hello-sender-beans-xml
diff --git a/quarkus-vs-springboot/README.md b/quarkus-modules/quarkus-vs-springboot/README.md
similarity index 100%
rename from quarkus-vs-springboot/README.md
rename to quarkus-modules/quarkus-vs-springboot/README.md
diff --git a/quarkus-vs-springboot/cities.csv b/quarkus-modules/quarkus-vs-springboot/cities.csv
similarity index 100%
rename from quarkus-vs-springboot/cities.csv
rename to quarkus-modules/quarkus-vs-springboot/cities.csv
diff --git a/quarkus-vs-springboot/load_test.jmx b/quarkus-modules/quarkus-vs-springboot/load_test.jmx
similarity index 100%
rename from quarkus-vs-springboot/load_test.jmx
rename to quarkus-modules/quarkus-vs-springboot/load_test.jmx
diff --git a/quarkus-vs-springboot/pom.xml b/quarkus-modules/quarkus-vs-springboot/pom.xml
similarity index 93%
rename from quarkus-vs-springboot/pom.xml
rename to quarkus-modules/quarkus-vs-springboot/pom.xml
index 1726d076da..2e9d0b8a7f 100644
--- a/quarkus-vs-springboot/pom.xml
+++ b/quarkus-modules/quarkus-vs-springboot/pom.xml
@@ -9,8 +9,8 @@
pom
- parent-modules
com.baeldung
+ quarkus-modules
1.0.0-SNAPSHOT
diff --git a/quarkus-vs-springboot/quarkus-project/.mvn/wrapper/maven-wrapper.properties b/quarkus-modules/quarkus-vs-springboot/quarkus-project/.mvn/wrapper/maven-wrapper.properties
similarity index 100%
rename from quarkus-vs-springboot/quarkus-project/.mvn/wrapper/maven-wrapper.properties
rename to quarkus-modules/quarkus-vs-springboot/quarkus-project/.mvn/wrapper/maven-wrapper.properties
diff --git a/quarkus-vs-springboot/quarkus-project/build.sh b/quarkus-modules/quarkus-vs-springboot/quarkus-project/build.sh
old mode 100755
new mode 100644
similarity index 100%
rename from quarkus-vs-springboot/quarkus-project/build.sh
rename to quarkus-modules/quarkus-vs-springboot/quarkus-project/build.sh
diff --git a/quarkus-vs-springboot/quarkus-project/mvnw b/quarkus-modules/quarkus-vs-springboot/quarkus-project/mvnw
old mode 100755
new mode 100644
similarity index 100%
rename from quarkus-vs-springboot/quarkus-project/mvnw
rename to quarkus-modules/quarkus-vs-springboot/quarkus-project/mvnw
diff --git a/quarkus-vs-springboot/quarkus-project/mvnw.cmd b/quarkus-modules/quarkus-vs-springboot/quarkus-project/mvnw.cmd
similarity index 97%
rename from quarkus-vs-springboot/quarkus-project/mvnw.cmd
rename to quarkus-modules/quarkus-vs-springboot/quarkus-project/mvnw.cmd
index 23b7079a3d..8a15b7f311 100644
--- a/quarkus-vs-springboot/quarkus-project/mvnw.cmd
+++ b/quarkus-modules/quarkus-vs-springboot/quarkus-project/mvnw.cmd
@@ -1,188 +1,188 @@
-@REM ----------------------------------------------------------------------------
-@REM Licensed to the Apache Software Foundation (ASF) under one
-@REM or more contributor license agreements. See the NOTICE file
-@REM distributed with this work for additional information
-@REM regarding copyright ownership. The ASF licenses this file
-@REM to you under the Apache License, Version 2.0 (the
-@REM "License"); you may not use this file except in compliance
-@REM with the License. You may obtain a copy of the License at
-@REM
-@REM http://www.apache.org/licenses/LICENSE-2.0
-@REM
-@REM Unless required by applicable law or agreed to in writing,
-@REM software distributed under the License is distributed on an
-@REM "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
-@REM KIND, either express or implied. See the License for the
-@REM specific language governing permissions and limitations
-@REM under the License.
-@REM ----------------------------------------------------------------------------
-
-@REM ----------------------------------------------------------------------------
-@REM Maven Start Up Batch script
-@REM
-@REM Required ENV vars:
-@REM JAVA_HOME - location of a JDK home dir
-@REM
-@REM Optional ENV vars
-@REM M2_HOME - location of maven2's installed home dir
-@REM MAVEN_BATCH_ECHO - set to 'on' to enable the echoing of the batch commands
-@REM MAVEN_BATCH_PAUSE - set to 'on' to wait for a keystroke before ending
-@REM MAVEN_OPTS - parameters passed to the Java VM when running Maven
-@REM e.g. to debug Maven itself, use
-@REM set MAVEN_OPTS=-Xdebug -Xrunjdwp:transport=dt_socket,server=y,suspend=y,address=8000
-@REM MAVEN_SKIP_RC - flag to disable loading of mavenrc files
-@REM ----------------------------------------------------------------------------
-
-@REM Begin all REM lines with '@' in case MAVEN_BATCH_ECHO is 'on'
-@echo off
-@REM set title of command window
-title %0
-@REM enable echoing by setting MAVEN_BATCH_ECHO to 'on'
-@if "%MAVEN_BATCH_ECHO%" == "on" echo %MAVEN_BATCH_ECHO%
-
-@REM set %HOME% to equivalent of $HOME
-if "%HOME%" == "" (set "HOME=%HOMEDRIVE%%HOMEPATH%")
-
-@REM Execute a user defined script before this one
-if not "%MAVEN_SKIP_RC%" == "" goto skipRcPre
-@REM check for pre script, once with legacy .bat ending and once with .cmd ending
-if exist "%USERPROFILE%\mavenrc_pre.bat" call "%USERPROFILE%\mavenrc_pre.bat" %*
-if exist "%USERPROFILE%\mavenrc_pre.cmd" call "%USERPROFILE%\mavenrc_pre.cmd" %*
-:skipRcPre
-
-@setlocal
-
-set ERROR_CODE=0
-
-@REM To isolate internal variables from possible post scripts, we use another setlocal
-@setlocal
-
-@REM ==== START VALIDATION ====
-if not "%JAVA_HOME%" == "" goto OkJHome
-
-echo.
-echo Error: JAVA_HOME not found in your environment. >&2
-echo Please set the JAVA_HOME variable in your environment to match the >&2
-echo location of your Java installation. >&2
-echo.
-goto error
-
-:OkJHome
-if exist "%JAVA_HOME%\bin\java.exe" goto init
-
-echo.
-echo Error: JAVA_HOME is set to an invalid directory. >&2
-echo JAVA_HOME = "%JAVA_HOME%" >&2
-echo Please set the JAVA_HOME variable in your environment to match the >&2
-echo location of your Java installation. >&2
-echo.
-goto error
-
-@REM ==== END VALIDATION ====
-
-:init
-
-@REM Find the project base dir, i.e. the directory that contains the folder ".mvn".
-@REM Fallback to current working directory if not found.
-
-set MAVEN_PROJECTBASEDIR=%MAVEN_BASEDIR%
-IF NOT "%MAVEN_PROJECTBASEDIR%"=="" goto endDetectBaseDir
-
-set EXEC_DIR=%CD%
-set WDIR=%EXEC_DIR%
-:findBaseDir
-IF EXIST "%WDIR%"\.mvn goto baseDirFound
-cd ..
-IF "%WDIR%"=="%CD%" goto baseDirNotFound
-set WDIR=%CD%
-goto findBaseDir
-
-:baseDirFound
-set MAVEN_PROJECTBASEDIR=%WDIR%
-cd "%EXEC_DIR%"
-goto endDetectBaseDir
-
-:baseDirNotFound
-set MAVEN_PROJECTBASEDIR=%EXEC_DIR%
-cd "%EXEC_DIR%"
-
-:endDetectBaseDir
-
-IF NOT EXIST "%MAVEN_PROJECTBASEDIR%\.mvn\jvm.config" goto endReadAdditionalConfig
-
-@setlocal EnableExtensions EnableDelayedExpansion
-for /F "usebackq delims=" %%a in ("%MAVEN_PROJECTBASEDIR%\.mvn\jvm.config") do set JVM_CONFIG_MAVEN_PROPS=!JVM_CONFIG_MAVEN_PROPS! %%a
-@endlocal & set JVM_CONFIG_MAVEN_PROPS=%JVM_CONFIG_MAVEN_PROPS%
-
-:endReadAdditionalConfig
-
-SET MAVEN_JAVA_EXE="%JAVA_HOME%\bin\java.exe"
-set WRAPPER_JAR="%MAVEN_PROJECTBASEDIR%\.mvn\wrapper\maven-wrapper.jar"
-set WRAPPER_LAUNCHER=org.apache.maven.wrapper.MavenWrapperMain
-
-set DOWNLOAD_URL="https://repo.maven.apache.org/maven2/org/apache/maven/wrapper/maven-wrapper/3.1.0/maven-wrapper-3.1.0.jar"
-
-FOR /F "usebackq tokens=1,2 delims==" %%A IN ("%MAVEN_PROJECTBASEDIR%\.mvn\wrapper\maven-wrapper.properties") DO (
- IF "%%A"=="wrapperUrl" SET DOWNLOAD_URL=%%B
-)
-
-@REM Extension to allow automatically downloading the maven-wrapper.jar from Maven-central
-@REM This allows using the maven wrapper in projects that prohibit checking in binary data.
-if exist %WRAPPER_JAR% (
- if "%MVNW_VERBOSE%" == "true" (
- echo Found %WRAPPER_JAR%
- )
-) else (
- if not "%MVNW_REPOURL%" == "" (
- SET DOWNLOAD_URL="%MVNW_REPOURL%/org/apache/maven/wrapper/maven-wrapper/3.1.0/maven-wrapper-3.1.0.jar"
- )
- if "%MVNW_VERBOSE%" == "true" (
- echo Couldn't find %WRAPPER_JAR%, downloading it ...
- echo Downloading from: %DOWNLOAD_URL%
- )
-
- powershell -Command "&{"^
- "$webclient = new-object System.Net.WebClient;"^
- "if (-not ([string]::IsNullOrEmpty('%MVNW_USERNAME%') -and [string]::IsNullOrEmpty('%MVNW_PASSWORD%'))) {"^
- "$webclient.Credentials = new-object System.Net.NetworkCredential('%MVNW_USERNAME%', '%MVNW_PASSWORD%');"^
- "}"^
- "[Net.ServicePointManager]::SecurityProtocol = [Net.SecurityProtocolType]::Tls12; $webclient.DownloadFile('%DOWNLOAD_URL%', '%WRAPPER_JAR%')"^
- "}"
- if "%MVNW_VERBOSE%" == "true" (
- echo Finished downloading %WRAPPER_JAR%
- )
-)
-@REM End of extension
-
-@REM Provide a "standardized" way to retrieve the CLI args that will
-@REM work with both Windows and non-Windows executions.
-set MAVEN_CMD_LINE_ARGS=%*
-
-%MAVEN_JAVA_EXE% ^
- %JVM_CONFIG_MAVEN_PROPS% ^
- %MAVEN_OPTS% ^
- %MAVEN_DEBUG_OPTS% ^
- -classpath %WRAPPER_JAR% ^
- "-Dmaven.multiModuleProjectDirectory=%MAVEN_PROJECTBASEDIR%" ^
- %WRAPPER_LAUNCHER% %MAVEN_CONFIG% %*
-if ERRORLEVEL 1 goto error
-goto end
-
-:error
-set ERROR_CODE=1
-
-:end
-@endlocal & set ERROR_CODE=%ERROR_CODE%
-
-if not "%MAVEN_SKIP_RC%"=="" goto skipRcPost
-@REM check for post script, once with legacy .bat ending and once with .cmd ending
-if exist "%USERPROFILE%\mavenrc_post.bat" call "%USERPROFILE%\mavenrc_post.bat"
-if exist "%USERPROFILE%\mavenrc_post.cmd" call "%USERPROFILE%\mavenrc_post.cmd"
-:skipRcPost
-
-@REM pause the script if MAVEN_BATCH_PAUSE is set to 'on'
-if "%MAVEN_BATCH_PAUSE%"=="on" pause
-
-if "%MAVEN_TERMINATE_CMD%"=="on" exit %ERROR_CODE%
-
-cmd /C exit /B %ERROR_CODE%
+@REM ----------------------------------------------------------------------------
+@REM Licensed to the Apache Software Foundation (ASF) under one
+@REM or more contributor license agreements. See the NOTICE file
+@REM distributed with this work for additional information
+@REM regarding copyright ownership. The ASF licenses this file
+@REM to you under the Apache License, Version 2.0 (the
+@REM "License"); you may not use this file except in compliance
+@REM with the License. You may obtain a copy of the License at
+@REM
+@REM http://www.apache.org/licenses/LICENSE-2.0
+@REM
+@REM Unless required by applicable law or agreed to in writing,
+@REM software distributed under the License is distributed on an
+@REM "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+@REM KIND, either express or implied. See the License for the
+@REM specific language governing permissions and limitations
+@REM under the License.
+@REM ----------------------------------------------------------------------------
+
+@REM ----------------------------------------------------------------------------
+@REM Maven Start Up Batch script
+@REM
+@REM Required ENV vars:
+@REM JAVA_HOME - location of a JDK home dir
+@REM
+@REM Optional ENV vars
+@REM M2_HOME - location of maven2's installed home dir
+@REM MAVEN_BATCH_ECHO - set to 'on' to enable the echoing of the batch commands
+@REM MAVEN_BATCH_PAUSE - set to 'on' to wait for a keystroke before ending
+@REM MAVEN_OPTS - parameters passed to the Java VM when running Maven
+@REM e.g. to debug Maven itself, use
+@REM set MAVEN_OPTS=-Xdebug -Xrunjdwp:transport=dt_socket,server=y,suspend=y,address=8000
+@REM MAVEN_SKIP_RC - flag to disable loading of mavenrc files
+@REM ----------------------------------------------------------------------------
+
+@REM Begin all REM lines with '@' in case MAVEN_BATCH_ECHO is 'on'
+@echo off
+@REM set title of command window
+title %0
+@REM enable echoing by setting MAVEN_BATCH_ECHO to 'on'
+@if "%MAVEN_BATCH_ECHO%" == "on" echo %MAVEN_BATCH_ECHO%
+
+@REM set %HOME% to equivalent of $HOME
+if "%HOME%" == "" (set "HOME=%HOMEDRIVE%%HOMEPATH%")
+
+@REM Execute a user defined script before this one
+if not "%MAVEN_SKIP_RC%" == "" goto skipRcPre
+@REM check for pre script, once with legacy .bat ending and once with .cmd ending
+if exist "%USERPROFILE%\mavenrc_pre.bat" call "%USERPROFILE%\mavenrc_pre.bat" %*
+if exist "%USERPROFILE%\mavenrc_pre.cmd" call "%USERPROFILE%\mavenrc_pre.cmd" %*
+:skipRcPre
+
+@setlocal
+
+set ERROR_CODE=0
+
+@REM To isolate internal variables from possible post scripts, we use another setlocal
+@setlocal
+
+@REM ==== START VALIDATION ====
+if not "%JAVA_HOME%" == "" goto OkJHome
+
+echo.
+echo Error: JAVA_HOME not found in your environment. >&2
+echo Please set the JAVA_HOME variable in your environment to match the >&2
+echo location of your Java installation. >&2
+echo.
+goto error
+
+:OkJHome
+if exist "%JAVA_HOME%\bin\java.exe" goto init
+
+echo.
+echo Error: JAVA_HOME is set to an invalid directory. >&2
+echo JAVA_HOME = "%JAVA_HOME%" >&2
+echo Please set the JAVA_HOME variable in your environment to match the >&2
+echo location of your Java installation. >&2
+echo.
+goto error
+
+@REM ==== END VALIDATION ====
+
+:init
+
+@REM Find the project base dir, i.e. the directory that contains the folder ".mvn".
+@REM Fallback to current working directory if not found.
+
+set MAVEN_PROJECTBASEDIR=%MAVEN_BASEDIR%
+IF NOT "%MAVEN_PROJECTBASEDIR%"=="" goto endDetectBaseDir
+
+set EXEC_DIR=%CD%
+set WDIR=%EXEC_DIR%
+:findBaseDir
+IF EXIST "%WDIR%"\.mvn goto baseDirFound
+cd ..
+IF "%WDIR%"=="%CD%" goto baseDirNotFound
+set WDIR=%CD%
+goto findBaseDir
+
+:baseDirFound
+set MAVEN_PROJECTBASEDIR=%WDIR%
+cd "%EXEC_DIR%"
+goto endDetectBaseDir
+
+:baseDirNotFound
+set MAVEN_PROJECTBASEDIR=%EXEC_DIR%
+cd "%EXEC_DIR%"
+
+:endDetectBaseDir
+
+IF NOT EXIST "%MAVEN_PROJECTBASEDIR%\.mvn\jvm.config" goto endReadAdditionalConfig
+
+@setlocal EnableExtensions EnableDelayedExpansion
+for /F "usebackq delims=" %%a in ("%MAVEN_PROJECTBASEDIR%\.mvn\jvm.config") do set JVM_CONFIG_MAVEN_PROPS=!JVM_CONFIG_MAVEN_PROPS! %%a
+@endlocal & set JVM_CONFIG_MAVEN_PROPS=%JVM_CONFIG_MAVEN_PROPS%
+
+:endReadAdditionalConfig
+
+SET MAVEN_JAVA_EXE="%JAVA_HOME%\bin\java.exe"
+set WRAPPER_JAR="%MAVEN_PROJECTBASEDIR%\.mvn\wrapper\maven-wrapper.jar"
+set WRAPPER_LAUNCHER=org.apache.maven.wrapper.MavenWrapperMain
+
+set DOWNLOAD_URL="https://repo.maven.apache.org/maven2/org/apache/maven/wrapper/maven-wrapper/3.1.0/maven-wrapper-3.1.0.jar"
+
+FOR /F "usebackq tokens=1,2 delims==" %%A IN ("%MAVEN_PROJECTBASEDIR%\.mvn\wrapper\maven-wrapper.properties") DO (
+ IF "%%A"=="wrapperUrl" SET DOWNLOAD_URL=%%B
+)
+
+@REM Extension to allow automatically downloading the maven-wrapper.jar from Maven-central
+@REM This allows using the maven wrapper in projects that prohibit checking in binary data.
+if exist %WRAPPER_JAR% (
+ if "%MVNW_VERBOSE%" == "true" (
+ echo Found %WRAPPER_JAR%
+ )
+) else (
+ if not "%MVNW_REPOURL%" == "" (
+ SET DOWNLOAD_URL="%MVNW_REPOURL%/org/apache/maven/wrapper/maven-wrapper/3.1.0/maven-wrapper-3.1.0.jar"
+ )
+ if "%MVNW_VERBOSE%" == "true" (
+ echo Couldn't find %WRAPPER_JAR%, downloading it ...
+ echo Downloading from: %DOWNLOAD_URL%
+ )
+
+ powershell -Command "&{"^
+ "$webclient = new-object System.Net.WebClient;"^
+ "if (-not ([string]::IsNullOrEmpty('%MVNW_USERNAME%') -and [string]::IsNullOrEmpty('%MVNW_PASSWORD%'))) {"^
+ "$webclient.Credentials = new-object System.Net.NetworkCredential('%MVNW_USERNAME%', '%MVNW_PASSWORD%');"^
+ "}"^
+ "[Net.ServicePointManager]::SecurityProtocol = [Net.SecurityProtocolType]::Tls12; $webclient.DownloadFile('%DOWNLOAD_URL%', '%WRAPPER_JAR%')"^
+ "}"
+ if "%MVNW_VERBOSE%" == "true" (
+ echo Finished downloading %WRAPPER_JAR%
+ )
+)
+@REM End of extension
+
+@REM Provide a "standardized" way to retrieve the CLI args that will
+@REM work with both Windows and non-Windows executions.
+set MAVEN_CMD_LINE_ARGS=%*
+
+%MAVEN_JAVA_EXE% ^
+ %JVM_CONFIG_MAVEN_PROPS% ^
+ %MAVEN_OPTS% ^
+ %MAVEN_DEBUG_OPTS% ^
+ -classpath %WRAPPER_JAR% ^
+ "-Dmaven.multiModuleProjectDirectory=%MAVEN_PROJECTBASEDIR%" ^
+ %WRAPPER_LAUNCHER% %MAVEN_CONFIG% %*
+if ERRORLEVEL 1 goto error
+goto end
+
+:error
+set ERROR_CODE=1
+
+:end
+@endlocal & set ERROR_CODE=%ERROR_CODE%
+
+if not "%MAVEN_SKIP_RC%"=="" goto skipRcPost
+@REM check for post script, once with legacy .bat ending and once with .cmd ending
+if exist "%USERPROFILE%\mavenrc_post.bat" call "%USERPROFILE%\mavenrc_post.bat"
+if exist "%USERPROFILE%\mavenrc_post.cmd" call "%USERPROFILE%\mavenrc_post.cmd"
+:skipRcPost
+
+@REM pause the script if MAVEN_BATCH_PAUSE is set to 'on'
+if "%MAVEN_BATCH_PAUSE%"=="on" pause
+
+if "%MAVEN_TERMINATE_CMD%"=="on" exit %ERROR_CODE%
+
+cmd /C exit /B %ERROR_CODE%
diff --git a/quarkus-vs-springboot/quarkus-project/pom.xml b/quarkus-modules/quarkus-vs-springboot/quarkus-project/pom.xml
similarity index 100%
rename from quarkus-vs-springboot/quarkus-project/pom.xml
rename to quarkus-modules/quarkus-vs-springboot/quarkus-project/pom.xml
diff --git a/quarkus-vs-springboot/quarkus-project/src/main/docker/Dockerfile.jvm b/quarkus-modules/quarkus-vs-springboot/quarkus-project/src/main/docker/Dockerfile.jvm
similarity index 100%
rename from quarkus-vs-springboot/quarkus-project/src/main/docker/Dockerfile.jvm
rename to quarkus-modules/quarkus-vs-springboot/quarkus-project/src/main/docker/Dockerfile.jvm
diff --git a/quarkus-vs-springboot/quarkus-project/src/main/docker/Dockerfile.legacy-jar b/quarkus-modules/quarkus-vs-springboot/quarkus-project/src/main/docker/Dockerfile.legacy-jar
similarity index 100%
rename from quarkus-vs-springboot/quarkus-project/src/main/docker/Dockerfile.legacy-jar
rename to quarkus-modules/quarkus-vs-springboot/quarkus-project/src/main/docker/Dockerfile.legacy-jar
diff --git a/quarkus-vs-springboot/quarkus-project/src/main/docker/Dockerfile.native b/quarkus-modules/quarkus-vs-springboot/quarkus-project/src/main/docker/Dockerfile.native
similarity index 100%
rename from quarkus-vs-springboot/quarkus-project/src/main/docker/Dockerfile.native
rename to quarkus-modules/quarkus-vs-springboot/quarkus-project/src/main/docker/Dockerfile.native
diff --git a/quarkus-vs-springboot/quarkus-project/src/main/docker/Dockerfile.native-distroless b/quarkus-modules/quarkus-vs-springboot/quarkus-project/src/main/docker/Dockerfile.native-distroless
similarity index 100%
rename from quarkus-vs-springboot/quarkus-project/src/main/docker/Dockerfile.native-distroless
rename to quarkus-modules/quarkus-vs-springboot/quarkus-project/src/main/docker/Dockerfile.native-distroless
diff --git a/quarkus-vs-springboot/quarkus-project/src/main/docker/quarkus.yml b/quarkus-modules/quarkus-vs-springboot/quarkus-project/src/main/docker/quarkus.yml
similarity index 100%
rename from quarkus-vs-springboot/quarkus-project/src/main/docker/quarkus.yml
rename to quarkus-modules/quarkus-vs-springboot/quarkus-project/src/main/docker/quarkus.yml
diff --git a/quarkus-vs-springboot/quarkus-project/src/main/java/com/baeldung/quarkus_project/ReactiveGreetingResource.java b/quarkus-modules/quarkus-vs-springboot/quarkus-project/src/main/java/com/baeldung/quarkus_project/ReactiveGreetingResource.java
similarity index 100%
rename from quarkus-vs-springboot/quarkus-project/src/main/java/com/baeldung/quarkus_project/ReactiveGreetingResource.java
rename to quarkus-modules/quarkus-vs-springboot/quarkus-project/src/main/java/com/baeldung/quarkus_project/ReactiveGreetingResource.java
diff --git a/quarkus-vs-springboot/quarkus-project/src/main/java/com/baeldung/quarkus_project/ZipCode.java b/quarkus-modules/quarkus-vs-springboot/quarkus-project/src/main/java/com/baeldung/quarkus_project/ZipCode.java
similarity index 100%
rename from quarkus-vs-springboot/quarkus-project/src/main/java/com/baeldung/quarkus_project/ZipCode.java
rename to quarkus-modules/quarkus-vs-springboot/quarkus-project/src/main/java/com/baeldung/quarkus_project/ZipCode.java
diff --git a/quarkus-vs-springboot/quarkus-project/src/main/java/com/baeldung/quarkus_project/ZipCodeRepo.java b/quarkus-modules/quarkus-vs-springboot/quarkus-project/src/main/java/com/baeldung/quarkus_project/ZipCodeRepo.java
similarity index 100%
rename from quarkus-vs-springboot/quarkus-project/src/main/java/com/baeldung/quarkus_project/ZipCodeRepo.java
rename to quarkus-modules/quarkus-vs-springboot/quarkus-project/src/main/java/com/baeldung/quarkus_project/ZipCodeRepo.java
diff --git a/quarkus-vs-springboot/quarkus-project/src/main/java/com/baeldung/quarkus_project/ZipCodeResource.java b/quarkus-modules/quarkus-vs-springboot/quarkus-project/src/main/java/com/baeldung/quarkus_project/ZipCodeResource.java
similarity index 100%
rename from quarkus-vs-springboot/quarkus-project/src/main/java/com/baeldung/quarkus_project/ZipCodeResource.java
rename to quarkus-modules/quarkus-vs-springboot/quarkus-project/src/main/java/com/baeldung/quarkus_project/ZipCodeResource.java
diff --git a/quarkus-vs-springboot/quarkus-project/src/main/resources/application.properties b/quarkus-modules/quarkus-vs-springboot/quarkus-project/src/main/resources/application.properties
similarity index 100%
rename from quarkus-vs-springboot/quarkus-project/src/main/resources/application.properties
rename to quarkus-modules/quarkus-vs-springboot/quarkus-project/src/main/resources/application.properties
diff --git a/quarkus-vs-springboot/quarkus-project/src/test/java/com/baeldung/quarkus_project/NativeGreetingResourceIT.java b/quarkus-modules/quarkus-vs-springboot/quarkus-project/src/test/java/com/baeldung/quarkus_project/NativeGreetingResourceIT.java
similarity index 100%
rename from quarkus-vs-springboot/quarkus-project/src/test/java/com/baeldung/quarkus_project/NativeGreetingResourceIT.java
rename to quarkus-modules/quarkus-vs-springboot/quarkus-project/src/test/java/com/baeldung/quarkus_project/NativeGreetingResourceIT.java
diff --git a/quarkus-vs-springboot/quarkus-project/start_app.sh b/quarkus-modules/quarkus-vs-springboot/quarkus-project/start_app.sh
old mode 100755
new mode 100644
similarity index 100%
rename from quarkus-vs-springboot/quarkus-project/start_app.sh
rename to quarkus-modules/quarkus-vs-springboot/quarkus-project/start_app.sh
diff --git a/quarkus-vs-springboot/quarkus-project/start_jvm.sh b/quarkus-modules/quarkus-vs-springboot/quarkus-project/start_jvm.sh
old mode 100755
new mode 100644
similarity index 100%
rename from quarkus-vs-springboot/quarkus-project/start_jvm.sh
rename to quarkus-modules/quarkus-vs-springboot/quarkus-project/start_jvm.sh
diff --git a/quarkus-vs-springboot/run_test.sh b/quarkus-modules/quarkus-vs-springboot/run_test.sh
old mode 100755
new mode 100644
similarity index 100%
rename from quarkus-vs-springboot/run_test.sh
rename to quarkus-modules/quarkus-vs-springboot/run_test.sh
diff --git a/quarkus-vs-springboot/spring-project/.mvn/wrapper/maven-wrapper.properties b/quarkus-modules/quarkus-vs-springboot/spring-project/.mvn/wrapper/maven-wrapper.properties
similarity index 100%
rename from quarkus-vs-springboot/spring-project/.mvn/wrapper/maven-wrapper.properties
rename to quarkus-modules/quarkus-vs-springboot/spring-project/.mvn/wrapper/maven-wrapper.properties
diff --git a/quarkus-vs-springboot/spring-project/build_jvm_docker.sh b/quarkus-modules/quarkus-vs-springboot/spring-project/build_jvm_docker.sh
old mode 100755
new mode 100644
similarity index 100%
rename from quarkus-vs-springboot/spring-project/build_jvm_docker.sh
rename to quarkus-modules/quarkus-vs-springboot/spring-project/build_jvm_docker.sh
diff --git a/quarkus-vs-springboot/spring-project/mvnw b/quarkus-modules/quarkus-vs-springboot/spring-project/mvnw
old mode 100755
new mode 100644
similarity index 100%
rename from quarkus-vs-springboot/spring-project/mvnw
rename to quarkus-modules/quarkus-vs-springboot/spring-project/mvnw
diff --git a/quarkus-vs-springboot/spring-project/mvnw.cmd b/quarkus-modules/quarkus-vs-springboot/spring-project/mvnw.cmd
similarity index 97%
rename from quarkus-vs-springboot/spring-project/mvnw.cmd
rename to quarkus-modules/quarkus-vs-springboot/spring-project/mvnw.cmd
index 23b7079a3d..8a15b7f311 100644
--- a/quarkus-vs-springboot/spring-project/mvnw.cmd
+++ b/quarkus-modules/quarkus-vs-springboot/spring-project/mvnw.cmd
@@ -1,188 +1,188 @@
-@REM ----------------------------------------------------------------------------
-@REM Licensed to the Apache Software Foundation (ASF) under one
-@REM or more contributor license agreements. See the NOTICE file
-@REM distributed with this work for additional information
-@REM regarding copyright ownership. The ASF licenses this file
-@REM to you under the Apache License, Version 2.0 (the
-@REM "License"); you may not use this file except in compliance
-@REM with the License. You may obtain a copy of the License at
-@REM
-@REM http://www.apache.org/licenses/LICENSE-2.0
-@REM
-@REM Unless required by applicable law or agreed to in writing,
-@REM software distributed under the License is distributed on an
-@REM "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
-@REM KIND, either express or implied. See the License for the
-@REM specific language governing permissions and limitations
-@REM under the License.
-@REM ----------------------------------------------------------------------------
-
-@REM ----------------------------------------------------------------------------
-@REM Maven Start Up Batch script
-@REM
-@REM Required ENV vars:
-@REM JAVA_HOME - location of a JDK home dir
-@REM
-@REM Optional ENV vars
-@REM M2_HOME - location of maven2's installed home dir
-@REM MAVEN_BATCH_ECHO - set to 'on' to enable the echoing of the batch commands
-@REM MAVEN_BATCH_PAUSE - set to 'on' to wait for a keystroke before ending
-@REM MAVEN_OPTS - parameters passed to the Java VM when running Maven
-@REM e.g. to debug Maven itself, use
-@REM set MAVEN_OPTS=-Xdebug -Xrunjdwp:transport=dt_socket,server=y,suspend=y,address=8000
-@REM MAVEN_SKIP_RC - flag to disable loading of mavenrc files
-@REM ----------------------------------------------------------------------------
-
-@REM Begin all REM lines with '@' in case MAVEN_BATCH_ECHO is 'on'
-@echo off
-@REM set title of command window
-title %0
-@REM enable echoing by setting MAVEN_BATCH_ECHO to 'on'
-@if "%MAVEN_BATCH_ECHO%" == "on" echo %MAVEN_BATCH_ECHO%
-
-@REM set %HOME% to equivalent of $HOME
-if "%HOME%" == "" (set "HOME=%HOMEDRIVE%%HOMEPATH%")
-
-@REM Execute a user defined script before this one
-if not "%MAVEN_SKIP_RC%" == "" goto skipRcPre
-@REM check for pre script, once with legacy .bat ending and once with .cmd ending
-if exist "%USERPROFILE%\mavenrc_pre.bat" call "%USERPROFILE%\mavenrc_pre.bat" %*
-if exist "%USERPROFILE%\mavenrc_pre.cmd" call "%USERPROFILE%\mavenrc_pre.cmd" %*
-:skipRcPre
-
-@setlocal
-
-set ERROR_CODE=0
-
-@REM To isolate internal variables from possible post scripts, we use another setlocal
-@setlocal
-
-@REM ==== START VALIDATION ====
-if not "%JAVA_HOME%" == "" goto OkJHome
-
-echo.
-echo Error: JAVA_HOME not found in your environment. >&2
-echo Please set the JAVA_HOME variable in your environment to match the >&2
-echo location of your Java installation. >&2
-echo.
-goto error
-
-:OkJHome
-if exist "%JAVA_HOME%\bin\java.exe" goto init
-
-echo.
-echo Error: JAVA_HOME is set to an invalid directory. >&2
-echo JAVA_HOME = "%JAVA_HOME%" >&2
-echo Please set the JAVA_HOME variable in your environment to match the >&2
-echo location of your Java installation. >&2
-echo.
-goto error
-
-@REM ==== END VALIDATION ====
-
-:init
-
-@REM Find the project base dir, i.e. the directory that contains the folder ".mvn".
-@REM Fallback to current working directory if not found.
-
-set MAVEN_PROJECTBASEDIR=%MAVEN_BASEDIR%
-IF NOT "%MAVEN_PROJECTBASEDIR%"=="" goto endDetectBaseDir
-
-set EXEC_DIR=%CD%
-set WDIR=%EXEC_DIR%
-:findBaseDir
-IF EXIST "%WDIR%"\.mvn goto baseDirFound
-cd ..
-IF "%WDIR%"=="%CD%" goto baseDirNotFound
-set WDIR=%CD%
-goto findBaseDir
-
-:baseDirFound
-set MAVEN_PROJECTBASEDIR=%WDIR%
-cd "%EXEC_DIR%"
-goto endDetectBaseDir
-
-:baseDirNotFound
-set MAVEN_PROJECTBASEDIR=%EXEC_DIR%
-cd "%EXEC_DIR%"
-
-:endDetectBaseDir
-
-IF NOT EXIST "%MAVEN_PROJECTBASEDIR%\.mvn\jvm.config" goto endReadAdditionalConfig
-
-@setlocal EnableExtensions EnableDelayedExpansion
-for /F "usebackq delims=" %%a in ("%MAVEN_PROJECTBASEDIR%\.mvn\jvm.config") do set JVM_CONFIG_MAVEN_PROPS=!JVM_CONFIG_MAVEN_PROPS! %%a
-@endlocal & set JVM_CONFIG_MAVEN_PROPS=%JVM_CONFIG_MAVEN_PROPS%
-
-:endReadAdditionalConfig
-
-SET MAVEN_JAVA_EXE="%JAVA_HOME%\bin\java.exe"
-set WRAPPER_JAR="%MAVEN_PROJECTBASEDIR%\.mvn\wrapper\maven-wrapper.jar"
-set WRAPPER_LAUNCHER=org.apache.maven.wrapper.MavenWrapperMain
-
-set DOWNLOAD_URL="https://repo.maven.apache.org/maven2/org/apache/maven/wrapper/maven-wrapper/3.1.0/maven-wrapper-3.1.0.jar"
-
-FOR /F "usebackq tokens=1,2 delims==" %%A IN ("%MAVEN_PROJECTBASEDIR%\.mvn\wrapper\maven-wrapper.properties") DO (
- IF "%%A"=="wrapperUrl" SET DOWNLOAD_URL=%%B
-)
-
-@REM Extension to allow automatically downloading the maven-wrapper.jar from Maven-central
-@REM This allows using the maven wrapper in projects that prohibit checking in binary data.
-if exist %WRAPPER_JAR% (
- if "%MVNW_VERBOSE%" == "true" (
- echo Found %WRAPPER_JAR%
- )
-) else (
- if not "%MVNW_REPOURL%" == "" (
- SET DOWNLOAD_URL="%MVNW_REPOURL%/org/apache/maven/wrapper/maven-wrapper/3.1.0/maven-wrapper-3.1.0.jar"
- )
- if "%MVNW_VERBOSE%" == "true" (
- echo Couldn't find %WRAPPER_JAR%, downloading it ...
- echo Downloading from: %DOWNLOAD_URL%
- )
-
- powershell -Command "&{"^
- "$webclient = new-object System.Net.WebClient;"^
- "if (-not ([string]::IsNullOrEmpty('%MVNW_USERNAME%') -and [string]::IsNullOrEmpty('%MVNW_PASSWORD%'))) {"^
- "$webclient.Credentials = new-object System.Net.NetworkCredential('%MVNW_USERNAME%', '%MVNW_PASSWORD%');"^
- "}"^
- "[Net.ServicePointManager]::SecurityProtocol = [Net.SecurityProtocolType]::Tls12; $webclient.DownloadFile('%DOWNLOAD_URL%', '%WRAPPER_JAR%')"^
- "}"
- if "%MVNW_VERBOSE%" == "true" (
- echo Finished downloading %WRAPPER_JAR%
- )
-)
-@REM End of extension
-
-@REM Provide a "standardized" way to retrieve the CLI args that will
-@REM work with both Windows and non-Windows executions.
-set MAVEN_CMD_LINE_ARGS=%*
-
-%MAVEN_JAVA_EXE% ^
- %JVM_CONFIG_MAVEN_PROPS% ^
- %MAVEN_OPTS% ^
- %MAVEN_DEBUG_OPTS% ^
- -classpath %WRAPPER_JAR% ^
- "-Dmaven.multiModuleProjectDirectory=%MAVEN_PROJECTBASEDIR%" ^
- %WRAPPER_LAUNCHER% %MAVEN_CONFIG% %*
-if ERRORLEVEL 1 goto error
-goto end
-
-:error
-set ERROR_CODE=1
-
-:end
-@endlocal & set ERROR_CODE=%ERROR_CODE%
-
-if not "%MAVEN_SKIP_RC%"=="" goto skipRcPost
-@REM check for post script, once with legacy .bat ending and once with .cmd ending
-if exist "%USERPROFILE%\mavenrc_post.bat" call "%USERPROFILE%\mavenrc_post.bat"
-if exist "%USERPROFILE%\mavenrc_post.cmd" call "%USERPROFILE%\mavenrc_post.cmd"
-:skipRcPost
-
-@REM pause the script if MAVEN_BATCH_PAUSE is set to 'on'
-if "%MAVEN_BATCH_PAUSE%"=="on" pause
-
-if "%MAVEN_TERMINATE_CMD%"=="on" exit %ERROR_CODE%
-
-cmd /C exit /B %ERROR_CODE%
+@REM ----------------------------------------------------------------------------
+@REM Licensed to the Apache Software Foundation (ASF) under one
+@REM or more contributor license agreements. See the NOTICE file
+@REM distributed with this work for additional information
+@REM regarding copyright ownership. The ASF licenses this file
+@REM to you under the Apache License, Version 2.0 (the
+@REM "License"); you may not use this file except in compliance
+@REM with the License. You may obtain a copy of the License at
+@REM
+@REM http://www.apache.org/licenses/LICENSE-2.0
+@REM
+@REM Unless required by applicable law or agreed to in writing,
+@REM software distributed under the License is distributed on an
+@REM "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+@REM KIND, either express or implied. See the License for the
+@REM specific language governing permissions and limitations
+@REM under the License.
+@REM ----------------------------------------------------------------------------
+
+@REM ----------------------------------------------------------------------------
+@REM Maven Start Up Batch script
+@REM
+@REM Required ENV vars:
+@REM JAVA_HOME - location of a JDK home dir
+@REM
+@REM Optional ENV vars
+@REM M2_HOME - location of maven2's installed home dir
+@REM MAVEN_BATCH_ECHO - set to 'on' to enable the echoing of the batch commands
+@REM MAVEN_BATCH_PAUSE - set to 'on' to wait for a keystroke before ending
+@REM MAVEN_OPTS - parameters passed to the Java VM when running Maven
+@REM e.g. to debug Maven itself, use
+@REM set MAVEN_OPTS=-Xdebug -Xrunjdwp:transport=dt_socket,server=y,suspend=y,address=8000
+@REM MAVEN_SKIP_RC - flag to disable loading of mavenrc files
+@REM ----------------------------------------------------------------------------
+
+@REM Begin all REM lines with '@' in case MAVEN_BATCH_ECHO is 'on'
+@echo off
+@REM set title of command window
+title %0
+@REM enable echoing by setting MAVEN_BATCH_ECHO to 'on'
+@if "%MAVEN_BATCH_ECHO%" == "on" echo %MAVEN_BATCH_ECHO%
+
+@REM set %HOME% to equivalent of $HOME
+if "%HOME%" == "" (set "HOME=%HOMEDRIVE%%HOMEPATH%")
+
+@REM Execute a user defined script before this one
+if not "%MAVEN_SKIP_RC%" == "" goto skipRcPre
+@REM check for pre script, once with legacy .bat ending and once with .cmd ending
+if exist "%USERPROFILE%\mavenrc_pre.bat" call "%USERPROFILE%\mavenrc_pre.bat" %*
+if exist "%USERPROFILE%\mavenrc_pre.cmd" call "%USERPROFILE%\mavenrc_pre.cmd" %*
+:skipRcPre
+
+@setlocal
+
+set ERROR_CODE=0
+
+@REM To isolate internal variables from possible post scripts, we use another setlocal
+@setlocal
+
+@REM ==== START VALIDATION ====
+if not "%JAVA_HOME%" == "" goto OkJHome
+
+echo.
+echo Error: JAVA_HOME not found in your environment. >&2
+echo Please set the JAVA_HOME variable in your environment to match the >&2
+echo location of your Java installation. >&2
+echo.
+goto error
+
+:OkJHome
+if exist "%JAVA_HOME%\bin\java.exe" goto init
+
+echo.
+echo Error: JAVA_HOME is set to an invalid directory. >&2
+echo JAVA_HOME = "%JAVA_HOME%" >&2
+echo Please set the JAVA_HOME variable in your environment to match the >&2
+echo location of your Java installation. >&2
+echo.
+goto error
+
+@REM ==== END VALIDATION ====
+
+:init
+
+@REM Find the project base dir, i.e. the directory that contains the folder ".mvn".
+@REM Fallback to current working directory if not found.
+
+set MAVEN_PROJECTBASEDIR=%MAVEN_BASEDIR%
+IF NOT "%MAVEN_PROJECTBASEDIR%"=="" goto endDetectBaseDir
+
+set EXEC_DIR=%CD%
+set WDIR=%EXEC_DIR%
+:findBaseDir
+IF EXIST "%WDIR%"\.mvn goto baseDirFound
+cd ..
+IF "%WDIR%"=="%CD%" goto baseDirNotFound
+set WDIR=%CD%
+goto findBaseDir
+
+:baseDirFound
+set MAVEN_PROJECTBASEDIR=%WDIR%
+cd "%EXEC_DIR%"
+goto endDetectBaseDir
+
+:baseDirNotFound
+set MAVEN_PROJECTBASEDIR=%EXEC_DIR%
+cd "%EXEC_DIR%"
+
+:endDetectBaseDir
+
+IF NOT EXIST "%MAVEN_PROJECTBASEDIR%\.mvn\jvm.config" goto endReadAdditionalConfig
+
+@setlocal EnableExtensions EnableDelayedExpansion
+for /F "usebackq delims=" %%a in ("%MAVEN_PROJECTBASEDIR%\.mvn\jvm.config") do set JVM_CONFIG_MAVEN_PROPS=!JVM_CONFIG_MAVEN_PROPS! %%a
+@endlocal & set JVM_CONFIG_MAVEN_PROPS=%JVM_CONFIG_MAVEN_PROPS%
+
+:endReadAdditionalConfig
+
+SET MAVEN_JAVA_EXE="%JAVA_HOME%\bin\java.exe"
+set WRAPPER_JAR="%MAVEN_PROJECTBASEDIR%\.mvn\wrapper\maven-wrapper.jar"
+set WRAPPER_LAUNCHER=org.apache.maven.wrapper.MavenWrapperMain
+
+set DOWNLOAD_URL="https://repo.maven.apache.org/maven2/org/apache/maven/wrapper/maven-wrapper/3.1.0/maven-wrapper-3.1.0.jar"
+
+FOR /F "usebackq tokens=1,2 delims==" %%A IN ("%MAVEN_PROJECTBASEDIR%\.mvn\wrapper\maven-wrapper.properties") DO (
+ IF "%%A"=="wrapperUrl" SET DOWNLOAD_URL=%%B
+)
+
+@REM Extension to allow automatically downloading the maven-wrapper.jar from Maven-central
+@REM This allows using the maven wrapper in projects that prohibit checking in binary data.
+if exist %WRAPPER_JAR% (
+ if "%MVNW_VERBOSE%" == "true" (
+ echo Found %WRAPPER_JAR%
+ )
+) else (
+ if not "%MVNW_REPOURL%" == "" (
+ SET DOWNLOAD_URL="%MVNW_REPOURL%/org/apache/maven/wrapper/maven-wrapper/3.1.0/maven-wrapper-3.1.0.jar"
+ )
+ if "%MVNW_VERBOSE%" == "true" (
+ echo Couldn't find %WRAPPER_JAR%, downloading it ...
+ echo Downloading from: %DOWNLOAD_URL%
+ )
+
+ powershell -Command "&{"^
+ "$webclient = new-object System.Net.WebClient;"^
+ "if (-not ([string]::IsNullOrEmpty('%MVNW_USERNAME%') -and [string]::IsNullOrEmpty('%MVNW_PASSWORD%'))) {"^
+ "$webclient.Credentials = new-object System.Net.NetworkCredential('%MVNW_USERNAME%', '%MVNW_PASSWORD%');"^
+ "}"^
+ "[Net.ServicePointManager]::SecurityProtocol = [Net.SecurityProtocolType]::Tls12; $webclient.DownloadFile('%DOWNLOAD_URL%', '%WRAPPER_JAR%')"^
+ "}"
+ if "%MVNW_VERBOSE%" == "true" (
+ echo Finished downloading %WRAPPER_JAR%
+ )
+)
+@REM End of extension
+
+@REM Provide a "standardized" way to retrieve the CLI args that will
+@REM work with both Windows and non-Windows executions.
+set MAVEN_CMD_LINE_ARGS=%*
+
+%MAVEN_JAVA_EXE% ^
+ %JVM_CONFIG_MAVEN_PROPS% ^
+ %MAVEN_OPTS% ^
+ %MAVEN_DEBUG_OPTS% ^
+ -classpath %WRAPPER_JAR% ^
+ "-Dmaven.multiModuleProjectDirectory=%MAVEN_PROJECTBASEDIR%" ^
+ %WRAPPER_LAUNCHER% %MAVEN_CONFIG% %*
+if ERRORLEVEL 1 goto error
+goto end
+
+:error
+set ERROR_CODE=1
+
+:end
+@endlocal & set ERROR_CODE=%ERROR_CODE%
+
+if not "%MAVEN_SKIP_RC%"=="" goto skipRcPost
+@REM check for post script, once with legacy .bat ending and once with .cmd ending
+if exist "%USERPROFILE%\mavenrc_post.bat" call "%USERPROFILE%\mavenrc_post.bat"
+if exist "%USERPROFILE%\mavenrc_post.cmd" call "%USERPROFILE%\mavenrc_post.cmd"
+:skipRcPost
+
+@REM pause the script if MAVEN_BATCH_PAUSE is set to 'on'
+if "%MAVEN_BATCH_PAUSE%"=="on" pause
+
+if "%MAVEN_TERMINATE_CMD%"=="on" exit %ERROR_CODE%
+
+cmd /C exit /B %ERROR_CODE%
diff --git a/quarkus-vs-springboot/spring-project/pom.xml b/quarkus-modules/quarkus-vs-springboot/spring-project/pom.xml
similarity index 100%
rename from quarkus-vs-springboot/spring-project/pom.xml
rename to quarkus-modules/quarkus-vs-springboot/spring-project/pom.xml
diff --git a/quarkus-vs-springboot/spring-project/src/main/docker/Dockerfile.jvm b/quarkus-modules/quarkus-vs-springboot/spring-project/src/main/docker/Dockerfile.jvm
similarity index 100%
rename from quarkus-vs-springboot/spring-project/src/main/docker/Dockerfile.jvm
rename to quarkus-modules/quarkus-vs-springboot/spring-project/src/main/docker/Dockerfile.jvm
diff --git a/quarkus-vs-springboot/spring-project/src/main/docker/spring.yml b/quarkus-modules/quarkus-vs-springboot/spring-project/src/main/docker/spring.yml
similarity index 100%
rename from quarkus-vs-springboot/spring-project/src/main/docker/spring.yml
rename to quarkus-modules/quarkus-vs-springboot/spring-project/src/main/docker/spring.yml
diff --git a/quarkus-vs-springboot/spring-project/src/main/java/com/baeldung/spring_project/Startup.java b/quarkus-modules/quarkus-vs-springboot/spring-project/src/main/java/com/baeldung/spring_project/Startup.java
similarity index 100%
rename from quarkus-vs-springboot/spring-project/src/main/java/com/baeldung/spring_project/Startup.java
rename to quarkus-modules/quarkus-vs-springboot/spring-project/src/main/java/com/baeldung/spring_project/Startup.java
diff --git a/quarkus-vs-springboot/spring-project/src/main/java/com/baeldung/spring_project/ZipCodeApi.java b/quarkus-modules/quarkus-vs-springboot/spring-project/src/main/java/com/baeldung/spring_project/ZipCodeApi.java
similarity index 100%
rename from quarkus-vs-springboot/spring-project/src/main/java/com/baeldung/spring_project/ZipCodeApi.java
rename to quarkus-modules/quarkus-vs-springboot/spring-project/src/main/java/com/baeldung/spring_project/ZipCodeApi.java
diff --git a/quarkus-vs-springboot/spring-project/src/main/java/com/baeldung/spring_project/domain/ZIPRepo.java b/quarkus-modules/quarkus-vs-springboot/spring-project/src/main/java/com/baeldung/spring_project/domain/ZIPRepo.java
similarity index 100%
rename from quarkus-vs-springboot/spring-project/src/main/java/com/baeldung/spring_project/domain/ZIPRepo.java
rename to quarkus-modules/quarkus-vs-springboot/spring-project/src/main/java/com/baeldung/spring_project/domain/ZIPRepo.java
diff --git a/quarkus-vs-springboot/spring-project/src/main/java/com/baeldung/spring_project/domain/ZipCode.java b/quarkus-modules/quarkus-vs-springboot/spring-project/src/main/java/com/baeldung/spring_project/domain/ZipCode.java
similarity index 100%
rename from quarkus-vs-springboot/spring-project/src/main/java/com/baeldung/spring_project/domain/ZipCode.java
rename to quarkus-modules/quarkus-vs-springboot/spring-project/src/main/java/com/baeldung/spring_project/domain/ZipCode.java
diff --git a/quarkus-vs-springboot/spring-project/src/main/resources/application.properties b/quarkus-modules/quarkus-vs-springboot/spring-project/src/main/resources/application.properties
similarity index 100%
rename from quarkus-vs-springboot/spring-project/src/main/resources/application.properties
rename to quarkus-modules/quarkus-vs-springboot/spring-project/src/main/resources/application.properties
diff --git a/quarkus-vs-springboot/spring-project/src/test/java/com/baeldung/spring_project/StartupIT.java b/quarkus-modules/quarkus-vs-springboot/spring-project/src/test/java/com/baeldung/spring_project/StartupIT.java
similarity index 100%
rename from quarkus-vs-springboot/spring-project/src/test/java/com/baeldung/spring_project/StartupIT.java
rename to quarkus-modules/quarkus-vs-springboot/spring-project/src/test/java/com/baeldung/spring_project/StartupIT.java
diff --git a/quarkus-vs-springboot/spring-project/src/test/resources/access-filter.json b/quarkus-modules/quarkus-vs-springboot/spring-project/src/test/resources/access-filter.json
similarity index 100%
rename from quarkus-vs-springboot/spring-project/src/test/resources/access-filter.json
rename to quarkus-modules/quarkus-vs-springboot/spring-project/src/test/resources/access-filter.json
diff --git a/quarkus-vs-springboot/spring-project/start_app.sh b/quarkus-modules/quarkus-vs-springboot/spring-project/start_app.sh
old mode 100755
new mode 100644
similarity index 100%
rename from quarkus-vs-springboot/spring-project/start_app.sh
rename to quarkus-modules/quarkus-vs-springboot/spring-project/start_app.sh
diff --git a/quarkus-vs-springboot/spring-project/start_jvm.sh b/quarkus-modules/quarkus-vs-springboot/spring-project/start_jvm.sh
old mode 100755
new mode 100644
similarity index 100%
rename from quarkus-vs-springboot/spring-project/start_jvm.sh
rename to quarkus-modules/quarkus-vs-springboot/spring-project/start_jvm.sh
diff --git a/quarkus-vs-springboot/zip_code_database.csv b/quarkus-modules/quarkus-vs-springboot/zip_code_database.csv
similarity index 100%
rename from quarkus-vs-springboot/zip_code_database.csv
rename to quarkus-modules/quarkus-vs-springboot/zip_code_database.csv
diff --git a/quarkus/.dockerignore b/quarkus-modules/quarkus/.dockerignore
similarity index 100%
rename from quarkus/.dockerignore
rename to quarkus-modules/quarkus/.dockerignore
diff --git a/quarkus/.mvn/wrapper/MavenWrapperDownloader.java b/quarkus-modules/quarkus/.mvn/wrapper/MavenWrapperDownloader.java
old mode 100755
new mode 100644
similarity index 100%
rename from quarkus/.mvn/wrapper/MavenWrapperDownloader.java
rename to quarkus-modules/quarkus/.mvn/wrapper/MavenWrapperDownloader.java
diff --git a/quarkus/.mvn/wrapper/maven-wrapper.properties b/quarkus-modules/quarkus/.mvn/wrapper/maven-wrapper.properties
old mode 100755
new mode 100644
similarity index 100%
rename from quarkus/.mvn/wrapper/maven-wrapper.properties
rename to quarkus-modules/quarkus/.mvn/wrapper/maven-wrapper.properties
diff --git a/quarkus/README.md b/quarkus-modules/quarkus/README.md
similarity index 100%
rename from quarkus/README.md
rename to quarkus-modules/quarkus/README.md
diff --git a/quarkus/mvnw b/quarkus-modules/quarkus/mvnw
old mode 100755
new mode 100644
similarity index 100%
rename from quarkus/mvnw
rename to quarkus-modules/quarkus/mvnw
diff --git a/quarkus/mvnw.cmd b/quarkus-modules/quarkus/mvnw.cmd
old mode 100755
new mode 100644
similarity index 100%
rename from quarkus/mvnw.cmd
rename to quarkus-modules/quarkus/mvnw.cmd
diff --git a/quarkus/pom.xml b/quarkus-modules/quarkus/pom.xml
similarity index 99%
rename from quarkus/pom.xml
rename to quarkus-modules/quarkus/pom.xml
index 9342b1a4af..65c0cec603 100644
--- a/quarkus/pom.xml
+++ b/quarkus-modules/quarkus/pom.xml
@@ -10,7 +10,7 @@
com.baeldung
- parent-modules
+ quarkus-modules
1.0.0-SNAPSHOT
diff --git a/quarkus/src/main/docker/Dockerfile.jvm b/quarkus-modules/quarkus/src/main/docker/Dockerfile.jvm
similarity index 100%
rename from quarkus/src/main/docker/Dockerfile.jvm
rename to quarkus-modules/quarkus/src/main/docker/Dockerfile.jvm
diff --git a/quarkus/src/main/docker/Dockerfile.native b/quarkus-modules/quarkus/src/main/docker/Dockerfile.native
similarity index 100%
rename from quarkus/src/main/docker/Dockerfile.native
rename to quarkus-modules/quarkus/src/main/docker/Dockerfile.native
diff --git a/quarkus/src/main/java/com/baeldung/quarkus/HelloResource.java b/quarkus-modules/quarkus/src/main/java/com/baeldung/quarkus/HelloResource.java
similarity index 100%
rename from quarkus/src/main/java/com/baeldung/quarkus/HelloResource.java
rename to quarkus-modules/quarkus/src/main/java/com/baeldung/quarkus/HelloResource.java
diff --git a/quarkus/src/main/java/com/baeldung/quarkus/HelloService.java b/quarkus-modules/quarkus/src/main/java/com/baeldung/quarkus/HelloService.java
similarity index 100%
rename from quarkus/src/main/java/com/baeldung/quarkus/HelloService.java
rename to quarkus-modules/quarkus/src/main/java/com/baeldung/quarkus/HelloService.java
diff --git a/quarkus/src/main/java/com/baeldung/quarkus/LibraryResource.java b/quarkus-modules/quarkus/src/main/java/com/baeldung/quarkus/LibraryResource.java
similarity index 100%
rename from quarkus/src/main/java/com/baeldung/quarkus/LibraryResource.java
rename to quarkus-modules/quarkus/src/main/java/com/baeldung/quarkus/LibraryResource.java
diff --git a/quarkus/src/main/java/com/baeldung/quarkus/model/Book.java b/quarkus-modules/quarkus/src/main/java/com/baeldung/quarkus/model/Book.java
similarity index 100%
rename from quarkus/src/main/java/com/baeldung/quarkus/model/Book.java
rename to quarkus-modules/quarkus/src/main/java/com/baeldung/quarkus/model/Book.java
diff --git a/quarkus/src/main/java/com/baeldung/quarkus/repository/BookRepository.java b/quarkus-modules/quarkus/src/main/java/com/baeldung/quarkus/repository/BookRepository.java
similarity index 100%
rename from quarkus/src/main/java/com/baeldung/quarkus/repository/BookRepository.java
rename to quarkus-modules/quarkus/src/main/java/com/baeldung/quarkus/repository/BookRepository.java
diff --git a/quarkus/src/main/java/com/baeldung/quarkus/service/LibraryService.java b/quarkus-modules/quarkus/src/main/java/com/baeldung/quarkus/service/LibraryService.java
similarity index 100%
rename from quarkus/src/main/java/com/baeldung/quarkus/service/LibraryService.java
rename to quarkus-modules/quarkus/src/main/java/com/baeldung/quarkus/service/LibraryService.java
diff --git a/quarkus/src/main/resources/META-INF/resources/index.html b/quarkus-modules/quarkus/src/main/resources/META-INF/resources/index.html
similarity index 100%
rename from quarkus/src/main/resources/META-INF/resources/index.html
rename to quarkus-modules/quarkus/src/main/resources/META-INF/resources/index.html
diff --git a/quarkus/src/main/resources/application.properties b/quarkus-modules/quarkus/src/main/resources/application.properties
similarity index 100%
rename from quarkus/src/main/resources/application.properties
rename to quarkus-modules/quarkus/src/main/resources/application.properties
diff --git a/quarkus/src/test/java/com/baeldung/quarkus/CustomLibraryResourceManualTest.java b/quarkus-modules/quarkus/src/test/java/com/baeldung/quarkus/CustomLibraryResourceManualTest.java
similarity index 100%
rename from quarkus/src/test/java/com/baeldung/quarkus/CustomLibraryResourceManualTest.java
rename to quarkus-modules/quarkus/src/test/java/com/baeldung/quarkus/CustomLibraryResourceManualTest.java
diff --git a/quarkus/src/test/java/com/baeldung/quarkus/HelloResourceUnitTest.java b/quarkus-modules/quarkus/src/test/java/com/baeldung/quarkus/HelloResourceUnitTest.java
similarity index 100%
rename from quarkus/src/test/java/com/baeldung/quarkus/HelloResourceUnitTest.java
rename to quarkus-modules/quarkus/src/test/java/com/baeldung/quarkus/HelloResourceUnitTest.java
diff --git a/quarkus/src/test/java/com/baeldung/quarkus/LibraryHttpEndpointIntegrationTest.java b/quarkus-modules/quarkus/src/test/java/com/baeldung/quarkus/LibraryHttpEndpointIntegrationTest.java
similarity index 100%
rename from quarkus/src/test/java/com/baeldung/quarkus/LibraryHttpEndpointIntegrationTest.java
rename to quarkus-modules/quarkus/src/test/java/com/baeldung/quarkus/LibraryHttpEndpointIntegrationTest.java
diff --git a/quarkus/src/test/java/com/baeldung/quarkus/LibraryResourceHttpResourceIntegrationTest.java b/quarkus-modules/quarkus/src/test/java/com/baeldung/quarkus/LibraryResourceHttpResourceIntegrationTest.java
similarity index 100%
rename from quarkus/src/test/java/com/baeldung/quarkus/LibraryResourceHttpResourceIntegrationTest.java
rename to quarkus-modules/quarkus/src/test/java/com/baeldung/quarkus/LibraryResourceHttpResourceIntegrationTest.java
diff --git a/quarkus/src/test/java/com/baeldung/quarkus/LibraryResourceInjectSpyIntegrationTest.java b/quarkus-modules/quarkus/src/test/java/com/baeldung/quarkus/LibraryResourceInjectSpyIntegrationTest.java
similarity index 100%
rename from quarkus/src/test/java/com/baeldung/quarkus/LibraryResourceInjectSpyIntegrationTest.java
rename to quarkus-modules/quarkus/src/test/java/com/baeldung/quarkus/LibraryResourceInjectSpyIntegrationTest.java
diff --git a/quarkus/src/test/java/com/baeldung/quarkus/LibraryResourceIntegrationTest.java b/quarkus-modules/quarkus/src/test/java/com/baeldung/quarkus/LibraryResourceIntegrationTest.java
similarity index 100%
rename from quarkus/src/test/java/com/baeldung/quarkus/LibraryResourceIntegrationTest.java
rename to quarkus-modules/quarkus/src/test/java/com/baeldung/quarkus/LibraryResourceIntegrationTest.java
diff --git a/quarkus/src/test/java/com/baeldung/quarkus/NativeHelloResourceIT.java b/quarkus-modules/quarkus/src/test/java/com/baeldung/quarkus/NativeHelloResourceIT.java
similarity index 100%
rename from quarkus/src/test/java/com/baeldung/quarkus/NativeHelloResourceIT.java
rename to quarkus-modules/quarkus/src/test/java/com/baeldung/quarkus/NativeHelloResourceIT.java
diff --git a/quarkus/src/test/java/com/baeldung/quarkus/NativeLibraryResourceIT.java b/quarkus-modules/quarkus/src/test/java/com/baeldung/quarkus/NativeLibraryResourceIT.java
similarity index 100%
rename from quarkus/src/test/java/com/baeldung/quarkus/NativeLibraryResourceIT.java
rename to quarkus-modules/quarkus/src/test/java/com/baeldung/quarkus/NativeLibraryResourceIT.java
diff --git a/quarkus/src/test/java/com/baeldung/quarkus/repository/BookRepositoryIntegrationTest.java b/quarkus-modules/quarkus/src/test/java/com/baeldung/quarkus/repository/BookRepositoryIntegrationTest.java
similarity index 100%
rename from quarkus/src/test/java/com/baeldung/quarkus/repository/BookRepositoryIntegrationTest.java
rename to quarkus-modules/quarkus/src/test/java/com/baeldung/quarkus/repository/BookRepositoryIntegrationTest.java
diff --git a/quarkus/src/test/java/com/baeldung/quarkus/service/LibraryServiceInjectMockUnitTest.java b/quarkus-modules/quarkus/src/test/java/com/baeldung/quarkus/service/LibraryServiceInjectMockUnitTest.java
similarity index 100%
rename from quarkus/src/test/java/com/baeldung/quarkus/service/LibraryServiceInjectMockUnitTest.java
rename to quarkus-modules/quarkus/src/test/java/com/baeldung/quarkus/service/LibraryServiceInjectMockUnitTest.java
diff --git a/quarkus/src/test/java/com/baeldung/quarkus/service/LibraryServiceIntegrationTest.java b/quarkus-modules/quarkus/src/test/java/com/baeldung/quarkus/service/LibraryServiceIntegrationTest.java
similarity index 100%
rename from quarkus/src/test/java/com/baeldung/quarkus/service/LibraryServiceIntegrationTest.java
rename to quarkus-modules/quarkus/src/test/java/com/baeldung/quarkus/service/LibraryServiceIntegrationTest.java
diff --git a/quarkus/src/test/java/com/baeldung/quarkus/service/LibraryServiceQuarkusMockUnitTest.java b/quarkus-modules/quarkus/src/test/java/com/baeldung/quarkus/service/LibraryServiceQuarkusMockUnitTest.java
similarity index 100%
rename from quarkus/src/test/java/com/baeldung/quarkus/service/LibraryServiceQuarkusMockUnitTest.java
rename to quarkus-modules/quarkus/src/test/java/com/baeldung/quarkus/service/LibraryServiceQuarkusMockUnitTest.java
diff --git a/quarkus/src/test/java/com/baeldung/quarkus/utils/CustomTestProfile.java b/quarkus-modules/quarkus/src/test/java/com/baeldung/quarkus/utils/CustomTestProfile.java
similarity index 100%
rename from quarkus/src/test/java/com/baeldung/quarkus/utils/CustomTestProfile.java
rename to quarkus-modules/quarkus/src/test/java/com/baeldung/quarkus/utils/CustomTestProfile.java
diff --git a/quarkus/src/test/java/com/baeldung/quarkus/utils/QuarkusTransactionalTest.java b/quarkus-modules/quarkus/src/test/java/com/baeldung/quarkus/utils/QuarkusTransactionalTest.java
similarity index 100%
rename from quarkus/src/test/java/com/baeldung/quarkus/utils/QuarkusTransactionalTest.java
rename to quarkus-modules/quarkus/src/test/java/com/baeldung/quarkus/utils/QuarkusTransactionalTest.java
diff --git a/quarkus/src/test/java/com/baeldung/quarkus/utils/TestBookRepository.java b/quarkus-modules/quarkus/src/test/java/com/baeldung/quarkus/utils/TestBookRepository.java
similarity index 100%
rename from quarkus/src/test/java/com/baeldung/quarkus/utils/TestBookRepository.java
rename to quarkus-modules/quarkus/src/test/java/com/baeldung/quarkus/utils/TestBookRepository.java
diff --git a/quarkus/.mvn/wrapper/maven-wrapper.jar b/quarkus/.mvn/wrapper/maven-wrapper.jar
deleted file mode 100755
index e89f07c229..0000000000
Binary files a/quarkus/.mvn/wrapper/maven-wrapper.jar and /dev/null differ
diff --git a/spring-boot-modules/pom.xml b/spring-boot-modules/pom.xml
index d0a35859b4..bf3f79e5e5 100644
--- a/spring-boot-modules/pom.xml
+++ b/spring-boot-modules/pom.xml
@@ -45,6 +45,7 @@
spring-boot-jasypt
spring-boot-keycloak
+ spring-boot-keycloak-2
spring-boot-libraries
spring-boot-libraries-2
spring-boot-libraries-comparison
@@ -99,4 +100,4 @@
-
\ No newline at end of file
+
diff --git a/spring-boot-modules/spring-boot-keycloak-2/README.md b/spring-boot-modules/spring-boot-keycloak-2/README.md
new file mode 100644
index 0000000000..d372132a6a
--- /dev/null
+++ b/spring-boot-modules/spring-boot-keycloak-2/README.md
@@ -0,0 +1,6 @@
+## Spring Boot Keycloak
+
+This module contains articles about Keycloak in Spring Boot projects.
+
+## Relevant articles:
+- [Disabling Keycloak Security in Spring Boot](https://www.baeldung.com/spring-keycloak-security-disable)
diff --git a/spring-boot-modules/spring-boot-keycloak-2/pom.xml b/spring-boot-modules/spring-boot-keycloak-2/pom.xml
new file mode 100644
index 0000000000..3f83c99613
--- /dev/null
+++ b/spring-boot-modules/spring-boot-keycloak-2/pom.xml
@@ -0,0 +1,65 @@
+
+
+ 4.0.0
+ com.baeldung.keycloak
+ spring-boot-keycloak-2
+ 0.0.1
+ spring-boot-keycloak-2
+ jar
+ This is a simple application demonstrating integration between Keycloak and Spring Boot.
+
+
+ com.baeldung
+ parent-boot-2
+ 0.0.1-SNAPSHOT
+ ../../parent-boot-2
+
+
+
+ 15.0.2
+
+
+
+
+ org.springframework.boot
+ spring-boot-starter-web
+
+
+ org.springframework.boot
+ spring-boot-starter-security
+
+
+ org.keycloak
+ keycloak-spring-boot-starter
+
+
+ org.springframework.boot
+ spring-boot-starter-test
+ test
+
+
+
+
+
+
+ org.keycloak.bom
+ keycloak-adapter-bom
+ ${keycloak-adapter-bom.version}
+ pom
+ import
+
+
+
+
+
+
+
+ org.springframework.boot
+ spring-boot-maven-plugin
+
+
+
+
+
diff --git a/spring-boot-modules/spring-boot-keycloak/src/main/java/com/baeldung/disablingkeycloak/App.java b/spring-boot-modules/spring-boot-keycloak-2/src/main/java/com/baeldung/disablingkeycloak/App.java
similarity index 100%
rename from spring-boot-modules/spring-boot-keycloak/src/main/java/com/baeldung/disablingkeycloak/App.java
rename to spring-boot-modules/spring-boot-keycloak-2/src/main/java/com/baeldung/disablingkeycloak/App.java
diff --git a/spring-boot-modules/spring-boot-keycloak/src/main/java/com/baeldung/disablingkeycloak/DisableSecurityConfiguration.java b/spring-boot-modules/spring-boot-keycloak-2/src/main/java/com/baeldung/disablingkeycloak/DisableSecurityConfiguration.java
similarity index 100%
rename from spring-boot-modules/spring-boot-keycloak/src/main/java/com/baeldung/disablingkeycloak/DisableSecurityConfiguration.java
rename to spring-boot-modules/spring-boot-keycloak-2/src/main/java/com/baeldung/disablingkeycloak/DisableSecurityConfiguration.java
diff --git a/spring-boot-modules/spring-boot-keycloak/src/main/java/com/baeldung/disablingkeycloak/KeycloakConfiguration.java b/spring-boot-modules/spring-boot-keycloak-2/src/main/java/com/baeldung/disablingkeycloak/KeycloakConfiguration.java
similarity index 100%
rename from spring-boot-modules/spring-boot-keycloak/src/main/java/com/baeldung/disablingkeycloak/KeycloakConfiguration.java
rename to spring-boot-modules/spring-boot-keycloak-2/src/main/java/com/baeldung/disablingkeycloak/KeycloakConfiguration.java
diff --git a/spring-boot-modules/spring-boot-keycloak/src/main/java/com/baeldung/disablingkeycloak/KeycloakSecurityConfig.java b/spring-boot-modules/spring-boot-keycloak-2/src/main/java/com/baeldung/disablingkeycloak/KeycloakSecurityConfig.java
similarity index 100%
rename from spring-boot-modules/spring-boot-keycloak/src/main/java/com/baeldung/disablingkeycloak/KeycloakSecurityConfig.java
rename to spring-boot-modules/spring-boot-keycloak-2/src/main/java/com/baeldung/disablingkeycloak/KeycloakSecurityConfig.java
diff --git a/spring-boot-modules/spring-boot-keycloak/src/main/java/com/baeldung/disablingkeycloak/User.java b/spring-boot-modules/spring-boot-keycloak-2/src/main/java/com/baeldung/disablingkeycloak/User.java
similarity index 100%
rename from spring-boot-modules/spring-boot-keycloak/src/main/java/com/baeldung/disablingkeycloak/User.java
rename to spring-boot-modules/spring-boot-keycloak-2/src/main/java/com/baeldung/disablingkeycloak/User.java
diff --git a/spring-boot-modules/spring-boot-keycloak/src/main/java/com/baeldung/disablingkeycloak/UserController.java b/spring-boot-modules/spring-boot-keycloak-2/src/main/java/com/baeldung/disablingkeycloak/UserController.java
similarity index 100%
rename from spring-boot-modules/spring-boot-keycloak/src/main/java/com/baeldung/disablingkeycloak/UserController.java
rename to spring-boot-modules/spring-boot-keycloak-2/src/main/java/com/baeldung/disablingkeycloak/UserController.java
diff --git a/spring-boot-modules/spring-boot-keycloak/src/main/resources/application-disabling-keycloak.properties b/spring-boot-modules/spring-boot-keycloak-2/src/main/resources/application-disabling-keycloak.properties
similarity index 100%
rename from spring-boot-modules/spring-boot-keycloak/src/main/resources/application-disabling-keycloak.properties
rename to spring-boot-modules/spring-boot-keycloak-2/src/main/resources/application-disabling-keycloak.properties
diff --git a/spring-cloud-modules/spring-cloud-rest/spring-cloud-rest-config-server/src/main/resources/logback.xml b/spring-boot-modules/spring-boot-keycloak-2/src/main/resources/logback.xml
similarity index 100%
rename from spring-cloud-modules/spring-cloud-rest/spring-cloud-rest-config-server/src/main/resources/logback.xml
rename to spring-boot-modules/spring-boot-keycloak-2/src/main/resources/logback.xml
diff --git a/spring-boot-modules/spring-boot-keycloak/src/test/java/com/baeldung/disablingkeycloak/DisablingKeycloakIntegrationTest.java b/spring-boot-modules/spring-boot-keycloak-2/src/test/java/com/baeldung/disablingkeycloak/DisablingKeycloakIntegrationTest.java
similarity index 69%
rename from spring-boot-modules/spring-boot-keycloak/src/test/java/com/baeldung/disablingkeycloak/DisablingKeycloakIntegrationTest.java
rename to spring-boot-modules/spring-boot-keycloak-2/src/test/java/com/baeldung/disablingkeycloak/DisablingKeycloakIntegrationTest.java
index cf70f7e7c3..2f9979baf7 100644
--- a/spring-boot-modules/spring-boot-keycloak/src/test/java/com/baeldung/disablingkeycloak/DisablingKeycloakIntegrationTest.java
+++ b/spring-boot-modules/spring-boot-keycloak-2/src/test/java/com/baeldung/disablingkeycloak/DisablingKeycloakIntegrationTest.java
@@ -1,28 +1,25 @@
package com.baeldung.disablingkeycloak;
-import static org.junit.Assert.assertEquals;
-import static org.junit.Assert.assertNotNull;
+import static org.junit.jupiter.api.Assertions.assertEquals;
+import static org.junit.jupiter.api.Assertions.assertNotNull;
import org.apache.http.HttpStatus;
-import org.junit.Test;
-import org.junit.runner.RunWith;
+import org.junit.jupiter.api.Test;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.boot.test.context.SpringBootTest;
import org.springframework.boot.test.web.client.TestRestTemplate;
import org.springframework.http.ResponseEntity;
import org.springframework.test.context.ActiveProfiles;
-import org.springframework.test.context.junit4.SpringRunner;
@SpringBootTest(classes = App.class, webEnvironment = SpringBootTest.WebEnvironment.RANDOM_PORT)
-@RunWith(SpringRunner.class)
@ActiveProfiles("disablingkeycloak")
-public class DisablingKeycloakIntegrationTest {
+class DisablingKeycloakIntegrationTest {
@Autowired
private TestRestTemplate restTemplate;
@Test
- public void givenUnauthenticated_whenGettingUser_shouldReturnUser() {
+ void givenUnauthenticated_whenGettingUser_shouldReturnUser() {
ResponseEntity responseEntity = restTemplate.getForEntity("/users/1", User.class);
assertEquals(HttpStatus.SC_OK, responseEntity.getStatusCodeValue());
diff --git a/spring-boot-modules/spring-boot-keycloak/src/test/resources/application-disablingkeycloak.properties b/spring-boot-modules/spring-boot-keycloak-2/src/test/resources/application-disablingkeycloak.properties
similarity index 100%
rename from spring-boot-modules/spring-boot-keycloak/src/test/resources/application-disablingkeycloak.properties
rename to spring-boot-modules/spring-boot-keycloak-2/src/test/resources/application-disablingkeycloak.properties
diff --git a/spring-boot-modules/spring-boot-keycloak/README.md b/spring-boot-modules/spring-boot-keycloak/README.md
index 97a336c25c..cde11df0fa 100644
--- a/spring-boot-modules/spring-boot-keycloak/README.md
+++ b/spring-boot-modules/spring-boot-keycloak/README.md
@@ -10,4 +10,3 @@ This module contains articles about Keycloak in Spring Boot projects.
- [Customizing Themes for Keycloak](https://www.baeldung.com/spring-keycloak-custom-themes)
- [Securing SOAP Web Services With Keycloak](https://www.baeldung.com/soap-keycloak)
- [Get Keycloak User ID in Spring](https://www.baeldung.com/spring-keycloak-get-user-id)
-- [Disabling Keycloak Security in Spring Boot](https://www.baeldung.com/spring-keycloak-security-disable)
diff --git a/spring-boot-modules/spring-boot-libraries/README.md b/spring-boot-modules/spring-boot-libraries/README.md
index cc7e511ac8..68302d6d6f 100644
--- a/spring-boot-modules/spring-boot-libraries/README.md
+++ b/spring-boot-modules/spring-boot-libraries/README.md
@@ -14,7 +14,7 @@ The "REST With Spring" Classes: http://bit.ly/restwithspring
- [Spring Boot and Caffeine Cache](https://www.baeldung.com/spring-boot-caffeine-cache)
- [Spring Boot and Togglz Aspect](https://www.baeldung.com/spring-togglz)
- [Getting Started with GraphQL and Spring Boot](https://www.baeldung.com/spring-graphql)
-- [Expose GraphQL Field with Different Name](https://www.baeldung.com/expose-graphql-field-with-different-name)
+- [Expose GraphQL Field with Different Name](https://www.baeldung.com/graphql-field-name)
- More articles: [[next -->]](/spring-boot-modules/spring-boot-libraries-2)
### GraphQL sample queries
diff --git a/spring-cloud-modules/pom.xml b/spring-cloud-modules/pom.xml
index e725b366c6..77c45eb640 100644
--- a/spring-cloud-modules/pom.xml
+++ b/spring-cloud-modules/pom.xml
@@ -22,8 +22,7 @@
spring-cloud-eureka
spring-cloud-hystrix
spring-cloud-bootstrap
- spring-cloud-ribbon-client
- spring-cloud-rest
+ spring-cloud-ribbon-client
spring-cloud-zookeeper
spring-cloud-gateway
spring-cloud-stream
diff --git a/spring-cloud-modules/spring-cloud-bootstrap/README.md b/spring-cloud-modules/spring-cloud-bootstrap/README.md
index 6923e951ff..252058be1f 100644
--- a/spring-cloud-modules/spring-cloud-bootstrap/README.md
+++ b/spring-cloud-modules/spring-cloud-bootstrap/README.md
@@ -1,6 +1,6 @@
-## Spring Cloud Bootstrap
+## Guide to Microservices: with Spring Boot and Spring Cloud Ebook
-This module contains articles about bootstrapping Spring Cloud applications
+This module contains articles about bootstrapping Spring Cloud applications that are part of the Guide to Microservices: with Spring Boot and Spring Cloud Ebook.
### Relevant Articles:
diff --git a/spring-cloud-modules/spring-cloud-gateway/README.md b/spring-cloud-modules/spring-cloud-gateway/README.md
index 808536ce80..5bf416fccd 100644
--- a/spring-cloud-modules/spring-cloud-gateway/README.md
+++ b/spring-cloud-modules/spring-cloud-gateway/README.md
@@ -10,3 +10,4 @@ This module contains articles about Spring Cloud Gateway
- [Spring Cloud Gateway WebFilter Factories](https://www.baeldung.com/spring-cloud-gateway-webfilter-factories)
- [Using Spring Cloud Gateway with OAuth 2.0 Patterns](https://www.baeldung.com/spring-cloud-gateway-oauth2)
- [URL Rewriting With Spring Cloud Gateway](https://www.baeldung.com/spring-cloud-gateway-url-rewriting)
+- [Processing the Response Body in Spring Cloud Gateway](https://www.baeldung.com/spring-cloud-gateway-response-body)
diff --git a/spring-cloud-modules/spring-cloud-gateway/src/main/java/com/baeldung/springcloudgateway/customfilters/gatewayapp/filters/factories/ScrubResponseGatewayFilterFactory.java b/spring-cloud-modules/spring-cloud-gateway/src/main/java/com/baeldung/springcloudgateway/customfilters/gatewayapp/filters/factories/ScrubResponseGatewayFilterFactory.java
new file mode 100644
index 0000000000..dbe9a9fb4f
--- /dev/null
+++ b/spring-cloud-modules/spring-cloud-gateway/src/main/java/com/baeldung/springcloudgateway/customfilters/gatewayapp/filters/factories/ScrubResponseGatewayFilterFactory.java
@@ -0,0 +1,110 @@
+package com.baeldung.springcloudgateway.customfilters.gatewayapp.filters.factories;
+
+import java.util.Arrays;
+import java.util.List;
+import java.util.regex.Pattern;
+
+import org.reactivestreams.Publisher;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
+import org.springframework.cloud.gateway.filter.GatewayFilter;
+import org.springframework.cloud.gateway.filter.factory.AbstractGatewayFilterFactory;
+import org.springframework.cloud.gateway.filter.factory.rewrite.ModifyResponseBodyGatewayFilterFactory;
+import org.springframework.cloud.gateway.filter.factory.rewrite.RewriteFunction;
+import org.springframework.stereotype.Component;
+import org.springframework.web.server.ServerWebExchange;
+
+import com.fasterxml.jackson.core.TreeNode;
+import com.fasterxml.jackson.databind.JsonNode;
+import com.fasterxml.jackson.databind.node.ArrayNode;
+import com.fasterxml.jackson.databind.node.ObjectNode;
+import com.fasterxml.jackson.databind.node.TextNode;
+
+import reactor.core.publisher.Mono;
+
+@Component
+public class ScrubResponseGatewayFilterFactory extends AbstractGatewayFilterFactory {
+
+ final Logger logger = LoggerFactory.getLogger(ScrubResponseGatewayFilterFactory.class);
+ private ModifyResponseBodyGatewayFilterFactory modifyResponseBodyFilterFactory;
+
+ public ScrubResponseGatewayFilterFactory(ModifyResponseBodyGatewayFilterFactory modifyResponseBodyFilterFactory) {
+ super(Config.class);
+ this.modifyResponseBodyFilterFactory = modifyResponseBodyFilterFactory;
+ }
+
+ @Override
+ public List shortcutFieldOrder() {
+ return Arrays.asList("fields", "replacement");
+ }
+
+
+ @Override
+ public GatewayFilter apply(Config config) {
+
+ return modifyResponseBodyFilterFactory
+ .apply(c -> c.setRewriteFunction(JsonNode.class, JsonNode.class, new Scrubber(config)));
+ }
+
+ public static class Config {
+
+ private String fields;
+ private String replacement;
+
+
+ public String getFields() {
+ return fields;
+ }
+ public void setFields(String fields) {
+ this.fields = fields;
+ }
+ public String getReplacement() {
+ return replacement;
+ }
+ public void setReplacement(String replacement) {
+ this.replacement = replacement;
+ }
+ }
+
+
+ public static class Scrubber implements RewriteFunction {
+ private final Pattern fields;
+ private final String replacement;
+
+ public Scrubber(Config config) {
+ this.fields = Pattern.compile(config.getFields());
+ this.replacement = config.getReplacement();
+ }
+
+ @Override
+ public Publisher apply(ServerWebExchange t, JsonNode u) {
+ return Mono.just(scrubRecursively(u));
+ }
+
+ private JsonNode scrubRecursively(JsonNode u) {
+ if ( !u.isContainerNode()) {
+ return u;
+ }
+
+ if ( u.isObject()) {
+ ObjectNode node = (ObjectNode)u;
+ node.fields().forEachRemaining((f) -> {
+ if ( fields.matcher(f.getKey()).matches() && f.getValue().isTextual()) {
+ f.setValue(TextNode.valueOf(replacement));
+ }
+ else {
+ f.setValue(scrubRecursively(f.getValue()));
+ }
+ });
+ }
+ else if ( u.isArray()) {
+ ArrayNode array = (ArrayNode)u;
+ for ( int i = 0 ; i < array.size() ; i++ ) {
+ array.set(i, scrubRecursively(array.get(i)));
+ }
+ }
+
+ return u;
+ }
+ }
+}
diff --git a/spring-cloud-modules/spring-cloud-gateway/src/main/java/com/baeldung/springcloudgateway/customfilters/gatewayapp/filters/global/LoggingGlobalFilterProperties.java b/spring-cloud-modules/spring-cloud-gateway/src/main/java/com/baeldung/springcloudgateway/customfilters/gatewayapp/filters/global/LoggingGlobalFilterProperties.java
new file mode 100644
index 0000000000..4bf6453355
--- /dev/null
+++ b/spring-cloud-modules/spring-cloud-gateway/src/main/java/com/baeldung/springcloudgateway/customfilters/gatewayapp/filters/global/LoggingGlobalFilterProperties.java
@@ -0,0 +1,47 @@
+package com.baeldung.springcloudgateway.customfilters.gatewayapp.filters.global;
+
+import org.springframework.boot.context.properties.ConfigurationProperties;
+
+@ConfigurationProperties("logging.global")
+public class LoggingGlobalFilterProperties {
+
+ private boolean enabled;
+ private boolean requestHeaders;
+ private boolean requestBody;
+ private boolean responseHeaders;
+ private boolean responseBody;
+
+ public boolean isEnabled() {
+ return enabled;
+ }
+ public void setEnabled(boolean enabled) {
+ this.enabled = enabled;
+ }
+ public boolean isRequestHeaders() {
+ return requestHeaders;
+ }
+ public void setRequestHeaders(boolean requestHeaders) {
+ this.requestHeaders = requestHeaders;
+ }
+ public boolean isRequestBody() {
+ return requestBody;
+ }
+ public void setRequestBody(boolean requestBody) {
+ this.requestBody = requestBody;
+ }
+ public boolean isResponseHeaders() {
+ return responseHeaders;
+ }
+ public void setResponseHeaders(boolean responseHeaders) {
+ this.responseHeaders = responseHeaders;
+ }
+ public boolean isResponseBody() {
+ return responseBody;
+ }
+ public void setResponseBody(boolean responseBody) {
+ this.responseBody = responseBody;
+ }
+
+
+
+}
diff --git a/spring-cloud-modules/spring-cloud-gateway/src/main/resources/application-scrub.yml b/spring-cloud-modules/spring-cloud-gateway/src/main/resources/application-scrub.yml
new file mode 100644
index 0000000000..da7dfea0a7
--- /dev/null
+++ b/spring-cloud-modules/spring-cloud-gateway/src/main/resources/application-scrub.yml
@@ -0,0 +1,12 @@
+spring:
+ cloud:
+ gateway:
+ routes:
+ - id: rewrite_with_scrub
+ uri: ${rewrite.backend.uri:http://example.com}
+ predicates:
+ - Path=/v1/customer/**
+ filters:
+ - RewritePath=/v1/customer/(?.*),/api/$\{segment}
+ - ScrubResponse=ssn,***
+
\ No newline at end of file
diff --git a/spring-cloud-modules/spring-cloud-gateway/src/test/java/com/baeldung/springcloudgateway/customfilters/gatewayapp/filters/factories/ScrubResponseGatewayFilterFactoryUnitTest.java b/spring-cloud-modules/spring-cloud-gateway/src/test/java/com/baeldung/springcloudgateway/customfilters/gatewayapp/filters/factories/ScrubResponseGatewayFilterFactoryUnitTest.java
new file mode 100644
index 0000000000..667aabaddc
--- /dev/null
+++ b/spring-cloud-modules/spring-cloud-gateway/src/test/java/com/baeldung/springcloudgateway/customfilters/gatewayapp/filters/factories/ScrubResponseGatewayFilterFactoryUnitTest.java
@@ -0,0 +1,61 @@
+package com.baeldung.springcloudgateway.customfilters.gatewayapp.filters.factories;
+
+import static org.junit.jupiter.api.Assertions.*;
+
+import org.junit.jupiter.api.Test;
+
+import com.baeldung.springcloudgateway.customfilters.gatewayapp.filters.factories.ScrubResponseGatewayFilterFactory.Config;
+import com.baeldung.springcloudgateway.customfilters.gatewayapp.filters.factories.ScrubResponseGatewayFilterFactory.Scrubber;
+import com.fasterxml.jackson.core.JsonFactory;
+import com.fasterxml.jackson.core.JsonParser;
+import com.fasterxml.jackson.core.ObjectCodec;
+import com.fasterxml.jackson.core.TreeNode;
+import com.fasterxml.jackson.databind.JsonNode;
+import com.fasterxml.jackson.databind.ObjectMapper;
+
+import reactor.core.publisher.Mono;
+
+class ScrubResponseGatewayFilterFactoryUnitTest {
+
+ private static final String JSON_WITH_FIELDS_TO_SCRUB = "{\r\n"
+ + " \"name\" : \"John Doe\",\r\n"
+ + " \"ssn\" : \"123-45-9999\",\r\n"
+ + " \"account\" : \"9999888877770000\"\r\n"
+ + "}";
+
+
+ @Test
+ void givenJsonWithFieldsToScrub_whenApply_thenScrubFields() throws Exception{
+
+ JsonFactory jf = new JsonFactory(new ObjectMapper());
+ JsonParser parser = jf.createParser(JSON_WITH_FIELDS_TO_SCRUB);
+ JsonNode root = parser.readValueAsTree();
+
+ Config config = new Config();
+ config.setFields("ssn|account");
+ config.setReplacement("*");
+ Scrubber scrubber = new ScrubResponseGatewayFilterFactory.Scrubber(config);
+
+ JsonNode scrubbed = Mono.from(scrubber.apply(null, root)).block();
+ assertNotNull(scrubbed);
+ assertEquals("*", scrubbed.get("ssn").asText());
+ }
+
+ @Test
+ void givenJsonWithoutFieldsToScrub_whenApply_theBodUnchanged() throws Exception{
+
+ JsonFactory jf = new JsonFactory(new ObjectMapper());
+ JsonParser parser = jf.createParser(JSON_WITH_FIELDS_TO_SCRUB);
+ JsonNode root = parser.readValueAsTree();
+
+ Config config = new Config();
+ config.setFields("xxxx");
+ config.setReplacement("*");
+ Scrubber scrubber = new ScrubResponseGatewayFilterFactory.Scrubber(config);
+
+ JsonNode scrubbed = Mono.from(scrubber.apply(null, root)).block();
+ assertNotNull(scrubbed);
+ assertNotEquals("*", scrubbed.get("ssn").asText());
+ }
+
+}
diff --git a/spring-cloud-modules/spring-cloud-gateway/src/test/java/com/baeldung/springcloudgateway/customfilters/gatewayapp/filters/factories/ScrubResponseGatewayFilterLiveTest.java b/spring-cloud-modules/spring-cloud-gateway/src/test/java/com/baeldung/springcloudgateway/customfilters/gatewayapp/filters/factories/ScrubResponseGatewayFilterLiveTest.java
new file mode 100644
index 0000000000..8906af774e
--- /dev/null
+++ b/spring-cloud-modules/spring-cloud-gateway/src/test/java/com/baeldung/springcloudgateway/customfilters/gatewayapp/filters/factories/ScrubResponseGatewayFilterLiveTest.java
@@ -0,0 +1,135 @@
+package com.baeldung.springcloudgateway.customfilters.gatewayapp.filters.factories;
+
+import java.io.IOException;
+import java.net.InetSocketAddress;
+import java.util.Collections;
+
+import org.junit.AfterClass;
+import org.junit.BeforeClass;
+import org.junit.jupiter.api.Test;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.boot.CommandLineRunner;
+import org.springframework.boot.test.context.SpringBootTest;
+import org.springframework.boot.test.context.SpringBootTest.WebEnvironment;
+import org.springframework.boot.test.context.TestConfiguration;
+import org.springframework.boot.web.server.LocalServerPort;
+import org.springframework.cloud.gateway.filter.factory.SetPathGatewayFilterFactory;
+import org.springframework.cloud.gateway.route.RouteLocator;
+import org.springframework.cloud.gateway.route.builder.RouteLocatorBuilder;
+import org.springframework.context.annotation.Bean;
+import org.springframework.context.annotation.Primary;
+import org.springframework.http.MediaType;
+import org.springframework.http.client.reactive.ReactorClientHttpConnector;
+import org.springframework.security.config.web.server.ServerHttpSecurity;
+import org.springframework.security.web.server.SecurityWebFilterChain;
+import org.springframework.test.web.reactive.server.WebTestClient;
+
+import com.sun.net.httpserver.HttpServer;
+
+import reactor.netty.http.client.HttpClient;
+
+@SpringBootTest(webEnvironment = WebEnvironment.RANDOM_PORT)
+public class ScrubResponseGatewayFilterLiveTest {
+
+ private static Logger log = LoggerFactory.getLogger(ScrubResponseGatewayFilterLiveTest.class);
+
+ private static final String JSON_WITH_FIELDS_TO_SCRUB = "{\r\n"
+ + " \"name\" : \"John Doe\",\r\n"
+ + " \"ssn\" : \"123-45-9999\",\r\n"
+ + " \"account\" : \"9999888877770000\"\r\n"
+ + "}";
+
+ private static final String JSON_WITH_SCRUBBED_FIELDS = "{\r\n"
+ + " \"name\" : \"John Doe\",\r\n"
+ + " \"ssn\" : \"*\",\r\n"
+ + " \"account\" : \"9999888877770000\"\r\n"
+ + "}";
+
+ @LocalServerPort
+ String port;
+
+ @Autowired
+ private WebTestClient client;
+
+ @Autowired HttpServer server;
+
+ @Test
+ public void givenRequestToScrubRoute_thenResponseScrubbed() {
+
+ client.get()
+ .uri("/scrub")
+ .accept(MediaType.APPLICATION_JSON)
+ .exchange()
+ .expectStatus()
+ .is2xxSuccessful()
+ .expectHeader()
+ .contentType(MediaType.APPLICATION_JSON)
+ .expectBody()
+ .json(JSON_WITH_SCRUBBED_FIELDS);
+ }
+
+
+ @TestConfiguration
+ public static class TestRoutesConfiguration {
+
+
+ @Bean
+ public RouteLocator scrubSsnRoute(RouteLocatorBuilder builder, ScrubResponseGatewayFilterFactory scrubFilterFactory, SetPathGatewayFilterFactory pathFilterFactory, HttpServer server ) {
+
+ log.info("[I92] Creating scrubSsnRoute...");
+
+ int mockServerPort = server.getAddress().getPort();
+ ScrubResponseGatewayFilterFactory.Config config = new ScrubResponseGatewayFilterFactory.Config();
+ config.setFields("ssn");
+ config.setReplacement("*");
+
+ SetPathGatewayFilterFactory.Config pathConfig = new SetPathGatewayFilterFactory.Config();
+ pathConfig.setTemplate("/customer");
+
+ return builder.routes()
+ .route("scrub_ssn",
+ r -> r.path("/scrub")
+ .filters(
+ f -> f
+ .filter(scrubFilterFactory.apply(config))
+ .filter(pathFilterFactory.apply(pathConfig)))
+ .uri("http://localhost:" + mockServerPort ))
+ .build();
+ }
+
+ @Bean
+ public SecurityWebFilterChain testFilterChain(ServerHttpSecurity http ) {
+
+ // @formatter:off
+ return http.authorizeExchange()
+ .anyExchange()
+ .permitAll()
+ .and()
+ .build();
+ // @formatter:on
+ }
+
+ @Bean
+ public HttpServer mockServer() throws IOException {
+
+ log.info("[I48] Starting mock server...");
+
+ HttpServer server = HttpServer.create(new InetSocketAddress(0),0);
+ server.createContext("/customer", (exchange) -> {
+ exchange.getResponseHeaders().set("Content-Type", "application/json");
+
+ byte[] response = JSON_WITH_FIELDS_TO_SCRUB.getBytes("UTF-8");
+ exchange.sendResponseHeaders(200,response.length);
+ exchange.getResponseBody().write(response);
+ });
+
+ server.setExecutor(null);
+ server.start();
+
+ log.info("[I65] Mock server started. port={}", server.getAddress().getPort());
+ return server;
+ }
+ }
+}
diff --git a/spring-cloud-modules/spring-cloud-openfeign/src/main/resources/application.properties b/spring-cloud-modules/spring-cloud-openfeign/src/main/resources/application.properties
index 7188b74c9b..a0d9d89934 100644
--- a/spring-cloud-modules/spring-cloud-openfeign/src/main/resources/application.properties
+++ b/spring-cloud-modules/spring-cloud-openfeign/src/main/resources/application.properties
@@ -1,7 +1,7 @@
server.port=8085
spring.main.allow-bean-definition-overriding=true
spring.application.name= openfeign
-logging.level.com.baeldung.cloud.openfeign.client: DEBUG
+logging.level.com.baeldung.cloud.openfeign.client=DEBUG
feign.hystrix.enabled=true
spring.security.oauth2.client.registration.keycloak.authorization-grant-type=client_credentials
diff --git a/spring-cloud-modules/spring-cloud-rest/.gitignore b/spring-cloud-modules/spring-cloud-rest/.gitignore
deleted file mode 100644
index 2af7cefb0a..0000000000
--- a/spring-cloud-modules/spring-cloud-rest/.gitignore
+++ /dev/null
@@ -1,24 +0,0 @@
-target/
-!.mvn/wrapper/maven-wrapper.jar
-
-### STS ###
-.apt_generated
-.classpath
-.factorypath
-.project
-.settings
-.springBeans
-
-### 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-cloud-modules/spring-cloud-rest/README.md b/spring-cloud-modules/spring-cloud-rest/README.md
deleted file mode 100644
index 25d62007b6..0000000000
--- a/spring-cloud-modules/spring-cloud-rest/README.md
+++ /dev/null
@@ -1,5 +0,0 @@
-## Spring Cloud REST
-
-This module contains articles about RESTful APIs with Spring Cloud
-
-Code for an ebook - "A REST API with Spring Boot and Spring Cloud"
diff --git a/spring-cloud-modules/spring-cloud-rest/application-config/discovery.properties b/spring-cloud-modules/spring-cloud-rest/application-config/discovery.properties
deleted file mode 100644
index 2f2a56248f..0000000000
--- a/spring-cloud-modules/spring-cloud-rest/application-config/discovery.properties
+++ /dev/null
@@ -1,16 +0,0 @@
-spring.application.name=discovery
-server.port=8761
-
-#### cloud
-eureka.instance.hostname=localhost
-eureka.client.serviceUrl.defaultZone=${EUREKA_URI:http://system:systemPass@localhost:8761/eureka}
-eureka.client.registerWithEureka=false
-eureka.client.fetchRegistry=false
-
-#### security
-security.basic.enabled=true
-security.basic.path=/**
-security.user.name=system
-security.user.password=systemPass
-security.user.role=ADMIN
-security.sessions=always
\ No newline at end of file
diff --git a/spring-cloud-modules/spring-cloud-rest/application-config/resource.properties b/spring-cloud-modules/spring-cloud-rest/application-config/resource.properties
deleted file mode 100644
index 759bb87895..0000000000
--- a/spring-cloud-modules/spring-cloud-rest/application-config/resource.properties
+++ /dev/null
@@ -1,20 +0,0 @@
-spring.application.name=resource
-#server.port=0
-
-#### cloud
-eureka.client.serviceUrl.defaultZone=${EUREKA_URI:http://system:systemPass@localhost:8761/eureka}
-eureka.instance.preferIpAddress=true
-
-#### persistence
-spring.datasource.driver-class-name=org.h2.Driver
-spring.datasource.url=jdbc:h2:mem:cloud_rest;DB_CLOSE_DELAY=-1;DB_CLOSE_ON_EXIT=FALSE
-spring.datasource.username=sa
-spring.datasource.password=
-
-#### security
-security.basic.enabled=true
-security.basic.path=/**
-security.user.name=user
-security.user.password=userPass
-security.user.role=USER
-security.sessions=always
\ No newline at end of file
diff --git a/spring-cloud-modules/spring-cloud-rest/pom.xml b/spring-cloud-modules/spring-cloud-rest/pom.xml
deleted file mode 100644
index 0b3cda772a..0000000000
--- a/spring-cloud-modules/spring-cloud-rest/pom.xml
+++ /dev/null
@@ -1,52 +0,0 @@
-
-
- 4.0.0
- com.baeldung
- spring-cloud-rest
- 1.0.0-SNAPSHOT
- spring-cloud-rest
- pom
-
-
- com.baeldung.spring.cloud
- spring-cloud-modules
- 1.0.0-SNAPSHOT
-
-
-
- spring-cloud-rest-config-server
- spring-cloud-rest-discovery-server
- spring-cloud-rest-books-api
- spring-cloud-rest-reviews-api
-
-
-
-
-
-
- org.apache.maven.plugins
- maven-compiler-plugin
- ${maven-compiler-plugin.version}
-
- ${maven.compiler.source}
- ${maven.compiler.target}
-
-
-
- org.springframework.boot
- spring-boot-maven-plugin
- ${spring-boot-maven-plugin.version}
-
-
-
-
-
-
- 1.4.2.RELEASE
- 1.8
- 1.8
-
-
-
\ No newline at end of file
diff --git a/spring-cloud-modules/spring-cloud-rest/spring-cloud-rest-books-api/pom.xml b/spring-cloud-modules/spring-cloud-rest/spring-cloud-rest-books-api/pom.xml
deleted file mode 100644
index c7ff472655..0000000000
--- a/spring-cloud-modules/spring-cloud-rest/spring-cloud-rest-books-api/pom.xml
+++ /dev/null
@@ -1,78 +0,0 @@
-
-
- 4.0.0
- com.baeldung
- spring-cloud-rest-books-api
- 0.0.1-SNAPSHOT
- spring-cloud-rest-books-api
- jar
- Simple books API
-
-
- com.baeldung
- parent-boot-1
- 0.0.1-SNAPSHOT
- ../../../parent-boot-1
-
-
-
-
-
- org.junit
- junit-bom
- ${junit-jupiter.version}
- pom
- import
-
-
- org.springframework.cloud
- spring-cloud-dependencies
- Camden.SR4
- pom
- import
-
-
-
-
-
-
- org.springframework.cloud
- spring-cloud-starter-config
-
-
- org.springframework.cloud
- spring-cloud-starter-eureka
-
-
- org.springframework.boot
- spring-boot-starter-data-jpa
-
-
- com.h2database
- h2
-
-
- org.springframework.boot
- spring-boot-starter-web
-
-
- org.springframework.boot
- spring-boot-starter-data-rest
-
-
- org.springframework.boot
- spring-boot-starter-security
-
-
- org.springframework.session
- spring-session
-
-
- org.springframework.boot
- spring-boot-starter-data-redis
-
-
-
-
\ No newline at end of file
diff --git a/spring-cloud-modules/spring-cloud-rest/spring-cloud-rest-books-api/src/main/java/com/baeldung/BooksApiApplication.java b/spring-cloud-modules/spring-cloud-rest/spring-cloud-rest-books-api/src/main/java/com/baeldung/BooksApiApplication.java
deleted file mode 100644
index abcbabe737..0000000000
--- a/spring-cloud-modules/spring-cloud-rest/spring-cloud-rest-books-api/src/main/java/com/baeldung/BooksApiApplication.java
+++ /dev/null
@@ -1,14 +0,0 @@
-package com.baeldung;
-
-import org.springframework.boot.SpringApplication;
-import org.springframework.boot.autoconfigure.SpringBootApplication;
-import org.springframework.cloud.netflix.eureka.EnableEurekaClient;
-
-@SpringBootApplication
-@EnableEurekaClient
-public class BooksApiApplication {
-
- public static void main(String[] args) {
- SpringApplication.run(BooksApiApplication.class, args);
- }
-}
diff --git a/spring-cloud-modules/spring-cloud-rest/spring-cloud-rest-books-api/src/main/java/com/baeldung/SessionConfig.java b/spring-cloud-modules/spring-cloud-rest/spring-cloud-rest-books-api/src/main/java/com/baeldung/SessionConfig.java
deleted file mode 100644
index 6c984fb6d5..0000000000
--- a/spring-cloud-modules/spring-cloud-rest/spring-cloud-rest-books-api/src/main/java/com/baeldung/SessionConfig.java
+++ /dev/null
@@ -1,8 +0,0 @@
-package com.baeldung;
-
-import org.springframework.session.data.redis.config.annotation.web.http.EnableRedisHttpSession;
-import org.springframework.session.web.context.AbstractHttpSessionApplicationInitializer;
-
-@EnableRedisHttpSession
-public class SessionConfig extends AbstractHttpSessionApplicationInitializer {
-}
diff --git a/spring-cloud-modules/spring-cloud-rest/spring-cloud-rest-books-api/src/main/java/com/baeldung/persistence/dao/BookRepository.java b/spring-cloud-modules/spring-cloud-rest/spring-cloud-rest-books-api/src/main/java/com/baeldung/persistence/dao/BookRepository.java
deleted file mode 100644
index 434d4332f7..0000000000
--- a/spring-cloud-modules/spring-cloud-rest/spring-cloud-rest-books-api/src/main/java/com/baeldung/persistence/dao/BookRepository.java
+++ /dev/null
@@ -1,13 +0,0 @@
-package com.baeldung.persistence.dao;
-
-import com.baeldung.persistence.model.Book;
-import org.springframework.data.domain.Page;
-import org.springframework.data.domain.Pageable;
-import org.springframework.data.repository.CrudRepository;
-import org.springframework.data.repository.query.Param;
-import org.springframework.data.rest.core.annotation.RepositoryRestResource;
-
-@RepositoryRestResource(collectionResourceRel = "books", path = "books")
-public interface BookRepository extends CrudRepository {
- Page findByTitle(@Param("title") String title, Pageable pageable);
-}
diff --git a/spring-cloud-modules/spring-cloud-rest/spring-cloud-rest-books-api/src/main/java/com/baeldung/persistence/model/Book.java b/spring-cloud-modules/spring-cloud-rest/spring-cloud-rest-books-api/src/main/java/com/baeldung/persistence/model/Book.java
deleted file mode 100644
index 26fe3625ec..0000000000
--- a/spring-cloud-modules/spring-cloud-rest/spring-cloud-rest-books-api/src/main/java/com/baeldung/persistence/model/Book.java
+++ /dev/null
@@ -1,111 +0,0 @@
-package com.baeldung.persistence.model;
-
-import javax.persistence.Column;
-import javax.persistence.Entity;
-import javax.persistence.GeneratedValue;
-import javax.persistence.GenerationType;
-import javax.persistence.Id;
-
-@Entity
-public class Book {
- @Id
- @GeneratedValue(strategy = GenerationType.AUTO)
- private long id;
-
- @Column(nullable = false, unique = true)
- private String title;
-
- @Column(nullable = false)
- private String author;
-
- //
-
- public Book() {
- super();
- }
-
- public Book(String title, String author) {
- super();
- this.title = title;
- this.author = author;
- }
-
- //
-
- public long getId() {
- return id;
- }
-
- public void setId(long id) {
- this.id = id;
- }
-
- public String getTitle() {
- return title;
- }
-
- public void setTitle(String title) {
- this.title = title;
- }
-
- public String getAuthor() {
- return author;
- }
-
- public void setAuthor(String author) {
- this.author = author;
- }
-
- //
-
- @Override
- public int hashCode() {
- final int prime = 31;
- int result = 1;
- result = (prime * result) + ((author == null) ? 0 : author.hashCode());
- result = (prime * result) + (int) (id ^ (id >>> 32));
- result = (prime * result) + ((title == null) ? 0 : title.hashCode());
- return result;
- }
-
- @Override
- public boolean equals(Object obj) {
- if (this == obj) {
- return true;
- }
- if (obj == null) {
- return false;
- }
- if (getClass() != obj.getClass()) {
- return false;
- }
- final Book other = (Book) obj;
- if (author == null) {
- if (other.author != null) {
- return false;
- }
- } else if (!author.equals(other.author)) {
- return false;
- }
- if (id != other.id) {
- return false;
- }
-
- if (title == null) {
- if (other.title != null) {
- return false;
- }
- } else if (!title.equals(other.title)) {
- return false;
- }
- return true;
- }
-
- @Override
- public String toString() {
- final StringBuilder builder = new StringBuilder();
- builder.append("Book [id=").append(id).append(", title=").append(title).append(", author=").append(author).append("]");
- return builder.toString();
- }
-
-}
diff --git a/spring-cloud-modules/spring-cloud-rest/spring-cloud-rest-books-api/src/main/resources/bootstrap.properties b/spring-cloud-modules/spring-cloud-rest/spring-cloud-rest-books-api/src/main/resources/bootstrap.properties
deleted file mode 100644
index 2cb3b71ca7..0000000000
--- a/spring-cloud-modules/spring-cloud-rest/spring-cloud-rest-books-api/src/main/resources/bootstrap.properties
+++ /dev/null
@@ -1,9 +0,0 @@
-spring.cloud.config.name=resource
-spring.cloud.config.discovery.service-id=config
-spring.cloud.config.discovery.enabled=true
-spring.cloud.config.username=configUser
-spring.cloud.config.password=configPassword
-
-eureka.client.serviceUrl.defaultZone=http://system:systemPass@localhost:8761/eureka
-
-server.port=8084
\ No newline at end of file
diff --git a/spring-cloud-modules/spring-cloud-rest/spring-cloud-rest-books-api/src/test/java/com/baeldung/BooksApiIntegrationTest.java b/spring-cloud-modules/spring-cloud-rest/spring-cloud-rest-books-api/src/test/java/com/baeldung/BooksApiIntegrationTest.java
deleted file mode 100644
index 2a90b668cb..0000000000
--- a/spring-cloud-modules/spring-cloud-rest/spring-cloud-rest-books-api/src/test/java/com/baeldung/BooksApiIntegrationTest.java
+++ /dev/null
@@ -1,43 +0,0 @@
-package com.baeldung;
-
-import org.junit.Test;
-import org.junit.runner.RunWith;
-import org.mockito.Mockito;
-import org.springframework.boot.test.context.SpringBootTest;
-import org.springframework.context.annotation.Bean;
-import org.springframework.context.annotation.Configuration;
-import org.springframework.data.redis.connection.RedisConnection;
-import org.springframework.data.redis.connection.RedisConnectionFactory;
-import org.springframework.data.redis.serializer.RedisSerializer;
-import org.springframework.session.data.redis.config.annotation.web.http.EnableRedisHttpSession;
-import org.springframework.test.context.junit4.SpringRunner;
-
-@RunWith(SpringRunner.class)
-@SpringBootTest
-public class BooksApiIntegrationTest {
-
- @Test
- public void contextLoads() {
- }
-
- @EnableRedisHttpSession
- @Configuration
- static class Config {
-
- @Bean
- @SuppressWarnings("unchecked")
- public RedisSerializer
diff --git a/spring-security-modules/spring-session/spring-session-mongodb/src/main/resources/logback.xml b/spring-security-modules/spring-session/spring-session-mongodb/src/main/resources/logback.xml
deleted file mode 100644
index 7d900d8ea8..0000000000
--- a/spring-security-modules/spring-session/spring-session-mongodb/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-security-modules/spring-session/spring-session-redis/src/main/resources/logback.xml b/spring-security-modules/spring-session/spring-session-redis/src/main/resources/logback.xml
deleted file mode 100644
index 7d900d8ea8..0000000000
--- a/spring-security-modules/spring-session/spring-session-redis/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-web-modules/pom.xml b/spring-web-modules/pom.xml
index a5c23c1649..a2bdc9035e 100644
--- a/spring-web-modules/pom.xml
+++ b/spring-web-modules/pom.xml
@@ -41,6 +41,7 @@
spring-resttemplate
spring-resttemplate-2
spring-resttemplate-3
+ spring-session
spring-thymeleaf
spring-thymeleaf-2
spring-thymeleaf-3
diff --git a/spring-security-modules/spring-session/README.md b/spring-web-modules/spring-session/README.md
similarity index 100%
rename from spring-security-modules/spring-session/README.md
rename to spring-web-modules/spring-session/README.md
diff --git a/spring-security-modules/spring-session/pom.xml b/spring-web-modules/spring-session/pom.xml
similarity index 100%
rename from spring-security-modules/spring-session/pom.xml
rename to spring-web-modules/spring-session/pom.xml
diff --git a/spring-security-modules/spring-session/spring-session-jdbc/README.md b/spring-web-modules/spring-session/spring-session-jdbc/README.md
similarity index 100%
rename from spring-security-modules/spring-session/spring-session-jdbc/README.md
rename to spring-web-modules/spring-session/spring-session-jdbc/README.md
diff --git a/spring-security-modules/spring-session/spring-session-jdbc/pom.xml b/spring-web-modules/spring-session/spring-session-jdbc/pom.xml
similarity index 100%
rename from spring-security-modules/spring-session/spring-session-jdbc/pom.xml
rename to spring-web-modules/spring-session/spring-session-jdbc/pom.xml
diff --git a/spring-security-modules/spring-session/spring-session-jdbc/src/main/java/com/baeldung/springsessionjdbc/SpringSessionJdbcApplication.java b/spring-web-modules/spring-session/spring-session-jdbc/src/main/java/com/baeldung/springsessionjdbc/SpringSessionJdbcApplication.java
similarity index 100%
rename from spring-security-modules/spring-session/spring-session-jdbc/src/main/java/com/baeldung/springsessionjdbc/SpringSessionJdbcApplication.java
rename to spring-web-modules/spring-session/spring-session-jdbc/src/main/java/com/baeldung/springsessionjdbc/SpringSessionJdbcApplication.java
diff --git a/spring-security-modules/spring-session/spring-session-jdbc/src/main/java/com/baeldung/springsessionjdbc/controller/SpringSessionJdbcController.java b/spring-web-modules/spring-session/spring-session-jdbc/src/main/java/com/baeldung/springsessionjdbc/controller/SpringSessionJdbcController.java
similarity index 100%
rename from spring-security-modules/spring-session/spring-session-jdbc/src/main/java/com/baeldung/springsessionjdbc/controller/SpringSessionJdbcController.java
rename to spring-web-modules/spring-session/spring-session-jdbc/src/main/java/com/baeldung/springsessionjdbc/controller/SpringSessionJdbcController.java
diff --git a/spring-security-modules/spring-session/spring-session-jdbc/src/main/resources/application.properties b/spring-web-modules/spring-session/spring-session-jdbc/src/main/resources/application.properties
similarity index 100%
rename from spring-security-modules/spring-session/spring-session-jdbc/src/main/resources/application.properties
rename to spring-web-modules/spring-session/spring-session-jdbc/src/main/resources/application.properties
diff --git a/spring-cloud-modules/spring-cloud-rest/spring-cloud-rest-discovery-server/src/main/resources/logback.xml b/spring-web-modules/spring-session/spring-session-jdbc/src/main/resources/logback.xml
similarity index 100%
rename from spring-cloud-modules/spring-cloud-rest/spring-cloud-rest-discovery-server/src/main/resources/logback.xml
rename to spring-web-modules/spring-session/spring-session-jdbc/src/main/resources/logback.xml
diff --git a/spring-security-modules/spring-session/spring-session-jdbc/src/test/java/com/baeldung/SpringContextTest.java b/spring-web-modules/spring-session/spring-session-jdbc/src/test/java/com/baeldung/SpringContextTest.java
similarity index 100%
rename from spring-security-modules/spring-session/spring-session-jdbc/src/test/java/com/baeldung/SpringContextTest.java
rename to spring-web-modules/spring-session/spring-session-jdbc/src/test/java/com/baeldung/SpringContextTest.java
diff --git a/spring-security-modules/spring-session/spring-session-jdbc/src/test/java/com/baeldung/springsessionjdbc/SpringSessionJdbcIntegrationTest.java b/spring-web-modules/spring-session/spring-session-jdbc/src/test/java/com/baeldung/springsessionjdbc/SpringSessionJdbcIntegrationTest.java
similarity index 100%
rename from spring-security-modules/spring-session/spring-session-jdbc/src/test/java/com/baeldung/springsessionjdbc/SpringSessionJdbcIntegrationTest.java
rename to spring-web-modules/spring-session/spring-session-jdbc/src/test/java/com/baeldung/springsessionjdbc/SpringSessionJdbcIntegrationTest.java
diff --git a/spring-security-modules/spring-session/spring-session-mongodb/README.md b/spring-web-modules/spring-session/spring-session-mongodb/README.md
similarity index 100%
rename from spring-security-modules/spring-session/spring-session-mongodb/README.md
rename to spring-web-modules/spring-session/spring-session-mongodb/README.md
diff --git a/spring-security-modules/spring-session/spring-session-mongodb/pom.xml b/spring-web-modules/spring-session/spring-session-mongodb/pom.xml
similarity index 100%
rename from spring-security-modules/spring-session/spring-session-mongodb/pom.xml
rename to spring-web-modules/spring-session/spring-session-mongodb/pom.xml
diff --git a/spring-security-modules/spring-session/spring-session-mongodb/src/main/java/com/baeldung/springsessionmongodb/SpringSessionMongoDBApplication.java b/spring-web-modules/spring-session/spring-session-mongodb/src/main/java/com/baeldung/springsessionmongodb/SpringSessionMongoDBApplication.java
similarity index 100%
rename from spring-security-modules/spring-session/spring-session-mongodb/src/main/java/com/baeldung/springsessionmongodb/SpringSessionMongoDBApplication.java
rename to spring-web-modules/spring-session/spring-session-mongodb/src/main/java/com/baeldung/springsessionmongodb/SpringSessionMongoDBApplication.java
diff --git a/spring-security-modules/spring-session/spring-session-mongodb/src/main/java/com/baeldung/springsessionmongodb/controller/SpringSessionMongoDBController.java b/spring-web-modules/spring-session/spring-session-mongodb/src/main/java/com/baeldung/springsessionmongodb/controller/SpringSessionMongoDBController.java
similarity index 100%
rename from spring-security-modules/spring-session/spring-session-mongodb/src/main/java/com/baeldung/springsessionmongodb/controller/SpringSessionMongoDBController.java
rename to spring-web-modules/spring-session/spring-session-mongodb/src/main/java/com/baeldung/springsessionmongodb/controller/SpringSessionMongoDBController.java
diff --git a/spring-security-modules/spring-session/spring-session-mongodb/src/main/resources/application.properties b/spring-web-modules/spring-session/spring-session-mongodb/src/main/resources/application.properties
similarity index 100%
rename from spring-security-modules/spring-session/spring-session-mongodb/src/main/resources/application.properties
rename to spring-web-modules/spring-session/spring-session-mongodb/src/main/resources/application.properties
diff --git a/spring-cloud-modules/spring-cloud-rest/spring-cloud-rest-reviews-api/src/main/resources/logback.xml b/spring-web-modules/spring-session/spring-session-mongodb/src/main/resources/logback.xml
similarity index 100%
rename from spring-cloud-modules/spring-cloud-rest/spring-cloud-rest-reviews-api/src/main/resources/logback.xml
rename to spring-web-modules/spring-session/spring-session-mongodb/src/main/resources/logback.xml
diff --git a/spring-security-modules/spring-session/spring-session-mongodb/src/test/java/com/baeldung/SpringContextTest.java b/spring-web-modules/spring-session/spring-session-mongodb/src/test/java/com/baeldung/SpringContextTest.java
similarity index 100%
rename from spring-security-modules/spring-session/spring-session-mongodb/src/test/java/com/baeldung/SpringContextTest.java
rename to spring-web-modules/spring-session/spring-session-mongodb/src/test/java/com/baeldung/SpringContextTest.java
diff --git a/spring-security-modules/spring-session/spring-session-mongodb/src/test/java/com/baeldung/springsessionmongodb/SpringSessionMongoDBIntegrationTest.java b/spring-web-modules/spring-session/spring-session-mongodb/src/test/java/com/baeldung/springsessionmongodb/SpringSessionMongoDBIntegrationTest.java
similarity index 100%
rename from spring-security-modules/spring-session/spring-session-mongodb/src/test/java/com/baeldung/springsessionmongodb/SpringSessionMongoDBIntegrationTest.java
rename to spring-web-modules/spring-session/spring-session-mongodb/src/test/java/com/baeldung/springsessionmongodb/SpringSessionMongoDBIntegrationTest.java
diff --git a/spring-security-modules/spring-session/spring-session-mongodb/src/test/resources/application.properties b/spring-web-modules/spring-session/spring-session-mongodb/src/test/resources/application.properties
similarity index 100%
rename from spring-security-modules/spring-session/spring-session-mongodb/src/test/resources/application.properties
rename to spring-web-modules/spring-session/spring-session-mongodb/src/test/resources/application.properties
diff --git a/spring-security-modules/spring-session/spring-session-redis/README.md b/spring-web-modules/spring-session/spring-session-redis/README.md
similarity index 100%
rename from spring-security-modules/spring-session/spring-session-redis/README.md
rename to spring-web-modules/spring-session/spring-session-redis/README.md
diff --git a/spring-security-modules/spring-session/spring-session-redis/pom.xml b/spring-web-modules/spring-session/spring-session-redis/pom.xml
similarity index 100%
rename from spring-security-modules/spring-session/spring-session-redis/pom.xml
rename to spring-web-modules/spring-session/spring-session-redis/pom.xml
diff --git a/spring-security-modules/spring-session/spring-session-redis/src/main/java/com/baeldung/spring/session/PasswordEncoderConfig.java b/spring-web-modules/spring-session/spring-session-redis/src/main/java/com/baeldung/spring/session/PasswordEncoderConfig.java
similarity index 100%
rename from spring-security-modules/spring-session/spring-session-redis/src/main/java/com/baeldung/spring/session/PasswordEncoderConfig.java
rename to spring-web-modules/spring-session/spring-session-redis/src/main/java/com/baeldung/spring/session/PasswordEncoderConfig.java
diff --git a/spring-security-modules/spring-session/spring-session-redis/src/main/java/com/baeldung/spring/session/SecurityConfig.java b/spring-web-modules/spring-session/spring-session-redis/src/main/java/com/baeldung/spring/session/SecurityConfig.java
similarity index 100%
rename from spring-security-modules/spring-session/spring-session-redis/src/main/java/com/baeldung/spring/session/SecurityConfig.java
rename to spring-web-modules/spring-session/spring-session-redis/src/main/java/com/baeldung/spring/session/SecurityConfig.java
diff --git a/spring-security-modules/spring-session/spring-session-redis/src/main/java/com/baeldung/spring/session/SessionController.java b/spring-web-modules/spring-session/spring-session-redis/src/main/java/com/baeldung/spring/session/SessionController.java
similarity index 100%
rename from spring-security-modules/spring-session/spring-session-redis/src/main/java/com/baeldung/spring/session/SessionController.java
rename to spring-web-modules/spring-session/spring-session-redis/src/main/java/com/baeldung/spring/session/SessionController.java
diff --git a/spring-security-modules/spring-session/spring-session-redis/src/main/java/com/baeldung/spring/session/SessionWebApplication.java b/spring-web-modules/spring-session/spring-session-redis/src/main/java/com/baeldung/spring/session/SessionWebApplication.java
similarity index 100%
rename from spring-security-modules/spring-session/spring-session-redis/src/main/java/com/baeldung/spring/session/SessionWebApplication.java
rename to spring-web-modules/spring-session/spring-session-redis/src/main/java/com/baeldung/spring/session/SessionWebApplication.java
diff --git a/spring-security-modules/spring-session/spring-session-redis/src/main/resources/application.properties b/spring-web-modules/spring-session/spring-session-redis/src/main/resources/application.properties
similarity index 100%
rename from spring-security-modules/spring-session/spring-session-redis/src/main/resources/application.properties
rename to spring-web-modules/spring-session/spring-session-redis/src/main/resources/application.properties
diff --git a/spring-security-modules/spring-session/spring-session-jdbc/src/main/resources/logback.xml b/spring-web-modules/spring-session/spring-session-redis/src/main/resources/logback.xml
similarity index 100%
rename from spring-security-modules/spring-session/spring-session-jdbc/src/main/resources/logback.xml
rename to spring-web-modules/spring-session/spring-session-redis/src/main/resources/logback.xml
diff --git a/spring-security-modules/spring-session/spring-session-redis/src/test/java/com/baeldung/SpringContextLiveTest.java b/spring-web-modules/spring-session/spring-session-redis/src/test/java/com/baeldung/SpringContextLiveTest.java
similarity index 100%
rename from spring-security-modules/spring-session/spring-session-redis/src/test/java/com/baeldung/SpringContextLiveTest.java
rename to spring-web-modules/spring-session/spring-session-redis/src/test/java/com/baeldung/SpringContextLiveTest.java
diff --git a/spring-security-modules/spring-session/spring-session-redis/src/test/java/com/baeldung/spring/session/SessionControllerIntegrationTest.java b/spring-web-modules/spring-session/spring-session-redis/src/test/java/com/baeldung/spring/session/SessionControllerIntegrationTest.java
similarity index 100%
rename from spring-security-modules/spring-session/spring-session-redis/src/test/java/com/baeldung/spring/session/SessionControllerIntegrationTest.java
rename to spring-web-modules/spring-session/spring-session-redis/src/test/java/com/baeldung/spring/session/SessionControllerIntegrationTest.java
diff --git a/spring-web-modules/spring-thymeleaf/README.md b/spring-web-modules/spring-thymeleaf/README.md
index 12eb97b4a2..653e6df5b9 100644
--- a/spring-web-modules/spring-thymeleaf/README.md
+++ b/spring-web-modules/spring-thymeleaf/README.md
@@ -9,6 +9,7 @@ This module contains articles about Spring with Thymeleaf
- [Spring MVC + Thymeleaf 3.0: New Features](https://www.baeldung.com/spring-thymeleaf-3)
- [How to Work with Dates in Thymeleaf](https://www.baeldung.com/dates-in-thymeleaf)
- [Working with Fragments in Thymeleaf](https://www.baeldung.com/spring-thymeleaf-fragments)
+- [JavaScript Function Call with Thymeleaf](https://www.baeldung.com/thymeleaf-js-function-call)
- [[next -->]](/spring-thymeleaf-2)
### Build the Project
diff --git a/testing-modules/junit5-migration/src/test/java/com/baeldung/junit5/ConditionalExecutionUnitTest.java b/testing-modules/junit5-migration/src/test/java/com/baeldung/junit5/ConditionalExecutionUnitTest.java
index 7f76e237f1..b5361ccce6 100644
--- a/testing-modules/junit5-migration/src/test/java/com/baeldung/junit5/ConditionalExecutionUnitTest.java
+++ b/testing-modules/junit5-migration/src/test/java/com/baeldung/junit5/ConditionalExecutionUnitTest.java
@@ -35,7 +35,7 @@ public class ConditionalExecutionUnitTest {
@Test
@EnabledIfSystemProperty(named = "os.arch", matches = ".*64.*")
- public void whenRunningTestsOn64BitArchitectures_thenTestIsDisabled() {
+ public void whenRunningTestsOn64BitArchitectures_thenTestIsEnabled() {
Integer value = 5; // result of an algorithm
assertNotEquals(0, value, "The result cannot be 0");