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 defaultRedisSerializer() { - return Mockito.mock(RedisSerializer.class); - } - - @Bean - public RedisConnectionFactory connectionFactory() { - - RedisConnectionFactory factory = Mockito.mock(RedisConnectionFactory.class); - RedisConnection connection = Mockito.mock(RedisConnection.class); - Mockito.when(factory.getConnection()).thenReturn(connection); - - return factory; - } - } -} diff --git a/spring-cloud-modules/spring-cloud-rest/spring-cloud-rest-books-api/src/test/java/com/baeldung/RestApiLiveTest.java b/spring-cloud-modules/spring-cloud-rest/spring-cloud-rest-books-api/src/test/java/com/baeldung/RestApiLiveTest.java deleted file mode 100644 index 4184b3aef7..0000000000 --- a/spring-cloud-modules/spring-cloud-rest/spring-cloud-rest-books-api/src/test/java/com/baeldung/RestApiLiveTest.java +++ /dev/null @@ -1,156 +0,0 @@ -package com.baeldung; - -import static io.restassured.RestAssured.preemptive; -import static org.apache.commons.lang3.RandomStringUtils.randomAlphabetic; -import static org.apache.commons.lang3.RandomStringUtils.randomNumeric; -import static org.junit.Assert.assertEquals; -import static org.junit.Assert.assertTrue; - -import com.baeldung.BooksApiApplication; -import io.restassured.RestAssured; -import io.restassured.response.Response; - -import com.baeldung.persistence.model.Book; -import org.junit.Before; -import org.junit.Test; -import org.junit.runner.RunWith; -import org.springframework.boot.test.context.SpringBootTest; -import org.springframework.boot.test.context.SpringBootTest.WebEnvironment; -import org.springframework.http.HttpStatus; -import org.springframework.http.MediaType; -import org.springframework.test.context.junit4.SpringRunner; - -@RunWith(SpringRunner.class) -@SpringBootTest(classes = { BooksApiApplication.class }, webEnvironment = WebEnvironment.DEFINED_PORT) -public class RestApiLiveTest { - - private static final String API_URI = "http://localhost:8084/books"; - - @Before - public void setUp() { - RestAssured.authentication = preemptive().basic("user", "userPass"); - } - - // GET - - @Test - public void whenGetAllBooks_thenOK() { - final Response response = RestAssured.get(API_URI); - assertEquals(HttpStatus.OK.value(), response.getStatusCode()); - } - - @Test - public void whenGetCreatedBookById_thenOK() { - final Book book = createRandomBook(); - final String location = createBookAsUri(book); - - final Response response = RestAssured.get(location); - assertEquals(HttpStatus.OK.value(), response.getStatusCode()); - assertEquals(book.getTitle(), response.jsonPath().get("title")); - } - - @Test - public void whenGetCreatedBookByName_thenOK() { - final Book book = createRandomBook(); - createBookAsUri(book); - - final Response response = RestAssured.get(API_URI + "/search/findByTitle?title=" + book.getTitle()); - assertEquals(HttpStatus.OK.value(), response.getStatusCode()); - assertTrue(response.jsonPath().getLong("page.totalElements") > 0); - } - - @Test - public void whenGetNotExistBookById_thenNotFound() { - final Response response = RestAssured.get(API_URI + "/" + randomNumeric(4)); - assertEquals(HttpStatus.NOT_FOUND.value(), response.getStatusCode()); - } - - @Test - public void whenGetNotExistBookByName_thenNotFound() { - final Response response = RestAssured.get(API_URI + "/search/findByTitle?title=" + randomAlphabetic(20)); - assertEquals(HttpStatus.OK.value(), response.getStatusCode()); - assertTrue(response.jsonPath().getLong("page.totalElements") == 0); - } - - // POST - @Test - public void whenCreateNewBook_thenCreated() { - final Book book = createRandomBook(); - - final Response response = RestAssured.given().contentType(MediaType.APPLICATION_JSON_VALUE).body(book).post(API_URI); - assertEquals(HttpStatus.CREATED.value(), response.getStatusCode()); - } - - @Test - public void whenCreateDuplicateBook_thenError() { - final Book book = createRandomBook(); - createBookAsUri(book); - - // duplicate - final Response response = RestAssured.given().contentType(MediaType.APPLICATION_JSON_VALUE).body(book).post(API_URI); - assertEquals(HttpStatus.CONFLICT.value(), response.getStatusCode()); - } - - @Test - public void whenInvalidBook_thenError() { - final Book book = createRandomBook(); - book.setAuthor(null); - - final Response response = RestAssured.given().contentType(MediaType.APPLICATION_JSON_VALUE).body(book).post(API_URI); - assertEquals(HttpStatus.CONFLICT.value(), response.getStatusCode()); - } - - @Test - public void whenUpdateCreatedBook_thenUpdated() { - // create - final Book book = createRandomBook(); - final String location = createBookAsUri(book); - - // update - book.setAuthor("newAuthor"); - Response response = RestAssured.given().contentType(MediaType.APPLICATION_JSON_VALUE).body(book).put(location); - assertEquals(HttpStatus.OK.value(), response.getStatusCode()); - - // check if changes saved - response = RestAssured.get(location); - assertEquals(HttpStatus.OK.value(), response.getStatusCode()); - assertEquals("newAuthor", response.jsonPath().get("author")); - - } - - @Test - public void whenDeleteCreatedBook_thenOk() { - // create - final Book book = createRandomBook(); - final String location = createBookAsUri(book); - - // delete - Response response = RestAssured.delete(location); - assertEquals(HttpStatus.NO_CONTENT.value(), response.getStatusCode()); - - // confirm it was deleted - response = RestAssured.get(location); - assertEquals(HttpStatus.NOT_FOUND.value(), response.getStatusCode()); - } - - @Test - public void whenDeleteNotExistBook_thenError() { - final Response response = RestAssured.delete(API_URI + "/" + randomNumeric(4)); - assertEquals(HttpStatus.NOT_FOUND.value(), response.getStatusCode()); - } - - // =============================== Util - - private Book createRandomBook() { - final Book book = new Book(); - book.setTitle(randomAlphabetic(10)); - book.setAuthor(randomAlphabetic(15)); - return book; - } - - private String createBookAsUri(Book book) { - final Response response = RestAssured.given().contentType(MediaType.APPLICATION_JSON_VALUE).body(book).post(API_URI); - return response.jsonPath().get("_links.self.href"); - } - -} diff --git a/spring-cloud-modules/spring-cloud-rest/spring-cloud-rest-books-api/src/test/java/com/baeldung/SessionLiveTest.java b/spring-cloud-modules/spring-cloud-rest/spring-cloud-rest-books-api/src/test/java/com/baeldung/SessionLiveTest.java deleted file mode 100644 index 9869a650b4..0000000000 --- a/spring-cloud-modules/spring-cloud-rest/spring-cloud-rest-books-api/src/test/java/com/baeldung/SessionLiveTest.java +++ /dev/null @@ -1,70 +0,0 @@ -package com.baeldung; - -import static org.junit.Assert.assertEquals; -import static org.junit.Assert.assertTrue; - -import com.baeldung.BooksApiApplication; -import com.baeldung.SessionConfig; -import io.restassured.RestAssured; -import io.restassured.response.Response; - -import java.util.Set; - -import org.junit.Before; -import org.junit.Test; -import org.junit.runner.RunWith; -import org.springframework.boot.test.context.SpringBootTest; -import org.springframework.boot.test.context.SpringBootTest.WebEnvironment; -import org.springframework.http.HttpStatus; -import org.springframework.test.context.junit4.SpringRunner; - -import redis.clients.jedis.Jedis; - -@RunWith(SpringRunner.class) -@SpringBootTest(classes = { BooksApiApplication.class, SessionConfig.class }, webEnvironment = WebEnvironment.DEFINED_PORT) -public class SessionLiveTest { - - private Jedis jedis; - private static final String API_URI = "http://localhost:8084/books"; - - @Before - public void setUp() { - jedis = new Jedis("localhost", 6379); - jedis.flushAll(); - } - - @Test - public void whenStart_thenNoSessionsExist() { - final Set result = jedis.keys("*"); - assertEquals(0, result.size()); - } - - @Test - public void givenUnauthorizeUser_whenAccessResources_then_unAuthorized() { - final Response response = RestAssured.get(API_URI); - assertEquals(HttpStatus.UNAUTHORIZED.value(), response.getStatusCode()); - } - - @Test - public void givenAuthorizedUser_whenDeleteSession_thenUnauthorized() { - // authorize User - Response response = RestAssured.given().auth().preemptive().basic("user", "userPass").get(API_URI); - assertEquals(HttpStatus.OK.value(), response.getStatusCode()); - final String sessionCookie = response.getCookie("SESSION"); - - // check redis - final Set redisResult = jedis.keys("*"); - assertTrue(redisResult.size() > 0); - - // login with cookie - response = RestAssured.given().cookie("SESSION", sessionCookie).get(API_URI); - assertEquals(HttpStatus.OK.value(), response.getStatusCode()); - - // empty redis - jedis.flushAll(); - - // login with cookie again - response = RestAssured.given().cookie("SESSION", sessionCookie).get(API_URI); - assertEquals(HttpStatus.UNAUTHORIZED.value(), response.getStatusCode()); - } -} diff --git a/spring-cloud-modules/spring-cloud-rest/spring-cloud-rest-books-api/src/test/java/com/baeldung/SpringContextLiveTest.java b/spring-cloud-modules/spring-cloud-rest/spring-cloud-rest-books-api/src/test/java/com/baeldung/SpringContextLiveTest.java deleted file mode 100644 index 783c2f99c0..0000000000 --- a/spring-cloud-modules/spring-cloud-rest/spring-cloud-rest-books-api/src/test/java/com/baeldung/SpringContextLiveTest.java +++ /dev/null @@ -1,22 +0,0 @@ -package com.baeldung; - -import com.baeldung.BooksApiApplication; -import org.junit.Test; -import org.junit.runner.RunWith; -import org.springframework.boot.test.context.SpringBootTest; -import org.springframework.test.context.junit4.SpringRunner; - -/** - * - * This Live Test requires: - * * A Redis instance running in port 6379 (e.g. using `docker run --name some-redis -p 6379:6379 -d redis`) - * - */ -@RunWith(SpringRunner.class) -@SpringBootTest(classes = BooksApiApplication.class) -public class SpringContextLiveTest { - - @Test - public void whenSpringContextIsBootstrapped_thenNoExceptions() { - } -} diff --git a/spring-cloud-modules/spring-cloud-rest/spring-cloud-rest-books-api/src/test/resources/application.properties b/spring-cloud-modules/spring-cloud-rest/spring-cloud-rest-books-api/src/test/resources/application.properties deleted file mode 100644 index ece9ca1d94..0000000000 --- a/spring-cloud-modules/spring-cloud-rest/spring-cloud-rest-books-api/src/test/resources/application.properties +++ /dev/null @@ -1,19 +0,0 @@ -#### cloud -spring.application.name=spring-cloud-eureka-client -server.port=8084 -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/spring-cloud-rest-config-server/.gitignore b/spring-cloud-modules/spring-cloud-rest/spring-cloud-rest-config-server/.gitignore deleted file mode 100644 index 2af7cefb0a..0000000000 --- a/spring-cloud-modules/spring-cloud-rest/spring-cloud-rest-config-server/.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/spring-cloud-rest-config-server/pom.xml b/spring-cloud-modules/spring-cloud-rest/spring-cloud-rest-config-server/pom.xml deleted file mode 100644 index 9180283c2d..0000000000 --- a/spring-cloud-modules/spring-cloud-rest/spring-cloud-rest-config-server/pom.xml +++ /dev/null @@ -1,58 +0,0 @@ - - - 4.0.0 - com.baeldung - spring-cloud-rest-config-server - 0.0.1-SNAPSHOT - spring-cloud-rest-config-server - jar - Spring Cloud REST configuration server - - - 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 - ${spring-cloud.version} - pom - import - - - - - - - org.springframework.cloud - spring-cloud-config-server - - - org.springframework.cloud - spring-cloud-starter-eureka - - - org.springframework.boot - spring-boot-starter-security - - - - - Camden.SR4 - - - \ No newline at end of file diff --git a/spring-cloud-modules/spring-cloud-rest/spring-cloud-rest-config-server/src/main/java/com/baeldung/SpringCloudRestConfigApplication.java b/spring-cloud-modules/spring-cloud-rest/spring-cloud-rest-config-server/src/main/java/com/baeldung/SpringCloudRestConfigApplication.java deleted file mode 100644 index d49a21f4ed..0000000000 --- a/spring-cloud-modules/spring-cloud-rest/spring-cloud-rest-config-server/src/main/java/com/baeldung/SpringCloudRestConfigApplication.java +++ /dev/null @@ -1,17 +0,0 @@ -package com.baeldung; - -import org.springframework.boot.SpringApplication; -import org.springframework.boot.autoconfigure.SpringBootApplication; -import org.springframework.cloud.config.server.EnableConfigServer; -import org.springframework.cloud.netflix.eureka.EnableEurekaClient; - -@SpringBootApplication -@EnableConfigServer -@EnableEurekaClient -public class SpringCloudRestConfigApplication { - - public static void main(String[] args) { - SpringApplication.run(SpringCloudRestConfigApplication.class, args); - } - -} diff --git a/spring-cloud-modules/spring-cloud-rest/spring-cloud-rest-config-server/src/main/resources/application.properties b/spring-cloud-modules/spring-cloud-rest/spring-cloud-rest-config-server/src/main/resources/application.properties deleted file mode 100644 index 4071dc81ea..0000000000 --- a/spring-cloud-modules/spring-cloud-rest/spring-cloud-rest-config-server/src/main/resources/application.properties +++ /dev/null @@ -1,11 +0,0 @@ -server.port=8081 -spring.application.name=config - -spring.cloud.config.server.git.uri=${HOME}/application-config - -eureka.client.region = default -eureka.client.registryFetchIntervalSeconds = 5 -eureka.client.serviceUrl.defaultZone=${EUREKA_URI:http://system:systemPass@localhost:8761/eureka} - -security.user.name=configUser -security.user.password=configPassword \ No newline at end of file diff --git a/spring-cloud-modules/spring-cloud-rest/spring-cloud-rest-config-server/src/test/java/com/baeldung/SpringContextTest.java b/spring-cloud-modules/spring-cloud-rest/spring-cloud-rest-config-server/src/test/java/com/baeldung/SpringContextTest.java deleted file mode 100644 index 1548d6a95e..0000000000 --- a/spring-cloud-modules/spring-cloud-rest/spring-cloud-rest-config-server/src/test/java/com/baeldung/SpringContextTest.java +++ /dev/null @@ -1,15 +0,0 @@ -package com.baeldung; - -import org.junit.Test; -import org.junit.runner.RunWith; -import org.springframework.boot.test.context.SpringBootTest; -import org.springframework.test.context.junit4.SpringRunner; - -@RunWith(SpringRunner.class) -@SpringBootTest(classes = SpringCloudRestConfigApplication.class) -public class SpringContextTest { - @Test - public void contextLoads() { - } - -} diff --git a/spring-cloud-modules/spring-cloud-rest/spring-cloud-rest-discovery-server/.gitignore b/spring-cloud-modules/spring-cloud-rest/spring-cloud-rest-discovery-server/.gitignore deleted file mode 100644 index 2af7cefb0a..0000000000 --- a/spring-cloud-modules/spring-cloud-rest/spring-cloud-rest-discovery-server/.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/spring-cloud-rest-discovery-server/pom.xml b/spring-cloud-modules/spring-cloud-rest/spring-cloud-rest-discovery-server/pom.xml deleted file mode 100644 index eb65395821..0000000000 --- a/spring-cloud-modules/spring-cloud-rest/spring-cloud-rest-discovery-server/pom.xml +++ /dev/null @@ -1,66 +0,0 @@ - - - 4.0.0 - com.baeldung - spring-cloud-rest-discovery-server - 0.0.1-SNAPSHOT - spring-cloud-rest-discovery-server - jar - Spring Cloud REST server - - - 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 - ${spring-cloud.version} - pom - import - - - - - - - org.springframework.cloud - spring-cloud-starter-config - - - org.springframework.cloud - spring-cloud-starter-eureka-server - - - org.springframework.boot - spring-boot-starter-security - - - org.springframework.session - spring-session - - - org.springframework.boot - spring-boot-starter-data-redis - - - - - Edgware.SR4 - - - \ No newline at end of file diff --git a/spring-cloud-modules/spring-cloud-rest/spring-cloud-rest-discovery-server/src/main/java/com/baeldung/SessionConfig.java b/spring-cloud-modules/spring-cloud-rest/spring-cloud-rest-discovery-server/src/main/java/com/baeldung/SessionConfig.java deleted file mode 100644 index 6c984fb6d5..0000000000 --- a/spring-cloud-modules/spring-cloud-rest/spring-cloud-rest-discovery-server/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-discovery-server/src/main/java/com/baeldung/SpringCloudRestServerApplication.java b/spring-cloud-modules/spring-cloud-rest/spring-cloud-rest-discovery-server/src/main/java/com/baeldung/SpringCloudRestServerApplication.java deleted file mode 100644 index 1cc0f2982c..0000000000 --- a/spring-cloud-modules/spring-cloud-rest/spring-cloud-rest-discovery-server/src/main/java/com/baeldung/SpringCloudRestServerApplication.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.server.EnableEurekaServer; - -@SpringBootApplication -@EnableEurekaServer -public class SpringCloudRestServerApplication { - - public static void main(String[] args) { - SpringApplication.run(SpringCloudRestServerApplication.class, args); - } -} diff --git a/spring-cloud-modules/spring-cloud-rest/spring-cloud-rest-discovery-server/src/main/resources/bootstrap.properties b/spring-cloud-modules/spring-cloud-rest/spring-cloud-rest-discovery-server/src/main/resources/bootstrap.properties deleted file mode 100644 index d31caf55b5..0000000000 --- a/spring-cloud-modules/spring-cloud-rest/spring-cloud-rest-discovery-server/src/main/resources/bootstrap.properties +++ /dev/null @@ -1,4 +0,0 @@ -spring.cloud.config.name=discovery -spring.cloud.config.uri=http://localhost:8081 -spring.cloud.config.username=configUser -spring.cloud.config.password=configPassword \ No newline at end of file diff --git a/spring-cloud-modules/spring-cloud-rest/spring-cloud-rest-discovery-server/src/test/java/com/baeldung/SpringCloudRestServerIntegrationTest.java b/spring-cloud-modules/spring-cloud-rest/spring-cloud-rest-discovery-server/src/test/java/com/baeldung/SpringCloudRestServerIntegrationTest.java deleted file mode 100644 index 1ee895b6b1..0000000000 --- a/spring-cloud-modules/spring-cloud-rest/spring-cloud-rest-discovery-server/src/test/java/com/baeldung/SpringCloudRestServerIntegrationTest.java +++ /dev/null @@ -1,42 +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 SpringCloudRestServerIntegrationTest { - @Test - public void contextLoads() { - } - - @EnableRedisHttpSession - @Configuration - static class Config { - - @Bean - @SuppressWarnings("unchecked") - public RedisSerializer defaultRedisSerializer() { - return Mockito.mock(RedisSerializer.class); - } - - @Bean - public RedisConnectionFactory connectionFactory() { - - RedisConnectionFactory factory = Mockito.mock(RedisConnectionFactory.class); - RedisConnection connection = Mockito.mock(RedisConnection.class); - Mockito.when(factory.getConnection()).thenReturn(connection); - - return factory; - } - } -} \ No newline at end of file diff --git a/spring-cloud-modules/spring-cloud-rest/spring-cloud-rest-discovery-server/src/test/java/com/baeldung/SpringContextLiveTest.java b/spring-cloud-modules/spring-cloud-rest/spring-cloud-rest-discovery-server/src/test/java/com/baeldung/SpringContextLiveTest.java deleted file mode 100644 index 92acd482cd..0000000000 --- a/spring-cloud-modules/spring-cloud-rest/spring-cloud-rest-discovery-server/src/test/java/com/baeldung/SpringContextLiveTest.java +++ /dev/null @@ -1,21 +0,0 @@ -package com.baeldung; - -import org.junit.Test; -import org.junit.runner.RunWith; -import org.springframework.boot.test.context.SpringBootTest; -import org.springframework.test.context.junit4.SpringRunner; - -/** - * - * This Live Test requires: - * * A Redis instance running in port 6379 (e.g. using `docker run --name some-redis -p 6379:6379 -d redis`) - * - */ -@RunWith(SpringRunner.class) -@SpringBootTest(classes = SpringCloudRestServerApplication.class) -public class SpringContextLiveTest { - - @Test - public void whenSpringContextIsBootstrapped_thenNoExceptions() { - } -} diff --git a/spring-cloud-modules/spring-cloud-rest/spring-cloud-rest-reviews-api/pom.xml b/spring-cloud-modules/spring-cloud-rest/spring-cloud-rest-reviews-api/pom.xml deleted file mode 100644 index a8d5837320..0000000000 --- a/spring-cloud-modules/spring-cloud-rest/spring-cloud-rest-reviews-api/pom.xml +++ /dev/null @@ -1,88 +0,0 @@ - - - 4.0.0 - com.baeldung - spring-cloud-rest-reviews-api - 0.0.1-SNAPSHOT - spring-cloud-rest-reviews-api - jar - Simple reviews 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 - - - com.github.kstyrc - embedded-redis - ${embedded-redis.version} - - - - - 3.0.1 - 0.6 - - - \ No newline at end of file diff --git a/spring-cloud-modules/spring-cloud-rest/spring-cloud-rest-reviews-api/src/main/java/com/baeldung/BookReviewsApiApplication.java b/spring-cloud-modules/spring-cloud-rest/spring-cloud-rest-reviews-api/src/main/java/com/baeldung/BookReviewsApiApplication.java deleted file mode 100644 index 707c97cb69..0000000000 --- a/spring-cloud-modules/spring-cloud-rest/spring-cloud-rest-reviews-api/src/main/java/com/baeldung/BookReviewsApiApplication.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 BookReviewsApiApplication { - - public static void main(String[] args) { - SpringApplication.run(BookReviewsApiApplication.class, args); - } -} diff --git a/spring-cloud-modules/spring-cloud-rest/spring-cloud-rest-reviews-api/src/main/java/com/baeldung/SessionConfig.java b/spring-cloud-modules/spring-cloud-rest/spring-cloud-rest-reviews-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-reviews-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-reviews-api/src/main/java/com/baeldung/persistence/dao/BookReviewRepository.java b/spring-cloud-modules/spring-cloud-rest/spring-cloud-rest-reviews-api/src/main/java/com/baeldung/persistence/dao/BookReviewRepository.java deleted file mode 100644 index 1f29b66867..0000000000 --- a/spring-cloud-modules/spring-cloud-rest/spring-cloud-rest-reviews-api/src/main/java/com/baeldung/persistence/dao/BookReviewRepository.java +++ /dev/null @@ -1,13 +0,0 @@ -package com.baeldung.persistence.dao; - -import com.baeldung.persistence.model.BookReview; -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 = "reviews", path = "reviews") -public interface BookReviewRepository extends CrudRepository { - Page findByBookId(@Param("bookId") long bookId, Pageable pageable); -} diff --git a/spring-cloud-modules/spring-cloud-rest/spring-cloud-rest-reviews-api/src/main/java/com/baeldung/persistence/model/BookReview.java b/spring-cloud-modules/spring-cloud-rest/spring-cloud-rest-reviews-api/src/main/java/com/baeldung/persistence/model/BookReview.java deleted file mode 100644 index 4b6ff7f32b..0000000000 --- a/spring-cloud-modules/spring-cloud-rest/spring-cloud-rest-reviews-api/src/main/java/com/baeldung/persistence/model/BookReview.java +++ /dev/null @@ -1,120 +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 BookReview { - @Id - @GeneratedValue(strategy = GenerationType.AUTO) - private long id; - - private String content; - - private int rating; - - @Column(nullable = false) - private Long bookId; - - // - - public BookReview() { - super(); - } - - public BookReview(String content, int rating, long bookId) { - super(); - this.content = content; - this.rating = rating; - this.bookId = bookId; - } - - // - - public long getId() { - return id; - } - - public void setId(long id) { - this.id = id; - } - - public String getContent() { - return content; - } - - public void setContent(String content) { - this.content = content; - } - - public int getRating() { - return rating; - } - - public void setRating(int rating) { - this.rating = rating; - } - - public Long getBookId() { - return bookId; - } - - public void setBookId(Long bookId) { - this.bookId = bookId; - } - - // - @Override - public int hashCode() { - final int prime = 31; - int result = 1; - result = (prime * result) + (int) (bookId ^ (bookId >>> 32)); - result = (prime * result) + ((content == null) ? 0 : content.hashCode()); - result = (prime * result) + (int) (id ^ (id >>> 32)); - result = (prime * result) + rating; - 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 BookReview other = (BookReview) obj; - if (bookId != other.bookId) { - return false; - } - if (content == null) { - if (other.content != null) { - return false; - } - } else if (!content.equals(other.content)) { - return false; - } - if (id != other.id) { - return false; - } - if (rating != other.rating) { - return false; - } - return true; - } - - // - @Override - public String toString() { - final StringBuilder builder = new StringBuilder(); - builder.append("BookReview [id=").append(id).append(", content=").append(content).append(", rating=").append(rating).append(", bookId=").append(bookId).append("]"); - return builder.toString(); - } - -} diff --git a/spring-cloud-modules/spring-cloud-rest/spring-cloud-rest-reviews-api/src/main/resources/bootstrap.properties b/spring-cloud-modules/spring-cloud-rest/spring-cloud-rest-reviews-api/src/main/resources/bootstrap.properties deleted file mode 100644 index d6e642afcb..0000000000 --- a/spring-cloud-modules/spring-cloud-rest/spring-cloud-rest-reviews-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=8085 \ No newline at end of file diff --git a/spring-cloud-modules/spring-cloud-rest/spring-cloud-rest-reviews-api/src/test/java/com/baeldung/BookReviewsApiIntegrationTest.java b/spring-cloud-modules/spring-cloud-rest/spring-cloud-rest-reviews-api/src/test/java/com/baeldung/BookReviewsApiIntegrationTest.java deleted file mode 100644 index 7d7867f9ac..0000000000 --- a/spring-cloud-modules/spring-cloud-rest/spring-cloud-rest-reviews-api/src/test/java/com/baeldung/BookReviewsApiIntegrationTest.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 BookReviewsApiIntegrationTest { - - @Test - public void contextLoads() { - } - - @EnableRedisHttpSession - @Configuration - static class Config { - - @Bean - @SuppressWarnings("unchecked") - public RedisSerializer defaultRedisSerializer() { - return Mockito.mock(RedisSerializer.class); - } - - @Bean - public RedisConnectionFactory connectionFactory() { - - RedisConnectionFactory factory = Mockito.mock(RedisConnectionFactory.class); - RedisConnection connection = Mockito.mock(RedisConnection.class); - Mockito.when(factory.getConnection()).thenReturn(connection); - - return factory; - } - } -} diff --git a/spring-cloud-modules/spring-cloud-rest/spring-cloud-rest-reviews-api/src/test/java/com/baeldung/RestApiLiveTest.java b/spring-cloud-modules/spring-cloud-rest/spring-cloud-rest-reviews-api/src/test/java/com/baeldung/RestApiLiveTest.java deleted file mode 100644 index 88f845adcc..0000000000 --- a/spring-cloud-modules/spring-cloud-rest/spring-cloud-rest-reviews-api/src/test/java/com/baeldung/RestApiLiveTest.java +++ /dev/null @@ -1,147 +0,0 @@ -package com.baeldung; - -import static io.restassured.RestAssured.preemptive; -import static org.apache.commons.lang3.RandomStringUtils.randomAlphabetic; -import static org.apache.commons.lang3.RandomStringUtils.randomNumeric; -import static org.junit.Assert.assertEquals; -import static org.junit.Assert.assertTrue; - -import com.baeldung.BookReviewsApiApplication; -import io.restassured.RestAssured; -import io.restassured.response.Response; - -import com.baeldung.persistence.model.BookReview; -import org.junit.Before; -import org.junit.Test; -import org.junit.runner.RunWith; -import org.springframework.boot.test.context.SpringBootTest; -import org.springframework.boot.test.context.SpringBootTest.WebEnvironment; -import org.springframework.http.HttpStatus; -import org.springframework.http.MediaType; -import org.springframework.test.context.junit4.SpringRunner; - -@RunWith(SpringRunner.class) -@SpringBootTest(classes = { BookReviewsApiApplication.class }, webEnvironment = WebEnvironment.DEFINED_PORT) -public class RestApiLiveTest { - - private static final String API_URI = "http://localhost:8085/reviews"; - - @Before - public void setUp() { - RestAssured.authentication = preemptive().basic("user", "userPass"); - } - - // GET - - @Test - public void whenGetAllReviews_thenOK() { - final Response response = RestAssured.get(API_URI); - assertEquals(HttpStatus.OK.value(), response.getStatusCode()); - } - - @Test - public void whenGetCreatedReviewById_thenOK() { - final BookReview review = createRandomReview(); - final String location = createReviewAsUri(review); - - final Response response = RestAssured.get(location); - assertEquals(HttpStatus.OK.value(), response.getStatusCode()); - assertEquals(review.getContent(), response.jsonPath().get("content")); - } - - @Test - public void whenGetCreatedReviewByBookId_thenOK() { - final BookReview review = createRandomReview(); - createReviewAsUri(review); - - final Response response = RestAssured.get(API_URI + "/search/findByBookId?bookId=" + review.getBookId()); - assertEquals(HttpStatus.OK.value(), response.getStatusCode()); - assertTrue(response.jsonPath().getLong("page.totalElements") > 0); - } - - @Test - public void whenGetNotExistReviewById_thenNotFound() { - final Response response = RestAssured.get(API_URI + "/" + randomNumeric(4)); - assertEquals(HttpStatus.NOT_FOUND.value(), response.getStatusCode()); - } - - @Test - public void whenGetNotExistReviewByBookId_thenNotFound() { - final Response response = RestAssured.get(API_URI + "/search/findByBookId?bookId=" + randomNumeric(4)); - assertEquals(HttpStatus.OK.value(), response.getStatusCode()); - assertTrue(response.jsonPath().getLong("page.totalElements") == 0); - } - - // POST - @Test - public void whenCreateNewReview_thenCreated() { - final BookReview review = createRandomReview(); - - final Response response = RestAssured.given().contentType(MediaType.APPLICATION_JSON_VALUE).body(review).post(API_URI); - assertEquals(HttpStatus.CREATED.value(), response.getStatusCode()); - } - - @Test - public void whenCreateInvalidReview_thenError() { - final BookReview review = createRandomReview(); - review.setBookId(null); - - final Response response = RestAssured.given().contentType(MediaType.APPLICATION_JSON_VALUE).body(review).post(API_URI); - assertEquals(HttpStatus.CONFLICT.value(), response.getStatusCode()); - } - - @Test - public void whenUpdateCreatedReview_thenUpdated() { - // create - final BookReview review = createRandomReview(); - final String location = createReviewAsUri(review); - - // update - review.setRating(4); - Response response = RestAssured.given().contentType(MediaType.APPLICATION_JSON_VALUE).body(review).put(location); - assertEquals(HttpStatus.OK.value(), response.getStatusCode()); - - // check if changes saved - response = RestAssured.get(location); - assertEquals(HttpStatus.OK.value(), response.getStatusCode()); - assertEquals(4, response.jsonPath().getInt("rating")); - - } - - @Test - public void whenDeleteCreatedReview_thenOk() { - // create - final BookReview review = createRandomReview(); - final String location = createReviewAsUri(review); - - // delete - Response response = RestAssured.delete(location); - assertEquals(HttpStatus.NO_CONTENT.value(), response.getStatusCode()); - - // confirm it was deleted - response = RestAssured.get(location); - assertEquals(HttpStatus.NOT_FOUND.value(), response.getStatusCode()); - } - - @Test - public void whenDeleteNotExistReview_thenError() { - final Response response = RestAssured.delete(API_URI + "/" + randomNumeric(4)); - assertEquals(HttpStatus.NOT_FOUND.value(), response.getStatusCode()); - } - - // =============================== Util - - private BookReview createRandomReview() { - final BookReview review = new BookReview(); - review.setContent(randomAlphabetic(10)); - review.setRating(3); - review.setBookId(1L); - return review; - } - - private String createReviewAsUri(BookReview review) { - final Response response = RestAssured.given().contentType(MediaType.APPLICATION_JSON_VALUE).body(review).post(API_URI); - return response.jsonPath().get("_links.self.href"); - } - -} diff --git a/spring-cloud-modules/spring-cloud-rest/spring-cloud-rest-reviews-api/src/test/java/com/baeldung/SpringContextLiveTest.java b/spring-cloud-modules/spring-cloud-rest/spring-cloud-rest-reviews-api/src/test/java/com/baeldung/SpringContextLiveTest.java deleted file mode 100644 index 6bb75ed1eb..0000000000 --- a/spring-cloud-modules/spring-cloud-rest/spring-cloud-rest-reviews-api/src/test/java/com/baeldung/SpringContextLiveTest.java +++ /dev/null @@ -1,22 +0,0 @@ -package com.baeldung; - -import com.baeldung.BookReviewsApiApplication; -import org.junit.Test; -import org.junit.runner.RunWith; -import org.springframework.boot.test.context.SpringBootTest; -import org.springframework.test.context.junit4.SpringRunner; - -/** - * - * This Live Test requires: - * * A Redis instance running in port 6379 (e.g. using `docker run --name some-redis -p 6379:6379 -d redis`) - * - */ -@RunWith(SpringRunner.class) -@SpringBootTest(classes = BookReviewsApiApplication.class) -public class SpringContextLiveTest { - - @Test - public void whenSpringContextIsBootstrapped_thenNoExceptions() { - } -} diff --git a/spring-cloud-modules/spring-cloud-rest/spring-cloud-rest-reviews-api/src/test/resources/application.properties b/spring-cloud-modules/spring-cloud-rest/spring-cloud-rest-reviews-api/src/test/resources/application.properties deleted file mode 100644 index e69cb2f555..0000000000 --- a/spring-cloud-modules/spring-cloud-rest/spring-cloud-rest-reviews-api/src/test/resources/application.properties +++ /dev/null @@ -1,19 +0,0 @@ -#### cloud -spring.application.name=spring-cloud-eureka-client -server.port=8085 -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-security-modules/pom.xml b/spring-security-modules/pom.xml index 16eb288200..303968c52e 100644 --- a/spring-security-modules/pom.xml +++ b/spring-security-modules/pom.xml @@ -44,7 +44,8 @@ spring-security-web-rest spring-security-web-sockets spring-security-web-thymeleaf - spring-security-web-x509 + spring-security-web-x509 + spring-social-login spring-security-opa 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");