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/README.md b/akka-modules/README.md new file mode 100644 index 0000000000..b85789407f --- /dev/null +++ b/akka-modules/README.md @@ -0,0 +1,3 @@ +## Akka + +This module contains modules about Akka. \ No newline at end of file diff --git a/akka-http/README.md b/akka-modules/akka-http/README.md similarity index 100% rename from akka-http/README.md rename to akka-modules/akka-http/README.md diff --git a/akka-http/pom.xml b/akka-modules/akka-http/pom.xml similarity index 96% rename from akka-http/pom.xml rename to akka-modules/akka-http/pom.xml index a64d7a80f6..cf7e0b95ab 100644 --- a/akka-http/pom.xml +++ b/akka-modules/akka-http/pom.xml @@ -8,7 +8,7 @@ com.baeldung - parent-modules + akka-modules 1.0.0-SNAPSHOT diff --git a/akka-http/src/main/java/com/baeldung/akkahttp/User.java b/akka-modules/akka-http/src/main/java/com/baeldung/akkahttp/User.java similarity index 100% rename from akka-http/src/main/java/com/baeldung/akkahttp/User.java rename to akka-modules/akka-http/src/main/java/com/baeldung/akkahttp/User.java diff --git a/akka-http/src/main/java/com/baeldung/akkahttp/UserActor.java b/akka-modules/akka-http/src/main/java/com/baeldung/akkahttp/UserActor.java similarity index 100% rename from akka-http/src/main/java/com/baeldung/akkahttp/UserActor.java rename to akka-modules/akka-http/src/main/java/com/baeldung/akkahttp/UserActor.java diff --git a/akka-http/src/main/java/com/baeldung/akkahttp/UserMessages.java b/akka-modules/akka-http/src/main/java/com/baeldung/akkahttp/UserMessages.java similarity index 100% rename from akka-http/src/main/java/com/baeldung/akkahttp/UserMessages.java rename to akka-modules/akka-http/src/main/java/com/baeldung/akkahttp/UserMessages.java diff --git a/akka-http/src/main/java/com/baeldung/akkahttp/UserServer.java b/akka-modules/akka-http/src/main/java/com/baeldung/akkahttp/UserServer.java similarity index 100% rename from akka-http/src/main/java/com/baeldung/akkahttp/UserServer.java rename to akka-modules/akka-http/src/main/java/com/baeldung/akkahttp/UserServer.java diff --git a/akka-http/src/main/java/com/baeldung/akkahttp/UserService.java b/akka-modules/akka-http/src/main/java/com/baeldung/akkahttp/UserService.java similarity index 100% rename from akka-http/src/main/java/com/baeldung/akkahttp/UserService.java rename to akka-modules/akka-http/src/main/java/com/baeldung/akkahttp/UserService.java diff --git a/akka-http/src/test/java/com/baeldung/akkahttp/UserServerUnitTest.java b/akka-modules/akka-http/src/test/java/com/baeldung/akkahttp/UserServerUnitTest.java similarity index 100% rename from akka-http/src/test/java/com/baeldung/akkahttp/UserServerUnitTest.java rename to akka-modules/akka-http/src/test/java/com/baeldung/akkahttp/UserServerUnitTest.java diff --git a/akka-streams/README.md b/akka-modules/akka-streams/README.md similarity index 100% rename from akka-streams/README.md rename to akka-modules/akka-streams/README.md diff --git a/akka-streams/pom.xml b/akka-modules/akka-streams/pom.xml similarity index 94% rename from akka-streams/pom.xml rename to akka-modules/akka-streams/pom.xml index f92b37fcb4..b563d07400 100644 --- a/akka-streams/pom.xml +++ b/akka-modules/akka-streams/pom.xml @@ -8,7 +8,7 @@ com.baeldung - parent-modules + akka-modules 1.0.0-SNAPSHOT diff --git a/akka-streams/src/main/java/com/baeldung/akkastreams/AverageRepository.java b/akka-modules/akka-streams/src/main/java/com/baeldung/akkastreams/AverageRepository.java similarity index 100% rename from akka-streams/src/main/java/com/baeldung/akkastreams/AverageRepository.java rename to akka-modules/akka-streams/src/main/java/com/baeldung/akkastreams/AverageRepository.java diff --git a/akka-streams/src/main/java/com/baeldung/akkastreams/DataImporter.java b/akka-modules/akka-streams/src/main/java/com/baeldung/akkastreams/DataImporter.java similarity index 100% rename from akka-streams/src/main/java/com/baeldung/akkastreams/DataImporter.java rename to akka-modules/akka-streams/src/main/java/com/baeldung/akkastreams/DataImporter.java diff --git a/akka-streams/src/main/resources/logback.xml b/akka-modules/akka-streams/src/main/resources/logback.xml similarity index 100% rename from akka-streams/src/main/resources/logback.xml rename to akka-modules/akka-streams/src/main/resources/logback.xml diff --git a/akka-streams/src/test/java/com/baeldung/akkastreams/DataImporterUnitTest.java b/akka-modules/akka-streams/src/test/java/com/baeldung/akkastreams/DataImporterUnitTest.java similarity index 100% rename from akka-streams/src/test/java/com/baeldung/akkastreams/DataImporterUnitTest.java rename to akka-modules/akka-streams/src/test/java/com/baeldung/akkastreams/DataImporterUnitTest.java diff --git a/akka-modules/pom.xml b/akka-modules/pom.xml new file mode 100644 index 0000000000..490da5b7a8 --- /dev/null +++ b/akka-modules/pom.xml @@ -0,0 +1,33 @@ + + + 4.0.0 + akka-modules + akka-modules + pom + + + parent-modules + com.baeldung + 1.0.0-SNAPSHOT + + + + akka-http + akka-streams + spring-akka + + + + + + + org.springframework.boot + spring-boot-maven-plugin + + + + + + \ No newline at end of file diff --git a/spring-akka/README.md b/akka-modules/spring-akka/README.md similarity index 100% rename from spring-akka/README.md rename to akka-modules/spring-akka/README.md diff --git a/spring-akka/pom.xml b/akka-modules/spring-akka/pom.xml similarity index 96% rename from spring-akka/pom.xml rename to akka-modules/spring-akka/pom.xml index fb7a6198c3..c43d850462 100644 --- a/spring-akka/pom.xml +++ b/akka-modules/spring-akka/pom.xml @@ -9,7 +9,7 @@ com.baeldung - parent-modules + akka-modules 1.0.0-SNAPSHOT diff --git a/spring-akka/src/main/java/com/baeldung/akka/AppConfiguration.java b/akka-modules/spring-akka/src/main/java/com/baeldung/akka/AppConfiguration.java similarity index 100% rename from spring-akka/src/main/java/com/baeldung/akka/AppConfiguration.java rename to akka-modules/spring-akka/src/main/java/com/baeldung/akka/AppConfiguration.java diff --git a/spring-akka/src/main/java/com/baeldung/akka/GreetingActor.java b/akka-modules/spring-akka/src/main/java/com/baeldung/akka/GreetingActor.java similarity index 100% rename from spring-akka/src/main/java/com/baeldung/akka/GreetingActor.java rename to akka-modules/spring-akka/src/main/java/com/baeldung/akka/GreetingActor.java diff --git a/spring-akka/src/main/java/com/baeldung/akka/GreetingService.java b/akka-modules/spring-akka/src/main/java/com/baeldung/akka/GreetingService.java similarity index 100% rename from spring-akka/src/main/java/com/baeldung/akka/GreetingService.java rename to akka-modules/spring-akka/src/main/java/com/baeldung/akka/GreetingService.java diff --git a/spring-akka/src/main/java/com/baeldung/akka/SpringActorProducer.java b/akka-modules/spring-akka/src/main/java/com/baeldung/akka/SpringActorProducer.java similarity index 100% rename from spring-akka/src/main/java/com/baeldung/akka/SpringActorProducer.java rename to akka-modules/spring-akka/src/main/java/com/baeldung/akka/SpringActorProducer.java diff --git a/spring-akka/src/main/java/com/baeldung/akka/SpringExtension.java b/akka-modules/spring-akka/src/main/java/com/baeldung/akka/SpringExtension.java similarity index 100% rename from spring-akka/src/main/java/com/baeldung/akka/SpringExtension.java rename to akka-modules/spring-akka/src/main/java/com/baeldung/akka/SpringExtension.java diff --git a/core-java-modules/java-collections-conversions/src/main/resources/logback.xml b/akka-modules/spring-akka/src/main/resources/logback.xml similarity index 100% rename from core-java-modules/java-collections-conversions/src/main/resources/logback.xml rename to akka-modules/spring-akka/src/main/resources/logback.xml diff --git a/spring-akka/src/test/java/com/baeldung/akka/SpringAkkaIntegrationTest.java b/akka-modules/spring-akka/src/test/java/com/baeldung/akka/SpringAkkaIntegrationTest.java similarity index 100% rename from spring-akka/src/test/java/com/baeldung/akka/SpringAkkaIntegrationTest.java rename to akka-modules/spring-akka/src/test/java/com/baeldung/akka/SpringAkkaIntegrationTest.java diff --git a/core-java-modules/core-java-9/README.md b/core-java-modules/core-java-9/README.md index 0fe2b857a4..38965d88f1 100644 --- a/core-java-modules/core-java-9/README.md +++ b/core-java-modules/core-java-9/README.md @@ -12,3 +12,4 @@ This module contains articles about Java 9 core features - [Easy Ways to Write a Java InputStream to an OutputStream](https://www.baeldung.com/java-inputstream-to-outputstream) - [Private Methods in Java Interfaces](https://www.baeldung.com/java-interface-private-methods) - [Java Scanner useDelimiter with Examples](https://www.baeldung.com/java-scanner-usedelimiter) +- [Is There a Destructor in Java?](https://www.baeldung.com/java-destructor) 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 86% 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-numbers/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-numbers/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 92% 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-date-operations-2/README.md b/core-java-modules/core-java-date-operations-2/README.md index 056c91e60d..e49da29db4 100644 --- a/core-java-modules/core-java-date-operations-2/README.md +++ b/core-java-modules/core-java-date-operations-2/README.md @@ -12,4 +12,5 @@ This module contains articles about date operations in Java. - [Finding Leap Years in Java](https://www.baeldung.com/java-leap-year) - [Getting the Week Number From Any Date](https://www.baeldung.com/java-get-week-number) - [Subtract Days from a Date in Java](https://www.baeldung.com/java-subtract-days-from-date) +- [How to Calculate “Time Ago” in Java](https://www.baeldung.com/java-calculate-time-ago) - [[<-- Prev]](/core-java-modules/core-java-date-operations-1) 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-jar/src/main/java/com/baeldung/createjar/Driver.java b/core-java-modules/core-java-jar/src/main/java/com/baeldung/createjar/Driver.java new file mode 100644 index 0000000000..e0b2eab707 --- /dev/null +++ b/core-java-modules/core-java-jar/src/main/java/com/baeldung/createjar/Driver.java @@ -0,0 +1,19 @@ +package com.baeldung.createjar; + +import java.io.File; +import java.io.IOException; +import java.util.jar.*; +import com.baeldung.createjar.JarTool; + +public class Driver { + + public static void main(String[] args) throws IOException { + JarTool tool = new JarTool(); + tool.startManifest(); + tool.addToManifest("Main-Class", "com.baeldung.createjar.HelloWorld"); + JarOutputStream target = tool.openJar("HelloWorld.jar"); + + tool.addFile(target, System.getProperty("user.dir") + "\\src\\main\\java", System.getProperty("user.dir") + "\\src\\main\\java\\com\\baeldung\\createjar\\HelloWorld.class"); + target.close(); + } +} \ No newline at end of file diff --git a/core-java-modules/core-java-jar/src/main/java/com/baeldung/createjar/HelloWorld.java b/core-java-modules/core-java-jar/src/main/java/com/baeldung/createjar/HelloWorld.java new file mode 100644 index 0000000000..79a6758fce --- /dev/null +++ b/core-java-modules/core-java-jar/src/main/java/com/baeldung/createjar/HelloWorld.java @@ -0,0 +1,7 @@ +package com.baeldung.createjar; + +public class HelloWorld { + public static void main(String[] args) { + System.out.println("Hello World!"); + } +} diff --git a/core-java-modules/core-java-jar/src/main/java/com/baeldung/createjar/JarTool.java b/core-java-modules/core-java-jar/src/main/java/com/baeldung/createjar/JarTool.java new file mode 100644 index 0000000000..3709aa3300 --- /dev/null +++ b/core-java-modules/core-java-jar/src/main/java/com/baeldung/createjar/JarTool.java @@ -0,0 +1,69 @@ +package com.baeldung.createjar; + +import java.io.*; +import java.util.jar.*; + +public class JarTool { + private Manifest manifest = new Manifest(); + + public void addToManifest(String key, String value) { + manifest.getMainAttributes() + .put(new Attributes.Name(key), value); + } + + public void addDirectoryEntry(JarOutputStream target, String parentPath, File dir) throws IOException { + String remaining = ""; + if (parentPath.endsWith(File.separator)) + remaining = dir.getAbsolutePath() + .substring(parentPath.length()); + else + remaining = dir.getAbsolutePath() + .substring(parentPath.length() + 1); + String name = remaining.replace("\\", "/"); + if (!name.endsWith("/")) + name += "/"; + JarEntry entry = new JarEntry(name); + entry.setTime(dir.lastModified()); + target.putNextEntry(entry); + target.closeEntry(); + } + + public void addFile(JarOutputStream target, String rootPath, String source) throws IOException { + BufferedInputStream in = null; + String remaining = ""; + if (rootPath.endsWith(File.separator)) + remaining = source.substring(rootPath.length()); + else + remaining = source.substring(rootPath.length() + 1); + String name = remaining.replace("\\", "/"); + JarEntry entry = new JarEntry(name); + entry.setTime(new File(source).lastModified()); + target.putNextEntry(entry); + in = new BufferedInputStream(new FileInputStream(source)); + byte[] buffer = new byte[1024]; + while (true) { + int count = in.read(buffer); + if (count == -1) + break; + target.write(buffer, 0, count); + } + target.closeEntry(); + in.close(); + } + + public JarOutputStream openJar(String jarFile) throws IOException { + JarOutputStream target = new JarOutputStream(new FileOutputStream(jarFile), manifest); + return target; + } + + public void setMainClass(String mainFQCN) { + if (mainFQCN != null && !mainFQCN.equals("")) + manifest.getMainAttributes() + .put(Attributes.Name.MAIN_CLASS, mainFQCN); + } + + public void startManifest() { + manifest.getMainAttributes() + .put(Attributes.Name.MANIFEST_VERSION, "1.0"); + } +} \ No newline at end of file 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 89% 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 90% 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 90% rename from core-java-modules/java-numbers-4/README.md rename to core-java-modules/core-java-numbers-4/README.md index 2a7578dbb0..697d791b82 100644 --- a/core-java-modules/java-numbers-4/README.md +++ b/core-java-modules/core-java-numbers-4/README.md @@ -10,4 +10,4 @@ - [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/core-java-numbers-5/pom.xml b/core-java-modules/core-java-numbers-5/pom.xml new file mode 100644 index 0000000000..f236d28ccb --- /dev/null +++ b/core-java-modules/core-java-numbers-5/pom.xml @@ -0,0 +1,25 @@ + + 4.0.0 + core-java-numbers-5 + core-java-numbers-5 + jar + + + com.baeldung.core-java-modules + core-java-modules + 0.0.1-SNAPSHOT + + + + core-java-numbers-5 + + + src/main/resources + true + + + + + \ No newline at end of file diff --git a/core-java-modules/core-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 new file mode 100644 index 0000000000..5323dcbe11 --- /dev/null +++ b/core-java-modules/core-java-numbers-5/src/main/java/com/baeldung/evenodd/EvenOdd.java @@ -0,0 +1,46 @@ +package com.baeldung.evenodd; + +public class EvenOdd { + + static boolean isEven(int x) { + return x % 2 == 0; + } + + static boolean isOdd(int x) { + return x % 2 == 1; + } + + static boolean isOrEven(int x) { + return (x | 1) > x; + } + + static boolean isOrOdd(int x) { + return (x | 1) == x; + } + + static boolean isAndEven(int x) { + return (x & 1) == 0; + } + + static boolean isAndOdd(int x) { + return (x & 1) == 1; + } + + static boolean isXorEven(int x) { + return (x ^ 1) > x; + } + + static boolean isXorOdd(int x) { + return (x ^ 1) < x; + } + + static boolean isLsbEven(int x) { + return Integer.toBinaryString(x) + .endsWith("0"); + } + + static boolean isLsbOdd(int x) { + return Integer.toBinaryString(x) + .endsWith("1"); + } +} diff --git a/core-java-modules/core-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 new file mode 100644 index 0000000000..82810977ba --- /dev/null +++ b/core-java-modules/core-java-numbers-5/src/test/java/com/baeldung/evenodd/EvenOddUnitTest.java @@ -0,0 +1,68 @@ +package com.baeldung.evenodd; + +import static com.baeldung.evenodd.EvenOdd.isAndEven; +import static com.baeldung.evenodd.EvenOdd.isAndOdd; +import static com.baeldung.evenodd.EvenOdd.isEven; +import static com.baeldung.evenodd.EvenOdd.isLsbEven; +import static com.baeldung.evenodd.EvenOdd.isLsbOdd; +import static com.baeldung.evenodd.EvenOdd.isOdd; +import static com.baeldung.evenodd.EvenOdd.isOrEven; +import static com.baeldung.evenodd.EvenOdd.isOrOdd; +import static com.baeldung.evenodd.EvenOdd.isXorEven; +import static com.baeldung.evenodd.EvenOdd.isXorOdd; +import static org.junit.Assert.assertEquals; + +import org.junit.Test; + +public class EvenOddUnitTest { + + @Test + public void whenNumberIsEven_thenReturnTrue() { + assertEquals(true, isEven(2)); + } + + @Test + public void whenNumberIsOdd_thenReturnTrue() { + assertEquals(true, isOdd(3)); + } + + @Test + public void whenNumberIsEven_thenReturnTrueWithOr() { + assertEquals(true, isOrEven(4)); + } + + @Test + public void whenNumberIsOdd_thenReturnTrueOr() { + assertEquals(true, isOrOdd(5)); + } + + @Test + public void whenNumberIsEven_thenReturnTrueAnd() { + assertEquals(true, isAndEven(6)); + } + + @Test + public void whenNumberIsOdd_thenReturnTrueAnd() { + assertEquals(true, isAndOdd(7)); + } + + @Test + public void whenNumberIsEven_thenReturnTrueXor() { + assertEquals(true, isXorEven(8)); + } + + @Test + public void whenNumberIsOdd_thenReturnTrueXor() { + assertEquals(true, isXorOdd(9)); + } + + @Test + public void whenNumberIsEven_thenReturnTrueLsb() { + assertEquals(true, isLsbEven(10)); + } + + @Test + public void whenNumberIsOdd_thenReturnTrueLsb() { + assertEquals(true, isLsbOdd(11)); + } +} 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/json-path/src/main/resources/logback.xml b/core-java-modules/core-java-numbers/src/main/resources/logback.xml similarity index 100% rename from json-path/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-string-operations-3/src/main/java/com/baeldung/stringfilenamevalidaiton/StringFilenameValidationUtils.java b/core-java-modules/core-java-string-operations-3/src/main/java/com/baeldung/stringfilenamevalidaiton/StringFilenameValidationUtils.java index 1a86edd45a..6721d52d35 100644 --- a/core-java-modules/core-java-string-operations-3/src/main/java/com/baeldung/stringfilenamevalidaiton/StringFilenameValidationUtils.java +++ b/core-java-modules/core-java-string-operations-3/src/main/java/com/baeldung/stringfilenamevalidaiton/StringFilenameValidationUtils.java @@ -7,7 +7,7 @@ import java.util.Arrays; public class StringFilenameValidationUtils { - public static final Character[] INVALID_WINDOWS_SPECIFIC_CHARS = {'"', '*', ':', '<', '>', '?', '\\', '|', 0x7F}; + public static final Character[] INVALID_WINDOWS_SPECIFIC_CHARS = {'"', '*', '<', '>', '?', '|'}; public static final Character[] INVALID_UNIX_SPECIFIC_CHARS = {'\000'}; public static final String REGEX_PATTERN = "^[A-za-z0-9.]{1,255}$"; diff --git a/core-java-modules/core-java-string-operations-3/src/test/java/com/baeldung/stringfilenamevalidaiton/StringFilenameValidationUnitTest.java b/core-java-modules/core-java-string-operations-3/src/test/java/com/baeldung/stringfilenamevalidaiton/StringFilenameValidationUnitTest.java index 3e787f08be..62690a96ef 100644 --- a/core-java-modules/core-java-string-operations-3/src/test/java/com/baeldung/stringfilenamevalidaiton/StringFilenameValidationUnitTest.java +++ b/core-java-modules/core-java-string-operations-3/src/test/java/com/baeldung/stringfilenamevalidaiton/StringFilenameValidationUnitTest.java @@ -2,6 +2,7 @@ package com.baeldung.stringfilenamevalidaiton; import org.apache.commons.lang3.RandomStringUtils; import org.apache.commons.lang3.RandomUtils; +import org.assertj.core.api.InstanceOfAssertFactories; import org.junit.jupiter.api.Test; import org.junit.jupiter.api.condition.EnabledOnOs; import org.junit.jupiter.api.condition.OS; @@ -25,6 +26,9 @@ import static org.assertj.core.api.Assertions.assertThatThrownBy; public class StringFilenameValidationUnitTest { private static final String CORRECT_FILENAME_PATTERN = "baeldung.txt"; + private static final String FILENAME_WITH_COLON = "bael:dung.txt"; + private static final String FILENAME_WITH_FORWARD_SLASH = "bael/dung.txt"; + private static final String FILENAME_WITH_BACKWARD_SLASH = "bael\\dung.txt"; @ParameterizedTest @MethodSource("correctAlphanumericFilenamesProvider") @@ -79,18 +83,38 @@ public class StringFilenameValidationUnitTest { @ParameterizedTest @EnabledOnOs(OS.WINDOWS) @MethodSource("filenamesWithInvalidWindowsChars") - public void givenFilenameStringWithInvalidWindowsCharAndIsWindows_whenValidateUsingIO_thenRaiseException(String filename) { - assertThatThrownBy(() -> validateStringFilenameUsingIO(filename)) - .isInstanceOf(IOException.class) - .hasMessageContaining("Invalid file path"); + public void givenFilenameStringWithInvalidWindowsCharAndIsWindows_whenValidateUsingIO_thenRaiseException( + String filename) { + assertThatThrownBy(() -> validateStringFilenameUsingIO(filename)).isInstanceOf(IOException.class) + .extracting(Throwable::getMessage, InstanceOfAssertFactories.STRING) + .containsAnyOf("The system cannot find the path specified", + "The filename, directory name, or volume label syntax is incorrect"); + assertThatThrownBy(() -> validateStringFilenameUsingNIO2(filename)).isInstanceOf(InvalidPathException.class) + .hasMessageContaining("Illegal char"); - assertThatThrownBy(() -> validateStringFilenameUsingNIO2(filename)) - .isInstanceOf(InvalidPathException.class) - .hasMessage("character not allowed"); - - assertThat(validateStringFilenameUsingContains(filename)).isFalse(); - } + assertThat(validateStringFilenameUsingContains(filename)).isFalse(); + } + @Test + @EnabledOnOs(OS.WINDOWS) + public void givenFilenameStringWithInvalidColonWindowsCharAndIsWindows_thenNIO2FailsIOSucceed() + throws IOException { + assertThat(validateStringFilenameUsingIO(FILENAME_WITH_COLON)).isTrue(); + assertThatThrownBy(() -> validateStringFilenameUsingNIO2(FILENAME_WITH_COLON)) + .isInstanceOf(InvalidPathException.class).hasMessageContaining("Illegal char"); + } + + @Test + @EnabledOnOs(OS.WINDOWS) + public void givenFilenameStringWithInvalidSlashWindowsCharAndIsWindows_thenIOFailsNIO2Succeed() { + assertThatThrownBy(() -> validateStringFilenameUsingIO(FILENAME_WITH_FORWARD_SLASH)) + .isInstanceOf(IOException.class).hasMessageContaining("The system cannot find the path specified"); + assertThatThrownBy(() -> validateStringFilenameUsingIO(FILENAME_WITH_BACKWARD_SLASH)) + .isInstanceOf(IOException.class).hasMessageContaining("The system cannot find the path specified"); + assertThat(validateStringFilenameUsingNIO2(FILENAME_WITH_FORWARD_SLASH)).isTrue(); + assertThat(validateStringFilenameUsingNIO2(FILENAME_WITH_BACKWARD_SLASH)).isTrue(); + } + @ParameterizedTest @EnabledOnOs({OS.LINUX, OS.MAC}) @MethodSource("filenamesWithInvalidUnixChars") diff --git a/core-java-modules/pom.xml b/core-java-modules/pom.xml index 8d30c545e2..e44c508ce2 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 @@ -119,14 +127,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 + pre-jpms diff --git a/docker-modules/README.md b/docker-modules/README.md deleted file mode 100644 index f5daa19b08..0000000000 --- a/docker-modules/README.md +++ /dev/null @@ -1,9 +0,0 @@ -## Relevant Articles: - -- [Introduction to Docker Compose](https://www.baeldung.com/ops/docker-compose) -- [Reusing Docker Layers with Spring Boot](https://www.baeldung.com/docker-layers-spring-boot) -- [How To Configure Java Heap Size Inside a Docker Container](https://www.baeldung.com/ops/docker-jvm-heap-size) -- [Dockerfile Strategies for Git](https://www.baeldung.com/ops/dockerfile-git-strategies) -- [How to Get Docker-Compose to Always Use the Latest Image](https://www.baeldung.com/ops/docker-compose-latest-image) -- [How to Include Files Outside of Docker’s Build Context](https://www.baeldung.com/ops/docker-include-files-outside-build-context) -- [Caching Maven Dependencies with Docker](https://www.baeldung.com/ops/docker-cache-maven-dependencies) diff --git a/docker-modules/docker-caching/README.md b/docker-modules/docker-caching/README.md new file mode 100644 index 0000000000..d985210683 --- /dev/null +++ b/docker-modules/docker-caching/README.md @@ -0,0 +1,3 @@ +## Relevant Articles: + +- [Caching Maven Dependencies with Docker](https://www.baeldung.com/ops/docker-cache-maven-dependencies) diff --git a/docker-modules/docker-compose/README.md b/docker-modules/docker-compose/README.md new file mode 100644 index 0000000000..243e81fc80 --- /dev/null +++ b/docker-modules/docker-compose/README.md @@ -0,0 +1,4 @@ +## Relevant Articles: + +- [Introduction to Docker Compose](https://www.baeldung.com/ops/docker-compose) + diff --git a/docker-modules/docker-compose.yml b/docker-modules/docker-compose/docker-compose.yml similarity index 100% rename from docker-modules/docker-compose.yml rename to docker-modules/docker-compose/docker-compose.yml diff --git a/docker-modules/docker-include-outside-build-context/README.md b/docker-modules/docker-include-outside-build-context/README.md new file mode 100644 index 0000000000..55cc564163 --- /dev/null +++ b/docker-modules/docker-include-outside-build-context/README.md @@ -0,0 +1,3 @@ +## 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-sample-app/README.md b/docker-modules/docker-sample-app/README.md new file mode 100644 index 0000000000..d35abbc7e5 --- /dev/null +++ b/docker-modules/docker-sample-app/README.md @@ -0,0 +1,3 @@ +## 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/README.md b/docker-modules/docker-spring-boot/README.md index 0fc9d2b6b5..7b16790783 100644 --- a/docker-modules/docker-spring-boot/README.md +++ b/docker-modules/docker-spring-boot/README.md @@ -2,3 +2,4 @@ - [Creating Docker Images with Spring Boot](https://www.baeldung.com/spring-boot-docker-images) - [Starting Spring Boot Application in Docker With Profile](https://www.baeldung.com/spring-boot-docker-start-with-profile) +- [Reusing Docker Layers with Spring Boot](https://www.baeldung.com/docker-layers-spring-boot) diff --git a/docker-modules/dockerfile-with-git/README.md b/docker-modules/dockerfile-with-git/README.md new file mode 100644 index 0000000000..7e27328678 --- /dev/null +++ b/docker-modules/dockerfile-with-git/README.md @@ -0,0 +1,3 @@ +## Relevant Articles: + +- [Dockerfile Strategies for Git](https://www.baeldung.com/ops/dockerfile-git-strategies) diff --git a/gradle/README.md b/gradle/README.md index cf002a7114..1c325cf2fe 100644 --- a/gradle/README.md +++ b/gradle/README.md @@ -5,7 +5,4 @@ This module contains articles about Gradle ## Relevant articles: - [Introduction to Gradle](https://www.baeldung.com/gradle) - [Writing Custom Gradle Plugins](https://www.baeldung.com/gradle-create-plugin) -- [Creating a Fat Jar in Gradle](https://www.baeldung.com/gradle-fat-jar) - [A Custom Task in Gradle](https://www.baeldung.com/gradle-custom-task) -- [Using JUnit 5 with Gradle](https://www.baeldung.com/junit-5-gradle) -- [Dependency Management in Gradle](https://www.baeldung.com/gradle-dependency-management) diff --git a/gradle/build.gradle b/gradle/build.gradle index 2e5d984fba..d808f4a3cc 100644 --- a/gradle/build.gradle +++ b/gradle/build.gradle @@ -1,12 +1,14 @@ +plugins { + id 'org.shipkit.bintray-release' version '2.3.5' +} + allprojects { repositories { - jcenter() + mavenCentral() } } - subprojects { - version = '1.0' } @@ -89,4 +91,4 @@ task printJavaVersionBuildSrc(type : PrintToolVersionBuildSrcTask) { task printGroovyVersionBuildSrc(type : PrintToolVersionBuildSrcTask) { tool 'groovy' -} \ No newline at end of file +} diff --git a/gradle/gradle-dependency-management/README.md b/gradle/gradle-dependency-management/README.md new file mode 100644 index 0000000000..60ac66aa87 --- /dev/null +++ b/gradle/gradle-dependency-management/README.md @@ -0,0 +1,4 @@ +### Relevant Articles: + +- [Dependency Management in Gradle](https://www.baeldung.com/gradle-dependency-management) + diff --git a/gradle/gradle-dependency-management/settings.gradle b/gradle/gradle-dependency-management/settings.gradle index 09bfe08af7..b2be0dced7 100644 --- a/gradle/gradle-dependency-management/settings.gradle +++ b/gradle/gradle-dependency-management/settings.gradle @@ -1 +1 @@ -rootProject.name = 'dependencymanagement' +rootProject.name = 'gradle-dependency-management' diff --git a/gradle/gradle-employee-app/build.gradle b/gradle/gradle-employee-app/build.gradle index b343d2b210..c7040504f1 100644 --- a/gradle/gradle-employee-app/build.gradle +++ b/gradle/gradle-employee-app/build.gradle @@ -6,10 +6,8 @@ plugins { apply plugin: 'application' mainClassName = 'employee.EmployeeApp' -java { - sourceCompatibility = JavaVersion.VERSION_1_8 - targetCompatibility = JavaVersion.VERSION_1_8 -} +sourceCompatibility = JavaVersion.VERSION_1_8 +targetCompatibility = JavaVersion.VERSION_1_8 println 'This is executed during configuration phase' @@ -17,20 +15,21 @@ task configured { println 'The project is configured' } -task wrapper(type: Wrapper){ +wrapper { gradleVersion = '5.3.1' } repositories { - jcenter() + mavenCentral() } dependencies { - compile group: 'org.apache.commons', name: 'commons-lang3', version: '3.10' + implementation group: 'org.apache.commons', name: 'commons-lang3', version: '3.10' testImplementation('junit:junit:4.13') - testRuntime('junit:junit:4.13') + testRuntimeOnly('junit:junit:4.13') } + test { useJUnit() } diff --git a/gradle/gradle-employee-app/settings.gradle b/gradle/gradle-employee-app/settings.gradle new file mode 100644 index 0000000000..c6749f9e68 --- /dev/null +++ b/gradle/gradle-employee-app/settings.gradle @@ -0,0 +1 @@ +rootProject.name = 'gradle-employee-app' diff --git a/gradle/gradle-source-vs-target-compatibility/settings.gradle b/gradle/gradle-source-vs-target-compatibility/settings.gradle new file mode 100644 index 0000000000..0d985fb082 --- /dev/null +++ b/gradle/gradle-source-vs-target-compatibility/settings.gradle @@ -0,0 +1 @@ +rootProject.name = 'gradle-source-vs-target-compatibility' diff --git a/gradle/gradle-to-maven/build.gradle b/gradle/gradle-to-maven/build.gradle index 110edbc421..7cd2617ef4 100644 --- a/gradle/gradle-to-maven/build.gradle +++ b/gradle/gradle-to-maven/build.gradle @@ -3,39 +3,79 @@ repositories { } apply plugin: 'java' -apply plugin: 'maven' +apply plugin: 'maven-publish' group = 'com.baeldung' // by default, pom's artifactId is taken from the directory name -version = '0.0.1-SNAPSHOT' +version = '0.0.1' dependencies { - compile('org.slf4j:slf4j-api') - testCompile('junit:junit') + implementation 'org.slf4j:slf4j-api:1.7.25' + testImplementation 'junit:junit:4.12' } -install { - repositories { - mavenInstaller { - pom.version = '0.0.1-maven-SNAPSHOT' - pom.groupId = 'com.baeldung.sample' - pom.artifactId = 'gradle-maven-converter' - pom.project { - inceptionYear '2020' +// basic publishing + +//publishing { +// publications { +// customLibrary(MavenPublication) { +// from components.java +// } +// } +// +// repositories { +// maven { +// name = 'sampleRepo' +// url = layout.buildDirectory.dir("repo") +// } +// } +//} + +// customized publishing + +publishing { + publications { + customLibrary(MavenPublication) { + groupId = 'com.baeldung.sample' + artifactId = 'gradle-maven-converter' + version = '0.0.1-maven' + + from components.java + + pom { + name = 'Sample Library' + description = 'A description of sample library' + url = 'http://www.example.com/library' licenses { license { - name 'My License' - url 'http://www.mycompany.com/licenses/license.txt' - distribution 'repo' + name = 'The Apache License, Version 2.0' + url = 'http://www.apache.org/licenses/LICENSE-2.0.txt' } } } - pom.whenConfigured {pom -> - pom.dependencies.find {dep -> dep.groupId == 'junit' && dep.artifactId == 'junit' }.optional = true + + pom.withXml { + asNode() + .dependencies + .dependency + .findAll { dependency -> + // find all dependencies with runtime scope + dependency.scope.text() == 'runtime' + } + .each { dependency -> + // set the scope to 'compile' + dependency.scope*.value = 'compile' + } } - pom.writeTo("${mavenPomDir}/${project.group}/${project.name}/pom.xml") } } -} \ No newline at end of file + + repositories { + maven { + name = 'sampleRepo' + url = layout.buildDirectory.dir("repo") + } + } +} diff --git a/gradle/gradle-to-maven/settings.gradle b/gradle/gradle-to-maven/settings.gradle new file mode 100644 index 0000000000..f0c21fcf4e --- /dev/null +++ b/gradle/gradle-to-maven/settings.gradle @@ -0,0 +1 @@ +rootProject.name = 'gradle-to-maven' diff --git a/gradle/gradletaskdemo/build.gradle b/gradle/gradletaskdemo/build.gradle index 58dadd7460..5f07573365 100644 --- a/gradle/gradletaskdemo/build.gradle +++ b/gradle/gradletaskdemo/build.gradle @@ -5,16 +5,14 @@ buildscript { } } dependencies { - classpath "org.shipkit:shipkit:0.9.117" + classpath "org.shipkit:shipkit:2.3.5" } } - plugins { id 'java' } - apply from: 'aplugin.gradle' apply plugin: 'org.shipkit.bintray-release' @@ -72,8 +70,6 @@ helloBaeldung { } - - //Adding extra task properties task ourTask { ext.theProperty = "theValue" @@ -86,25 +82,24 @@ task printTaskProperty { } - //Declaring dependencies dependencies { - compile group: + implementation group: 'org.springframework', name: 'spring-core', version: '4.3.5.RELEASE' - compile 'org.springframework:spring-core:4.3.5.RELEASE', + implementation 'org.springframework:spring-core:4.3.5.RELEASE', 'org.springframework:spring-aop:4.3.5.RELEASE' - compile( + implementation( [group: 'org.springframework', name: 'spring-core', version: '4.3.5.RELEASE'], [group: 'org.springframework', name: 'spring-aop', version: '4.3.5.RELEASE'] ) - testCompile('org.hibernate:hibernate-core:5.2.12.Final') { + testImplementation('org.hibernate:hibernate-core:5.2.12.Final') { transitive = true } - runtime(group: 'org.hibernate', name: 'hibernate-core', version: '5.2.12.Final') { + runtimeOnly(group: 'org.hibernate', name: 'hibernate-core', version: '5.2.12.Final') { transitive = false } - runtime "org.codehaus.groovy:groovy-all:2.4.11@jar" - runtime group: 'org.codehaus.groovy', name: 'groovy-all', version: '2.4.11', ext: 'jar' - - compile fileTree(dir: 'libs', include: '*.jar') + runtimeOnly "org.codehaus.groovy:groovy-all:2.4.11@jar" + runtimeOnly group: 'org.codehaus.groovy', name: 'groovy-all', version: '2.4.11', ext: 'jar' + + implementation fileTree(dir: 'libs', include: '*.jar') } diff --git a/gradle/gradletaskdemo/build/tmp/jar/MANIFEST.MF b/gradle/gradletaskdemo/build/tmp/jar/MANIFEST.MF deleted file mode 100644 index 59499bce4a..0000000000 --- a/gradle/gradletaskdemo/build/tmp/jar/MANIFEST.MF +++ /dev/null @@ -1,2 +0,0 @@ -Manifest-Version: 1.0 - diff --git a/gradle/greeter/build.gradle b/gradle/greeter/build.gradle index 6f43f23494..0aab8c2313 100644 --- a/gradle/greeter/build.gradle +++ b/gradle/greeter/build.gradle @@ -1,11 +1,11 @@ apply plugin : 'java' apply plugin : 'application' - - dependencies { - compile project(':greeting-library') - compile project(':greeting-library-java') + implementation project(':greeting-library') + implementation project(':greeting-library-java') + + implementation group: 'org.codehaus.groovy', name: 'groovy-all', version: '2.4.11', ext: 'jar' } mainClassName = 'greeter.Greeter' diff --git a/gradle/greeting-library-java/build.gradle b/gradle/greeting-library-java/build.gradle index 34931bd0cd..916a9a435e 100644 --- a/gradle/greeting-library-java/build.gradle +++ b/gradle/greeting-library-java/build.gradle @@ -1,9 +1,7 @@ apply plugin :'java' //apply plugin : 'application' - - dependencies{ - compile group: 'joda-time', name: 'joda-time', version: '2.9.9' - testCompile group: 'junit', name: 'junit', version: '4.12' + implementation group: 'joda-time', name: 'joda-time', version: '2.9.9' + testImplementation group: 'junit', name: 'junit', version: '4.12' } diff --git a/gradle/greeting-library/build.gradle b/gradle/greeting-library/build.gradle index eb526b3b03..a8fa91963c 100644 --- a/gradle/greeting-library/build.gradle +++ b/gradle/greeting-library/build.gradle @@ -1,9 +1,9 @@ apply plugin : 'groovy' dependencies { - compile 'org.codehaus.groovy:groovy:2.4.12' + implementation 'org.codehaus.groovy:groovy:2.4.12' - testCompile 'org.spockframework:spock-core:1.0-groovy-2.4', { + testImplementation 'org.spockframework:spock-core:1.0-groovy-2.4', { exclude module : 'groovy-all' } } diff --git a/gradle/junit5/README.md b/gradle/junit5/README.md new file mode 100644 index 0000000000..d25dde4abb --- /dev/null +++ b/gradle/junit5/README.md @@ -0,0 +1,4 @@ +### Relevant Articles: + +- [Using JUnit 5 with Gradle](https://www.baeldung.com/junit-5-gradle) + diff --git a/gradle/junit5/build.gradle b/gradle/junit5/build.gradle index 5f056d8c23..e589541e08 100644 --- a/gradle/junit5/build.gradle +++ b/gradle/junit5/build.gradle @@ -6,15 +6,14 @@ plugins { dependencies { testImplementation 'org.junit.jupiter:junit-jupiter-api:5.3.1' testRuntimeOnly 'org.junit.jupiter:junit-jupiter-engine:5.3.1' - + // Only necessary for JUnit 3 and 4 tests - testCompileOnly 'junit:junit:4.12' - testRuntimeOnly 'org.junit.vintage:junit-vintage-engine:5.3.1' - + testCompileOnly 'junit:junit:4.12' + testRuntimeOnly 'org.junit.vintage:junit-vintage-engine:5.3.1' } repositories { - jcenter() + mavenCentral() } test { diff --git a/gradle/junit5/settings.gradle b/gradle/junit5/settings.gradle new file mode 100644 index 0000000000..347fc071ad --- /dev/null +++ b/gradle/junit5/settings.gradle @@ -0,0 +1 @@ +rootProject.name = 'gradle-junit5' diff --git a/gradle/settings.gradle b/gradle/settings.gradle index d1eb10f4d2..ba255f25c2 100644 --- a/gradle/settings.gradle +++ b/gradle/settings.gradle @@ -4,8 +4,5 @@ include 'greeting-library' include 'greeting-library-java' include 'greeter' include 'gradletaskdemo' -include 'junit5' -include 'gradle-employee-app' -include 'gradle-source-vs-target-compatibility' println 'This will be executed during the initialization phase.' diff --git a/jackson-modules/jackson-conversions/src/test/java/com/baeldung/jackson/xml/XMLSerializeDeserializeUnitTest.java b/jackson-modules/jackson-conversions/src/test/java/com/baeldung/jackson/xml/XMLSerializeDeserializeUnitTest.java index 74ba28d996..6d0a5df627 100644 --- a/jackson-modules/jackson-conversions/src/test/java/com/baeldung/jackson/xml/XMLSerializeDeserializeUnitTest.java +++ b/jackson-modules/jackson-conversions/src/test/java/com/baeldung/jackson/xml/XMLSerializeDeserializeUnitTest.java @@ -48,8 +48,7 @@ public class XMLSerializeDeserializeUnitTest { public void whenJavaGotFromXmlFile_thenCorrect() throws IOException { File file = new File("src/test/resources/simple_bean.xml"); XmlMapper xmlMapper = new XmlMapper(); - String xml = inputStreamToString(new FileInputStream(file)); - SimpleBean value = xmlMapper.readValue(xml, SimpleBean.class); + SimpleBean value = xmlMapper.readValue(file, SimpleBean.class); assertTrue(value.getX() == 1 && value.getY() == 2); } @@ -122,19 +121,6 @@ public class XMLSerializeDeserializeUnitTest { xmlMapper.writeValue(byteArrayOutputStream, person); assertEquals(expectedXml, byteArrayOutputStream.toString()); } - - private static String inputStreamToString(InputStream is) throws IOException { - BufferedReader br; - StringBuilder sb = new StringBuilder(); - - String line; - br = new BufferedReader(new InputStreamReader(is)); - while ((line = br.readLine()) != null) { - sb.append(line); - } - br.close(); - return sb.toString(); - } } class SimpleBean { diff --git a/jee-7/src/main/java/com/baeldung/singleton/CarServiceSingleton.java b/jee-7/src/main/java/com/baeldung/singleton/CarServiceSingleton.java index 223d139346..0632906b1a 100644 --- a/jee-7/src/main/java/com/baeldung/singleton/CarServiceSingleton.java +++ b/jee-7/src/main/java/com/baeldung/singleton/CarServiceSingleton.java @@ -32,7 +32,6 @@ public class CarServiceSingleton { serviceQueue--; LOG.info("Car service for {} is completed - serviceQueue: {}", car, serviceQueue); return serviceQueue; - } private void simulateService(Car car) { diff --git a/json-modules/README.md b/json-modules/README.md new file mode 100644 index 0000000000..a7100c40c8 --- /dev/null +++ b/json-modules/README.md @@ -0,0 +1,3 @@ +## JSON + +This module contains modules about JSON. diff --git a/gson/.gitignore b/json-modules/gson/.gitignore similarity index 100% rename from gson/.gitignore rename to json-modules/gson/.gitignore diff --git a/gson/README.md b/json-modules/gson/README.md similarity index 100% rename from gson/README.md rename to json-modules/gson/README.md diff --git a/gson/pom.xml b/json-modules/gson/pom.xml similarity index 86% rename from gson/pom.xml rename to json-modules/gson/pom.xml index 082e53baf0..bd0b562785 100644 --- a/gson/pom.xml +++ b/json-modules/gson/pom.xml @@ -9,9 +9,8 @@ com.baeldung - parent-java - 0.0.1-SNAPSHOT - ../parent-java + json-modules + 1.0.0-SNAPSHOT @@ -42,12 +41,18 @@ commons-lang3 ${commons-lang3.version} + + com.google.guava + guava + ${guava.version} + com.google.code.gson gson ${gson.version} + @@ -63,6 +68,7 @@ 2.8.0 2.9.6 + 11.0.2 \ No newline at end of file diff --git a/gson/src/main/java/com/baeldung/gson/entities/ActorGson.java b/json-modules/gson/src/main/java/com/baeldung/gson/entities/ActorGson.java similarity index 100% rename from gson/src/main/java/com/baeldung/gson/entities/ActorGson.java rename to json-modules/gson/src/main/java/com/baeldung/gson/entities/ActorGson.java diff --git a/gson/src/main/java/com/baeldung/gson/entities/Animal.java b/json-modules/gson/src/main/java/com/baeldung/gson/entities/Animal.java similarity index 100% rename from gson/src/main/java/com/baeldung/gson/entities/Animal.java rename to json-modules/gson/src/main/java/com/baeldung/gson/entities/Animal.java diff --git a/gson/src/main/java/com/baeldung/gson/entities/Cow.java b/json-modules/gson/src/main/java/com/baeldung/gson/entities/Cow.java similarity index 100% rename from gson/src/main/java/com/baeldung/gson/entities/Cow.java rename to json-modules/gson/src/main/java/com/baeldung/gson/entities/Cow.java diff --git a/gson/src/main/java/com/baeldung/gson/entities/Dog.java b/json-modules/gson/src/main/java/com/baeldung/gson/entities/Dog.java similarity index 100% rename from gson/src/main/java/com/baeldung/gson/entities/Dog.java rename to json-modules/gson/src/main/java/com/baeldung/gson/entities/Dog.java diff --git a/gson/src/main/java/com/baeldung/gson/entities/Employee.java b/json-modules/gson/src/main/java/com/baeldung/gson/entities/Employee.java similarity index 100% rename from gson/src/main/java/com/baeldung/gson/entities/Employee.java rename to json-modules/gson/src/main/java/com/baeldung/gson/entities/Employee.java diff --git a/gson/src/main/java/com/baeldung/gson/entities/Movie.java b/json-modules/gson/src/main/java/com/baeldung/gson/entities/Movie.java similarity index 100% rename from gson/src/main/java/com/baeldung/gson/entities/Movie.java rename to json-modules/gson/src/main/java/com/baeldung/gson/entities/Movie.java diff --git a/gson/src/main/java/com/baeldung/gson/entities/MovieWithNullValue.java b/json-modules/gson/src/main/java/com/baeldung/gson/entities/MovieWithNullValue.java similarity index 100% rename from gson/src/main/java/com/baeldung/gson/entities/MovieWithNullValue.java rename to json-modules/gson/src/main/java/com/baeldung/gson/entities/MovieWithNullValue.java diff --git a/gson/src/main/java/com/baeldung/gson/entities/MyClass.java b/json-modules/gson/src/main/java/com/baeldung/gson/entities/MyClass.java similarity index 100% rename from gson/src/main/java/com/baeldung/gson/entities/MyClass.java rename to json-modules/gson/src/main/java/com/baeldung/gson/entities/MyClass.java diff --git a/gson/src/main/java/com/baeldung/gson/entities/User.java b/json-modules/gson/src/main/java/com/baeldung/gson/entities/User.java similarity index 100% rename from gson/src/main/java/com/baeldung/gson/entities/User.java rename to json-modules/gson/src/main/java/com/baeldung/gson/entities/User.java diff --git a/gson/src/main/java/com/baeldung/gson/entities/Weather.java b/json-modules/gson/src/main/java/com/baeldung/gson/entities/Weather.java similarity index 100% rename from gson/src/main/java/com/baeldung/gson/entities/Weather.java rename to json-modules/gson/src/main/java/com/baeldung/gson/entities/Weather.java diff --git a/gson/src/main/java/com/baeldung/gson/primitives/models/BooleanExample.java b/json-modules/gson/src/main/java/com/baeldung/gson/primitives/models/BooleanExample.java similarity index 100% rename from gson/src/main/java/com/baeldung/gson/primitives/models/BooleanExample.java rename to json-modules/gson/src/main/java/com/baeldung/gson/primitives/models/BooleanExample.java diff --git a/gson/src/main/java/com/baeldung/gson/primitives/models/ByteExample.java b/json-modules/gson/src/main/java/com/baeldung/gson/primitives/models/ByteExample.java similarity index 100% rename from gson/src/main/java/com/baeldung/gson/primitives/models/ByteExample.java rename to json-modules/gson/src/main/java/com/baeldung/gson/primitives/models/ByteExample.java diff --git a/gson/src/main/java/com/baeldung/gson/primitives/models/CharExample.java b/json-modules/gson/src/main/java/com/baeldung/gson/primitives/models/CharExample.java similarity index 100% rename from gson/src/main/java/com/baeldung/gson/primitives/models/CharExample.java rename to json-modules/gson/src/main/java/com/baeldung/gson/primitives/models/CharExample.java diff --git a/gson/src/main/java/com/baeldung/gson/primitives/models/DoubleExample.java b/json-modules/gson/src/main/java/com/baeldung/gson/primitives/models/DoubleExample.java similarity index 100% rename from gson/src/main/java/com/baeldung/gson/primitives/models/DoubleExample.java rename to json-modules/gson/src/main/java/com/baeldung/gson/primitives/models/DoubleExample.java diff --git a/gson/src/main/java/com/baeldung/gson/primitives/models/FloatExample.java b/json-modules/gson/src/main/java/com/baeldung/gson/primitives/models/FloatExample.java similarity index 100% rename from gson/src/main/java/com/baeldung/gson/primitives/models/FloatExample.java rename to json-modules/gson/src/main/java/com/baeldung/gson/primitives/models/FloatExample.java diff --git a/gson/src/main/java/com/baeldung/gson/primitives/models/InfinityValuesExample.java b/json-modules/gson/src/main/java/com/baeldung/gson/primitives/models/InfinityValuesExample.java similarity index 100% rename from gson/src/main/java/com/baeldung/gson/primitives/models/InfinityValuesExample.java rename to json-modules/gson/src/main/java/com/baeldung/gson/primitives/models/InfinityValuesExample.java diff --git a/gson/src/main/java/com/baeldung/gson/primitives/models/LongExample.java b/json-modules/gson/src/main/java/com/baeldung/gson/primitives/models/LongExample.java similarity index 100% rename from gson/src/main/java/com/baeldung/gson/primitives/models/LongExample.java rename to json-modules/gson/src/main/java/com/baeldung/gson/primitives/models/LongExample.java diff --git a/gson/src/main/java/com/baeldung/gson/primitives/models/PrimitiveBundle.java b/json-modules/gson/src/main/java/com/baeldung/gson/primitives/models/PrimitiveBundle.java similarity index 100% rename from gson/src/main/java/com/baeldung/gson/primitives/models/PrimitiveBundle.java rename to json-modules/gson/src/main/java/com/baeldung/gson/primitives/models/PrimitiveBundle.java diff --git a/gson/src/main/java/com/baeldung/gson/primitives/models/PrimitiveBundleInitialized.java b/json-modules/gson/src/main/java/com/baeldung/gson/primitives/models/PrimitiveBundleInitialized.java similarity index 100% rename from gson/src/main/java/com/baeldung/gson/primitives/models/PrimitiveBundleInitialized.java rename to json-modules/gson/src/main/java/com/baeldung/gson/primitives/models/PrimitiveBundleInitialized.java diff --git a/gson/src/main/java/com/baeldung/gson/serialization/ActorGsonDeserializer.java b/json-modules/gson/src/main/java/com/baeldung/gson/serialization/ActorGsonDeserializer.java similarity index 100% rename from gson/src/main/java/com/baeldung/gson/serialization/ActorGsonDeserializer.java rename to json-modules/gson/src/main/java/com/baeldung/gson/serialization/ActorGsonDeserializer.java diff --git a/gson/src/main/java/com/baeldung/gson/serialization/ActorGsonSerializer.java b/json-modules/gson/src/main/java/com/baeldung/gson/serialization/ActorGsonSerializer.java similarity index 100% rename from gson/src/main/java/com/baeldung/gson/serialization/ActorGsonSerializer.java rename to json-modules/gson/src/main/java/com/baeldung/gson/serialization/ActorGsonSerializer.java diff --git a/gson/src/main/java/com/baeldung/gson/serialization/AnimalDeserializer.java b/json-modules/gson/src/main/java/com/baeldung/gson/serialization/AnimalDeserializer.java similarity index 100% rename from gson/src/main/java/com/baeldung/gson/serialization/AnimalDeserializer.java rename to json-modules/gson/src/main/java/com/baeldung/gson/serialization/AnimalDeserializer.java diff --git a/gson/src/main/java/com/baeldung/gson/serialization/MapDeserializer.java b/json-modules/gson/src/main/java/com/baeldung/gson/serialization/MapDeserializer.java similarity index 100% rename from gson/src/main/java/com/baeldung/gson/serialization/MapDeserializer.java rename to json-modules/gson/src/main/java/com/baeldung/gson/serialization/MapDeserializer.java diff --git a/gson/src/main/java/com/baeldung/gson/serialization/StringDateMapDeserializer.java b/json-modules/gson/src/main/java/com/baeldung/gson/serialization/StringDateMapDeserializer.java similarity index 100% rename from gson/src/main/java/com/baeldung/gson/serialization/StringDateMapDeserializer.java rename to json-modules/gson/src/main/java/com/baeldung/gson/serialization/StringDateMapDeserializer.java diff --git a/gson/src/main/java/com/baeldung/gson/serializationwithexclusions/Exclude.java b/json-modules/gson/src/main/java/com/baeldung/gson/serializationwithexclusions/Exclude.java similarity index 100% rename from gson/src/main/java/com/baeldung/gson/serializationwithexclusions/Exclude.java rename to json-modules/gson/src/main/java/com/baeldung/gson/serializationwithexclusions/Exclude.java diff --git a/gson/src/main/java/com/baeldung/gson/serializationwithexclusions/MyClass.java b/json-modules/gson/src/main/java/com/baeldung/gson/serializationwithexclusions/MyClass.java similarity index 100% rename from gson/src/main/java/com/baeldung/gson/serializationwithexclusions/MyClass.java rename to json-modules/gson/src/main/java/com/baeldung/gson/serializationwithexclusions/MyClass.java diff --git a/gson/src/main/java/com/baeldung/gson/serializationwithexclusions/MyClassWithAnnotatedFields.java b/json-modules/gson/src/main/java/com/baeldung/gson/serializationwithexclusions/MyClassWithAnnotatedFields.java similarity index 100% rename from gson/src/main/java/com/baeldung/gson/serializationwithexclusions/MyClassWithAnnotatedFields.java rename to json-modules/gson/src/main/java/com/baeldung/gson/serializationwithexclusions/MyClassWithAnnotatedFields.java diff --git a/gson/src/main/java/com/baeldung/gson/serializationwithexclusions/MyClassWithCustomAnnotatedFields.java b/json-modules/gson/src/main/java/com/baeldung/gson/serializationwithexclusions/MyClassWithCustomAnnotatedFields.java similarity index 100% rename from gson/src/main/java/com/baeldung/gson/serializationwithexclusions/MyClassWithCustomAnnotatedFields.java rename to json-modules/gson/src/main/java/com/baeldung/gson/serializationwithexclusions/MyClassWithCustomAnnotatedFields.java diff --git a/gson/src/main/java/com/baeldung/gson/serializationwithexclusions/MyClassWithTransientFields.java b/json-modules/gson/src/main/java/com/baeldung/gson/serializationwithexclusions/MyClassWithTransientFields.java similarity index 100% rename from gson/src/main/java/com/baeldung/gson/serializationwithexclusions/MyClassWithTransientFields.java rename to json-modules/gson/src/main/java/com/baeldung/gson/serializationwithexclusions/MyClassWithTransientFields.java diff --git a/gson/src/main/java/com/baeldung/gson/serializationwithexclusions/MySubClass.java b/json-modules/gson/src/main/java/com/baeldung/gson/serializationwithexclusions/MySubClass.java similarity index 100% rename from gson/src/main/java/com/baeldung/gson/serializationwithexclusions/MySubClass.java rename to json-modules/gson/src/main/java/com/baeldung/gson/serializationwithexclusions/MySubClass.java diff --git a/gson/src/main/java/com/baeldung/gson/serializationwithexclusions/MySubClassWithAnnotatedFields.java b/json-modules/gson/src/main/java/com/baeldung/gson/serializationwithexclusions/MySubClassWithAnnotatedFields.java similarity index 100% rename from gson/src/main/java/com/baeldung/gson/serializationwithexclusions/MySubClassWithAnnotatedFields.java rename to json-modules/gson/src/main/java/com/baeldung/gson/serializationwithexclusions/MySubClassWithAnnotatedFields.java diff --git a/gson/src/main/java/com/baeldung/gson/serializationwithexclusions/MySubClassWithCustomAnnotatedFields.java b/json-modules/gson/src/main/java/com/baeldung/gson/serializationwithexclusions/MySubClassWithCustomAnnotatedFields.java similarity index 100% rename from gson/src/main/java/com/baeldung/gson/serializationwithexclusions/MySubClassWithCustomAnnotatedFields.java rename to json-modules/gson/src/main/java/com/baeldung/gson/serializationwithexclusions/MySubClassWithCustomAnnotatedFields.java diff --git a/gson/src/main/java/com/baeldung/gson/serializationwithexclusions/MySubClassWithTransientFields.java b/json-modules/gson/src/main/java/com/baeldung/gson/serializationwithexclusions/MySubClassWithTransientFields.java similarity index 100% rename from gson/src/main/java/com/baeldung/gson/serializationwithexclusions/MySubClassWithTransientFields.java rename to json-modules/gson/src/main/java/com/baeldung/gson/serializationwithexclusions/MySubClassWithTransientFields.java diff --git a/gson/src/main/resources/logback.xml b/json-modules/gson/src/main/resources/logback.xml similarity index 100% rename from gson/src/main/resources/logback.xml rename to json-modules/gson/src/main/resources/logback.xml diff --git a/gson/src/test/java/com/baeldung/gson/advance/GsonAdvanceUnitTest.java b/json-modules/gson/src/test/java/com/baeldung/gson/advance/GsonAdvanceUnitTest.java similarity index 100% rename from gson/src/test/java/com/baeldung/gson/advance/GsonAdvanceUnitTest.java rename to json-modules/gson/src/test/java/com/baeldung/gson/advance/GsonAdvanceUnitTest.java diff --git a/gson/src/test/java/com/baeldung/gson/advance/RuntimeTypeAdapterFactory.java b/json-modules/gson/src/test/java/com/baeldung/gson/advance/RuntimeTypeAdapterFactory.java similarity index 100% rename from gson/src/test/java/com/baeldung/gson/advance/RuntimeTypeAdapterFactory.java rename to json-modules/gson/src/test/java/com/baeldung/gson/advance/RuntimeTypeAdapterFactory.java diff --git a/gson/src/test/java/com/baeldung/gson/conversion/JsonObjectConversionsUnitTest.java b/json-modules/gson/src/test/java/com/baeldung/gson/conversion/JsonObjectConversionsUnitTest.java similarity index 100% rename from gson/src/test/java/com/baeldung/gson/conversion/JsonObjectConversionsUnitTest.java rename to json-modules/gson/src/test/java/com/baeldung/gson/conversion/JsonObjectConversionsUnitTest.java diff --git a/gson/src/test/java/com/baeldung/gson/deserialization/Foo.java b/json-modules/gson/src/test/java/com/baeldung/gson/deserialization/Foo.java similarity index 100% rename from gson/src/test/java/com/baeldung/gson/deserialization/Foo.java rename to json-modules/gson/src/test/java/com/baeldung/gson/deserialization/Foo.java diff --git a/gson/src/test/java/com/baeldung/gson/deserialization/FooDeserializer.java b/json-modules/gson/src/test/java/com/baeldung/gson/deserialization/FooDeserializer.java similarity index 100% rename from gson/src/test/java/com/baeldung/gson/deserialization/FooDeserializer.java rename to json-modules/gson/src/test/java/com/baeldung/gson/deserialization/FooDeserializer.java diff --git a/gson/src/test/java/com/baeldung/gson/deserialization/FooDeserializerFromJsonWithDifferentFields.java b/json-modules/gson/src/test/java/com/baeldung/gson/deserialization/FooDeserializerFromJsonWithDifferentFields.java similarity index 100% rename from gson/src/test/java/com/baeldung/gson/deserialization/FooDeserializerFromJsonWithDifferentFields.java rename to json-modules/gson/src/test/java/com/baeldung/gson/deserialization/FooDeserializerFromJsonWithDifferentFields.java diff --git a/gson/src/test/java/com/baeldung/gson/deserialization/FooInstanceCreator.java b/json-modules/gson/src/test/java/com/baeldung/gson/deserialization/FooInstanceCreator.java similarity index 100% rename from gson/src/test/java/com/baeldung/gson/deserialization/FooInstanceCreator.java rename to json-modules/gson/src/test/java/com/baeldung/gson/deserialization/FooInstanceCreator.java diff --git a/gson/src/test/java/com/baeldung/gson/deserialization/FooWithInner.java b/json-modules/gson/src/test/java/com/baeldung/gson/deserialization/FooWithInner.java similarity index 100% rename from gson/src/test/java/com/baeldung/gson/deserialization/FooWithInner.java rename to json-modules/gson/src/test/java/com/baeldung/gson/deserialization/FooWithInner.java diff --git a/gson/src/test/java/com/baeldung/gson/deserialization/GenericFoo.java b/json-modules/gson/src/test/java/com/baeldung/gson/deserialization/GenericFoo.java similarity index 100% rename from gson/src/test/java/com/baeldung/gson/deserialization/GenericFoo.java rename to json-modules/gson/src/test/java/com/baeldung/gson/deserialization/GenericFoo.java diff --git a/gson/src/test/java/com/baeldung/gson/deserialization/GsonAlternateUnitTest.java b/json-modules/gson/src/test/java/com/baeldung/gson/deserialization/GsonAlternateUnitTest.java similarity index 100% rename from gson/src/test/java/com/baeldung/gson/deserialization/GsonAlternateUnitTest.java rename to json-modules/gson/src/test/java/com/baeldung/gson/deserialization/GsonAlternateUnitTest.java diff --git a/gson/src/test/java/com/baeldung/gson/deserialization/GsonDeserializeUnitTest.java b/json-modules/gson/src/test/java/com/baeldung/gson/deserialization/GsonDeserializeUnitTest.java similarity index 100% rename from gson/src/test/java/com/baeldung/gson/deserialization/GsonDeserializeUnitTest.java rename to json-modules/gson/src/test/java/com/baeldung/gson/deserialization/GsonDeserializeUnitTest.java diff --git a/gson/src/test/java/com/baeldung/gson/deserialization/MapDeserializationUnitTest.java b/json-modules/gson/src/test/java/com/baeldung/gson/deserialization/MapDeserializationUnitTest.java similarity index 100% rename from gson/src/test/java/com/baeldung/gson/deserialization/MapDeserializationUnitTest.java rename to json-modules/gson/src/test/java/com/baeldung/gson/deserialization/MapDeserializationUnitTest.java diff --git a/gson/src/test/java/com/baeldung/gson/deserialization/test/GsonDeserializationUnitTest.java b/json-modules/gson/src/test/java/com/baeldung/gson/deserialization/test/GsonDeserializationUnitTest.java similarity index 100% rename from gson/src/test/java/com/baeldung/gson/deserialization/test/GsonDeserializationUnitTest.java rename to json-modules/gson/src/test/java/com/baeldung/gson/deserialization/test/GsonDeserializationUnitTest.java diff --git a/gson/src/test/java/com/baeldung/gson/jsoncompare/JsonCompareUnitTest.java b/json-modules/gson/src/test/java/com/baeldung/gson/jsoncompare/JsonCompareUnitTest.java similarity index 100% rename from gson/src/test/java/com/baeldung/gson/jsoncompare/JsonCompareUnitTest.java rename to json-modules/gson/src/test/java/com/baeldung/gson/jsoncompare/JsonCompareUnitTest.java diff --git a/gson/src/test/java/com/baeldung/gson/primitives/PrimitiveValuesUnitTest.java b/json-modules/gson/src/test/java/com/baeldung/gson/primitives/PrimitiveValuesUnitTest.java similarity index 100% rename from gson/src/test/java/com/baeldung/gson/primitives/PrimitiveValuesUnitTest.java rename to json-modules/gson/src/test/java/com/baeldung/gson/primitives/PrimitiveValuesUnitTest.java diff --git a/gson/src/test/java/com/baeldung/gson/serialization/DifferentNameSerializer.java b/json-modules/gson/src/test/java/com/baeldung/gson/serialization/DifferentNameSerializer.java similarity index 100% rename from gson/src/test/java/com/baeldung/gson/serialization/DifferentNameSerializer.java rename to json-modules/gson/src/test/java/com/baeldung/gson/serialization/DifferentNameSerializer.java diff --git a/gson/src/test/java/com/baeldung/gson/serialization/GsonSerializeUnitTest.java b/json-modules/gson/src/test/java/com/baeldung/gson/serialization/GsonSerializeUnitTest.java similarity index 100% rename from gson/src/test/java/com/baeldung/gson/serialization/GsonSerializeUnitTest.java rename to json-modules/gson/src/test/java/com/baeldung/gson/serialization/GsonSerializeUnitTest.java diff --git a/gson/src/test/java/com/baeldung/gson/serialization/IgnoringFieldsNotMatchingCriteriaSerializer.java b/json-modules/gson/src/test/java/com/baeldung/gson/serialization/IgnoringFieldsNotMatchingCriteriaSerializer.java similarity index 100% rename from gson/src/test/java/com/baeldung/gson/serialization/IgnoringFieldsNotMatchingCriteriaSerializer.java rename to json-modules/gson/src/test/java/com/baeldung/gson/serialization/IgnoringFieldsNotMatchingCriteriaSerializer.java diff --git a/gson/src/test/java/com/baeldung/gson/serialization/IgnoringFieldsSerializer.java b/json-modules/gson/src/test/java/com/baeldung/gson/serialization/IgnoringFieldsSerializer.java similarity index 100% rename from gson/src/test/java/com/baeldung/gson/serialization/IgnoringFieldsSerializer.java rename to json-modules/gson/src/test/java/com/baeldung/gson/serialization/IgnoringFieldsSerializer.java diff --git a/gson/src/test/java/com/baeldung/gson/serialization/SourceClass.java b/json-modules/gson/src/test/java/com/baeldung/gson/serialization/SourceClass.java similarity index 100% rename from gson/src/test/java/com/baeldung/gson/serialization/SourceClass.java rename to json-modules/gson/src/test/java/com/baeldung/gson/serialization/SourceClass.java diff --git a/gson/src/test/java/com/baeldung/gson/serialization/test/GsonSerializationUnitTest.java b/json-modules/gson/src/test/java/com/baeldung/gson/serialization/test/GsonSerializationUnitTest.java similarity index 98% rename from gson/src/test/java/com/baeldung/gson/serialization/test/GsonSerializationUnitTest.java rename to json-modules/gson/src/test/java/com/baeldung/gson/serialization/test/GsonSerializationUnitTest.java index 4780b8a6bf..3b8912d259 100644 --- a/gson/src/test/java/com/baeldung/gson/serialization/test/GsonSerializationUnitTest.java +++ b/json-modules/gson/src/test/java/com/baeldung/gson/serialization/test/GsonSerializationUnitTest.java @@ -11,10 +11,12 @@ import com.baeldung.gson.serialization.DifferentNameSerializer; import com.baeldung.gson.serialization.IgnoringFieldsNotMatchingCriteriaSerializer; import com.baeldung.gson.serialization.IgnoringFieldsSerializer; import com.baeldung.gson.serialization.SourceClass; + +import org.assertj.core.util.Lists; import org.joda.time.DateTime; import org.junit.Test; -import com.google.common.collect.Lists; + import com.google.gson.Gson; import com.google.gson.GsonBuilder; import com.google.gson.reflect.TypeToken; diff --git a/gson/src/test/java/com/baeldung/gson/serialization/test/JsonFileUnitTest.java b/json-modules/gson/src/test/java/com/baeldung/gson/serialization/test/JsonFileUnitTest.java similarity index 100% rename from gson/src/test/java/com/baeldung/gson/serialization/test/JsonFileUnitTest.java rename to json-modules/gson/src/test/java/com/baeldung/gson/serialization/test/JsonFileUnitTest.java diff --git a/gson/src/test/java/com/baeldung/gson/serializationwithexclusions/SerializationWithExclusionsUnitTest.java b/json-modules/gson/src/test/java/com/baeldung/gson/serializationwithexclusions/SerializationWithExclusionsUnitTest.java similarity index 100% rename from gson/src/test/java/com/baeldung/gson/serializationwithexclusions/SerializationWithExclusionsUnitTest.java rename to json-modules/gson/src/test/java/com/baeldung/gson/serializationwithexclusions/SerializationWithExclusionsUnitTest.java diff --git a/gson/src/test/resources/.gitignore b/json-modules/gson/src/test/resources/.gitignore similarity index 100% rename from gson/src/test/resources/.gitignore rename to json-modules/gson/src/test/resources/.gitignore diff --git a/gson/src/test/resources/logback-test.xml b/json-modules/gson/src/test/resources/logback-test.xml similarity index 100% rename from gson/src/test/resources/logback-test.xml rename to json-modules/gson/src/test/resources/logback-test.xml diff --git a/json-2/README.md b/json-modules/json-2/README.md similarity index 91% rename from json-2/README.md rename to json-modules/json-2/README.md index b3e7fb0b94..8087927ad3 100644 --- a/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) + +- More Articles: [[<-- prev]](/json-modules/json) + diff --git a/json-2/pom.xml b/json-modules/json-2/pom.xml similarity index 99% rename from json-2/pom.xml rename to json-modules/json-2/pom.xml index 6fbdebc953..5a820978a7 100644 --- a/json-2/pom.xml +++ b/json-modules/json-2/pom.xml @@ -9,7 +9,7 @@ com.baeldung - parent-modules + json-modules 1.0.0-SNAPSHOT diff --git a/json-2/src/main/java/com/baeldung/jsoniter/model/Name.java b/json-modules/json-2/src/main/java/com/baeldung/jsoniter/model/Name.java similarity index 100% rename from json-2/src/main/java/com/baeldung/jsoniter/model/Name.java rename to json-modules/json-2/src/main/java/com/baeldung/jsoniter/model/Name.java diff --git a/json-2/src/main/java/com/baeldung/jsoniter/model/Student.java b/json-modules/json-2/src/main/java/com/baeldung/jsoniter/model/Student.java similarity index 100% rename from json-2/src/main/java/com/baeldung/jsoniter/model/Student.java rename to json-modules/json-2/src/main/java/com/baeldung/jsoniter/model/Student.java diff --git a/json-2/src/main/java/com/baeldung/jsonoptimization/Customer.java b/json-modules/json-2/src/main/java/com/baeldung/jsonoptimization/Customer.java similarity index 100% rename from json-2/src/main/java/com/baeldung/jsonoptimization/Customer.java rename to json-modules/json-2/src/main/java/com/baeldung/jsonoptimization/Customer.java diff --git a/json-2/src/main/java/com/baeldung/jsonoptimization/CustomerDeserializer.java b/json-modules/json-2/src/main/java/com/baeldung/jsonoptimization/CustomerDeserializer.java similarity index 100% rename from json-2/src/main/java/com/baeldung/jsonoptimization/CustomerDeserializer.java rename to json-modules/json-2/src/main/java/com/baeldung/jsonoptimization/CustomerDeserializer.java diff --git a/json-2/src/main/java/com/baeldung/jsonoptimization/CustomerSerializer.java b/json-modules/json-2/src/main/java/com/baeldung/jsonoptimization/CustomerSerializer.java similarity index 100% rename from json-2/src/main/java/com/baeldung/jsonoptimization/CustomerSerializer.java rename to json-modules/json-2/src/main/java/com/baeldung/jsonoptimization/CustomerSerializer.java diff --git a/json-2/src/main/java/com/baeldung/jsonoptimization/CustomerShortNames.java b/json-modules/json-2/src/main/java/com/baeldung/jsonoptimization/CustomerShortNames.java similarity index 100% rename from json-2/src/main/java/com/baeldung/jsonoptimization/CustomerShortNames.java rename to json-modules/json-2/src/main/java/com/baeldung/jsonoptimization/CustomerShortNames.java diff --git a/json-2/src/main/java/com/baeldung/jsonoptimization/CustomerSlim.java b/json-modules/json-2/src/main/java/com/baeldung/jsonoptimization/CustomerSlim.java similarity index 100% rename from json-2/src/main/java/com/baeldung/jsonoptimization/CustomerSlim.java rename to json-modules/json-2/src/main/java/com/baeldung/jsonoptimization/CustomerSlim.java diff --git a/json-2/src/main/java/com/baeldung/jsonoptimization/CustomerSlimDeserializer.java b/json-modules/json-2/src/main/java/com/baeldung/jsonoptimization/CustomerSlimDeserializer.java similarity index 100% rename from json-2/src/main/java/com/baeldung/jsonoptimization/CustomerSlimDeserializer.java rename to json-modules/json-2/src/main/java/com/baeldung/jsonoptimization/CustomerSlimDeserializer.java diff --git a/json-2/src/main/java/com/baeldung/jsonoptimization/CustomerSlimSerializer.java b/json-modules/json-2/src/main/java/com/baeldung/jsonoptimization/CustomerSlimSerializer.java similarity index 100% rename from json-2/src/main/java/com/baeldung/jsonoptimization/CustomerSlimSerializer.java rename to json-modules/json-2/src/main/java/com/baeldung/jsonoptimization/CustomerSlimSerializer.java diff --git a/json-2/src/main/java/com/baeldung/jsonoptimization/CustomerSlimShortNames.java b/json-modules/json-2/src/main/java/com/baeldung/jsonoptimization/CustomerSlimShortNames.java similarity index 100% rename from json-2/src/main/java/com/baeldung/jsonoptimization/CustomerSlimShortNames.java rename to json-modules/json-2/src/main/java/com/baeldung/jsonoptimization/CustomerSlimShortNames.java diff --git a/json-2/src/main/java/com/baeldung/jsontojavaclass/JsonToJavaClassConversion.java b/json-modules/json-2/src/main/java/com/baeldung/jsontojavaclass/JsonToJavaClassConversion.java similarity index 100% rename from json-2/src/main/java/com/baeldung/jsontojavaclass/JsonToJavaClassConversion.java rename to json-modules/json-2/src/main/java/com/baeldung/jsontojavaclass/JsonToJavaClassConversion.java diff --git a/json-2/src/main/java/com/baeldung/jsontojavaclass/pojo/SamplePojo.java b/json-modules/json-2/src/main/java/com/baeldung/jsontojavaclass/pojo/SamplePojo.java similarity index 100% rename from json-2/src/main/java/com/baeldung/jsontojavaclass/pojo/SamplePojo.java rename to json-modules/json-2/src/main/java/com/baeldung/jsontojavaclass/pojo/SamplePojo.java diff --git a/json-2/src/main/java/com/baeldung/jsonvalidation/GsonValidator.java b/json-modules/json-2/src/main/java/com/baeldung/jsonvalidation/GsonValidator.java similarity index 100% rename from json-2/src/main/java/com/baeldung/jsonvalidation/GsonValidator.java rename to json-modules/json-2/src/main/java/com/baeldung/jsonvalidation/GsonValidator.java diff --git a/json-2/src/main/java/com/baeldung/jsonvalidation/JacksonValidator.java b/json-modules/json-2/src/main/java/com/baeldung/jsonvalidation/JacksonValidator.java similarity index 100% rename from json-2/src/main/java/com/baeldung/jsonvalidation/JacksonValidator.java rename to json-modules/json-2/src/main/java/com/baeldung/jsonvalidation/JacksonValidator.java diff --git a/json-2/src/main/java/com/baeldung/jsonvalidation/JsonValidator.java b/json-modules/json-2/src/main/java/com/baeldung/jsonvalidation/JsonValidator.java similarity index 100% rename from json-2/src/main/java/com/baeldung/jsonvalidation/JsonValidator.java rename to json-modules/json-2/src/main/java/com/baeldung/jsonvalidation/JsonValidator.java diff --git a/json-2/src/main/resources/convertedPojo/com/baeldung/jsontojavaclass/pojo/Address.java b/json-modules/json-2/src/main/resources/convertedPojo/com/baeldung/jsontojavaclass/pojo/Address.java similarity index 100% rename from json-2/src/main/resources/convertedPojo/com/baeldung/jsontojavaclass/pojo/Address.java rename to json-modules/json-2/src/main/resources/convertedPojo/com/baeldung/jsontojavaclass/pojo/Address.java diff --git a/json-2/src/main/resources/convertedPojo/com/baeldung/jsontojavaclass/pojo/Input.java b/json-modules/json-2/src/main/resources/convertedPojo/com/baeldung/jsontojavaclass/pojo/Input.java similarity index 100% rename from json-2/src/main/resources/convertedPojo/com/baeldung/jsontojavaclass/pojo/Input.java rename to json-modules/json-2/src/main/resources/convertedPojo/com/baeldung/jsontojavaclass/pojo/Input.java diff --git a/json-2/src/main/resources/input.json b/json-modules/json-2/src/main/resources/input.json similarity index 100% rename from json-2/src/main/resources/input.json rename to json-modules/json-2/src/main/resources/input.json diff --git a/json-2/src/test/java/com/baeldung/fastjson/FastJsonUnitTest.java b/json-modules/json-2/src/test/java/com/baeldung/fastjson/FastJsonUnitTest.java similarity index 100% rename from json-2/src/test/java/com/baeldung/fastjson/FastJsonUnitTest.java rename to json-modules/json-2/src/test/java/com/baeldung/fastjson/FastJsonUnitTest.java diff --git a/json-2/src/test/java/com/baeldung/fastjson/Person.java b/json-modules/json-2/src/test/java/com/baeldung/fastjson/Person.java similarity index 100% rename from json-2/src/test/java/com/baeldung/fastjson/Person.java rename to json-modules/json-2/src/test/java/com/baeldung/fastjson/Person.java diff --git a/json-2/src/test/java/com/baeldung/jsoniter/JsoniterIntroUnitTest.java b/json-modules/json-2/src/test/java/com/baeldung/jsoniter/JsoniterIntroUnitTest.java similarity index 100% rename from json-2/src/test/java/com/baeldung/jsoniter/JsoniterIntroUnitTest.java rename to json-modules/json-2/src/test/java/com/baeldung/jsoniter/JsoniterIntroUnitTest.java diff --git a/json-2/src/test/java/com/baeldung/jsonld/deserialization/jsonldjava/jackson/JacksonDeserializationUnitTest.java b/json-modules/json-2/src/test/java/com/baeldung/jsonld/deserialization/jsonldjava/jackson/JacksonDeserializationUnitTest.java similarity index 100% rename from json-2/src/test/java/com/baeldung/jsonld/deserialization/jsonldjava/jackson/JacksonDeserializationUnitTest.java rename to json-modules/json-2/src/test/java/com/baeldung/jsonld/deserialization/jsonldjava/jackson/JacksonDeserializationUnitTest.java diff --git a/json-2/src/test/java/com/baeldung/jsonld/deserialization/jsonldjava/jackson/Person.java b/json-modules/json-2/src/test/java/com/baeldung/jsonld/deserialization/jsonldjava/jackson/Person.java similarity index 100% rename from json-2/src/test/java/com/baeldung/jsonld/deserialization/jsonldjava/jackson/Person.java rename to json-modules/json-2/src/test/java/com/baeldung/jsonld/deserialization/jsonldjava/jackson/Person.java diff --git a/json-2/src/test/java/com/baeldung/jsonld/serialization/hydrajsonld/HydraJsonldSerializationUnitTest.java b/json-modules/json-2/src/test/java/com/baeldung/jsonld/serialization/hydrajsonld/HydraJsonldSerializationUnitTest.java similarity index 100% rename from json-2/src/test/java/com/baeldung/jsonld/serialization/hydrajsonld/HydraJsonldSerializationUnitTest.java rename to json-modules/json-2/src/test/java/com/baeldung/jsonld/serialization/hydrajsonld/HydraJsonldSerializationUnitTest.java diff --git a/json-2/src/test/java/com/baeldung/jsonld/serialization/hydrajsonld/Person.java b/json-modules/json-2/src/test/java/com/baeldung/jsonld/serialization/hydrajsonld/Person.java similarity index 100% rename from json-2/src/test/java/com/baeldung/jsonld/serialization/hydrajsonld/Person.java rename to json-modules/json-2/src/test/java/com/baeldung/jsonld/serialization/hydrajsonld/Person.java diff --git a/json-2/src/test/java/com/baeldung/jsonld/serialization/jacksonjsonld/JacksonJsonLdSerializationUnitTest.java b/json-modules/json-2/src/test/java/com/baeldung/jsonld/serialization/jacksonjsonld/JacksonJsonLdSerializationUnitTest.java similarity index 100% rename from json-2/src/test/java/com/baeldung/jsonld/serialization/jacksonjsonld/JacksonJsonLdSerializationUnitTest.java rename to json-modules/json-2/src/test/java/com/baeldung/jsonld/serialization/jacksonjsonld/JacksonJsonLdSerializationUnitTest.java diff --git a/json-2/src/test/java/com/baeldung/jsonld/serialization/jacksonjsonld/Person.java b/json-modules/json-2/src/test/java/com/baeldung/jsonld/serialization/jacksonjsonld/Person.java similarity index 100% rename from json-2/src/test/java/com/baeldung/jsonld/serialization/jacksonjsonld/Person.java rename to json-modules/json-2/src/test/java/com/baeldung/jsonld/serialization/jacksonjsonld/Person.java diff --git a/json-2/src/test/java/com/baeldung/jsonoptimization/JsonOptimizationUnitTest.java b/json-modules/json-2/src/test/java/com/baeldung/jsonoptimization/JsonOptimizationUnitTest.java similarity index 100% rename from json-2/src/test/java/com/baeldung/jsonoptimization/JsonOptimizationUnitTest.java rename to json-modules/json-2/src/test/java/com/baeldung/jsonoptimization/JsonOptimizationUnitTest.java diff --git a/json-2/src/test/java/com/baeldung/jsontojavaclass/JsonToJavaClassConversionUnitTest.java b/json-modules/json-2/src/test/java/com/baeldung/jsontojavaclass/JsonToJavaClassConversionUnitTest.java similarity index 100% rename from json-2/src/test/java/com/baeldung/jsontojavaclass/JsonToJavaClassConversionUnitTest.java rename to json-modules/json-2/src/test/java/com/baeldung/jsontojavaclass/JsonToJavaClassConversionUnitTest.java diff --git a/json-2/src/test/java/com/baeldung/jsonvalidation/GsonValidatorUnitTest.java b/json-modules/json-2/src/test/java/com/baeldung/jsonvalidation/GsonValidatorUnitTest.java similarity index 100% rename from json-2/src/test/java/com/baeldung/jsonvalidation/GsonValidatorUnitTest.java rename to json-modules/json-2/src/test/java/com/baeldung/jsonvalidation/GsonValidatorUnitTest.java diff --git a/json-2/src/test/java/com/baeldung/jsonvalidation/JacksonValidatorUnitTest.java b/json-modules/json-2/src/test/java/com/baeldung/jsonvalidation/JacksonValidatorUnitTest.java similarity index 100% rename from json-2/src/test/java/com/baeldung/jsonvalidation/JacksonValidatorUnitTest.java rename to json-modules/json-2/src/test/java/com/baeldung/jsonvalidation/JacksonValidatorUnitTest.java diff --git a/json-2/src/test/java/com/baeldung/jsonvalidation/JsonValidatorUnitTest.java b/json-modules/json-2/src/test/java/com/baeldung/jsonvalidation/JsonValidatorUnitTest.java similarity index 100% rename from json-2/src/test/java/com/baeldung/jsonvalidation/JsonValidatorUnitTest.java rename to json-modules/json-2/src/test/java/com/baeldung/jsonvalidation/JsonValidatorUnitTest.java diff --git a/json-2/src/test/java/com/baeldung/moshi/AlternativeAdapterUnitTest.java b/json-modules/json-2/src/test/java/com/baeldung/moshi/AlternativeAdapterUnitTest.java similarity index 100% rename from json-2/src/test/java/com/baeldung/moshi/AlternativeAdapterUnitTest.java rename to json-modules/json-2/src/test/java/com/baeldung/moshi/AlternativeAdapterUnitTest.java diff --git a/json-2/src/test/java/com/baeldung/moshi/ArrayUnitTest.java b/json-modules/json-2/src/test/java/com/baeldung/moshi/ArrayUnitTest.java similarity index 100% rename from json-2/src/test/java/com/baeldung/moshi/ArrayUnitTest.java rename to json-modules/json-2/src/test/java/com/baeldung/moshi/ArrayUnitTest.java diff --git a/json-2/src/test/java/com/baeldung/moshi/ComplexAdapterUnitTest.java b/json-modules/json-2/src/test/java/com/baeldung/moshi/ComplexAdapterUnitTest.java similarity index 100% rename from json-2/src/test/java/com/baeldung/moshi/ComplexAdapterUnitTest.java rename to json-modules/json-2/src/test/java/com/baeldung/moshi/ComplexAdapterUnitTest.java diff --git a/json-2/src/test/java/com/baeldung/moshi/DefaultUnitTest.java b/json-modules/json-2/src/test/java/com/baeldung/moshi/DefaultUnitTest.java similarity index 100% rename from json-2/src/test/java/com/baeldung/moshi/DefaultUnitTest.java rename to json-modules/json-2/src/test/java/com/baeldung/moshi/DefaultUnitTest.java diff --git a/json-2/src/test/java/com/baeldung/moshi/PrimitiveUnitTest.java b/json-modules/json-2/src/test/java/com/baeldung/moshi/PrimitiveUnitTest.java similarity index 100% rename from json-2/src/test/java/com/baeldung/moshi/PrimitiveUnitTest.java rename to json-modules/json-2/src/test/java/com/baeldung/moshi/PrimitiveUnitTest.java diff --git a/json-2/src/test/java/com/baeldung/moshi/RenameUnitTest.java b/json-modules/json-2/src/test/java/com/baeldung/moshi/RenameUnitTest.java similarity index 100% rename from json-2/src/test/java/com/baeldung/moshi/RenameUnitTest.java rename to json-modules/json-2/src/test/java/com/baeldung/moshi/RenameUnitTest.java diff --git a/json-2/src/test/java/com/baeldung/moshi/SimpleAdapterUnitTest.java b/json-modules/json-2/src/test/java/com/baeldung/moshi/SimpleAdapterUnitTest.java similarity index 100% rename from json-2/src/test/java/com/baeldung/moshi/SimpleAdapterUnitTest.java rename to json-modules/json-2/src/test/java/com/baeldung/moshi/SimpleAdapterUnitTest.java diff --git a/json-2/src/test/java/com/baeldung/moshi/TransientUnitTest.java b/json-modules/json-2/src/test/java/com/baeldung/moshi/TransientUnitTest.java similarity index 100% rename from json-2/src/test/java/com/baeldung/moshi/TransientUnitTest.java rename to json-modules/json-2/src/test/java/com/baeldung/moshi/TransientUnitTest.java diff --git a/json-2/src/test/resources/Student.json b/json-modules/json-2/src/test/resources/Student.json similarity index 100% rename from json-2/src/test/resources/Student.json rename to json-modules/json-2/src/test/resources/Student.json diff --git a/json-2/src/test/resources/com/baeldung/jsontojavaclass/pojo/SamplePojo.java b/json-modules/json-2/src/test/resources/com/baeldung/jsontojavaclass/pojo/SamplePojo.java similarity index 100% rename from json-2/src/test/resources/com/baeldung/jsontojavaclass/pojo/SamplePojo.java rename to json-modules/json-2/src/test/resources/com/baeldung/jsontojavaclass/pojo/SamplePojo.java diff --git a/json-2/src/test/resources/json_optimization_mock_data.json b/json-modules/json-2/src/test/resources/json_optimization_mock_data.json similarity index 100% rename from json-2/src/test/resources/json_optimization_mock_data.json rename to json-modules/json-2/src/test/resources/json_optimization_mock_data.json diff --git a/json-2/src/test/resources/sample_input.json b/json-modules/json-2/src/test/resources/sample_input.json similarity index 100% rename from json-2/src/test/resources/sample_input.json rename to json-modules/json-2/src/test/resources/sample_input.json diff --git a/json-path/.gitignore b/json-modules/json-path/.gitignore similarity index 100% rename from json-path/.gitignore rename to json-modules/json-path/.gitignore diff --git a/json-path/README.md b/json-modules/json-path/README.md similarity index 100% rename from json-path/README.md rename to json-modules/json-path/README.md diff --git a/json-path/pom.xml b/json-modules/json-path/pom.xml similarity index 93% rename from json-path/pom.xml rename to json-modules/json-path/pom.xml index b4577ec15f..e467ee9557 100644 --- a/json-path/pom.xml +++ b/json-modules/json-path/pom.xml @@ -9,7 +9,7 @@ com.baeldung - parent-modules + json-modules 1.0.0-SNAPSHOT diff --git a/json-path/src/main/resources/intro_api.json b/json-modules/json-path/src/main/resources/intro_api.json similarity index 100% rename from json-path/src/main/resources/intro_api.json rename to json-modules/json-path/src/main/resources/intro_api.json diff --git a/json-path/src/main/resources/intro_service.json b/json-modules/json-path/src/main/resources/intro_service.json similarity index 100% rename from json-path/src/main/resources/intro_service.json rename to json-modules/json-path/src/main/resources/intro_service.json diff --git a/json-path/src/main/resources/intro_user.json b/json-modules/json-path/src/main/resources/intro_user.json similarity index 100% rename from json-path/src/main/resources/intro_user.json rename to json-modules/json-path/src/main/resources/intro_user.json diff --git a/json/src/main/resources/logback.xml b/json-modules/json-path/src/main/resources/logback.xml similarity index 100% rename from json/src/main/resources/logback.xml rename to json-modules/json-path/src/main/resources/logback.xml diff --git a/json-path/src/main/resources/online_store.json b/json-modules/json-path/src/main/resources/online_store.json similarity index 95% rename from json-path/src/main/resources/online_store.json rename to json-modules/json-path/src/main/resources/online_store.json index c0ddf274d8..2b271a1124 100644 --- a/json-path/src/main/resources/online_store.json +++ b/json-modules/json-path/src/main/resources/online_store.json @@ -1,23 +1,23 @@ -{ - "items":{ - "book":[ - { - "author":"Arthur Conan Doyle", - "title":"Sherlock Holmes", - "price":8.99 - }, - { - "author":"J. R. R. Tolkien", - "title":"The Lord of the Rings", - "isbn":"0-395-19395-8", - "price":22.99 - } - ], - "bicycle":{ - "color":"red", - "price":19.95 - } - }, - "url":"mystore.com", - "owner":"baeldung" +{ + "items":{ + "book":[ + { + "author":"Arthur Conan Doyle", + "title":"Sherlock Holmes", + "price":8.99 + }, + { + "author":"J. R. R. Tolkien", + "title":"The Lord of the Rings", + "isbn":"0-395-19395-8", + "price":22.99 + } + ], + "bicycle":{ + "color":"red", + "price":19.95 + } + }, + "url":"mystore.com", + "owner":"baeldung" } \ No newline at end of file diff --git a/json-path/src/test/java/com/baeldung/jsonpath/introduction/JsonPathUnitTest.java b/json-modules/json-path/src/test/java/com/baeldung/jsonpath/introduction/JsonPathUnitTest.java similarity index 96% rename from json-path/src/test/java/com/baeldung/jsonpath/introduction/JsonPathUnitTest.java rename to json-modules/json-path/src/test/java/com/baeldung/jsonpath/introduction/JsonPathUnitTest.java index 3408629a6d..9ffe027b6f 100644 --- a/json-path/src/test/java/com/baeldung/jsonpath/introduction/JsonPathUnitTest.java +++ b/json-modules/json-path/src/test/java/com/baeldung/jsonpath/introduction/JsonPathUnitTest.java @@ -1,46 +1,46 @@ -package com.baeldung.jsonpath.introduction; - -import static org.junit.Assert.assertEquals; - -import java.io.File; -import java.io.IOException; -import java.nio.charset.Charset; -import java.nio.charset.StandardCharsets; -import java.nio.file.Files; -import java.util.Map; - -import org.junit.BeforeClass; -import org.junit.Test; - -import com.jayway.jsonpath.JsonPath; - -import net.minidev.json.JSONArray; - -public class JsonPathUnitTest { - - private static String json; - private static File jsonFile = new File("src/main/resources/online_store.json"); - - private static String readFile(File file, Charset charset) throws IOException { - return new String(Files.readAllBytes(file.toPath()), charset); - } - - @BeforeClass - public static void init() throws IOException { - json = readFile(jsonFile, StandardCharsets.UTF_8); - } - - @Test - public void shouldMatchCountOfObjects() { - Map objectMap = JsonPath.read(json, "$"); - assertEquals(3, objectMap.keySet() - .size()); - } - - @Test - public void shouldMatchCountOfArrays() { - JSONArray jsonArray = JsonPath.read(json, "$.items.book[*]"); - assertEquals(2, jsonArray.size()); - } - -} +package com.baeldung.jsonpath.introduction; + +import static org.junit.Assert.assertEquals; + +import java.io.File; +import java.io.IOException; +import java.nio.charset.Charset; +import java.nio.charset.StandardCharsets; +import java.nio.file.Files; +import java.util.Map; + +import org.junit.BeforeClass; +import org.junit.Test; + +import com.jayway.jsonpath.JsonPath; + +import net.minidev.json.JSONArray; + +public class JsonPathUnitTest { + + private static String json; + private static File jsonFile = new File("src/main/resources/online_store.json"); + + private static String readFile(File file, Charset charset) throws IOException { + return new String(Files.readAllBytes(file.toPath()), charset); + } + + @BeforeClass + public static void init() throws IOException { + json = readFile(jsonFile, StandardCharsets.UTF_8); + } + + @Test + public void shouldMatchCountOfObjects() { + Map objectMap = JsonPath.read(json, "$"); + assertEquals(3, objectMap.keySet() + .size()); + } + + @Test + public void shouldMatchCountOfArrays() { + JSONArray jsonArray = JsonPath.read(json, "$.items.book[*]"); + assertEquals(2, jsonArray.size()); + } + +} diff --git a/json-path/src/test/java/com/baeldung/jsonpath/introduction/OperationIntegrationTest.java b/json-modules/json-path/src/test/java/com/baeldung/jsonpath/introduction/OperationIntegrationTest.java similarity index 100% rename from json-path/src/test/java/com/baeldung/jsonpath/introduction/OperationIntegrationTest.java rename to json-modules/json-path/src/test/java/com/baeldung/jsonpath/introduction/OperationIntegrationTest.java diff --git a/json-path/src/test/java/com/baeldung/jsonpath/introduction/ServiceIntegrationTest.java b/json-modules/json-path/src/test/java/com/baeldung/jsonpath/introduction/ServiceIntegrationTest.java similarity index 100% rename from json-path/src/test/java/com/baeldung/jsonpath/introduction/ServiceIntegrationTest.java rename to json-modules/json-path/src/test/java/com/baeldung/jsonpath/introduction/ServiceIntegrationTest.java diff --git a/json-path/src/test/resources/logback.xml b/json-modules/json-path/src/test/resources/logback.xml similarity index 100% rename from json-path/src/test/resources/logback.xml rename to json-modules/json-path/src/test/resources/logback.xml diff --git a/json/README.md b/json-modules/json/README.md similarity index 100% rename from json/README.md rename to json-modules/json/README.md diff --git a/json/pom.xml b/json-modules/json/pom.xml similarity index 95% rename from json/pom.xml rename to json-modules/json/pom.xml index 87bbad460a..04a00598a3 100644 --- a/json/pom.xml +++ b/json-modules/json/pom.xml @@ -1,84 +1,84 @@ - - - 4.0.0 - org.baeldung - json - 0.0.1-SNAPSHOT - json - - - com.baeldung - parent-modules - 1.0.0-SNAPSHOT - - - - - org.everit.json - org.everit.json.schema - ${everit.json.schema.version} - - - commons-logging - commons-logging - - - - - org.json - json - ${json.version} - - - com.google.code.gson - gson - ${gson.version} - - - com.fasterxml.jackson.core - jackson-databind - ${jackson.version} - - - javax.json.bind - javax.json.bind-api - ${jsonb-api.version} - - - org.glassfish - javax.json - ${javax.version} - - - org.eclipse - yasson - ${yasson.version} - - - - org.apache.commons - commons-collections4 - ${commons-collections4.version} - test - - - net.javacrumbs.json-unit - json-unit-assertj - ${json-unit-assertj.version} - test - - - - - 1.4.1 - 1.0 - 1.0.1 - 20211205 - 2.8.5 - 1.1.2 - 2.28.0 - - + + + 4.0.0 + org.baeldung + json + 0.0.1-SNAPSHOT + json + + + com.baeldung + json-modules + 1.0.0-SNAPSHOT + + + + + org.everit.json + org.everit.json.schema + ${everit.json.schema.version} + + + commons-logging + commons-logging + + + + + org.json + json + ${json.version} + + + com.google.code.gson + gson + ${gson.version} + + + com.fasterxml.jackson.core + jackson-databind + ${jackson.version} + + + javax.json.bind + javax.json.bind-api + ${jsonb-api.version} + + + org.glassfish + javax.json + ${javax.version} + + + org.eclipse + yasson + ${yasson.version} + + + + org.apache.commons + commons-collections4 + ${commons-collections4.version} + test + + + net.javacrumbs.json-unit + json-unit-assertj + ${json-unit-assertj.version} + test + + + + + 1.4.1 + 1.0 + 1.0.1 + 20211205 + 2.8.5 + 1.1.2 + 2.28.0 + + \ No newline at end of file diff --git a/json/src/main/java/com/baeldung/adapter/PersonAdapter.java b/json-modules/json/src/main/java/com/baeldung/adapter/PersonAdapter.java similarity index 100% rename from json/src/main/java/com/baeldung/adapter/PersonAdapter.java rename to json-modules/json/src/main/java/com/baeldung/adapter/PersonAdapter.java diff --git a/json/src/main/java/com/baeldung/escape/JsonEscape.java b/json-modules/json/src/main/java/com/baeldung/escape/JsonEscape.java similarity index 100% rename from json/src/main/java/com/baeldung/escape/JsonEscape.java rename to json-modules/json/src/main/java/com/baeldung/escape/JsonEscape.java diff --git a/json/src/main/java/com/baeldung/jsonb/Person.java b/json-modules/json/src/main/java/com/baeldung/jsonb/Person.java similarity index 100% rename from json/src/main/java/com/baeldung/jsonb/Person.java rename to json-modules/json/src/main/java/com/baeldung/jsonb/Person.java diff --git a/json/src/main/java/com/baeldung/jsonjava/CDLDemo.java b/json-modules/json/src/main/java/com/baeldung/jsonjava/CDLDemo.java similarity index 100% rename from json/src/main/java/com/baeldung/jsonjava/CDLDemo.java rename to json-modules/json/src/main/java/com/baeldung/jsonjava/CDLDemo.java diff --git a/json/src/main/java/com/baeldung/jsonjava/CookieDemo.java b/json-modules/json/src/main/java/com/baeldung/jsonjava/CookieDemo.java similarity index 100% rename from json/src/main/java/com/baeldung/jsonjava/CookieDemo.java rename to json-modules/json/src/main/java/com/baeldung/jsonjava/CookieDemo.java diff --git a/json/src/main/java/com/baeldung/jsonjava/DemoBean.java b/json-modules/json/src/main/java/com/baeldung/jsonjava/DemoBean.java similarity index 100% rename from json/src/main/java/com/baeldung/jsonjava/DemoBean.java rename to json-modules/json/src/main/java/com/baeldung/jsonjava/DemoBean.java diff --git a/json/src/main/java/com/baeldung/jsonjava/HTTPDemo.java b/json-modules/json/src/main/java/com/baeldung/jsonjava/HTTPDemo.java similarity index 100% rename from json/src/main/java/com/baeldung/jsonjava/HTTPDemo.java rename to json-modules/json/src/main/java/com/baeldung/jsonjava/HTTPDemo.java diff --git a/json/src/main/java/com/baeldung/jsonjava/JSONArrayDemo.java b/json-modules/json/src/main/java/com/baeldung/jsonjava/JSONArrayDemo.java similarity index 100% rename from json/src/main/java/com/baeldung/jsonjava/JSONArrayDemo.java rename to json-modules/json/src/main/java/com/baeldung/jsonjava/JSONArrayDemo.java diff --git a/json/src/main/java/com/baeldung/jsonjava/JSONArrayGetValueByKey.java b/json-modules/json/src/main/java/com/baeldung/jsonjava/JSONArrayGetValueByKey.java similarity index 100% rename from json/src/main/java/com/baeldung/jsonjava/JSONArrayGetValueByKey.java rename to json-modules/json/src/main/java/com/baeldung/jsonjava/JSONArrayGetValueByKey.java diff --git a/json/src/main/java/com/baeldung/jsonjava/JSONObjectDemo.java b/json-modules/json/src/main/java/com/baeldung/jsonjava/JSONObjectDemo.java similarity index 100% rename from json/src/main/java/com/baeldung/jsonjava/JSONObjectDemo.java rename to json-modules/json/src/main/java/com/baeldung/jsonjava/JSONObjectDemo.java diff --git a/json/src/main/java/com/baeldung/jsonjava/JSONTokenerDemo.java b/json-modules/json/src/main/java/com/baeldung/jsonjava/JSONTokenerDemo.java similarity index 100% rename from json/src/main/java/com/baeldung/jsonjava/JSONTokenerDemo.java rename to json-modules/json/src/main/java/com/baeldung/jsonjava/JSONTokenerDemo.java diff --git a/json/src/main/java/com/baeldung/jsonjava/ObjectToFromJSON.java b/json-modules/json/src/main/java/com/baeldung/jsonjava/ObjectToFromJSON.java similarity index 100% rename from json/src/main/java/com/baeldung/jsonjava/ObjectToFromJSON.java rename to json-modules/json/src/main/java/com/baeldung/jsonjava/ObjectToFromJSON.java diff --git a/json/src/main/java/com/baeldung/jsonobject/iterate/JSONObjectIterator.java b/json-modules/json/src/main/java/com/baeldung/jsonobject/iterate/JSONObjectIterator.java similarity index 96% rename from json/src/main/java/com/baeldung/jsonobject/iterate/JSONObjectIterator.java rename to json-modules/json/src/main/java/com/baeldung/jsonobject/iterate/JSONObjectIterator.java index 0ff8650652..0d3ae3b021 100644 --- a/json/src/main/java/com/baeldung/jsonobject/iterate/JSONObjectIterator.java +++ b/json-modules/json/src/main/java/com/baeldung/jsonobject/iterate/JSONObjectIterator.java @@ -1,50 +1,50 @@ -package com.baeldung.jsonobject.iterate; - -import java.util.HashMap; -import java.util.Iterator; -import java.util.Map; - -import org.json.JSONArray; -import org.json.JSONObject; - -public class JSONObjectIterator { - - private Map keyValuePairs; - - public JSONObjectIterator() { - keyValuePairs = new HashMap<>(); - } - - public void handleValue(String key, Object value) { - if (value instanceof JSONArray) { - handleJSONArray(key, (JSONArray) value); - } else if (value instanceof JSONObject) { - handleJSONObject((JSONObject) value); - } - keyValuePairs.put(key, value); - } - - public void handleJSONObject(JSONObject jsonObject) { - Iterator jsonObjectIterator = jsonObject.keys(); - jsonObjectIterator.forEachRemaining(key -> { - Object value = jsonObject.get(key); - handleValue(key, value); - }); - } - - public void handleJSONArray(String key, JSONArray jsonArray) { - Iterator jsonArrayIterator = jsonArray.iterator(); - jsonArrayIterator.forEachRemaining(element -> { - handleValue(key, element); - }); - } - - public Map getKeyValuePairs() { - return keyValuePairs; - } - - public void setKeyValuePairs(Map keyValuePairs) { - this.keyValuePairs = keyValuePairs; - } - -} +package com.baeldung.jsonobject.iterate; + +import java.util.HashMap; +import java.util.Iterator; +import java.util.Map; + +import org.json.JSONArray; +import org.json.JSONObject; + +public class JSONObjectIterator { + + private Map keyValuePairs; + + public JSONObjectIterator() { + keyValuePairs = new HashMap<>(); + } + + public void handleValue(String key, Object value) { + if (value instanceof JSONArray) { + handleJSONArray(key, (JSONArray) value); + } else if (value instanceof JSONObject) { + handleJSONObject((JSONObject) value); + } + keyValuePairs.put(key, value); + } + + public void handleJSONObject(JSONObject jsonObject) { + Iterator jsonObjectIterator = jsonObject.keys(); + jsonObjectIterator.forEachRemaining(key -> { + Object value = jsonObject.get(key); + handleValue(key, value); + }); + } + + public void handleJSONArray(String key, JSONArray jsonArray) { + Iterator jsonArrayIterator = jsonArray.iterator(); + jsonArrayIterator.forEachRemaining(element -> { + handleValue(key, element); + }); + } + + public Map getKeyValuePairs() { + return keyValuePairs; + } + + public void setKeyValuePairs(Map keyValuePairs) { + this.keyValuePairs = keyValuePairs; + } + +} diff --git a/json/src/main/java/com/baeldung/jsonpointer/JsonPointerCrud.java b/json-modules/json/src/main/java/com/baeldung/jsonpointer/JsonPointerCrud.java similarity index 100% rename from json/src/main/java/com/baeldung/jsonpointer/JsonPointerCrud.java rename to json-modules/json/src/main/java/com/baeldung/jsonpointer/JsonPointerCrud.java diff --git a/spring-akka/src/main/resources/logback.xml b/json-modules/json/src/main/resources/logback.xml similarity index 100% rename from spring-akka/src/main/resources/logback.xml rename to json-modules/json/src/main/resources/logback.xml diff --git a/json/src/main/webapp/index.html b/json-modules/json/src/main/webapp/index.html similarity index 100% rename from json/src/main/webapp/index.html rename to json-modules/json/src/main/webapp/index.html diff --git a/json/src/main/webapp/js/app.js b/json-modules/json/src/main/webapp/js/app.js similarity index 100% rename from json/src/main/webapp/js/app.js rename to json-modules/json/src/main/webapp/js/app.js diff --git a/json/src/main/webapp/js/schema.js b/json-modules/json/src/main/webapp/js/schema.js similarity index 100% rename from json/src/main/webapp/js/schema.js rename to json-modules/json/src/main/webapp/js/schema.js diff --git a/json/src/main/webapp/js/ui-schema.js b/json-modules/json/src/main/webapp/js/ui-schema.js similarity index 100% rename from json/src/main/webapp/js/ui-schema.js rename to json-modules/json/src/main/webapp/js/ui-schema.js diff --git a/json/src/main/webapp/package.json b/json-modules/json/src/main/webapp/package.json similarity index 95% rename from json/src/main/webapp/package.json rename to json-modules/json/src/main/webapp/package.json index 2f2d6c9ffa..5dae000593 100644 --- a/json/src/main/webapp/package.json +++ b/json-modules/json/src/main/webapp/package.json @@ -1,11 +1,11 @@ -{ - "name": "jsonforms-intro", - "description": "Introduction to JSONForms", - "version": "0.0.1", - "license": "MIT", - "dependencies": { - "typings": "0.6.5", - "jsonforms": "0.0.19", - "bootstrap": "3.3.6" - } +{ + "name": "jsonforms-intro", + "description": "Introduction to JSONForms", + "version": "0.0.1", + "license": "MIT", + "dependencies": { + "typings": "0.6.5", + "jsonforms": "0.0.19", + "bootstrap": "3.3.6" + } } \ No newline at end of file diff --git a/json/src/test/java/com/baeldung/escape/JsonEscapeUnitTest.java b/json-modules/json/src/test/java/com/baeldung/escape/JsonEscapeUnitTest.java similarity index 100% rename from json/src/test/java/com/baeldung/escape/JsonEscapeUnitTest.java rename to json-modules/json/src/test/java/com/baeldung/escape/JsonEscapeUnitTest.java diff --git a/json/src/test/java/com/baeldung/json/schema/JSONSchemaUnitTest.java b/json-modules/json/src/test/java/com/baeldung/json/schema/JSONSchemaUnitTest.java similarity index 100% rename from json/src/test/java/com/baeldung/json/schema/JSONSchemaUnitTest.java rename to json-modules/json/src/test/java/com/baeldung/json/schema/JSONSchemaUnitTest.java diff --git a/json/src/test/java/com/baeldung/jsonb/JsonbUnitTest.java b/json-modules/json/src/test/java/com/baeldung/jsonb/JsonbUnitTest.java similarity index 100% rename from json/src/test/java/com/baeldung/jsonb/JsonbUnitTest.java rename to json-modules/json/src/test/java/com/baeldung/jsonb/JsonbUnitTest.java diff --git a/json/src/test/java/com/baeldung/jsonjava/CDLIntegrationTest.java b/json-modules/json/src/test/java/com/baeldung/jsonjava/CDLIntegrationTest.java similarity index 100% rename from json/src/test/java/com/baeldung/jsonjava/CDLIntegrationTest.java rename to json-modules/json/src/test/java/com/baeldung/jsonjava/CDLIntegrationTest.java diff --git a/json/src/test/java/com/baeldung/jsonjava/CookieIntegrationTest.java b/json-modules/json/src/test/java/com/baeldung/jsonjava/CookieIntegrationTest.java similarity index 100% rename from json/src/test/java/com/baeldung/jsonjava/CookieIntegrationTest.java rename to json-modules/json/src/test/java/com/baeldung/jsonjava/CookieIntegrationTest.java diff --git a/json/src/test/java/com/baeldung/jsonjava/HTTPIntegrationTest.java b/json-modules/json/src/test/java/com/baeldung/jsonjava/HTTPIntegrationTest.java similarity index 100% rename from json/src/test/java/com/baeldung/jsonjava/HTTPIntegrationTest.java rename to json-modules/json/src/test/java/com/baeldung/jsonjava/HTTPIntegrationTest.java diff --git a/json/src/test/java/com/baeldung/jsonjava/JSONArrayGetValueByKeyUnitTest.java b/json-modules/json/src/test/java/com/baeldung/jsonjava/JSONArrayGetValueByKeyUnitTest.java similarity index 100% rename from json/src/test/java/com/baeldung/jsonjava/JSONArrayGetValueByKeyUnitTest.java rename to json-modules/json/src/test/java/com/baeldung/jsonjava/JSONArrayGetValueByKeyUnitTest.java diff --git a/json/src/test/java/com/baeldung/jsonjava/JSONArrayIntegrationTest.java b/json-modules/json/src/test/java/com/baeldung/jsonjava/JSONArrayIntegrationTest.java similarity index 100% rename from json/src/test/java/com/baeldung/jsonjava/JSONArrayIntegrationTest.java rename to json-modules/json/src/test/java/com/baeldung/jsonjava/JSONArrayIntegrationTest.java diff --git a/json/src/test/java/com/baeldung/jsonjava/JSONObjectIntegrationTest.java b/json-modules/json/src/test/java/com/baeldung/jsonjava/JSONObjectIntegrationTest.java similarity index 100% rename from json/src/test/java/com/baeldung/jsonjava/JSONObjectIntegrationTest.java rename to json-modules/json/src/test/java/com/baeldung/jsonjava/JSONObjectIntegrationTest.java diff --git a/json/src/test/java/com/baeldung/jsonjava/JSONTokenerIntegrationTest.java b/json-modules/json/src/test/java/com/baeldung/jsonjava/JSONTokenerIntegrationTest.java similarity index 100% rename from json/src/test/java/com/baeldung/jsonjava/JSONTokenerIntegrationTest.java rename to json-modules/json/src/test/java/com/baeldung/jsonjava/JSONTokenerIntegrationTest.java diff --git a/json/src/test/java/com/baeldung/jsonjava/ObjectToFromJSONIntegrationTest.java b/json-modules/json/src/test/java/com/baeldung/jsonjava/ObjectToFromJSONIntegrationTest.java similarity index 100% rename from json/src/test/java/com/baeldung/jsonjava/ObjectToFromJSONIntegrationTest.java rename to json-modules/json/src/test/java/com/baeldung/jsonjava/ObjectToFromJSONIntegrationTest.java diff --git a/json/src/test/java/com/baeldung/jsonobject/iterate/JSONObjectIteratorUnitTest.java b/json-modules/json/src/test/java/com/baeldung/jsonobject/iterate/JSONObjectIteratorUnitTest.java similarity index 97% rename from json/src/test/java/com/baeldung/jsonobject/iterate/JSONObjectIteratorUnitTest.java rename to json-modules/json/src/test/java/com/baeldung/jsonobject/iterate/JSONObjectIteratorUnitTest.java index 55cfdab53b..fa51c83e04 100644 --- a/json/src/test/java/com/baeldung/jsonobject/iterate/JSONObjectIteratorUnitTest.java +++ b/json-modules/json/src/test/java/com/baeldung/jsonobject/iterate/JSONObjectIteratorUnitTest.java @@ -1,79 +1,79 @@ -package com.baeldung.jsonobject.iterate; - -import static org.assertj.core.api.Assertions.assertThat; - -import java.util.Map; - -import org.json.JSONArray; -import org.json.JSONObject; -import org.junit.Test; - -public class JSONObjectIteratorUnitTest { - - private JSONObjectIterator jsonObjectIterator = new JSONObjectIterator(); - - @Test - public void givenJSONObject_whenIterating_thenGetKeyValuePairs() { - JSONObject jsonObject = getJsonObject(); - - jsonObjectIterator.handleJSONObject(jsonObject); - - Map keyValuePairs = jsonObjectIterator.getKeyValuePairs(); - assertThat(keyValuePairs.get("rType")).isEqualTo("Regular"); - assertThat(keyValuePairs.get("rId")).isEqualTo("1001"); - assertThat(keyValuePairs.get("cType")).isEqualTo("Chocolate"); - assertThat(keyValuePairs.get("cId")).isEqualTo("1002"); - assertThat(keyValuePairs.get("bType")).isEqualTo("BlueBerry"); - assertThat(keyValuePairs.get("bId")).isEqualTo("1003"); - assertThat(keyValuePairs.get("name")).isEqualTo("Cake"); - assertThat(keyValuePairs.get("cakeId")).isEqualTo("0001"); - assertThat(keyValuePairs.get("type")).isEqualTo("donut"); - assertThat(keyValuePairs.get("Type")).isEqualTo("Maple"); - assertThat(keyValuePairs.get("tId")).isEqualTo("5001"); - assertThat(keyValuePairs.get("batters") - .toString()).isEqualTo("[{\"rType\":\"Regular\",\"rId\":\"1001\"},{\"cType\":\"Chocolate\",\"cId\":\"1002\"},{\"bType\":\"BlueBerry\",\"bId\":\"1003\"}]"); - assertThat(keyValuePairs.get("cakeShapes") - .toString()).isEqualTo("[\"square\",\"circle\",\"heart\"]"); - assertThat(keyValuePairs.get("topping") - .toString()).isEqualTo("{\"Type\":\"Maple\",\"tId\":\"5001\"}"); - } - - private JSONObject getJsonObject() { - JSONObject cake = new JSONObject(); - cake.put("cakeId", "0001"); - cake.put("type", "donut"); - cake.put("name", "Cake"); - - JSONArray batters = new JSONArray(); - JSONObject regular = new JSONObject(); - regular.put("rId", "1001"); - regular.put("rType", "Regular"); - batters.put(regular); - JSONObject chocolate = new JSONObject(); - chocolate.put("cId", "1002"); - chocolate.put("cType", "Chocolate"); - batters.put(chocolate); - JSONObject blueberry = new JSONObject(); - blueberry.put("bId", "1003"); - blueberry.put("bType", "BlueBerry"); - batters.put(blueberry); - - JSONArray cakeShapes = new JSONArray(); - cakeShapes.put("square"); - cakeShapes.put("circle"); - cakeShapes.put("heart"); - - cake.put("cakeShapes", cakeShapes); - - cake.put("batters", batters); - - JSONObject topping = new JSONObject(); - topping.put("tId", "5001"); - topping.put("Type", "Maple"); - - cake.put("topping", topping); - - return cake; - } - -} +package com.baeldung.jsonobject.iterate; + +import static org.assertj.core.api.Assertions.assertThat; + +import java.util.Map; + +import org.json.JSONArray; +import org.json.JSONObject; +import org.junit.Test; + +public class JSONObjectIteratorUnitTest { + + private JSONObjectIterator jsonObjectIterator = new JSONObjectIterator(); + + @Test + public void givenJSONObject_whenIterating_thenGetKeyValuePairs() { + JSONObject jsonObject = getJsonObject(); + + jsonObjectIterator.handleJSONObject(jsonObject); + + Map keyValuePairs = jsonObjectIterator.getKeyValuePairs(); + assertThat(keyValuePairs.get("rType")).isEqualTo("Regular"); + assertThat(keyValuePairs.get("rId")).isEqualTo("1001"); + assertThat(keyValuePairs.get("cType")).isEqualTo("Chocolate"); + assertThat(keyValuePairs.get("cId")).isEqualTo("1002"); + assertThat(keyValuePairs.get("bType")).isEqualTo("BlueBerry"); + assertThat(keyValuePairs.get("bId")).isEqualTo("1003"); + assertThat(keyValuePairs.get("name")).isEqualTo("Cake"); + assertThat(keyValuePairs.get("cakeId")).isEqualTo("0001"); + assertThat(keyValuePairs.get("type")).isEqualTo("donut"); + assertThat(keyValuePairs.get("Type")).isEqualTo("Maple"); + assertThat(keyValuePairs.get("tId")).isEqualTo("5001"); + assertThat(keyValuePairs.get("batters") + .toString()).isEqualTo("[{\"rType\":\"Regular\",\"rId\":\"1001\"},{\"cType\":\"Chocolate\",\"cId\":\"1002\"},{\"bType\":\"BlueBerry\",\"bId\":\"1003\"}]"); + assertThat(keyValuePairs.get("cakeShapes") + .toString()).isEqualTo("[\"square\",\"circle\",\"heart\"]"); + assertThat(keyValuePairs.get("topping") + .toString()).isEqualTo("{\"Type\":\"Maple\",\"tId\":\"5001\"}"); + } + + private JSONObject getJsonObject() { + JSONObject cake = new JSONObject(); + cake.put("cakeId", "0001"); + cake.put("type", "donut"); + cake.put("name", "Cake"); + + JSONArray batters = new JSONArray(); + JSONObject regular = new JSONObject(); + regular.put("rId", "1001"); + regular.put("rType", "Regular"); + batters.put(regular); + JSONObject chocolate = new JSONObject(); + chocolate.put("cId", "1002"); + chocolate.put("cType", "Chocolate"); + batters.put(chocolate); + JSONObject blueberry = new JSONObject(); + blueberry.put("bId", "1003"); + blueberry.put("bType", "BlueBerry"); + batters.put(blueberry); + + JSONArray cakeShapes = new JSONArray(); + cakeShapes.put("square"); + cakeShapes.put("circle"); + cakeShapes.put("heart"); + + cake.put("cakeShapes", cakeShapes); + + cake.put("batters", batters); + + JSONObject topping = new JSONObject(); + topping.put("tId", "5001"); + topping.put("Type", "Maple"); + + cake.put("topping", topping); + + return cake; + } + +} diff --git a/json/src/test/java/com/baeldung/jsonpointer/JsonPointerCrudUnitTest.java b/json-modules/json/src/test/java/com/baeldung/jsonpointer/JsonPointerCrudUnitTest.java similarity index 100% rename from json/src/test/java/com/baeldung/jsonpointer/JsonPointerCrudUnitTest.java rename to json-modules/json/src/test/java/com/baeldung/jsonpointer/JsonPointerCrudUnitTest.java diff --git a/json/src/test/resources/address.json b/json-modules/json/src/test/resources/address.json similarity index 100% rename from json/src/test/resources/address.json rename to json-modules/json/src/test/resources/address.json diff --git a/json/src/test/resources/books.json b/json-modules/json/src/test/resources/books.json similarity index 100% rename from json/src/test/resources/books.json rename to json-modules/json/src/test/resources/books.json diff --git a/json/src/test/resources/product_invalid.json b/json-modules/json/src/test/resources/product_invalid.json similarity index 91% rename from json/src/test/resources/product_invalid.json rename to json-modules/json/src/test/resources/product_invalid.json index 7c55d8c7a5..96d792aca8 100644 --- a/json/src/test/resources/product_invalid.json +++ b/json-modules/json/src/test/resources/product_invalid.json @@ -1,5 +1,5 @@ -{ - "id": 1, - "name": "Lampshade", - "price": 0 -} +{ + "id": 1, + "name": "Lampshade", + "price": 0 +} diff --git a/json/src/test/resources/product_valid.json b/json-modules/json/src/test/resources/product_valid.json similarity index 92% rename from json/src/test/resources/product_valid.json rename to json-modules/json/src/test/resources/product_valid.json index e0697dc4c2..5095029d4c 100644 --- a/json/src/test/resources/product_valid.json +++ b/json-modules/json/src/test/resources/product_valid.json @@ -1,5 +1,5 @@ -{ - "id": 1, - "name": "Lampshade", - "price": 10 -} +{ + "id": 1, + "name": "Lampshade", + "price": 10 +} diff --git a/json/src/test/resources/schema.json b/json-modules/json/src/test/resources/schema.json similarity index 96% rename from json/src/test/resources/schema.json rename to json-modules/json/src/test/resources/schema.json index 7cf99d76e0..ce513f82c4 100644 --- a/json/src/test/resources/schema.json +++ b/json-modules/json/src/test/resources/schema.json @@ -1,22 +1,22 @@ -{ - "$schema": "http://json-schema.org/draft-04/schema#", - "title": "Product", - "description": "A product from the catalog", - "type": "object", - "properties": { - "id": { - "description": "The unique identifier for a product", - "type": "integer" - }, - "name": { - "description": "Name of the product", - "type": "string" - }, - "price": { - "type": "number", - "minimum": 0, - "exclusiveMinimum": true - } - }, - "required": ["id", "name", "price"] -} +{ + "$schema": "http://json-schema.org/draft-04/schema#", + "title": "Product", + "description": "A product from the catalog", + "type": "object", + "properties": { + "id": { + "description": "The unique identifier for a product", + "type": "integer" + }, + "name": { + "description": "Name of the product", + "type": "string" + }, + "price": { + "type": "number", + "minimum": 0, + "exclusiveMinimum": true + } + }, + "required": ["id", "name", "price"] +} diff --git a/json-modules/pom.xml b/json-modules/pom.xml new file mode 100644 index 0000000000..171086db2e --- /dev/null +++ b/json-modules/pom.xml @@ -0,0 +1,35 @@ + + + 4.0.0 + json-modules + json-modules + pom + + + parent-modules + com.baeldung + 1.0.0-SNAPSHOT + + + + json + json-2 + json-path + gson + + + + + + + org.springframework.boot + spring-boot-maven-plugin + + + + + + + \ No newline at end of file diff --git a/libraries-5/pom.xml b/libraries-5/pom.xml index 85b1f3b475..eefc265457 100644 --- a/libraries-5/pom.xml +++ b/libraries-5/pom.xml @@ -118,6 +118,19 @@ ${jmh-core.version} + + + + + org.apache.maven.plugins + maven-surefire-plugin + + + target/mypacts + + + + 3.6.3 diff --git a/libraries-5/src/test/java/com/baeldung/pact/PactProviderLiveTest.java b/libraries-5/src/test/java/com/baeldung/pact/PactProviderLiveTest.java index 7b72dec852..b53e88c61a 100644 --- a/libraries-5/src/test/java/com/baeldung/pact/PactProviderLiveTest.java +++ b/libraries-5/src/test/java/com/baeldung/pact/PactProviderLiveTest.java @@ -17,7 +17,7 @@ import au.com.dius.pact.provider.junit5.PactVerificationContext; import au.com.dius.pact.provider.junit5.PactVerificationInvocationContextProvider; @Provider("test_provider") -@PactFolder("target/pacts") +@PactFolder("target/mypacts") public class PactProviderLiveTest { private static ConfigurableWebApplicationContext application; diff --git a/libraries-http/src/main/java/com/baeldung/javalin/User/User.java b/libraries-http/src/main/java/com/baeldung/javalin/User/User.java index 09f710453b..288c027c8b 100644 --- a/libraries-http/src/main/java/com/baeldung/javalin/User/User.java +++ b/libraries-http/src/main/java/com/baeldung/javalin/User/User.java @@ -1,8 +1,11 @@ package com.baeldung.javalin.User; +import com.fasterxml.jackson.annotation.JsonProperty; public class User { - public final int id; - public final String name; + public int id; + public String name; + + public User(){} public User(int id, String name) { this.id = id; 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 ba27436109..f3be63c8b5 100644 --- a/persistence-modules/spring-boot-persistence-mongodb-2/README.md +++ b/persistence-modules/spring-boot-persistence-mongodb-2/README.md @@ -2,4 +2,6 @@ - [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/pom.xml b/pom.xml index 4b96a48fc0..912a13f402 100644 --- a/pom.xml +++ b/pom.xml @@ -330,8 +330,7 @@ parent-spring-5 parent-java - akka-http - akka-streams + akka-modules algorithms-modules annotations @@ -404,7 +403,6 @@ graphql-modules grpc - gson guava-modules guice @@ -447,9 +445,7 @@ java-native jooby jsf - json - json-2 - json-path + json-modules jsoup kubernetes ksqldb @@ -508,9 +504,8 @@ protobuffer - quarkus - quarkus-extension - + quarkus-modules + rabbitmq ratpack @@ -581,7 +576,6 @@ spring-5-webflux-2 spring-activiti - spring-akka spring-amqp spring-aop spring-aop-2 @@ -770,8 +764,7 @@ parent-spring-5 parent-java - akka-http - akka-streams + akka-modules algorithms-modules annotations @@ -844,7 +837,6 @@ graphql-modules grpc - gson guava-modules guice @@ -887,9 +879,7 @@ java-native jooby jsf - json - json-2 - json-path + json-modules jsoup ksqldb @@ -950,8 +940,7 @@ protobuffer - quarkus - quarkus-extension + quarkus-modules rabbitmq @@ -1016,7 +1005,6 @@ spring-activiti - spring-akka spring-amqp spring-aop spring-aop-2 @@ -1264,8 +1252,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 @@ -1332,8 +1320,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-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 92% 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/quarkus-jandex/hello-app/mvnw b/quarkus-modules/quarkus-jandex/hello-app/mvnw similarity index 100% rename from quarkus-jandex/hello-app/mvnw rename to quarkus-modules/quarkus-jandex/hello-app/mvnw diff --git a/quarkus-jandex/hello-app/mvnw.cmd b/quarkus-modules/quarkus-jandex/hello-app/mvnw.cmd similarity index 100% rename from quarkus-jandex/hello-app/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 92% 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 91% 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/.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/reactor-core/README.md b/reactor-core/README.md index 7ca3b5773f..c0d4a3fc3c 100644 --- a/reactor-core/README.md +++ b/reactor-core/README.md @@ -11,3 +11,4 @@ This module contains articles about Reactor Core. - [Project Reactor: map() vs flatMap()](https://www.baeldung.com/java-reactor-map-flatmap) - [What Does Mono.defer() Do?](https://www.baeldung.com/java-mono-defer) - [Handling Exceptions in Project Reactor](https://www.baeldung.com/reactor-exceptions) +- [Difference Between Flux.create and Flux.generate](https://www.baeldung.com/java-flux-create-generate) diff --git a/reactor-core/pom.xml b/reactor-core/pom.xml index 39a66cee3e..e27a1a2845 100644 --- a/reactor-core/pom.xml +++ b/reactor-core/pom.xml @@ -35,7 +35,7 @@ - 3.4.9 + 3.4.17 \ No newline at end of file diff --git a/reactor-core/src/main/java/com/baeldung/reactor/generate/create/CharacterCreator.java b/reactor-core/src/main/java/com/baeldung/reactor/generate/create/CharacterCreator.java new file mode 100644 index 0000000000..122e512e78 --- /dev/null +++ b/reactor-core/src/main/java/com/baeldung/reactor/generate/create/CharacterCreator.java @@ -0,0 +1,14 @@ +package com.baeldung.reactor.generate.create; + +import java.util.List; +import java.util.function.Consumer; + +import reactor.core.publisher.Flux; + +public class CharacterCreator { + public Consumer> consumer; + + public Flux createCharacterSequence() { + return Flux.create(sink -> CharacterCreator.this.consumer = items -> items.forEach(sink::next)); + } +} diff --git a/reactor-core/src/main/java/com/baeldung/reactor/generate/create/CharacterGenerator.java b/reactor-core/src/main/java/com/baeldung/reactor/generate/create/CharacterGenerator.java new file mode 100644 index 0000000000..7951483dd9 --- /dev/null +++ b/reactor-core/src/main/java/com/baeldung/reactor/generate/create/CharacterGenerator.java @@ -0,0 +1,16 @@ +package com.baeldung.reactor.generate.create; + +import reactor.core.publisher.Flux; + +public class CharacterGenerator { + public Flux generateCharacters() { + return Flux.generate(() -> 97, (state, sink) -> { + char value = (char) state.intValue(); + sink.next(value); + if (value == 'z') { + sink.complete(); + } + return state + 1; + }); + } +} diff --git a/reactor-core/src/test/java/com/baeldung/reactor/generate/create/CharacterUnitTest.java b/reactor-core/src/test/java/com/baeldung/reactor/generate/create/CharacterUnitTest.java new file mode 100644 index 0000000000..6822b25a7f --- /dev/null +++ b/reactor-core/src/test/java/com/baeldung/reactor/generate/create/CharacterUnitTest.java @@ -0,0 +1,52 @@ +package com.baeldung.reactor.generate.create; + +import static org.assertj.core.api.Assertions.assertThat; + +import java.util.ArrayList; +import java.util.List; + +import org.junit.Test; + +import reactor.core.publisher.Flux; +import reactor.test.StepVerifier; + +public class CharacterUnitTest { + @Test + public void whenGeneratingCharacters_thenCharactersAreProduced() { + CharacterGenerator characterGenerator = new CharacterGenerator(); + Flux characterFlux = characterGenerator.generateCharacters().take(3); + + StepVerifier.create(characterFlux) + .expectNext('a', 'b', 'c') + .expectComplete() + .verify(); + } + + @Test + public void whenCreatingCharactersWithMultipleThreads_thenSequenceIsProducedAsynchronously() throws InterruptedException { + CharacterGenerator characterGenerator = new CharacterGenerator(); + List sequence1 = characterGenerator.generateCharacters() + .take(3) + .collectList() + .block(); + List sequence2 = characterGenerator.generateCharacters() + .take(2) + .collectList() + .block(); + + CharacterCreator characterCreator = new CharacterCreator(); + Thread producerThread1 = new Thread( + () -> characterCreator.consumer.accept(sequence1)); + Thread producerThread2 = new Thread( + () -> characterCreator.consumer.accept(sequence2)); + List consolidated = new ArrayList<>(); + characterCreator.createCharacterSequence().subscribe(consolidated::add); + + producerThread1.start(); + producerThread2.start(); + producerThread1.join(); + producerThread2.join(); + + assertThat(consolidated).containsExactlyInAnyOrder('a', 'b', 'c', 'a', 'b'); + } +} diff --git a/spring-boot-modules/spring-boot-data-3/README.md b/spring-boot-modules/spring-boot-data-3/README.md index 7d843af9ea..3959894853 100644 --- a/spring-boot-modules/spring-boot-data-3/README.md +++ b/spring-boot-modules/spring-boot-data-3/README.md @@ -1 +1,2 @@ ### Relevant Articles: +- [Spring Data JPA – Run an App Without a Database](https://www.baeldung.com/spring-data-jpa-run-app-without-db) diff --git a/spring-boot-modules/spring-boot-mvc/README.md b/spring-boot-modules/spring-boot-mvc/README.md index fdd7c70af2..852990bd73 100644 --- a/spring-boot-modules/spring-boot-mvc/README.md +++ b/spring-boot-modules/spring-boot-mvc/README.md @@ -11,5 +11,4 @@ This module contains articles about Spring Web MVC in Spring Boot projects. - [Using Spring ResponseEntity to Manipulate the HTTP Response](https://www.baeldung.com/spring-response-entity) - [The @ServletComponentScan Annotation in Spring Boot](https://www.baeldung.com/spring-servletcomponentscan) - [Guide to Internationalization in Spring Boot](https://www.baeldung.com/spring-boot-internationalization) -- [Hide a Request Field in Swagger API](https://www.baeldung.com/spring-swagger-hide-field) - More articles: [[next -->]](/spring-boot-modules/spring-boot-mvc-2) 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/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-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/main/resources/logback.xml b/spring-cloud-modules/spring-cloud-rest/spring-cloud-rest-config-server/src/main/resources/logback.xml deleted file mode 100644 index 7d900d8ea8..0000000000 --- a/spring-cloud-modules/spring-cloud-rest/spring-cloud-rest-config-server/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-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/main/resources/logback.xml b/spring-cloud-modules/spring-cloud-rest/spring-cloud-rest-discovery-server/src/main/resources/logback.xml deleted file mode 100644 index 7d900d8ea8..0000000000 --- a/spring-cloud-modules/spring-cloud-rest/spring-cloud-rest-discovery-server/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-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/main/resources/logback.xml b/spring-cloud-modules/spring-cloud-rest/spring-cloud-rest-reviews-api/src/main/resources/logback.xml deleted file mode 100644 index 7d900d8ea8..0000000000 --- a/spring-cloud-modules/spring-cloud-rest/spring-cloud-rest-reviews-api/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-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/spring-security-core-2/README.md b/spring-security-modules/spring-security-core-2/README.md index 9ce12af8ef..bf70693eb5 100644 --- a/spring-security-modules/spring-security-core-2/README.md +++ b/spring-security-modules/spring-security-core-2/README.md @@ -4,6 +4,7 @@ This module contains articles about core Spring Security ### Relevant Articles: - [Handle Spring Security Exceptions](https://www.baeldung.com/spring-security-exceptions) +- [Handle Spring Security Exceptions With @ExceptionHandler](https://www.baeldung.com/spring-security-exceptionhandler) ### Build the Project diff --git a/spring-vault/pom.xml b/spring-vault/pom.xml index 68856de2fc..24726985f6 100644 --- a/spring-vault/pom.xml +++ b/spring-vault/pom.xml @@ -15,6 +15,18 @@ 0.0.1-SNAPSHOT ../parent-boot-2 + + + + + org.springframework.data + spring-data-releasetrain + Moore-SR1 + import + pom + + + @@ -26,6 +38,10 @@ spring-vault-core ${spring.vault.core.version} + + org.springframework.data + spring-data-keyvalue + com.fasterxml.jackson.core jackson-databind @@ -38,7 +54,7 @@ - 2.1.1.RELEASE + 2.3.2 \ No newline at end of file diff --git a/spring-vault/src/main/java/com/baeldung/springvault/Credentials.java b/spring-vault/src/main/java/com/baeldung/springvault/Credentials.java index 548ebd4ff6..a0a9be83a7 100644 --- a/spring-vault/src/main/java/com/baeldung/springvault/Credentials.java +++ b/spring-vault/src/main/java/com/baeldung/springvault/Credentials.java @@ -1,7 +1,12 @@ package com.baeldung.springvault; +import org.springframework.data.annotation.Id; +import org.springframework.vault.repository.mapping.Secret; + +@Secret(backend = "credentials", value = "myapp") public class Credentials { + @Id private String username; private String password; diff --git a/spring-vault/src/main/java/com/baeldung/springvault/CredentialsRepository.java b/spring-vault/src/main/java/com/baeldung/springvault/CredentialsRepository.java new file mode 100644 index 0000000000..41760114be --- /dev/null +++ b/spring-vault/src/main/java/com/baeldung/springvault/CredentialsRepository.java @@ -0,0 +1,9 @@ +package com.baeldung.springvault; + +import org.springframework.data.repository.CrudRepository; +import org.springframework.stereotype.Repository; + +@Repository +public interface CredentialsRepository extends CrudRepository { + +} diff --git a/spring-vault/src/main/java/com/baeldung/springvault/CredentialsService.java b/spring-vault/src/main/java/com/baeldung/springvault/CredentialsService.java index 6a4b7cb784..75bdd382cb 100644 --- a/spring-vault/src/main/java/com/baeldung/springvault/CredentialsService.java +++ b/spring-vault/src/main/java/com/baeldung/springvault/CredentialsService.java @@ -1,6 +1,7 @@ package com.baeldung.springvault; import java.net.URISyntaxException; +import java.util.Optional; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; @@ -19,6 +20,9 @@ public class CredentialsService { @Autowired private VaultTemplate vaultTemplate; + @Autowired + private CredentialsRepository credentialsRepository; + /** * To Secure Credentials * @param credentials @@ -41,4 +45,14 @@ public class CredentialsService { return response.getData(); } + public Credentials saveCredentials(Credentials credentials) { + + return credentialsRepository.save(credentials); + } + + public Optional findById(String username) { + + return credentialsRepository.findById(username); + } + } diff --git a/spring-vault/src/test/java/com/baeldung/springvault/VaultIntegrationTest.java b/spring-vault/src/test/java/com/baeldung/springvault/VaultIntegrationTest.java index dd8797aacc..7987ae9904 100644 --- a/spring-vault/src/test/java/com/baeldung/springvault/VaultIntegrationTest.java +++ b/spring-vault/src/test/java/com/baeldung/springvault/VaultIntegrationTest.java @@ -1,23 +1,26 @@ package com.baeldung.springvault; +import static org.junit.jupiter.api.Assertions.assertEquals; +import static org.junit.jupiter.api.Assertions.assertNotNull; + +import java.net.URISyntaxException; +import java.util.Optional; + import org.junit.FixMethodOrder; import org.junit.Ignore; import org.junit.Test; import org.junit.runner.RunWith; import org.junit.runners.MethodSorters; +import org.mockito.Mockito; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.boot.test.context.SpringBootTest; +import org.springframework.boot.test.mock.mockito.MockBean; import org.springframework.test.annotation.DirtiesContext; import org.springframework.test.annotation.DirtiesContext.ClassMode; import org.springframework.test.context.ContextConfiguration; import org.springframework.test.context.junit4.SpringRunner; import org.springframework.test.context.support.AnnotationConfigContextLoader; -import java.net.URISyntaxException; - -import static org.junit.jupiter.api.Assertions.assertEquals; -import static org.junit.jupiter.api.Assertions.assertNotNull; - /** * These tests are requiring the {@code vault} command to be installed and available in the executing * platform. So, if you intend to run them in your environment, the please install the vault and then @@ -33,6 +36,9 @@ public class VaultIntegrationTest { @Autowired private CredentialsService credentialsService; + @MockBean + private CredentialsRepository credentialsRepository; + /** * Test to secure credentials. * @@ -72,4 +78,41 @@ public class VaultIntegrationTest { assertEquals("password", credentials.getPassword()); } + @Test + @Ignore + public void givenCredentials_whenSave_thenReturnCredentials() { + // Given + Credentials credentials = new Credentials("login", "password"); + Mockito.when(credentialsRepository.save(credentials)) + .thenReturn(credentials); + + // When + Credentials savedCredentials = credentialsService.saveCredentials(credentials); + + // Then + assertNotNull(savedCredentials); + assertEquals(savedCredentials.getUsername(), credentials.getUsername()); + assertEquals(savedCredentials.getPassword(), credentials.getPassword()); + } + + @Test + @Ignore + public void givenId_whenFindById_thenReturnCredentials() { + // Given + Credentials credentials = new Credentials("login", "p@ssw@rd"); + Mockito.when(credentialsRepository.findById("login")) + .thenReturn(Optional.of(credentials)); + + // When + Optional returnedCredentials = credentialsService.findById("login"); + + // Then + assertNotNull(returnedCredentials); + assertNotNull(returnedCredentials.get()); + assertEquals(returnedCredentials.get() + .getUsername(), credentials.getUsername()); + assertEquals(returnedCredentials.get() + .getPassword(), credentials.getPassword()); + } + } 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/spring-web-modules/spring-thymeleaf/pom.xml b/spring-web-modules/spring-thymeleaf/pom.xml index 8201cb5c5b..94ae05ca11 100644 --- a/spring-web-modules/spring-thymeleaf/pom.xml +++ b/spring-web-modules/spring-thymeleaf/pom.xml @@ -115,10 +115,9 @@ org.codehaus.cargo - cargo-maven2-plugin - ${cargo-maven2-plugin.version} + cargo-maven3-plugin + ${cargo-maven3-plugin.version} - true jetty9x embedded @@ -143,7 +142,7 @@ 2.0.1.Final 6.0.11.Final - 1.6.1 + 1.9.9 \ No newline at end of file diff --git a/spring-web-modules/spring-thymeleaf/src/main/java/com/baeldung/thymeleaf/controller/FunctionCallController.java b/spring-web-modules/spring-thymeleaf/src/main/java/com/baeldung/thymeleaf/controller/FunctionCallController.java new file mode 100644 index 0000000000..751dbc4e9d --- /dev/null +++ b/spring-web-modules/spring-thymeleaf/src/main/java/com/baeldung/thymeleaf/controller/FunctionCallController.java @@ -0,0 +1,18 @@ +package com.baeldung.thymeleaf.controller; + +import com.baeldung.thymeleaf.utils.StudentUtils; +import org.springframework.stereotype.Controller; +import org.springframework.ui.Model; +import org.springframework.web.bind.annotation.RequestMapping; +import org.springframework.web.bind.annotation.RequestMethod; + +@Controller +public class FunctionCallController { + + @RequestMapping(value = "/function-call", method = RequestMethod.GET) + public String getExampleHTML(Model model) { + model.addAttribute("totalStudents", StudentUtils.buildStudents().size()); + model.addAttribute("student", StudentUtils.buildStudents().get(0)); + return "functionCall.html"; + } +} diff --git a/spring-web-modules/spring-thymeleaf/src/main/webapp/WEB-INF/views/functionCall.html b/spring-web-modules/spring-thymeleaf/src/main/webapp/WEB-INF/views/functionCall.html new file mode 100644 index 0000000000..d21fb7cf27 --- /dev/null +++ b/spring-web-modules/spring-thymeleaf/src/main/webapp/WEB-INF/views/functionCall.html @@ -0,0 +1,32 @@ + + + + +Thymeleaf: Javascript function call + + + + +
+
Thymeleaf: Javascript function call
+
+
+
+ + + + + + +
+
+ + \ No newline at end of file diff --git a/spring-web-modules/spring-thymeleaf/src/test/java/com/baeldung/thymeleaf/controller/FunctionCallIntegrationTest.java b/spring-web-modules/spring-thymeleaf/src/test/java/com/baeldung/thymeleaf/controller/FunctionCallIntegrationTest.java new file mode 100644 index 0000000000..90e8989aae --- /dev/null +++ b/spring-web-modules/spring-thymeleaf/src/test/java/com/baeldung/thymeleaf/controller/FunctionCallIntegrationTest.java @@ -0,0 +1,57 @@ +package com.baeldung.thymeleaf.controller; + +import com.baeldung.thymeleaf.config.InitSecurity; +import com.baeldung.thymeleaf.config.WebApp; +import com.baeldung.thymeleaf.config.WebMVCConfig; +import com.baeldung.thymeleaf.config.WebMVCSecurity; +import org.junit.Before; +import org.junit.Test; +import org.junit.runner.RunWith; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.mock.web.MockHttpSession; +import org.springframework.test.context.ContextConfiguration; +import org.springframework.test.context.junit4.SpringJUnit4ClassRunner; +import org.springframework.test.context.web.WebAppConfiguration; +import org.springframework.test.web.servlet.MockMvc; +import org.springframework.test.web.servlet.request.RequestPostProcessor; +import org.springframework.test.web.servlet.setup.MockMvcBuilders; +import org.springframework.web.context.WebApplicationContext; + +import javax.servlet.Filter; + +import static org.springframework.security.test.web.servlet.request.SecurityMockMvcRequestPostProcessors.csrf; +import static org.springframework.security.test.web.servlet.request.SecurityMockMvcRequestPostProcessors.user; +import static org.springframework.test.web.servlet.request.MockMvcRequestBuilders.get; +import static org.springframework.test.web.servlet.result.MockMvcResultMatchers.status; +import static org.springframework.test.web.servlet.result.MockMvcResultMatchers.view; + +@RunWith(SpringJUnit4ClassRunner.class) +@WebAppConfiguration +@ContextConfiguration(classes = { WebApp.class, WebMVCConfig.class, WebMVCSecurity.class, InitSecurity.class }) +public class FunctionCallIntegrationTest { + + @Autowired + WebApplicationContext wac; + @Autowired + MockHttpSession session; + + private MockMvc mockMvc; + + @Autowired + private Filter springSecurityFilterChain; + + private RequestPostProcessor testUser() { + return user("user1").password("user1Pass").roles("USER"); + } + + @Before + public void setup() { + mockMvc = MockMvcBuilders.webAppContextSetup(wac).addFilters(springSecurityFilterChain).build(); + } + + @Test + public void testGetDates() throws Exception { + mockMvc.perform(get("/function-call").with(testUser()).with(csrf())).andExpect(status().isOk()).andExpect(view().name("functionCall.html")); + } + +}