From 6932011bf9c86e9f55a37da89094c0f13dfc8fe9 Mon Sep 17 00:00:00 2001 From: Deboshree Date: Tue, 8 Nov 2022 23:55:31 +0530 Subject: [PATCH 01/85] https://jira.baeldung.com/browse/BAEL-4630 --- testing-modules/testng-jenkins/pom.xml | 48 +++++++++++++++++++ .../TestNGSampleTestForNumberAddition.java | 26 ++++++++++ .../TestNGSampleTestForStringLength.java | 20 ++++++++ .../src/test/resources/test_suite.xml | 10 ++++ 4 files changed, 104 insertions(+) create mode 100644 testing-modules/testng-jenkins/pom.xml create mode 100644 testing-modules/testng-jenkins/src/test/java/com/baeldung/TestNGSampleTestForNumberAddition.java create mode 100644 testing-modules/testng-jenkins/src/test/java/com/baeldung/TestNGSampleTestForStringLength.java create mode 100644 testing-modules/testng-jenkins/src/test/resources/test_suite.xml diff --git a/testing-modules/testng-jenkins/pom.xml b/testing-modules/testng-jenkins/pom.xml new file mode 100644 index 0000000000..9a89f633a4 --- /dev/null +++ b/testing-modules/testng-jenkins/pom.xml @@ -0,0 +1,48 @@ + + + 4.0.0 + testng + 0.1.0-SNAPSHOT + testng-jenkins + jar + + + com.baeldung + testing-modules + 1.0.0-SNAPSHOT + + + + 7.6.1 + + + + + org.testng + testng + ${testng.version} + test + + + + + + + org.apache.maven.plugins + maven-surefire-plugin + + + + src\test\resources\test_suite.xml + + + + + + + + + + \ No newline at end of file diff --git a/testing-modules/testng-jenkins/src/test/java/com/baeldung/TestNGSampleTestForNumberAddition.java b/testing-modules/testng-jenkins/src/test/java/com/baeldung/TestNGSampleTestForNumberAddition.java new file mode 100644 index 0000000000..05b4e590a3 --- /dev/null +++ b/testing-modules/testng-jenkins/src/test/java/com/baeldung/TestNGSampleTestForNumberAddition.java @@ -0,0 +1,26 @@ +package com.baeldung; + +import static org.testng.AssertJUnit.assertEquals; +import org.testng.annotations.AfterClass; +import org.testng.annotations.BeforeClass; +import org.testng.annotations.Test; + +public class TestNGSampleTestForNumberAddition { + int firstNumber, secondNumber; + + @BeforeClass + public void setup() { + firstNumber = 13; + secondNumber = 24; + } + + @AfterClass + public void tearDown() { + firstNumber = secondNumber = 0; + } + + @Test + public void givenNumbers_whenSumIsOdd_thenTrue() { + assertEquals(1, ( firstNumber + secondNumber ) % 2); + } +} diff --git a/testing-modules/testng-jenkins/src/test/java/com/baeldung/TestNGSampleTestForStringLength.java b/testing-modules/testng-jenkins/src/test/java/com/baeldung/TestNGSampleTestForStringLength.java new file mode 100644 index 0000000000..24cc674684 --- /dev/null +++ b/testing-modules/testng-jenkins/src/test/java/com/baeldung/TestNGSampleTestForStringLength.java @@ -0,0 +1,20 @@ +package com.baeldung; + +import static org.testng.AssertJUnit.assertEquals; +import org.testng.annotations.BeforeClass; +import org.testng.annotations.Test; + +public class TestNGSampleTestForStringLength { + + String name; + + @BeforeClass + public void setup() { + name = "Hannah"; + } + + @Test + public void givenString_whenEvenLength_thenTrue() { + assertEquals(0, name.length() % 2); + } +} diff --git a/testing-modules/testng-jenkins/src/test/resources/test_suite.xml b/testing-modules/testng-jenkins/src/test/resources/test_suite.xml new file mode 100644 index 0000000000..101fe28ea6 --- /dev/null +++ b/testing-modules/testng-jenkins/src/test/resources/test_suite.xml @@ -0,0 +1,10 @@ + + + + + + + + + + \ No newline at end of file From bd6c979b1edab75828f5ffec617f611ae12a7f26 Mon Sep 17 00:00:00 2001 From: Deboshree Date: Wed, 9 Nov 2022 01:00:29 +0530 Subject: [PATCH 02/85] Revert "https://jira.baeldung.com/browse/BAEL-4630" This reverts commit 6932011bf9c86e9f55a37da89094c0f13dfc8fe9. --- testing-modules/testng-jenkins/pom.xml | 48 ------------------- .../TestNGSampleTestForNumberAddition.java | 26 ---------- .../TestNGSampleTestForStringLength.java | 20 -------- .../src/test/resources/test_suite.xml | 10 ---- 4 files changed, 104 deletions(-) delete mode 100644 testing-modules/testng-jenkins/pom.xml delete mode 100644 testing-modules/testng-jenkins/src/test/java/com/baeldung/TestNGSampleTestForNumberAddition.java delete mode 100644 testing-modules/testng-jenkins/src/test/java/com/baeldung/TestNGSampleTestForStringLength.java delete mode 100644 testing-modules/testng-jenkins/src/test/resources/test_suite.xml diff --git a/testing-modules/testng-jenkins/pom.xml b/testing-modules/testng-jenkins/pom.xml deleted file mode 100644 index 9a89f633a4..0000000000 --- a/testing-modules/testng-jenkins/pom.xml +++ /dev/null @@ -1,48 +0,0 @@ - - - 4.0.0 - testng - 0.1.0-SNAPSHOT - testng-jenkins - jar - - - com.baeldung - testing-modules - 1.0.0-SNAPSHOT - - - - 7.6.1 - - - - - org.testng - testng - ${testng.version} - test - - - - - - - org.apache.maven.plugins - maven-surefire-plugin - - - - src\test\resources\test_suite.xml - - - - - - - - - - \ No newline at end of file diff --git a/testing-modules/testng-jenkins/src/test/java/com/baeldung/TestNGSampleTestForNumberAddition.java b/testing-modules/testng-jenkins/src/test/java/com/baeldung/TestNGSampleTestForNumberAddition.java deleted file mode 100644 index 05b4e590a3..0000000000 --- a/testing-modules/testng-jenkins/src/test/java/com/baeldung/TestNGSampleTestForNumberAddition.java +++ /dev/null @@ -1,26 +0,0 @@ -package com.baeldung; - -import static org.testng.AssertJUnit.assertEquals; -import org.testng.annotations.AfterClass; -import org.testng.annotations.BeforeClass; -import org.testng.annotations.Test; - -public class TestNGSampleTestForNumberAddition { - int firstNumber, secondNumber; - - @BeforeClass - public void setup() { - firstNumber = 13; - secondNumber = 24; - } - - @AfterClass - public void tearDown() { - firstNumber = secondNumber = 0; - } - - @Test - public void givenNumbers_whenSumIsOdd_thenTrue() { - assertEquals(1, ( firstNumber + secondNumber ) % 2); - } -} diff --git a/testing-modules/testng-jenkins/src/test/java/com/baeldung/TestNGSampleTestForStringLength.java b/testing-modules/testng-jenkins/src/test/java/com/baeldung/TestNGSampleTestForStringLength.java deleted file mode 100644 index 24cc674684..0000000000 --- a/testing-modules/testng-jenkins/src/test/java/com/baeldung/TestNGSampleTestForStringLength.java +++ /dev/null @@ -1,20 +0,0 @@ -package com.baeldung; - -import static org.testng.AssertJUnit.assertEquals; -import org.testng.annotations.BeforeClass; -import org.testng.annotations.Test; - -public class TestNGSampleTestForStringLength { - - String name; - - @BeforeClass - public void setup() { - name = "Hannah"; - } - - @Test - public void givenString_whenEvenLength_thenTrue() { - assertEquals(0, name.length() % 2); - } -} diff --git a/testing-modules/testng-jenkins/src/test/resources/test_suite.xml b/testing-modules/testng-jenkins/src/test/resources/test_suite.xml deleted file mode 100644 index 101fe28ea6..0000000000 --- a/testing-modules/testng-jenkins/src/test/resources/test_suite.xml +++ /dev/null @@ -1,10 +0,0 @@ - - - - - - - - - - \ No newline at end of file From 675c24e16612e09da25fafbb4be446d3f13c372d Mon Sep 17 00:00:00 2001 From: Lucas Silva <44280182+Daiven75@users.noreply.github.com> Date: Wed, 22 Feb 2023 00:31:50 -0300 Subject: [PATCH 03/85] rename class according to the entity --- .../opentelemetry/exception/ProductControllerAdvice.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/spring-cloud-modules/spring-cloud-open-telemetry/spring-cloud-open-telemetry2/src/main/java/com/baeldung/opentelemetry/exception/ProductControllerAdvice.java b/spring-cloud-modules/spring-cloud-open-telemetry/spring-cloud-open-telemetry2/src/main/java/com/baeldung/opentelemetry/exception/ProductControllerAdvice.java index fe7789ecf5..4d01ab0f6d 100644 --- a/spring-cloud-modules/spring-cloud-open-telemetry/spring-cloud-open-telemetry2/src/main/java/com/baeldung/opentelemetry/exception/ProductControllerAdvice.java +++ b/spring-cloud-modules/spring-cloud-open-telemetry/spring-cloud-open-telemetry2/src/main/java/com/baeldung/opentelemetry/exception/ProductControllerAdvice.java @@ -6,7 +6,7 @@ import org.springframework.web.bind.annotation.ExceptionHandler; import org.springframework.web.bind.annotation.RestControllerAdvice; @RestControllerAdvice -public class ProductControllerAdvice { +public class PriceControllerAdvice { @ExceptionHandler(PriceNotFoundException.class) public ResponseEntity handlePriceNotFoundException(PriceNotFoundException exception) { From 7643d4d81dde4e717763c2b254e01e1ede12deac Mon Sep 17 00:00:00 2001 From: Lucas Silva <44280182+Daiven75@users.noreply.github.com> Date: Wed, 22 Feb 2023 00:48:27 -0300 Subject: [PATCH 04/85] Rename ProductControllerAdvice.java to PriceControllerAdvice.java --- .../{ProductControllerAdvice.java => PriceControllerAdvice.java} | 0 1 file changed, 0 insertions(+), 0 deletions(-) rename spring-cloud-modules/spring-cloud-open-telemetry/spring-cloud-open-telemetry2/src/main/java/com/baeldung/opentelemetry/exception/{ProductControllerAdvice.java => PriceControllerAdvice.java} (100%) diff --git a/spring-cloud-modules/spring-cloud-open-telemetry/spring-cloud-open-telemetry2/src/main/java/com/baeldung/opentelemetry/exception/ProductControllerAdvice.java b/spring-cloud-modules/spring-cloud-open-telemetry/spring-cloud-open-telemetry2/src/main/java/com/baeldung/opentelemetry/exception/PriceControllerAdvice.java similarity index 100% rename from spring-cloud-modules/spring-cloud-open-telemetry/spring-cloud-open-telemetry2/src/main/java/com/baeldung/opentelemetry/exception/ProductControllerAdvice.java rename to spring-cloud-modules/spring-cloud-open-telemetry/spring-cloud-open-telemetry2/src/main/java/com/baeldung/opentelemetry/exception/PriceControllerAdvice.java From 3ea90c8df05ad2bb94afd5d3e7bab139f3a393d6 Mon Sep 17 00:00:00 2001 From: Grzegorz Piwowarek Date: Wed, 22 Feb 2023 14:32:48 +0100 Subject: [PATCH 05/85] Delete dependeny-exclusion directory --- .../core-java-exclusions/pom.xml | 53 -------------- .../ExcludeDirectDependencyUnitTest.java | 12 ---- .../dummy-surefire-junit47/pom.xml | 9 --- dependeny-exclusion/pom.xml | 71 ------------------- 4 files changed, 145 deletions(-) delete mode 100644 dependeny-exclusion/core-java-exclusions/pom.xml delete mode 100644 dependeny-exclusion/core-java-exclusions/src/test/java/com/sample/project/tests/ExcludeDirectDependencyUnitTest.java delete mode 100644 dependeny-exclusion/dummy-surefire-junit47/pom.xml delete mode 100644 dependeny-exclusion/pom.xml diff --git a/dependeny-exclusion/core-java-exclusions/pom.xml b/dependeny-exclusion/core-java-exclusions/pom.xml deleted file mode 100644 index cf1f6d1e1b..0000000000 --- a/dependeny-exclusion/core-java-exclusions/pom.xml +++ /dev/null @@ -1,53 +0,0 @@ - - - 4.0.0 - core-java-exclusions - 0.0.0-SNAPSHOT - core-java-exclusions - jar - - - com.baeldung.dependency-exclusion - dependency-exclusion - 0.0.1-SNAPSHOT - - - - - - org.apache.maven.plugins - maven-surefire-plugin - ${surefire-version} - - alphabetical - 1 - - - junit - false - - - - - - - org.apache.maven.surefire - surefire-junit47 - dummy - - - - - - - - - junit - junit - test - - - - diff --git a/dependeny-exclusion/core-java-exclusions/src/test/java/com/sample/project/tests/ExcludeDirectDependencyUnitTest.java b/dependeny-exclusion/core-java-exclusions/src/test/java/com/sample/project/tests/ExcludeDirectDependencyUnitTest.java deleted file mode 100644 index ed2400f9ac..0000000000 --- a/dependeny-exclusion/core-java-exclusions/src/test/java/com/sample/project/tests/ExcludeDirectDependencyUnitTest.java +++ /dev/null @@ -1,12 +0,0 @@ -package com.sample.project.tests; - -import static org.junit.Assert.assertTrue; - -import org.junit.Test; - -public class ExcludeDirectDependencyUnitTest { - @Test - public void basicUnitTest() { - assertTrue(true); - } -} diff --git a/dependeny-exclusion/dummy-surefire-junit47/pom.xml b/dependeny-exclusion/dummy-surefire-junit47/pom.xml deleted file mode 100644 index 5859ddbe72..0000000000 --- a/dependeny-exclusion/dummy-surefire-junit47/pom.xml +++ /dev/null @@ -1,9 +0,0 @@ - - - 4.0.0 - org.apache.maven.surefire - surefire-junit47 - dummy - diff --git a/dependeny-exclusion/pom.xml b/dependeny-exclusion/pom.xml deleted file mode 100644 index ac83cc161a..0000000000 --- a/dependeny-exclusion/pom.xml +++ /dev/null @@ -1,71 +0,0 @@ - - - 4.0.0 - com.baeldung.dependency-exclusion - dependency-exclusion - dependency-exclusion - pom - - - com.baeldung - parent-java - 0.0.1-SNAPSHOT - ../parent-java - - - - 2.22.2 - - - - dummy-surefire-junit47 - core-java-exclusions - - - - - - - org.apache.maven.plugins - maven-compiler-plugin - 3.7.0 - - 1.8 - 1.8 - - -parameters - - - - - org.apache.maven.plugins - maven-surefire-plugin - ${surefire-version} - - 1 - - - - org.apache.maven.surefire - surefire-junit-platform - ${surefire-version} - - - - - - - - - - - junit - junit - 4.13 - - - - - From a3644198c4f89569b3af683c502188d72f43c7a6 Mon Sep 17 00:00:00 2001 From: student-future <126549527+student-future@users.noreply.github.com> Date: Thu, 2 Mar 2023 20:46:18 +0800 Subject: [PATCH 06/85] Update pom.xml --- spring-boot-rest/pom.xml | 72 +++++++++++++++++++++++++++++++++++++++- 1 file changed, 71 insertions(+), 1 deletion(-) diff --git a/spring-boot-rest/pom.xml b/spring-boot-rest/pom.xml index f81286adb6..c2a6042e89 100644 --- a/spring-boot-rest/pom.xml +++ b/spring-boot-rest/pom.xml @@ -20,6 +20,12 @@ org.springframework.boot spring-boot-starter-web + + + tomcat-embed-el + org.apache.tomcat.embed + + com.fasterxml.jackson.dataformat @@ -42,37 +48,101 @@ org.springframework.boot spring-boot-starter-data-jpa + + + jakarta.xml.bind-api + jakarta.xml.bind + + + txw2 + org.glassfish.jaxb + + org.springframework.boot spring-boot-starter-data-rest + + + spring-boot-starter-web + org.springframework.boot + + org.springframework.boot spring-boot-starter-hateoas + + + spring-boot-starter-web + org.springframework.boot + + com.google.guava guava ${guava.version} + + + listenablefuture + com.google.guava + + + jsr305 + com.google.code.findbugs + + + error_prone_annotations + com.google.errorprone + + + j2objc-annotations + com.google.j2objc + + org.springframework.boot spring-boot-starter-test test + + + jakarta.xml.bind-api + jakarta.xml.bind + + net.sourceforge.htmlunit htmlunit test + + + commons-logging + commons-logging + + org.modelmapper modelmapper ${modelmapper.version} + + io.rest-assured + rest-assured + 3.3.0 + provided + + + hamcrest-library + org.hamcrest + + + @@ -90,4 +160,4 @@ 3.1.0 - \ No newline at end of file + From cb1f286dff3df6c30fd65d35e3aa6bf9587a0ed8 Mon Sep 17 00:00:00 2001 From: student-future <126549527+student-future@users.noreply.github.com> Date: Thu, 2 Mar 2023 20:48:13 +0800 Subject: [PATCH 07/85] Update pom.xml --- spring-boot-rest/pom.xml | 1 - 1 file changed, 1 deletion(-) diff --git a/spring-boot-rest/pom.xml b/spring-boot-rest/pom.xml index c2a6042e89..18d1f203e6 100644 --- a/spring-boot-rest/pom.xml +++ b/spring-boot-rest/pom.xml @@ -159,5 +159,4 @@ 1.4.11.1 3.1.0 - From 979b362ad1be3dc8315391fd2af926b543cda0af Mon Sep 17 00:00:00 2001 From: Deboshree Date: Fri, 24 Mar 2023 21:41:26 +0530 Subject: [PATCH 08/85] https://jira.baeldung.com/browse/BAEL- 1. moving modules to java-string-conversions 2. fixing old broken test --- .../stringtoint/StringToIntEncapsulation.java | 53 +++++++++++++++ .../DateToStringFormatterUnitTest.java | 17 +++-- .../StringToIntEncapsulationUnitTest.java | 67 +++++++++++++++++++ 3 files changed, 128 insertions(+), 9 deletions(-) create mode 100644 core-java-modules/core-java-string-conversions/src/main/java/com/baeldung/stringtoint/StringToIntEncapsulation.java create mode 100644 core-java-modules/core-java-string-conversions/src/test/java/com/baeldung/stringtoint/StringToIntEncapsulationUnitTest.java diff --git a/core-java-modules/core-java-string-conversions/src/main/java/com/baeldung/stringtoint/StringToIntEncapsulation.java b/core-java-modules/core-java-string-conversions/src/main/java/com/baeldung/stringtoint/StringToIntEncapsulation.java new file mode 100644 index 0000000000..cac1a5e19b --- /dev/null +++ b/core-java-modules/core-java-string-conversions/src/main/java/com/baeldung/stringtoint/StringToIntEncapsulation.java @@ -0,0 +1,53 @@ +package com.baeldung.stringtoint; + +import java.util.Optional; +import org.apache.commons.lang3.math.NumberUtils; + +public class StringToIntEncapsulation { + + private StringToIntEncapsulation() { + } + + public static Integer convertStringToIntUsingIntegerParseInt(String input){ + try { + return Integer.parseInt(input); + } catch (NumberFormatException e) { + // log or handle the error + return null; // or Integer.MIN_VALUE, or some other default value + } + } + + public static Integer convertStringToIntUsingIntegerValueOf(String input){ + try { + return Integer.valueOf(input); + } catch (NumberFormatException e) { + // log or handle the error + return null; // or Integer.MIN_VALUE, or some other default value + } + } + + public static Integer convertStringToIntUsingIntegerDecode(String input){ + try { + return Integer.decode(input); + } catch (Exception e) { + // log or handle the error + return null; // or Integer.MIN_VALUE, or some other default value + } + } + + public static Integer converStringToIntUsingOptional(String input){ + Optional parsedInt; + try { + parsedInt = Optional.of(Integer.parseInt(input)); + } catch (Exception e) { + // log or handle the error + parsedInt = Optional.empty(); + } + return parsedInt.orElse(null); + } + + public static int convertStringToIntUsingNumberUtils(String input){ + //returns Integer.MIN_VALUE as the default value if conversion fails + return NumberUtils.toInt(input, Integer.MIN_VALUE); + } +} diff --git a/core-java-modules/core-java-string-conversions/src/test/java/com/baeldung/datetostring/DateToStringFormatterUnitTest.java b/core-java-modules/core-java-string-conversions/src/test/java/com/baeldung/datetostring/DateToStringFormatterUnitTest.java index 221900fb0e..2ad92adb2d 100644 --- a/core-java-modules/core-java-string-conversions/src/test/java/com/baeldung/datetostring/DateToStringFormatterUnitTest.java +++ b/core-java-modules/core-java-string-conversions/src/test/java/com/baeldung/datetostring/DateToStringFormatterUnitTest.java @@ -19,7 +19,6 @@ import static org.junit.Assert.assertEquals; public class DateToStringFormatterUnitTest { private static final String DATE_FORMAT = "MMM d, yyyy HH:mm a"; - private static final String EXPECTED_STRING_DATE = "Aug 1, 2018 12:00 PM"; private static Date date; @BeforeClass @@ -34,8 +33,8 @@ public class DateToStringFormatterUnitTest { public void whenDateConvertedUsingSimpleDateFormatToString_thenCorrect() { DateFormat formatter = new SimpleDateFormat(DATE_FORMAT); String formattedDate = formatter.format(date); - - assertEquals(EXPECTED_STRING_DATE, formattedDate); + String expectedDate = "Aug 1, 2018 12:00 pm"; + assertEquals(expectedDate, formattedDate); } @Test @@ -43,15 +42,15 @@ public class DateToStringFormatterUnitTest { String formattedDate = DateFormat .getDateTimeInstance(DateFormat.MEDIUM, DateFormat.SHORT, Locale.US) .format(date); - - assertEquals(EXPECTED_STRING_DATE, formattedDate); + String expectedDate = "Aug 1, 2018, 12:00 PM"; + assertEquals(expectedDate, formattedDate); } @Test public void whenDateConvertedUsingFormatterToString_thenCorrect() { String formattedDate = String.format("%1$tb %1$te, %1$tY %1$tI:%1$tM %1$Tp", date); - - assertEquals(EXPECTED_STRING_DATE, formattedDate); + String expectedDate = "Aug 1, 2018 12:00 PM"; + assertEquals(expectedDate, formattedDate); } @Test @@ -62,7 +61,7 @@ public class DateToStringFormatterUnitTest { .atZone(ZoneId.of("CET")) .toLocalDateTime(); String formattedDate = ldt.format(fmt); - - assertEquals(EXPECTED_STRING_DATE, formattedDate); + String expectedDate = "Aug 1, 2018 12:00 pm"; + assertEquals(expectedDate, formattedDate); } } diff --git a/core-java-modules/core-java-string-conversions/src/test/java/com/baeldung/stringtoint/StringToIntEncapsulationUnitTest.java b/core-java-modules/core-java-string-conversions/src/test/java/com/baeldung/stringtoint/StringToIntEncapsulationUnitTest.java new file mode 100644 index 0000000000..46cbf61244 --- /dev/null +++ b/core-java-modules/core-java-string-conversions/src/test/java/com/baeldung/stringtoint/StringToIntEncapsulationUnitTest.java @@ -0,0 +1,67 @@ +package com.baeldung.stringtoint; + +import java.util.Arrays; +import java.util.List; +import org.junit.jupiter.api.Assertions; +import org.junit.jupiter.api.Test; + +class StringToIntEncapsulationUnitTest { + + @Test + void whenConvertingIntToString_thenInvalidCasesReturnNull() { + List testData = Arrays.asList( + new TestData("", null), + new TestData(null, null), + new TestData("23,56", null), + new TestData("2147483648", null), + new TestData("-2147483649", null), + new TestData("hello", null) + ); + testData.forEach(data -> { + Assertions.assertEquals(data.expectedOutput, StringToIntEncapsulation.convertStringToIntUsingIntegerParseInt(data.input)); + Assertions.assertEquals(data.expectedOutput, StringToIntEncapsulation.convertStringToIntUsingIntegerValueOf(data.input)); + Assertions.assertEquals(data.expectedOutput, StringToIntEncapsulation.converStringToIntUsingOptional(data.input)); + Assertions.assertEquals(data.expectedOutput, StringToIntEncapsulation.convertStringToIntUsingIntegerDecode(data.input)); + }); + } + + @Test + void whenConvertingIntToString_thenValidCasesReturnUnboxedInt() { + List testData = Arrays.asList( + new TestData("23", 23), + new TestData("-23", -23) + ); + testData.forEach(data -> { + Assertions.assertEquals(data.expectedOutput, StringToIntEncapsulation.convertStringToIntUsingIntegerParseInt(data.input)); + Assertions.assertEquals(data.expectedOutput, StringToIntEncapsulation.convertStringToIntUsingIntegerValueOf(data.input)); + Assertions.assertEquals(data.expectedOutput, StringToIntEncapsulation.converStringToIntUsingOptional(data.input)); + Assertions.assertEquals(data.expectedOutput, StringToIntEncapsulation.convertStringToIntUsingNumberUtils(data.input)); + Assertions.assertEquals(data.expectedOutput, StringToIntEncapsulation.convertStringToIntUsingIntegerDecode(data.input)); + }); + } + + @Test + void whenConvertingStringToIntUsingNumberUtils_ThenInValidConversionReturnIntegerMin() { + List testData = Arrays.asList( + new TestData("", Integer.MIN_VALUE), + new TestData(null, Integer.MIN_VALUE), + new TestData("23,56", Integer.MIN_VALUE), + new TestData("2147483648", Integer.MIN_VALUE), + new TestData("-2147483649", Integer.MIN_VALUE), + new TestData("hello", Integer.MIN_VALUE) + ); + testData.forEach(data -> + Assertions.assertEquals(data.expectedOutput, StringToIntEncapsulation.convertStringToIntUsingNumberUtils(data.input))); + } + + + public static class TestData{ + String input; + Integer expectedOutput; + + TestData(String input, Integer expectedOutput){ + this.input = input; + this.expectedOutput = expectedOutput; + } + } +} \ No newline at end of file From a7e728651567d4bf03040f4dfb0140119273c67d Mon Sep 17 00:00:00 2001 From: Deboshree Date: Fri, 24 Mar 2023 23:17:33 +0530 Subject: [PATCH 09/85] https://jira.baeldung.com/browse/BAEL- addressing PR comments --- ...ulation.java => StringToIntConverter.java} | 15 +++--- .../DateToStringFormatterUnitTest.java | 17 ++++--- ...java => StringToIntConverterUnitTest.java} | 50 +++++++------------ 3 files changed, 34 insertions(+), 48 deletions(-) rename core-java-modules/core-java-string-conversions/src/main/java/com/baeldung/stringtoint/{StringToIntEncapsulation.java => StringToIntConverter.java} (70%) rename core-java-modules/core-java-string-conversions/src/test/java/com/baeldung/stringtoint/{StringToIntEncapsulationUnitTest.java => StringToIntConverterUnitTest.java} (58%) diff --git a/core-java-modules/core-java-string-conversions/src/main/java/com/baeldung/stringtoint/StringToIntEncapsulation.java b/core-java-modules/core-java-string-conversions/src/main/java/com/baeldung/stringtoint/StringToIntConverter.java similarity index 70% rename from core-java-modules/core-java-string-conversions/src/main/java/com/baeldung/stringtoint/StringToIntEncapsulation.java rename to core-java-modules/core-java-string-conversions/src/main/java/com/baeldung/stringtoint/StringToIntConverter.java index cac1a5e19b..03d77c2aea 100644 --- a/core-java-modules/core-java-string-conversions/src/main/java/com/baeldung/stringtoint/StringToIntEncapsulation.java +++ b/core-java-modules/core-java-string-conversions/src/main/java/com/baeldung/stringtoint/StringToIntConverter.java @@ -3,9 +3,9 @@ package com.baeldung.stringtoint; import java.util.Optional; import org.apache.commons.lang3.math.NumberUtils; -public class StringToIntEncapsulation { +public class StringToIntConverter { - private StringToIntEncapsulation() { + private StringToIntConverter() { } public static Integer convertStringToIntUsingIntegerParseInt(String input){ @@ -13,7 +13,7 @@ public class StringToIntEncapsulation { return Integer.parseInt(input); } catch (NumberFormatException e) { // log or handle the error - return null; // or Integer.MIN_VALUE, or some other default value + return Integer.MIN_VALUE; } } @@ -22,7 +22,7 @@ public class StringToIntEncapsulation { return Integer.valueOf(input); } catch (NumberFormatException e) { // log or handle the error - return null; // or Integer.MIN_VALUE, or some other default value + return Integer.MIN_VALUE; } } @@ -31,11 +31,11 @@ public class StringToIntEncapsulation { return Integer.decode(input); } catch (Exception e) { // log or handle the error - return null; // or Integer.MIN_VALUE, or some other default value + return Integer.MIN_VALUE; } } - public static Integer converStringToIntUsingOptional(String input){ + public static Integer convertStringToIntUsingOptional(String input){ Optional parsedInt; try { parsedInt = Optional.of(Integer.parseInt(input)); @@ -43,11 +43,10 @@ public class StringToIntEncapsulation { // log or handle the error parsedInt = Optional.empty(); } - return parsedInt.orElse(null); + return parsedInt.orElse(Integer.MIN_VALUE); } public static int convertStringToIntUsingNumberUtils(String input){ - //returns Integer.MIN_VALUE as the default value if conversion fails return NumberUtils.toInt(input, Integer.MIN_VALUE); } } diff --git a/core-java-modules/core-java-string-conversions/src/test/java/com/baeldung/datetostring/DateToStringFormatterUnitTest.java b/core-java-modules/core-java-string-conversions/src/test/java/com/baeldung/datetostring/DateToStringFormatterUnitTest.java index 2ad92adb2d..221900fb0e 100644 --- a/core-java-modules/core-java-string-conversions/src/test/java/com/baeldung/datetostring/DateToStringFormatterUnitTest.java +++ b/core-java-modules/core-java-string-conversions/src/test/java/com/baeldung/datetostring/DateToStringFormatterUnitTest.java @@ -19,6 +19,7 @@ import static org.junit.Assert.assertEquals; public class DateToStringFormatterUnitTest { private static final String DATE_FORMAT = "MMM d, yyyy HH:mm a"; + private static final String EXPECTED_STRING_DATE = "Aug 1, 2018 12:00 PM"; private static Date date; @BeforeClass @@ -33,8 +34,8 @@ public class DateToStringFormatterUnitTest { public void whenDateConvertedUsingSimpleDateFormatToString_thenCorrect() { DateFormat formatter = new SimpleDateFormat(DATE_FORMAT); String formattedDate = formatter.format(date); - String expectedDate = "Aug 1, 2018 12:00 pm"; - assertEquals(expectedDate, formattedDate); + + assertEquals(EXPECTED_STRING_DATE, formattedDate); } @Test @@ -42,15 +43,15 @@ public class DateToStringFormatterUnitTest { String formattedDate = DateFormat .getDateTimeInstance(DateFormat.MEDIUM, DateFormat.SHORT, Locale.US) .format(date); - String expectedDate = "Aug 1, 2018, 12:00 PM"; - assertEquals(expectedDate, formattedDate); + + assertEquals(EXPECTED_STRING_DATE, formattedDate); } @Test public void whenDateConvertedUsingFormatterToString_thenCorrect() { String formattedDate = String.format("%1$tb %1$te, %1$tY %1$tI:%1$tM %1$Tp", date); - String expectedDate = "Aug 1, 2018 12:00 PM"; - assertEquals(expectedDate, formattedDate); + + assertEquals(EXPECTED_STRING_DATE, formattedDate); } @Test @@ -61,7 +62,7 @@ public class DateToStringFormatterUnitTest { .atZone(ZoneId.of("CET")) .toLocalDateTime(); String formattedDate = ldt.format(fmt); - String expectedDate = "Aug 1, 2018 12:00 pm"; - assertEquals(expectedDate, formattedDate); + + assertEquals(EXPECTED_STRING_DATE, formattedDate); } } diff --git a/core-java-modules/core-java-string-conversions/src/test/java/com/baeldung/stringtoint/StringToIntEncapsulationUnitTest.java b/core-java-modules/core-java-string-conversions/src/test/java/com/baeldung/stringtoint/StringToIntConverterUnitTest.java similarity index 58% rename from core-java-modules/core-java-string-conversions/src/test/java/com/baeldung/stringtoint/StringToIntEncapsulationUnitTest.java rename to core-java-modules/core-java-string-conversions/src/test/java/com/baeldung/stringtoint/StringToIntConverterUnitTest.java index 46cbf61244..2bfb4db161 100644 --- a/core-java-modules/core-java-string-conversions/src/test/java/com/baeldung/stringtoint/StringToIntEncapsulationUnitTest.java +++ b/core-java-modules/core-java-string-conversions/src/test/java/com/baeldung/stringtoint/StringToIntConverterUnitTest.java @@ -5,23 +5,24 @@ import java.util.List; import org.junit.jupiter.api.Assertions; import org.junit.jupiter.api.Test; -class StringToIntEncapsulationUnitTest { +class StringToIntConverterUnitTest { @Test - void whenConvertingIntToString_thenInvalidCasesReturnNull() { + void whenConvertingIntToString_thenInvalidCasesReturnIntegerMinValue() { List testData = Arrays.asList( - new TestData("", null), - new TestData(null, null), - new TestData("23,56", null), - new TestData("2147483648", null), - new TestData("-2147483649", null), - new TestData("hello", null) + new TestData("", Integer.MIN_VALUE), + new TestData(null, Integer.MIN_VALUE), + new TestData("23,56", Integer.MIN_VALUE), + new TestData("2147483648", Integer.MIN_VALUE), + new TestData("-2147483649", Integer.MIN_VALUE), + new TestData("hello", Integer.MIN_VALUE) ); testData.forEach(data -> { - Assertions.assertEquals(data.expectedOutput, StringToIntEncapsulation.convertStringToIntUsingIntegerParseInt(data.input)); - Assertions.assertEquals(data.expectedOutput, StringToIntEncapsulation.convertStringToIntUsingIntegerValueOf(data.input)); - Assertions.assertEquals(data.expectedOutput, StringToIntEncapsulation.converStringToIntUsingOptional(data.input)); - Assertions.assertEquals(data.expectedOutput, StringToIntEncapsulation.convertStringToIntUsingIntegerDecode(data.input)); + Assertions.assertEquals(data.expectedOutput, StringToIntConverter.convertStringToIntUsingIntegerParseInt(data.input)); + Assertions.assertEquals(data.expectedOutput, StringToIntConverter.convertStringToIntUsingIntegerValueOf(data.input)); + Assertions.assertEquals(data.expectedOutput, StringToIntConverter.convertStringToIntUsingOptional(data.input)); + Assertions.assertEquals(data.expectedOutput, StringToIntConverter.convertStringToIntUsingIntegerDecode(data.input)); + Assertions.assertEquals(data.expectedOutput, StringToIntConverter.convertStringToIntUsingNumberUtils(data.input)); }); } @@ -32,29 +33,14 @@ class StringToIntEncapsulationUnitTest { new TestData("-23", -23) ); testData.forEach(data -> { - Assertions.assertEquals(data.expectedOutput, StringToIntEncapsulation.convertStringToIntUsingIntegerParseInt(data.input)); - Assertions.assertEquals(data.expectedOutput, StringToIntEncapsulation.convertStringToIntUsingIntegerValueOf(data.input)); - Assertions.assertEquals(data.expectedOutput, StringToIntEncapsulation.converStringToIntUsingOptional(data.input)); - Assertions.assertEquals(data.expectedOutput, StringToIntEncapsulation.convertStringToIntUsingNumberUtils(data.input)); - Assertions.assertEquals(data.expectedOutput, StringToIntEncapsulation.convertStringToIntUsingIntegerDecode(data.input)); + Assertions.assertEquals(data.expectedOutput, StringToIntConverter.convertStringToIntUsingIntegerParseInt(data.input)); + Assertions.assertEquals(data.expectedOutput, StringToIntConverter.convertStringToIntUsingIntegerValueOf(data.input)); + Assertions.assertEquals(data.expectedOutput, StringToIntConverter.convertStringToIntUsingOptional(data.input)); + Assertions.assertEquals(data.expectedOutput, StringToIntConverter.convertStringToIntUsingNumberUtils(data.input)); + Assertions.assertEquals(data.expectedOutput, StringToIntConverter.convertStringToIntUsingIntegerDecode(data.input)); }); } - @Test - void whenConvertingStringToIntUsingNumberUtils_ThenInValidConversionReturnIntegerMin() { - List testData = Arrays.asList( - new TestData("", Integer.MIN_VALUE), - new TestData(null, Integer.MIN_VALUE), - new TestData("23,56", Integer.MIN_VALUE), - new TestData("2147483648", Integer.MIN_VALUE), - new TestData("-2147483649", Integer.MIN_VALUE), - new TestData("hello", Integer.MIN_VALUE) - ); - testData.forEach(data -> - Assertions.assertEquals(data.expectedOutput, StringToIntEncapsulation.convertStringToIntUsingNumberUtils(data.input))); - } - - public static class TestData{ String input; Integer expectedOutput; From 211e5fbbe24548b08e7e49865edcbd1b432b5d59 Mon Sep 17 00:00:00 2001 From: Kapil Khandelwal Date: Sat, 25 Mar 2023 21:44:46 +0530 Subject: [PATCH 10/85] BAEL-5704:- Skip a stage in a Jenkins Pipeline (#13707) --- .../skip-stage-job/skip-function-script | 32 +++++++++++++++++++ .../skip-stage-job/skip-input-script | 29 +++++++++++++++++ .../skip-stage-job/skip-when-script | 27 ++++++++++++++++ 3 files changed, 88 insertions(+) create mode 100644 jenkins-modules/jenkins-jobs/skip-stage-job/skip-function-script create mode 100644 jenkins-modules/jenkins-jobs/skip-stage-job/skip-input-script create mode 100644 jenkins-modules/jenkins-jobs/skip-stage-job/skip-when-script diff --git a/jenkins-modules/jenkins-jobs/skip-stage-job/skip-function-script b/jenkins-modules/jenkins-jobs/skip-stage-job/skip-function-script new file mode 100644 index 0000000000..62163d6301 --- /dev/null +++ b/jenkins-modules/jenkins-jobs/skip-stage-job/skip-function-script @@ -0,0 +1,32 @@ +pipeline { + agent any + parameters { + booleanParam(name: 'skip_test', defaultValue: false, description: 'Set to true to skip the test stage') + } + stages { + stage('Build') { + steps { + sh 'echo "Building the application"' + } + } + stage('Test') { + steps { + execute_stage('Test', params.skip_test) + } + } + stage('Deploy') { + steps { + sh 'echo "Deploying the application"' + } + } + } +} + +def execute_stage(stage_name, skip) { + stage(stage_name) { + if(skip) { + echo "Skipping ${stage_name} stage" + return + } + // Add steps to test the application + } diff --git a/jenkins-modules/jenkins-jobs/skip-stage-job/skip-input-script b/jenkins-modules/jenkins-jobs/skip-stage-job/skip-input-script new file mode 100644 index 0000000000..ba5560578a --- /dev/null +++ b/jenkins-modules/jenkins-jobs/skip-stage-job/skip-input-script @@ -0,0 +1,29 @@ +pipeline { + agent any + stages { + stage('Build') { + steps { + sh 'echo "Building the application"' + // Add steps to build the application + } + } + stage('Test') { + steps { + input message: 'Do you want to skip the test stage?', ok: 'Yes', parameters: [booleanParam(name: 'skip_test', defaultValue: false)], timeout: time(minutes: 5)) + script { + if(params.skip_test) { + sh 'echo "Testing the application"' + return + } + } + // Add steps to test the application + } + } + stage('Deploy') { + steps { + sh 'echo "Deploying the application"' + // Add steps to deploy the application + } + } + } +} diff --git a/jenkins-modules/jenkins-jobs/skip-stage-job/skip-when-script b/jenkins-modules/jenkins-jobs/skip-stage-job/skip-when-script new file mode 100644 index 0000000000..0b62a819e1 --- /dev/null +++ b/jenkins-modules/jenkins-jobs/skip-stage-job/skip-when-script @@ -0,0 +1,27 @@ +pipeline { + agent any + parameters { + booleanParam(name: 'skip_test', defaultValue: false, description: 'Set to true to skip the test stage') + } + stages { + stage('Build') { + steps { + sh 'echo "Building application"' + // Add build steps here + } + } + stage('Test') { + when { expression { params.skip_test != true } } + steps { + sh 'echo "Testing application"' + // Add test steps here + } + } + stage('Deploy') { + steps { + sh 'echo "Deploying application"' + // Add deployment steps here + } + } + } +} From b2f92bce02ab4cd1e7d2479ed3b6535448026f9c Mon Sep 17 00:00:00 2001 From: apeterlic Date: Sat, 25 Mar 2023 17:43:25 +0100 Subject: [PATCH 11/85] BAEL-6189 - Remove Entity with ManyToMany Relationship in JPA (#13634) * BAEL-6189 - Remove Entity with ManyToMany Relationship in JPA * Add property source --- persistence-modules/spring-jpa-2/pom.xml | 2 +- .../manytomanyremoval/Application.java | 12 +++ .../baeldung/manytomanyremoval/Author.java | 62 +++++++++++++++ .../com/baeldung/manytomanyremoval/Book.java | 65 ++++++++++++++++ .../baeldung/manytomanyremoval/Category.java | 41 ++++++++++ .../com/baeldung/manytomanyremoval/Post.java | 59 ++++++++++++++ .../BidirectionalRemovalUnitTest.java | 78 +++++++++++++++++++ .../manytomanyremoval/TestContextConfig.java | 12 +++ .../UnidirectionalRemovalUnitTest.java | 55 +++++++++++++ .../manytomanyremoval/test.properties | 11 +++ 10 files changed, 396 insertions(+), 1 deletion(-) create mode 100644 persistence-modules/spring-jpa-2/src/main/java/com/baeldung/manytomanyremoval/Application.java create mode 100644 persistence-modules/spring-jpa-2/src/main/java/com/baeldung/manytomanyremoval/Author.java create mode 100644 persistence-modules/spring-jpa-2/src/main/java/com/baeldung/manytomanyremoval/Book.java create mode 100644 persistence-modules/spring-jpa-2/src/main/java/com/baeldung/manytomanyremoval/Category.java create mode 100644 persistence-modules/spring-jpa-2/src/main/java/com/baeldung/manytomanyremoval/Post.java create mode 100644 persistence-modules/spring-jpa-2/src/test/java/com/baeldung/manytomanyremoval/BidirectionalRemovalUnitTest.java create mode 100644 persistence-modules/spring-jpa-2/src/test/java/com/baeldung/manytomanyremoval/TestContextConfig.java create mode 100644 persistence-modules/spring-jpa-2/src/test/java/com/baeldung/manytomanyremoval/UnidirectionalRemovalUnitTest.java create mode 100644 persistence-modules/spring-jpa-2/src/test/resources/manytomanyremoval/test.properties diff --git a/persistence-modules/spring-jpa-2/pom.xml b/persistence-modules/spring-jpa-2/pom.xml index 19bc9cba14..974dd41df9 100644 --- a/persistence-modules/spring-jpa-2/pom.xml +++ b/persistence-modules/spring-jpa-2/pom.xml @@ -101,7 +101,7 @@ - 5.1.5.RELEASE + 5.2.0.RELEASE 2.2.6.RELEASE 9.0.0.M26 diff --git a/persistence-modules/spring-jpa-2/src/main/java/com/baeldung/manytomanyremoval/Application.java b/persistence-modules/spring-jpa-2/src/main/java/com/baeldung/manytomanyremoval/Application.java new file mode 100644 index 0000000000..7b8551ee0c --- /dev/null +++ b/persistence-modules/spring-jpa-2/src/main/java/com/baeldung/manytomanyremoval/Application.java @@ -0,0 +1,12 @@ +package com.baeldung.manytomanyremoval; + +import org.springframework.boot.SpringApplication; +import org.springframework.boot.autoconfigure.SpringBootApplication; + +@SpringBootApplication +public class Application { + + public static void main(String[] args) { + SpringApplication.run(Application.class, args); + } +} diff --git a/persistence-modules/spring-jpa-2/src/main/java/com/baeldung/manytomanyremoval/Author.java b/persistence-modules/spring-jpa-2/src/main/java/com/baeldung/manytomanyremoval/Author.java new file mode 100644 index 0000000000..d9906a21cd --- /dev/null +++ b/persistence-modules/spring-jpa-2/src/main/java/com/baeldung/manytomanyremoval/Author.java @@ -0,0 +1,62 @@ +package com.baeldung.manytomanyremoval; + +import javax.persistence.*; +import java.util.HashSet; +import java.util.Set; + +@Entity +@Table(name = "author") +public class Author { + + @Id + @GeneratedValue(strategy = GenerationType.IDENTITY) + @Column(name = "id") + private Long id; + + @Column(name = "name") + private String name; + + @ManyToMany(mappedBy = "authors") + private Set books = new HashSet<>(); + + // standard getters and setters + + public Author() { + } + + public Author(String name) { + this.name = name; + } + + public Long getId() { + return id; + } + + public void setId(Long id) { + this.id = id; + } + + public String getName() { + return name; + } + + public void setName(String name) { + this.name = name; + } + + public Set getBooks() { + return books; + } + + public void setBooks(Set books) { + this.books = books; + } + + @PreRemove + private void removeBookAssociations() { + for (Book book : this.books) { + book.getAuthors().remove(this); + } + } + +} diff --git a/persistence-modules/spring-jpa-2/src/main/java/com/baeldung/manytomanyremoval/Book.java b/persistence-modules/spring-jpa-2/src/main/java/com/baeldung/manytomanyremoval/Book.java new file mode 100644 index 0000000000..4b49acd000 --- /dev/null +++ b/persistence-modules/spring-jpa-2/src/main/java/com/baeldung/manytomanyremoval/Book.java @@ -0,0 +1,65 @@ +package com.baeldung.manytomanyremoval; + + +import javax.persistence.*; +import java.util.HashSet; +import java.util.Set; + +@Entity +@Table(name = "book") +public class Book { + @Id + @GeneratedValue(strategy = GenerationType.IDENTITY) + @Column(name = "id") + private Long id; + + @Column(name = "title") + private String title; + + @ManyToMany(cascade = {CascadeType.PERSIST, CascadeType.MERGE}) + @JoinTable(name = "book_author", + joinColumns = @JoinColumn(name = "book_id"), + inverseJoinColumns = @JoinColumn(name = "author_id") + ) + private Set authors = new HashSet<>(); + + // standard getters and setters + + public Book() { + } + + public Book(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; + } + + public Set getAuthors() { + return authors; + } + + public void removeAuthor(Author author) { + this.authors.remove(author); + author.getBooks().remove(this); + } + + public void addAuthor(Author author) { + authors.add(author); + author.getBooks().add(this); + } + +} diff --git a/persistence-modules/spring-jpa-2/src/main/java/com/baeldung/manytomanyremoval/Category.java b/persistence-modules/spring-jpa-2/src/main/java/com/baeldung/manytomanyremoval/Category.java new file mode 100644 index 0000000000..f7202f544c --- /dev/null +++ b/persistence-modules/spring-jpa-2/src/main/java/com/baeldung/manytomanyremoval/Category.java @@ -0,0 +1,41 @@ +package com.baeldung.manytomanyremoval; + +import javax.persistence.*; + +@Entity +@Table(name = "category") +public class Category { + + @Id + @GeneratedValue(strategy = GenerationType.IDENTITY) + @Column(name = "id") + private Long id; + + @Column(name = "name") + private String name; + + // getters and setters + + public Category() { + } + + public Category(String name) { + this.name = name; + } + + public Long getId() { + return id; + } + + public void setId(Long id) { + this.id = id; + } + + public String getName() { + return name; + } + + public void setName(String name) { + this.name = name; + } +} diff --git a/persistence-modules/spring-jpa-2/src/main/java/com/baeldung/manytomanyremoval/Post.java b/persistence-modules/spring-jpa-2/src/main/java/com/baeldung/manytomanyremoval/Post.java new file mode 100644 index 0000000000..d229a9d0d7 --- /dev/null +++ b/persistence-modules/spring-jpa-2/src/main/java/com/baeldung/manytomanyremoval/Post.java @@ -0,0 +1,59 @@ +package com.baeldung.manytomanyremoval; + + +import javax.persistence.*; +import java.util.HashSet; +import java.util.Set; + +@Entity +@Table(name = "post") +public class Post { + + @Id + @GeneratedValue(strategy = GenerationType.IDENTITY) + @Column(name = "id") + private Long id; + + @Column(name = "title") + private String title; + + @ManyToMany(cascade = {CascadeType.PERSIST, CascadeType.MERGE, CascadeType.REFRESH}) + @JoinTable(name = "post_category", + joinColumns = @JoinColumn(name = "post_id"), + inverseJoinColumns = @JoinColumn(name = "category_id") + ) + private Set categories = new HashSet<>(); + + // getters and setters + + public Post(String title) { + this.title = title; + } + + public Post() { + } + + 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 Set getCategories() { + return categories; + } + + public void setCategories(Set categories) { + this.categories = categories; + } +} diff --git a/persistence-modules/spring-jpa-2/src/test/java/com/baeldung/manytomanyremoval/BidirectionalRemovalUnitTest.java b/persistence-modules/spring-jpa-2/src/test/java/com/baeldung/manytomanyremoval/BidirectionalRemovalUnitTest.java new file mode 100644 index 0000000000..f214fcdc2a --- /dev/null +++ b/persistence-modules/spring-jpa-2/src/test/java/com/baeldung/manytomanyremoval/BidirectionalRemovalUnitTest.java @@ -0,0 +1,78 @@ +package com.baeldung.manytomanyremoval; + +import org.junit.jupiter.api.Assertions; +import org.junit.jupiter.api.BeforeEach; +import org.junit.jupiter.api.Test; +import org.junit.jupiter.api.extension.ExtendWith; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.test.annotation.DirtiesContext; +import org.springframework.test.context.ContextConfiguration; +import org.springframework.test.context.junit.jupiter.SpringExtension; +import org.springframework.transaction.annotation.Transactional; + +import javax.persistence.EntityManager; + +@ExtendWith(SpringExtension.class) +@ContextConfiguration(classes = TestContextConfig.class) +@DirtiesContext(classMode = DirtiesContext.ClassMode.BEFORE_EACH_TEST_METHOD) +@Transactional +class BidirectionalRemovalUnitTest { + + @Autowired + private EntityManager entityManager; + + @BeforeEach + void init() { + Author author1 = new Author("Erich Gamma"); + Author author2 = new Author("John Vlissides"); + Author author3 = new Author("Ralph Johnson"); + Author author4 = new Author("Richard Helm"); + + Book book = new Book(); + book.setTitle("GOF Java"); + book.addAuthor(author1); + book.addAuthor(author2); + book.addAuthor(author3); + book.addAuthor(author4); + entityManager.persist(book); + + Book book2 = new Book(); + book2.setTitle("A Lost Age"); + book2.addAuthor(author3); + entityManager.persist(book2); + } + + @Test + void givenEntities_whenRemoveFromOwner_thenRemoveAssociation() { + Author author = (Author) entityManager + .createQuery("SELECT author from Author author where author.name = ?1") + .setParameter(1, "Ralph Johnson") + .getSingleResult(); + + Book book1 = entityManager.find(Book.class, 1L); + Book book2 = entityManager.find(Book.class, 2L); + + book1.removeAuthor(author); + entityManager.persist(book1); + + Assertions.assertEquals(3, book1.getAuthors().size()); + Assertions.assertEquals(1, book2.getAuthors().size()); + } + + @Transactional + @Test + void givenEntities_whenRemoveFromNotOwner_thenRemoveAssociation() { + Author author = (Author) entityManager + .createQuery("SELECT author from Author author where author.name = ?1") + .setParameter(1, "Ralph Johnson") + .getSingleResult(); + Book book1 = entityManager.find(Book.class, 1L); + Book book2 = entityManager.find(Book.class, 2L); + + entityManager.remove(author); + + Assertions.assertEquals(3, book1.getAuthors().size()); + Assertions.assertEquals(0, book2.getAuthors().size()); + } +} + diff --git a/persistence-modules/spring-jpa-2/src/test/java/com/baeldung/manytomanyremoval/TestContextConfig.java b/persistence-modules/spring-jpa-2/src/test/java/com/baeldung/manytomanyremoval/TestContextConfig.java new file mode 100644 index 0000000000..6a840824de --- /dev/null +++ b/persistence-modules/spring-jpa-2/src/test/java/com/baeldung/manytomanyremoval/TestContextConfig.java @@ -0,0 +1,12 @@ +package com.baeldung.manytomanyremoval; + +import org.springframework.context.annotation.ComponentScan; +import org.springframework.context.annotation.Configuration; +import org.springframework.context.annotation.PropertySource; + +@Configuration +@PropertySource("classpath:/manytomanyremoval/test.properties") +@ComponentScan("com.baeldung.manytomanyremoval") +public class TestContextConfig { + +} diff --git a/persistence-modules/spring-jpa-2/src/test/java/com/baeldung/manytomanyremoval/UnidirectionalRemovalUnitTest.java b/persistence-modules/spring-jpa-2/src/test/java/com/baeldung/manytomanyremoval/UnidirectionalRemovalUnitTest.java new file mode 100644 index 0000000000..b23b589fb7 --- /dev/null +++ b/persistence-modules/spring-jpa-2/src/test/java/com/baeldung/manytomanyremoval/UnidirectionalRemovalUnitTest.java @@ -0,0 +1,55 @@ +package com.baeldung.manytomanyremoval; + +import org.junit.jupiter.api.Assertions; +import org.junit.jupiter.api.BeforeEach; +import org.junit.jupiter.api.Test; +import org.junit.jupiter.api.extension.ExtendWith; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.test.annotation.DirtiesContext; +import org.springframework.test.context.ContextConfiguration; +import org.springframework.test.context.junit.jupiter.SpringExtension; +import org.springframework.transaction.annotation.Transactional; + +import javax.persistence.EntityManager; + +@ExtendWith(SpringExtension.class) +@ContextConfiguration(classes = TestContextConfig.class) +@DirtiesContext(classMode = DirtiesContext.ClassMode.BEFORE_EACH_TEST_METHOD) +@Transactional +class UnidirectionalRemovalUnitTest { + + @Autowired + private EntityManager entityManager; + + @BeforeEach + void init() { + Category category1 = new Category("JPA"); + Category category2 = new Category("Persistence"); + + Post post1 = new Post("Many-to-Many Relationship"); + post1.getCategories().add(category1); + post1.getCategories().add(category2); + + Post post2 = new Post("Entity Manager"); + post2.getCategories().add(category1); + + entityManager.persist(post1); + entityManager.persist(post2); + + Assertions.assertEquals(2, post1.getCategories().size()); + Assertions.assertEquals(1, post2.getCategories().size()); + } + + @Test + void givenEntities_whenRemove_thenRemoveAssociation() { + Post post1 = entityManager.find(Post.class, 1L); + Post post2 = entityManager.find(Post.class, 2L); + Category category = entityManager.find(Category.class, 1L); + + post1.getCategories().remove(category); + + Assertions.assertEquals(1, post1.getCategories().size()); + Assertions.assertEquals(1, post2.getCategories().size()); + } + +} diff --git a/persistence-modules/spring-jpa-2/src/test/resources/manytomanyremoval/test.properties b/persistence-modules/spring-jpa-2/src/test/resources/manytomanyremoval/test.properties new file mode 100644 index 0000000000..83479cd453 --- /dev/null +++ b/persistence-modules/spring-jpa-2/src/test/resources/manytomanyremoval/test.properties @@ -0,0 +1,11 @@ +spring.datasource.url=jdbc:h2:mem:mydb;MODE=LEGACY; +spring.datasource.driverClassName=org.h2.Driver +spring.datasource.username=sa +spring.datasource.password= + +hibernate.dialect=org.hibernate.dialect.H2Dialect +hibernate.hbm2ddl.auto=none +spring.jpa.show-sql=true +spring.jpa.hibernate.dialect=org.hibernate.dialect.H2Dialect +spring.jpa.hibernate.ddl-auto=create-drop + From 750c00416f9fde0ddf01eb9a32ef6a199fa97098 Mon Sep 17 00:00:00 2001 From: Kai Yuan Date: Sat, 25 Mar 2023 18:08:10 +0100 Subject: [PATCH 12/85] [improve-lombok-accessor] add final accessors (#13703) * [improve-lombok-accessor] add final accessors * [improve-lombok-accessor] rename test methods; remove the unused class * [improve-lombok-accessor] formatting --- .../lombok/accessors/model/BasicAccount.java | 24 ------- .../lombok/accessors/model/FinalAccount.java | 15 +++++ .../model/FinalChainedFluentAccount.java | 15 +++++ .../lombok/accessors/AccessorsUnitTest.java | 66 +++++++++++++++---- 4 files changed, 85 insertions(+), 35 deletions(-) delete mode 100644 lombok-modules/lombok-2/src/main/java/com/baeldung/lombok/accessors/model/BasicAccount.java create mode 100644 lombok-modules/lombok-2/src/main/java/com/baeldung/lombok/accessors/model/FinalAccount.java create mode 100644 lombok-modules/lombok-2/src/main/java/com/baeldung/lombok/accessors/model/FinalChainedFluentAccount.java diff --git a/lombok-modules/lombok-2/src/main/java/com/baeldung/lombok/accessors/model/BasicAccount.java b/lombok-modules/lombok-2/src/main/java/com/baeldung/lombok/accessors/model/BasicAccount.java deleted file mode 100644 index a9332735c7..0000000000 --- a/lombok-modules/lombok-2/src/main/java/com/baeldung/lombok/accessors/model/BasicAccount.java +++ /dev/null @@ -1,24 +0,0 @@ -package com.baeldung.lombok.accessors.model; - -import java.math.BigDecimal; - -public class BasicAccount { - private String name; - private BigDecimal balance; - - public BigDecimal getBalance() { - return this.balance; - } - - public void setBalance(BigDecimal newBalance) { - this.balance = newBalance; - } - - public String getName() { - return this.name; - } - - public void setName(String accountName) { - this.name = accountName; - } -} diff --git a/lombok-modules/lombok-2/src/main/java/com/baeldung/lombok/accessors/model/FinalAccount.java b/lombok-modules/lombok-2/src/main/java/com/baeldung/lombok/accessors/model/FinalAccount.java new file mode 100644 index 0000000000..72e712d246 --- /dev/null +++ b/lombok-modules/lombok-2/src/main/java/com/baeldung/lombok/accessors/model/FinalAccount.java @@ -0,0 +1,15 @@ +package com.baeldung.lombok.accessors.model; + +import lombok.Getter; +import lombok.Setter; +import lombok.experimental.Accessors; + +import java.math.BigDecimal; + +@Accessors(makeFinal = true) +@Getter +@Setter +public class FinalAccount { + private String name; + private BigDecimal balance; +} \ No newline at end of file diff --git a/lombok-modules/lombok-2/src/main/java/com/baeldung/lombok/accessors/model/FinalChainedFluentAccount.java b/lombok-modules/lombok-2/src/main/java/com/baeldung/lombok/accessors/model/FinalChainedFluentAccount.java new file mode 100644 index 0000000000..4951f370e7 --- /dev/null +++ b/lombok-modules/lombok-2/src/main/java/com/baeldung/lombok/accessors/model/FinalChainedFluentAccount.java @@ -0,0 +1,15 @@ +package com.baeldung.lombok.accessors.model; + +import lombok.Getter; +import lombok.Setter; +import lombok.experimental.Accessors; + +import java.math.BigDecimal; + +@Accessors(makeFinal = true, fluent = true, chain = true) +@Getter +@Setter +public class FinalChainedFluentAccount { + private String name; + private BigDecimal balance; +} \ No newline at end of file diff --git a/lombok-modules/lombok-2/src/test/java/com/baeldung/lombok/accessors/AccessorsUnitTest.java b/lombok-modules/lombok-2/src/test/java/com/baeldung/lombok/accessors/AccessorsUnitTest.java index 04f38bfc32..a1f54d6b4a 100644 --- a/lombok-modules/lombok-2/src/test/java/com/baeldung/lombok/accessors/AccessorsUnitTest.java +++ b/lombok-modules/lombok-2/src/test/java/com/baeldung/lombok/accessors/AccessorsUnitTest.java @@ -1,26 +1,36 @@ package com.baeldung.lombok.accessors; -import com.baeldung.lombok.accessors.model.*; +import com.baeldung.lombok.accessors.model.ChainedAccount; +import com.baeldung.lombok.accessors.model.ChainedFluentAccount; +import com.baeldung.lombok.accessors.model.FinalAccount; +import com.baeldung.lombok.accessors.model.FinalChainedFluentAccount; +import com.baeldung.lombok.accessors.model.FluentAccount; +import com.baeldung.lombok.accessors.model.PrefixedAccount; +import com.baeldung.lombok.accessors.model.PrefixedFluentAccount; +import com.baeldung.lombok.accessors.model.StandardAccount; import org.junit.Test; +import java.lang.reflect.Modifier; import java.math.BigDecimal; +import java.util.Arrays; import static org.junit.Assert.assertEquals; +import static org.junit.Assert.assertTrue; public class AccessorsUnitTest { @Test - public void givenBasicAccount_thenUseBasicAccessors() { - BasicAccount account = new BasicAccount(); - account.setName("Basic Accessors"); + public void whenStandardAccount_thenHaveStandardAccessors() { + StandardAccount account = new StandardAccount(); + account.setName("Standard Accessors"); account.setBalance(BigDecimal.TEN); - assertEquals("Basic Accessors", account.getName()); + assertEquals("Standard Accessors", account.getName()); assertEquals(BigDecimal.TEN, account.getBalance()); } @Test - public void givenFluentAccount_thenUseFluentAccessors() { + public void whenFluentAccount_thenHaveFluentAccessors() { FluentAccount account = new FluentAccount(); account.name("Fluent Account"); account.balance(BigDecimal.TEN); @@ -30,7 +40,7 @@ public class AccessorsUnitTest { } @Test - public void givenChainedAccount_thenUseChainedAccessors() { + public void whenChainedAccount_thenHaveChainedAccessors() { ChainedAccount account = new ChainedAccount(); account.setName("Chained Account").setBalance(BigDecimal.TEN); @@ -39,7 +49,7 @@ public class AccessorsUnitTest { } @Test - public void givenChainedFluentAccount_thenUseChainedFluentAccessors() { + public void whenChainedFluentAccount_thenHaveChainedFluentAccessors() { ChainedFluentAccount account = new ChainedFluentAccount() .name("Fluent Account") .balance(BigDecimal.TEN); @@ -49,7 +59,7 @@ public class AccessorsUnitTest { } @Test - public void givenPrefixedAccount_thenRemovePrefixFromAccessors() { + public void whenPrefixedAccount_thenRemovePrefixFromAccessors() { PrefixedAccount account = new PrefixedAccount(); account.setName("Prefixed Fields"); account.setBalance(BigDecimal.TEN); @@ -61,7 +71,7 @@ public class AccessorsUnitTest { } @Test - public void givenPrefixedFluentAccount_thenRemovePrefixFromAccessors() { + public void whenPrefixedFluentAccount_thenRemovePrefixFromAccessors() { PrefixedFluentAccount account = new PrefixedFluentAccount(); account .name("Prefixed Fluent Fields") @@ -71,4 +81,38 @@ public class AccessorsUnitTest { assertEquals(BigDecimal.TEN, account.balance()); } -} + @Test + public void whenFinalAccount_thenHaveFinalAccessors() { + FinalAccount account = new FinalAccount(); + account.setName("Final Account"); + account.setBalance(BigDecimal.TEN); + + assertEquals("Final Account", account.getName()); + assertEquals(BigDecimal.TEN, account.getBalance()); + + //verify if all getters and setters are final methods + boolean getterSettersAreFinal = Arrays.stream(FinalAccount.class.getMethods()) + .filter(method -> method.getName().matches("^(get|set)(Name|Balance)$")) + .allMatch(method -> Modifier.isFinal(method.getModifiers())); + assertTrue(getterSettersAreFinal); + + } + + @Test + public void whenFinalChainedFluentAccount_thenHaveFinalAccessors() { + FinalChainedFluentAccount account = new FinalChainedFluentAccount(); + account + .name("Final Chained Fluent Account") + .balance(BigDecimal.TEN); + + assertEquals("Final Chained Fluent Account", account.name()); + assertEquals(BigDecimal.TEN, account.balance()); + + //verify if all getters and setters are final methods + boolean getterSettersAreFinal = Arrays.stream(FinalAccount.class.getMethods()) + .filter(method -> method.getName().matches("^(name|balance)$")) + .allMatch(method -> Modifier.isFinal(method.getModifiers())); + assertTrue(getterSettersAreFinal); + } + +} \ No newline at end of file From 07ef7b21868457cdc78700a87b3557808f138602 Mon Sep 17 00:00:00 2001 From: anuragkumawat Date: Sun, 26 Mar 2023 22:09:10 +0530 Subject: [PATCH 13/85] JAVA-18750 Split or move spring-apache-camel module (#13710) --- messaging-modules/apache-camel/README.md | 9 ++++ messaging-modules/apache-camel/pom.xml | 46 +++++++++++++++++++ .../camel/apache/file/FileProcessor.java | 0 .../camel/apache/file/FileRouter.java | 0 .../baeldung/camel/apache/jackson/Fruit.java | 0 .../camel/apache/jackson/FruitList.java | 0 .../src/main/resources/camel-context-test.xml | 0 .../src/main/resources/logback.xml | 13 ++++++ .../FruitArrayJacksonUnmarshalUnitTest.java | 0 .../FruitListJacksonUnmarshalUnitTest.java | 0 .../FileProcessorIntegrationTest.java | 0 .../src/test/resources/json/fruit-array.json | 0 .../src/test/resources/json/fruit-list.json | 0 messaging-modules/pom.xml | 1 + .../spring-apache-camel/README.md | 2 - messaging-modules/spring-apache-camel/pom.xml | 11 ----- 16 files changed, 69 insertions(+), 13 deletions(-) create mode 100644 messaging-modules/apache-camel/README.md create mode 100644 messaging-modules/apache-camel/pom.xml rename messaging-modules/{spring-apache-camel => apache-camel}/src/main/java/com/baeldung/camel/apache/file/FileProcessor.java (100%) rename messaging-modules/{spring-apache-camel => apache-camel}/src/main/java/com/baeldung/camel/apache/file/FileRouter.java (100%) rename messaging-modules/{spring-apache-camel => apache-camel}/src/main/java/com/baeldung/camel/apache/jackson/Fruit.java (100%) rename messaging-modules/{spring-apache-camel => apache-camel}/src/main/java/com/baeldung/camel/apache/jackson/FruitList.java (100%) rename messaging-modules/{spring-apache-camel => apache-camel}/src/main/resources/camel-context-test.xml (100%) create mode 100644 messaging-modules/apache-camel/src/main/resources/logback.xml rename messaging-modules/{spring-apache-camel => apache-camel}/src/test/java/com/apache/baeldung/camel/jackson/FruitArrayJacksonUnmarshalUnitTest.java (100%) rename messaging-modules/{spring-apache-camel => apache-camel}/src/test/java/com/apache/baeldung/camel/jackson/FruitListJacksonUnmarshalUnitTest.java (100%) rename messaging-modules/{spring-apache-camel => apache-camel}/src/test/java/com/apache/camel/file/processor/FileProcessorIntegrationTest.java (100%) rename messaging-modules/{spring-apache-camel => apache-camel}/src/test/resources/json/fruit-array.json (100%) rename messaging-modules/{spring-apache-camel => apache-camel}/src/test/resources/json/fruit-list.json (100%) diff --git a/messaging-modules/apache-camel/README.md b/messaging-modules/apache-camel/README.md new file mode 100644 index 0000000000..6196893adc --- /dev/null +++ b/messaging-modules/apache-camel/README.md @@ -0,0 +1,9 @@ +## Apache Camel + +This module contains articles about Apache Camel + +### Relevant Articles + +- [Introduction To Apache Camel](http://www.baeldung.com/apache-camel-intro) +- [Unmarshalling a JSON Array Using camel-jackson](https://www.baeldung.com/java-camel-jackson-json-array) + diff --git a/messaging-modules/apache-camel/pom.xml b/messaging-modules/apache-camel/pom.xml new file mode 100644 index 0000000000..bb20f178aa --- /dev/null +++ b/messaging-modules/apache-camel/pom.xml @@ -0,0 +1,46 @@ + + + 4.0.0 + org.baeldung.apache.camel + apache-camel + apache-camel + jar + http://maven.apache.org + + + com.baeldung + messaging-modules + 0.0.1-SNAPSHOT + + + + + org.apache.camel + camel-core + ${env.camel.version} + + + org.apache.camel + camel-spring-javaconfig + ${env.camel.version} + + + org.apache.camel + camel-jackson + ${env.camel.version} + + + org.apache.camel + camel-test + ${env.camel.version} + test + + + + + 3.14.7 + + + \ No newline at end of file diff --git a/messaging-modules/spring-apache-camel/src/main/java/com/baeldung/camel/apache/file/FileProcessor.java b/messaging-modules/apache-camel/src/main/java/com/baeldung/camel/apache/file/FileProcessor.java similarity index 100% rename from messaging-modules/spring-apache-camel/src/main/java/com/baeldung/camel/apache/file/FileProcessor.java rename to messaging-modules/apache-camel/src/main/java/com/baeldung/camel/apache/file/FileProcessor.java diff --git a/messaging-modules/spring-apache-camel/src/main/java/com/baeldung/camel/apache/file/FileRouter.java b/messaging-modules/apache-camel/src/main/java/com/baeldung/camel/apache/file/FileRouter.java similarity index 100% rename from messaging-modules/spring-apache-camel/src/main/java/com/baeldung/camel/apache/file/FileRouter.java rename to messaging-modules/apache-camel/src/main/java/com/baeldung/camel/apache/file/FileRouter.java diff --git a/messaging-modules/spring-apache-camel/src/main/java/com/baeldung/camel/apache/jackson/Fruit.java b/messaging-modules/apache-camel/src/main/java/com/baeldung/camel/apache/jackson/Fruit.java similarity index 100% rename from messaging-modules/spring-apache-camel/src/main/java/com/baeldung/camel/apache/jackson/Fruit.java rename to messaging-modules/apache-camel/src/main/java/com/baeldung/camel/apache/jackson/Fruit.java diff --git a/messaging-modules/spring-apache-camel/src/main/java/com/baeldung/camel/apache/jackson/FruitList.java b/messaging-modules/apache-camel/src/main/java/com/baeldung/camel/apache/jackson/FruitList.java similarity index 100% rename from messaging-modules/spring-apache-camel/src/main/java/com/baeldung/camel/apache/jackson/FruitList.java rename to messaging-modules/apache-camel/src/main/java/com/baeldung/camel/apache/jackson/FruitList.java diff --git a/messaging-modules/spring-apache-camel/src/main/resources/camel-context-test.xml b/messaging-modules/apache-camel/src/main/resources/camel-context-test.xml similarity index 100% rename from messaging-modules/spring-apache-camel/src/main/resources/camel-context-test.xml rename to messaging-modules/apache-camel/src/main/resources/camel-context-test.xml diff --git a/messaging-modules/apache-camel/src/main/resources/logback.xml b/messaging-modules/apache-camel/src/main/resources/logback.xml new file mode 100644 index 0000000000..7d900d8ea8 --- /dev/null +++ b/messaging-modules/apache-camel/src/main/resources/logback.xml @@ -0,0 +1,13 @@ + + + + + %d{HH:mm:ss.SSS} [%thread] %-5level %logger{36} - %msg%n + + + + + + + + \ No newline at end of file diff --git a/messaging-modules/spring-apache-camel/src/test/java/com/apache/baeldung/camel/jackson/FruitArrayJacksonUnmarshalUnitTest.java b/messaging-modules/apache-camel/src/test/java/com/apache/baeldung/camel/jackson/FruitArrayJacksonUnmarshalUnitTest.java similarity index 100% rename from messaging-modules/spring-apache-camel/src/test/java/com/apache/baeldung/camel/jackson/FruitArrayJacksonUnmarshalUnitTest.java rename to messaging-modules/apache-camel/src/test/java/com/apache/baeldung/camel/jackson/FruitArrayJacksonUnmarshalUnitTest.java diff --git a/messaging-modules/spring-apache-camel/src/test/java/com/apache/baeldung/camel/jackson/FruitListJacksonUnmarshalUnitTest.java b/messaging-modules/apache-camel/src/test/java/com/apache/baeldung/camel/jackson/FruitListJacksonUnmarshalUnitTest.java similarity index 100% rename from messaging-modules/spring-apache-camel/src/test/java/com/apache/baeldung/camel/jackson/FruitListJacksonUnmarshalUnitTest.java rename to messaging-modules/apache-camel/src/test/java/com/apache/baeldung/camel/jackson/FruitListJacksonUnmarshalUnitTest.java diff --git a/messaging-modules/spring-apache-camel/src/test/java/com/apache/camel/file/processor/FileProcessorIntegrationTest.java b/messaging-modules/apache-camel/src/test/java/com/apache/camel/file/processor/FileProcessorIntegrationTest.java similarity index 100% rename from messaging-modules/spring-apache-camel/src/test/java/com/apache/camel/file/processor/FileProcessorIntegrationTest.java rename to messaging-modules/apache-camel/src/test/java/com/apache/camel/file/processor/FileProcessorIntegrationTest.java diff --git a/messaging-modules/spring-apache-camel/src/test/resources/json/fruit-array.json b/messaging-modules/apache-camel/src/test/resources/json/fruit-array.json similarity index 100% rename from messaging-modules/spring-apache-camel/src/test/resources/json/fruit-array.json rename to messaging-modules/apache-camel/src/test/resources/json/fruit-array.json diff --git a/messaging-modules/spring-apache-camel/src/test/resources/json/fruit-list.json b/messaging-modules/apache-camel/src/test/resources/json/fruit-list.json similarity index 100% rename from messaging-modules/spring-apache-camel/src/test/resources/json/fruit-list.json rename to messaging-modules/apache-camel/src/test/resources/json/fruit-list.json diff --git a/messaging-modules/pom.xml b/messaging-modules/pom.xml index f843b0fe11..47e0730148 100644 --- a/messaging-modules/pom.xml +++ b/messaging-modules/pom.xml @@ -15,6 +15,7 @@ + apache-camel jgroups rabbitmq spring-amqp diff --git a/messaging-modules/spring-apache-camel/README.md b/messaging-modules/spring-apache-camel/README.md index 535c61cbef..66079d4e83 100644 --- a/messaging-modules/spring-apache-camel/README.md +++ b/messaging-modules/spring-apache-camel/README.md @@ -4,10 +4,8 @@ This module contains articles about Spring with Apache Camel ### Relevant Articles -- [Introduction To Apache Camel](http://www.baeldung.com/apache-camel-intro) - [Integration Patterns With Apache Camel](http://www.baeldung.com/camel-integration-patterns) - [Using Apache Camel with Spring](http://www.baeldung.com/spring-apache-camel-tutorial) -- [Unmarshalling a JSON Array Using camel-jackson](https://www.baeldung.com/java-camel-jackson-json-array) - [Apache Camel with Spring Boot](https://www.baeldung.com/apache-camel-spring-boot) - [Apache Camel Routes Testing in Spring Boot](https://www.baeldung.com/spring-boot-apache-camel-routes-testing) - [Apache Camel Conditional Routing](https://www.baeldung.com/spring-apache-camel-conditional-routing) diff --git a/messaging-modules/spring-apache-camel/pom.xml b/messaging-modules/spring-apache-camel/pom.xml index ec7557666c..65533d7649 100644 --- a/messaging-modules/spring-apache-camel/pom.xml +++ b/messaging-modules/spring-apache-camel/pom.xml @@ -47,17 +47,6 @@ camel-spring-javaconfig ${env.camel.version} - - org.apache.camel - camel-jackson - ${env.camel.version} - - - org.apache.camel - camel-test - ${env.camel.version} - test - org.apache.camel.springboot camel-servlet-starter From 2e129bd64bf9a3038474b4bba0b351750bd33629 Mon Sep 17 00:00:00 2001 From: anuragkumawat Date: Sun, 26 Mar 2023 23:51:27 +0530 Subject: [PATCH 14/85] JAVA-19545 Move articles from spring-core-2 module to spring-di-3 module (#13708) * JAVA-19545 Move articles from spring-core-2 module to spring-di-3 module * JAVA-19545 Move articles from spring-core-4 module to spring-di-3 module --- spring-core-2/README.md | 2 -- spring-core-4/README.md | 2 -- spring-di-3/README.md | 4 ++++ .../src/main/java/com/baeldung/autowire/sample/App.java | 0 .../src/main/java/com/baeldung/autowire/sample/AppConfig.java | 0 .../main/java/com/baeldung/autowire/sample/BarFormatter.java | 0 .../src/main/java/com/baeldung/autowire/sample/FooDAO.java | 0 .../main/java/com/baeldung/autowire/sample/FooFormatter.java | 0 .../main/java/com/baeldung/autowire/sample/FooService.java | 0 .../src/main/java/com/baeldung/autowire/sample/Formatter.java | 0 .../main/java/com/baeldung/autowire/sample/FormatterType.java | 0 .../dynamic/autowire/BeanFactoryDynamicAutowireService.java | 0 .../autowire/CustomMapFromListDynamicAutowireService.java | 0 .../com/baeldung/dynamic/autowire/DynamicAutowireConfig.java | 0 .../java/com/baeldung/dynamic/autowire/GBRegionService.java | 0 .../java/com/baeldung/dynamic/autowire/RegionService.java | 0 .../java/com/baeldung/dynamic/autowire/USRegionService.java | 0 .../baeldung/importannotation/animal/AnimalConfiguration.java | 0 .../importannotation/animal/AnimalScanConfiguration.java | 0 .../main/java/com/baeldung/importannotation/animal/Bird.java | 0 .../java/com/baeldung/importannotation/animal/BirdConfig.java | 0 .../main/java/com/baeldung/importannotation/animal/Bug.java | 0 .../java/com/baeldung/importannotation/animal/BugConfig.java | 0 .../main/java/com/baeldung/importannotation/animal/Cat.java | 0 .../java/com/baeldung/importannotation/animal/CatConfig.java | 0 .../main/java/com/baeldung/importannotation/animal/Dog.java | 0 .../java/com/baeldung/importannotation/animal/DogConfig.java | 0 .../baeldung/importannotation/animal/MammalConfiguration.java | 0 .../com/baeldung/importannotation/zoo/ZooApplication.java | 0 .../src/main/java/com/baeldung/order/Average.java | 0 .../src/main/java/com/baeldung/order/Excellent.java | 0 .../src/main/java/com/baeldung/order/Good.java | 0 .../src/main/java/com/baeldung/order/Rating.java | 0 .../baeldung/autowire/sample/FooServiceIntegrationTest.java | 0 .../dynamic/autowire/DynamicAutowireIntegrationTest.java | 0 .../importannotation/animal/AnimalConfigUnitTest.java | 0 .../baeldung/importannotation/animal/BugConfigUnitTest.java | 0 .../com/baeldung/importannotation/animal/ConfigUnitTest.java | 0 .../importannotation/animal/MammalConfigUnitTest.java | 0 .../baeldung/importannotation/zoo/ZooApplicationUnitTest.java | 0 .../test/java/com/baeldung/order/RatingRetrieverUnitTest.java | 0 41 files changed, 4 insertions(+), 4 deletions(-) rename {spring-core-2 => spring-di-3}/src/main/java/com/baeldung/autowire/sample/App.java (100%) rename {spring-core-2 => spring-di-3}/src/main/java/com/baeldung/autowire/sample/AppConfig.java (100%) rename {spring-core-2 => spring-di-3}/src/main/java/com/baeldung/autowire/sample/BarFormatter.java (100%) rename {spring-core-2 => spring-di-3}/src/main/java/com/baeldung/autowire/sample/FooDAO.java (100%) rename {spring-core-2 => spring-di-3}/src/main/java/com/baeldung/autowire/sample/FooFormatter.java (100%) rename {spring-core-2 => spring-di-3}/src/main/java/com/baeldung/autowire/sample/FooService.java (100%) rename {spring-core-2 => spring-di-3}/src/main/java/com/baeldung/autowire/sample/Formatter.java (100%) rename {spring-core-2 => spring-di-3}/src/main/java/com/baeldung/autowire/sample/FormatterType.java (100%) rename {spring-core-4 => spring-di-3}/src/main/java/com/baeldung/dynamic/autowire/BeanFactoryDynamicAutowireService.java (100%) rename {spring-core-4 => spring-di-3}/src/main/java/com/baeldung/dynamic/autowire/CustomMapFromListDynamicAutowireService.java (100%) rename {spring-core-4 => spring-di-3}/src/main/java/com/baeldung/dynamic/autowire/DynamicAutowireConfig.java (100%) rename {spring-core-4 => spring-di-3}/src/main/java/com/baeldung/dynamic/autowire/GBRegionService.java (100%) rename {spring-core-4 => spring-di-3}/src/main/java/com/baeldung/dynamic/autowire/RegionService.java (100%) rename {spring-core-4 => spring-di-3}/src/main/java/com/baeldung/dynamic/autowire/USRegionService.java (100%) rename {spring-core-4 => spring-di-3}/src/main/java/com/baeldung/importannotation/animal/AnimalConfiguration.java (100%) rename {spring-core-4 => spring-di-3}/src/main/java/com/baeldung/importannotation/animal/AnimalScanConfiguration.java (100%) rename {spring-core-4 => spring-di-3}/src/main/java/com/baeldung/importannotation/animal/Bird.java (100%) rename {spring-core-4 => spring-di-3}/src/main/java/com/baeldung/importannotation/animal/BirdConfig.java (100%) rename {spring-core-4 => spring-di-3}/src/main/java/com/baeldung/importannotation/animal/Bug.java (100%) rename {spring-core-4 => spring-di-3}/src/main/java/com/baeldung/importannotation/animal/BugConfig.java (100%) rename {spring-core-4 => spring-di-3}/src/main/java/com/baeldung/importannotation/animal/Cat.java (100%) rename {spring-core-4 => spring-di-3}/src/main/java/com/baeldung/importannotation/animal/CatConfig.java (100%) rename {spring-core-4 => spring-di-3}/src/main/java/com/baeldung/importannotation/animal/Dog.java (100%) rename {spring-core-4 => spring-di-3}/src/main/java/com/baeldung/importannotation/animal/DogConfig.java (100%) rename {spring-core-4 => spring-di-3}/src/main/java/com/baeldung/importannotation/animal/MammalConfiguration.java (100%) rename {spring-core-4 => spring-di-3}/src/main/java/com/baeldung/importannotation/zoo/ZooApplication.java (100%) rename {spring-core-2 => spring-di-3}/src/main/java/com/baeldung/order/Average.java (100%) rename {spring-core-2 => spring-di-3}/src/main/java/com/baeldung/order/Excellent.java (100%) rename {spring-core-2 => spring-di-3}/src/main/java/com/baeldung/order/Good.java (100%) rename {spring-core-2 => spring-di-3}/src/main/java/com/baeldung/order/Rating.java (100%) rename {spring-core-2 => spring-di-3}/src/test/java/com/baeldung/autowire/sample/FooServiceIntegrationTest.java (100%) rename {spring-core-4 => spring-di-3}/src/test/java/com/baeldung/dynamic/autowire/DynamicAutowireIntegrationTest.java (100%) rename {spring-core-4 => spring-di-3}/src/test/java/com/baeldung/importannotation/animal/AnimalConfigUnitTest.java (100%) rename {spring-core-4 => spring-di-3}/src/test/java/com/baeldung/importannotation/animal/BugConfigUnitTest.java (100%) rename {spring-core-4 => spring-di-3}/src/test/java/com/baeldung/importannotation/animal/ConfigUnitTest.java (100%) rename {spring-core-4 => spring-di-3}/src/test/java/com/baeldung/importannotation/animal/MammalConfigUnitTest.java (100%) rename {spring-core-4 => spring-di-3}/src/test/java/com/baeldung/importannotation/zoo/ZooApplicationUnitTest.java (100%) rename {spring-core-2 => spring-di-3}/src/test/java/com/baeldung/order/RatingRetrieverUnitTest.java (100%) diff --git a/spring-core-2/README.md b/spring-core-2/README.md index 2dae67ff49..735fd8aed5 100644 --- a/spring-core-2/README.md +++ b/spring-core-2/README.md @@ -4,10 +4,8 @@ This module contains articles about core Spring functionality ## Relevant Articles: -- [Guide to Spring @Autowired](http://www.baeldung.com/spring-autowire) - [Spring Profiles](http://www.baeldung.com/spring-profiles) - [Quick Guide to Spring Bean Scopes](http://www.baeldung.com/spring-bean-scopes) -- [@Order in Spring](http://www.baeldung.com/spring-order) - [Spring Events](https://www.baeldung.com/spring-events) - [Spring Null-Safety Annotations](https://www.baeldung.com/spring-null-safety-annotations) - More articles: [[<-- prev]](/spring-core)[[next -->]](/spring-core-3) diff --git a/spring-core-4/README.md b/spring-core-4/README.md index 3b2c3d4764..45011d15a9 100644 --- a/spring-core-4/README.md +++ b/spring-core-4/README.md @@ -5,8 +5,6 @@ This module contains articles about core Spring functionality ## Relevant Articles: - [Creating Spring Beans Through Factory Methods](https://www.baeldung.com/spring-beans-factory-methods) -- [How to dynamically Autowire a Bean in Spring](https://www.baeldung.com/spring-dynamic-autowire) -- [Spring @Import Annotation](https://www.baeldung.com/spring-import-annotation) - [Spring BeanPostProcessor](https://www.baeldung.com/spring-beanpostprocessor) - [Using @Autowired in Abstract Classes](https://www.baeldung.com/spring-autowired-abstract-class) - [Constructor Injection in Spring with Lombok](https://www.baeldung.com/spring-injection-lombok) diff --git a/spring-di-3/README.md b/spring-di-3/README.md index 3ddd720af5..1ac280fef2 100644 --- a/spring-di-3/README.md +++ b/spring-di-3/README.md @@ -7,4 +7,8 @@ This module contains articles about dependency injection with Spring - [@Lookup Annotation in Spring](https://www.baeldung.com/spring-lookup) - [Spring @Autowired Field Null – Common Causes and Solutions](https://www.baeldung.com/spring-autowired-field-null) - [Finding All Beans with a Custom Annotation](https://www.baeldung.com/spring-injecting-all-annotated-beans) +- [Guide to Spring @Autowired](http://www.baeldung.com/spring-autowire) +- [@Order in Spring](http://www.baeldung.com/spring-order) +- [How to dynamically Autowire a Bean in Spring](https://www.baeldung.com/spring-dynamic-autowire) +- [Spring @Import Annotation](https://www.baeldung.com/spring-import-annotation) - More articles: [[<-- prev]](../spring-di-2) diff --git a/spring-core-2/src/main/java/com/baeldung/autowire/sample/App.java b/spring-di-3/src/main/java/com/baeldung/autowire/sample/App.java similarity index 100% rename from spring-core-2/src/main/java/com/baeldung/autowire/sample/App.java rename to spring-di-3/src/main/java/com/baeldung/autowire/sample/App.java diff --git a/spring-core-2/src/main/java/com/baeldung/autowire/sample/AppConfig.java b/spring-di-3/src/main/java/com/baeldung/autowire/sample/AppConfig.java similarity index 100% rename from spring-core-2/src/main/java/com/baeldung/autowire/sample/AppConfig.java rename to spring-di-3/src/main/java/com/baeldung/autowire/sample/AppConfig.java diff --git a/spring-core-2/src/main/java/com/baeldung/autowire/sample/BarFormatter.java b/spring-di-3/src/main/java/com/baeldung/autowire/sample/BarFormatter.java similarity index 100% rename from spring-core-2/src/main/java/com/baeldung/autowire/sample/BarFormatter.java rename to spring-di-3/src/main/java/com/baeldung/autowire/sample/BarFormatter.java diff --git a/spring-core-2/src/main/java/com/baeldung/autowire/sample/FooDAO.java b/spring-di-3/src/main/java/com/baeldung/autowire/sample/FooDAO.java similarity index 100% rename from spring-core-2/src/main/java/com/baeldung/autowire/sample/FooDAO.java rename to spring-di-3/src/main/java/com/baeldung/autowire/sample/FooDAO.java diff --git a/spring-core-2/src/main/java/com/baeldung/autowire/sample/FooFormatter.java b/spring-di-3/src/main/java/com/baeldung/autowire/sample/FooFormatter.java similarity index 100% rename from spring-core-2/src/main/java/com/baeldung/autowire/sample/FooFormatter.java rename to spring-di-3/src/main/java/com/baeldung/autowire/sample/FooFormatter.java diff --git a/spring-core-2/src/main/java/com/baeldung/autowire/sample/FooService.java b/spring-di-3/src/main/java/com/baeldung/autowire/sample/FooService.java similarity index 100% rename from spring-core-2/src/main/java/com/baeldung/autowire/sample/FooService.java rename to spring-di-3/src/main/java/com/baeldung/autowire/sample/FooService.java diff --git a/spring-core-2/src/main/java/com/baeldung/autowire/sample/Formatter.java b/spring-di-3/src/main/java/com/baeldung/autowire/sample/Formatter.java similarity index 100% rename from spring-core-2/src/main/java/com/baeldung/autowire/sample/Formatter.java rename to spring-di-3/src/main/java/com/baeldung/autowire/sample/Formatter.java diff --git a/spring-core-2/src/main/java/com/baeldung/autowire/sample/FormatterType.java b/spring-di-3/src/main/java/com/baeldung/autowire/sample/FormatterType.java similarity index 100% rename from spring-core-2/src/main/java/com/baeldung/autowire/sample/FormatterType.java rename to spring-di-3/src/main/java/com/baeldung/autowire/sample/FormatterType.java diff --git a/spring-core-4/src/main/java/com/baeldung/dynamic/autowire/BeanFactoryDynamicAutowireService.java b/spring-di-3/src/main/java/com/baeldung/dynamic/autowire/BeanFactoryDynamicAutowireService.java similarity index 100% rename from spring-core-4/src/main/java/com/baeldung/dynamic/autowire/BeanFactoryDynamicAutowireService.java rename to spring-di-3/src/main/java/com/baeldung/dynamic/autowire/BeanFactoryDynamicAutowireService.java diff --git a/spring-core-4/src/main/java/com/baeldung/dynamic/autowire/CustomMapFromListDynamicAutowireService.java b/spring-di-3/src/main/java/com/baeldung/dynamic/autowire/CustomMapFromListDynamicAutowireService.java similarity index 100% rename from spring-core-4/src/main/java/com/baeldung/dynamic/autowire/CustomMapFromListDynamicAutowireService.java rename to spring-di-3/src/main/java/com/baeldung/dynamic/autowire/CustomMapFromListDynamicAutowireService.java diff --git a/spring-core-4/src/main/java/com/baeldung/dynamic/autowire/DynamicAutowireConfig.java b/spring-di-3/src/main/java/com/baeldung/dynamic/autowire/DynamicAutowireConfig.java similarity index 100% rename from spring-core-4/src/main/java/com/baeldung/dynamic/autowire/DynamicAutowireConfig.java rename to spring-di-3/src/main/java/com/baeldung/dynamic/autowire/DynamicAutowireConfig.java diff --git a/spring-core-4/src/main/java/com/baeldung/dynamic/autowire/GBRegionService.java b/spring-di-3/src/main/java/com/baeldung/dynamic/autowire/GBRegionService.java similarity index 100% rename from spring-core-4/src/main/java/com/baeldung/dynamic/autowire/GBRegionService.java rename to spring-di-3/src/main/java/com/baeldung/dynamic/autowire/GBRegionService.java diff --git a/spring-core-4/src/main/java/com/baeldung/dynamic/autowire/RegionService.java b/spring-di-3/src/main/java/com/baeldung/dynamic/autowire/RegionService.java similarity index 100% rename from spring-core-4/src/main/java/com/baeldung/dynamic/autowire/RegionService.java rename to spring-di-3/src/main/java/com/baeldung/dynamic/autowire/RegionService.java diff --git a/spring-core-4/src/main/java/com/baeldung/dynamic/autowire/USRegionService.java b/spring-di-3/src/main/java/com/baeldung/dynamic/autowire/USRegionService.java similarity index 100% rename from spring-core-4/src/main/java/com/baeldung/dynamic/autowire/USRegionService.java rename to spring-di-3/src/main/java/com/baeldung/dynamic/autowire/USRegionService.java diff --git a/spring-core-4/src/main/java/com/baeldung/importannotation/animal/AnimalConfiguration.java b/spring-di-3/src/main/java/com/baeldung/importannotation/animal/AnimalConfiguration.java similarity index 100% rename from spring-core-4/src/main/java/com/baeldung/importannotation/animal/AnimalConfiguration.java rename to spring-di-3/src/main/java/com/baeldung/importannotation/animal/AnimalConfiguration.java diff --git a/spring-core-4/src/main/java/com/baeldung/importannotation/animal/AnimalScanConfiguration.java b/spring-di-3/src/main/java/com/baeldung/importannotation/animal/AnimalScanConfiguration.java similarity index 100% rename from spring-core-4/src/main/java/com/baeldung/importannotation/animal/AnimalScanConfiguration.java rename to spring-di-3/src/main/java/com/baeldung/importannotation/animal/AnimalScanConfiguration.java diff --git a/spring-core-4/src/main/java/com/baeldung/importannotation/animal/Bird.java b/spring-di-3/src/main/java/com/baeldung/importannotation/animal/Bird.java similarity index 100% rename from spring-core-4/src/main/java/com/baeldung/importannotation/animal/Bird.java rename to spring-di-3/src/main/java/com/baeldung/importannotation/animal/Bird.java diff --git a/spring-core-4/src/main/java/com/baeldung/importannotation/animal/BirdConfig.java b/spring-di-3/src/main/java/com/baeldung/importannotation/animal/BirdConfig.java similarity index 100% rename from spring-core-4/src/main/java/com/baeldung/importannotation/animal/BirdConfig.java rename to spring-di-3/src/main/java/com/baeldung/importannotation/animal/BirdConfig.java diff --git a/spring-core-4/src/main/java/com/baeldung/importannotation/animal/Bug.java b/spring-di-3/src/main/java/com/baeldung/importannotation/animal/Bug.java similarity index 100% rename from spring-core-4/src/main/java/com/baeldung/importannotation/animal/Bug.java rename to spring-di-3/src/main/java/com/baeldung/importannotation/animal/Bug.java diff --git a/spring-core-4/src/main/java/com/baeldung/importannotation/animal/BugConfig.java b/spring-di-3/src/main/java/com/baeldung/importannotation/animal/BugConfig.java similarity index 100% rename from spring-core-4/src/main/java/com/baeldung/importannotation/animal/BugConfig.java rename to spring-di-3/src/main/java/com/baeldung/importannotation/animal/BugConfig.java diff --git a/spring-core-4/src/main/java/com/baeldung/importannotation/animal/Cat.java b/spring-di-3/src/main/java/com/baeldung/importannotation/animal/Cat.java similarity index 100% rename from spring-core-4/src/main/java/com/baeldung/importannotation/animal/Cat.java rename to spring-di-3/src/main/java/com/baeldung/importannotation/animal/Cat.java diff --git a/spring-core-4/src/main/java/com/baeldung/importannotation/animal/CatConfig.java b/spring-di-3/src/main/java/com/baeldung/importannotation/animal/CatConfig.java similarity index 100% rename from spring-core-4/src/main/java/com/baeldung/importannotation/animal/CatConfig.java rename to spring-di-3/src/main/java/com/baeldung/importannotation/animal/CatConfig.java diff --git a/spring-core-4/src/main/java/com/baeldung/importannotation/animal/Dog.java b/spring-di-3/src/main/java/com/baeldung/importannotation/animal/Dog.java similarity index 100% rename from spring-core-4/src/main/java/com/baeldung/importannotation/animal/Dog.java rename to spring-di-3/src/main/java/com/baeldung/importannotation/animal/Dog.java diff --git a/spring-core-4/src/main/java/com/baeldung/importannotation/animal/DogConfig.java b/spring-di-3/src/main/java/com/baeldung/importannotation/animal/DogConfig.java similarity index 100% rename from spring-core-4/src/main/java/com/baeldung/importannotation/animal/DogConfig.java rename to spring-di-3/src/main/java/com/baeldung/importannotation/animal/DogConfig.java diff --git a/spring-core-4/src/main/java/com/baeldung/importannotation/animal/MammalConfiguration.java b/spring-di-3/src/main/java/com/baeldung/importannotation/animal/MammalConfiguration.java similarity index 100% rename from spring-core-4/src/main/java/com/baeldung/importannotation/animal/MammalConfiguration.java rename to spring-di-3/src/main/java/com/baeldung/importannotation/animal/MammalConfiguration.java diff --git a/spring-core-4/src/main/java/com/baeldung/importannotation/zoo/ZooApplication.java b/spring-di-3/src/main/java/com/baeldung/importannotation/zoo/ZooApplication.java similarity index 100% rename from spring-core-4/src/main/java/com/baeldung/importannotation/zoo/ZooApplication.java rename to spring-di-3/src/main/java/com/baeldung/importannotation/zoo/ZooApplication.java diff --git a/spring-core-2/src/main/java/com/baeldung/order/Average.java b/spring-di-3/src/main/java/com/baeldung/order/Average.java similarity index 100% rename from spring-core-2/src/main/java/com/baeldung/order/Average.java rename to spring-di-3/src/main/java/com/baeldung/order/Average.java diff --git a/spring-core-2/src/main/java/com/baeldung/order/Excellent.java b/spring-di-3/src/main/java/com/baeldung/order/Excellent.java similarity index 100% rename from spring-core-2/src/main/java/com/baeldung/order/Excellent.java rename to spring-di-3/src/main/java/com/baeldung/order/Excellent.java diff --git a/spring-core-2/src/main/java/com/baeldung/order/Good.java b/spring-di-3/src/main/java/com/baeldung/order/Good.java similarity index 100% rename from spring-core-2/src/main/java/com/baeldung/order/Good.java rename to spring-di-3/src/main/java/com/baeldung/order/Good.java diff --git a/spring-core-2/src/main/java/com/baeldung/order/Rating.java b/spring-di-3/src/main/java/com/baeldung/order/Rating.java similarity index 100% rename from spring-core-2/src/main/java/com/baeldung/order/Rating.java rename to spring-di-3/src/main/java/com/baeldung/order/Rating.java diff --git a/spring-core-2/src/test/java/com/baeldung/autowire/sample/FooServiceIntegrationTest.java b/spring-di-3/src/test/java/com/baeldung/autowire/sample/FooServiceIntegrationTest.java similarity index 100% rename from spring-core-2/src/test/java/com/baeldung/autowire/sample/FooServiceIntegrationTest.java rename to spring-di-3/src/test/java/com/baeldung/autowire/sample/FooServiceIntegrationTest.java diff --git a/spring-core-4/src/test/java/com/baeldung/dynamic/autowire/DynamicAutowireIntegrationTest.java b/spring-di-3/src/test/java/com/baeldung/dynamic/autowire/DynamicAutowireIntegrationTest.java similarity index 100% rename from spring-core-4/src/test/java/com/baeldung/dynamic/autowire/DynamicAutowireIntegrationTest.java rename to spring-di-3/src/test/java/com/baeldung/dynamic/autowire/DynamicAutowireIntegrationTest.java diff --git a/spring-core-4/src/test/java/com/baeldung/importannotation/animal/AnimalConfigUnitTest.java b/spring-di-3/src/test/java/com/baeldung/importannotation/animal/AnimalConfigUnitTest.java similarity index 100% rename from spring-core-4/src/test/java/com/baeldung/importannotation/animal/AnimalConfigUnitTest.java rename to spring-di-3/src/test/java/com/baeldung/importannotation/animal/AnimalConfigUnitTest.java diff --git a/spring-core-4/src/test/java/com/baeldung/importannotation/animal/BugConfigUnitTest.java b/spring-di-3/src/test/java/com/baeldung/importannotation/animal/BugConfigUnitTest.java similarity index 100% rename from spring-core-4/src/test/java/com/baeldung/importannotation/animal/BugConfigUnitTest.java rename to spring-di-3/src/test/java/com/baeldung/importannotation/animal/BugConfigUnitTest.java diff --git a/spring-core-4/src/test/java/com/baeldung/importannotation/animal/ConfigUnitTest.java b/spring-di-3/src/test/java/com/baeldung/importannotation/animal/ConfigUnitTest.java similarity index 100% rename from spring-core-4/src/test/java/com/baeldung/importannotation/animal/ConfigUnitTest.java rename to spring-di-3/src/test/java/com/baeldung/importannotation/animal/ConfigUnitTest.java diff --git a/spring-core-4/src/test/java/com/baeldung/importannotation/animal/MammalConfigUnitTest.java b/spring-di-3/src/test/java/com/baeldung/importannotation/animal/MammalConfigUnitTest.java similarity index 100% rename from spring-core-4/src/test/java/com/baeldung/importannotation/animal/MammalConfigUnitTest.java rename to spring-di-3/src/test/java/com/baeldung/importannotation/animal/MammalConfigUnitTest.java diff --git a/spring-core-4/src/test/java/com/baeldung/importannotation/zoo/ZooApplicationUnitTest.java b/spring-di-3/src/test/java/com/baeldung/importannotation/zoo/ZooApplicationUnitTest.java similarity index 100% rename from spring-core-4/src/test/java/com/baeldung/importannotation/zoo/ZooApplicationUnitTest.java rename to spring-di-3/src/test/java/com/baeldung/importannotation/zoo/ZooApplicationUnitTest.java diff --git a/spring-core-2/src/test/java/com/baeldung/order/RatingRetrieverUnitTest.java b/spring-di-3/src/test/java/com/baeldung/order/RatingRetrieverUnitTest.java similarity index 100% rename from spring-core-2/src/test/java/com/baeldung/order/RatingRetrieverUnitTest.java rename to spring-di-3/src/test/java/com/baeldung/order/RatingRetrieverUnitTest.java From a50d41a8cee5b1aaa6d637f77fea8bcff0b068d3 Mon Sep 17 00:00:00 2001 From: anuragkumawat Date: Sun, 26 Mar 2023 23:55:47 +0530 Subject: [PATCH 15/85] JAVA-19555 Move articles from spring-core-5 module to spring-boot-annotations-2 module (#13711) * JAVA-19555 Move articles from spring-core-5 module to spring-boot-annotations-2 module * JAVA-19555 Move articles from spring-core module to spring-boot-annotations-2 module --- spring-boot-modules/spring-boot-annotations-2/README.md | 4 ++++ spring-boot-modules/spring-boot-annotations-2/pom.xml | 5 +++++ .../src/main/java/com/baeldung/aliasfor/MyMapping.java | 0 .../main/java/com/baeldung/aliasfor/MyMappingController.java | 0 .../src/main/java/com/baeldung/lazy/AppConfig.java | 0 .../src/main/java/com/baeldung/lazy/City.java | 0 .../src/main/java/com/baeldung/lazy/Country.java | 0 .../src/main/java/com/baeldung/lazy/Region.java | 0 .../baeldung/multibeaninstantiation/solution1/Person.java | 0 .../multibeaninstantiation/solution1/PersonConfig.java | 0 .../multibeaninstantiation/solution1/SpringApp1.java | 0 .../baeldung/multibeaninstantiation/solution2/Person.java | 0 .../multibeaninstantiation/solution2/PersonConfig.java | 0 .../baeldung/multibeaninstantiation/solution2/PersonOne.java | 0 .../baeldung/multibeaninstantiation/solution2/PersonTwo.java | 0 .../multibeaninstantiation/solution2/SpringApp2.java | 0 .../com/baeldung/multibeaninstantiation/solution3/Human.java | 0 .../multibeaninstantiation/solution3/MultiBeanFactory.java | 0 .../baeldung/multibeaninstantiation/solution3/Person.java | 0 .../multibeaninstantiation/solution3/PersonConfig.java | 0 .../solution3/PersonFactoryPostProcessor.java | 0 .../multibeaninstantiation/solution3/SpringApp3.java | 0 .../com/baeldung/springbean/naming/component/Animal.java | 0 .../java/com/baeldung/springbean/naming/component/Cat.java | 0 .../springbean/naming/component/CustomComponent.java | 0 .../java/com/baeldung/springbean/naming/component/Dog.java | 0 .../springbean/naming/configuration/AuditConfiguration.java | 0 .../springbean/naming/configuration/MyConfiguration.java | 0 .../springbean/naming/controller/MessagingController.java | 0 .../com/baeldung/springbean/naming/service/AuditService.java | 0 .../baeldung/springbean/naming/service/LoggingService.java | 0 .../baeldung/springbean/naming/service/MessagingService.java | 0 .../springbean/naming/service/MessagingServiceImpl.java | 0 .../java/com/baeldung/springbean/naming/service/PetShow.java | 0 .../test/java/com/baeldung/aliasfor/AliasForUnitTest.java | 0 .../test/java/com/baeldung/lazy/LazyAnnotationUnitTest.java | 0 .../baeldung/springbean/naming/SpringBeanNamingUnitTest.java | 0 spring-core-5/README.md | 3 --- spring-core-6/README.md | 1 - 39 files changed, 9 insertions(+), 4 deletions(-) rename {spring-core-5 => spring-boot-modules/spring-boot-annotations-2}/src/main/java/com/baeldung/aliasfor/MyMapping.java (100%) rename {spring-core-5 => spring-boot-modules/spring-boot-annotations-2}/src/main/java/com/baeldung/aliasfor/MyMappingController.java (100%) rename {spring-core-5 => spring-boot-modules/spring-boot-annotations-2}/src/main/java/com/baeldung/lazy/AppConfig.java (100%) rename {spring-core-5 => spring-boot-modules/spring-boot-annotations-2}/src/main/java/com/baeldung/lazy/City.java (100%) rename {spring-core-5 => spring-boot-modules/spring-boot-annotations-2}/src/main/java/com/baeldung/lazy/Country.java (100%) rename {spring-core-5 => spring-boot-modules/spring-boot-annotations-2}/src/main/java/com/baeldung/lazy/Region.java (100%) rename {spring-core-6 => spring-boot-modules/spring-boot-annotations-2}/src/main/java/com/baeldung/multibeaninstantiation/solution1/Person.java (100%) rename {spring-core-6 => spring-boot-modules/spring-boot-annotations-2}/src/main/java/com/baeldung/multibeaninstantiation/solution1/PersonConfig.java (100%) rename {spring-core-6 => spring-boot-modules/spring-boot-annotations-2}/src/main/java/com/baeldung/multibeaninstantiation/solution1/SpringApp1.java (100%) rename {spring-core-6 => spring-boot-modules/spring-boot-annotations-2}/src/main/java/com/baeldung/multibeaninstantiation/solution2/Person.java (100%) rename {spring-core-6 => spring-boot-modules/spring-boot-annotations-2}/src/main/java/com/baeldung/multibeaninstantiation/solution2/PersonConfig.java (100%) rename {spring-core-6 => spring-boot-modules/spring-boot-annotations-2}/src/main/java/com/baeldung/multibeaninstantiation/solution2/PersonOne.java (100%) rename {spring-core-6 => spring-boot-modules/spring-boot-annotations-2}/src/main/java/com/baeldung/multibeaninstantiation/solution2/PersonTwo.java (100%) rename {spring-core-6 => spring-boot-modules/spring-boot-annotations-2}/src/main/java/com/baeldung/multibeaninstantiation/solution2/SpringApp2.java (100%) rename {spring-core-6 => spring-boot-modules/spring-boot-annotations-2}/src/main/java/com/baeldung/multibeaninstantiation/solution3/Human.java (100%) rename {spring-core-6 => spring-boot-modules/spring-boot-annotations-2}/src/main/java/com/baeldung/multibeaninstantiation/solution3/MultiBeanFactory.java (100%) rename {spring-core-6 => spring-boot-modules/spring-boot-annotations-2}/src/main/java/com/baeldung/multibeaninstantiation/solution3/Person.java (100%) rename {spring-core-6 => spring-boot-modules/spring-boot-annotations-2}/src/main/java/com/baeldung/multibeaninstantiation/solution3/PersonConfig.java (100%) rename {spring-core-6 => spring-boot-modules/spring-boot-annotations-2}/src/main/java/com/baeldung/multibeaninstantiation/solution3/PersonFactoryPostProcessor.java (100%) rename {spring-core-6 => spring-boot-modules/spring-boot-annotations-2}/src/main/java/com/baeldung/multibeaninstantiation/solution3/SpringApp3.java (100%) rename {spring-core-5 => spring-boot-modules/spring-boot-annotations-2}/src/main/java/com/baeldung/springbean/naming/component/Animal.java (100%) rename {spring-core-5 => spring-boot-modules/spring-boot-annotations-2}/src/main/java/com/baeldung/springbean/naming/component/Cat.java (100%) rename {spring-core-5 => spring-boot-modules/spring-boot-annotations-2}/src/main/java/com/baeldung/springbean/naming/component/CustomComponent.java (100%) rename {spring-core-5 => spring-boot-modules/spring-boot-annotations-2}/src/main/java/com/baeldung/springbean/naming/component/Dog.java (100%) rename {spring-core-5 => spring-boot-modules/spring-boot-annotations-2}/src/main/java/com/baeldung/springbean/naming/configuration/AuditConfiguration.java (100%) rename {spring-core-5 => spring-boot-modules/spring-boot-annotations-2}/src/main/java/com/baeldung/springbean/naming/configuration/MyConfiguration.java (100%) rename {spring-core-5 => spring-boot-modules/spring-boot-annotations-2}/src/main/java/com/baeldung/springbean/naming/controller/MessagingController.java (100%) rename {spring-core-5 => spring-boot-modules/spring-boot-annotations-2}/src/main/java/com/baeldung/springbean/naming/service/AuditService.java (100%) rename {spring-core-5 => spring-boot-modules/spring-boot-annotations-2}/src/main/java/com/baeldung/springbean/naming/service/LoggingService.java (100%) rename {spring-core-5 => spring-boot-modules/spring-boot-annotations-2}/src/main/java/com/baeldung/springbean/naming/service/MessagingService.java (100%) rename {spring-core-5 => spring-boot-modules/spring-boot-annotations-2}/src/main/java/com/baeldung/springbean/naming/service/MessagingServiceImpl.java (100%) rename {spring-core-5 => spring-boot-modules/spring-boot-annotations-2}/src/main/java/com/baeldung/springbean/naming/service/PetShow.java (100%) rename {spring-core-5 => spring-boot-modules/spring-boot-annotations-2}/src/test/java/com/baeldung/aliasfor/AliasForUnitTest.java (100%) rename {spring-core-5 => spring-boot-modules/spring-boot-annotations-2}/src/test/java/com/baeldung/lazy/LazyAnnotationUnitTest.java (100%) rename {spring-core-5 => spring-boot-modules/spring-boot-annotations-2}/src/test/java/com/baeldung/springbean/naming/SpringBeanNamingUnitTest.java (100%) diff --git a/spring-boot-modules/spring-boot-annotations-2/README.md b/spring-boot-modules/spring-boot-annotations-2/README.md index bea5d2fec6..541fa2fd73 100644 --- a/spring-boot-modules/spring-boot-annotations-2/README.md +++ b/spring-boot-modules/spring-boot-annotations-2/README.md @@ -7,4 +7,8 @@ This module contains articles about Spring Boot annotations - [Spring Conditional Annotations](https://www.baeldung.com/spring-conditional-annotations) - [Guide to @SpringBootConfiguration in Spring Boot](https://www.baeldung.com/springbootconfiguration-annotation) - [Spring @Primary Annotation](http://www.baeldung.com/spring-primary) +- [Spring Bean Names](https://www.baeldung.com/spring-bean-names) +- [AliasFor Annotation in Spring](https://www.baeldung.com/spring-aliasfor-annotation) +- [A Quick Guide to the Spring @Lazy Annotation](https://www.baeldung.com/spring-lazy-annotation) +- [Instantiating Multiple Beans of the Same Class with Spring Annotations](https://www.baeldung.com/spring-same-class-multiple-beans) - More articles: [[<-- prev]](/spring-boot-modules/spring-boot-annotations) diff --git a/spring-boot-modules/spring-boot-annotations-2/pom.xml b/spring-boot-modules/spring-boot-annotations-2/pom.xml index 99d1c4587b..71fc7ff388 100644 --- a/spring-boot-modules/spring-boot-annotations-2/pom.xml +++ b/spring-boot-modules/spring-boot-annotations-2/pom.xml @@ -28,6 +28,11 @@ mockito-inline test + + org.springframework.boot + spring-boot-starter-test + test + \ No newline at end of file diff --git a/spring-core-5/src/main/java/com/baeldung/aliasfor/MyMapping.java b/spring-boot-modules/spring-boot-annotations-2/src/main/java/com/baeldung/aliasfor/MyMapping.java similarity index 100% rename from spring-core-5/src/main/java/com/baeldung/aliasfor/MyMapping.java rename to spring-boot-modules/spring-boot-annotations-2/src/main/java/com/baeldung/aliasfor/MyMapping.java diff --git a/spring-core-5/src/main/java/com/baeldung/aliasfor/MyMappingController.java b/spring-boot-modules/spring-boot-annotations-2/src/main/java/com/baeldung/aliasfor/MyMappingController.java similarity index 100% rename from spring-core-5/src/main/java/com/baeldung/aliasfor/MyMappingController.java rename to spring-boot-modules/spring-boot-annotations-2/src/main/java/com/baeldung/aliasfor/MyMappingController.java diff --git a/spring-core-5/src/main/java/com/baeldung/lazy/AppConfig.java b/spring-boot-modules/spring-boot-annotations-2/src/main/java/com/baeldung/lazy/AppConfig.java similarity index 100% rename from spring-core-5/src/main/java/com/baeldung/lazy/AppConfig.java rename to spring-boot-modules/spring-boot-annotations-2/src/main/java/com/baeldung/lazy/AppConfig.java diff --git a/spring-core-5/src/main/java/com/baeldung/lazy/City.java b/spring-boot-modules/spring-boot-annotations-2/src/main/java/com/baeldung/lazy/City.java similarity index 100% rename from spring-core-5/src/main/java/com/baeldung/lazy/City.java rename to spring-boot-modules/spring-boot-annotations-2/src/main/java/com/baeldung/lazy/City.java diff --git a/spring-core-5/src/main/java/com/baeldung/lazy/Country.java b/spring-boot-modules/spring-boot-annotations-2/src/main/java/com/baeldung/lazy/Country.java similarity index 100% rename from spring-core-5/src/main/java/com/baeldung/lazy/Country.java rename to spring-boot-modules/spring-boot-annotations-2/src/main/java/com/baeldung/lazy/Country.java diff --git a/spring-core-5/src/main/java/com/baeldung/lazy/Region.java b/spring-boot-modules/spring-boot-annotations-2/src/main/java/com/baeldung/lazy/Region.java similarity index 100% rename from spring-core-5/src/main/java/com/baeldung/lazy/Region.java rename to spring-boot-modules/spring-boot-annotations-2/src/main/java/com/baeldung/lazy/Region.java diff --git a/spring-core-6/src/main/java/com/baeldung/multibeaninstantiation/solution1/Person.java b/spring-boot-modules/spring-boot-annotations-2/src/main/java/com/baeldung/multibeaninstantiation/solution1/Person.java similarity index 100% rename from spring-core-6/src/main/java/com/baeldung/multibeaninstantiation/solution1/Person.java rename to spring-boot-modules/spring-boot-annotations-2/src/main/java/com/baeldung/multibeaninstantiation/solution1/Person.java diff --git a/spring-core-6/src/main/java/com/baeldung/multibeaninstantiation/solution1/PersonConfig.java b/spring-boot-modules/spring-boot-annotations-2/src/main/java/com/baeldung/multibeaninstantiation/solution1/PersonConfig.java similarity index 100% rename from spring-core-6/src/main/java/com/baeldung/multibeaninstantiation/solution1/PersonConfig.java rename to spring-boot-modules/spring-boot-annotations-2/src/main/java/com/baeldung/multibeaninstantiation/solution1/PersonConfig.java diff --git a/spring-core-6/src/main/java/com/baeldung/multibeaninstantiation/solution1/SpringApp1.java b/spring-boot-modules/spring-boot-annotations-2/src/main/java/com/baeldung/multibeaninstantiation/solution1/SpringApp1.java similarity index 100% rename from spring-core-6/src/main/java/com/baeldung/multibeaninstantiation/solution1/SpringApp1.java rename to spring-boot-modules/spring-boot-annotations-2/src/main/java/com/baeldung/multibeaninstantiation/solution1/SpringApp1.java diff --git a/spring-core-6/src/main/java/com/baeldung/multibeaninstantiation/solution2/Person.java b/spring-boot-modules/spring-boot-annotations-2/src/main/java/com/baeldung/multibeaninstantiation/solution2/Person.java similarity index 100% rename from spring-core-6/src/main/java/com/baeldung/multibeaninstantiation/solution2/Person.java rename to spring-boot-modules/spring-boot-annotations-2/src/main/java/com/baeldung/multibeaninstantiation/solution2/Person.java diff --git a/spring-core-6/src/main/java/com/baeldung/multibeaninstantiation/solution2/PersonConfig.java b/spring-boot-modules/spring-boot-annotations-2/src/main/java/com/baeldung/multibeaninstantiation/solution2/PersonConfig.java similarity index 100% rename from spring-core-6/src/main/java/com/baeldung/multibeaninstantiation/solution2/PersonConfig.java rename to spring-boot-modules/spring-boot-annotations-2/src/main/java/com/baeldung/multibeaninstantiation/solution2/PersonConfig.java diff --git a/spring-core-6/src/main/java/com/baeldung/multibeaninstantiation/solution2/PersonOne.java b/spring-boot-modules/spring-boot-annotations-2/src/main/java/com/baeldung/multibeaninstantiation/solution2/PersonOne.java similarity index 100% rename from spring-core-6/src/main/java/com/baeldung/multibeaninstantiation/solution2/PersonOne.java rename to spring-boot-modules/spring-boot-annotations-2/src/main/java/com/baeldung/multibeaninstantiation/solution2/PersonOne.java diff --git a/spring-core-6/src/main/java/com/baeldung/multibeaninstantiation/solution2/PersonTwo.java b/spring-boot-modules/spring-boot-annotations-2/src/main/java/com/baeldung/multibeaninstantiation/solution2/PersonTwo.java similarity index 100% rename from spring-core-6/src/main/java/com/baeldung/multibeaninstantiation/solution2/PersonTwo.java rename to spring-boot-modules/spring-boot-annotations-2/src/main/java/com/baeldung/multibeaninstantiation/solution2/PersonTwo.java diff --git a/spring-core-6/src/main/java/com/baeldung/multibeaninstantiation/solution2/SpringApp2.java b/spring-boot-modules/spring-boot-annotations-2/src/main/java/com/baeldung/multibeaninstantiation/solution2/SpringApp2.java similarity index 100% rename from spring-core-6/src/main/java/com/baeldung/multibeaninstantiation/solution2/SpringApp2.java rename to spring-boot-modules/spring-boot-annotations-2/src/main/java/com/baeldung/multibeaninstantiation/solution2/SpringApp2.java diff --git a/spring-core-6/src/main/java/com/baeldung/multibeaninstantiation/solution3/Human.java b/spring-boot-modules/spring-boot-annotations-2/src/main/java/com/baeldung/multibeaninstantiation/solution3/Human.java similarity index 100% rename from spring-core-6/src/main/java/com/baeldung/multibeaninstantiation/solution3/Human.java rename to spring-boot-modules/spring-boot-annotations-2/src/main/java/com/baeldung/multibeaninstantiation/solution3/Human.java diff --git a/spring-core-6/src/main/java/com/baeldung/multibeaninstantiation/solution3/MultiBeanFactory.java b/spring-boot-modules/spring-boot-annotations-2/src/main/java/com/baeldung/multibeaninstantiation/solution3/MultiBeanFactory.java similarity index 100% rename from spring-core-6/src/main/java/com/baeldung/multibeaninstantiation/solution3/MultiBeanFactory.java rename to spring-boot-modules/spring-boot-annotations-2/src/main/java/com/baeldung/multibeaninstantiation/solution3/MultiBeanFactory.java diff --git a/spring-core-6/src/main/java/com/baeldung/multibeaninstantiation/solution3/Person.java b/spring-boot-modules/spring-boot-annotations-2/src/main/java/com/baeldung/multibeaninstantiation/solution3/Person.java similarity index 100% rename from spring-core-6/src/main/java/com/baeldung/multibeaninstantiation/solution3/Person.java rename to spring-boot-modules/spring-boot-annotations-2/src/main/java/com/baeldung/multibeaninstantiation/solution3/Person.java diff --git a/spring-core-6/src/main/java/com/baeldung/multibeaninstantiation/solution3/PersonConfig.java b/spring-boot-modules/spring-boot-annotations-2/src/main/java/com/baeldung/multibeaninstantiation/solution3/PersonConfig.java similarity index 100% rename from spring-core-6/src/main/java/com/baeldung/multibeaninstantiation/solution3/PersonConfig.java rename to spring-boot-modules/spring-boot-annotations-2/src/main/java/com/baeldung/multibeaninstantiation/solution3/PersonConfig.java diff --git a/spring-core-6/src/main/java/com/baeldung/multibeaninstantiation/solution3/PersonFactoryPostProcessor.java b/spring-boot-modules/spring-boot-annotations-2/src/main/java/com/baeldung/multibeaninstantiation/solution3/PersonFactoryPostProcessor.java similarity index 100% rename from spring-core-6/src/main/java/com/baeldung/multibeaninstantiation/solution3/PersonFactoryPostProcessor.java rename to spring-boot-modules/spring-boot-annotations-2/src/main/java/com/baeldung/multibeaninstantiation/solution3/PersonFactoryPostProcessor.java diff --git a/spring-core-6/src/main/java/com/baeldung/multibeaninstantiation/solution3/SpringApp3.java b/spring-boot-modules/spring-boot-annotations-2/src/main/java/com/baeldung/multibeaninstantiation/solution3/SpringApp3.java similarity index 100% rename from spring-core-6/src/main/java/com/baeldung/multibeaninstantiation/solution3/SpringApp3.java rename to spring-boot-modules/spring-boot-annotations-2/src/main/java/com/baeldung/multibeaninstantiation/solution3/SpringApp3.java diff --git a/spring-core-5/src/main/java/com/baeldung/springbean/naming/component/Animal.java b/spring-boot-modules/spring-boot-annotations-2/src/main/java/com/baeldung/springbean/naming/component/Animal.java similarity index 100% rename from spring-core-5/src/main/java/com/baeldung/springbean/naming/component/Animal.java rename to spring-boot-modules/spring-boot-annotations-2/src/main/java/com/baeldung/springbean/naming/component/Animal.java diff --git a/spring-core-5/src/main/java/com/baeldung/springbean/naming/component/Cat.java b/spring-boot-modules/spring-boot-annotations-2/src/main/java/com/baeldung/springbean/naming/component/Cat.java similarity index 100% rename from spring-core-5/src/main/java/com/baeldung/springbean/naming/component/Cat.java rename to spring-boot-modules/spring-boot-annotations-2/src/main/java/com/baeldung/springbean/naming/component/Cat.java diff --git a/spring-core-5/src/main/java/com/baeldung/springbean/naming/component/CustomComponent.java b/spring-boot-modules/spring-boot-annotations-2/src/main/java/com/baeldung/springbean/naming/component/CustomComponent.java similarity index 100% rename from spring-core-5/src/main/java/com/baeldung/springbean/naming/component/CustomComponent.java rename to spring-boot-modules/spring-boot-annotations-2/src/main/java/com/baeldung/springbean/naming/component/CustomComponent.java diff --git a/spring-core-5/src/main/java/com/baeldung/springbean/naming/component/Dog.java b/spring-boot-modules/spring-boot-annotations-2/src/main/java/com/baeldung/springbean/naming/component/Dog.java similarity index 100% rename from spring-core-5/src/main/java/com/baeldung/springbean/naming/component/Dog.java rename to spring-boot-modules/spring-boot-annotations-2/src/main/java/com/baeldung/springbean/naming/component/Dog.java diff --git a/spring-core-5/src/main/java/com/baeldung/springbean/naming/configuration/AuditConfiguration.java b/spring-boot-modules/spring-boot-annotations-2/src/main/java/com/baeldung/springbean/naming/configuration/AuditConfiguration.java similarity index 100% rename from spring-core-5/src/main/java/com/baeldung/springbean/naming/configuration/AuditConfiguration.java rename to spring-boot-modules/spring-boot-annotations-2/src/main/java/com/baeldung/springbean/naming/configuration/AuditConfiguration.java diff --git a/spring-core-5/src/main/java/com/baeldung/springbean/naming/configuration/MyConfiguration.java b/spring-boot-modules/spring-boot-annotations-2/src/main/java/com/baeldung/springbean/naming/configuration/MyConfiguration.java similarity index 100% rename from spring-core-5/src/main/java/com/baeldung/springbean/naming/configuration/MyConfiguration.java rename to spring-boot-modules/spring-boot-annotations-2/src/main/java/com/baeldung/springbean/naming/configuration/MyConfiguration.java diff --git a/spring-core-5/src/main/java/com/baeldung/springbean/naming/controller/MessagingController.java b/spring-boot-modules/spring-boot-annotations-2/src/main/java/com/baeldung/springbean/naming/controller/MessagingController.java similarity index 100% rename from spring-core-5/src/main/java/com/baeldung/springbean/naming/controller/MessagingController.java rename to spring-boot-modules/spring-boot-annotations-2/src/main/java/com/baeldung/springbean/naming/controller/MessagingController.java diff --git a/spring-core-5/src/main/java/com/baeldung/springbean/naming/service/AuditService.java b/spring-boot-modules/spring-boot-annotations-2/src/main/java/com/baeldung/springbean/naming/service/AuditService.java similarity index 100% rename from spring-core-5/src/main/java/com/baeldung/springbean/naming/service/AuditService.java rename to spring-boot-modules/spring-boot-annotations-2/src/main/java/com/baeldung/springbean/naming/service/AuditService.java diff --git a/spring-core-5/src/main/java/com/baeldung/springbean/naming/service/LoggingService.java b/spring-boot-modules/spring-boot-annotations-2/src/main/java/com/baeldung/springbean/naming/service/LoggingService.java similarity index 100% rename from spring-core-5/src/main/java/com/baeldung/springbean/naming/service/LoggingService.java rename to spring-boot-modules/spring-boot-annotations-2/src/main/java/com/baeldung/springbean/naming/service/LoggingService.java diff --git a/spring-core-5/src/main/java/com/baeldung/springbean/naming/service/MessagingService.java b/spring-boot-modules/spring-boot-annotations-2/src/main/java/com/baeldung/springbean/naming/service/MessagingService.java similarity index 100% rename from spring-core-5/src/main/java/com/baeldung/springbean/naming/service/MessagingService.java rename to spring-boot-modules/spring-boot-annotations-2/src/main/java/com/baeldung/springbean/naming/service/MessagingService.java diff --git a/spring-core-5/src/main/java/com/baeldung/springbean/naming/service/MessagingServiceImpl.java b/spring-boot-modules/spring-boot-annotations-2/src/main/java/com/baeldung/springbean/naming/service/MessagingServiceImpl.java similarity index 100% rename from spring-core-5/src/main/java/com/baeldung/springbean/naming/service/MessagingServiceImpl.java rename to spring-boot-modules/spring-boot-annotations-2/src/main/java/com/baeldung/springbean/naming/service/MessagingServiceImpl.java diff --git a/spring-core-5/src/main/java/com/baeldung/springbean/naming/service/PetShow.java b/spring-boot-modules/spring-boot-annotations-2/src/main/java/com/baeldung/springbean/naming/service/PetShow.java similarity index 100% rename from spring-core-5/src/main/java/com/baeldung/springbean/naming/service/PetShow.java rename to spring-boot-modules/spring-boot-annotations-2/src/main/java/com/baeldung/springbean/naming/service/PetShow.java diff --git a/spring-core-5/src/test/java/com/baeldung/aliasfor/AliasForUnitTest.java b/spring-boot-modules/spring-boot-annotations-2/src/test/java/com/baeldung/aliasfor/AliasForUnitTest.java similarity index 100% rename from spring-core-5/src/test/java/com/baeldung/aliasfor/AliasForUnitTest.java rename to spring-boot-modules/spring-boot-annotations-2/src/test/java/com/baeldung/aliasfor/AliasForUnitTest.java diff --git a/spring-core-5/src/test/java/com/baeldung/lazy/LazyAnnotationUnitTest.java b/spring-boot-modules/spring-boot-annotations-2/src/test/java/com/baeldung/lazy/LazyAnnotationUnitTest.java similarity index 100% rename from spring-core-5/src/test/java/com/baeldung/lazy/LazyAnnotationUnitTest.java rename to spring-boot-modules/spring-boot-annotations-2/src/test/java/com/baeldung/lazy/LazyAnnotationUnitTest.java diff --git a/spring-core-5/src/test/java/com/baeldung/springbean/naming/SpringBeanNamingUnitTest.java b/spring-boot-modules/spring-boot-annotations-2/src/test/java/com/baeldung/springbean/naming/SpringBeanNamingUnitTest.java similarity index 100% rename from spring-core-5/src/test/java/com/baeldung/springbean/naming/SpringBeanNamingUnitTest.java rename to spring-boot-modules/spring-boot-annotations-2/src/test/java/com/baeldung/springbean/naming/SpringBeanNamingUnitTest.java diff --git a/spring-core-5/README.md b/spring-core-5/README.md index ebf62ac24f..13945c1f8b 100644 --- a/spring-core-5/README.md +++ b/spring-core-5/README.md @@ -6,9 +6,6 @@ This module contains articles about core Spring functionality. - [Spring @Component Annotation](https://www.baeldung.com/spring-component-annotation) - [Solving Spring’s “not eligible for auto-proxying” Warning](https://www.baeldung.com/spring-not-eligible-for-auto-proxying) -- [Spring Bean Names](https://www.baeldung.com/spring-bean-names) -- [AliasFor Annotation in Spring](https://www.baeldung.com/spring-aliasfor-annotation) -- [A Quick Guide to the Spring @Lazy Annotation](https://www.baeldung.com/spring-lazy-annotation) - [Finding the Spring Version](https://www.baeldung.com/spring-find-version) - [How Does the Spring Singleton Bean Serve Concurrent Requests?](https://www.baeldung.com/spring-singleton-concurrent-requests) - More articles: [[<-- prev]](../spring-core-4) diff --git a/spring-core-6/README.md b/spring-core-6/README.md index e10db19a54..af9fd7e32c 100644 --- a/spring-core-6/README.md +++ b/spring-core-6/README.md @@ -1,6 +1,5 @@ ### Relevant Articles: -- [Instantiating Multiple Beans of the Same Class with Spring Annotations](https://www.baeldung.com/spring-same-class-multiple-beans) - [Using Environment Variables in Spring Boot’s application.properties](https://www.baeldung.com/spring-boot-properties-env-variables) - [Reinitialize Singleton Bean in Spring Context](https://www.baeldung.com/spring-reinitialize-singleton-bean) - [HTTP Interface in Spring 6](https://www.baeldung.com/spring-6-http-interface) From 81d9519130406e647f9e8362ae8a0421bbd6cc2a Mon Sep 17 00:00:00 2001 From: 3hsan <56245694+ehsansasanian@users.noreply.github.com> Date: Sun, 26 Mar 2023 20:36:43 +0200 Subject: [PATCH 16/85] Move spring-remoting-modules to jdk9-and-above profile. (#13718) --- pom.xml | 6 ++---- spring-remoting-modules/pom.xml | 18 ++++++++++++++++++ .../remoting-hessian-burlap-client/pom.xml | 14 ++++++++++++++ .../remoting-hessian-burlap-server/pom.xml | 14 ++++++++++++++ 4 files changed, 48 insertions(+), 4 deletions(-) diff --git a/pom.xml b/pom.xml index 31495958e7..9d94ac9717 100644 --- a/pom.xml +++ b/pom.xml @@ -412,8 +412,6 @@ spring-integration spring-jenkins-pipeline - spring-remoting-modules - spring-security-modules @@ -594,8 +592,6 @@ spring-integration spring-jenkins-pipeline - spring-remoting-modules - spring-security-modules @@ -756,6 +752,7 @@ spring-core spring-core-4 spring-integration + spring-remoting-modules libraries-security performance-tests @@ -1028,6 +1025,7 @@ spring-core spring-core-4 spring-integration + spring-remoting-modules libraries-security performance-tests diff --git a/spring-remoting-modules/pom.xml b/spring-remoting-modules/pom.xml index c0f12d2f97..41d77c2969 100644 --- a/spring-remoting-modules/pom.xml +++ b/spring-remoting-modules/pom.xml @@ -37,4 +37,22 @@ + + + + org.apache.maven.plugins + maven-compiler-plugin + ${maven-compiler-plugin.version} + + ${maven.compiler.source} + ${maven.compiler.target} + + + + + + 11 + 11 + + \ No newline at end of file diff --git a/spring-remoting-modules/remoting-hessian-burlap/remoting-hessian-burlap-client/pom.xml b/spring-remoting-modules/remoting-hessian-burlap/remoting-hessian-burlap-client/pom.xml index 63458ef278..1939e00386 100644 --- a/spring-remoting-modules/remoting-hessian-burlap/remoting-hessian-burlap-client/pom.xml +++ b/spring-remoting-modules/remoting-hessian-burlap/remoting-hessian-burlap-client/pom.xml @@ -58,6 +58,20 @@ + + + + org.apache.maven.plugins + maven-surefire-plugin + + + --add-opens java.base/java.lang=ALL-UNNAMED + + + + + + 4.0.38 diff --git a/spring-remoting-modules/remoting-hessian-burlap/remoting-hessian-burlap-server/pom.xml b/spring-remoting-modules/remoting-hessian-burlap/remoting-hessian-burlap-server/pom.xml index d64e8c94c1..68a70f24b6 100644 --- a/spring-remoting-modules/remoting-hessian-burlap/remoting-hessian-burlap-server/pom.xml +++ b/spring-remoting-modules/remoting-hessian-burlap/remoting-hessian-burlap-server/pom.xml @@ -29,6 +29,20 @@ + + + + org.apache.maven.plugins + maven-surefire-plugin + + + --add-opens java.base/java.lang=ALL-UNNAMED + + + + + + 4.0.38 From c236324b6a8413195b7e88ab73e4d49ea857e17b Mon Sep 17 00:00:00 2001 From: panos-kakos <102670093+panos-kakos@users.noreply.github.com> Date: Sun, 26 Mar 2023 21:48:33 +0300 Subject: [PATCH 17/85] [JAVA-19669] Moved vaadin module to jdk9-and-above profile (#13720) --- pom.xml | 7 +++---- vaadin/pom.xml | 1 + 2 files changed, 4 insertions(+), 4 deletions(-) diff --git a/pom.xml b/pom.xml index 9d94ac9717..411a298c61 100644 --- a/pom.xml +++ b/pom.xml @@ -483,8 +483,7 @@ libraries-4 libraries-5 libraries-6 - - vaadin + @@ -655,8 +654,6 @@ libraries-4 libraries-5 libraries-6 - - vaadin @@ -962,6 +959,7 @@ messaging-modules persistence-modules/questdb + vaadin @@ -1234,6 +1232,7 @@ messaging-modules persistence-modules/questdb + vaadin diff --git a/vaadin/pom.xml b/vaadin/pom.xml index aa37a2392a..777ab2551c 100644 --- a/vaadin/pom.xml +++ b/vaadin/pom.xml @@ -187,6 +187,7 @@ local mytheme 3.0.0 + 3.3.2 \ No newline at end of file From 75e70d595cf865efaf244e996d68fd0d1c1345ef Mon Sep 17 00:00:00 2001 From: Mikhail Polivakha <68962645+Mikhail2048@users.noreply.github.com> Date: Mon, 27 Mar 2023 18:52:56 +0300 Subject: [PATCH 18/85] misha2048 Retrying Requests using Apache HttpClient (#13712) --- .../ApacheHttpClientRetryIntegrationTest.java | 168 ++++++++++++++++++ 1 file changed, 168 insertions(+) create mode 100644 apache-httpclient4/src/test/java/com/baeldung/httpclient/retry/ApacheHttpClientRetryIntegrationTest.java diff --git a/apache-httpclient4/src/test/java/com/baeldung/httpclient/retry/ApacheHttpClientRetryIntegrationTest.java b/apache-httpclient4/src/test/java/com/baeldung/httpclient/retry/ApacheHttpClientRetryIntegrationTest.java new file mode 100644 index 0000000000..cfb51f058a --- /dev/null +++ b/apache-httpclient4/src/test/java/com/baeldung/httpclient/retry/ApacheHttpClientRetryIntegrationTest.java @@ -0,0 +1,168 @@ +package com.baeldung.httpclient.retry; + +import static org.assertj.core.api.Assertions.assertThat; +import static org.junit.jupiter.api.Assertions.assertDoesNotThrow; +import static org.junit.jupiter.api.Assertions.assertThrows; + +import java.io.IOException; +import java.net.URI; +import java.net.UnknownHostException; +import java.util.Objects; + +import org.apache.http.HttpRequestInterceptor; +import org.apache.http.HttpResponseInterceptor; +import org.apache.http.client.methods.CloseableHttpResponse; +import org.apache.http.client.methods.HttpGet; +import org.apache.http.client.methods.HttpPatch; +import org.apache.http.client.methods.HttpPost; +import org.apache.http.client.methods.HttpPut; +import org.apache.http.client.protocol.HttpClientContext; +import org.apache.http.impl.client.CloseableHttpClient; +import org.apache.http.impl.client.DefaultHttpRequestRetryHandler; +import org.apache.http.impl.client.HttpClientBuilder; +import org.junit.jupiter.api.AfterEach; +import org.junit.jupiter.api.BeforeEach; +import org.junit.jupiter.api.Test; + +public class ApacheHttpClientRetryIntegrationTest { + + private Integer requestCounter; + private CloseableHttpClient httpClient; + + @BeforeEach + void setUp() { + requestCounter = 0; + } + + @AfterEach + void tearDown() throws IOException { + if (httpClient != null) { + httpClient.close(); + } + } + + private void createDefaultApacheHttpClient() { + this.httpClient = HttpClientBuilder + .create() + .addInterceptorFirst((HttpRequestInterceptor) (httpRequest, httpContext) -> { + requestCounter++; + }).build(); + } + + private void createFailingHttpClient() { + this.httpClient = HttpClientBuilder + .create() + .addInterceptorFirst((HttpRequestInterceptor) (httpRequest, httpContext) -> requestCounter++) + .addInterceptorLast((HttpResponseInterceptor) (httpResponse, httpContext) -> { + throw new IOException(); + }) + .build(); + } + + private void createHttpClientWithRetryHandler() { + this.httpClient = HttpClientBuilder + .create() + .addInterceptorFirst((HttpRequestInterceptor) (httpRequest, httpContext) -> requestCounter++) + .addInterceptorLast((HttpResponseInterceptor) (httpRequest, httpContext) -> { throw new IOException(); }) + .setRetryHandler(new DefaultHttpRequestRetryHandler(6, true)) + .build(); + } + + private void createHttpClientWithCustomRetryHandler() { + this.httpClient = HttpClientBuilder + .create() + .addInterceptorFirst((HttpRequestInterceptor) (httpRequest, httpContext) -> requestCounter++) + .addInterceptorLast((HttpResponseInterceptor) (httpRequest, httpContext) -> { throw new IOException(); }) + .setRetryHandler((exception, executionCount, context) -> { + if (executionCount < 5 && Objects.equals("GET", ((HttpClientContext) context).getRequest().getRequestLine().getMethod())) { + return true; + } else { + return false; + } + }) + .build(); + } + + private void createHttpClientWithRetriesDisabled() { + this.httpClient = HttpClientBuilder + .create() + .addInterceptorFirst((HttpRequestInterceptor) (httpRequest, httpContext) -> requestCounter++) + .addInterceptorLast((HttpResponseInterceptor) (httpRequest, httpContext) -> { throw new IOException(); }) + .disableAutomaticRetries() + .build(); + } + + @Test + public void givenDefaultConfiguration_whenReceivedIOException_thenRetriesPerformed() { + createFailingHttpClient(); + assertThrows(IOException.class, () -> httpClient.execute(new HttpGet("https://httpstat.us/200"))); + assertThat(requestCounter).isEqualTo(4); + } + + @Test + public void givenDefaultConfiguration_whenDomainNameNotResolved_thenNoRetryApplied() { + createDefaultApacheHttpClient(); + HttpGet request = new HttpGet(URI.create("http://domain.that.does.not.exist:80/api/v1")); + + assertThrows(UnknownHostException.class, () -> httpClient.execute(request)); + assertThat(requestCounter).isEqualTo(1); + } + + @Test + public void givenDefaultConfiguration_whenGotInternalServerError_thenNoRetryLogicApplied() throws IOException { + createDefaultApacheHttpClient(); + HttpGet request = new HttpGet(URI.create("https://httpstat.us/500")); + + CloseableHttpResponse response = assertDoesNotThrow(() -> httpClient.execute(request)); + assertThat(response.getStatusLine().getStatusCode()).isEqualTo(500); + assertThat(requestCounter).isEqualTo(1); + response.close(); + } + + @Test + public void givenDefaultConfiguration_whenHttpPatchRequest_thenRetryIsNotApplied() { + createFailingHttpClient(); + HttpPatch request = new HttpPatch(URI.create("https://httpstat.us/500")); + + assertThrows(IOException.class, () -> httpClient.execute(request)); + assertThat(requestCounter).isEqualTo(1); + } + + @Test + public void givenDefaultConfiguration_whenHttpPutRequest_thenRetryIsNotApplied() { + createFailingHttpClient(); + HttpPut request = new HttpPut(URI.create("https://httpstat.us/500")); + + assertThrows(IOException.class, () -> httpClient.execute(request)); + assertThat(requestCounter).isEqualTo(1); + } + + @Test + public void givenConfiguredRetryHandler_whenHttpPostRequest_thenRetriesPerformed() { + createHttpClientWithRetryHandler(); + + HttpPost request = new HttpPost(URI.create("https://httpstat.us/200")); + + assertThrows(IOException.class, () -> httpClient.execute(request)); + assertThat(requestCounter).isEqualTo(7); + } + + @Test + public void givenCustomRetryHandler_whenUnknownHostException_thenRetryAnyway() { + createHttpClientWithCustomRetryHandler(); + + HttpGet request = new HttpGet(URI.create("https://domain.that.does.not.exist/200")); + + assertThrows(IOException.class, () -> httpClient.execute(request)); + assertThat(requestCounter).isEqualTo(5); + } + + @Test + public void givenDisabledRetries_whenExecutedHttpRequestEndUpWithIOException_thenRetryIsNotApplied() { + createHttpClientWithRetriesDisabled(); + HttpGet request = new HttpGet(URI.create("https://httpstat.us/200")); + + assertThrows(IOException.class, () -> httpClient.execute(request)); + assertThat(requestCounter).isEqualTo(1); + } +} From 9af9ee9b48cccf6d2ff6b4c6cc8686a580cc76a6 Mon Sep 17 00:00:00 2001 From: timis1 <12120641+timis1@users.noreply.github.com> Date: Mon, 27 Mar 2023 19:15:24 +0300 Subject: [PATCH 19/85] JAVA-18152 Upgrade libraries-data-db module to JDK 11 (#13716) Co-authored-by: timis1 --- libraries-data-db/pom.xml | 26 ++++++++++++------- .../com/baeldung/libraries/ebean/app/App.java | 23 ++++++++-------- .../baeldung/libraries/ebean/app/App2.java | 14 +++++----- .../baeldung/libraries/jdo/GuideToJDO.java | 4 +-- .../jdo/GuideToJDOIntegrationTest.java | 4 +-- .../ormlite/ORMLiteIntegrationTest.java | 4 ++- pom.xml | 4 +-- 7 files changed, 43 insertions(+), 36 deletions(-) diff --git a/libraries-data-db/pom.xml b/libraries-data-db/pom.xml index 6c72a4902c..55fd990a80 100644 --- a/libraries-data-db/pom.xml +++ b/libraries-data-db/pom.xml @@ -43,7 +43,7 @@ org.datanucleus datanucleus-api-jdo - ${datanucleus.version} + ${datanucleus-api.version} org.datanucleus @@ -135,6 +135,11 @@ org.projectlombok lombok + + io.ebean + ebean-api + ${ebean.version} + @@ -270,15 +275,16 @@ 18.1.0 3.0.0 1.8 - 5.0 - 5.1.1 - 5.0.2 - 5.0.4 - 3.2.0-m7 - 3.4.5 - 11.22.4 - 1.4.2.Final - 1.15.3 + 6.1 + 6.0.3 + 6.0.1 + 6.0.0-release + 6.0.1 + 3.2.1 + 5.0.1 + 13.15.2 + 2.1.3.Final + 1.17.6 \ No newline at end of file diff --git a/libraries-data-db/src/main/java/com/baeldung/libraries/ebean/app/App.java b/libraries-data-db/src/main/java/com/baeldung/libraries/ebean/app/App.java index 9c59cbb8c0..e26f01c2f8 100644 --- a/libraries-data-db/src/main/java/com/baeldung/libraries/ebean/app/App.java +++ b/libraries-data-db/src/main/java/com/baeldung/libraries/ebean/app/App.java @@ -1,12 +1,13 @@ package com.baeldung.libraries.ebean.app; +import java.util.Arrays; + import com.baeldung.libraries.ebean.model.Address; import com.baeldung.libraries.ebean.model.Customer; -import io.ebean.Ebean; -import io.ebean.EbeanServer; -import io.ebean.annotation.Transactional; -import java.util.Arrays; +import io.ebean.DB; +import io.ebean.Database; +import io.ebean.annotation.Transactional; public class App { @@ -20,7 +21,7 @@ public class App { public static void insertAndDeleteInsideTransaction() { Customer c1 = getCustomer(); - EbeanServer server = Ebean.getDefaultServer(); + Database server = DB.getDefault(); server.save(c1); Customer foundC1 = server.find(Customer.class, c1.getId()); server.delete(foundC1); @@ -31,16 +32,16 @@ public class App { Address a1 = new Address("5, Wide Street", null, "New York"); Customer c1 = new Customer("John Wide", a1); - EbeanServer server = Ebean.getDefaultServer(); + Database server = DB.getDefault(); server.save(c1); c1.setName("Jane Wide"); c1.setAddress(null); server.save(c1); - Customer foundC1 = Ebean.find(Customer.class, c1.getId()); + Customer foundC1 = DB.find(Customer.class, c1.getId()); - Ebean.delete(foundC1); + DB.delete(foundC1); } public static void queryCustomers() { @@ -53,16 +54,16 @@ public class App { Address a3 = new Address("3, Big Street", null, "San Jose"); Customer c3 = new Customer("Big Bob", a3); - Ebean.saveAll(Arrays.asList(c1, c2, c3)); + DB.saveAll(Arrays.asList(c1, c2, c3)); - Customer customer = Ebean.find(Customer.class) + Customer customer = DB.find(Customer.class) .select("name") .fetch("address", "city") .where() .eq("city", "San Jose") .findOne(); - Ebean.deleteAll(Arrays.asList(c1, c2, c3)); + DB.deleteAll(Arrays.asList(c1, c2, c3)); } private static Customer getCustomer() { diff --git a/libraries-data-db/src/main/java/com/baeldung/libraries/ebean/app/App2.java b/libraries-data-db/src/main/java/com/baeldung/libraries/ebean/app/App2.java index c604f2cc25..4018c3c4ff 100644 --- a/libraries-data-db/src/main/java/com/baeldung/libraries/ebean/app/App2.java +++ b/libraries-data-db/src/main/java/com/baeldung/libraries/ebean/app/App2.java @@ -1,15 +1,15 @@ package com.baeldung.libraries.ebean.app; -import io.ebean.EbeanServer; -import io.ebean.EbeanServerFactory; -import io.ebean.config.ServerConfig; - import java.util.Properties; +import io.ebean.Database; +import io.ebean.DatabaseFactory; +import io.ebean.config.DatabaseConfig; + public class App2 { public static void main(String[] args) { - ServerConfig cfg = new ServerConfig(); + DatabaseConfig cfg = new DatabaseConfig(); cfg.setDefaultServer(true); Properties properties = new Properties(); properties.put("ebean.db.ddl.generate", "true"); @@ -19,8 +19,6 @@ public class App2 { properties.put("datasource.db.databaseUrl", "jdbc:h2:mem:app2"); properties.put("datasource.db.databaseDriver", "org.h2.Driver"); cfg.loadFromProperties(properties); - EbeanServer server = EbeanServerFactory.create(cfg); - + Database server = DatabaseFactory.create(cfg); } - } diff --git a/libraries-data-db/src/main/java/com/baeldung/libraries/jdo/GuideToJDO.java b/libraries-data-db/src/main/java/com/baeldung/libraries/jdo/GuideToJDO.java index 99b0a4bef7..2385c16e47 100644 --- a/libraries-data-db/src/main/java/com/baeldung/libraries/jdo/GuideToJDO.java +++ b/libraries-data-db/src/main/java/com/baeldung/libraries/jdo/GuideToJDO.java @@ -45,7 +45,7 @@ public class GuideToJDO { pumd = new PersistenceUnitMetaData("dynamic-unit", "RESOURCE_LOCAL", null); pumd.addClassName("com.baeldung.libraries.jdo.Product"); - pumd.setExcludeUnlistedClasses(); + pumd.setExcludeUnlistedClasses(true); pumd.addProperty("javax.jdo.option.ConnectionDriverName", "org.h2.Driver"); pumd.addProperty("javax.jdo.option.ConnectionURL", "jdbc:h2:mem:mypersistence"); pumd.addProperty("javax.jdo.option.ConnectionUserName", "sa"); @@ -57,7 +57,7 @@ public class GuideToJDO { public void CreateXMLProperties() { pumdXML = new PersistenceUnitMetaData("dynamic-unit", "RESOURCE_LOCAL", null); pumdXML.addClassName("com.baeldung.libraries.jdo.ProductXML"); - pumdXML.setExcludeUnlistedClasses(); + pumdXML.setExcludeUnlistedClasses(true); pumdXML.addProperty("javax.jdo.option.ConnectionURL", "xml:file:myPersistence.xml"); pumdXML.addProperty("datanucleus.autoCreateSchema", "true"); } diff --git a/libraries-data-db/src/test/java/com/baeldung/libraries/jdo/GuideToJDOIntegrationTest.java b/libraries-data-db/src/test/java/com/baeldung/libraries/jdo/GuideToJDOIntegrationTest.java index 1c15a4f087..5872eba537 100644 --- a/libraries-data-db/src/test/java/com/baeldung/libraries/jdo/GuideToJDOIntegrationTest.java +++ b/libraries-data-db/src/test/java/com/baeldung/libraries/jdo/GuideToJDOIntegrationTest.java @@ -18,7 +18,7 @@ public class GuideToJDOIntegrationTest { public void givenProduct_WhenNewThenPerformTransaction() { PersistenceUnitMetaData pumd = new PersistenceUnitMetaData("dynamic-unit", "RESOURCE_LOCAL", null); pumd.addClassName("com.baeldung.libraries.jdo.Product"); - pumd.setExcludeUnlistedClasses(); + pumd.setExcludeUnlistedClasses(true); pumd.addProperty("javax.jdo.option.ConnectionDriverName", "org.h2.Driver"); pumd.addProperty("javax.jdo.option.ConnectionURL", "jdbc:h2:mem:mypersistence"); pumd.addProperty("javax.jdo.option.ConnectionUserName", "sa"); @@ -53,7 +53,7 @@ public class GuideToJDOIntegrationTest { public void givenProduct_WhenQueryThenExist() { PersistenceUnitMetaData pumd = new PersistenceUnitMetaData("dynamic-unit", "RESOURCE_LOCAL", null); pumd.addClassName("com.baeldung.libraries.jdo.Product"); - pumd.setExcludeUnlistedClasses(); + pumd.setExcludeUnlistedClasses(true); pumd.addProperty("javax.jdo.option.ConnectionDriverName", "org.h2.Driver"); pumd.addProperty("javax.jdo.option.ConnectionURL", "jdbc:h2:mem:mypersistence"); pumd.addProperty("javax.jdo.option.ConnectionUserName", "sa"); diff --git a/libraries-data-db/src/test/java/com/baeldung/libraries/ormlite/ORMLiteIntegrationTest.java b/libraries-data-db/src/test/java/com/baeldung/libraries/ormlite/ORMLiteIntegrationTest.java index 139e52632a..58c757d8a5 100644 --- a/libraries-data-db/src/test/java/com/baeldung/libraries/ormlite/ORMLiteIntegrationTest.java +++ b/libraries-data-db/src/test/java/com/baeldung/libraries/ormlite/ORMLiteIntegrationTest.java @@ -80,6 +80,8 @@ public class ORMLiteIntegrationTest { wrappedIterable.forEach(lib -> { System.out.println(lib.getName()); }); + } catch (Exception e) { + throw new RuntimeException(e); } } @@ -162,7 +164,7 @@ public class ORMLiteIntegrationTest { } @AfterClass - public static void tearDown() throws SQLException, IOException { + public static void tearDown() throws Exception { connectionSource.close(); } } diff --git a/pom.xml b/pom.xml index 411a298c61..b790e64046 100644 --- a/pom.xml +++ b/pom.xml @@ -348,7 +348,6 @@ language-interop libraries-3 - libraries-data-db lombok-modules @@ -537,7 +536,6 @@ language-interop libraries-3 - libraries-data-db lombok-modules muleesb @@ -751,6 +749,7 @@ spring-integration spring-remoting-modules libraries-security + libraries-data-db performance-tests security-modules @@ -1025,6 +1024,7 @@ spring-integration spring-remoting-modules libraries-security + libraries-data-db performance-tests security-modules From 44cc5f5220ce3b4b553569d08b149637a8206324 Mon Sep 17 00:00:00 2001 From: Ulisses Lima Date: Mon, 27 Mar 2023 13:56:16 -0300 Subject: [PATCH 20/85] removing redundant interface --- .../baeldung/springpagination/repository/PostRepository.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/spring-boot-rest/src/main/java/com/baeldung/springpagination/repository/PostRepository.java b/spring-boot-rest/src/main/java/com/baeldung/springpagination/repository/PostRepository.java index acdc01df94..62f05f8262 100644 --- a/spring-boot-rest/src/main/java/com/baeldung/springpagination/repository/PostRepository.java +++ b/spring-boot-rest/src/main/java/com/baeldung/springpagination/repository/PostRepository.java @@ -10,7 +10,7 @@ import org.springframework.data.repository.query.Param; import com.baeldung.springpagination.model.Post; import com.baeldung.springpagination.model.User; -public interface PostRepository extends JpaRepository, PagingAndSortingRepository { +public interface PostRepository extends JpaRepository { @Query("select u from Post u where u.userName=:userName") Page findByUser(@Param("userName") String userName, Pageable pageReq); From 9c571d34246615a5d0142a954dd4dbe7d9bfbad8 Mon Sep 17 00:00:00 2001 From: timis1 <12120641+timis1@users.noreply.github.com> Date: Tue, 28 Mar 2023 11:01:39 +0300 Subject: [PATCH 21/85] JAVA-17818 Split or move spring-cloud-openfeign module (conti-2) (#13621) * JAVA-17818 Split or move spring-cloud-openfeign module (conti-2) * JAVA-17818 Some adjustments in the README.md file --------- Co-authored-by: timis1 --- feign/README.md | 8 +-- feign/pom.xml | 5 -- .../com/baeldung/core/ExampleApplication.java | 2 - .../fileupload/config/ExceptionMessage.java | 55 ------------------- .../fileupload/config/FeignSupportConfig.java | 22 -------- .../config/RetreiveMessageErrorDecoder.java | 35 ------------ .../fileupload/service/UploadResource.java | 16 ------ .../fileupload/service/UploadService.java | 32 ----------- .../core/OpenFeignFileUploadLiveTest.java | 50 ----------------- .../spring-cloud-openfeign/README.md | 6 ++ .../spring-cloud-openfeign/pom.xml | 13 +++++ .../cloud/openfeign}/client/FormClient.java | 4 +- .../cloud/openfeign}/client/UserClient.java | 4 +- .../cloud/openfeign/config/FeignConfig.java | 13 +++++ .../client/ProductClient.java | 6 +- .../config/CustomErrorDecoder.java | 9 +-- .../config/FeignConfig.java | 2 +- .../controller/ProductController.java | 6 +- .../exception/ErrorResponse.java | 2 +- .../exception/ProductExceptionHandler.java | 2 +- .../exception/ProductNotFoundException.java | 2 +- .../ProductServiceNotAvailableException.java | 2 +- .../client/ProductClient.java | 6 +- .../config/FeignConfig.java | 2 +- .../controller/ProductController.java | 6 +- .../defaulterrorhandling/model/FormData.java | 2 +- .../defaulterrorhandling/model/Product.java | 2 +- .../fileupload/config/FeignSupportConfig.java | 8 +-- .../config/RetreiveMessageErrorDecoder.java | 3 +- .../fileupload/controller/FileController.java | 8 +-- .../FileUploadClientFallbackFactory.java | 23 ++++---- .../fileupload/service/UploadClient.java | 4 +- .../fileupload/service/UploadResource.java | 2 +- .../openfeign}/client/FormClientUnitTest.java | 4 +- .../client/ProductClientUnitTest.java | 8 +-- .../controller/ProductControllerUnitTest.java | 6 +- .../client/ProductClientUnitTest.java | 6 +- .../controller/ProductControllerUnitTest.java | 4 +- .../controller/TestControllerAdvice.java | 2 +- 39 files changed, 97 insertions(+), 295 deletions(-) delete mode 100644 feign/src/main/java/com/baeldung/core/fileupload/config/ExceptionMessage.java delete mode 100644 feign/src/main/java/com/baeldung/core/fileupload/config/FeignSupportConfig.java delete mode 100644 feign/src/main/java/com/baeldung/core/fileupload/config/RetreiveMessageErrorDecoder.java delete mode 100644 feign/src/main/java/com/baeldung/core/fileupload/service/UploadResource.java delete mode 100644 feign/src/main/java/com/baeldung/core/fileupload/service/UploadService.java delete mode 100644 feign/src/test/java/com/baeldung/core/OpenFeignFileUploadLiveTest.java rename {feign/src/main/java/com/baeldung/core => spring-cloud-modules/spring-cloud-openfeign/src/main/java/com/baeldung/cloud/openfeign}/client/FormClient.java (90%) rename {feign/src/main/java/com/baeldung/core => spring-cloud-modules/spring-cloud-openfeign/src/main/java/com/baeldung/cloud/openfeign}/client/UserClient.java (75%) create mode 100644 spring-cloud-modules/spring-cloud-openfeign/src/main/java/com/baeldung/cloud/openfeign/config/FeignConfig.java rename {feign/src/main/java/com/baeldung/core => spring-cloud-modules/spring-cloud-openfeign/src/main/java/com/baeldung/cloud/openfeign}/customizederrorhandling/client/ProductClient.java (70%) rename {feign/src/main/java/com/baeldung/core => spring-cloud-modules/spring-cloud-openfeign/src/main/java/com/baeldung/cloud/openfeign}/customizederrorhandling/config/CustomErrorDecoder.java (65%) rename {feign/src/main/java/com/baeldung/core => spring-cloud-modules/spring-cloud-openfeign/src/main/java/com/baeldung/cloud/openfeign}/customizederrorhandling/config/FeignConfig.java (81%) rename {feign/src/main/java/com/baeldung/core => spring-cloud-modules/spring-cloud-openfeign/src/main/java/com/baeldung/cloud/openfeign}/customizederrorhandling/controller/ProductController.java (76%) rename {feign/src/main/java/com/baeldung/core => spring-cloud-modules/spring-cloud-openfeign/src/main/java/com/baeldung/cloud/openfeign}/customizederrorhandling/exception/ErrorResponse.java (94%) rename {feign/src/main/java/com/baeldung/core => spring-cloud-modules/spring-cloud-openfeign/src/main/java/com/baeldung/cloud/openfeign}/customizederrorhandling/exception/ProductExceptionHandler.java (95%) rename {feign/src/main/java/com/baeldung/core => spring-cloud-modules/spring-cloud-openfeign/src/main/java/com/baeldung/cloud/openfeign}/customizederrorhandling/exception/ProductNotFoundException.java (68%) rename {feign/src/main/java/com/baeldung/core => spring-cloud-modules/spring-cloud-openfeign/src/main/java/com/baeldung/cloud/openfeign}/customizederrorhandling/exception/ProductServiceNotAvailableException.java (70%) rename {feign/src/main/java/com/baeldung/core => spring-cloud-modules/spring-cloud-openfeign/src/main/java/com/baeldung/cloud/openfeign}/defaulterrorhandling/client/ProductClient.java (70%) rename {feign/src/main/java/com/baeldung/core => spring-cloud-modules/spring-cloud-openfeign/src/main/java/com/baeldung/cloud/openfeign}/defaulterrorhandling/config/FeignConfig.java (74%) rename {feign/src/main/java/com/baeldung/core => spring-cloud-modules/spring-cloud-openfeign/src/main/java/com/baeldung/cloud/openfeign}/defaulterrorhandling/controller/ProductController.java (76%) rename {feign/src/main/java/com/baeldung/core => spring-cloud-modules/spring-cloud-openfeign/src/main/java/com/baeldung/cloud/openfeign}/defaulterrorhandling/model/FormData.java (67%) rename {feign/src/main/java/com/baeldung/core => spring-cloud-modules/spring-cloud-openfeign/src/main/java/com/baeldung/cloud/openfeign}/defaulterrorhandling/model/Product.java (82%) rename {feign/src/main/java/com/baeldung/core => spring-cloud-modules/spring-cloud-openfeign/src/main/java/com/baeldung/cloud/openfeign}/fileupload/controller/FileController.java (78%) rename {feign/src/main/java/com/baeldung/core => spring-cloud-modules/spring-cloud-openfeign/src/main/java/com/baeldung/cloud/openfeign}/fileupload/service/UploadClient.java (85%) rename {feign/src/test/java/com/baeldung/core => spring-cloud-modules/spring-cloud-openfeign/src/test/java/com/baeldung/cloud/openfeign}/client/FormClientUnitTest.java (95%) rename {feign/src/test/java/com/baeldung/core => spring-cloud-modules/spring-cloud-openfeign/src/test/java/com/baeldung/cloud/openfeign}/customizederrorhandling/client/ProductClientUnitTest.java (85%) rename {feign/src/test/java/com/baeldung/core => spring-cloud-modules/spring-cloud-openfeign/src/test/java/com/baeldung/cloud/openfeign}/customizederrorhandling/controller/ProductControllerUnitTest.java (94%) rename {feign/src/test/java/com/baeldung/core => spring-cloud-modules/spring-cloud-openfeign/src/test/java/com/baeldung/cloud/openfeign}/defaulterrorhandling/client/ProductClientUnitTest.java (93%) rename {feign/src/test/java/com/baeldung/core => spring-cloud-modules/spring-cloud-openfeign/src/test/java/com/baeldung/cloud/openfeign}/defaulterrorhandling/controller/ProductControllerUnitTest.java (95%) rename {feign/src/test/java/com/baeldung/core => spring-cloud-modules/spring-cloud-openfeign/src/test/java/com/baeldung/cloud/openfeign}/defaulterrorhandling/controller/TestControllerAdvice.java (88%) diff --git a/feign/README.md b/feign/README.md index 3e733448fb..074ce1cbd2 100644 --- a/feign/README.md +++ b/feign/README.md @@ -6,10 +6,4 @@ This module contains articles about Feign - [Intro to Feign](https://www.baeldung.com/intro-to-feign) - [Retrying Feign Calls](https://www.baeldung.com/feign-retry) -- [Setting Request Headers Using Feign](https://www.baeldung.com/java-feign-request-headers) -- [File Upload With Open Feign](https://www.baeldung.com/java-feign-file-upload) -- [Feign Logging Configuration](https://www.baeldung.com/java-feign-logging) -- [Retrieve Original Message From Feign ErrorDecoder](https://www.baeldung.com/feign-retrieve-original-message) -- [RequestLine with Feign Client](https://www.baeldung.com/feign-requestline) -- [Propagating Exceptions With OpenFeign and Spring](https://www.baeldung.com/spring-openfeign-propagate-exception) -- [Post form-url-encoded Data with Spring Cloud Feign](https://www.baeldung.com/spring-cloud-post-form-url-encoded-data) +- [Setting Request Headers Using Feign](https://www.baeldung.com/java-feign-request-headers) \ No newline at end of file diff --git a/feign/pom.xml b/feign/pom.xml index f39adec607..7f71794e29 100644 --- a/feign/pom.xml +++ b/feign/pom.xml @@ -69,11 +69,6 @@ feign-form-spring ${feign.form.spring.version} - - org.springframework.cloud - spring-cloud-starter-openfeign - ${spring.cloud.openfeign.version} - com.github.tomakehurst wiremock-jre8 diff --git a/feign/src/main/java/com/baeldung/core/ExampleApplication.java b/feign/src/main/java/com/baeldung/core/ExampleApplication.java index 391e808ede..881265d5ba 100644 --- a/feign/src/main/java/com/baeldung/core/ExampleApplication.java +++ b/feign/src/main/java/com/baeldung/core/ExampleApplication.java @@ -2,10 +2,8 @@ package com.baeldung.core; import org.springframework.boot.SpringApplication; import org.springframework.boot.autoconfigure.SpringBootApplication; -import org.springframework.cloud.openfeign.EnableFeignClients; @SpringBootApplication -@EnableFeignClients public class ExampleApplication { public static void main(String[] args) { diff --git a/feign/src/main/java/com/baeldung/core/fileupload/config/ExceptionMessage.java b/feign/src/main/java/com/baeldung/core/fileupload/config/ExceptionMessage.java deleted file mode 100644 index 8301705ca6..0000000000 --- a/feign/src/main/java/com/baeldung/core/fileupload/config/ExceptionMessage.java +++ /dev/null @@ -1,55 +0,0 @@ -package com.baeldung.core.fileupload.config; - -public class ExceptionMessage { - private String timestamp; - private int status; - private String error; - private String message; - private String path; - - public String getTimestamp() { - return timestamp; - } - - public void setTimestamp(String timestamp) { - this.timestamp = timestamp; - } - - public int getStatus() { - return status; - } - - public void setStatus(int status) { - this.status = status; - } - - public String getError() { - return error; - } - - public void setError(String error) { - this.error = error; - } - - public String getMessage() { - return message; - } - - public void setMessage(String message) { - this.message = message; - } - - public String getPath() { - return path; - } - - public void setPath(String path) { - this.path = path; - } - - @Override - public String toString() { - return "ExceptionMessage [timestamp=" + timestamp + ", status=" + status + ", error=" + error + ", message=" + message + ", path=" + path + "]"; - } - -} diff --git a/feign/src/main/java/com/baeldung/core/fileupload/config/FeignSupportConfig.java b/feign/src/main/java/com/baeldung/core/fileupload/config/FeignSupportConfig.java deleted file mode 100644 index c8c9eb1acc..0000000000 --- a/feign/src/main/java/com/baeldung/core/fileupload/config/FeignSupportConfig.java +++ /dev/null @@ -1,22 +0,0 @@ -package com.baeldung.core.fileupload.config; - -import org.springframework.boot.autoconfigure.http.HttpMessageConverters; -import org.springframework.cloud.openfeign.support.SpringEncoder; -import org.springframework.context.annotation.Bean; -import org.springframework.web.client.RestTemplate; - -import feign.codec.Encoder; -import feign.codec.ErrorDecoder; -import feign.form.spring.SpringFormEncoder; - -public class FeignSupportConfig { - @Bean - public Encoder multipartFormEncoder() { - return new SpringFormEncoder(new SpringEncoder(() -> new HttpMessageConverters(new RestTemplate().getMessageConverters()))); - } - - @Bean - public ErrorDecoder errorDecoder() { - return new RetreiveMessageErrorDecoder(); - } -} diff --git a/feign/src/main/java/com/baeldung/core/fileupload/config/RetreiveMessageErrorDecoder.java b/feign/src/main/java/com/baeldung/core/fileupload/config/RetreiveMessageErrorDecoder.java deleted file mode 100644 index fc2c8da0ed..0000000000 --- a/feign/src/main/java/com/baeldung/core/fileupload/config/RetreiveMessageErrorDecoder.java +++ /dev/null @@ -1,35 +0,0 @@ -package com.baeldung.core.fileupload.config; - -import java.io.IOException; -import java.io.InputStream; - -import com.baeldung.core.exception.BadRequestException; -import com.baeldung.core.exception.NotFoundException; -import com.fasterxml.jackson.databind.ObjectMapper; - -import feign.Response; -import feign.codec.ErrorDecoder; - -public class RetreiveMessageErrorDecoder implements ErrorDecoder { - private final ErrorDecoder errorDecoder = new Default(); - - @Override - public Exception decode(String methodKey, Response response) { - ExceptionMessage message; - try (InputStream bodyIs = response.body() - .asInputStream()) { - ObjectMapper mapper = new ObjectMapper(); - message = mapper.readValue(bodyIs, ExceptionMessage.class); - } catch (IOException e) { - return new Exception(e.getMessage()); - } - switch (response.status()) { - case 400: - return new BadRequestException(message.getMessage() != null ? message.getMessage() : "Bad Request"); - case 404: - return new NotFoundException(message.getMessage() != null ? message.getMessage() : "Not found"); - default: - return errorDecoder.decode(methodKey, response); - } - } -} diff --git a/feign/src/main/java/com/baeldung/core/fileupload/service/UploadResource.java b/feign/src/main/java/com/baeldung/core/fileupload/service/UploadResource.java deleted file mode 100644 index 9d3d173cd4..0000000000 --- a/feign/src/main/java/com/baeldung/core/fileupload/service/UploadResource.java +++ /dev/null @@ -1,16 +0,0 @@ -package com.baeldung.core.fileupload.service; - -import org.springframework.web.multipart.MultipartFile; - -import feign.Headers; -import feign.Param; -import feign.RequestLine; -import feign.Response; - -public interface UploadResource { - - @RequestLine("POST /upload-file") - @Headers("Content-Type: multipart/form-data") - Response uploadFile(@Param("file") MultipartFile file); - -} \ No newline at end of file diff --git a/feign/src/main/java/com/baeldung/core/fileupload/service/UploadService.java b/feign/src/main/java/com/baeldung/core/fileupload/service/UploadService.java deleted file mode 100644 index 5176ddf0fa..0000000000 --- a/feign/src/main/java/com/baeldung/core/fileupload/service/UploadService.java +++ /dev/null @@ -1,32 +0,0 @@ -package com.baeldung.core.fileupload.service; - -import org.springframework.beans.factory.annotation.Autowired; -import org.springframework.stereotype.Service; -import org.springframework.web.multipart.MultipartFile; - -import feign.Feign; -import feign.Response; -import feign.form.spring.SpringFormEncoder; - -@Service -public class UploadService { - private static final String HTTP_FILE_UPLOAD_URL = "http://localhost:8081"; - - @Autowired - private UploadClient client; - - public boolean uploadFileWithManualClient(MultipartFile file) { - UploadResource fileUploadResource = Feign.builder().encoder(new SpringFormEncoder()) - .target(UploadResource.class, HTTP_FILE_UPLOAD_URL); - Response response = fileUploadResource.uploadFile(file); - return response.status() == 200; - } - - public String uploadFile(MultipartFile file) { - return client.fileUpload(file); - } - - public String uploadFileError(MultipartFile file) { - return client.fileUpload(file); - } -} \ No newline at end of file diff --git a/feign/src/test/java/com/baeldung/core/OpenFeignFileUploadLiveTest.java b/feign/src/test/java/com/baeldung/core/OpenFeignFileUploadLiveTest.java deleted file mode 100644 index f9dc8b13ed..0000000000 --- a/feign/src/test/java/com/baeldung/core/OpenFeignFileUploadLiveTest.java +++ /dev/null @@ -1,50 +0,0 @@ -package com.baeldung.core; - -import java.io.File; -import java.io.FileInputStream; -import java.io.IOException; - -import org.apache.commons.io.IOUtils; -import org.junit.Assert; -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.mock.web.MockMultipartFile; -import org.springframework.test.context.junit4.SpringRunner; -import org.springframework.web.multipart.MultipartFile; - -import com.baeldung.core.fileupload.service.UploadService; - -@RunWith(SpringRunner.class) -@SpringBootTest(classes = ExampleApplication.class) -public class OpenFeignFileUploadLiveTest { - - @Autowired - private UploadService uploadService; - - private static String FILE_NAME = "fileupload.txt"; - - @Test - public void whenFeignBuilder_thenFileUploadSuccess() throws IOException { - ClassLoader classloader = Thread.currentThread().getContextClassLoader(); - File file = new File(classloader.getResource(FILE_NAME).getFile()); - Assert.assertTrue(file.exists()); - FileInputStream input = new FileInputStream(file); - MultipartFile multipartFile = new MockMultipartFile("file", file.getName(), "text/plain", - IOUtils.toByteArray(input)); - Assert.assertTrue(uploadService.uploadFileWithManualClient(multipartFile)); - } - - @Test - public void whenAnnotatedFeignClient_thenFileUploadSuccess() throws IOException { - ClassLoader classloader = Thread.currentThread().getContextClassLoader(); - File file = new File(classloader.getResource(FILE_NAME).getFile()); - Assert.assertTrue(file.exists()); - FileInputStream input = new FileInputStream(file); - MultipartFile multipartFile = new MockMultipartFile("file", file.getName(), "text/plain", - IOUtils.toByteArray(input)); - String uploadFile = uploadService.uploadFile(multipartFile); - Assert.assertNotNull(uploadFile); - } -} diff --git a/spring-cloud-modules/spring-cloud-openfeign/README.md b/spring-cloud-modules/spring-cloud-openfeign/README.md index d1e52eb415..edda9a8f80 100644 --- a/spring-cloud-modules/spring-cloud-openfeign/README.md +++ b/spring-cloud-modules/spring-cloud-openfeign/README.md @@ -5,4 +5,10 @@ - [Provide an OAuth2 Token to a Feign Client](https://www.baeldung.com/spring-cloud-feign-oauth-token) - [Propagating Exceptions With OpenFeign and Spring](https://www.baeldung.com/spring-openfeign-propagate-exception) - [Feign Client Exception Handling](https://www.baeldung.com/java-feign-client-exception-handling) +- [File Upload With Open Feign](https://www.baeldung.com/java-feign-file-upload) +- [Feign Logging Configuration](https://www.baeldung.com/java-feign-logging) +- [Retrieve Original Message From Feign ErrorDecoder](https://www.baeldung.com/feign-retrieve-original-message) +- [RequestLine with Feign Client](https://www.baeldung.com/feign-requestline) +- [Propagating Exceptions With OpenFeign and Spring](https://www.baeldung.com/spring-openfeign-propagate-exception) +- [Post form-url-encoded Data with Spring Cloud Feign](https://www.baeldung.com/spring-cloud-post-form-url-encoded-data) - [Configuring Spring Cloud FeignClient URL](https://www.baeldung.com/spring-cloud-feignclient-url) diff --git a/spring-cloud-modules/spring-cloud-openfeign/pom.xml b/spring-cloud-modules/spring-cloud-openfeign/pom.xml index 88ad38517b..465be6b74f 100644 --- a/spring-cloud-modules/spring-cloud-openfeign/pom.xml +++ b/spring-cloud-modules/spring-cloud-openfeign/pom.xml @@ -61,10 +61,23 @@ spring-boot-starter-test test + + com.github.tomakehurst + wiremock-jre8 + ${wire.mock.version} + test + + + org.projectlombok + lombok + ${lombok.version} + provided + 2021.0.3 + 2.33.2 \ No newline at end of file diff --git a/feign/src/main/java/com/baeldung/core/client/FormClient.java b/spring-cloud-modules/spring-cloud-openfeign/src/main/java/com/baeldung/cloud/openfeign/client/FormClient.java similarity index 90% rename from feign/src/main/java/com/baeldung/core/client/FormClient.java rename to spring-cloud-modules/spring-cloud-openfeign/src/main/java/com/baeldung/cloud/openfeign/client/FormClient.java index 074402aef3..f127ec3b8b 100644 --- a/feign/src/main/java/com/baeldung/core/client/FormClient.java +++ b/spring-cloud-modules/spring-cloud-openfeign/src/main/java/com/baeldung/cloud/openfeign/client/FormClient.java @@ -1,4 +1,4 @@ -package com.baeldung.core.client; +package com.baeldung.cloud.openfeign.client; import java.util.Map; @@ -11,7 +11,7 @@ import org.springframework.http.MediaType; import org.springframework.web.bind.annotation.PostMapping; import org.springframework.web.bind.annotation.RequestBody; -import com.baeldung.core.defaulterrorhandling.model.FormData; +import com.baeldung.cloud.openfeign.defaulterrorhandling.model.FormData; import feign.codec.Encoder; import feign.form.spring.SpringFormEncoder; diff --git a/feign/src/main/java/com/baeldung/core/client/UserClient.java b/spring-cloud-modules/spring-cloud-openfeign/src/main/java/com/baeldung/cloud/openfeign/client/UserClient.java similarity index 75% rename from feign/src/main/java/com/baeldung/core/client/UserClient.java rename to spring-cloud-modules/spring-cloud-openfeign/src/main/java/com/baeldung/cloud/openfeign/client/UserClient.java index a16f924ad5..a9b78e5db8 100644 --- a/feign/src/main/java/com/baeldung/core/client/UserClient.java +++ b/spring-cloud-modules/spring-cloud-openfeign/src/main/java/com/baeldung/cloud/openfeign/client/UserClient.java @@ -1,9 +1,9 @@ -package com.baeldung.core.client; +package com.baeldung.cloud.openfeign.client; import org.springframework.cloud.openfeign.FeignClient; import org.springframework.web.bind.annotation.GetMapping; -import com.baeldung.core.config.FeignConfig; +import com.baeldung.cloud.openfeign.config.FeignConfig; @FeignClient(name = "user-client", url="https://jsonplaceholder.typicode.com", configuration = FeignConfig.class) public interface UserClient { diff --git a/spring-cloud-modules/spring-cloud-openfeign/src/main/java/com/baeldung/cloud/openfeign/config/FeignConfig.java b/spring-cloud-modules/spring-cloud-openfeign/src/main/java/com/baeldung/cloud/openfeign/config/FeignConfig.java new file mode 100644 index 0000000000..005084899b --- /dev/null +++ b/spring-cloud-modules/spring-cloud-openfeign/src/main/java/com/baeldung/cloud/openfeign/config/FeignConfig.java @@ -0,0 +1,13 @@ +package com.baeldung.cloud.openfeign.config; + +import org.springframework.context.annotation.Bean; + +import feign.Logger; + +public class FeignConfig { + + @Bean + Logger.Level feignLoggerLevel() { + return Logger.Level.FULL; + } +} \ No newline at end of file diff --git a/feign/src/main/java/com/baeldung/core/customizederrorhandling/client/ProductClient.java b/spring-cloud-modules/spring-cloud-openfeign/src/main/java/com/baeldung/cloud/openfeign/customizederrorhandling/client/ProductClient.java similarity index 70% rename from feign/src/main/java/com/baeldung/core/customizederrorhandling/client/ProductClient.java rename to spring-cloud-modules/spring-cloud-openfeign/src/main/java/com/baeldung/cloud/openfeign/customizederrorhandling/client/ProductClient.java index 113051722b..f668e8f2c8 100644 --- a/feign/src/main/java/com/baeldung/core/customizederrorhandling/client/ProductClient.java +++ b/spring-cloud-modules/spring-cloud-openfeign/src/main/java/com/baeldung/cloud/openfeign/customizederrorhandling/client/ProductClient.java @@ -1,12 +1,12 @@ -package com.baeldung.core.customizederrorhandling.client; +package com.baeldung.cloud.openfeign.customizederrorhandling.client; import org.springframework.cloud.openfeign.FeignClient; import org.springframework.web.bind.annotation.PathVariable; import org.springframework.web.bind.annotation.RequestMapping; import org.springframework.web.bind.annotation.RequestMethod; -import com.baeldung.core.customizederrorhandling.config.FeignConfig; -import com.baeldung.core.defaulterrorhandling.model.Product; +import com.baeldung.cloud.openfeign.customizederrorhandling.config.FeignConfig; +import com.baeldung.cloud.openfeign.defaulterrorhandling.model.Product; @FeignClient(name = "product-client-2", url = "http://localhost:8081/product/", configuration = FeignConfig.class) public interface ProductClient { diff --git a/feign/src/main/java/com/baeldung/core/customizederrorhandling/config/CustomErrorDecoder.java b/spring-cloud-modules/spring-cloud-openfeign/src/main/java/com/baeldung/cloud/openfeign/customizederrorhandling/config/CustomErrorDecoder.java similarity index 65% rename from feign/src/main/java/com/baeldung/core/customizederrorhandling/config/CustomErrorDecoder.java rename to spring-cloud-modules/spring-cloud-openfeign/src/main/java/com/baeldung/cloud/openfeign/customizederrorhandling/config/CustomErrorDecoder.java index 5466b61b3a..13e3a55dd7 100644 --- a/feign/src/main/java/com/baeldung/core/customizederrorhandling/config/CustomErrorDecoder.java +++ b/spring-cloud-modules/spring-cloud-openfeign/src/main/java/com/baeldung/cloud/openfeign/customizederrorhandling/config/CustomErrorDecoder.java @@ -1,8 +1,9 @@ -package com.baeldung.core.customizederrorhandling.config; +package com.baeldung.cloud.openfeign.customizederrorhandling.config; -import com.baeldung.core.customizederrorhandling.exception.ProductNotFoundException; -import com.baeldung.core.customizederrorhandling.exception.ProductServiceNotAvailableException; -import com.baeldung.core.exception.BadRequestException; + +import com.baeldung.cloud.openfeign.customizederrorhandling.exception.ProductNotFoundException; +import com.baeldung.cloud.openfeign.customizederrorhandling.exception.ProductServiceNotAvailableException; +import com.baeldung.cloud.openfeign.exception.BadRequestException; import feign.Response; import feign.codec.ErrorDecoder; diff --git a/feign/src/main/java/com/baeldung/core/customizederrorhandling/config/FeignConfig.java b/spring-cloud-modules/spring-cloud-openfeign/src/main/java/com/baeldung/cloud/openfeign/customizederrorhandling/config/FeignConfig.java similarity index 81% rename from feign/src/main/java/com/baeldung/core/customizederrorhandling/config/FeignConfig.java rename to spring-cloud-modules/spring-cloud-openfeign/src/main/java/com/baeldung/cloud/openfeign/customizederrorhandling/config/FeignConfig.java index 980b8b5b38..f013f48b64 100644 --- a/feign/src/main/java/com/baeldung/core/customizederrorhandling/config/FeignConfig.java +++ b/spring-cloud-modules/spring-cloud-openfeign/src/main/java/com/baeldung/cloud/openfeign/customizederrorhandling/config/FeignConfig.java @@ -1,4 +1,4 @@ -package com.baeldung.core.customizederrorhandling.config; +package com.baeldung.cloud.openfeign.customizederrorhandling.config; import org.springframework.context.annotation.Bean; diff --git a/feign/src/main/java/com/baeldung/core/customizederrorhandling/controller/ProductController.java b/spring-cloud-modules/spring-cloud-openfeign/src/main/java/com/baeldung/cloud/openfeign/customizederrorhandling/controller/ProductController.java similarity index 76% rename from feign/src/main/java/com/baeldung/core/customizederrorhandling/controller/ProductController.java rename to spring-cloud-modules/spring-cloud-openfeign/src/main/java/com/baeldung/cloud/openfeign/customizederrorhandling/controller/ProductController.java index 6d6f784e66..53458151f8 100644 --- a/feign/src/main/java/com/baeldung/core/customizederrorhandling/controller/ProductController.java +++ b/spring-cloud-modules/spring-cloud-openfeign/src/main/java/com/baeldung/cloud/openfeign/customizederrorhandling/controller/ProductController.java @@ -1,4 +1,4 @@ -package com.baeldung.core.customizederrorhandling.controller; +package com.baeldung.cloud.openfeign.customizederrorhandling.controller; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.web.bind.annotation.GetMapping; @@ -6,8 +6,8 @@ import org.springframework.web.bind.annotation.PathVariable; import org.springframework.web.bind.annotation.RequestMapping; import org.springframework.web.bind.annotation.RestController; -import com.baeldung.core.customizederrorhandling.client.ProductClient; -import com.baeldung.core.defaulterrorhandling.model.Product; +import com.baeldung.cloud.openfeign.customizederrorhandling.client.ProductClient; +import com.baeldung.cloud.openfeign.defaulterrorhandling.model.Product; @RestController("product_controller2") @RequestMapping(value = "myapp2") diff --git a/feign/src/main/java/com/baeldung/core/customizederrorhandling/exception/ErrorResponse.java b/spring-cloud-modules/spring-cloud-openfeign/src/main/java/com/baeldung/cloud/openfeign/customizederrorhandling/exception/ErrorResponse.java similarity index 94% rename from feign/src/main/java/com/baeldung/core/customizederrorhandling/exception/ErrorResponse.java rename to spring-cloud-modules/spring-cloud-openfeign/src/main/java/com/baeldung/cloud/openfeign/customizederrorhandling/exception/ErrorResponse.java index 6e739e5e40..d7ec783a8b 100644 --- a/feign/src/main/java/com/baeldung/core/customizederrorhandling/exception/ErrorResponse.java +++ b/spring-cloud-modules/spring-cloud-openfeign/src/main/java/com/baeldung/cloud/openfeign/customizederrorhandling/exception/ErrorResponse.java @@ -1,4 +1,4 @@ -package com.baeldung.core.customizederrorhandling.exception; +package com.baeldung.cloud.openfeign.customizederrorhandling.exception; import java.util.Date; diff --git a/feign/src/main/java/com/baeldung/core/customizederrorhandling/exception/ProductExceptionHandler.java b/spring-cloud-modules/spring-cloud-openfeign/src/main/java/com/baeldung/cloud/openfeign/customizederrorhandling/exception/ProductExceptionHandler.java similarity index 95% rename from feign/src/main/java/com/baeldung/core/customizederrorhandling/exception/ProductExceptionHandler.java rename to spring-cloud-modules/spring-cloud-openfeign/src/main/java/com/baeldung/cloud/openfeign/customizederrorhandling/exception/ProductExceptionHandler.java index c83d917570..80191ce427 100644 --- a/feign/src/main/java/com/baeldung/core/customizederrorhandling/exception/ProductExceptionHandler.java +++ b/spring-cloud-modules/spring-cloud-openfeign/src/main/java/com/baeldung/cloud/openfeign/customizederrorhandling/exception/ProductExceptionHandler.java @@ -1,4 +1,4 @@ -package com.baeldung.core.customizederrorhandling.exception; +package com.baeldung.cloud.openfeign.customizederrorhandling.exception; import org.springframework.http.HttpStatus; import org.springframework.http.ResponseEntity; diff --git a/feign/src/main/java/com/baeldung/core/customizederrorhandling/exception/ProductNotFoundException.java b/spring-cloud-modules/spring-cloud-openfeign/src/main/java/com/baeldung/cloud/openfeign/customizederrorhandling/exception/ProductNotFoundException.java similarity index 68% rename from feign/src/main/java/com/baeldung/core/customizederrorhandling/exception/ProductNotFoundException.java rename to spring-cloud-modules/spring-cloud-openfeign/src/main/java/com/baeldung/cloud/openfeign/customizederrorhandling/exception/ProductNotFoundException.java index fa993ce700..337cb89f7b 100644 --- a/feign/src/main/java/com/baeldung/core/customizederrorhandling/exception/ProductNotFoundException.java +++ b/spring-cloud-modules/spring-cloud-openfeign/src/main/java/com/baeldung/cloud/openfeign/customizederrorhandling/exception/ProductNotFoundException.java @@ -1,4 +1,4 @@ -package com.baeldung.core.customizederrorhandling.exception; +package com.baeldung.cloud.openfeign.customizederrorhandling.exception; public class ProductNotFoundException extends RuntimeException { diff --git a/feign/src/main/java/com/baeldung/core/customizederrorhandling/exception/ProductServiceNotAvailableException.java b/spring-cloud-modules/spring-cloud-openfeign/src/main/java/com/baeldung/cloud/openfeign/customizederrorhandling/exception/ProductServiceNotAvailableException.java similarity index 70% rename from feign/src/main/java/com/baeldung/core/customizederrorhandling/exception/ProductServiceNotAvailableException.java rename to spring-cloud-modules/spring-cloud-openfeign/src/main/java/com/baeldung/cloud/openfeign/customizederrorhandling/exception/ProductServiceNotAvailableException.java index 887d2cd91d..ce30f8c310 100644 --- a/feign/src/main/java/com/baeldung/core/customizederrorhandling/exception/ProductServiceNotAvailableException.java +++ b/spring-cloud-modules/spring-cloud-openfeign/src/main/java/com/baeldung/cloud/openfeign/customizederrorhandling/exception/ProductServiceNotAvailableException.java @@ -1,4 +1,4 @@ -package com.baeldung.core.customizederrorhandling.exception; +package com.baeldung.cloud.openfeign.customizederrorhandling.exception; public class ProductServiceNotAvailableException extends RuntimeException { diff --git a/feign/src/main/java/com/baeldung/core/defaulterrorhandling/client/ProductClient.java b/spring-cloud-modules/spring-cloud-openfeign/src/main/java/com/baeldung/cloud/openfeign/defaulterrorhandling/client/ProductClient.java similarity index 70% rename from feign/src/main/java/com/baeldung/core/defaulterrorhandling/client/ProductClient.java rename to spring-cloud-modules/spring-cloud-openfeign/src/main/java/com/baeldung/cloud/openfeign/defaulterrorhandling/client/ProductClient.java index 4eb435331d..2927024668 100644 --- a/feign/src/main/java/com/baeldung/core/defaulterrorhandling/client/ProductClient.java +++ b/spring-cloud-modules/spring-cloud-openfeign/src/main/java/com/baeldung/cloud/openfeign/defaulterrorhandling/client/ProductClient.java @@ -1,12 +1,12 @@ -package com.baeldung.core.defaulterrorhandling.client; +package com.baeldung.cloud.openfeign.defaulterrorhandling.client; import org.springframework.cloud.openfeign.FeignClient; import org.springframework.web.bind.annotation.PathVariable; import org.springframework.web.bind.annotation.RequestMapping; import org.springframework.web.bind.annotation.RequestMethod; -import com.baeldung.core.defaulterrorhandling.config.FeignConfig; -import com.baeldung.core.defaulterrorhandling.model.Product; +import com.baeldung.cloud.openfeign.defaulterrorhandling.config.FeignConfig; +import com.baeldung.cloud.openfeign.defaulterrorhandling.model.Product; @FeignClient(name = "product-client", url = "http://localhost:8084/product/", configuration = FeignConfig.class) public interface ProductClient { diff --git a/feign/src/main/java/com/baeldung/core/defaulterrorhandling/config/FeignConfig.java b/spring-cloud-modules/spring-cloud-openfeign/src/main/java/com/baeldung/cloud/openfeign/defaulterrorhandling/config/FeignConfig.java similarity index 74% rename from feign/src/main/java/com/baeldung/core/defaulterrorhandling/config/FeignConfig.java rename to spring-cloud-modules/spring-cloud-openfeign/src/main/java/com/baeldung/cloud/openfeign/defaulterrorhandling/config/FeignConfig.java index cef8cbb6d9..e10c33e311 100644 --- a/feign/src/main/java/com/baeldung/core/defaulterrorhandling/config/FeignConfig.java +++ b/spring-cloud-modules/spring-cloud-openfeign/src/main/java/com/baeldung/cloud/openfeign/defaulterrorhandling/config/FeignConfig.java @@ -1,4 +1,4 @@ -package com.baeldung.core.defaulterrorhandling.config; +package com.baeldung.cloud.openfeign.defaulterrorhandling.config; import org.springframework.context.annotation.Bean; diff --git a/feign/src/main/java/com/baeldung/core/defaulterrorhandling/controller/ProductController.java b/spring-cloud-modules/spring-cloud-openfeign/src/main/java/com/baeldung/cloud/openfeign/defaulterrorhandling/controller/ProductController.java similarity index 76% rename from feign/src/main/java/com/baeldung/core/defaulterrorhandling/controller/ProductController.java rename to spring-cloud-modules/spring-cloud-openfeign/src/main/java/com/baeldung/cloud/openfeign/defaulterrorhandling/controller/ProductController.java index 80f571f29a..b9fe879fbd 100644 --- a/feign/src/main/java/com/baeldung/core/defaulterrorhandling/controller/ProductController.java +++ b/spring-cloud-modules/spring-cloud-openfeign/src/main/java/com/baeldung/cloud/openfeign/defaulterrorhandling/controller/ProductController.java @@ -1,4 +1,4 @@ -package com.baeldung.core.defaulterrorhandling.controller; +package com.baeldung.cloud.openfeign.defaulterrorhandling.controller; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.web.bind.annotation.GetMapping; @@ -6,8 +6,8 @@ import org.springframework.web.bind.annotation.PathVariable; import org.springframework.web.bind.annotation.RequestMapping; import org.springframework.web.bind.annotation.RestController; -import com.baeldung.core.defaulterrorhandling.client.ProductClient; -import com.baeldung.core.defaulterrorhandling.model.Product; +import com.baeldung.cloud.openfeign.defaulterrorhandling.client.ProductClient; +import com.baeldung.cloud.openfeign.defaulterrorhandling.model.Product; @RestController("product_controller1") @RequestMapping(value ="myapp1") diff --git a/feign/src/main/java/com/baeldung/core/defaulterrorhandling/model/FormData.java b/spring-cloud-modules/spring-cloud-openfeign/src/main/java/com/baeldung/cloud/openfeign/defaulterrorhandling/model/FormData.java similarity index 67% rename from feign/src/main/java/com/baeldung/core/defaulterrorhandling/model/FormData.java rename to spring-cloud-modules/spring-cloud-openfeign/src/main/java/com/baeldung/cloud/openfeign/defaulterrorhandling/model/FormData.java index 6210451f2d..4b03a3e410 100644 --- a/feign/src/main/java/com/baeldung/core/defaulterrorhandling/model/FormData.java +++ b/spring-cloud-modules/spring-cloud-openfeign/src/main/java/com/baeldung/cloud/openfeign/defaulterrorhandling/model/FormData.java @@ -1,4 +1,4 @@ -package com.baeldung.core.defaulterrorhandling.model; +package com.baeldung.cloud.openfeign.defaulterrorhandling.model; import lombok.AllArgsConstructor; import lombok.Data; diff --git a/feign/src/main/java/com/baeldung/core/defaulterrorhandling/model/Product.java b/spring-cloud-modules/spring-cloud-openfeign/src/main/java/com/baeldung/cloud/openfeign/defaulterrorhandling/model/Product.java similarity index 82% rename from feign/src/main/java/com/baeldung/core/defaulterrorhandling/model/Product.java rename to spring-cloud-modules/spring-cloud-openfeign/src/main/java/com/baeldung/cloud/openfeign/defaulterrorhandling/model/Product.java index 35d860332e..25a1662c99 100644 --- a/feign/src/main/java/com/baeldung/core/defaulterrorhandling/model/Product.java +++ b/spring-cloud-modules/spring-cloud-openfeign/src/main/java/com/baeldung/cloud/openfeign/defaulterrorhandling/model/Product.java @@ -1,4 +1,4 @@ -package com.baeldung.core.defaulterrorhandling.model; +package com.baeldung.cloud.openfeign.defaulterrorhandling.model; public class Product { diff --git a/spring-cloud-modules/spring-cloud-openfeign/src/main/java/com/baeldung/cloud/openfeign/fileupload/config/FeignSupportConfig.java b/spring-cloud-modules/spring-cloud-openfeign/src/main/java/com/baeldung/cloud/openfeign/fileupload/config/FeignSupportConfig.java index 802077a3d7..bedcd32569 100644 --- a/spring-cloud-modules/spring-cloud-openfeign/src/main/java/com/baeldung/cloud/openfeign/fileupload/config/FeignSupportConfig.java +++ b/spring-cloud-modules/spring-cloud-openfeign/src/main/java/com/baeldung/cloud/openfeign/fileupload/config/FeignSupportConfig.java @@ -1,6 +1,5 @@ package com.baeldung.cloud.openfeign.fileupload.config; -import org.springframework.beans.factory.ObjectFactory; import org.springframework.boot.autoconfigure.http.HttpMessageConverters; import org.springframework.cloud.openfeign.support.SpringEncoder; import org.springframework.context.annotation.Bean; @@ -13,12 +12,7 @@ import feign.form.spring.SpringFormEncoder; public class FeignSupportConfig { @Bean public Encoder multipartFormEncoder() { - return new SpringFormEncoder(new SpringEncoder(new ObjectFactory() { - @Override - public HttpMessageConverters getObject() { - return new HttpMessageConverters(new RestTemplate().getMessageConverters()); - } - })); + return new SpringFormEncoder(new SpringEncoder(() -> new HttpMessageConverters(new RestTemplate().getMessageConverters()))); } @Bean diff --git a/spring-cloud-modules/spring-cloud-openfeign/src/main/java/com/baeldung/cloud/openfeign/fileupload/config/RetreiveMessageErrorDecoder.java b/spring-cloud-modules/spring-cloud-openfeign/src/main/java/com/baeldung/cloud/openfeign/fileupload/config/RetreiveMessageErrorDecoder.java index 5ebd7b6887..4324467712 100644 --- a/spring-cloud-modules/spring-cloud-openfeign/src/main/java/com/baeldung/cloud/openfeign/fileupload/config/RetreiveMessageErrorDecoder.java +++ b/spring-cloud-modules/spring-cloud-openfeign/src/main/java/com/baeldung/cloud/openfeign/fileupload/config/RetreiveMessageErrorDecoder.java @@ -12,9 +12,10 @@ import feign.codec.ErrorDecoder; public class RetreiveMessageErrorDecoder implements ErrorDecoder { private final ErrorDecoder errorDecoder = new Default(); + @Override public Exception decode(String methodKey, Response response) { - ExceptionMessage message = null; + ExceptionMessage message; try (InputStream bodyIs = response.body() .asInputStream()) { ObjectMapper mapper = new ObjectMapper(); diff --git a/feign/src/main/java/com/baeldung/core/fileupload/controller/FileController.java b/spring-cloud-modules/spring-cloud-openfeign/src/main/java/com/baeldung/cloud/openfeign/fileupload/controller/FileController.java similarity index 78% rename from feign/src/main/java/com/baeldung/core/fileupload/controller/FileController.java rename to spring-cloud-modules/spring-cloud-openfeign/src/main/java/com/baeldung/cloud/openfeign/fileupload/controller/FileController.java index 7ba4746979..5c6d6076b8 100644 --- a/feign/src/main/java/com/baeldung/core/fileupload/controller/FileController.java +++ b/spring-cloud-modules/spring-cloud-openfeign/src/main/java/com/baeldung/cloud/openfeign/fileupload/controller/FileController.java @@ -1,4 +1,4 @@ -package com.baeldung.core.fileupload.controller; +package com.baeldung.cloud.openfeign.fileupload.controller; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.web.bind.annotation.PostMapping; @@ -6,7 +6,7 @@ import org.springframework.web.bind.annotation.RequestPart; import org.springframework.web.bind.annotation.RestController; import org.springframework.web.multipart.MultipartFile; -import com.baeldung.core.fileupload.service.UploadService; +import com.baeldung.cloud.openfeign.fileupload.service.UploadService; @RestController public class FileController { @@ -16,7 +16,7 @@ public class FileController { @PostMapping(value = "/upload") public String handleFileUpload(@RequestPart(value = "file") MultipartFile file) { - return service.uploadFile(file); + return service.uploadFileWithFallbackFactory(file); } @PostMapping(value = "/upload-mannual-client") @@ -27,7 +27,7 @@ public class FileController { @PostMapping(value = "/upload-error") public String handleFileUploadError(@RequestPart(value = "file") MultipartFile file) { - return service.uploadFile(file); + return service.uploadFileWithFallbackFactory(file); } } \ No newline at end of file diff --git a/spring-cloud-modules/spring-cloud-openfeign/src/main/java/com/baeldung/cloud/openfeign/fileupload/service/FileUploadClientFallbackFactory.java b/spring-cloud-modules/spring-cloud-openfeign/src/main/java/com/baeldung/cloud/openfeign/fileupload/service/FileUploadClientFallbackFactory.java index 105be15192..9b717d17f1 100644 --- a/spring-cloud-modules/spring-cloud-openfeign/src/main/java/com/baeldung/cloud/openfeign/fileupload/service/FileUploadClientFallbackFactory.java +++ b/spring-cloud-modules/spring-cloud-openfeign/src/main/java/com/baeldung/cloud/openfeign/fileupload/service/FileUploadClientFallbackFactory.java @@ -11,20 +11,17 @@ import com.baeldung.cloud.openfeign.exception.NotFoundException; public class FileUploadClientFallbackFactory implements FallbackFactory { @Override public FileUploadClientWithFallbackFactory create(Throwable cause) { - return new FileUploadClientWithFallbackFactory() { - @Override - public String fileUpload(MultipartFile file) { - if (cause instanceof BadRequestException) { - return "Bad Request!!!"; - } - if (cause instanceof NotFoundException) { - return "Not Found!!!"; - } - if (cause instanceof Exception) { - return "Exception!!!"; - } - return "Successfully Uploaded file!!!"; + return file -> { + if (cause instanceof BadRequestException) { + return "Bad Request!!!"; } + if (cause instanceof NotFoundException) { + return "Not Found!!!"; + } + if (cause instanceof Exception) { + return "Exception!!!"; + } + return "Successfully Uploaded file!!!"; }; } } \ No newline at end of file diff --git a/feign/src/main/java/com/baeldung/core/fileupload/service/UploadClient.java b/spring-cloud-modules/spring-cloud-openfeign/src/main/java/com/baeldung/cloud/openfeign/fileupload/service/UploadClient.java similarity index 85% rename from feign/src/main/java/com/baeldung/core/fileupload/service/UploadClient.java rename to spring-cloud-modules/spring-cloud-openfeign/src/main/java/com/baeldung/cloud/openfeign/fileupload/service/UploadClient.java index 37b059d642..8f3ef7e421 100644 --- a/feign/src/main/java/com/baeldung/core/fileupload/service/UploadClient.java +++ b/spring-cloud-modules/spring-cloud-openfeign/src/main/java/com/baeldung/cloud/openfeign/fileupload/service/UploadClient.java @@ -1,4 +1,4 @@ -package com.baeldung.core.fileupload.service; +package com.baeldung.cloud.openfeign.fileupload.service; import org.springframework.cloud.openfeign.FeignClient; import org.springframework.http.MediaType; @@ -6,7 +6,7 @@ import org.springframework.web.bind.annotation.PostMapping; import org.springframework.web.bind.annotation.RequestPart; import org.springframework.web.multipart.MultipartFile; -import com.baeldung.core.fileupload.config.FeignSupportConfig; +import com.baeldung.cloud.openfeign.fileupload.config.FeignSupportConfig; @FeignClient(name = "file", url = "http://localhost:8081", configuration = FeignSupportConfig.class) public interface UploadClient { diff --git a/spring-cloud-modules/spring-cloud-openfeign/src/main/java/com/baeldung/cloud/openfeign/fileupload/service/UploadResource.java b/spring-cloud-modules/spring-cloud-openfeign/src/main/java/com/baeldung/cloud/openfeign/fileupload/service/UploadResource.java index 2d5090897d..26e658a7f0 100644 --- a/spring-cloud-modules/spring-cloud-openfeign/src/main/java/com/baeldung/cloud/openfeign/fileupload/service/UploadResource.java +++ b/spring-cloud-modules/spring-cloud-openfeign/src/main/java/com/baeldung/cloud/openfeign/fileupload/service/UploadResource.java @@ -9,7 +9,7 @@ import feign.Response; public interface UploadResource { - @RequestLine("POST /upload-error") + @RequestLine("POST /upload-file") @Headers("Content-Type: multipart/form-data") Response uploadFile(@Param("file") MultipartFile file); diff --git a/feign/src/test/java/com/baeldung/core/client/FormClientUnitTest.java b/spring-cloud-modules/spring-cloud-openfeign/src/test/java/com/baeldung/cloud/openfeign/client/FormClientUnitTest.java similarity index 95% rename from feign/src/test/java/com/baeldung/core/client/FormClientUnitTest.java rename to spring-cloud-modules/spring-cloud-openfeign/src/test/java/com/baeldung/cloud/openfeign/client/FormClientUnitTest.java index b9c263b60b..f374e8e0bd 100644 --- a/feign/src/test/java/com/baeldung/core/client/FormClientUnitTest.java +++ b/spring-cloud-modules/spring-cloud-openfeign/src/test/java/com/baeldung/cloud/openfeign/client/FormClientUnitTest.java @@ -1,4 +1,4 @@ -package com.baeldung.core.client; +package com.baeldung.cloud.openfeign.client; import static com.github.tomakehurst.wiremock.client.WireMock.aResponse; import static com.github.tomakehurst.wiremock.client.WireMock.configureFor; @@ -20,7 +20,7 @@ import org.springframework.boot.test.context.SpringBootTest; import org.springframework.http.HttpStatus; import org.springframework.test.context.junit.jupiter.SpringExtension; -import com.baeldung.core.defaulterrorhandling.model.FormData; +import com.baeldung.cloud.openfeign.defaulterrorhandling.model.FormData; import com.github.tomakehurst.wiremock.WireMockServer; import com.github.tomakehurst.wiremock.client.WireMock; diff --git a/feign/src/test/java/com/baeldung/core/customizederrorhandling/client/ProductClientUnitTest.java b/spring-cloud-modules/spring-cloud-openfeign/src/test/java/com/baeldung/cloud/openfeign/customizederrorhandling/client/ProductClientUnitTest.java similarity index 85% rename from feign/src/test/java/com/baeldung/core/customizederrorhandling/client/ProductClientUnitTest.java rename to spring-cloud-modules/spring-cloud-openfeign/src/test/java/com/baeldung/cloud/openfeign/customizederrorhandling/client/ProductClientUnitTest.java index ed5f18eb3f..5e715265aa 100644 --- a/feign/src/test/java/com/baeldung/core/customizederrorhandling/client/ProductClientUnitTest.java +++ b/spring-cloud-modules/spring-cloud-openfeign/src/test/java/com/baeldung/cloud/openfeign/customizederrorhandling/client/ProductClientUnitTest.java @@ -1,4 +1,4 @@ -package com.baeldung.core.customizederrorhandling.client; +package com.baeldung.cloud.openfeign.customizederrorhandling.client; import static com.github.tomakehurst.wiremock.client.WireMock.aResponse; import static com.github.tomakehurst.wiremock.client.WireMock.configureFor; @@ -15,9 +15,9 @@ import org.springframework.beans.factory.annotation.Autowired; import org.springframework.boot.test.context.SpringBootTest; import org.springframework.test.context.junit4.SpringRunner; -import com.baeldung.core.ExampleApplication; -import com.baeldung.core.customizederrorhandling.exception.ProductNotFoundException; -import com.baeldung.core.customizederrorhandling.exception.ProductServiceNotAvailableException; +import com.baeldung.cloud.openfeign.ExampleApplication; +import com.baeldung.cloud.openfeign.customizederrorhandling.exception.ProductNotFoundException; +import com.baeldung.cloud.openfeign.customizederrorhandling.exception.ProductServiceNotAvailableException; import com.github.tomakehurst.wiremock.WireMockServer; @RunWith(SpringRunner.class) diff --git a/feign/src/test/java/com/baeldung/core/customizederrorhandling/controller/ProductControllerUnitTest.java b/spring-cloud-modules/spring-cloud-openfeign/src/test/java/com/baeldung/cloud/openfeign/customizederrorhandling/controller/ProductControllerUnitTest.java similarity index 94% rename from feign/src/test/java/com/baeldung/core/customizederrorhandling/controller/ProductControllerUnitTest.java rename to spring-cloud-modules/spring-cloud-openfeign/src/test/java/com/baeldung/cloud/openfeign/customizederrorhandling/controller/ProductControllerUnitTest.java index 04fd68d3e4..d46c6fd86f 100644 --- a/feign/src/test/java/com/baeldung/core/customizederrorhandling/controller/ProductControllerUnitTest.java +++ b/spring-cloud-modules/spring-cloud-openfeign/src/test/java/com/baeldung/cloud/openfeign/customizederrorhandling/controller/ProductControllerUnitTest.java @@ -1,4 +1,4 @@ -package com.baeldung.core.customizederrorhandling.controller; +package com.baeldung.cloud.openfeign.customizederrorhandling.controller; import static com.github.tomakehurst.wiremock.client.WireMock.aResponse; import static com.github.tomakehurst.wiremock.client.WireMock.configureFor; @@ -21,8 +21,8 @@ import org.springframework.test.context.junit4.SpringRunner; import org.springframework.test.web.servlet.MockMvc; import org.springframework.test.web.servlet.MvcResult; -import com.baeldung.core.customizederrorhandling.client.ProductClient; -import com.baeldung.core.customizederrorhandling.exception.ErrorResponse; +import com.baeldung.cloud.openfeign.customizederrorhandling.client.ProductClient; +import com.baeldung.cloud.openfeign.customizederrorhandling.exception.ErrorResponse; import com.fasterxml.jackson.databind.ObjectMapper; import com.github.tomakehurst.wiremock.WireMockServer; import com.github.tomakehurst.wiremock.client.WireMock; diff --git a/feign/src/test/java/com/baeldung/core/defaulterrorhandling/client/ProductClientUnitTest.java b/spring-cloud-modules/spring-cloud-openfeign/src/test/java/com/baeldung/cloud/openfeign/defaulterrorhandling/client/ProductClientUnitTest.java similarity index 93% rename from feign/src/test/java/com/baeldung/core/defaulterrorhandling/client/ProductClientUnitTest.java rename to spring-cloud-modules/spring-cloud-openfeign/src/test/java/com/baeldung/cloud/openfeign/defaulterrorhandling/client/ProductClientUnitTest.java index 8a9fa94074..efbe7a3771 100644 --- a/feign/src/test/java/com/baeldung/core/defaulterrorhandling/client/ProductClientUnitTest.java +++ b/spring-cloud-modules/spring-cloud-openfeign/src/test/java/com/baeldung/cloud/openfeign/defaulterrorhandling/client/ProductClientUnitTest.java @@ -1,4 +1,4 @@ -package com.baeldung.core.defaulterrorhandling.client; +package com.baeldung.cloud.openfeign.defaulterrorhandling.client; import static com.github.tomakehurst.wiremock.client.WireMock.aResponse; import static com.github.tomakehurst.wiremock.client.WireMock.configureFor; @@ -17,8 +17,8 @@ import org.springframework.boot.test.context.SpringBootTest; import org.springframework.http.HttpStatus; import org.springframework.test.context.junit4.SpringRunner; -import com.baeldung.core.ExampleApplication; -import com.baeldung.core.defaulterrorhandling.model.Product; +import com.baeldung.cloud.openfeign.ExampleApplication; +import com.baeldung.cloud.openfeign.defaulterrorhandling.model.Product; import com.github.tomakehurst.wiremock.WireMockServer; import feign.FeignException; diff --git a/feign/src/test/java/com/baeldung/core/defaulterrorhandling/controller/ProductControllerUnitTest.java b/spring-cloud-modules/spring-cloud-openfeign/src/test/java/com/baeldung/cloud/openfeign/defaulterrorhandling/controller/ProductControllerUnitTest.java similarity index 95% rename from feign/src/test/java/com/baeldung/core/defaulterrorhandling/controller/ProductControllerUnitTest.java rename to spring-cloud-modules/spring-cloud-openfeign/src/test/java/com/baeldung/cloud/openfeign/defaulterrorhandling/controller/ProductControllerUnitTest.java index 798ee9035c..7271aa2672 100644 --- a/feign/src/test/java/com/baeldung/core/defaulterrorhandling/controller/ProductControllerUnitTest.java +++ b/spring-cloud-modules/spring-cloud-openfeign/src/test/java/com/baeldung/cloud/openfeign/defaulterrorhandling/controller/ProductControllerUnitTest.java @@ -1,4 +1,4 @@ -package com.baeldung.core.defaulterrorhandling.controller; +package com.baeldung.cloud.openfeign.defaulterrorhandling.controller; import static com.github.tomakehurst.wiremock.client.WireMock.aResponse; import static com.github.tomakehurst.wiremock.client.WireMock.configureFor; @@ -21,7 +21,7 @@ import org.springframework.test.context.junit4.SpringRunner; import org.springframework.test.web.servlet.MockMvc; import org.springframework.web.servlet.config.annotation.EnableWebMvc; -import com.baeldung.core.defaulterrorhandling.client.ProductClient; +import com.baeldung.cloud.openfeign.defaulterrorhandling.client.ProductClient; import com.github.tomakehurst.wiremock.WireMockServer; import com.github.tomakehurst.wiremock.client.WireMock; diff --git a/feign/src/test/java/com/baeldung/core/defaulterrorhandling/controller/TestControllerAdvice.java b/spring-cloud-modules/spring-cloud-openfeign/src/test/java/com/baeldung/cloud/openfeign/defaulterrorhandling/controller/TestControllerAdvice.java similarity index 88% rename from feign/src/test/java/com/baeldung/core/defaulterrorhandling/controller/TestControllerAdvice.java rename to spring-cloud-modules/spring-cloud-openfeign/src/test/java/com/baeldung/cloud/openfeign/defaulterrorhandling/controller/TestControllerAdvice.java index dfd82ed07d..4f06a82a35 100644 --- a/feign/src/test/java/com/baeldung/core/defaulterrorhandling/controller/TestControllerAdvice.java +++ b/spring-cloud-modules/spring-cloud-openfeign/src/test/java/com/baeldung/cloud/openfeign/defaulterrorhandling/controller/TestControllerAdvice.java @@ -1,4 +1,4 @@ -package com.baeldung.core.defaulterrorhandling.controller; +package com.baeldung.cloud.openfeign.defaulterrorhandling.controller; import org.springframework.http.HttpStatus; import org.springframework.http.ResponseEntity; From e8fe289f85d7869286751c724c7267060c48b9da Mon Sep 17 00:00:00 2001 From: ACHRAF TAITAI <43656331+achraftt@users.noreply.github.com> Date: Tue, 28 Mar 2023 14:09:47 +0200 Subject: [PATCH 22/85] =?UTF-8?q?Finding=20the=20Minimum=20Value=20in=20an?= =?UTF-8?q?=20ArrayList=20along=20with=20the=20Index=20Number=E2=80=A6=20(?= =?UTF-8?q?#13498)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit * Finding the Minimum Value in an ArrayList along with the Index Number in Java * BAEL-6147: rename test unit method * adapt test method name --- .../com/baeldung/java8/Java8MaxMinUnitTest.java | 14 ++++++++++++++ 1 file changed, 14 insertions(+) diff --git a/core-java-modules/core-java-collections-list/src/test/java/com/baeldung/java8/Java8MaxMinUnitTest.java b/core-java-modules/core-java-collections-list/src/test/java/com/baeldung/java8/Java8MaxMinUnitTest.java index c2cc39c685..e634fddab8 100644 --- a/core-java-modules/core-java-collections-list/src/test/java/com/baeldung/java8/Java8MaxMinUnitTest.java +++ b/core-java-modules/core-java-collections-list/src/test/java/com/baeldung/java8/Java8MaxMinUnitTest.java @@ -6,6 +6,7 @@ import com.baeldung.java_8_features.Person; import org.junit.Test; import java.util.Arrays; +import java.util.Collections; import java.util.Comparator; import java.util.List; import java.util.NoSuchElementException; @@ -71,4 +72,17 @@ public class Java8MaxMinUnitTest { assertEquals(bugatti, maxBySpeed); } + + @Test + public void givenIntegerList_whenGetMinAndIndex_thenSuccess() { + final List listOfIntegers = Arrays.asList(11, 13, 9, 20, 7, 3, 30); + final Integer expectedMinValue = 3; + final Integer expectedMinIndex = 5; + + Integer minValue = Collections.min(listOfIntegers); + Integer minIndex = listOfIntegers.indexOf(minValue); + + assertEquals(minValue, expectedMinValue); + assertEquals(minIndex, expectedMinIndex); + } } From 4050f47183f6da871c255642892d6c619edef6d1 Mon Sep 17 00:00:00 2001 From: Tapan Avasthi Date: Wed, 29 Mar 2023 04:15:00 +0530 Subject: [PATCH 23/85] BAEL-5170: Expose Kafka Consumer Metrics via Actuator Endpoint (#13723) Co-authored-by: Tapan Avasthi --- spring-kafka/pom.xml | 10 +++ .../monitoring/LagAnalyzerApplication.java | 3 +- .../service/LagAnalyzerService.java | 61 +++++++++++-------- .../service/LiveLagAnalyzerService.java | 4 +- .../simulation/ConsumerSimulator.java | 7 +-- .../simulation/KafkaConsumerConfig.java | 45 +++++++------- .../simulation/ProducerSimulator.java | 11 ++-- .../src/main/resources/application.properties | 10 +++ 8 files changed, 92 insertions(+), 59 deletions(-) diff --git a/spring-kafka/pom.xml b/spring-kafka/pom.xml index 7b0bb0a8b7..c013be32e3 100644 --- a/spring-kafka/pom.xml +++ b/spring-kafka/pom.xml @@ -23,6 +23,16 @@ org.springframework.boot spring-boot-starter-web + + org.springframework.boot + spring-boot-starter-actuator + 3.0.5 + + + io.micrometer + micrometer-registry-prometheus + 1.10.5 + org.springframework.kafka spring-kafka diff --git a/spring-kafka/src/main/java/com/baeldung/monitoring/LagAnalyzerApplication.java b/spring-kafka/src/main/java/com/baeldung/monitoring/LagAnalyzerApplication.java index 9275151d50..d305af8c87 100644 --- a/spring-kafka/src/main/java/com/baeldung/monitoring/LagAnalyzerApplication.java +++ b/spring-kafka/src/main/java/com/baeldung/monitoring/LagAnalyzerApplication.java @@ -10,6 +10,7 @@ public class LagAnalyzerApplication { public static void main(String[] args) { SpringApplication.run(LagAnalyzerApplication.class, args); - while (true) ; + while (true) + ; } } diff --git a/spring-kafka/src/main/java/com/baeldung/monitoring/service/LagAnalyzerService.java b/spring-kafka/src/main/java/com/baeldung/monitoring/service/LagAnalyzerService.java index b046f0b2c4..f8898b60d8 100644 --- a/spring-kafka/src/main/java/com/baeldung/monitoring/service/LagAnalyzerService.java +++ b/spring-kafka/src/main/java/com/baeldung/monitoring/service/LagAnalyzerService.java @@ -1,6 +1,7 @@ package com.baeldung.monitoring.service; import com.baeldung.monitoring.util.MonitoringUtil; + import org.apache.kafka.clients.admin.AdminClient; import org.apache.kafka.clients.admin.AdminClientConfig; import org.apache.kafka.clients.admin.ListConsumerGroupOffsetsResult; @@ -27,36 +28,38 @@ public class LagAnalyzerService { private final KafkaConsumer consumer; @Autowired - public LagAnalyzerService( - @Value("${monitor.kafka.bootstrap.config}") String bootstrapServerConfig) { + public LagAnalyzerService(@Value("${monitor.kafka.bootstrap.config}") String bootstrapServerConfig) { adminClient = getAdminClient(bootstrapServerConfig); consumer = getKafkaConsumer(bootstrapServerConfig); } - public Map analyzeLag( - String groupId) - throws ExecutionException, InterruptedException { + public Map analyzeLag(String groupId) + throws ExecutionException, InterruptedException { Map consumerGrpOffsets = getConsumerGrpOffsets(groupId); Map producerOffsets = getProducerOffsets(consumerGrpOffsets); Map lags = computeLags(consumerGrpOffsets, producerOffsets); for (Map.Entry lagEntry : lags.entrySet()) { - String topic = lagEntry.getKey().topic(); - int partition = lagEntry.getKey().partition(); + String topic = lagEntry.getKey() + .topic(); + int partition = lagEntry.getKey() + .partition(); Long lag = lagEntry.getValue(); - LOGGER.info("Time={} | Lag for topic = {}, partition = {} is {}", - MonitoringUtil.time(), - topic, - partition, - lag); + LOGGER.info("Time={} | Lag for topic = {}, partition = {}, groupId = {} is {}", + MonitoringUtil.time(), + topic, + partition, + groupId, + lag); } return lags; } public Map getConsumerGrpOffsets(String groupId) - throws ExecutionException, InterruptedException { + throws ExecutionException, InterruptedException { ListConsumerGroupOffsetsResult info = adminClient.listConsumerGroupOffsets(groupId); - Map metadataMap - = info.partitionsToOffsetAndMetadata().get(); + Map metadataMap = info + .partitionsToOffsetAndMetadata() + .get(); Map groupOffset = new HashMap<>(); for (Map.Entry entry : metadataMap.entrySet()) { TopicPartition key = entry.getKey(); @@ -66,8 +69,7 @@ public class LagAnalyzerService { return groupOffset; } - private Map getProducerOffsets( - Map consumerGrpOffset) { + private Map getProducerOffsets(Map consumerGrpOffset) { List topicPartitions = new LinkedList<>(); for (Map.Entry entry : consumerGrpOffset.entrySet()) { TopicPartition key = entry.getKey(); @@ -77,9 +79,9 @@ public class LagAnalyzerService { } public Map computeLags( - Map consumerGrpOffsets, - Map producerOffsets) { - Map lags = new HashMap<>(); + Map consumerGrpOffsets, + Map producerOffsets) { + Map lags = new HashMap<>(); for (Map.Entry entry : consumerGrpOffsets.entrySet()) { Long producerOffset = producerOffsets.get(entry.getKey()); Long consumerOffset = consumerGrpOffsets.get(entry.getKey()); @@ -91,15 +93,24 @@ public class LagAnalyzerService { private AdminClient getAdminClient(String bootstrapServerConfig) { Properties config = new Properties(); - config.put(AdminClientConfig.BOOTSTRAP_SERVERS_CONFIG, bootstrapServerConfig); + config.put( + AdminClientConfig.BOOTSTRAP_SERVERS_CONFIG, + bootstrapServerConfig); return AdminClient.create(config); } - private KafkaConsumer getKafkaConsumer(String bootstrapServerConfig) { + private KafkaConsumer getKafkaConsumer( + String bootstrapServerConfig) { Properties properties = new Properties(); - properties.setProperty(ConsumerConfig.BOOTSTRAP_SERVERS_CONFIG, bootstrapServerConfig); - properties.setProperty(ConsumerConfig.KEY_DESERIALIZER_CLASS_CONFIG, StringDeserializer.class.getName()); - properties.setProperty(ConsumerConfig.VALUE_DESERIALIZER_CLASS_CONFIG, StringDeserializer.class.getName()); + properties.setProperty( + ConsumerConfig.BOOTSTRAP_SERVERS_CONFIG, + bootstrapServerConfig); + properties.setProperty( + ConsumerConfig.KEY_DESERIALIZER_CLASS_CONFIG, + StringDeserializer.class.getName()); + properties.setProperty( + ConsumerConfig.VALUE_DESERIALIZER_CLASS_CONFIG, + StringDeserializer.class.getName()); return new KafkaConsumer<>(properties); } } diff --git a/spring-kafka/src/main/java/com/baeldung/monitoring/service/LiveLagAnalyzerService.java b/spring-kafka/src/main/java/com/baeldung/monitoring/service/LiveLagAnalyzerService.java index a20b9e9a0c..7035bf73bd 100644 --- a/spring-kafka/src/main/java/com/baeldung/monitoring/service/LiveLagAnalyzerService.java +++ b/spring-kafka/src/main/java/com/baeldung/monitoring/service/LiveLagAnalyzerService.java @@ -15,8 +15,8 @@ public class LiveLagAnalyzerService { @Autowired public LiveLagAnalyzerService( - LagAnalyzerService lagAnalyzerService, - @Value(value = "${monitor.kafka.consumer.groupid}") String groupId) { + LagAnalyzerService lagAnalyzerService, + @Value(value = "${monitor.kafka.consumer.groupid}") String groupId) { this.lagAnalyzerService = lagAnalyzerService; this.groupId = groupId; } diff --git a/spring-kafka/src/main/java/com/baeldung/monitoring/simulation/ConsumerSimulator.java b/spring-kafka/src/main/java/com/baeldung/monitoring/simulation/ConsumerSimulator.java index 2d376432e5..171c17a282 100644 --- a/spring-kafka/src/main/java/com/baeldung/monitoring/simulation/ConsumerSimulator.java +++ b/spring-kafka/src/main/java/com/baeldung/monitoring/simulation/ConsumerSimulator.java @@ -7,10 +7,9 @@ import org.springframework.stereotype.Service; @Service public class ConsumerSimulator { - @KafkaListener( - topics = "${monitor.topic.name}", - containerFactory = "kafkaListenerContainerFactory", - autoStartup = "${monitor.consumer.simulate}") + @KafkaListener(topics = "${monitor.topic.name}", + containerFactory = "kafkaListenerContainerFactory", + autoStartup = "${monitor.consumer.simulate}") public void listenGroup(String message) throws InterruptedException { Thread.sleep(10L); } diff --git a/spring-kafka/src/main/java/com/baeldung/monitoring/simulation/KafkaConsumerConfig.java b/spring-kafka/src/main/java/com/baeldung/monitoring/simulation/KafkaConsumerConfig.java index a4a8847bcf..9d5160e713 100644 --- a/spring-kafka/src/main/java/com/baeldung/monitoring/simulation/KafkaConsumerConfig.java +++ b/spring-kafka/src/main/java/com/baeldung/monitoring/simulation/KafkaConsumerConfig.java @@ -2,53 +2,54 @@ package com.baeldung.monitoring.simulation; import org.apache.kafka.clients.consumer.ConsumerConfig; import org.apache.kafka.common.serialization.StringDeserializer; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.beans.factory.annotation.Qualifier; import org.springframework.beans.factory.annotation.Value; import org.springframework.context.annotation.Bean; -import org.springframework.context.annotation.Configuration; -import org.springframework.context.annotation.PropertySource; import org.springframework.kafka.annotation.EnableKafka; import org.springframework.kafka.config.ConcurrentKafkaListenerContainerFactory; import org.springframework.kafka.core.ConsumerFactory; import org.springframework.kafka.core.DefaultKafkaConsumerFactory; +import org.springframework.kafka.core.MicrometerConsumerListener; +import org.springframework.stereotype.Component; import java.util.HashMap; import java.util.Map; +import io.micrometer.core.instrument.MeterRegistry; + @EnableKafka -@Configuration +@Component public class KafkaConsumerConfig { @Value(value = "${monitor.kafka.bootstrap.config}") private String bootstrapAddress; @Value(value = "${monitor.kafka.consumer.groupid}") private String groupId; - @Value(value = "${monitor.kafka.consumer.groupid.simulate}") - private String simulateGroupId; - @Value(value = "${monitor.producer.simulate}") - private boolean enabled; - public ConsumerFactory consumerFactory(String groupId) { + @Autowired + private MeterRegistry meterRegistry; + + @Bean + public ConsumerFactory consumerFactory() { Map props = new HashMap<>(); props.put(ConsumerConfig.BOOTSTRAP_SERVERS_CONFIG, bootstrapAddress); - if (enabled) { - props.put(ConsumerConfig.GROUP_ID_CONFIG, groupId); - } else { - props.put(ConsumerConfig.GROUP_ID_CONFIG, simulateGroupId); - } props.put(ConsumerConfig.KEY_DESERIALIZER_CLASS_CONFIG, StringDeserializer.class); props.put(ConsumerConfig.VALUE_DESERIALIZER_CLASS_CONFIG, StringDeserializer.class); props.put(ConsumerConfig.AUTO_COMMIT_INTERVAL_MS_CONFIG, 0); - return new DefaultKafkaConsumerFactory<>(props); + props.put(ConsumerConfig.GROUP_ID_CONFIG, groupId); + DefaultKafkaConsumerFactory consumerFactory = new DefaultKafkaConsumerFactory<>(props); + consumerFactory.addListener(new MicrometerConsumerListener<>(this.meterRegistry)); + return consumerFactory; } @Bean - public ConcurrentKafkaListenerContainerFactory kafkaListenerContainerFactory() { - ConcurrentKafkaListenerContainerFactory factory = new ConcurrentKafkaListenerContainerFactory<>(); - if (enabled) { - factory.setConsumerFactory(consumerFactory(groupId)); - } else { - factory.setConsumerFactory(consumerFactory(simulateGroupId)); - } - return factory; + public ConcurrentKafkaListenerContainerFactory + kafkaListenerContainerFactory(@Qualifier("consumerFactory") ConsumerFactory consumerFactory) { + ConcurrentKafkaListenerContainerFactory listenerContainerFactory = + new ConcurrentKafkaListenerContainerFactory<>(); + listenerContainerFactory.setConsumerFactory(consumerFactory); + return listenerContainerFactory; } } diff --git a/spring-kafka/src/main/java/com/baeldung/monitoring/simulation/ProducerSimulator.java b/spring-kafka/src/main/java/com/baeldung/monitoring/simulation/ProducerSimulator.java index 30476ff7ec..ad4a006809 100644 --- a/spring-kafka/src/main/java/com/baeldung/monitoring/simulation/ProducerSimulator.java +++ b/spring-kafka/src/main/java/com/baeldung/monitoring/simulation/ProducerSimulator.java @@ -23,10 +23,9 @@ public class ProducerSimulator { private final boolean enabled; @Autowired - public ProducerSimulator( - KafkaTemplate kafkaTemplate, - @Value(value = "${monitor.topic.name}") String topicName, - @Value(value = "${monitor.producer.simulate}") String enabled) { + public ProducerSimulator(KafkaTemplate kafkaTemplate, + @Value(value = "${monitor.topic.name}") String topicName, + @Value(value = "${monitor.producer.simulate}") String enabled) { this.kafkaTemplate = kafkaTemplate; this.topicName = topicName; this.enabled = BooleanUtils.toBoolean(enabled); @@ -37,7 +36,9 @@ public class ProducerSimulator { if (enabled) { if (endTime.after(new Date())) { String message = "msg-" + time(); - SendResult result = kafkaTemplate.send(topicName, message).get(); + SendResult result = kafkaTemplate + .send(topicName, message) + .get(); } } } diff --git a/spring-kafka/src/main/resources/application.properties b/spring-kafka/src/main/resources/application.properties index c57537e2af..1a639a43fc 100644 --- a/spring-kafka/src/main/resources/application.properties +++ b/spring-kafka/src/main/resources/application.properties @@ -1,3 +1,4 @@ +server.port=8081 spring.kafka.bootstrap-servers=localhost:9092 message.topic.name=baeldung long.message.topic.name=longMessage @@ -15,3 +16,12 @@ monitor.consumer.simulate=true monitor.kafka.consumer.groupid.simulate=baeldungGrpSimulate test.topic=testtopic1 + + +management.endpoints.web.base-path=/actuator +management.endpoints.web.exposure.include=* +management.endpoint.health.show-details=always +management.endpoint.metrics.enabled=true +management.endpoint.prometheus.enabled=true + +spring.jmx.enabled=false From b5ab6ad906d351e507d4251fd99ad54f1dcff0c8 Mon Sep 17 00:00:00 2001 From: Abhinav Pandey Date: Thu, 30 Mar 2023 07:53:46 +0530 Subject: [PATCH 24/85] BAEL-5936 - OffsetDateTime serialization with Jackson (#13680) * BAEL-5936 - OffsetDateTime serialization with Jackson * BAEL-5936 - Extracting methods and adding tests * BAEL-5936 - Renaming test file * BAEL-5936 - Changing test method names * BAEL-5936 - removes implements serializable --- .../com/baeldung/offsetdatetime/Main.java | 50 +++++++++++++++++++ .../OffsetDateTimeDeserializer.java | 24 +++++++++ .../OffsetDateTimeSerializer.java | 23 +++++++++ .../com/baeldung/offsetdatetime/User.java | 18 +++++++ .../baeldung/offsetdatetime/MainUnitTest.java | 23 +++++++++ jackson-modules/pom.xml | 5 -- 6 files changed, 138 insertions(+), 5 deletions(-) create mode 100644 jackson-modules/jackson-custom-conversions/src/main/java/com/baeldung/offsetdatetime/Main.java create mode 100644 jackson-modules/jackson-custom-conversions/src/main/java/com/baeldung/offsetdatetime/OffsetDateTimeDeserializer.java create mode 100644 jackson-modules/jackson-custom-conversions/src/main/java/com/baeldung/offsetdatetime/OffsetDateTimeSerializer.java create mode 100644 jackson-modules/jackson-custom-conversions/src/main/java/com/baeldung/offsetdatetime/User.java create mode 100644 jackson-modules/jackson-custom-conversions/src/test/java/com/baeldung/offsetdatetime/MainUnitTest.java diff --git a/jackson-modules/jackson-custom-conversions/src/main/java/com/baeldung/offsetdatetime/Main.java b/jackson-modules/jackson-custom-conversions/src/main/java/com/baeldung/offsetdatetime/Main.java new file mode 100644 index 0000000000..eb82c3c4c8 --- /dev/null +++ b/jackson-modules/jackson-custom-conversions/src/main/java/com/baeldung/offsetdatetime/Main.java @@ -0,0 +1,50 @@ +package com.baeldung.offsetdatetime; + +import com.fasterxml.jackson.core.JsonProcessingException; +import com.fasterxml.jackson.databind.ObjectMapper; +import com.fasterxml.jackson.databind.SerializationFeature; +import com.fasterxml.jackson.databind.module.SimpleModule; +import com.fasterxml.jackson.datatype.jsr310.JavaTimeModule; + +import java.time.OffsetDateTime; + +public class Main { + public static void main(String[] args) throws JsonProcessingException { + System.out.println(serializeUser()); + System.out.println(customSerialize()); + System.out.println(customDeserialize()); + } + + static String serializeUser() throws JsonProcessingException { + ObjectMapper objectMapper = new ObjectMapper(); + objectMapper.disable(SerializationFeature.WRITE_DATES_AS_TIMESTAMPS); + objectMapper.registerModule(new JavaTimeModule()); + + User user = new User(); + user.setCreatedAt(OffsetDateTime.parse("2021-09-30T15:30:00+01:00")); + + return objectMapper.writeValueAsString(user); + } + + static String customSerialize() throws JsonProcessingException { + ObjectMapper objectMapper = new ObjectMapper(); + + objectMapper.registerModule(new SimpleModule().addSerializer(OffsetDateTime.class, new OffsetDateTimeSerializer())); + + User user = new User(); + user.setCreatedAt(OffsetDateTime.parse("2021-09-30T15:30:00+01:00")); + + return objectMapper.writeValueAsString(user); + } + + static String customDeserialize() throws JsonProcessingException { + ObjectMapper objectMapper = new ObjectMapper(); + + objectMapper.registerModule(new SimpleModule().addDeserializer(OffsetDateTime.class, new OffsetDateTimeDeserializer())); + + String jsonString = "{\"createdAt\":\"30-09-2021 15:30:00 +01:00\"}"; + User returnedUser = objectMapper.readValue(jsonString, User.class); + + return returnedUser.getCreatedAt().toString(); + } +} diff --git a/jackson-modules/jackson-custom-conversions/src/main/java/com/baeldung/offsetdatetime/OffsetDateTimeDeserializer.java b/jackson-modules/jackson-custom-conversions/src/main/java/com/baeldung/offsetdatetime/OffsetDateTimeDeserializer.java new file mode 100644 index 0000000000..a76d598b8f --- /dev/null +++ b/jackson-modules/jackson-custom-conversions/src/main/java/com/baeldung/offsetdatetime/OffsetDateTimeDeserializer.java @@ -0,0 +1,24 @@ +package com.baeldung.offsetdatetime; + +import com.fasterxml.jackson.core.JsonParser; +import com.fasterxml.jackson.databind.DeserializationContext; +import com.fasterxml.jackson.databind.JsonDeserializer; + +import java.io.IOException; +import java.time.OffsetDateTime; +import java.time.format.DateTimeFormatter; + +public class OffsetDateTimeDeserializer extends JsonDeserializer { + private static final DateTimeFormatter DATE_TIME_FORMATTER = DateTimeFormatter + .ofPattern("dd-MM-yyyy HH:mm:ss XXX"); + + @Override + public OffsetDateTime deserialize(JsonParser jsonParser, DeserializationContext deserializationContext) + throws IOException { + String dateAsString = jsonParser.getText(); + if (dateAsString == null) { + throw new IOException("OffsetDateTime argument is null."); + } + return OffsetDateTime.parse(dateAsString, DATE_TIME_FORMATTER); + } +} \ No newline at end of file diff --git a/jackson-modules/jackson-custom-conversions/src/main/java/com/baeldung/offsetdatetime/OffsetDateTimeSerializer.java b/jackson-modules/jackson-custom-conversions/src/main/java/com/baeldung/offsetdatetime/OffsetDateTimeSerializer.java new file mode 100644 index 0000000000..8821f37e8e --- /dev/null +++ b/jackson-modules/jackson-custom-conversions/src/main/java/com/baeldung/offsetdatetime/OffsetDateTimeSerializer.java @@ -0,0 +1,23 @@ +package com.baeldung.offsetdatetime; + +import com.fasterxml.jackson.core.JsonGenerator; +import com.fasterxml.jackson.databind.JsonSerializer; +import com.fasterxml.jackson.databind.SerializerProvider; + +import java.io.IOException; +import java.time.OffsetDateTime; +import java.time.format.DateTimeFormatter; + +public class OffsetDateTimeSerializer extends JsonSerializer { + private static final DateTimeFormatter DATE_TIME_FORMATTER = DateTimeFormatter + .ofPattern("dd-MM-yyyy HH:mm:ss XXX"); + + @Override + public void serialize(OffsetDateTime value, JsonGenerator jsonGenerator, SerializerProvider serializerProvider) + throws IOException { + if (value == null) { + throw new IOException("OffsetDateTime argument is null."); + } + jsonGenerator.writeString(DATE_TIME_FORMATTER.format(value)); + } +} \ No newline at end of file diff --git a/jackson-modules/jackson-custom-conversions/src/main/java/com/baeldung/offsetdatetime/User.java b/jackson-modules/jackson-custom-conversions/src/main/java/com/baeldung/offsetdatetime/User.java new file mode 100644 index 0000000000..44978cac87 --- /dev/null +++ b/jackson-modules/jackson-custom-conversions/src/main/java/com/baeldung/offsetdatetime/User.java @@ -0,0 +1,18 @@ +package com.baeldung.offsetdatetime; + +import java.time.OffsetDateTime; + +public class User { + private OffsetDateTime createdAt; + + public User() { + } + + public OffsetDateTime getCreatedAt() { + return createdAt; + } + + public void setCreatedAt(OffsetDateTime createdAt) { + this.createdAt = createdAt; + } +} \ No newline at end of file diff --git a/jackson-modules/jackson-custom-conversions/src/test/java/com/baeldung/offsetdatetime/MainUnitTest.java b/jackson-modules/jackson-custom-conversions/src/test/java/com/baeldung/offsetdatetime/MainUnitTest.java new file mode 100644 index 0000000000..553adc8fdf --- /dev/null +++ b/jackson-modules/jackson-custom-conversions/src/test/java/com/baeldung/offsetdatetime/MainUnitTest.java @@ -0,0 +1,23 @@ +package com.baeldung.offsetdatetime; + +import com.fasterxml.jackson.core.JsonProcessingException; +import org.junit.jupiter.api.Assertions; +import org.junit.jupiter.api.Test; + +class MainUnitTest { + + @Test + void givenUser_whenSerialized_thenCreatedDateIsSerialized() throws JsonProcessingException { + Assertions.assertEquals("{\"createdAt\":\"2021-09-30T15:30:00+01:00\"}", Main.serializeUser()); + } + + @Test + void givenUser_whenCustomSerialized_thenCreatedDateIsSerialized() throws JsonProcessingException { + Assertions.assertEquals("{\"createdAt\":\"30-09-2021 15:30:00 +01:00\"}", Main.customSerialize()); + } + + @Test + void givenUser_whenCustomDeserialized_thenCreatedDateIsDeserialized() throws JsonProcessingException { + Assertions.assertEquals("2021-09-30T15:30+01:00", Main.customDeserialize()); + } +} \ No newline at end of file diff --git a/jackson-modules/pom.xml b/jackson-modules/pom.xml index 4163d1912f..531d5628f7 100644 --- a/jackson-modules/pom.xml +++ b/jackson-modules/pom.xml @@ -24,11 +24,6 @@ - - com.fasterxml.jackson.core - jackson-databind - ${jackson.version} - com.fasterxml.jackson.dataformat From 99d11182ab79fd0c5ba8e1eceee551ec0a1372ac Mon Sep 17 00:00:00 2001 From: Balamurugan Date: Thu, 30 Mar 2023 06:15:36 +0100 Subject: [PATCH 25/85] BAEL-5988: Added properties for fixing failing tests for R2DBCExampleApplicationIntegrationTest (#13738) --- persistence-modules/r2dbc/src/test/resources/application.yml | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/persistence-modules/r2dbc/src/test/resources/application.yml b/persistence-modules/r2dbc/src/test/resources/application.yml index 0903bed6fb..f99f02c9c1 100644 --- a/persistence-modules/r2dbc/src/test/resources/application.yml +++ b/persistence-modules/r2dbc/src/test/resources/application.yml @@ -1,6 +1,8 @@ # R2DBC Test configuration r2dbc: url: r2dbc:h2:mem://./testdb + user: local + password: local server: port: 8080 @@ -24,6 +26,7 @@ spring: user: local password: local locations: classpath:db/h2/migration - + main: + allow-bean-definition-overriding: true From a2918883b3371ec71bab181ce1b9629a61cca1aa Mon Sep 17 00:00:00 2001 From: edizor <113095366+edizor@users.noreply.github.com> Date: Thu, 30 Mar 2023 21:12:49 +0800 Subject: [PATCH 26/85] Update README.md [skip ci] --- spring-security-modules/spring-security-saml/README.md | 1 + 1 file changed, 1 insertion(+) diff --git a/spring-security-modules/spring-security-saml/README.md b/spring-security-modules/spring-security-saml/README.md index 271b29632e..b6a11ed91b 100644 --- a/spring-security-modules/spring-security-saml/README.md +++ b/spring-security-modules/spring-security-saml/README.md @@ -1,3 +1,4 @@ ### Relevant Articles: - [A Guide to SAML with Spring Security](https://www.baeldung.com/spring-security-saml) +- [SAML with Spring Boot and Spring Security](https://www.baeldung.com/spring-security-saml) From f63cc893c3046a669c67b5e5e78b1f7dae935c41 Mon Sep 17 00:00:00 2001 From: edizor <113095366+edizor@users.noreply.github.com> Date: Thu, 30 Mar 2023 22:05:34 +0800 Subject: [PATCH 27/85] Update README.md [skip ci] --- persistence-modules/spring-jpa-2/README.md | 1 + 1 file changed, 1 insertion(+) diff --git a/persistence-modules/spring-jpa-2/README.md b/persistence-modules/spring-jpa-2/README.md index f9f259cdfa..c1068b6a39 100644 --- a/persistence-modules/spring-jpa-2/README.md +++ b/persistence-modules/spring-jpa-2/README.md @@ -7,4 +7,5 @@ - [The DAO with Spring and Hibernate](https://www.baeldung.com/persistence-layer-with-spring-and-hibernate) - [Simplify the DAO with Spring and Java Generics](https://www.baeldung.com/simplifying-the-data-access-layer-with-spring-and-java-generics) - [Multitenancy With Spring Data JPA](https://www.baeldung.com/multitenancy-with-spring-data-jpa) +- [Remove Entity with Many-to-Many Relationship in JPA](https://www.baeldung.com/jpa-remove-entity-many-to-many) - More articles: [[<-- prev]](/spring-jpa) From 7762d40b7445bbd76851634be0173e717232fd92 Mon Sep 17 00:00:00 2001 From: edizor <113095366+edizor@users.noreply.github.com> Date: Thu, 30 Mar 2023 22:10:01 +0800 Subject: [PATCH 28/85] Update README.md [skip ci] --- jackson-modules/jackson-core/README.md | 1 + 1 file changed, 1 insertion(+) diff --git a/jackson-modules/jackson-core/README.md b/jackson-modules/jackson-core/README.md index 0aa3dc5aef..d34a9e8bf7 100644 --- a/jackson-modules/jackson-core/README.md +++ b/jackson-modules/jackson-core/README.md @@ -14,3 +14,4 @@ The "REST With Spring" Classes: http://bit.ly/restwithspring - [Inheritance with Jackson](https://www.baeldung.com/jackson-inheritance) - [Working with Tree Model Nodes in Jackson](https://www.baeldung.com/jackson-json-node-tree-model) - [Get all the Keys in a JSON String Using JsonNode](https://www.baeldung.com/java-jsonnode-get-keys) +- [Difference Between asText() and toString() in JsonNode](https://www.baeldung.com/java-jsonnode-astext-vs-tostring) From 64a07a6802dbcb55beb3cccd5920c08708481110 Mon Sep 17 00:00:00 2001 From: edizor <113095366+edizor@users.noreply.github.com> Date: Thu, 30 Mar 2023 22:14:12 +0800 Subject: [PATCH 29/85] Update README.md [skip ci] --- core-java-modules/core-java-date-operations-3/README.md | 1 + 1 file changed, 1 insertion(+) diff --git a/core-java-modules/core-java-date-operations-3/README.md b/core-java-modules/core-java-date-operations-3/README.md index 944ab4bd1b..0d36f9c8a2 100644 --- a/core-java-modules/core-java-date-operations-3/README.md +++ b/core-java-modules/core-java-date-operations-3/README.md @@ -5,4 +5,5 @@ This module contains articles about date operations in Java. - [Create Date From Unix Timestamp in Java](https://www.baeldung.com/java-date-unix-timestamp) - [Convert java.util.Date to java.sql.Date](https://www.baeldung.com/java-convert-util-date-to-sql) +- [How to Determine Date of the First Day of the Week Using LocalDate in Java](https://www.baeldung.com/java-first-day-of-the-week) - [[<-- Prev]](/core-java-modules/core-java-date-operations-2) From 544446fa32a98d66e58e420a544a7d893b12114e Mon Sep 17 00:00:00 2001 From: edizor <113095366+edizor@users.noreply.github.com> Date: Thu, 30 Mar 2023 22:22:08 +0800 Subject: [PATCH 30/85] Update README.md [skip ci] --- jenkins-modules/jenkins-jobs/README.md | 1 + 1 file changed, 1 insertion(+) diff --git a/jenkins-modules/jenkins-jobs/README.md b/jenkins-modules/jenkins-jobs/README.md index f58761997e..e6de0d57e0 100644 --- a/jenkins-modules/jenkins-jobs/README.md +++ b/jenkins-modules/jenkins-jobs/README.md @@ -4,3 +4,4 @@ - [Jenkins Pipeline – Change to Another Folder](https://www.baeldung.com/ops/jenkins-pipeline-change-to-another-folder) - [How to Stop a Zombie Job on Jenkins Without Restarting the Server?](https://www.baeldung.com/ops/stop-zombie-job-on-jenkins-without-restarting-the-server) - [Running Stages in Parallel With Jenkins Workflow / Pipeline](https://www.baeldung.com/ops/running-stages-in-parallel-jenkins-workflow-pipeline) +- [Skip a Stage in a Jenkins Pipeline](https://www.baeldung.com/ops/jenkins-pipeline-skip-stage) From 2e0475372bc2fcfd5996fe5d3cf6ed685d77cc63 Mon Sep 17 00:00:00 2001 From: edizor <113095366+edizor@users.noreply.github.com> Date: Thu, 30 Mar 2023 22:30:42 +0800 Subject: [PATCH 31/85] Update README.md [skip ci] --- core-java-modules/core-java-streams-4/README.md | 1 + 1 file changed, 1 insertion(+) diff --git a/core-java-modules/core-java-streams-4/README.md b/core-java-modules/core-java-streams-4/README.md index c6717ec5fe..4175fb1f70 100644 --- a/core-java-modules/core-java-streams-4/README.md +++ b/core-java-modules/core-java-streams-4/README.md @@ -10,3 +10,4 @@ - [Understanding the Difference Between Stream.of() and IntStream.range()](https://www.baeldung.com/java-stream-of-and-intstream-range) - [Check if Object Is an Array in Java](https://www.baeldung.com/java-check-if-object-is-an-array) - [Mapping an Array of Integers to Strings Using Java Streams](https://www.baeldung.com/java-stream-integer-array-to-strings) +- [Difference Between parallelStream() and stream().parallel() in Java](https://www.baeldung.com/java-parallelstream-vs-stream-parallel) From e310fe84da7d5108415cfbd04d00131669ef77fd Mon Sep 17 00:00:00 2001 From: anuragkumawat Date: Thu, 30 Mar 2023 21:53:07 +0530 Subject: [PATCH 32/85] Move articles from spring-core-6 module to other spring-boot modules (#13722) * Move articles from spring-core-6 module to other spring-boot modules * JAVA-19559 Move articles from spring-core-6 module to other spring-boot-3 modules * JAVA-19559 Minor spacing change * JAVA-19559 Revert Minor spacing change --- spring-boot-modules/spring-boot-3/README.md | 1 + spring-boot-modules/spring-boot-3/pom.xml | 16 +- .../java/com/baeldung/httpinterface/Book.java | 0 .../baeldung/httpinterface/BooksClient.java | 0 .../baeldung/httpinterface/BooksService.java | 4 +- .../BooksServiceMockServerUnitTest.java | 0 .../BooksServiceMockitoUnitTest.java | 0 .../httpinterface/MyServiceException.java | 0 .../spring-boot-properties-3/README.md | 2 + .../envvariables/BaeldungProperties.java | 40 ++-- .../baeldung/envvariables/MyController.java | 120 +++++----- .../src/main/resources/application.properties | 7 +- .../MyControllerIntegrationTest.java | 72 +++--- spring-core-6/README.md | 3 +- spring-core-6/pom.xml | 15 -- .../src/main/resources/application.properties | 4 - .../BooksServiceMockServerTest.java | 217 ------------------ .../BooksServiceMockitoTest.java | 88 ------- 18 files changed, 143 insertions(+), 446 deletions(-) rename {spring-core-6 => spring-boot-modules/spring-boot-3}/src/main/java/com/baeldung/httpinterface/Book.java (100%) rename {spring-core-6 => spring-boot-modules/spring-boot-3}/src/main/java/com/baeldung/httpinterface/BooksClient.java (100%) rename {spring-core-6 => spring-boot-modules/spring-boot-3}/src/main/java/com/baeldung/httpinterface/BooksService.java (85%) create mode 100644 spring-boot-modules/spring-boot-3/src/test/java/com/baeldung/httpinterface/BooksServiceMockServerUnitTest.java create mode 100644 spring-boot-modules/spring-boot-3/src/test/java/com/baeldung/httpinterface/BooksServiceMockitoUnitTest.java rename {spring-core-6 => spring-boot-modules/spring-boot-3}/src/test/java/com/baeldung/httpinterface/MyServiceException.java (100%) rename {spring-core-6 => spring-boot-modules/spring-boot-properties-3}/src/main/java/com/baeldung/envvariables/BaeldungProperties.java (86%) rename {spring-core-6 => spring-boot-modules/spring-boot-properties-3}/src/main/java/com/baeldung/envvariables/MyController.java (94%) rename {spring-core-6 => spring-boot-modules/spring-boot-properties-3}/src/test/java/com/baeldung/envvariables/MyControllerIntegrationTest.java (95%) delete mode 100644 spring-core-6/src/test/java/com/baeldung/httpinterface/BooksServiceMockServerTest.java delete mode 100644 spring-core-6/src/test/java/com/baeldung/httpinterface/BooksServiceMockitoTest.java diff --git a/spring-boot-modules/spring-boot-3/README.md b/spring-boot-modules/spring-boot-3/README.md index 22a3311cfd..be95ce2830 100644 --- a/spring-boot-modules/spring-boot-3/README.md +++ b/spring-boot-modules/spring-boot-3/README.md @@ -5,3 +5,4 @@ - [Singleton Design Pattern vs Singleton Beans in Spring Boot](https://www.baeldung.com/spring-boot-singleton-vs-beans) - [Migrate Application From Spring Boot 2 to Spring Boot 3](https://www.baeldung.com/spring-boot-3-migration) - [Using Java Records with JPA](https://www.baeldung.com/spring-jpa-java-records) +- [HTTP Interface in Spring 6](https://www.baeldung.com/spring-6-http-interface) diff --git a/spring-boot-modules/spring-boot-3/pom.xml b/spring-boot-modules/spring-boot-3/pom.xml index 685df233ba..03740e805f 100644 --- a/spring-boot-modules/spring-boot-3/pom.xml +++ b/spring-boot-modules/spring-boot-3/pom.xml @@ -32,6 +32,20 @@ org.springframework.boot spring-boot-starter-data-jpa + + org.springframework.boot + spring-boot-starter-webflux + + + org.mock-server + mockserver-netty + ${mockserver.version} + + + org.mock-server + mockserver-client-java + ${mockserver.version} + com.h2database h2 @@ -125,7 +139,7 @@ 2.0.0 3.0.0-M7 com.baeldung.sample.TodoApplication - + 5.14.0 \ No newline at end of file diff --git a/spring-core-6/src/main/java/com/baeldung/httpinterface/Book.java b/spring-boot-modules/spring-boot-3/src/main/java/com/baeldung/httpinterface/Book.java similarity index 100% rename from spring-core-6/src/main/java/com/baeldung/httpinterface/Book.java rename to spring-boot-modules/spring-boot-3/src/main/java/com/baeldung/httpinterface/Book.java diff --git a/spring-core-6/src/main/java/com/baeldung/httpinterface/BooksClient.java b/spring-boot-modules/spring-boot-3/src/main/java/com/baeldung/httpinterface/BooksClient.java similarity index 100% rename from spring-core-6/src/main/java/com/baeldung/httpinterface/BooksClient.java rename to spring-boot-modules/spring-boot-3/src/main/java/com/baeldung/httpinterface/BooksClient.java diff --git a/spring-core-6/src/main/java/com/baeldung/httpinterface/BooksService.java b/spring-boot-modules/spring-boot-3/src/main/java/com/baeldung/httpinterface/BooksService.java similarity index 85% rename from spring-core-6/src/main/java/com/baeldung/httpinterface/BooksService.java rename to spring-boot-modules/spring-boot-3/src/main/java/com/baeldung/httpinterface/BooksService.java index a9cf6ec58a..a70d412dd2 100644 --- a/spring-core-6/src/main/java/com/baeldung/httpinterface/BooksService.java +++ b/spring-boot-modules/spring-boot-3/src/main/java/com/baeldung/httpinterface/BooksService.java @@ -15,12 +15,12 @@ interface BooksService { List getBooks(); @GetExchange("/books/{id}") - Book getBook(@PathVariable long id); + Book getBook(@PathVariable("id") long id); @PostExchange("/books") Book saveBook(@RequestBody Book book); @DeleteExchange("/books/{id}") - ResponseEntity deleteBook(@PathVariable long id); + ResponseEntity deleteBook(@PathVariable("id") long id); } diff --git a/spring-boot-modules/spring-boot-3/src/test/java/com/baeldung/httpinterface/BooksServiceMockServerUnitTest.java b/spring-boot-modules/spring-boot-3/src/test/java/com/baeldung/httpinterface/BooksServiceMockServerUnitTest.java new file mode 100644 index 0000000000..e69de29bb2 diff --git a/spring-boot-modules/spring-boot-3/src/test/java/com/baeldung/httpinterface/BooksServiceMockitoUnitTest.java b/spring-boot-modules/spring-boot-3/src/test/java/com/baeldung/httpinterface/BooksServiceMockitoUnitTest.java new file mode 100644 index 0000000000..e69de29bb2 diff --git a/spring-core-6/src/test/java/com/baeldung/httpinterface/MyServiceException.java b/spring-boot-modules/spring-boot-3/src/test/java/com/baeldung/httpinterface/MyServiceException.java similarity index 100% rename from spring-core-6/src/test/java/com/baeldung/httpinterface/MyServiceException.java rename to spring-boot-modules/spring-boot-3/src/test/java/com/baeldung/httpinterface/MyServiceException.java diff --git a/spring-boot-modules/spring-boot-properties-3/README.md b/spring-boot-modules/spring-boot-properties-3/README.md index 77c6815649..37b63abb84 100644 --- a/spring-boot-modules/spring-boot-properties-3/README.md +++ b/spring-boot-modules/spring-boot-properties-3/README.md @@ -10,3 +10,5 @@ - [Load Spring Boot Properties From a JSON File](https://www.baeldung.com/spring-boot-json-properties) - [IntelliJ – Cannot Resolve Spring Boot Configuration Properties Error](https://www.baeldung.com/intellij-resolve-spring-boot-configuration-properties) - [Log Properties in a Spring Boot Application](https://www.baeldung.com/spring-boot-log-properties) +- [Using Environment Variables in Spring Boot’s application.properties](https://www.baeldung.com/spring-boot-properties-env-variables) +- More articles: [[<-- prev]](../spring-boot-properties-2) diff --git a/spring-core-6/src/main/java/com/baeldung/envvariables/BaeldungProperties.java b/spring-boot-modules/spring-boot-properties-3/src/main/java/com/baeldung/envvariables/BaeldungProperties.java similarity index 86% rename from spring-core-6/src/main/java/com/baeldung/envvariables/BaeldungProperties.java rename to spring-boot-modules/spring-boot-properties-3/src/main/java/com/baeldung/envvariables/BaeldungProperties.java index a41ac7a509..0e6e05a3c2 100644 --- a/spring-core-6/src/main/java/com/baeldung/envvariables/BaeldungProperties.java +++ b/spring-boot-modules/spring-boot-properties-3/src/main/java/com/baeldung/envvariables/BaeldungProperties.java @@ -1,20 +1,20 @@ -package com.baeldung.envvariables.valueinjection; - -import org.springframework.boot.context.properties.ConfigurationProperties; -import org.springframework.stereotype.Component; - -@Component -@ConfigurationProperties(prefix = "baeldung") -public class BaeldungProperties { - - private String presentation; - - public String getPresentation() { - return presentation; - } - - public void setPresentation(String presentation) { - this.presentation = presentation; - } - -} +package com.baeldung.envvariables; + +import org.springframework.boot.context.properties.ConfigurationProperties; +import org.springframework.stereotype.Component; + +@Component +@ConfigurationProperties(prefix = "baeldung") +public class BaeldungProperties { + + private String presentation; + + public String getPresentation() { + return presentation; + } + + public void setPresentation(String presentation) { + this.presentation = presentation; + } + +} diff --git a/spring-core-6/src/main/java/com/baeldung/envvariables/MyController.java b/spring-boot-modules/spring-boot-properties-3/src/main/java/com/baeldung/envvariables/MyController.java similarity index 94% rename from spring-core-6/src/main/java/com/baeldung/envvariables/MyController.java rename to spring-boot-modules/spring-boot-properties-3/src/main/java/com/baeldung/envvariables/MyController.java index 503ee47157..6afe9f2de1 100644 --- a/spring-core-6/src/main/java/com/baeldung/envvariables/MyController.java +++ b/spring-boot-modules/spring-boot-properties-3/src/main/java/com/baeldung/envvariables/MyController.java @@ -1,60 +1,60 @@ -package com.baeldung.envvariables.valueinjection; - -import org.springframework.beans.factory.annotation.Autowired; -import org.springframework.beans.factory.annotation.Value; -import org.springframework.core.env.Environment; -import org.springframework.web.bind.annotation.GetMapping; -import org.springframework.web.bind.annotation.RestController; - -@RestController -public class MyController { - - @Value("${environment.name}") - private String environmentName; - - @Value("${java.home.and.environment}") - private String javaHomeAndEnvironmentName; - - @Value("${thispropertydoesnotexist}") - private String nonExistentProperty; - - @Value("${baeldung.presentation}") - private String baeldungPresentation; - - @Autowired - private Environment environment; - - @Autowired - private BaeldungProperties baeldungProperties; - - @GetMapping("/environment_name") - String getEnvironmentName_FromEnvironmentVariables() { - return environmentName; - } - - @GetMapping("/java_home_and_environment") - String getJavaHomeAndEnvironmentName_FromEnvironmentVariables() { - return javaHomeAndEnvironmentName; - } - - @GetMapping("non_existent_property") - String getNonexistentProperty_FromEnvironmentVariables() { - return nonExistentProperty; - } - - @GetMapping("baeldung_presentation_from_value") - String getBaeldungPresentation_FromValue() { - return baeldungPresentation; - } - - @GetMapping("baeldung_presentation_from_environment") - String getBaeldungPresentation_FromEnvironment() { - return environment.getProperty("baeldung.presentation"); - } - - @GetMapping("baeldung_configuration_properties") - String getBaeldungPresentation_FromConfigurationProperties() { - return baeldungProperties.getPresentation(); - } - -} +package com.baeldung.envvariables; + +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.beans.factory.annotation.Value; +import org.springframework.core.env.Environment; +import org.springframework.web.bind.annotation.GetMapping; +import org.springframework.web.bind.annotation.RestController; + +@RestController +public class MyController { + + @Value("${environment.name}") + private String environmentName; + + @Value("${java.home.and.environment}") + private String javaHomeAndEnvironmentName; + + @Value("${thispropertydoesnotexist}") + private String nonExistentProperty; + + @Value("${baeldung.presentation}") + private String baeldungPresentation; + + @Autowired + private Environment environment; + + @Autowired + private BaeldungProperties baeldungProperties; + + @GetMapping("/environment_name") + String getEnvironmentName_FromEnvironmentVariables() { + return environmentName; + } + + @GetMapping("/java_home_and_environment") + String getJavaHomeAndEnvironmentName_FromEnvironmentVariables() { + return javaHomeAndEnvironmentName; + } + + @GetMapping("non_existent_property") + String getNonexistentProperty_FromEnvironmentVariables() { + return nonExistentProperty; + } + + @GetMapping("baeldung_presentation_from_value") + String getBaeldungPresentation_FromValue() { + return baeldungPresentation; + } + + @GetMapping("baeldung_presentation_from_environment") + String getBaeldungPresentation_FromEnvironment() { + return environment.getProperty("baeldung.presentation"); + } + + @GetMapping("baeldung_configuration_properties") + String getBaeldungPresentation_FromConfigurationProperties() { + return baeldungProperties.getPresentation(); + } + +} diff --git a/spring-boot-modules/spring-boot-properties-3/src/main/resources/application.properties b/spring-boot-modules/spring-boot-properties-3/src/main/resources/application.properties index a079837942..541183a186 100644 --- a/spring-boot-modules/spring-boot-properties-3/src/main/resources/application.properties +++ b/spring-boot-modules/spring-boot-properties-3/src/main/resources/application.properties @@ -26,4 +26,9 @@ spring.config.activate.on-profile=multidocument-prod spring.datasource.password=password spring.datasource.url=jdbc:h2:prod spring.datasource.username=prodUser -bael.property=prodValue \ No newline at end of file +bael.property=prodValue +#--- +environment.name=${OS} +java.home.and.environment=${JAVA_HOME}+${OS} +not.existing.system.property=${thispropertydoesnotexist} +baeldung.presentation=${HELLO_BAELDUNG}. Java is installed in the folder: ${JAVA_HOME} \ No newline at end of file diff --git a/spring-core-6/src/test/java/com/baeldung/envvariables/MyControllerIntegrationTest.java b/spring-boot-modules/spring-boot-properties-3/src/test/java/com/baeldung/envvariables/MyControllerIntegrationTest.java similarity index 95% rename from spring-core-6/src/test/java/com/baeldung/envvariables/MyControllerIntegrationTest.java rename to spring-boot-modules/spring-boot-properties-3/src/test/java/com/baeldung/envvariables/MyControllerIntegrationTest.java index b3ee2c7c46..527acd5dfc 100644 --- a/spring-core-6/src/test/java/com/baeldung/envvariables/MyControllerIntegrationTest.java +++ b/spring-boot-modules/spring-boot-properties-3/src/test/java/com/baeldung/envvariables/MyControllerIntegrationTest.java @@ -1,36 +1,36 @@ -package com.baeldung.envvariables.valueinjection; - -import org.springframework.beans.factory.annotation.Autowired; -import org.springframework.boot.test.autoconfigure.web.servlet.AutoConfigureMockMvc; -import org.springframework.boot.test.context.SpringBootTest; -import org.springframework.test.web.servlet.MockMvc; - -@SpringBootTest(classes = MyController.class) -@AutoConfigureMockMvc -public class MyControllerIntegrationTest { - - @Autowired - private MockMvc mockMvc; - - /** NB : these tests are commented out because they are environment dependent - * If you want to run one of them on your machine, follow the instruction above it - * - * expects the value of your system environment property 'OS' (it is already defined at least in Windows_NT) - @Test void givenExistingSystemProperty_whenInjected_thenHasSystemPropertyValue() throws Exception { - mockMvc.perform(get("/environment_name")) - .andExpect(content().string(equalTo("Windows_NT"))); - } - - * expects the value of the JAVA_HOME environment variable (you need to define it if you haven't yet), with a + and the 'OS' environment property in the end - @Test void givenCombinationOfSystemPropertyAndEnvironmentVariable_whenInjected_thenHasExpectedValue() throws Exception { - mockMvc.perform(get("/java_home_and_environment")) - .andExpect(content().string(equalTo("C:\\Program Files\\Java\\jdk-11.0.14+Windows_NT"))); - } - - * expects the content to be ${thispropertydoesnotexist} ; if you have defined an environment property called thispropertydoesnotexist, it would fail - @Test void givenNonExistentProperty_whenInjected_thenKeepsTheStringValue() throws Exception { - mockMvc.perform(get("/non_existent_property")) - .andExpect(content().string(equalTo("${thispropertydoesnotexist}"))); - } - */ -} +package com.baeldung.envvariables; + +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.boot.test.autoconfigure.web.servlet.AutoConfigureMockMvc; +import org.springframework.boot.test.context.SpringBootTest; +import org.springframework.test.web.servlet.MockMvc; + +@SpringBootTest(classes = MyController.class) +@AutoConfigureMockMvc +public class MyControllerIntegrationTest { + + @Autowired + private MockMvc mockMvc; + + /** NB : these tests are commented out because they are environment dependent + * If you want to run one of them on your machine, follow the instruction above it + * + * expects the value of your system environment property 'OS' (it is already defined at least in Windows_NT) + @Test void givenExistingSystemProperty_whenInjected_thenHasSystemPropertyValue() throws Exception { + mockMvc.perform(get("/environment_name")) + .andExpect(content().string(equalTo("Windows_NT"))); + } + + * expects the value of the JAVA_HOME environment variable (you need to define it if you haven't yet), with a + and the 'OS' environment property in the end + @Test void givenCombinationOfSystemPropertyAndEnvironmentVariable_whenInjected_thenHasExpectedValue() throws Exception { + mockMvc.perform(get("/java_home_and_environment")) + .andExpect(content().string(equalTo("C:\\Program Files\\Java\\jdk-11.0.14+Windows_NT"))); + } + + * expects the content to be ${thispropertydoesnotexist} ; if you have defined an environment property called thispropertydoesnotexist, it would fail + @Test void givenNonExistentProperty_whenInjected_thenKeepsTheStringValue() throws Exception { + mockMvc.perform(get("/non_existent_property")) + .andExpect(content().string(equalTo("${thispropertydoesnotexist}"))); + } + */ +} diff --git a/spring-core-6/README.md b/spring-core-6/README.md index af9fd7e32c..1879ff9a68 100644 --- a/spring-core-6/README.md +++ b/spring-core-6/README.md @@ -1,6 +1,5 @@ ### Relevant Articles: -- [Using Environment Variables in Spring Boot’s application.properties](https://www.baeldung.com/spring-boot-properties-env-variables) - [Reinitialize Singleton Bean in Spring Context](https://www.baeldung.com/spring-reinitialize-singleton-bean) -- [HTTP Interface in Spring 6](https://www.baeldung.com/spring-6-http-interface) - [Getting the Current ApplicationContext in Spring](https://www.baeldung.com/spring-get-current-applicationcontext) +- More articles: [[<-- prev]](../spring-core-5) \ No newline at end of file diff --git a/spring-core-6/pom.xml b/spring-core-6/pom.xml index a3dda0374f..cc494b3a57 100644 --- a/spring-core-6/pom.xml +++ b/spring-core-6/pom.xml @@ -21,20 +21,6 @@ org.springframework.boot spring-boot-starter-web - - org.springframework.boot - spring-boot-starter-webflux - - - org.mock-server - mockserver-netty - ${mockserver.version} - - - org.mock-server - mockserver-client-java - ${mockserver.version} - org.springframework.boot spring-boot-starter-test @@ -104,7 +90,6 @@ UTF-8 17 17 - 5.14.0 \ No newline at end of file diff --git a/spring-core-6/src/main/resources/application.properties b/spring-core-6/src/main/resources/application.properties index 28a65dce32..6545cd1097 100644 --- a/spring-core-6/src/main/resources/application.properties +++ b/spring-core-6/src/main/resources/application.properties @@ -1,5 +1 @@ -environment.name=${OS} -java.home.and.environment=${JAVA_HOME}+${OS} -not.existing.system.property=${thispropertydoesnotexist} -baeldung.presentation=${HELLO_BAELDUNG}. Java is installed in the folder: ${JAVA_HOME} config.file.path=./spring-core-6/src/main/resources/config.properties \ No newline at end of file diff --git a/spring-core-6/src/test/java/com/baeldung/httpinterface/BooksServiceMockServerTest.java b/spring-core-6/src/test/java/com/baeldung/httpinterface/BooksServiceMockServerTest.java deleted file mode 100644 index 22e00c16ae..0000000000 --- a/spring-core-6/src/test/java/com/baeldung/httpinterface/BooksServiceMockServerTest.java +++ /dev/null @@ -1,217 +0,0 @@ -package com.baeldung.httpinterface; - -import org.apache.http.HttpException; -import org.apache.http.HttpStatus; -import org.junit.jupiter.api.AfterAll; -import org.junit.jupiter.api.BeforeAll; -import org.junit.jupiter.api.Test; -import org.mockserver.client.MockServerClient; -import org.mockserver.integration.ClientAndServer; -import org.mockserver.configuration.Configuration; - -import java.io.IOException; -import java.net.ServerSocket; -import java.util.List; - -import org.mockserver.model.HttpRequest; -import org.mockserver.model.MediaType; -import org.mockserver.verify.VerificationTimes; -import org.slf4j.event.Level; -import org.springframework.http.HttpMethod; -import org.springframework.http.HttpStatusCode; -import org.springframework.http.ResponseEntity; -import org.springframework.web.reactive.function.client.WebClient; -import org.springframework.web.reactive.function.client.WebClientResponseException; -import reactor.core.publisher.Mono; - -import static org.junit.jupiter.api.Assertions.assertThrows; -import static org.junit.jupiter.api.Assertions.assertTrue; -import static org.mockserver.integration.ClientAndServer.startClientAndServer; -import static org.mockserver.matchers.Times.exactly; -import static org.mockserver.model.HttpRequest.request; -import static org.mockserver.model.HttpResponse.response; -import static org.junit.jupiter.api.Assertions.assertEquals; - -class BooksServiceMockServerTest { - - private static final String SERVER_ADDRESS = "localhost"; - private static final String PATH = "/books"; - - private static int serverPort; - private static ClientAndServer mockServer; - private static String serviceUrl; - - @BeforeAll - static void startServer() throws IOException { - serverPort = getFreePort(); - serviceUrl = "http://" + SERVER_ADDRESS + ":" + serverPort; - - Configuration config = Configuration.configuration().logLevel(Level.WARN); - mockServer = startClientAndServer(config, serverPort); - - mockAllBooksRequest(); - mockBookByIdRequest(); - mockSaveBookRequest(); - mockDeleteBookRequest(); - } - - @AfterAll - static void stopServer() { - mockServer.stop(); - } - - @Test - void givenMockedGetResponse_whenGetBooksServiceMethodIsCalled_thenTwoBooksAreReturned() { - BooksClient booksClient = new BooksClient(WebClient.builder().baseUrl(serviceUrl).build()); - BooksService booksService = booksClient.getBooksService(); - - List books = booksService.getBooks(); - assertEquals(2, books.size()); - - mockServer.verify( - HttpRequest.request() - .withMethod(HttpMethod.GET.name()) - .withPath(PATH), - VerificationTimes.exactly(1) - ); - } - - @Test - void givenMockedGetResponse_whenGetExistingBookServiceMethodIsCalled_thenCorrectBookIsReturned() { - BooksClient booksClient = new BooksClient(WebClient.builder().baseUrl(serviceUrl).build()); - BooksService booksService = booksClient.getBooksService(); - - Book book = booksService.getBook(1); - assertEquals("Book_1", book.title()); - - mockServer.verify( - HttpRequest.request() - .withMethod(HttpMethod.GET.name()) - .withPath(PATH + "/1"), - VerificationTimes.exactly(1) - ); - } - - @Test - void givenMockedGetResponse_whenGetNonExistingBookServiceMethodIsCalled_thenCorrectBookIsReturned() { - BooksClient booksClient = new BooksClient(WebClient.builder().baseUrl(serviceUrl).build()); - BooksService booksService = booksClient.getBooksService(); - - assertThrows(WebClientResponseException.class, () -> booksService.getBook(9)); - } - - @Test - void givenCustomErrorHandlerIsSet_whenGetNonExistingBookServiceMethodIsCalled_thenCustomExceptionIsThrown() { - BooksClient booksClient = new BooksClient(WebClient.builder() - .defaultStatusHandler(HttpStatusCode::isError, resp -> - Mono.just(new MyServiceException("Custom exception"))) - .baseUrl(serviceUrl) - .build()); - - BooksService booksService = booksClient.getBooksService(); - assertThrows(MyServiceException.class, () -> booksService.getBook(9)); - } - - @Test - void givenMockedPostResponse_whenSaveBookServiceMethodIsCalled_thenCorrectBookIsReturned() { - BooksClient booksClient = new BooksClient(WebClient.builder().baseUrl(serviceUrl).build()); - BooksService booksService = booksClient.getBooksService(); - - Book book = booksService.saveBook(new Book(3, "Book_3", "Author_3", 2000)); - assertEquals("Book_3", book.title()); - - mockServer.verify( - HttpRequest.request() - .withMethod(HttpMethod.POST.name()) - .withPath(PATH), - VerificationTimes.exactly(1) - ); - } - - @Test - void givenMockedDeleteResponse_whenDeleteBookServiceMethodIsCalled_thenCorrectCodeIsReturned() { - BooksClient booksClient = new BooksClient(WebClient.builder().baseUrl(serviceUrl).build()); - BooksService booksService = booksClient.getBooksService(); - - ResponseEntity response = booksService.deleteBook(3); - assertEquals(HttpStatusCode.valueOf(200), response.getStatusCode()); - - mockServer.verify( - HttpRequest.request() - .withMethod(HttpMethod.DELETE.name()) - .withPath(PATH + "/3"), - VerificationTimes.exactly(1) - ); - } - - private static int getFreePort () throws IOException { - try (ServerSocket serverSocket = new ServerSocket(0)) { - return serverSocket.getLocalPort(); - } - } - - private static void mockAllBooksRequest() { - new MockServerClient(SERVER_ADDRESS, serverPort) - .when( - request() - .withPath(PATH) - .withMethod(HttpMethod.GET.name()), - exactly(1) - ) - .respond( - response() - .withStatusCode(HttpStatus.SC_OK) - .withContentType(MediaType.APPLICATION_JSON) - .withBody("[{\"id\":1,\"title\":\"Book_1\",\"author\":\"Author_1\",\"year\":1998},{\"id\":2,\"title\":\"Book_2\",\"author\":\"Author_2\",\"year\":1999}]") - ); - } - - private static void mockBookByIdRequest() { - new MockServerClient(SERVER_ADDRESS, serverPort) - .when( - request() - .withPath(PATH + "/1") - .withMethod(HttpMethod.GET.name()), - exactly(1) - ) - .respond( - response() - .withStatusCode(HttpStatus.SC_OK) - .withContentType(MediaType.APPLICATION_JSON) - .withBody("{\"id\":1,\"title\":\"Book_1\",\"author\":\"Author_1\",\"year\":1998}") - ); - } - - private static void mockSaveBookRequest() { - new MockServerClient(SERVER_ADDRESS, serverPort) - .when( - request() - .withPath(PATH) - .withMethod(HttpMethod.POST.name()) - .withContentType(MediaType.APPLICATION_JSON) - .withBody("{\"id\":3,\"title\":\"Book_3\",\"author\":\"Author_3\",\"year\":2000}"), - exactly(1) - ) - .respond( - response() - .withStatusCode(HttpStatus.SC_OK) - .withContentType(MediaType.APPLICATION_JSON) - .withBody("{\"id\":3,\"title\":\"Book_3\",\"author\":\"Author_3\",\"year\":2000}") - ); - } - - private static void mockDeleteBookRequest() { - new MockServerClient(SERVER_ADDRESS, serverPort) - .when( - request() - .withPath(PATH + "/3") - .withMethod(HttpMethod.DELETE.name()), - exactly(1) - ) - .respond( - response() - .withStatusCode(HttpStatus.SC_OK) - ); - } - -} diff --git a/spring-core-6/src/test/java/com/baeldung/httpinterface/BooksServiceMockitoTest.java b/spring-core-6/src/test/java/com/baeldung/httpinterface/BooksServiceMockitoTest.java deleted file mode 100644 index 7a82835ef3..0000000000 --- a/spring-core-6/src/test/java/com/baeldung/httpinterface/BooksServiceMockitoTest.java +++ /dev/null @@ -1,88 +0,0 @@ -package com.baeldung.httpinterface; - -import org.junit.jupiter.api.Test; -import org.junit.jupiter.api.extension.ExtendWith; -import org.mockito.Answers; -import org.mockito.InjectMocks; -import org.mockito.Mock; -import org.mockito.junit.jupiter.MockitoExtension; -import org.springframework.core.ParameterizedTypeReference; -import org.springframework.http.HttpMethod; -import org.springframework.http.HttpStatusCode; -import org.springframework.http.ResponseEntity; -import org.springframework.web.reactive.function.client.WebClient; -import reactor.core.publisher.Mono; - -import static org.mockito.BDDMockito.*; - -import java.util.List; - -import static org.junit.jupiter.api.Assertions.assertEquals; - -@ExtendWith(MockitoExtension.class) -class BooksServiceMockitoTest { - - @Mock(answer = Answers.RETURNS_DEEP_STUBS) - private WebClient webClient; - - @InjectMocks - private BooksClient booksClient; - - @Test - void givenMockedWebClientReturnsTwoBooks_whenGetBooksServiceMethodIsCalled_thenListOfTwoBooksIsReturned() { - given(webClient.method(HttpMethod.GET) - .uri(anyString(), anyMap()) - .retrieve() - .bodyToMono(new ParameterizedTypeReference>(){})) - .willReturn(Mono.just(List.of( - new Book(1,"Book_1", "Author_1", 1998), - new Book(2, "Book_2", "Author_2", 1999) - ))); - - BooksService booksService = booksClient.getBooksService(); - List books = booksService.getBooks(); - assertEquals(2, books.size()); - } - - @Test - void givenMockedWebClientReturnsBook_whenGetBookServiceMethodIsCalled_thenBookIsReturned() { - given(webClient.method(HttpMethod.GET) - .uri(anyString(), anyMap()) - .retrieve() - .bodyToMono(new ParameterizedTypeReference(){})) - .willReturn(Mono.just(new Book(1,"Book_1", "Author_1", 1998))); - - BooksService booksService = booksClient.getBooksService(); - Book book = booksService.getBook(1); - assertEquals("Book_1", book.title()); - } - - @Test - void givenMockedWebClientReturnsBook_whenSaveBookServiceMethodIsCalled_thenBookIsReturned() { - given(webClient.method(HttpMethod.POST) - .uri(anyString(), anyMap()) - .retrieve() - .bodyToMono(new ParameterizedTypeReference(){})) - .willReturn(Mono.just(new Book(3, "Book_3", "Author_3", 2000))); - - BooksService booksService = booksClient.getBooksService(); - Book book = booksService.saveBook(new Book(3, "Book_3", "Author_3", 2000)); - assertEquals("Book_3", book.title()); - } - - @Test - void givenMockedWebClientReturnsOk_whenDeleteBookServiceMethodIsCalled_thenOkCodeIsReturned() { - given(webClient.method(HttpMethod.DELETE) - .uri(anyString(), anyMap()) - .retrieve() - .toBodilessEntity() - .block(any()) - .getStatusCode()) - .willReturn(HttpStatusCode.valueOf(200)); - - BooksService booksService = booksClient.getBooksService(); - ResponseEntity response = booksService.deleteBook(3); - assertEquals(HttpStatusCode.valueOf(200), response.getStatusCode()); - } - -} From dd5badab9cc214fe150787a44588d38b4a5c577b Mon Sep 17 00:00:00 2001 From: anuragkumawat Date: Thu, 30 Mar 2023 21:56:27 +0530 Subject: [PATCH 33/85] JAVA-19058 Review the time of the build - Week 42 - 2022 (moved-18) (#13732) --- .../{WordCountUnitTest.java => WordCountIntegrationTest.java} | 2 +- ...edulerUnitTest.java => PriorityJobSchedulerManualTest.java} | 3 ++- ...choHeadersUnitTest.java => EchoHeadersIntegrationTest.java} | 2 +- 3 files changed, 4 insertions(+), 3 deletions(-) rename apache-libraries/src/test/java/com/baeldung/apache/beam/intro/{WordCountUnitTest.java => WordCountIntegrationTest.java} (91%) rename core-java-modules/core-java-concurrency-advanced-2/src/test/java/com/baeldung/concurrent/prioritytaskexecution/{PriorityJobSchedulerUnitTest.java => PriorityJobSchedulerManualTest.java} (93%) rename jersey/src/test/java/com/baeldung/jersey/server/{EchoHeadersUnitTest.java => EchoHeadersIntegrationTest.java} (99%) diff --git a/apache-libraries/src/test/java/com/baeldung/apache/beam/intro/WordCountUnitTest.java b/apache-libraries/src/test/java/com/baeldung/apache/beam/intro/WordCountIntegrationTest.java similarity index 91% rename from apache-libraries/src/test/java/com/baeldung/apache/beam/intro/WordCountUnitTest.java rename to apache-libraries/src/test/java/com/baeldung/apache/beam/intro/WordCountIntegrationTest.java index 77287066ac..5d51d8e5fa 100644 --- a/apache-libraries/src/test/java/com/baeldung/apache/beam/intro/WordCountUnitTest.java +++ b/apache-libraries/src/test/java/com/baeldung/apache/beam/intro/WordCountIntegrationTest.java @@ -7,7 +7,7 @@ import org.junit.Test; import com.baeldung.apache.beam.intro.WordCount; -public class WordCountUnitTest { +public class WordCountIntegrationTest { @Test public void givenInputFile_whenWordCountRuns_thenJobFinishWithoutError() { diff --git a/core-java-modules/core-java-concurrency-advanced-2/src/test/java/com/baeldung/concurrent/prioritytaskexecution/PriorityJobSchedulerUnitTest.java b/core-java-modules/core-java-concurrency-advanced-2/src/test/java/com/baeldung/concurrent/prioritytaskexecution/PriorityJobSchedulerManualTest.java similarity index 93% rename from core-java-modules/core-java-concurrency-advanced-2/src/test/java/com/baeldung/concurrent/prioritytaskexecution/PriorityJobSchedulerUnitTest.java rename to core-java-modules/core-java-concurrency-advanced-2/src/test/java/com/baeldung/concurrent/prioritytaskexecution/PriorityJobSchedulerManualTest.java index 20e6a5ef5b..bd71cfc263 100644 --- a/core-java-modules/core-java-concurrency-advanced-2/src/test/java/com/baeldung/concurrent/prioritytaskexecution/PriorityJobSchedulerUnitTest.java +++ b/core-java-modules/core-java-concurrency-advanced-2/src/test/java/com/baeldung/concurrent/prioritytaskexecution/PriorityJobSchedulerManualTest.java @@ -2,7 +2,8 @@ package com.baeldung.concurrent.prioritytaskexecution; import org.junit.Test; -public class PriorityJobSchedulerUnitTest { +//Converted to ManualTest due to thread sleep +public class PriorityJobSchedulerManualTest { private static final int POOL_SIZE = 1; private static final int QUEUE_SIZE = 10; diff --git a/jersey/src/test/java/com/baeldung/jersey/server/EchoHeadersUnitTest.java b/jersey/src/test/java/com/baeldung/jersey/server/EchoHeadersIntegrationTest.java similarity index 99% rename from jersey/src/test/java/com/baeldung/jersey/server/EchoHeadersUnitTest.java rename to jersey/src/test/java/com/baeldung/jersey/server/EchoHeadersIntegrationTest.java index 96b5dfb260..e6f06383db 100644 --- a/jersey/src/test/java/com/baeldung/jersey/server/EchoHeadersUnitTest.java +++ b/jersey/src/test/java/com/baeldung/jersey/server/EchoHeadersIntegrationTest.java @@ -16,7 +16,7 @@ import static org.junit.jupiter.api.Assertions.assertNotNull; import jakarta.ws.rs.core.Application; import jakarta.ws.rs.core.Response; -public class EchoHeadersUnitTest extends JerseyTest { +public class EchoHeadersIntegrationTest extends JerseyTest { private static final String SIMPLE_HEADER_KEY = "my-header-key"; private static final String SIMPLE_HEADER_VALUE = "my-header-value"; From 6212b272fc45c73862bc18d2ce94bf7f514808bd Mon Sep 17 00:00:00 2001 From: anuragkumawat Date: Thu, 30 Mar 2023 22:00:57 +0530 Subject: [PATCH 34/85] JAVA-19547 Move articles from spring-core-2 module to spring-boot modules (#13730) --- .../spring-boot-environment/README.md | 1 + .../spring-boot-environment/pom.xml | 17 +++++++++- .../baeldung/profiles/DatasourceConfig.java | 0 .../profiles/DevDatasourceConfig.java | 0 .../profiles/ProductionDatasourceConfig.java | 0 .../com/baeldung/profiles/ProfileManager.java | 0 .../profiles/SpringProfilesConfig.java | 0 .../src/main/resources/application.properties | 32 ++++++++++++++++++- .../main/resources/springProfiles-config.xml | 0 ...vProfileWithAnnotationIntegrationTest.java | 0 ...nProfileWithAnnotationIntegrationTest.java | 0 ...lesWithMavenPropertiesIntegrationTest.java | 0 .../SpringProfilesWithXMLIntegrationTest.java | 0 .../spring-boot-validation/README.md | 1 + .../java/com/baeldung/nullibility/Person.java | 0 .../baeldung/nullibility/package-info.java | 0 spring-core-2/README.md | 2 -- spring-core-2/pom.xml | 18 ----------- .../src/main/resources/application.properties | 28 ---------------- 19 files changed, 49 insertions(+), 50 deletions(-) rename {spring-core-2 => spring-boot-modules/spring-boot-environment}/src/main/java/com/baeldung/profiles/DatasourceConfig.java (100%) rename {spring-core-2 => spring-boot-modules/spring-boot-environment}/src/main/java/com/baeldung/profiles/DevDatasourceConfig.java (100%) rename {spring-core-2 => spring-boot-modules/spring-boot-environment}/src/main/java/com/baeldung/profiles/ProductionDatasourceConfig.java (100%) rename {spring-core-2 => spring-boot-modules/spring-boot-environment}/src/main/java/com/baeldung/profiles/ProfileManager.java (100%) rename {spring-core-2 => spring-boot-modules/spring-boot-environment}/src/main/java/com/baeldung/profiles/SpringProfilesConfig.java (100%) rename {spring-core-2 => spring-boot-modules/spring-boot-environment}/src/main/resources/springProfiles-config.xml (100%) rename {spring-core-2 => spring-boot-modules/spring-boot-environment}/src/test/java/com/baeldung/profiles/DevProfileWithAnnotationIntegrationTest.java (100%) rename {spring-core-2 => spring-boot-modules/spring-boot-environment}/src/test/java/com/baeldung/profiles/ProductionProfileWithAnnotationIntegrationTest.java (100%) rename {spring-core-2 => spring-boot-modules/spring-boot-environment}/src/test/java/com/baeldung/profiles/SpringProfilesWithMavenPropertiesIntegrationTest.java (100%) rename {spring-core-2 => spring-boot-modules/spring-boot-environment}/src/test/java/com/baeldung/profiles/SpringProfilesWithXMLIntegrationTest.java (100%) rename {spring-core-2 => spring-boot-modules/spring-boot-validation}/src/main/java/com/baeldung/nullibility/Person.java (100%) rename {spring-core-2 => spring-boot-modules/spring-boot-validation}/src/main/java/com/baeldung/nullibility/package-info.java (100%) diff --git a/spring-boot-modules/spring-boot-environment/README.md b/spring-boot-modules/spring-boot-environment/README.md index 687322938e..c3e1866491 100644 --- a/spring-boot-modules/spring-boot-environment/README.md +++ b/spring-boot-modules/spring-boot-environment/README.md @@ -7,3 +7,4 @@ This module contains articles about configuring the Spring Boot `Environment` - [Spring Properties File Outside jar](https://www.baeldung.com/spring-properties-file-outside-jar) - [Get the Running Port in Spring Boot](https://www.baeldung.com/spring-boot-running-port) - [Environment Variable Prefixes in Spring Boot 2.5](https://www.baeldung.com/spring-boot-env-variable-prefixes) + - [Spring Profiles](http://www.baeldung.com/spring-profiles) diff --git a/spring-boot-modules/spring-boot-environment/pom.xml b/spring-boot-modules/spring-boot-environment/pom.xml index 3ea591f561..013156fa7f 100644 --- a/spring-boot-modules/spring-boot-environment/pom.xml +++ b/spring-boot-modules/spring-boot-environment/pom.xml @@ -133,8 +133,23 @@ + + dev + + true + + + dev + + + + prod + + prod + + - + 2.2 3.1.7 diff --git a/spring-core-2/src/main/java/com/baeldung/profiles/DatasourceConfig.java b/spring-boot-modules/spring-boot-environment/src/main/java/com/baeldung/profiles/DatasourceConfig.java similarity index 100% rename from spring-core-2/src/main/java/com/baeldung/profiles/DatasourceConfig.java rename to spring-boot-modules/spring-boot-environment/src/main/java/com/baeldung/profiles/DatasourceConfig.java diff --git a/spring-core-2/src/main/java/com/baeldung/profiles/DevDatasourceConfig.java b/spring-boot-modules/spring-boot-environment/src/main/java/com/baeldung/profiles/DevDatasourceConfig.java similarity index 100% rename from spring-core-2/src/main/java/com/baeldung/profiles/DevDatasourceConfig.java rename to spring-boot-modules/spring-boot-environment/src/main/java/com/baeldung/profiles/DevDatasourceConfig.java diff --git a/spring-core-2/src/main/java/com/baeldung/profiles/ProductionDatasourceConfig.java b/spring-boot-modules/spring-boot-environment/src/main/java/com/baeldung/profiles/ProductionDatasourceConfig.java similarity index 100% rename from spring-core-2/src/main/java/com/baeldung/profiles/ProductionDatasourceConfig.java rename to spring-boot-modules/spring-boot-environment/src/main/java/com/baeldung/profiles/ProductionDatasourceConfig.java diff --git a/spring-core-2/src/main/java/com/baeldung/profiles/ProfileManager.java b/spring-boot-modules/spring-boot-environment/src/main/java/com/baeldung/profiles/ProfileManager.java similarity index 100% rename from spring-core-2/src/main/java/com/baeldung/profiles/ProfileManager.java rename to spring-boot-modules/spring-boot-environment/src/main/java/com/baeldung/profiles/ProfileManager.java diff --git a/spring-core-2/src/main/java/com/baeldung/profiles/SpringProfilesConfig.java b/spring-boot-modules/spring-boot-environment/src/main/java/com/baeldung/profiles/SpringProfilesConfig.java similarity index 100% rename from spring-core-2/src/main/java/com/baeldung/profiles/SpringProfilesConfig.java rename to spring-boot-modules/spring-boot-environment/src/main/java/com/baeldung/profiles/SpringProfilesConfig.java diff --git a/spring-boot-modules/spring-boot-environment/src/main/resources/application.properties b/spring-boot-modules/spring-boot-environment/src/main/resources/application.properties index 4ffb414e92..8333184f1e 100644 --- a/spring-boot-modules/spring-boot-environment/src/main/resources/application.properties +++ b/spring-boot-modules/spring-boot-environment/src/main/resources/application.properties @@ -4,4 +4,34 @@ management.metrics.enable.jvm=true management.endpoint.restart.enabled=true spring.datasource.tomcat.jmx-enabled=false management.endpoint.shutdown.enabled=true -spring.config.import=file:./additional.properties,optional:file:/Users/home/config/jdbc.properties \ No newline at end of file +spring.config.import=file:./additional.properties,optional:file:/Users/home/config/jdbc.properties + +#--- +spring.profiles.active=@spring.profiles.active@ + +my.prop=used-always-in-all-profiles + +#--- +spring.config.activate.on-profile=dev +#spring.datasource.driver-class-name=com.mysql.cj.jdbc.Driver +#spring.datasource.url=jdbc:mysql://localhost:3306/db +#spring.datasource.username=root +#spring.datasource.password=root + +#--- +spring.config.activate.on-profile=production +#spring.datasource.driver-class-name=org.h2.Driver +#spring.datasource.url=jdbc:h2:mem:db;DB_CLOSE_DELAY=-1 +#spring.datasource.username=sa +#spring.datasource.password=sa + +#--- +spring.profiles.group.production=proddb,prodquartz + +#--- +spring.config.activate.on-profile=proddb +db=url_to_production_db + +#--- +spring.config.activate.on-profile=prodquartz +quartz=url_to_quartz_scheduler \ No newline at end of file diff --git a/spring-core-2/src/main/resources/springProfiles-config.xml b/spring-boot-modules/spring-boot-environment/src/main/resources/springProfiles-config.xml similarity index 100% rename from spring-core-2/src/main/resources/springProfiles-config.xml rename to spring-boot-modules/spring-boot-environment/src/main/resources/springProfiles-config.xml diff --git a/spring-core-2/src/test/java/com/baeldung/profiles/DevProfileWithAnnotationIntegrationTest.java b/spring-boot-modules/spring-boot-environment/src/test/java/com/baeldung/profiles/DevProfileWithAnnotationIntegrationTest.java similarity index 100% rename from spring-core-2/src/test/java/com/baeldung/profiles/DevProfileWithAnnotationIntegrationTest.java rename to spring-boot-modules/spring-boot-environment/src/test/java/com/baeldung/profiles/DevProfileWithAnnotationIntegrationTest.java diff --git a/spring-core-2/src/test/java/com/baeldung/profiles/ProductionProfileWithAnnotationIntegrationTest.java b/spring-boot-modules/spring-boot-environment/src/test/java/com/baeldung/profiles/ProductionProfileWithAnnotationIntegrationTest.java similarity index 100% rename from spring-core-2/src/test/java/com/baeldung/profiles/ProductionProfileWithAnnotationIntegrationTest.java rename to spring-boot-modules/spring-boot-environment/src/test/java/com/baeldung/profiles/ProductionProfileWithAnnotationIntegrationTest.java diff --git a/spring-core-2/src/test/java/com/baeldung/profiles/SpringProfilesWithMavenPropertiesIntegrationTest.java b/spring-boot-modules/spring-boot-environment/src/test/java/com/baeldung/profiles/SpringProfilesWithMavenPropertiesIntegrationTest.java similarity index 100% rename from spring-core-2/src/test/java/com/baeldung/profiles/SpringProfilesWithMavenPropertiesIntegrationTest.java rename to spring-boot-modules/spring-boot-environment/src/test/java/com/baeldung/profiles/SpringProfilesWithMavenPropertiesIntegrationTest.java diff --git a/spring-core-2/src/test/java/com/baeldung/profiles/SpringProfilesWithXMLIntegrationTest.java b/spring-boot-modules/spring-boot-environment/src/test/java/com/baeldung/profiles/SpringProfilesWithXMLIntegrationTest.java similarity index 100% rename from spring-core-2/src/test/java/com/baeldung/profiles/SpringProfilesWithXMLIntegrationTest.java rename to spring-boot-modules/spring-boot-environment/src/test/java/com/baeldung/profiles/SpringProfilesWithXMLIntegrationTest.java diff --git a/spring-boot-modules/spring-boot-validation/README.md b/spring-boot-modules/spring-boot-validation/README.md index 93b6e7d2d1..f20f846b60 100644 --- a/spring-boot-modules/spring-boot-validation/README.md +++ b/spring-boot-modules/spring-boot-validation/README.md @@ -2,3 +2,4 @@ - [Spring Validation in the Service Layer](https://www.baeldung.com/spring-service-layer-validation) - [Validation in Spring Boot](https://www.baeldung.com/spring-boot-bean-validation) +- [Spring Null-Safety Annotations](https://www.baeldung.com/spring-null-safety-annotations) \ No newline at end of file diff --git a/spring-core-2/src/main/java/com/baeldung/nullibility/Person.java b/spring-boot-modules/spring-boot-validation/src/main/java/com/baeldung/nullibility/Person.java similarity index 100% rename from spring-core-2/src/main/java/com/baeldung/nullibility/Person.java rename to spring-boot-modules/spring-boot-validation/src/main/java/com/baeldung/nullibility/Person.java diff --git a/spring-core-2/src/main/java/com/baeldung/nullibility/package-info.java b/spring-boot-modules/spring-boot-validation/src/main/java/com/baeldung/nullibility/package-info.java similarity index 100% rename from spring-core-2/src/main/java/com/baeldung/nullibility/package-info.java rename to spring-boot-modules/spring-boot-validation/src/main/java/com/baeldung/nullibility/package-info.java diff --git a/spring-core-2/README.md b/spring-core-2/README.md index 735fd8aed5..18e4e32d1f 100644 --- a/spring-core-2/README.md +++ b/spring-core-2/README.md @@ -4,8 +4,6 @@ This module contains articles about core Spring functionality ## Relevant Articles: -- [Spring Profiles](http://www.baeldung.com/spring-profiles) - [Quick Guide to Spring Bean Scopes](http://www.baeldung.com/spring-bean-scopes) - [Spring Events](https://www.baeldung.com/spring-events) -- [Spring Null-Safety Annotations](https://www.baeldung.com/spring-null-safety-annotations) - More articles: [[<-- prev]](/spring-core)[[next -->]](/spring-core-3) diff --git a/spring-core-2/pom.xml b/spring-core-2/pom.xml index 3cd9adf451..d05090fa6b 100644 --- a/spring-core-2/pom.xml +++ b/spring-core-2/pom.xml @@ -162,24 +162,6 @@ - - - dev - - true - - - dev - - - - prod - - prod - - - - com.baeldung.sample.App diff --git a/spring-core-2/src/main/resources/application.properties b/spring-core-2/src/main/resources/application.properties index d482330b83..e69de29bb2 100644 --- a/spring-core-2/src/main/resources/application.properties +++ b/spring-core-2/src/main/resources/application.properties @@ -1,28 +0,0 @@ -spring.profiles.active=@spring.profiles.active@ - -my.prop=used-always-in-all-profiles - -#--- -spring.config.activate.on-profile=dev -spring.datasource.driver-class-name=com.mysql.cj.jdbc.Driver -spring.datasource.url=jdbc:mysql://localhost:3306/db -spring.datasource.username=root -spring.datasource.password=root - -#--- -spring.config.activate.on-profile=production -spring.datasource.driver-class-name=org.h2.Driver -spring.datasource.url=jdbc:h2:mem:db;DB_CLOSE_DELAY=-1 -spring.datasource.username=sa -spring.datasource.password=sa - -#--- -spring.profiles.group.production=proddb,prodquartz - -#--- -spring.config.activate.on-profile=proddb -db=url_to_production_db - -#--- -spring.config.activate.on-profile=prodquartz -quartz=url_to_quartz_scheduler \ No newline at end of file From 11f740192c10b608b2d471ea151fe144d2a8d061 Mon Sep 17 00:00:00 2001 From: Anastasios Ioannidis <121166333+anastasiosioannidis@users.noreply.github.com> Date: Thu, 30 Mar 2023 23:09:12 +0300 Subject: [PATCH 35/85] JAVA-18131 Upgrade core-java-modules to JDK 11 (#13462) * JAVA-18131 Upgrade core-java-modules to JDK 11 * JAVA-18131 Fixed pom conflicts * JAVA-18131 Upgraded ASM and updated expected test results * JAVA-18131 Fixed FormatNumberUnitTest and removed core-java-security from upgrading to 17 * JAVA-18131 Removed core-java-sun from upgrading * JAVA-18131 Removed core-java-jvm-2, fixed number test * JAVA-18131 Removed core-java-sun from upgrading to 11 * JAVA-18131 Removed all edited submodules from pre-jdk9 * JAVA-18131 removed pre-jpms from pre-jdk9 * JAVA-18131 Removed core-java-numbers-3 from pre-jdk9 profiles * JAVA-18131 Cleanup * JAVA-18131 Cleanup 2 - Removed upgraded submodules from core-java-modules * JAVA-18131 Cleanup completed * JAVA-18131 Replaced core-java-modules submodules in main pom with core-java-modules * JAVA-18131 Replaced core-java-modules submodules in main pom, continued * JAVA-18131 Core-java-nio-2, core-java-serialization back to pre-jdk9 * JAVA-18131 Try removing math-3 from core-java-modules and explicitly refer in parent pom * JAVA-18131 Removed -lang, -nio, -streams-2, -math-3, -conversions-2 from jdk9 profiles * JAVA-18131 Corrected conversions-2 module * JAVA-18131 Review fixes * JAVA-18131 Fixed -nio, re-upgraded -lang * JAVA-18131 Adapted -nio for JDK 11, returned -lang to JDK 8 * JAVA-18131 Final corrections --- .../core-java-annotations/pom.xml | 8 ++ .../com/baeldung/modelmapper/UserList.java | 1 + .../src/test/resources/iostreams/TestFile.txt | 1 + core-java-modules/core-java-jvm-2/pom.xml | 21 ++++ .../memlayout/MemoryLayoutUnitTest.java | 3 +- core-java-modules/core-java-jvm/pom.xml | 14 +-- .../classloader/PrintClassLoader.java | 9 -- .../bytecode/ViewBytecodeUnitTest.java | 4 +- .../headlessmode/HeadlessModeUnitTest.java | 19 ++-- .../baeldung/lines/NumberOfLineFinder.java | 2 +- .../CreationDateResolverUnitTest.java | 8 +- .../formatNumber/FormatNumberUnitTest.java | 4 +- .../core-java-security-algorithms/classpath | 0 core-java-modules/core-java-security/pom.xml | 4 +- .../core-java-string-conversions/pom.xml | 1 + .../DateToStringFormatterUnitTest.java | 6 +- .../core-java-string-operations/pom.xml | 5 + core-java-modules/pom.xml | 31 +++--- core-java-modules/pre-jpms/pom.xml | 12 ++- .../main/java/com/baeldung/prejpms/App.java | 32 +++---- pom.xml | 96 +++++++------------ 21 files changed, 144 insertions(+), 137 deletions(-) create mode 100644 core-java-modules/core-java-io-4/src/test/resources/iostreams/TestFile.txt create mode 100644 core-java-modules/core-java-security-algorithms/classpath diff --git a/core-java-modules/core-java-annotations/pom.xml b/core-java-modules/core-java-annotations/pom.xml index a1f84ab563..1acd347232 100644 --- a/core-java-modules/core-java-annotations/pom.xml +++ b/core-java-modules/core-java-annotations/pom.xml @@ -24,4 +24,12 @@ + + + javax.annotation + javax.annotation-api + 1.3.2 + + + \ No newline at end of file diff --git a/core-java-modules/core-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 index 7b6bed807b..5907c159cb 100644 --- a/core-java-modules/core-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 @@ -9,6 +9,7 @@ import java.util.Collection; */ public class UserList { + public UserList() {} private Collection users; public Collection getUsers() { diff --git a/core-java-modules/core-java-io-4/src/test/resources/iostreams/TestFile.txt b/core-java-modules/core-java-io-4/src/test/resources/iostreams/TestFile.txt new file mode 100644 index 0000000000..5dd01c177f --- /dev/null +++ b/core-java-modules/core-java-io-4/src/test/resources/iostreams/TestFile.txt @@ -0,0 +1 @@ +Hello, world! \ No newline at end of file diff --git a/core-java-modules/core-java-jvm-2/pom.xml b/core-java-modules/core-java-jvm-2/pom.xml index 01628b0908..59d2842ffe 100644 --- a/core-java-modules/core-java-jvm-2/pom.xml +++ b/core-java-modules/core-java-jvm-2/pom.xml @@ -27,9 +27,30 @@ + + + + org.apache.maven.plugins + maven-compiler-plugin + ${maven-compiler-plugin.version} + + ${maven.compiler.source} + ${maven.compiler.target} + + --add-exports=java.base/jdk.internal.vm.annotation=ALL-UNNAMED + + + + + + 0.10 0.10.2 + + 11 + 11 + \ No newline at end of file diff --git a/core-java-modules/core-java-jvm-2/src/test/java/com/baeldung/memlayout/MemoryLayoutUnitTest.java b/core-java-modules/core-java-jvm-2/src/test/java/com/baeldung/memlayout/MemoryLayoutUnitTest.java index 2f226d7657..760115877e 100644 --- a/core-java-modules/core-java-jvm-2/src/test/java/com/baeldung/memlayout/MemoryLayoutUnitTest.java +++ b/core-java-modules/core-java-jvm-2/src/test/java/com/baeldung/memlayout/MemoryLayoutUnitTest.java @@ -3,7 +3,8 @@ package com.baeldung.memlayout; import org.junit.Test; import org.openjdk.jol.info.ClassLayout; import org.openjdk.jol.vm.VM; -import sun.misc.Contended; + +import jdk.internal.vm.annotation.Contended; public class MemoryLayoutUnitTest { diff --git a/core-java-modules/core-java-jvm/pom.xml b/core-java-modules/core-java-jvm/pom.xml index d26c72323f..856c6356a4 100644 --- a/core-java-modules/core-java-jvm/pom.xml +++ b/core-java-modules/core-java-jvm/pom.xml @@ -1,7 +1,7 @@ + xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" + xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd"> 4.0.0 core-java-jvm 0.1.0-SNAPSHOT @@ -30,13 +30,6 @@ esapi ${esapi.version} - - com.sun - tools - ${sun.tools.version} - system - ${java.home}/../lib/tools.jar - org.ow2.asm asm @@ -176,9 +169,8 @@ 3.27.0-GA - 1.8.0 0.10 - 8.0.1 + 9.4 6.5.0 diff --git a/core-java-modules/core-java-jvm/src/main/java/com/baeldung/classloader/PrintClassLoader.java b/core-java-modules/core-java-jvm/src/main/java/com/baeldung/classloader/PrintClassLoader.java index 09ee68bf6e..b976ac99f2 100644 --- a/core-java-modules/core-java-jvm/src/main/java/com/baeldung/classloader/PrintClassLoader.java +++ b/core-java-modules/core-java-jvm/src/main/java/com/baeldung/classloader/PrintClassLoader.java @@ -1,13 +1,5 @@ package com.baeldung.classloader; -import com.sun.javafx.util.Logging; - -import java.io.ByteArrayOutputStream; -import java.io.IOException; -import java.io.InputStream; -import java.net.MalformedURLException; -import java.net.URL; -import java.net.URLConnection; import java.util.ArrayList; public class PrintClassLoader { @@ -15,7 +7,6 @@ public class PrintClassLoader { public void printClassLoaders() throws ClassNotFoundException { System.out.println("Classloader of this class:" + PrintClassLoader.class.getClassLoader()); - System.out.println("Classloader of Logging:" + Logging.class.getClassLoader()); System.out.println("Classloader of ArrayList:" + ArrayList.class.getClassLoader()); } diff --git a/core-java-modules/core-java-jvm/src/test/java/com/baeldung/bytecode/ViewBytecodeUnitTest.java b/core-java-modules/core-java-jvm/src/test/java/com/baeldung/bytecode/ViewBytecodeUnitTest.java index 5b0fdf26d4..2a7366c322 100644 --- a/core-java-modules/core-java-jvm/src/test/java/com/baeldung/bytecode/ViewBytecodeUnitTest.java +++ b/core-java-modules/core-java-jvm/src/test/java/com/baeldung/bytecode/ViewBytecodeUnitTest.java @@ -33,7 +33,7 @@ public class ViewBytecodeUnitTest { JavaClass objectClazz = Repository.lookupClass("java.lang.Object"); assertEquals(objectClazz.getClassName(), "java.lang.Object"); - assertEquals(objectClazz.getMethods().length, 14); + assertEquals(objectClazz.getMethods().length, 12); assertTrue(objectClazz.toString().contains("public class java.lang.Object")); } @@ -43,7 +43,7 @@ public class ViewBytecodeUnitTest { ClassFile cf = cp.get("java.lang.Object").getClassFile(); assertEquals(cf.getName(), "java.lang.Object"); - assertEquals(cf.getMethods().size(), 14); + assertEquals(cf.getMethods().size(), 12); } } diff --git a/core-java-modules/core-java-lang-2/src/test/java/com/baeldung/headlessmode/HeadlessModeUnitTest.java b/core-java-modules/core-java-lang-2/src/test/java/com/baeldung/headlessmode/HeadlessModeUnitTest.java index a17c1600f3..d64d8c16da 100644 --- a/core-java-modules/core-java-lang-2/src/test/java/com/baeldung/headlessmode/HeadlessModeUnitTest.java +++ b/core-java-modules/core-java-lang-2/src/test/java/com/baeldung/headlessmode/HeadlessModeUnitTest.java @@ -3,13 +3,12 @@ package com.baeldung.headlessmode; import static org.assertj.core.api.Assertions.assertThat; import static org.assertj.core.api.Assertions.assertThatExceptionOfType; -import java.awt.Canvas; -import java.awt.Font; -import java.awt.FontMetrics; -import java.awt.Frame; -import java.awt.GraphicsEnvironment; -import java.awt.HeadlessException; +import java.awt.*; import java.awt.image.BufferedImage; +import java.awt.image.ColorModel; +import java.awt.image.ComponentColorModel; +import java.awt.image.DataBuffer; +import java.awt.image.WritableRaster; import java.io.FileOutputStream; import java.io.IOException; import java.io.InputStream; @@ -58,7 +57,7 @@ public class HeadlessModeUnitTest { boolean result = false; try (InputStream inStream = HeadlessModeUnitTest.class.getResourceAsStream(IN_FILE); FileOutputStream outStream = new FileOutputStream(OUT_FILE)) { BufferedImage inputImage = ImageIO.read(inStream); - result = ImageIO.write(inputImage, FORMAT, outStream); + result = ImageIO.write(removeAlphaChannel(inputImage), FORMAT, outStream); } assertThat(result).isTrue(); @@ -84,4 +83,10 @@ public class HeadlessModeUnitTest { assertThat(FlexibleApp.iAmFlexible()).isEqualTo(FlexibleApp.HEADED); } + private BufferedImage removeAlphaChannel(BufferedImage inputImage) { + final WritableRaster raster = inputImage.getRaster(); + final WritableRaster newRaster = raster.createWritableChild(0, 0, inputImage.getWidth(), inputImage.getHeight(), 0, 0, new int[]{0, 1, 2}); + ColorModel newCM = new ComponentColorModel(inputImage.getColorModel().getColorSpace(), false, false, Transparency.OPAQUE, DataBuffer.TYPE_BYTE); + return new BufferedImage(newCM, newRaster, false, null); + } } diff --git a/core-java-modules/core-java-nio/src/main/java/com/baeldung/lines/NumberOfLineFinder.java b/core-java-modules/core-java-nio/src/main/java/com/baeldung/lines/NumberOfLineFinder.java index b355295dab..f5d5fb2b4f 100644 --- a/core-java-modules/core-java-nio/src/main/java/com/baeldung/lines/NumberOfLineFinder.java +++ b/core-java-modules/core-java-nio/src/main/java/com/baeldung/lines/NumberOfLineFinder.java @@ -37,7 +37,7 @@ public class NumberOfLineFinder { int lines = 0; try (LineNumberReader reader = new LineNumberReader(new FileReader(fileName))) { reader.skip(Integer.MAX_VALUE); - lines = reader.getLineNumber() + 1; + lines = reader.getLineNumber(); } catch (IOException ioe) { ioe.printStackTrace(); } diff --git a/core-java-modules/core-java-nio/src/test/java/com/baeldung/creationdate/CreationDateResolverUnitTest.java b/core-java-modules/core-java-nio/src/test/java/com/baeldung/creationdate/CreationDateResolverUnitTest.java index 5402852c74..5e7929859d 100644 --- a/core-java-modules/core-java-nio/src/test/java/com/baeldung/creationdate/CreationDateResolverUnitTest.java +++ b/core-java-modules/core-java-nio/src/test/java/com/baeldung/creationdate/CreationDateResolverUnitTest.java @@ -21,9 +21,11 @@ public class CreationDateResolverUnitTest { final Instant response = creationDateResolver.resolveCreationTimeWithBasicAttributes(path); - assertTrue(Instant - .now() - .isAfter(response)); + Optional.of(response).ifPresent((value) -> { + assertTrue(Instant + .now() + .isAfter(value)); + }); } diff --git a/core-java-modules/core-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 index 4f0358c6a2..6d78426a56 100644 --- a/core-java-modules/core-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 @@ -75,8 +75,8 @@ public class FormatNumberUnitTest { public void givenCurrency_whenFormatNumberCurrencyWithChosenLocalisation_thenGetExpectedResult() { double value = 23_500; assertThat(currencyWithChosenLocalisation(value, new Locale("en", "US"))).isEqualTo("$23,500.00"); - assertThat(currencyWithChosenLocalisation(value, new Locale("zh", "CN"))).isEqualTo("¥23,500.00"); - assertThat(currencyWithChosenLocalisation(value, new Locale("pl", "PL"))).isEqualTo("23 500 zł"); + assertThat(currencyWithChosenLocalisation(value, new Locale("zh", "CN"))).isEqualTo("¥23,500.00"); + assertThat(currencyWithChosenLocalisation(value, new Locale("pl", "PL"))).isEqualTo("23 500,00 zł"); } } diff --git a/core-java-modules/core-java-security-algorithms/classpath b/core-java-modules/core-java-security-algorithms/classpath new file mode 100644 index 0000000000..e69de29bb2 diff --git a/core-java-modules/core-java-security/pom.xml b/core-java-modules/core-java-security/pom.xml index b36de5ac4c..66b56ada74 100644 --- a/core-java-modules/core-java-security/pom.xml +++ b/core-java-modules/core-java-security/pom.xml @@ -1,7 +1,7 @@ + xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" + xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd"> 4.0.0 core-java-security 0.1.0-SNAPSHOT diff --git a/core-java-modules/core-java-string-conversions/pom.xml b/core-java-modules/core-java-string-conversions/pom.xml index f10ae401b3..c715e22ed4 100644 --- a/core-java-modules/core-java-string-conversions/pom.xml +++ b/core-java-modules/core-java-string-conversions/pom.xml @@ -44,6 +44,7 @@ 61.1 + -Djava.locale.providers=COMPAT \ No newline at end of file diff --git a/core-java-modules/core-java-string-conversions/src/test/java/com/baeldung/datetostring/DateToStringFormatterUnitTest.java b/core-java-modules/core-java-string-conversions/src/test/java/com/baeldung/datetostring/DateToStringFormatterUnitTest.java index 221900fb0e..c4fb84713c 100644 --- a/core-java-modules/core-java-string-conversions/src/test/java/com/baeldung/datetostring/DateToStringFormatterUnitTest.java +++ b/core-java-modules/core-java-string-conversions/src/test/java/com/baeldung/datetostring/DateToStringFormatterUnitTest.java @@ -1,7 +1,6 @@ package com.baeldung.datetostring; -import org.junit.BeforeClass; -import org.junit.Test; +import static org.junit.Assert.assertEquals; import java.text.DateFormat; import java.text.SimpleDateFormat; @@ -14,7 +13,8 @@ import java.util.Date; import java.util.Locale; import java.util.TimeZone; -import static org.junit.Assert.assertEquals; +import org.junit.BeforeClass; +import org.junit.Test; public class DateToStringFormatterUnitTest { diff --git a/core-java-modules/core-java-string-operations/pom.xml b/core-java-modules/core-java-string-operations/pom.xml index 20e4df3ba3..0970125281 100644 --- a/core-java-modules/core-java-string-operations/pom.xml +++ b/core-java-modules/core-java-string-operations/pom.xml @@ -15,6 +15,11 @@ + + javax.xml.bind + jaxb-api + 2.4.0-b180725.0427 + org.apache.commons commons-lang3 diff --git a/core-java-modules/pom.xml b/core-java-modules/pom.xml index f2db98dbfb..d5011cddf7 100644 --- a/core-java-modules/pom.xml +++ b/core-java-modules/pom.xml @@ -16,9 +16,21 @@ - core-java - core-java-8 - core-java-8-2 + + + + + + + + + + + + + + + core-java-annotations core-java-arrays-sorting core-java-arrays-guides @@ -33,7 +45,6 @@ core-java-collections-4 core-java-collections-5 core-java-collections-conversions - core-java-collections-conversions-2 core-java-collections-set-2 core-java-collections-list core-java-collections-list-2 @@ -52,11 +63,9 @@ core-java-concurrency-collections core-java-concurrency-collections-2 core-java-console - core-java-8-datetime-2 core-java-datetime-string-2 core-java-date-operations-2 core-java-date-operations-3 - core-java-8-datetime core-java-exceptions core-java-exceptions-2 core-java-exceptions-3 @@ -77,14 +86,12 @@ core-java-jvm-2 core-java-jvm-3 core-java-lambdas - core-java-lang core-java-lang-2 core-java-lang-3 core-java-lang-4 core-java-lang-5 core-java-lang-math core-java-lang-math-2 - core-java-lang-math-3 core-java-lang-oop-constructors core-java-lang-oop-patterns core-java-lang-oop-generics @@ -102,27 +109,20 @@ core-java-networking-2 core-java-networking-4 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-numbers-conversions core-java-optional core-java-perf core-java-reflection core-java-reflection-2 - core-java-security core-java-security-2 core-java-security-3 - core-java-serialization core-java-security-algorithms core-java-streams - core-java-streams-2 core-java-streams-3 - core-java-streams-maps - core-java-streams-collect core-java-string-algorithms core-java-string-algorithms-2 core-java-string-apis @@ -131,7 +131,6 @@ core-java-string-conversions-2 core-java-string-operations core-java-string-operations-2 - core-java-sun core-java-regex core-java-regex-2 core-java-uuid diff --git a/core-java-modules/pre-jpms/pom.xml b/core-java-modules/pre-jpms/pom.xml index cd4bd0faa3..11db8f8027 100644 --- a/core-java-modules/pre-jpms/pom.xml +++ b/core-java-modules/pre-jpms/pom.xml @@ -15,6 +15,11 @@ + + javax.xml.bind + jaxb-api + 2.4.0-b180725.0427 + org.slf4j slf4j-api @@ -32,6 +37,9 @@ ${source.version} ${target.version} + + --add-exports=java.base/com.sun.crypto.provider=ALL-UNNAMED + @@ -72,8 +80,8 @@ 3.1.1 3.8.0 - 1.8 - 1.8 + 11 + 11 \ No newline at end of file diff --git a/core-java-modules/pre-jpms/src/main/java/com/baeldung/prejpms/App.java b/core-java-modules/pre-jpms/src/main/java/com/baeldung/prejpms/App.java index 1afaae30e4..a69e0555c6 100644 --- a/core-java-modules/pre-jpms/src/main/java/com/baeldung/prejpms/App.java +++ b/core-java-modules/pre-jpms/src/main/java/com/baeldung/prejpms/App.java @@ -1,19 +1,18 @@ package com.baeldung.prejpms; import java.io.StringWriter; +import java.lang.StackWalker.Option; +import java.lang.StackWalker.StackFrame; +import com.sun.crypto.provider.SunJCE; +import java.util.Base64; +import java.util.concurrent.atomic.AtomicInteger; import javax.xml.bind.JAXBContext; -import javax.xml.bind.JAXBException; import javax.xml.bind.Marshaller; import org.slf4j.Logger; import org.slf4j.LoggerFactory; -import com.sun.crypto.provider.SunJCE; - -import sun.misc.BASE64Encoder; -import sun.reflect.Reflection; - public class App { private static final Logger LOGGER = LoggerFactory.getLogger(App.class); @@ -37,14 +36,14 @@ public class App { private static void getCallStackClassNames() { try { StringBuffer sbStack = new StringBuffer(); - int i = 0; - Class caller = Reflection.getCallerClass(i++); - do { - sbStack.append(i + ".") - .append(caller.getName()) - .append("\n"); - caller = Reflection.getCallerClass(i++); - } while (caller != null); + AtomicInteger i = new AtomicInteger(0); + StackWalker.getInstance((Option.RETAIN_CLASS_REFERENCE)) + .walk(s -> s.map(StackFrame::getDeclaringClass) + .map(e -> { + i.getAndIncrement(); + return e.getName(); + })) + .forEach(name -> sbStack.append(String.format("%d. %s \n", i.get(), name))); LOGGER.info("2. Call Stack:\n{}", sbStack); } catch (Throwable e) { LOGGER.error(e.toString()); @@ -54,7 +53,7 @@ public class App { private static void getXmlFromObject(Book book) { try { Marshaller marshallerObj = JAXBContext.newInstance(Book.class) - .createMarshaller(); + .createMarshaller(); marshallerObj.setProperty(Marshaller.JAXB_FORMATTED_OUTPUT, true); StringWriter sw = new StringWriter(); @@ -68,7 +67,8 @@ public class App { private static void getBase64EncodedString(String inputString) { try { - String encodedString = new BASE64Encoder().encode(inputString.getBytes()); + String encodedString = new String(Base64.getEncoder() + .encode(inputString.getBytes())); LOGGER.info("4. Base Encoded String: {}", encodedString); } catch (Throwable e) { LOGGER.error(e.toString()); diff --git a/pom.xml b/pom.xml index b790e64046..0f532beaf2 100644 --- a/pom.xml +++ b/pom.xml @@ -332,7 +332,21 @@ checker-plugin - core-java-modules + + core-java-modules/core-java + core-java-modules/core-java-8 + core-java-modules/core-java-8-2 + core-java-modules/core-java-8-datetime + core-java-modules/core-java-8-datetime-2 + core-java-modules/core-java-sun + core-java-modules/core-java-security + core-java-modules/core-java-nio-2 + core-java-modules/core-java-serialization + core-java-modules/core-java-lang + core-java-modules/core-java-lang-math-3 + core-java-modules/core-java-collections-conversions-2 + core-java-modules/core-java-streams-2 + couchbase @@ -521,7 +535,20 @@ checker-plugin - core-java-modules + core-java-modules/core-java + core-java-modules/core-java-8 + core-java-modules/core-java-8-2 + core-java-modules/core-java-8-datetime + core-java-modules/core-java-8-datetime-2 + core-java-modules/core-java-sun + core-java-modules/core-java-security + core-java-modules/core-java-nio-2 + core-java-modules/core-java-serialization + core-java-modules/core-java-lang + core-java-modules/core-java-lang-math-3 + core-java-modules/core-java-collections-conversions-2 + core-java-modules/core-java-streams-2 + couchbase @@ -778,15 +805,8 @@ couchbase core-groovy-modules - core-java-modules/core-java-9 - core-java-modules/core-java-9-improvements - core-java-modules/core-java-9-jigsaw + core-java-modules - core-java-modules/core-java-9-streams - core-java-modules/core-java-10 - core-java-modules/core-java-11 - core-java-modules/core-java-11-2 - core-java-modules/core-java-11-3 @@ -794,27 +814,6 @@ - core-java-modules/core-java-collections-set - core-java-modules/core-java-collections-list-4 - core-java-modules/core-java-collections-array-list - core-java-modules/core-java-collections-maps-4 - core-java-modules/core-java-collections-maps-5 - core-java-modules/core-java-concurrency-simple - core-java-modules/core-java-date-operations-1 - core-java-modules/core-java-datetime-conversion - core-java-modules/core-java-datetime-string - core-java-modules/core-java-io-conversions-2 - core-java-modules/core-java-jpms - core-java-modules/core-java-os - core-java-modules/core-java-streams-4 - core-java-modules/core-java-string-algorithms-3 - core-java-modules/core-java-string-operations-3 - core-java-modules/core-java-string-operations-4 - core-java-modules/core-java-string-operations-5 - core-java-modules/core-java-time-measurements - core-java-modules/core-java-networking-3 - core-java-modules/core-java-strings - core-java-modules/core-java-httpclient custom-pmd spring-core-6 data-structures @@ -954,7 +953,7 @@ xstream webrtc persistence-modules/java-mongodb - + messaging-modules persistence-modules/questdb @@ -1048,15 +1047,9 @@ couchbase core-groovy-modules - core-java-modules/core-java-9 - core-java-modules/core-java-9-improvements - core-java-modules/core-java-9-jigsaw + + core-java-modules - core-java-modules/core-java-9-streams - core-java-modules/core-java-10 - core-java-modules/core-java-11 - core-java-modules/core-java-11-2 - core-java-modules/core-java-11-3 @@ -1064,27 +1057,6 @@ - core-java-modules/core-java-collections-set - core-java-modules/core-java-collections-list-4 - core-java-modules/core-java-collections-array-list - core-java-modules/core-java-collections-maps-4 - core-java-modules/core-java-collections-maps-5 - core-java-modules/core-java-concurrency-simple - core-java-modules/core-java-date-operations-1 - core-java-modules/core-java-datetime-conversion - core-java-modules/core-java-datetime-string - core-java-modules/core-java-io-conversions-2 - core-java-modules/core-java-jpms - core-java-modules/core-java-os - core-java-modules/core-java-streams-4 - core-java-modules/core-java-string-algorithms-3 - core-java-modules/core-java-string-operations-3 - core-java-modules/core-java-string-operations-4 - core-java-modules/core-java-string-operations-5 - core-java-modules/core-java-time-measurements - core-java-modules/core-java-networking-3 - core-java-modules/core-java-strings - core-java-modules/core-java-httpclient spring-aop spring-aop-2 custom-pmd @@ -1228,7 +1200,7 @@ xstream webrtc persistence-modules/java-mongodb - libraries-2 + libraries-2 messaging-modules persistence-modules/questdb From c40bdd9f36e86fd00e9d8619bcf1800db4eeb489 Mon Sep 17 00:00:00 2001 From: Kai Yuan Date: Fri, 31 Mar 2023 01:01:25 +0200 Subject: [PATCH 36/85] [BAEL-6297_boolean-to-str] convert boolean to java article (#13729) * [BAEL-6297_boolean-to-str] convert boolean to java article * [BAEL-6297_boolean-to-str] using Boolean.FALSE instead of false for the Boolean variable * [BAEL-6297_boolean-to-str] rename test methods --- .../core-java-booleans/README.md | 5 ++ core-java-modules/core-java-booleans/pom.xml | 16 +++++++ .../booleans/BooleanToStringUnitTest.java | 48 +++++++++++++++++++ core-java-modules/pom.xml | 1 + 4 files changed, 70 insertions(+) create mode 100644 core-java-modules/core-java-booleans/README.md create mode 100644 core-java-modules/core-java-booleans/pom.xml create mode 100644 core-java-modules/core-java-booleans/src/test/java/com/baeldung/booleans/BooleanToStringUnitTest.java diff --git a/core-java-modules/core-java-booleans/README.md b/core-java-modules/core-java-booleans/README.md new file mode 100644 index 0000000000..6a9be31958 --- /dev/null +++ b/core-java-modules/core-java-booleans/README.md @@ -0,0 +1,5 @@ +## Core Java Booleans + +This module contains articles about Java Booleans. + +### Relevant Articles: \ No newline at end of file diff --git a/core-java-modules/core-java-booleans/pom.xml b/core-java-modules/core-java-booleans/pom.xml new file mode 100644 index 0000000000..18338fd88c --- /dev/null +++ b/core-java-modules/core-java-booleans/pom.xml @@ -0,0 +1,16 @@ + + + 4.0.0 + core-java-booleans + 0.1.0-SNAPSHOT + core-java-booleans + jar + + + com.baeldung.core-java-modules + core-java-modules + 0.0.1-SNAPSHOT + + \ No newline at end of file diff --git a/core-java-modules/core-java-booleans/src/test/java/com/baeldung/booleans/BooleanToStringUnitTest.java b/core-java-modules/core-java-booleans/src/test/java/com/baeldung/booleans/BooleanToStringUnitTest.java new file mode 100644 index 0000000000..e20cc3508f --- /dev/null +++ b/core-java-modules/core-java-booleans/src/test/java/com/baeldung/booleans/BooleanToStringUnitTest.java @@ -0,0 +1,48 @@ +package com.baeldung.booleans; + +import org.junit.jupiter.api.Test; + +import static org.junit.jupiter.api.Assertions.assertEquals; +import static org.junit.jupiter.api.Assertions.assertThrows; + +public class BooleanToStringUnitTest { + String optionToString(String optionName, boolean optionValue) { + return String.format("The option '%s' is %s.", optionName, optionValue ? "Enabled" : "Disabled"); + } + + @Test + void givenPrimitiveBoolean_whenConvertingUsingTernaryOperator_thenSuccess() { + boolean primitiveBoolean = true; + assertEquals("true", primitiveBoolean ? "true" : "false"); + + primitiveBoolean = false; + assertEquals("false", primitiveBoolean ? "true" : "false"); + + assertEquals("The option 'IgnoreWarnings' is Enabled.", optionToString("IgnoreWarnings", true)); + } + + + @Test + void givenBooleanObject_whenConvertingUsingBooleanToString_thenSuccess() { + Boolean myBoolean = Boolean.TRUE; + assertEquals("true", myBoolean.toString()); + + myBoolean = Boolean.FALSE; + assertEquals("false", myBoolean.toString()); + + Boolean nullBoolean = null; + assertThrows(NullPointerException.class, () -> nullBoolean.toString()); + } + + @Test + void givenBooleanObject_whenConvertingUsingStringValueOf_thenSuccess() { + Boolean myBoolean = Boolean.TRUE; + assertEquals("true", String.valueOf(myBoolean)); + + myBoolean = Boolean.FALSE; + assertEquals("false", String.valueOf(myBoolean)); + + Boolean nullBoolean = null; + assertEquals("null", String.valueOf(nullBoolean)); + } +} \ No newline at end of file diff --git a/core-java-modules/pom.xml b/core-java-modules/pom.xml index d5011cddf7..e7894b2f45 100644 --- a/core-java-modules/pom.xml +++ b/core-java-modules/pom.xml @@ -38,6 +38,7 @@ core-java-arrays-convert core-java-arrays-operations-basic core-java-arrays-operations-advanced + core-java-booleans core-java-char core-java-collections core-java-collections-2 From ecad53efac21dc77ae7577d85a247e8a237592a0 Mon Sep 17 00:00:00 2001 From: AttilaUhrin Date: Fri, 31 Mar 2023 04:23:12 +0200 Subject: [PATCH 37/85] [BAEL-6161] Add example code for article. (#13651) Co-authored-by: Uhrin Attila --- .../spring-boot-keycloak-2/pom.xml | 39 ++++++++ .../adminclient/AdminClientService.java | 90 +++++++++++++++++++ .../baeldung/keycloak/adminclient/App.java | 30 +++++++ .../KeycloakUserApiProvider.java | 52 +++++++++++ .../KeycloakUserApiProviderFactory.java | 33 +++++++ ...ices.resource.RealmResourceProviderFactory | 1 + .../application-adminclient.properties | 1 + 7 files changed, 246 insertions(+) create mode 100644 spring-boot-modules/spring-boot-keycloak-2/src/main/java/com/baeldung/keycloak/adminclient/AdminClientService.java create mode 100644 spring-boot-modules/spring-boot-keycloak-2/src/main/java/com/baeldung/keycloak/adminclient/App.java create mode 100644 spring-boot-modules/spring-boot-keycloak-2/src/main/java/com/baeldung/keycloak/customendpoint/KeycloakUserApiProvider.java create mode 100644 spring-boot-modules/spring-boot-keycloak-2/src/main/java/com/baeldung/keycloak/customendpoint/KeycloakUserApiProviderFactory.java create mode 100644 spring-boot-modules/spring-boot-keycloak-2/src/main/resources/META-INF/services/org.keycloak.services.resource.RealmResourceProviderFactory create mode 100644 spring-boot-modules/spring-boot-keycloak-2/src/main/resources/application-adminclient.properties diff --git a/spring-boot-modules/spring-boot-keycloak-2/pom.xml b/spring-boot-modules/spring-boot-keycloak-2/pom.xml index 8b1eec2e4e..572986e8c4 100644 --- a/spring-boot-modules/spring-boot-keycloak-2/pom.xml +++ b/spring-boot-modules/spring-boot-keycloak-2/pom.xml @@ -16,6 +16,10 @@ 0.0.1-SNAPSHOT ../../parent-boot-2 + + + 21.0.1 + @@ -39,6 +43,41 @@ spring-boot-starter-test test + + + + org.keycloak + keycloak-admin-client + ${keycloak.version} + + + + org.keycloak + keycloak-core + provided + ${keycloak.version} + + + org.keycloak + keycloak-server-spi + ${keycloak.version} + provided + + + + org.keycloak + keycloak-server-spi-private + provided + ${keycloak.version} + + + org.keycloak + keycloak-services + provided + ${keycloak.version} + + + diff --git a/spring-boot-modules/spring-boot-keycloak-2/src/main/java/com/baeldung/keycloak/adminclient/AdminClientService.java b/spring-boot-modules/spring-boot-keycloak-2/src/main/java/com/baeldung/keycloak/adminclient/AdminClientService.java new file mode 100644 index 0000000000..bacca9bdea --- /dev/null +++ b/spring-boot-modules/spring-boot-keycloak-2/src/main/java/com/baeldung/keycloak/adminclient/AdminClientService.java @@ -0,0 +1,90 @@ +package com.baeldung.keycloak.adminclient; + +import java.util.List; +import java.util.stream.Collectors; + +import javax.annotation.PostConstruct; + +import org.keycloak.admin.client.Keycloak; +import org.keycloak.representations.idm.UserRepresentation; +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.stereotype.Service; + +@Service +public class AdminClientService { + + private static final Logger logger = LoggerFactory.getLogger(AdminClientService.class); + private static final String REALM_NAME = "master"; + + @Autowired + private Keycloak keycloak; + + @PostConstruct + public void searchUsers() { + logger.info("Searching users in Keycloak {}", keycloak.serverInfo() + .getInfo() + .getSystemInfo() + .getVersion()); + searchByUsername("user1", true); + searchByUsername("user", false); + searchByUsername("1", false); + searchByEmail("user2@test.com", true); + searchByAttributes("DOB:2000-01-05"); + searchByGroup("c67643fb-514e-488a-a4b4-5c0bdf2e7477"); + searchByRole("user"); + } + + private void searchByUsername(String username, boolean exact) { + logger.info("Searching by username: {} (exact {})", username, exact); + List users = keycloak.realm(REALM_NAME) + .users() + .searchByUsername(username, exact); + logger.info("Users found by username {}", users.stream() + .map(user -> user.getUsername()) + .collect(Collectors.toList())); + } + + private void searchByEmail(String email, boolean exact) { + logger.info("Searching by email: {} (exact {})", email, exact); + List users = keycloak.realm(REALM_NAME) + .users() + .searchByEmail(email, exact); + logger.info("Users found by email {}", users.stream() + .map(user -> user.getEmail()) + .collect(Collectors.toList())); + } + + private void searchByAttributes(String query) { + logger.info("Searching by attributes: {}", query); + List users = keycloak.realm(REALM_NAME) + .users() + .searchByAttributes(query); + logger.info("Users found by attributes {}", users.stream() + .map(user -> user.getUsername() + " " + user.getAttributes()) + .collect(Collectors.toList())); + } + + private void searchByGroup(String groupId) { + logger.info("Searching by group: {}", groupId); + List users = keycloak.realm(REALM_NAME) + .groups() + .group(groupId) + .members(); + logger.info("Users found by group {}", users.stream() + .map(user -> user.getUsername()) + .collect(Collectors.toList())); + } + + private void searchByRole(String roleName) { + logger.info("Searching by role: {}", roleName); + List users = keycloak.realm(REALM_NAME) + .roles() + .get(roleName) + .getUserMembers(); + logger.info("Users found by role {}", users.stream() + .map(user -> user.getUsername()) + .collect(Collectors.toList())); + } +} \ No newline at end of file diff --git a/spring-boot-modules/spring-boot-keycloak-2/src/main/java/com/baeldung/keycloak/adminclient/App.java b/spring-boot-modules/spring-boot-keycloak-2/src/main/java/com/baeldung/keycloak/adminclient/App.java new file mode 100644 index 0000000000..a863bde2e3 --- /dev/null +++ b/spring-boot-modules/spring-boot-keycloak-2/src/main/java/com/baeldung/keycloak/adminclient/App.java @@ -0,0 +1,30 @@ +package com.baeldung.keycloak.adminclient; + +import org.keycloak.OAuth2Constants; +import org.keycloak.admin.client.Keycloak; +import org.keycloak.admin.client.KeycloakBuilder; +import org.springframework.boot.SpringApplication; +import org.springframework.boot.autoconfigure.SpringBootApplication; +import org.springframework.context.annotation.Bean; +import org.springframework.context.annotation.PropertySource; + +@SpringBootApplication(scanBasePackages = { "com.baeldung.keycloak.adminclient" }) +@PropertySource("classpath:application-adminclient.properties") +public class App { + + public static void main(String[] args) { + SpringApplication.run(App.class, args); + } + + @Bean + Keycloak keycloak() { + return KeycloakBuilder.builder() + .serverUrl("http://localhost:8080") + .realm("master") + .clientId("admin-cli") + .grantType(OAuth2Constants.PASSWORD) + .username("admin") + .password("password") + .build(); + } +} \ No newline at end of file diff --git a/spring-boot-modules/spring-boot-keycloak-2/src/main/java/com/baeldung/keycloak/customendpoint/KeycloakUserApiProvider.java b/spring-boot-modules/spring-boot-keycloak-2/src/main/java/com/baeldung/keycloak/customendpoint/KeycloakUserApiProvider.java new file mode 100644 index 0000000000..c34514104b --- /dev/null +++ b/spring-boot-modules/spring-boot-keycloak-2/src/main/java/com/baeldung/keycloak/customendpoint/KeycloakUserApiProvider.java @@ -0,0 +1,52 @@ +package com.baeldung.keycloak.customendpoint; + +import java.util.Optional; +import java.util.stream.Stream; + +import javax.validation.constraints.NotBlank; +import javax.validation.constraints.NotNull; +import javax.ws.rs.GET; +import javax.ws.rs.NotFoundException; +import javax.ws.rs.Produces; +import javax.ws.rs.QueryParam; +import javax.ws.rs.core.MediaType; + +import org.keycloak.models.GroupModel; +import org.keycloak.models.KeycloakSession; +import org.keycloak.models.RealmModel; +import org.keycloak.models.utils.ModelToRepresentation; +import org.keycloak.representations.idm.UserRepresentation; +import org.keycloak.services.resource.RealmResourceProvider; + +public class KeycloakUserApiProvider implements RealmResourceProvider { + private final KeycloakSession session; + + public KeycloakUserApiProvider(KeycloakSession session) { + this.session = session; + } + + public void close() { + } + + public Object getResource() { + return this; + } + + @GET + @Produces({ MediaType.APPLICATION_JSON }) + public Stream searchUsersByGroupAndRoleName(@QueryParam("groupName") @NotNull String groupName, @QueryParam("roleName") @NotBlank String roleName) { + RealmModel realm = session.getContext().getRealm(); + + Optional groupByName = session.groups() + .getGroupsStream(realm) + .filter(group -> group.getName().equals(groupName)) + .findAny(); + + GroupModel group = groupByName.orElseThrow(() -> new NotFoundException("Group not found with name " + groupName)); + + return session.users() + .getGroupMembersStream(realm, group) + .filter(user -> user.getRealmRoleMappingsStream().anyMatch(role -> role.getName().equals(roleName))) + .map(user -> ModelToRepresentation.toBriefRepresentation(user)); + } +} \ No newline at end of file diff --git a/spring-boot-modules/spring-boot-keycloak-2/src/main/java/com/baeldung/keycloak/customendpoint/KeycloakUserApiProviderFactory.java b/spring-boot-modules/spring-boot-keycloak-2/src/main/java/com/baeldung/keycloak/customendpoint/KeycloakUserApiProviderFactory.java new file mode 100644 index 0000000000..34eda94d6a --- /dev/null +++ b/spring-boot-modules/spring-boot-keycloak-2/src/main/java/com/baeldung/keycloak/customendpoint/KeycloakUserApiProviderFactory.java @@ -0,0 +1,33 @@ +package com.baeldung.keycloak.customendpoint; + +import org.keycloak.Config.Scope; +import org.keycloak.models.KeycloakSession; +import org.keycloak.models.KeycloakSessionFactory; +import org.keycloak.services.resource.RealmResourceProvider; +import org.keycloak.services.resource.RealmResourceProviderFactory; + +public class KeycloakUserApiProviderFactory implements RealmResourceProviderFactory { + public static final String ID = "users-by-group-and-role-name"; + + @Override + public RealmResourceProvider create(KeycloakSession session) { + return new KeycloakUserApiProvider(session); + } + + @Override + public void init(Scope config) { + } + + @Override + public void postInit(KeycloakSessionFactory factory) { + } + + @Override + public void close() { + } + + @Override + public String getId() { + return ID; + } +} \ No newline at end of file diff --git a/spring-boot-modules/spring-boot-keycloak-2/src/main/resources/META-INF/services/org.keycloak.services.resource.RealmResourceProviderFactory b/spring-boot-modules/spring-boot-keycloak-2/src/main/resources/META-INF/services/org.keycloak.services.resource.RealmResourceProviderFactory new file mode 100644 index 0000000000..f11a60fd2b --- /dev/null +++ b/spring-boot-modules/spring-boot-keycloak-2/src/main/resources/META-INF/services/org.keycloak.services.resource.RealmResourceProviderFactory @@ -0,0 +1 @@ +com.baeldung.keycloak.customendpoint.KeycloakUserApiProviderFactory \ No newline at end of file diff --git a/spring-boot-modules/spring-boot-keycloak-2/src/main/resources/application-adminclient.properties b/spring-boot-modules/spring-boot-keycloak-2/src/main/resources/application-adminclient.properties new file mode 100644 index 0000000000..bafddced85 --- /dev/null +++ b/spring-boot-modules/spring-boot-keycloak-2/src/main/resources/application-adminclient.properties @@ -0,0 +1 @@ +server.port=8081 \ No newline at end of file From 7f6930e8647b7eecc048799ed71af025183a2d3e Mon Sep 17 00:00:00 2001 From: Eugene Kovko <37694937+eukovko@users.noreply.github.com> Date: Fri, 31 Mar 2023 23:27:40 +0200 Subject: [PATCH 38/85] BAEL-6282 Add Native Image Condition (#13739) --- .../ConditionalAnnotationsUnitTest.java | 25 ++++++++++--------- 1 file changed, 13 insertions(+), 12 deletions(-) diff --git a/testing-modules/junit5-annotations/src/test/java/com/baeldung/junit5/conditional/ConditionalAnnotationsUnitTest.java b/testing-modules/junit5-annotations/src/test/java/com/baeldung/junit5/conditional/ConditionalAnnotationsUnitTest.java index 0d4013116f..f4d0807dc3 100644 --- a/testing-modules/junit5-annotations/src/test/java/com/baeldung/junit5/conditional/ConditionalAnnotationsUnitTest.java +++ b/testing-modules/junit5-annotations/src/test/java/com/baeldung/junit5/conditional/ConditionalAnnotationsUnitTest.java @@ -2,18 +2,7 @@ package com.baeldung.junit5.conditional; import org.junit.jupiter.api.RepeatedTest; import org.junit.jupiter.api.Test; -import org.junit.jupiter.api.condition.DisabledForJreRange; -import org.junit.jupiter.api.condition.DisabledIfEnvironmentVariable; -import org.junit.jupiter.api.condition.DisabledIfSystemProperty; -import org.junit.jupiter.api.condition.DisabledOnJre; -import org.junit.jupiter.api.condition.DisabledOnOs; -import org.junit.jupiter.api.condition.EnabledForJreRange; -import org.junit.jupiter.api.condition.EnabledIfEnvironmentVariable; -import org.junit.jupiter.api.condition.EnabledIfSystemProperty; -import org.junit.jupiter.api.condition.EnabledOnJre; -import org.junit.jupiter.api.condition.EnabledOnOs; -import org.junit.jupiter.api.condition.JRE; -import org.junit.jupiter.api.condition.OS; +import org.junit.jupiter.api.condition.*; import org.slf4j.Logger; import org.slf4j.LoggerFactory; @@ -44,6 +33,18 @@ public class ConditionalAnnotationsUnitTest { LOGGER.debug("runs with java 10 and 11"); } + @Test + @EnabledInNativeImage + void shouldOnlyRunWithinNativeImage() { + LOGGER.debug("Should run only within native images."); + } + + @Test + @DisabledInNativeImage + void shouldNeverRunWithinNativeImage() { + LOGGER.debug("Shouldn't run within native images."); + } + @Test @EnabledForJreRange(min = JRE.JAVA_8, max = JRE.JAVA_13) public void shouldOnlyRunOnJava8UntilJava13() { From 4027e83023f985ce5b83c20d9ae0912886d08c10 Mon Sep 17 00:00:00 2001 From: Kai Yuan Date: Sat, 1 Apr 2023 17:06:23 +0200 Subject: [PATCH 39/85] [str-to-uuid] uuid from string (#13736) * [str-to-uuid] uuid from string * [str-to-uuid] rename test methods --- .../baeldung/uuid/UUIDFromStringUnitTest.java | 62 +++++++++++++++++++ 1 file changed, 62 insertions(+) create mode 100644 core-java-modules/core-java-uuid/src/test/java/com/baeldung/uuid/UUIDFromStringUnitTest.java diff --git a/core-java-modules/core-java-uuid/src/test/java/com/baeldung/uuid/UUIDFromStringUnitTest.java b/core-java-modules/core-java-uuid/src/test/java/com/baeldung/uuid/UUIDFromStringUnitTest.java new file mode 100644 index 0000000000..381d8715d5 --- /dev/null +++ b/core-java-modules/core-java-uuid/src/test/java/com/baeldung/uuid/UUIDFromStringUnitTest.java @@ -0,0 +1,62 @@ +package com.baeldung.uuid; + +import org.junit.jupiter.api.Test; + +import java.util.UUID; + +import static org.junit.jupiter.api.Assertions.*; + +public class UUIDFromStringUnitTest { + @Test + void whenStringInUUIDFormat_thenFromStringWorks() { + String inputStr = "bbcc4621-d88f-4a94-ae2f-b38072bf5087"; + + UUID uuid = UUID.fromString(inputStr); + UUID uuid2 = UUID.fromString(inputStr); + UUID uuid3 = UUID.fromString(inputStr); + + assertEquals(inputStr, uuid.toString()); + + assertEquals(uuid, uuid2); + assertEquals(uuid, uuid3); + + } + + @Test + void whenStringNotInUUIDFormat_thenFromStringRaisesException() { + String inputStr = "I am not a standard UUID representation."; + assertThrows(IllegalArgumentException.class, () -> UUID.fromString(inputStr)); + } + + @Test + void whenStringInFreeFormat_thenNameUUIDFromBytesWorks() { + String inputStr = "I am not a standard UUID representation."; + + UUID uuid = UUID.nameUUIDFromBytes(inputStr.getBytes()); + UUID uuid2 = UUID.nameUUIDFromBytes(inputStr.getBytes()); + UUID uuid3 = UUID.nameUUIDFromBytes(inputStr.getBytes()); + + assertTrue(uuid != null); + + assertEquals(uuid, uuid2); + assertEquals(uuid, uuid3); + + assertEquals(3, uuid.version()); + } + + @Test + void whenStringInFreeFormat_thenGenerateVer5UUIDWorks() { + String inputStr = "I am not a standard UUID representation."; + + UUID uuid = UUIDGenerator.generateType5UUID(inputStr); + UUID uuid2 = UUIDGenerator.generateType5UUID(inputStr); + UUID uuid3 = UUIDGenerator.generateType5UUID(inputStr); + + assertEquals(5, uuid.version()); + + assertTrue(uuid != null); + + assertEquals(uuid, uuid2); + assertEquals(uuid, uuid3); + } +} \ No newline at end of file From 51caf72619bc06ba08245ce6da19c4ca13266a1a Mon Sep 17 00:00:00 2001 From: cesarevalenti90 <50798547+cesarevalenti90@users.noreply.github.com> Date: Sun, 2 Apr 2023 17:57:11 +0200 Subject: [PATCH 40/85] BAEL-6277 - A Guide To Spring Cloud Azure (#13704) * BAEL-6255 - Run a Spring Boot application in AWS Lambda * BAEL-6255 - Run a Spring Boot application in AWS Lambda * fix on template.yaml * fix on template.yaml * removed log from test * resolved issues reported on PR * BAEL-6277 - A Guide To Spring Cloud Azure First commit * BAEL-6277 - A Guide To Spring Cloud Azure Added to README.md the steps to create the secrets * BAEL-6277 - A Guide To Spring Cloud Azure Added the integration Azure Key Vault Properties * BAEL-6277 - A Guide To Spring Cloud Azure Added the integration Azure Key Vault Properties * BAEL-6277 - A Guide To Spring Cloud Azure Key Vault Added one level package keyvault * BAEL-6277 - A Guide To Spring Cloud Azure Key Vault removed target release version * BAEL-6277 - A Guide To Spring Cloud Azure Key Vault fix compilation of NoSuchElementException * BAEL-6277 - A Guide To Spring Cloud Azure Key Vault fix pom.xml * Revert "BAEL-6277 - A Guide To Spring Cloud Azure Key Vault" This reverts commit 1cca1d0d692646001a6d7de106f3a37fb22839ce. * BAEL-6277 - A Guide To Spring Cloud Azure Key Vault fix pom.xml * BAEL-6277 - A Guide To Spring Cloud Azure Key Vault downgrade version to fix jenkins pipeline error * BAEL-6277 - A Guide To Spring Cloud Azure Key Vault comment run on main class --------- Co-authored-by: Cesare --- spring-cloud-modules/pom.xml | 3 +- .../spring-cloud-azure/README.md | 13 ++++ .../spring-cloud-azure/pom.xml | 59 +++++++++++++++++++ .../cloud/azure/keyvault/Application.java | 36 +++++++++++ .../keyvault/data/KeyVaultProperties.java | 52 ++++++++++++++++ .../service/KeyVaultAutoconfiguredClient.java | 19 ++++++ .../keyvault/service/KeyVaultClient.java | 21 +++++++ .../KeyVaultManuallyConfiguredClient.java | 31 ++++++++++ .../src/main/resources/application.yaml | 21 +++++++ .../KeyVaultAutoconfiguredClientUnitTest.java | 26 ++++++++ .../src/test/resources/application.yaml | 21 +++++++ 11 files changed, 301 insertions(+), 1 deletion(-) create mode 100644 spring-cloud-modules/spring-cloud-azure/README.md create mode 100644 spring-cloud-modules/spring-cloud-azure/pom.xml create mode 100644 spring-cloud-modules/spring-cloud-azure/src/main/java/com/baeldung/spring/cloud/azure/keyvault/Application.java create mode 100644 spring-cloud-modules/spring-cloud-azure/src/main/java/com/baeldung/spring/cloud/azure/keyvault/data/KeyVaultProperties.java create mode 100644 spring-cloud-modules/spring-cloud-azure/src/main/java/com/baeldung/spring/cloud/azure/keyvault/service/KeyVaultAutoconfiguredClient.java create mode 100644 spring-cloud-modules/spring-cloud-azure/src/main/java/com/baeldung/spring/cloud/azure/keyvault/service/KeyVaultClient.java create mode 100644 spring-cloud-modules/spring-cloud-azure/src/main/java/com/baeldung/spring/cloud/azure/keyvault/service/KeyVaultManuallyConfiguredClient.java create mode 100644 spring-cloud-modules/spring-cloud-azure/src/main/resources/application.yaml create mode 100644 spring-cloud-modules/spring-cloud-azure/src/test/java/com/baeldung/spring/cloud/azure/keyvault/KeyVaultAutoconfiguredClientUnitTest.java create mode 100644 spring-cloud-modules/spring-cloud-azure/src/test/resources/application.yaml diff --git a/spring-cloud-modules/pom.xml b/spring-cloud-modules/pom.xml index 68c7d45b7c..dafc5b628e 100644 --- a/spring-cloud-modules/pom.xml +++ b/spring-cloud-modules/pom.xml @@ -54,7 +54,8 @@ spring-cloud-bus spring-cloud-data-flow spring-cloud-sleuth - spring-cloud-open-telemetry + spring-cloud-open-telemetry + spring-cloud-azure diff --git a/spring-cloud-modules/spring-cloud-azure/README.md b/spring-cloud-modules/spring-cloud-azure/README.md new file mode 100644 index 0000000000..810efbc8dc --- /dev/null +++ b/spring-cloud-modules/spring-cloud-azure/README.md @@ -0,0 +1,13 @@ +# Spring Cloud Azure + +# Relevant Articles + +# Azure KeyVault: +In order to create the secrets, follow these steps: +- create an Azure account +- install the Azure Cli an run the following commands +- login on Azure -> _az-login_ +- create a resource group: _az group create --name spring_cloud_azure --location eastus_ +- create a keyvault storage: _az keyvault create --name new_keyvault --resource-group spring_cloud_azure --location eastus_ +- create the secrets: > az keyvault secret set --name my-database-secret --value my-database-secret-value --vault-name new_keyvault,> az keyvault secret set --name my-secret --value my-secret-value --vault-name new_keyvault +``` \ No newline at end of file diff --git a/spring-cloud-modules/spring-cloud-azure/pom.xml b/spring-cloud-modules/spring-cloud-azure/pom.xml new file mode 100644 index 0000000000..86706c794f --- /dev/null +++ b/spring-cloud-modules/spring-cloud-azure/pom.xml @@ -0,0 +1,59 @@ + + + 4.0.0 + com.baeldung.spring.cloud + spring-cloud-azure + spring-cloud-azure + + + + org.apache.maven.plugins + maven-compiler-plugin + + + + jar + Spring Cloud Azure Examples + 1.0.0-SNAPSHOT + + + com.baeldung.spring.cloud + spring-cloud-modules + 1.0.0-SNAPSHOT + + + + + org.springframework.boot + spring-boot-dependencies + 2.7.8 + pom + import + + + org.springframework.cloud + spring-cloud-dependencies + ${spring-cloud-dependencies.version} + pom + import + + + + + + + + com.azure.spring + spring-cloud-azure-starter-keyvault-secrets + ${azure-key-vault-extension-version} + + + + + 2021.0.3 + 4.0.0 + + + \ No newline at end of file diff --git a/spring-cloud-modules/spring-cloud-azure/src/main/java/com/baeldung/spring/cloud/azure/keyvault/Application.java b/spring-cloud-modules/spring-cloud-azure/src/main/java/com/baeldung/spring/cloud/azure/keyvault/Application.java new file mode 100644 index 0000000000..8a44a502de --- /dev/null +++ b/spring-cloud-modules/spring-cloud-azure/src/main/java/com/baeldung/spring/cloud/azure/keyvault/Application.java @@ -0,0 +1,36 @@ +package com.baeldung.spring.cloud.azure.keyvault; + +import org.springframework.beans.factory.annotation.Qualifier; +import org.springframework.beans.factory.annotation.Value; +import org.springframework.boot.CommandLineRunner; +import org.springframework.boot.SpringApplication; +import org.springframework.boot.autoconfigure.SpringBootApplication; + +import com.azure.security.keyvault.secrets.models.KeyVaultSecret; +import com.baeldung.spring.cloud.azure.keyvault.service.KeyVaultClient; +import com.baeldung.spring.cloud.azure.keyvault.service.KeyVaultAutoconfiguredClient; + +@SpringBootApplication +public class Application implements CommandLineRunner { + + @Value("${database.secret.value}") + private String mySecret; + + private final KeyVaultClient keyVaultClient; + + public Application(@Qualifier(value = "KeyVaultAutoconfiguredClient") KeyVaultAutoconfiguredClient keyVaultAutoconfiguredClient) { + this.keyVaultClient = keyVaultAutoconfiguredClient; + } + + public static void main(String[] args) { + SpringApplication.run(Application.class); + + } + + @Override + public void run(String... args) throws Exception { + //KeyVaultSecret keyVaultSecret = keyVaultClient.getSecret("my-secret"); + //System.out.println("Hey, our secret is here ->" + keyVaultSecret.getValue()); + //System.out.println("Hey, our secret is here from application properties file ->" + mySecret); + } +} diff --git a/spring-cloud-modules/spring-cloud-azure/src/main/java/com/baeldung/spring/cloud/azure/keyvault/data/KeyVaultProperties.java b/spring-cloud-modules/spring-cloud-azure/src/main/java/com/baeldung/spring/cloud/azure/keyvault/data/KeyVaultProperties.java new file mode 100644 index 0000000000..edd7c01416 --- /dev/null +++ b/spring-cloud-modules/spring-cloud-azure/src/main/java/com/baeldung/spring/cloud/azure/keyvault/data/KeyVaultProperties.java @@ -0,0 +1,52 @@ +package com.baeldung.spring.cloud.azure.keyvault.data; + +import org.springframework.boot.context.properties.ConfigurationProperties; +import org.springframework.boot.context.properties.ConstructorBinding; + +@ConfigurationProperties("azure.keyvault") +@ConstructorBinding +public class KeyVaultProperties { + private String vaultUrl; + private String tenantId; + private String clientId; + private String clientSecret; + + public KeyVaultProperties(String vaultUrl, String tenantId, String clientId, String clientSecret) { + this.vaultUrl = vaultUrl; + this.tenantId = tenantId; + this.clientId = clientId; + this.clientSecret = clientSecret; + } + + public String getVaultUrl() { + return vaultUrl; + } + + public void setVaultUrl(String vaultUrl) { + this.vaultUrl = vaultUrl; + } + + public String getTenantId() { + return tenantId; + } + + public void setTenantId(String tenantId) { + this.tenantId = tenantId; + } + + public String getClientId() { + return clientId; + } + + public void setClientId(String clientId) { + this.clientId = clientId; + } + + public String getClientSecret() { + return clientSecret; + } + + public void setClientSecret(String clientSecret) { + this.clientSecret = clientSecret; + } +} diff --git a/spring-cloud-modules/spring-cloud-azure/src/main/java/com/baeldung/spring/cloud/azure/keyvault/service/KeyVaultAutoconfiguredClient.java b/spring-cloud-modules/spring-cloud-azure/src/main/java/com/baeldung/spring/cloud/azure/keyvault/service/KeyVaultAutoconfiguredClient.java new file mode 100644 index 0000000000..392c15c6b4 --- /dev/null +++ b/spring-cloud-modules/spring-cloud-azure/src/main/java/com/baeldung/spring/cloud/azure/keyvault/service/KeyVaultAutoconfiguredClient.java @@ -0,0 +1,19 @@ +package com.baeldung.spring.cloud.azure.keyvault.service; + +import org.springframework.stereotype.Component; + +import com.azure.security.keyvault.secrets.SecretClient; + +@Component("KeyVaultAutoconfiguredClient") +public class KeyVaultAutoconfiguredClient implements KeyVaultClient { + private final SecretClient secretClient; + + public KeyVaultAutoconfiguredClient(SecretClient secretClient) { + this.secretClient = secretClient; + } + + @Override + public SecretClient getSecretClient() { + return secretClient; + } +} diff --git a/spring-cloud-modules/spring-cloud-azure/src/main/java/com/baeldung/spring/cloud/azure/keyvault/service/KeyVaultClient.java b/spring-cloud-modules/spring-cloud-azure/src/main/java/com/baeldung/spring/cloud/azure/keyvault/service/KeyVaultClient.java new file mode 100644 index 0000000000..4f4148250e --- /dev/null +++ b/spring-cloud-modules/spring-cloud-azure/src/main/java/com/baeldung/spring/cloud/azure/keyvault/service/KeyVaultClient.java @@ -0,0 +1,21 @@ +package com.baeldung.spring.cloud.azure.keyvault.service; + +import java.util.NoSuchElementException; + +import com.azure.security.keyvault.secrets.SecretClient; +import com.azure.security.keyvault.secrets.models.KeyVaultSecret; + +public interface KeyVaultClient { + + SecretClient getSecretClient(); + + default KeyVaultSecret getSecret(String key) { + KeyVaultSecret secret; + try { + secret = getSecretClient().getSecret(key); + } catch (Exception ex) { + throw new NoSuchElementException(); + } + return secret; + } +} diff --git a/spring-cloud-modules/spring-cloud-azure/src/main/java/com/baeldung/spring/cloud/azure/keyvault/service/KeyVaultManuallyConfiguredClient.java b/spring-cloud-modules/spring-cloud-azure/src/main/java/com/baeldung/spring/cloud/azure/keyvault/service/KeyVaultManuallyConfiguredClient.java new file mode 100644 index 0000000000..33a85f6bb9 --- /dev/null +++ b/spring-cloud-modules/spring-cloud-azure/src/main/java/com/baeldung/spring/cloud/azure/keyvault/service/KeyVaultManuallyConfiguredClient.java @@ -0,0 +1,31 @@ +package com.baeldung.spring.cloud.azure.keyvault.service; + +import org.springframework.boot.context.properties.EnableConfigurationProperties; +import org.springframework.stereotype.Component; + +import com.azure.identity.ClientSecretCredentialBuilder; +import com.azure.security.keyvault.secrets.SecretClient; +import com.azure.security.keyvault.secrets.SecretClientBuilder; +import com.baeldung.spring.cloud.azure.keyvault.data.KeyVaultProperties; + +@EnableConfigurationProperties(KeyVaultProperties.class) +@Component("KeyVaultManuallyConfiguredClient") +public class KeyVaultManuallyConfiguredClient implements KeyVaultClient { + + private KeyVaultProperties keyVaultProperties; + + private SecretClient secretClient; + + @Override + public SecretClient getSecretClient() { + if (secretClient == null) { + secretClient = new SecretClientBuilder().vaultUrl(keyVaultProperties.getVaultUrl()) + .credential(new ClientSecretCredentialBuilder().tenantId(keyVaultProperties.getTenantId()) + .clientId(keyVaultProperties.getClientId()) + .clientSecret(keyVaultProperties.getClientSecret()) + .build()) + .buildClient(); + } + return secretClient; + } +} diff --git a/spring-cloud-modules/spring-cloud-azure/src/main/resources/application.yaml b/spring-cloud-modules/spring-cloud-azure/src/main/resources/application.yaml new file mode 100644 index 0000000000..4bea8d789b --- /dev/null +++ b/spring-cloud-modules/spring-cloud-azure/src/main/resources/application.yaml @@ -0,0 +1,21 @@ +spring: + cloud: + azure: + compatibility-verifier: + enabled: false + keyvault: + secret: + property-sources[0]: + name: key-vault-property-source-1 + endpoint: https://spring-cloud-azure.vault.azure.net/ + property-source-enabled: true + endpoint: https://spring-cloud-azure.vault.azure.net/ +azure: + keyvault: + vaultUrl: myVaultUrl + tenantId: myTenantId + clientId: myClientId + clientSecret: myClientSecret +database: + secret: + value: ${my-database-secret} \ No newline at end of file diff --git a/spring-cloud-modules/spring-cloud-azure/src/test/java/com/baeldung/spring/cloud/azure/keyvault/KeyVaultAutoconfiguredClientUnitTest.java b/spring-cloud-modules/spring-cloud-azure/src/test/java/com/baeldung/spring/cloud/azure/keyvault/KeyVaultAutoconfiguredClientUnitTest.java new file mode 100644 index 0000000000..0e3779e2c2 --- /dev/null +++ b/spring-cloud-modules/spring-cloud-azure/src/test/java/com/baeldung/spring/cloud/azure/keyvault/KeyVaultAutoconfiguredClientUnitTest.java @@ -0,0 +1,26 @@ +package com.baeldung.spring.cloud.azure.keyvault; + +import java.util.NoSuchElementException; + +import org.junit.jupiter.api.Assertions; +import org.junit.jupiter.api.Test; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.beans.factory.annotation.Qualifier; +import org.springframework.boot.test.context.SpringBootTest; + +import com.baeldung.spring.cloud.azure.keyvault.service.KeyVaultAutoconfiguredClient; + +@SpringBootTest(classes = Application.class) +public class KeyVaultAutoconfiguredClientUnitTest { + + @Autowired + @Qualifier(value = "KeyVaultAutoconfiguredClient") + private KeyVaultAutoconfiguredClient keyVaultAutoconfiguredClient; + + @Test + void whenANotExistingKeyIsProvided_thenShouldReturnAnError() { + String secretKey = "mySecret"; + Assertions.assertThrows(NoSuchElementException.class, () -> keyVaultAutoconfiguredClient.getSecret(secretKey)); + } + +} diff --git a/spring-cloud-modules/spring-cloud-azure/src/test/resources/application.yaml b/spring-cloud-modules/spring-cloud-azure/src/test/resources/application.yaml new file mode 100644 index 0000000000..88c54b32eb --- /dev/null +++ b/spring-cloud-modules/spring-cloud-azure/src/test/resources/application.yaml @@ -0,0 +1,21 @@ +spring: + cloud: + azure: + compatibility-verifier: + enabled: false + keyvault: + secret: + endpoint: https://spring-cloud-azure.vault.azure.net/ + property-source-enabled: true + property-sources: + name: key-vault-property-source-1 + endpoint: https://spring-cloud-azure.vault.azure.net/ +azure: + keyvault: + vaultUrl: myVaultUrl + tenantId: myTenantId + clientId: myClientId + clientSecret: myClientSecret +database: + secret: + value: my-database-secret \ No newline at end of file From d21e03938e0c67283ae85eb61df24a99e3540323 Mon Sep 17 00:00:00 2001 From: Viktor Ardelean Date: Mon, 3 Apr 2023 00:00:58 +0300 Subject: [PATCH 41/85] BAEL-6093 add spring boot 3 url matching code sample (#13744) --- .../spring-boot-3-url-matching/README.md | 1 + .../spring-boot-3-url-matching/pom.xml | 101 ++++++++++++++++++ .../sample/URLMatchingApplication.java | 12 +++ .../com/baeldung/sample/config/WebConfig.java | 31 ++++++ .../filters/TrailingSlashRedirectFilter.java | 52 +++++++++ .../TrailingSlashRedirectFilterReactive.java | 27 +++++ .../sample/resources/GreetingsController.java | 19 ++++ .../GreetingsControllerReactive.java | 20 ++++ .../src/main/resources/application.yml | 7 ++ ...GreetingsControllerApiIntegrationTest.java | 45 ++++++++ ...sControllerReactiveApiIntegrationTest.java | 46 ++++++++ 11 files changed, 361 insertions(+) create mode 100644 spring-boot-modules/spring-boot-3-url-matching/README.md create mode 100644 spring-boot-modules/spring-boot-3-url-matching/pom.xml create mode 100644 spring-boot-modules/spring-boot-3-url-matching/src/main/java/com/baeldung/sample/URLMatchingApplication.java create mode 100644 spring-boot-modules/spring-boot-3-url-matching/src/main/java/com/baeldung/sample/config/WebConfig.java create mode 100644 spring-boot-modules/spring-boot-3-url-matching/src/main/java/com/baeldung/sample/filters/TrailingSlashRedirectFilter.java create mode 100644 spring-boot-modules/spring-boot-3-url-matching/src/main/java/com/baeldung/sample/filters/TrailingSlashRedirectFilterReactive.java create mode 100644 spring-boot-modules/spring-boot-3-url-matching/src/main/java/com/baeldung/sample/resources/GreetingsController.java create mode 100644 spring-boot-modules/spring-boot-3-url-matching/src/main/java/com/baeldung/sample/resources/GreetingsControllerReactive.java create mode 100644 spring-boot-modules/spring-boot-3-url-matching/src/main/resources/application.yml create mode 100644 spring-boot-modules/spring-boot-3-url-matching/src/test/java/com/baeldung/sample/resources/GreetingsControllerApiIntegrationTest.java create mode 100644 spring-boot-modules/spring-boot-3-url-matching/src/test/java/com/baeldung/sample/resources/GreetingsControllerReactiveApiIntegrationTest.java diff --git a/spring-boot-modules/spring-boot-3-url-matching/README.md b/spring-boot-modules/spring-boot-3-url-matching/README.md new file mode 100644 index 0000000000..8b13789179 --- /dev/null +++ b/spring-boot-modules/spring-boot-3-url-matching/README.md @@ -0,0 +1 @@ + diff --git a/spring-boot-modules/spring-boot-3-url-matching/pom.xml b/spring-boot-modules/spring-boot-3-url-matching/pom.xml new file mode 100644 index 0000000000..ca8213e1cf --- /dev/null +++ b/spring-boot-modules/spring-boot-3-url-matching/pom.xml @@ -0,0 +1,101 @@ + + + 4.0.0 + spring-boot-3 + 0.0.1-SNAPSHOT + spring-boot-3 + URL Matching in Spring Boot + + + com.baeldung + parent-boot-3 + 0.0.1-SNAPSHOT + ../../parent-boot-3 + + + + + org.springframework.boot + spring-boot-starter-web + + + org.springframework.boot + spring-boot-starter-hateoas + + + org.springframework.boot + spring-boot-starter-validation + + + org.springframework.boot + spring-boot-devtools + runtime + true + + + org.springframework.boot + spring-boot-configuration-processor + true + + + org.springframework.boot + spring-boot-starter-test + + + org.springframework + spring-test + 6.0.6 + test + + + javax.servlet + javax.servlet-api + 3.1.0 + provided + + + org.springframework.boot + spring-boot-starter-webflux + + + io.projectreactor + reactor-core + 3.5.4 + + + io.projectreactor + reactor-test + 3.5.4 + test + + + + + + + + org.apache.maven.plugins + maven-compiler-plugin + + + + org.springframework.boot + spring-boot-maven-plugin + + + + + + org.springframework.boot + spring-boot-maven-plugin + + + + + + 3.0.0-M7 + + + \ No newline at end of file diff --git a/spring-boot-modules/spring-boot-3-url-matching/src/main/java/com/baeldung/sample/URLMatchingApplication.java b/spring-boot-modules/spring-boot-3-url-matching/src/main/java/com/baeldung/sample/URLMatchingApplication.java new file mode 100644 index 0000000000..914f2e1e53 --- /dev/null +++ b/spring-boot-modules/spring-boot-3-url-matching/src/main/java/com/baeldung/sample/URLMatchingApplication.java @@ -0,0 +1,12 @@ +package com.baeldung.sample; + +import org.springframework.boot.SpringApplication; +import org.springframework.boot.autoconfigure.SpringBootApplication; +import org.springframework.boot.autoconfigure.jdbc.DataSourceAutoConfiguration; + +@SpringBootApplication(exclude = { DataSourceAutoConfiguration.class }) +public class URLMatchingApplication { + public static void main(String[] args) { + SpringApplication.run(URLMatchingApplication.class, args); + } +} diff --git a/spring-boot-modules/spring-boot-3-url-matching/src/main/java/com/baeldung/sample/config/WebConfig.java b/spring-boot-modules/spring-boot-3-url-matching/src/main/java/com/baeldung/sample/config/WebConfig.java new file mode 100644 index 0000000000..d4b70c63fa --- /dev/null +++ b/spring-boot-modules/spring-boot-3-url-matching/src/main/java/com/baeldung/sample/config/WebConfig.java @@ -0,0 +1,31 @@ +package com.baeldung.sample.config; + +import com.baeldung.sample.filters.TrailingSlashRedirectFilterReactive; +import jakarta.servlet.Filter; +import org.springframework.web.server.WebFilter; +import org.springframework.boot.web.servlet.FilterRegistrationBean; +import org.springframework.context.annotation.Bean; +import org.springframework.context.annotation.Configuration; + +import com.baeldung.sample.filters.TrailingSlashRedirectFilter; + + + +@Configuration +public class WebConfig { + @Bean + public WebFilter trailingSlashRedirectReactiveFilter() { + return new TrailingSlashRedirectFilterReactive(); + } + @Bean + public Filter trailingSlashRedirectFilter() { + return new TrailingSlashRedirectFilter(); + } + @Bean + public FilterRegistrationBean trailingSlashFilter() { + FilterRegistrationBean registrationBean = new FilterRegistrationBean<>(); + registrationBean.setFilter(trailingSlashRedirectFilter()); + registrationBean.addUrlPatterns("/*"); + return registrationBean; + } +} diff --git a/spring-boot-modules/spring-boot-3-url-matching/src/main/java/com/baeldung/sample/filters/TrailingSlashRedirectFilter.java b/spring-boot-modules/spring-boot-3-url-matching/src/main/java/com/baeldung/sample/filters/TrailingSlashRedirectFilter.java new file mode 100644 index 0000000000..6db83b73f2 --- /dev/null +++ b/spring-boot-modules/spring-boot-3-url-matching/src/main/java/com/baeldung/sample/filters/TrailingSlashRedirectFilter.java @@ -0,0 +1,52 @@ +package com.baeldung.sample.filters; + +import java.io.IOException; +import jakarta.servlet.http.HttpServletRequestWrapper; +import org.springframework.stereotype.Component; +import jakarta.servlet.Filter; +import jakarta.servlet.FilterChain; +import jakarta.servlet.ServletException; +import jakarta.servlet.ServletRequest; +import jakarta.servlet.ServletResponse; +import jakarta.servlet.http.HttpServletRequest; + +@Component +public class TrailingSlashRedirectFilter implements Filter { + @Override + public void doFilter(ServletRequest request, ServletResponse response, FilterChain chain) + throws IOException, ServletException { + HttpServletRequest httpRequest = (HttpServletRequest) request; + String path = httpRequest.getRequestURI(); + + if (path.endsWith("/")) { + String newPath = path.substring(0, path.length() - 1); + HttpServletRequest newRequest = new CustomHttpServletRequestWrapper(httpRequest, newPath); + chain.doFilter(newRequest, response); + } else { + chain.doFilter(request, response); + } + } + + private static class CustomHttpServletRequestWrapper extends HttpServletRequestWrapper { + + private final String newPath; + + public CustomHttpServletRequestWrapper(HttpServletRequest request, String newPath) { + super(request); + this.newPath = newPath; + } + + @Override + public String getRequestURI() { + return newPath; + } + + @Override + public StringBuffer getRequestURL() { + StringBuffer url = new StringBuffer(); + url.append(getScheme()).append("://").append(getServerName()).append(":").append(getServerPort()) + .append(newPath); + return url; + } + } +} diff --git a/spring-boot-modules/spring-boot-3-url-matching/src/main/java/com/baeldung/sample/filters/TrailingSlashRedirectFilterReactive.java b/spring-boot-modules/spring-boot-3-url-matching/src/main/java/com/baeldung/sample/filters/TrailingSlashRedirectFilterReactive.java new file mode 100644 index 0000000000..f983d81441 --- /dev/null +++ b/spring-boot-modules/spring-boot-3-url-matching/src/main/java/com/baeldung/sample/filters/TrailingSlashRedirectFilterReactive.java @@ -0,0 +1,27 @@ +package com.baeldung.sample.filters; + +import org.springframework.http.server.reactive.ServerHttpRequest; +import org.springframework.stereotype.Component; +import org.springframework.web.server.ServerWebExchange; +import org.springframework.web.server.WebFilter; +import org.springframework.web.server.WebFilterChain; + +import reactor.core.publisher.Mono; + +@Component +public class TrailingSlashRedirectFilterReactive implements WebFilter { + + @Override + public Mono filter(ServerWebExchange exchange, WebFilterChain chain) { + ServerHttpRequest request = exchange.getRequest(); + String path = request.getPath().value(); + + if (path.endsWith("/")) { + String newPath = path.substring(0, path.length() - 1); + ServerHttpRequest newRequest = request.mutate().path(newPath).build(); + return chain.filter(exchange.mutate().request(newRequest).build()); + } + + return chain.filter(exchange); + } +} diff --git a/spring-boot-modules/spring-boot-3-url-matching/src/main/java/com/baeldung/sample/resources/GreetingsController.java b/spring-boot-modules/spring-boot-3-url-matching/src/main/java/com/baeldung/sample/resources/GreetingsController.java new file mode 100644 index 0000000000..5c98ed764e --- /dev/null +++ b/spring-boot-modules/spring-boot-3-url-matching/src/main/java/com/baeldung/sample/resources/GreetingsController.java @@ -0,0 +1,19 @@ +package com.baeldung.sample.resources; + +import org.springframework.web.bind.annotation.GetMapping; +import org.springframework.web.bind.annotation.RestController; + +@RestController +public class GreetingsController { + + @GetMapping("/some/greeting") + public String greeting() { + return "Hello"; + } + + @GetMapping("/some/greeting/") + public String greetingTrailingSlash() { + return "Hello with slash"; + } + +} diff --git a/spring-boot-modules/spring-boot-3-url-matching/src/main/java/com/baeldung/sample/resources/GreetingsControllerReactive.java b/spring-boot-modules/spring-boot-3-url-matching/src/main/java/com/baeldung/sample/resources/GreetingsControllerReactive.java new file mode 100644 index 0000000000..fde353ac43 --- /dev/null +++ b/spring-boot-modules/spring-boot-3-url-matching/src/main/java/com/baeldung/sample/resources/GreetingsControllerReactive.java @@ -0,0 +1,20 @@ +package com.baeldung.sample.resources; + +import org.springframework.web.bind.annotation.GetMapping; +import org.springframework.web.bind.annotation.RestController; + +import reactor.core.publisher.Mono; + +@RestController +public class GreetingsControllerReactive { + + @GetMapping("/some/reactive/greeting") + public Mono greeting() { + return Mono.just("Hello reactive"); + } + + @GetMapping("/some/reactive/greeting/") + public Mono greetingTrailingSlash() { + return Mono.just("Hello with slash reactive"); + } +} diff --git a/spring-boot-modules/spring-boot-3-url-matching/src/main/resources/application.yml b/spring-boot-modules/spring-boot-3-url-matching/src/main/resources/application.yml new file mode 100644 index 0000000000..8d047336f6 --- /dev/null +++ b/spring-boot-modules/spring-boot-3-url-matching/src/main/resources/application.yml @@ -0,0 +1,7 @@ +spring: + mvc: + throw-exception-if-no-handler-found: true + jackson: + deserialization: + FAIL_ON_UNKNOWN_PROPERTIES: true + property-naming-strategy: SNAKE_CASE diff --git a/spring-boot-modules/spring-boot-3-url-matching/src/test/java/com/baeldung/sample/resources/GreetingsControllerApiIntegrationTest.java b/spring-boot-modules/spring-boot-3-url-matching/src/test/java/com/baeldung/sample/resources/GreetingsControllerApiIntegrationTest.java new file mode 100644 index 0000000000..754ef4aafe --- /dev/null +++ b/spring-boot-modules/spring-boot-3-url-matching/src/test/java/com/baeldung/sample/resources/GreetingsControllerApiIntegrationTest.java @@ -0,0 +1,45 @@ +package com.baeldung.sample.resources; + +import static org.springframework.test.web.servlet.request.MockMvcRequestBuilders.get; +import static org.springframework.test.web.servlet.result.MockMvcResultMatchers.content; +import static org.springframework.test.web.servlet.result.MockMvcResultMatchers.status; + +import org.junit.jupiter.api.Disabled; +import org.junit.jupiter.api.Test; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.boot.test.autoconfigure.web.servlet.WebMvcTest; +import org.springframework.http.MediaType; +import org.springframework.test.web.servlet.MockMvc; + +@WebMvcTest(controllers = GreetingsController.class) +class GreetingsControllerApiIntegrationTest { + + private static final String BASEURL = "/some"; + private static final String DEFAULT_MEDIA_TYPE = MediaType.APPLICATION_JSON_VALUE; + + @Autowired + MockMvc mvc; + + @Test + public void testGreeting() throws Exception { + mvc.perform(get(BASEURL + "/greeting").accept(DEFAULT_MEDIA_TYPE)) + .andExpect(status().isOk()) + .andExpect(content().string("Hello")); + } + + @Test + @Disabled("Disabled while TrailingSlashRedirectFilter is in use.") + public void testGreetingTrailingSlash() throws Exception { + mvc.perform(get(BASEURL + "/greeting/").accept(DEFAULT_MEDIA_TYPE)) + .andExpect(status().isOk()) + .andExpect(content().string("Hello with slash")); + } + + @Test + public void testGreetingTrailingSlashWithFilter() throws Exception { + mvc.perform(get(BASEURL + "/greeting/").accept(DEFAULT_MEDIA_TYPE)) + .andExpect(status().isOk()) + .andExpect(content().string("Hello")); + } + +} diff --git a/spring-boot-modules/spring-boot-3-url-matching/src/test/java/com/baeldung/sample/resources/GreetingsControllerReactiveApiIntegrationTest.java b/spring-boot-modules/spring-boot-3-url-matching/src/test/java/com/baeldung/sample/resources/GreetingsControllerReactiveApiIntegrationTest.java new file mode 100644 index 0000000000..9d5e439a74 --- /dev/null +++ b/spring-boot-modules/spring-boot-3-url-matching/src/test/java/com/baeldung/sample/resources/GreetingsControllerReactiveApiIntegrationTest.java @@ -0,0 +1,46 @@ +package com.baeldung.sample.resources; + +import org.junit.jupiter.api.Disabled; +import org.junit.jupiter.api.Test; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.boot.test.autoconfigure.web.reactive.WebFluxTest; +import org.springframework.test.web.reactive.server.WebTestClient; +import static org.junit.jupiter.api.Assertions.assertTrue; + +@WebFluxTest +public class GreetingsControllerReactiveApiIntegrationTest { + private static final String BASEURL = "/some/reactive"; + @Autowired + private WebTestClient webClient; + @Test + public void testGreeting() { + webClient.get().uri( BASEURL + "/greeting") + .exchange() + .expectStatus().isOk() + .expectBody().consumeWith(result -> { + String responseBody = new String(result.getResponseBody()); + assertTrue(responseBody.contains("Hello reactive")); + }); + } + @Test + @Disabled("Disabled while TrailingSlashRedirectFilter is in use.") + public void testGreetingTrailingSlash() { + webClient.get().uri(BASEURL + "/greeting/") + .exchange() + .expectStatus().isOk() + .expectBody().consumeWith(result -> { + String responseBody = new String(result.getResponseBody()); + assertTrue(responseBody.contains("Hello with slash reactive")); + }); + } + @Test + public void testGreetingTrailingSlashWithFilter() { + webClient.get().uri(BASEURL + "/greeting/") + .exchange() + .expectStatus().isOk() + .expectBody().consumeWith(result -> { + String responseBody = new String(result.getResponseBody()); + assertTrue(responseBody.contains("Hello reactive")); + }); + } +} From 7e318cbd4432a3a26773a85e0bec1c1a4b4fcd7d Mon Sep 17 00:00:00 2001 From: Chris <34248815+chrisociepa@users.noreply.github.com> Date: Mon, 3 Apr 2023 08:59:45 +0200 Subject: [PATCH 42/85] Prevent NPE when trying to create a deep copy (#13513) --- .../baeldung/hibernate/arraymapping/CustomIntegerArrayType.java | 2 +- .../baeldung/hibernate/arraymapping/CustomStringArrayType.java | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/persistence-modules/hibernate-mapping/src/main/java/com/baeldung/hibernate/arraymapping/CustomIntegerArrayType.java b/persistence-modules/hibernate-mapping/src/main/java/com/baeldung/hibernate/arraymapping/CustomIntegerArrayType.java index 233bb95dc1..eedaf2529f 100644 --- a/persistence-modules/hibernate-mapping/src/main/java/com/baeldung/hibernate/arraymapping/CustomIntegerArrayType.java +++ b/persistence-modules/hibernate-mapping/src/main/java/com/baeldung/hibernate/arraymapping/CustomIntegerArrayType.java @@ -59,7 +59,7 @@ public class CustomIntegerArrayType implements UserType { @Override public Object deepCopy(Object value) throws HibernateException { Integer[] a = (Integer[])value; - return Arrays.copyOf(a, a.length); + return a != null ? Arrays.copyOf(a, a.length) : null; } @Override diff --git a/persistence-modules/hibernate-mapping/src/main/java/com/baeldung/hibernate/arraymapping/CustomStringArrayType.java b/persistence-modules/hibernate-mapping/src/main/java/com/baeldung/hibernate/arraymapping/CustomStringArrayType.java index 7bd284def7..7d3893393e 100644 --- a/persistence-modules/hibernate-mapping/src/main/java/com/baeldung/hibernate/arraymapping/CustomStringArrayType.java +++ b/persistence-modules/hibernate-mapping/src/main/java/com/baeldung/hibernate/arraymapping/CustomStringArrayType.java @@ -59,7 +59,7 @@ public class CustomStringArrayType implements UserType { @Override public Object deepCopy(Object value) throws HibernateException { String[] a = (String[])value; - return Arrays.copyOf(a, a.length); + return a != null ? Arrays.copyOf(a, a.length) : null; } @Override From 8e4f8366d29e9b243120da60bd88fc29dbfb6b1d Mon Sep 17 00:00:00 2001 From: Bipin kumar Date: Mon, 3 Apr 2023 19:54:23 +0530 Subject: [PATCH 43/85] JAVA-19726: Changes made for cleaning code (#13763) * JAVA-19726: Changes made for cleaning code * JAVA-19726: Changes made for cleaning code * JAVA-19726: Changes made for cleaning code --- .../hibernate/arraymapping/CustomIntegerArrayType.java | 5 +++-- .../hibernate/arraymapping/CustomStringArrayType.java | 5 +++-- 2 files changed, 6 insertions(+), 4 deletions(-) diff --git a/persistence-modules/hibernate-mapping/src/main/java/com/baeldung/hibernate/arraymapping/CustomIntegerArrayType.java b/persistence-modules/hibernate-mapping/src/main/java/com/baeldung/hibernate/arraymapping/CustomIntegerArrayType.java index eedaf2529f..1155a59a57 100644 --- a/persistence-modules/hibernate-mapping/src/main/java/com/baeldung/hibernate/arraymapping/CustomIntegerArrayType.java +++ b/persistence-modules/hibernate-mapping/src/main/java/com/baeldung/hibernate/arraymapping/CustomIntegerArrayType.java @@ -7,6 +7,7 @@ import java.sql.ResultSet; import java.sql.SQLException; import java.sql.Types; import java.util.Arrays; +import java.util.Objects; import org.hibernate.HibernateException; import org.hibernate.engine.spi.SharedSessionContractImplementor; @@ -58,8 +59,8 @@ public class CustomIntegerArrayType implements UserType { @Override public Object deepCopy(Object value) throws HibernateException { - Integer[] a = (Integer[])value; - return a != null ? Arrays.copyOf(a, a.length) : null; + Integer[] arr = (Integer[]) value; + return arr != null ? Arrays.copyOf(arr, arr.length) : null; } @Override diff --git a/persistence-modules/hibernate-mapping/src/main/java/com/baeldung/hibernate/arraymapping/CustomStringArrayType.java b/persistence-modules/hibernate-mapping/src/main/java/com/baeldung/hibernate/arraymapping/CustomStringArrayType.java index 7d3893393e..ce50196513 100644 --- a/persistence-modules/hibernate-mapping/src/main/java/com/baeldung/hibernate/arraymapping/CustomStringArrayType.java +++ b/persistence-modules/hibernate-mapping/src/main/java/com/baeldung/hibernate/arraymapping/CustomStringArrayType.java @@ -7,6 +7,7 @@ import java.sql.ResultSet; import java.sql.SQLException; import java.sql.Types; import java.util.Arrays; +import java.util.Objects; import org.hibernate.HibernateException; import org.hibernate.engine.spi.SharedSessionContractImplementor; @@ -58,8 +59,8 @@ public class CustomStringArrayType implements UserType { @Override public Object deepCopy(Object value) throws HibernateException { - String[] a = (String[])value; - return a != null ? Arrays.copyOf(a, a.length) : null; + String[] arr = (String[]) value; + return arr != null ? Arrays.copyOf(arr, arr.length) : null; } @Override From cf53d94739983e04cd86f877a07f0b6bcd28c8f1 Mon Sep 17 00:00:00 2001 From: anuragkumawat Date: Mon, 3 Apr 2023 21:11:26 +0530 Subject: [PATCH 44/85] JAVA-19549 Move A Spring Custom Annotation for a Better DAO article from spring-core-3 module to spring-data-jpa-annotations module (#13748) --- persistence-modules/spring-data-jpa-annotations/README.md | 1 + .../baeldung/customannotation/CustomAnnotationConfiguration.java | 0 .../src/main/java/com/baeldung/customannotation/DataAccess.java | 0 .../baeldung/customannotation/DataAccessAnnotationProcessor.java | 0 .../com/baeldung/customannotation/DataAccessFieldCallback.java | 0 .../src/main/java/com/baeldung/customannotation/GenericDAO.java | 0 .../src/test/java/com/baeldung/customannotation/Account.java | 0 .../java/com/baeldung/customannotation/BeanWithGenericDAO.java | 0 .../customannotation/DataAccessAnnotationIntegrationTest.java | 0 .../customannotation/DataAccessFieldCallbackIntegrationTest.java | 0 .../src/test/java/com/baeldung/customannotation/Person.java | 0 spring-core-3/README.md | 1 - 12 files changed, 1 insertion(+), 1 deletion(-) rename {spring-core-3 => persistence-modules/spring-data-jpa-annotations}/src/main/java/com/baeldung/customannotation/CustomAnnotationConfiguration.java (100%) rename {spring-core-3 => persistence-modules/spring-data-jpa-annotations}/src/main/java/com/baeldung/customannotation/DataAccess.java (100%) rename {spring-core-3 => persistence-modules/spring-data-jpa-annotations}/src/main/java/com/baeldung/customannotation/DataAccessAnnotationProcessor.java (100%) rename {spring-core-3 => persistence-modules/spring-data-jpa-annotations}/src/main/java/com/baeldung/customannotation/DataAccessFieldCallback.java (100%) rename {spring-core-3 => persistence-modules/spring-data-jpa-annotations}/src/main/java/com/baeldung/customannotation/GenericDAO.java (100%) rename {spring-core-3 => persistence-modules/spring-data-jpa-annotations}/src/test/java/com/baeldung/customannotation/Account.java (100%) rename {spring-core-3 => persistence-modules/spring-data-jpa-annotations}/src/test/java/com/baeldung/customannotation/BeanWithGenericDAO.java (100%) rename {spring-core-3 => persistence-modules/spring-data-jpa-annotations}/src/test/java/com/baeldung/customannotation/DataAccessAnnotationIntegrationTest.java (100%) rename {spring-core-3 => persistence-modules/spring-data-jpa-annotations}/src/test/java/com/baeldung/customannotation/DataAccessFieldCallbackIntegrationTest.java (100%) rename {spring-core-3 => persistence-modules/spring-data-jpa-annotations}/src/test/java/com/baeldung/customannotation/Person.java (100%) diff --git a/persistence-modules/spring-data-jpa-annotations/README.md b/persistence-modules/spring-data-jpa-annotations/README.md index 5a5440b1ed..d7e6189ae5 100644 --- a/persistence-modules/spring-data-jpa-annotations/README.md +++ b/persistence-modules/spring-data-jpa-annotations/README.md @@ -10,6 +10,7 @@ This module contains articles about annotations used in Spring Data JPA - [Programmatic Transaction Management in Spring](https://www.baeldung.com/spring-programmatic-transaction-management) - [JPA Entity Lifecycle Events](https://www.baeldung.com/jpa-entity-lifecycle-events) - [Overriding Column Definition With @AttributeOverride](https://www.baeldung.com/jpa-attributeoverride) +- [A Spring Custom Annotation for a Better DAO](http://www.baeldung.com/spring-annotation-bean-pre-processor) ### Eclipse Config After importing the project into Eclipse, you may see the following error: diff --git a/spring-core-3/src/main/java/com/baeldung/customannotation/CustomAnnotationConfiguration.java b/persistence-modules/spring-data-jpa-annotations/src/main/java/com/baeldung/customannotation/CustomAnnotationConfiguration.java similarity index 100% rename from spring-core-3/src/main/java/com/baeldung/customannotation/CustomAnnotationConfiguration.java rename to persistence-modules/spring-data-jpa-annotations/src/main/java/com/baeldung/customannotation/CustomAnnotationConfiguration.java diff --git a/spring-core-3/src/main/java/com/baeldung/customannotation/DataAccess.java b/persistence-modules/spring-data-jpa-annotations/src/main/java/com/baeldung/customannotation/DataAccess.java similarity index 100% rename from spring-core-3/src/main/java/com/baeldung/customannotation/DataAccess.java rename to persistence-modules/spring-data-jpa-annotations/src/main/java/com/baeldung/customannotation/DataAccess.java diff --git a/spring-core-3/src/main/java/com/baeldung/customannotation/DataAccessAnnotationProcessor.java b/persistence-modules/spring-data-jpa-annotations/src/main/java/com/baeldung/customannotation/DataAccessAnnotationProcessor.java similarity index 100% rename from spring-core-3/src/main/java/com/baeldung/customannotation/DataAccessAnnotationProcessor.java rename to persistence-modules/spring-data-jpa-annotations/src/main/java/com/baeldung/customannotation/DataAccessAnnotationProcessor.java diff --git a/spring-core-3/src/main/java/com/baeldung/customannotation/DataAccessFieldCallback.java b/persistence-modules/spring-data-jpa-annotations/src/main/java/com/baeldung/customannotation/DataAccessFieldCallback.java similarity index 100% rename from spring-core-3/src/main/java/com/baeldung/customannotation/DataAccessFieldCallback.java rename to persistence-modules/spring-data-jpa-annotations/src/main/java/com/baeldung/customannotation/DataAccessFieldCallback.java diff --git a/spring-core-3/src/main/java/com/baeldung/customannotation/GenericDAO.java b/persistence-modules/spring-data-jpa-annotations/src/main/java/com/baeldung/customannotation/GenericDAO.java similarity index 100% rename from spring-core-3/src/main/java/com/baeldung/customannotation/GenericDAO.java rename to persistence-modules/spring-data-jpa-annotations/src/main/java/com/baeldung/customannotation/GenericDAO.java diff --git a/spring-core-3/src/test/java/com/baeldung/customannotation/Account.java b/persistence-modules/spring-data-jpa-annotations/src/test/java/com/baeldung/customannotation/Account.java similarity index 100% rename from spring-core-3/src/test/java/com/baeldung/customannotation/Account.java rename to persistence-modules/spring-data-jpa-annotations/src/test/java/com/baeldung/customannotation/Account.java diff --git a/spring-core-3/src/test/java/com/baeldung/customannotation/BeanWithGenericDAO.java b/persistence-modules/spring-data-jpa-annotations/src/test/java/com/baeldung/customannotation/BeanWithGenericDAO.java similarity index 100% rename from spring-core-3/src/test/java/com/baeldung/customannotation/BeanWithGenericDAO.java rename to persistence-modules/spring-data-jpa-annotations/src/test/java/com/baeldung/customannotation/BeanWithGenericDAO.java diff --git a/spring-core-3/src/test/java/com/baeldung/customannotation/DataAccessAnnotationIntegrationTest.java b/persistence-modules/spring-data-jpa-annotations/src/test/java/com/baeldung/customannotation/DataAccessAnnotationIntegrationTest.java similarity index 100% rename from spring-core-3/src/test/java/com/baeldung/customannotation/DataAccessAnnotationIntegrationTest.java rename to persistence-modules/spring-data-jpa-annotations/src/test/java/com/baeldung/customannotation/DataAccessAnnotationIntegrationTest.java diff --git a/spring-core-3/src/test/java/com/baeldung/customannotation/DataAccessFieldCallbackIntegrationTest.java b/persistence-modules/spring-data-jpa-annotations/src/test/java/com/baeldung/customannotation/DataAccessFieldCallbackIntegrationTest.java similarity index 100% rename from spring-core-3/src/test/java/com/baeldung/customannotation/DataAccessFieldCallbackIntegrationTest.java rename to persistence-modules/spring-data-jpa-annotations/src/test/java/com/baeldung/customannotation/DataAccessFieldCallbackIntegrationTest.java diff --git a/spring-core-3/src/test/java/com/baeldung/customannotation/Person.java b/persistence-modules/spring-data-jpa-annotations/src/test/java/com/baeldung/customannotation/Person.java similarity index 100% rename from spring-core-3/src/test/java/com/baeldung/customannotation/Person.java rename to persistence-modules/spring-data-jpa-annotations/src/test/java/com/baeldung/customannotation/Person.java diff --git a/spring-core-3/README.md b/spring-core-3/README.md index 7232ad71a1..394f6e1857 100644 --- a/spring-core-3/README.md +++ b/spring-core-3/README.md @@ -9,6 +9,5 @@ This module contains articles about core Spring functionality - [How to use the Spring FactoryBean?](https://www.baeldung.com/spring-factorybean) - [Design Patterns in the Spring Framework](https://www.baeldung.com/spring-framework-design-patterns) - [Difference Between BeanFactory and ApplicationContext](https://www.baeldung.com/spring-beanfactory-vs-applicationcontext) -- [A Spring Custom Annotation for a Better DAO](http://www.baeldung.com/spring-annotation-bean-pre-processor) - [Custom Scope in Spring](http://www.baeldung.com/spring-custom-scope) - More articles: [[<-- prev]](/spring-core-2) [[next -->]](/spring-core-4) From 8ab289d9440ccf28236b8a9589891abbc7f9fb53 Mon Sep 17 00:00:00 2001 From: anuragkumawat Date: Mon, 3 Apr 2023 22:14:08 +0530 Subject: [PATCH 45/85] JAVA-19554 Move Constructor Injection in Spring with Lombok article from spring-core-4 module to lombok-2 module (#13758) --- lombok-modules/lombok-2/README.md | 1 + lombok-modules/lombok-2/pom.xml | 4 ++++ .../src/main/java/com/baeldung/lombok/ApologizeService.java | 0 .../src/main/java/com/baeldung/lombok/FarewellService.java | 0 .../src/main/java/com/baeldung/lombok/GreetingService.java | 0 .../src/main/java/com/baeldung/lombok/ThankingService.java | 0 .../src/main/java/com/baeldung/lombok/Translator.java | 0 .../lombok/ApologizeServiceAutowiringIntegrationTest.java | 0 .../com/baeldung/lombok/ApologizeServiceIntegrationTest.java | 0 .../baeldung/lombok/FarewellAutowiringIntegrationTest.java | 0 .../com/baeldung/lombok/FarewellServiceIntegrationTest.java | 0 .../com/baeldung/lombok/GreetingServiceIntegrationTest.java | 0 .../src/test/java/com/baeldung/lombok/TestConfig.java | 0 .../lombok/ThankingServiceAutowiringIntegrationTest.java | 0 .../com/baeldung/lombok/ThankingServiceIntegrationTest.java | 0 spring-core-4/README.md | 1 - 16 files changed, 5 insertions(+), 1 deletion(-) rename {spring-core-4 => lombok-modules/lombok-2}/src/main/java/com/baeldung/lombok/ApologizeService.java (100%) rename {spring-core-4 => lombok-modules/lombok-2}/src/main/java/com/baeldung/lombok/FarewellService.java (100%) rename {spring-core-4 => lombok-modules/lombok-2}/src/main/java/com/baeldung/lombok/GreetingService.java (100%) rename {spring-core-4 => lombok-modules/lombok-2}/src/main/java/com/baeldung/lombok/ThankingService.java (100%) rename {spring-core-4 => lombok-modules/lombok-2}/src/main/java/com/baeldung/lombok/Translator.java (100%) rename {spring-core-4 => lombok-modules/lombok-2}/src/test/java/com/baeldung/lombok/ApologizeServiceAutowiringIntegrationTest.java (100%) rename {spring-core-4 => lombok-modules/lombok-2}/src/test/java/com/baeldung/lombok/ApologizeServiceIntegrationTest.java (100%) rename {spring-core-4 => lombok-modules/lombok-2}/src/test/java/com/baeldung/lombok/FarewellAutowiringIntegrationTest.java (100%) rename {spring-core-4 => lombok-modules/lombok-2}/src/test/java/com/baeldung/lombok/FarewellServiceIntegrationTest.java (100%) rename {spring-core-4 => lombok-modules/lombok-2}/src/test/java/com/baeldung/lombok/GreetingServiceIntegrationTest.java (100%) rename {spring-core-4 => lombok-modules/lombok-2}/src/test/java/com/baeldung/lombok/TestConfig.java (100%) rename {spring-core-4 => lombok-modules/lombok-2}/src/test/java/com/baeldung/lombok/ThankingServiceAutowiringIntegrationTest.java (100%) rename {spring-core-4 => lombok-modules/lombok-2}/src/test/java/com/baeldung/lombok/ThankingServiceIntegrationTest.java (100%) diff --git a/lombok-modules/lombok-2/README.md b/lombok-modules/lombok-2/README.md index d3b1287346..55149c0312 100644 --- a/lombok-modules/lombok-2/README.md +++ b/lombok-modules/lombok-2/README.md @@ -9,4 +9,5 @@ This module contains articles about Project Lombok. - [Lombok Using @With Annotations](https://www.baeldung.com/lombok-with-annotations) - [Lombok’s @ToString Annotation](https://www.baeldung.com/lombok-tostring) - [Jackson’s Deserialization With Lombok](https://www.baeldung.com/java-jackson-deserialization-lombok) +- [Constructor Injection in Spring with Lombok](https://www.baeldung.com/spring-injection-lombok) - More articles: [[<-- prev]](../lombok) diff --git a/lombok-modules/lombok-2/pom.xml b/lombok-modules/lombok-2/pom.xml index 0a7ad27ad6..b805e6a31e 100644 --- a/lombok-modules/lombok-2/pom.xml +++ b/lombok-modules/lombok-2/pom.xml @@ -25,6 +25,10 @@ jackson-databind ${jackson.version} + + org.springframework.boot + spring-boot-starter-web + \ No newline at end of file diff --git a/spring-core-4/src/main/java/com/baeldung/lombok/ApologizeService.java b/lombok-modules/lombok-2/src/main/java/com/baeldung/lombok/ApologizeService.java similarity index 100% rename from spring-core-4/src/main/java/com/baeldung/lombok/ApologizeService.java rename to lombok-modules/lombok-2/src/main/java/com/baeldung/lombok/ApologizeService.java diff --git a/spring-core-4/src/main/java/com/baeldung/lombok/FarewellService.java b/lombok-modules/lombok-2/src/main/java/com/baeldung/lombok/FarewellService.java similarity index 100% rename from spring-core-4/src/main/java/com/baeldung/lombok/FarewellService.java rename to lombok-modules/lombok-2/src/main/java/com/baeldung/lombok/FarewellService.java diff --git a/spring-core-4/src/main/java/com/baeldung/lombok/GreetingService.java b/lombok-modules/lombok-2/src/main/java/com/baeldung/lombok/GreetingService.java similarity index 100% rename from spring-core-4/src/main/java/com/baeldung/lombok/GreetingService.java rename to lombok-modules/lombok-2/src/main/java/com/baeldung/lombok/GreetingService.java diff --git a/spring-core-4/src/main/java/com/baeldung/lombok/ThankingService.java b/lombok-modules/lombok-2/src/main/java/com/baeldung/lombok/ThankingService.java similarity index 100% rename from spring-core-4/src/main/java/com/baeldung/lombok/ThankingService.java rename to lombok-modules/lombok-2/src/main/java/com/baeldung/lombok/ThankingService.java diff --git a/spring-core-4/src/main/java/com/baeldung/lombok/Translator.java b/lombok-modules/lombok-2/src/main/java/com/baeldung/lombok/Translator.java similarity index 100% rename from spring-core-4/src/main/java/com/baeldung/lombok/Translator.java rename to lombok-modules/lombok-2/src/main/java/com/baeldung/lombok/Translator.java diff --git a/spring-core-4/src/test/java/com/baeldung/lombok/ApologizeServiceAutowiringIntegrationTest.java b/lombok-modules/lombok-2/src/test/java/com/baeldung/lombok/ApologizeServiceAutowiringIntegrationTest.java similarity index 100% rename from spring-core-4/src/test/java/com/baeldung/lombok/ApologizeServiceAutowiringIntegrationTest.java rename to lombok-modules/lombok-2/src/test/java/com/baeldung/lombok/ApologizeServiceAutowiringIntegrationTest.java diff --git a/spring-core-4/src/test/java/com/baeldung/lombok/ApologizeServiceIntegrationTest.java b/lombok-modules/lombok-2/src/test/java/com/baeldung/lombok/ApologizeServiceIntegrationTest.java similarity index 100% rename from spring-core-4/src/test/java/com/baeldung/lombok/ApologizeServiceIntegrationTest.java rename to lombok-modules/lombok-2/src/test/java/com/baeldung/lombok/ApologizeServiceIntegrationTest.java diff --git a/spring-core-4/src/test/java/com/baeldung/lombok/FarewellAutowiringIntegrationTest.java b/lombok-modules/lombok-2/src/test/java/com/baeldung/lombok/FarewellAutowiringIntegrationTest.java similarity index 100% rename from spring-core-4/src/test/java/com/baeldung/lombok/FarewellAutowiringIntegrationTest.java rename to lombok-modules/lombok-2/src/test/java/com/baeldung/lombok/FarewellAutowiringIntegrationTest.java diff --git a/spring-core-4/src/test/java/com/baeldung/lombok/FarewellServiceIntegrationTest.java b/lombok-modules/lombok-2/src/test/java/com/baeldung/lombok/FarewellServiceIntegrationTest.java similarity index 100% rename from spring-core-4/src/test/java/com/baeldung/lombok/FarewellServiceIntegrationTest.java rename to lombok-modules/lombok-2/src/test/java/com/baeldung/lombok/FarewellServiceIntegrationTest.java diff --git a/spring-core-4/src/test/java/com/baeldung/lombok/GreetingServiceIntegrationTest.java b/lombok-modules/lombok-2/src/test/java/com/baeldung/lombok/GreetingServiceIntegrationTest.java similarity index 100% rename from spring-core-4/src/test/java/com/baeldung/lombok/GreetingServiceIntegrationTest.java rename to lombok-modules/lombok-2/src/test/java/com/baeldung/lombok/GreetingServiceIntegrationTest.java diff --git a/spring-core-4/src/test/java/com/baeldung/lombok/TestConfig.java b/lombok-modules/lombok-2/src/test/java/com/baeldung/lombok/TestConfig.java similarity index 100% rename from spring-core-4/src/test/java/com/baeldung/lombok/TestConfig.java rename to lombok-modules/lombok-2/src/test/java/com/baeldung/lombok/TestConfig.java diff --git a/spring-core-4/src/test/java/com/baeldung/lombok/ThankingServiceAutowiringIntegrationTest.java b/lombok-modules/lombok-2/src/test/java/com/baeldung/lombok/ThankingServiceAutowiringIntegrationTest.java similarity index 100% rename from spring-core-4/src/test/java/com/baeldung/lombok/ThankingServiceAutowiringIntegrationTest.java rename to lombok-modules/lombok-2/src/test/java/com/baeldung/lombok/ThankingServiceAutowiringIntegrationTest.java diff --git a/spring-core-4/src/test/java/com/baeldung/lombok/ThankingServiceIntegrationTest.java b/lombok-modules/lombok-2/src/test/java/com/baeldung/lombok/ThankingServiceIntegrationTest.java similarity index 100% rename from spring-core-4/src/test/java/com/baeldung/lombok/ThankingServiceIntegrationTest.java rename to lombok-modules/lombok-2/src/test/java/com/baeldung/lombok/ThankingServiceIntegrationTest.java diff --git a/spring-core-4/README.md b/spring-core-4/README.md index 45011d15a9..0338d5d6e8 100644 --- a/spring-core-4/README.md +++ b/spring-core-4/README.md @@ -7,6 +7,5 @@ This module contains articles about core Spring functionality - [Creating Spring Beans Through Factory Methods](https://www.baeldung.com/spring-beans-factory-methods) - [Spring BeanPostProcessor](https://www.baeldung.com/spring-beanpostprocessor) - [Using @Autowired in Abstract Classes](https://www.baeldung.com/spring-autowired-abstract-class) -- [Constructor Injection in Spring with Lombok](https://www.baeldung.com/spring-injection-lombok) - [The Spring ApplicationContext](https://www.baeldung.com/spring-application-context) - More articles: [[<-- prev]](/spring-core-3) [[next -->]](/spring-core-5) From 2fe28057dd5bf2fc0f3b96e72a7fc0b04ccda78d Mon Sep 17 00:00:00 2001 From: 3hsan <56245694+ehsansasanian@users.noreply.github.com> Date: Mon, 3 Apr 2023 19:13:45 +0200 Subject: [PATCH 46/85] Upgrade osgi module to JDK 11 by moving it to jdk9-and-above profile (#13728) --- osgi/pom.xml | 13 +++++++++++++ pom.xml | 4 ++-- 2 files changed, 15 insertions(+), 2 deletions(-) diff --git a/osgi/pom.xml b/osgi/pom.xml index 3fa2dcdf02..ecc8758ef9 100644 --- a/osgi/pom.xml +++ b/osgi/pom.xml @@ -67,6 +67,17 @@ + + + org.apache.maven.plugins + maven-compiler-plugin + ${maven-compiler-plugin.version} + + ${maven.compiler.source} + ${maven.compiler.target} + + + @@ -84,6 +95,8 @@ 1.1 6.0.0 3.3.0 + 11 + 11 \ No newline at end of file diff --git a/pom.xml b/pom.xml index 0f532beaf2..12688defa6 100644 --- a/pom.xml +++ b/pom.xml @@ -367,7 +367,6 @@ muleesb - osgi persistence-modules web-modules @@ -567,7 +566,6 @@ lombok-modules muleesb - osgi persistence-modules web-modules @@ -744,6 +742,7 @@ + osgi spring-katharsis logging-modules spring-boot-modules @@ -991,6 +990,7 @@ + osgi spring-katharsis logging-modules spring-boot-modules From 38ae7e56dd4f381d04dc83771c144102fbebc5a3 Mon Sep 17 00:00:00 2001 From: panos-kakos <102670093+panos-kakos@users.noreply.github.com> Date: Mon, 3 Apr 2023 20:22:11 +0300 Subject: [PATCH 47/85] [JAVA-19668] (#13721) * [JAVA-19668] Moved libraries-5 module to jdk9-and-above profile * [JAVA-19668] Moved libraries-4 module to jdk9-and-above profile * [JAVA-19668] Moved libraries-6 module to jdk9-and-above profile * [JAVA-19668] Moved libraries module to jdk9-and-above profile + reverted changes fro libraries-6 * [JAVA-19668] Created libraries-jdk8 module * [JAVA-19668] Clean up --- core-java-modules/core-java-9/README.md | 1 - libraries-4/pom.xml | 11 +++ libraries-5/pom.xml | 2 +- libraries-6/README.md | 2 +- libraries-6/pom.xml | 66 +++++++++++++-- .../java/com/baeldung/sbe/MarketData.java | 0 .../com/baeldung/sbe/MarketDataSource.java | 0 .../baeldung/sbe/MarketDataStreamServer.java | 0 .../java/com/baeldung/sbe/MarketDataUtil.java | 0 .../src/main/resources/schema.xml | 0 .../com/baeldung/r/FastRMeanUnitTest.java | 1 + .../test/EncodeDecodeMarketDataUnitTest.java | 0 libraries-7/pom.xml | 81 ------------------- {libraries-7 => libraries-jdk8}/README.md | 4 +- libraries-jdk8/pom.xml | 40 +++++++++ .../chronicle/queue/ChronicleQueue.java | 0 .../main/java/reflections/ReflectionsApp.java | 71 ++++++++++++++++ .../queue/ChronicleQueueIntegrationTest.java | 3 + .../java/reflections/ReflectionsUnitTest.java | 50 ++++++++++++ libraries/pom.xml | 43 +++++----- pom.xml | 19 ++--- 21 files changed, 275 insertions(+), 119 deletions(-) rename {libraries-7 => libraries-6}/src/main/java/com/baeldung/sbe/MarketData.java (100%) rename {libraries-7 => libraries-6}/src/main/java/com/baeldung/sbe/MarketDataSource.java (100%) rename {libraries-7 => libraries-6}/src/main/java/com/baeldung/sbe/MarketDataStreamServer.java (100%) rename {libraries-7 => libraries-6}/src/main/java/com/baeldung/sbe/MarketDataUtil.java (100%) rename {libraries-7 => libraries-6}/src/main/resources/schema.xml (100%) rename {libraries-7 => libraries-6}/src/test/java/com/baeldung/test/EncodeDecodeMarketDataUnitTest.java (100%) delete mode 100644 libraries-7/pom.xml rename {libraries-7 => libraries-jdk8}/README.md (75%) create mode 100644 libraries-jdk8/pom.xml rename {libraries => libraries-jdk8}/src/main/java/com/baeldung/chronicle/queue/ChronicleQueue.java (100%) create mode 100644 libraries-jdk8/src/main/java/reflections/ReflectionsApp.java rename {libraries => libraries-jdk8}/src/test/java/com/baeldung/chronicle/queue/ChronicleQueueIntegrationTest.java (95%) create mode 100644 libraries-jdk8/src/test/java/reflections/ReflectionsUnitTest.java diff --git a/core-java-modules/core-java-9/README.md b/core-java-modules/core-java-9/README.md index 38965d88f1..bd7df0c8a6 100644 --- a/core-java-modules/core-java-9/README.md +++ b/core-java-modules/core-java-9/README.md @@ -5,7 +5,6 @@ This module contains articles about Java 9 core features ### Relevant Articles: - [Method Handles in Java](https://www.baeldung.com/java-method-handles) -- [Introduction to Chronicle Queue](https://www.baeldung.com/java-chronicle-queue) - [Iterate Through a Range of Dates in Java](https://www.baeldung.com/java-iterate-date-range) - [Initialize a HashMap in Java](https://www.baeldung.com/java-initialize-hashmap) - [Immutable ArrayList in Java](https://www.baeldung.com/java-immutable-list) diff --git a/libraries-4/pom.xml b/libraries-4/pom.xml index 7d19f6d504..87e618ee5b 100644 --- a/libraries-4/pom.xml +++ b/libraries-4/pom.xml @@ -99,6 +99,16 @@ javax.el ${glassfish.web.version} + + org.openjfx + javafx-controls + ${javafx.version} + + + org.openjfx + javafx-fxml + ${javafx.version} + @@ -118,6 +128,7 @@ 3.0.0 2.2.4 1.2.0 + 19 \ No newline at end of file diff --git a/libraries-5/pom.xml b/libraries-5/pom.xml index fa1f232d1c..c98a66c094 100644 --- a/libraries-5/pom.xml +++ b/libraries-5/pom.xml @@ -139,7 +139,7 @@ 4.3.8.RELEASE 2.12 2.5.11 - 0.6.5 + 0.8.1 3.0.14 2.5.5 3.0.2 diff --git a/libraries-6/README.md b/libraries-6/README.md index 8ef60b2e54..bbebcbc1e0 100644 --- a/libraries-6/README.md +++ b/libraries-6/README.md @@ -12,8 +12,8 @@ Remember, for advanced libraries like [Jackson](/jackson) and [JUnit](/testing-m - [Guide to Resilience4j](https://www.baeldung.com/resilience4j) - [Implementing a FTP-Client in Java](https://www.baeldung.com/java-ftp-client) - [Introduction to Functional Java](https://www.baeldung.com/java-functional-library) -- [A Guide to the Reflections Library](https://www.baeldung.com/reflections-library) - [Introduction to Protonpack](https://www.baeldung.com/java-protonpack) +- [Guide to Simple Binary Encoding](https://www.baeldung.com/java-sbe) - [Java-R Integration](https://www.baeldung.com/java-r-integration) - [Using libphonenumber to Validate Phone Numbers](https://www.baeldung.com/java-libphonenumber) - [Apache Commons Collections vs Google Guava](https://www.baeldung.com/apache-commons-collections-vs-guava) diff --git a/libraries-6/pom.xml b/libraries-6/pom.xml index 3b932f2bd2..234fa1349e 100644 --- a/libraries-6/pom.xml +++ b/libraries-6/pom.xml @@ -53,12 +53,6 @@ ${mockftpserver.version} test - - - org.reflections - reflections - ${reflections.version} - org.apache.commons commons-lang3 @@ -106,6 +100,11 @@ modelmapper ${org.modelmapper.version} + + org.agrona + agrona + 1.17.1 + @@ -119,6 +118,60 @@ + + org.codehaus.mojo + exec-maven-plugin + 1.6.0 + + + generate-sources + + java + + + + + false + true + uk.co.real_logic.sbe.SbeTool + + + sbe.output.dir + ${project.build.directory}/generated-sources/java + + + + ${project.basedir}/src/main/resources/schema.xml + + ${project.build.directory}/generated-sources/java + + + + uk.co.real-logic + sbe-tool + 1.27.0 + + + + + org.codehaus.mojo + build-helper-maven-plugin + 3.0.0 + + + add-source + generate-sources + + add-source + + + + ${project.build.directory}/generated-sources/java/ + + + + + org.apache.maven.plugins maven-compiler-plugin @@ -137,7 +190,6 @@ 1.10.0 - 0.9.11 2.7.1 4.8.1 0.12.1 diff --git a/libraries-7/src/main/java/com/baeldung/sbe/MarketData.java b/libraries-6/src/main/java/com/baeldung/sbe/MarketData.java similarity index 100% rename from libraries-7/src/main/java/com/baeldung/sbe/MarketData.java rename to libraries-6/src/main/java/com/baeldung/sbe/MarketData.java diff --git a/libraries-7/src/main/java/com/baeldung/sbe/MarketDataSource.java b/libraries-6/src/main/java/com/baeldung/sbe/MarketDataSource.java similarity index 100% rename from libraries-7/src/main/java/com/baeldung/sbe/MarketDataSource.java rename to libraries-6/src/main/java/com/baeldung/sbe/MarketDataSource.java diff --git a/libraries-7/src/main/java/com/baeldung/sbe/MarketDataStreamServer.java b/libraries-6/src/main/java/com/baeldung/sbe/MarketDataStreamServer.java similarity index 100% rename from libraries-7/src/main/java/com/baeldung/sbe/MarketDataStreamServer.java rename to libraries-6/src/main/java/com/baeldung/sbe/MarketDataStreamServer.java diff --git a/libraries-7/src/main/java/com/baeldung/sbe/MarketDataUtil.java b/libraries-6/src/main/java/com/baeldung/sbe/MarketDataUtil.java similarity index 100% rename from libraries-7/src/main/java/com/baeldung/sbe/MarketDataUtil.java rename to libraries-6/src/main/java/com/baeldung/sbe/MarketDataUtil.java diff --git a/libraries-7/src/main/resources/schema.xml b/libraries-6/src/main/resources/schema.xml similarity index 100% rename from libraries-7/src/main/resources/schema.xml rename to libraries-6/src/main/resources/schema.xml diff --git a/libraries-6/src/test/java/com/baeldung/r/FastRMeanUnitTest.java b/libraries-6/src/test/java/com/baeldung/r/FastRMeanUnitTest.java index 4e7426b75a..2412bb751b 100644 --- a/libraries-6/src/test/java/com/baeldung/r/FastRMeanUnitTest.java +++ b/libraries-6/src/test/java/com/baeldung/r/FastRMeanUnitTest.java @@ -1,5 +1,6 @@ package com.baeldung.r; + import org.junit.Assert; import org.junit.Ignore; import org.junit.Test; diff --git a/libraries-7/src/test/java/com/baeldung/test/EncodeDecodeMarketDataUnitTest.java b/libraries-6/src/test/java/com/baeldung/test/EncodeDecodeMarketDataUnitTest.java similarity index 100% rename from libraries-7/src/test/java/com/baeldung/test/EncodeDecodeMarketDataUnitTest.java rename to libraries-6/src/test/java/com/baeldung/test/EncodeDecodeMarketDataUnitTest.java diff --git a/libraries-7/pom.xml b/libraries-7/pom.xml deleted file mode 100644 index 67cc2326eb..0000000000 --- a/libraries-7/pom.xml +++ /dev/null @@ -1,81 +0,0 @@ - - - 4.0.0 - libraries-7 - - - parent-modules - com.baeldung - 1.0.0-SNAPSHOT - - - - - org.agrona - agrona - 1.17.1 - - - - - - - org.codehaus.mojo - exec-maven-plugin - 1.6.0 - - - generate-sources - - java - - - - - false - true - uk.co.real_logic.sbe.SbeTool - - - sbe.output.dir - ${project.build.directory}/generated-sources/java - - - - ${project.basedir}/src/main/resources/schema.xml - - ${project.build.directory}/generated-sources/java - - - - uk.co.real-logic - sbe-tool - 1.27.0 - - - - - org.codehaus.mojo - build-helper-maven-plugin - 3.0.0 - - - add-source - generate-sources - - add-source - - - - ${project.build.directory}/generated-sources/java/ - - - - - - - - - \ No newline at end of file diff --git a/libraries-7/README.md b/libraries-jdk8/README.md similarity index 75% rename from libraries-7/README.md rename to libraries-jdk8/README.md index 6f0a7d2505..1aefc54289 100644 --- a/libraries-7/README.md +++ b/libraries-jdk8/README.md @@ -8,5 +8,7 @@ The code examples related to different libraries are each in their own module. Remember, for advanced libraries like [Jackson](/jackson) and [JUnit](/testing-modules) we already have separate modules. Please make sure to have a look at the existing modules in such cases. ### Relevant articles -- [Guide to Simple Binary Encoding](https://www.baeldung.com/java-sbe) +- [Introduction to Chronicle Queue](https://www.baeldung.com/java-chronicle-queue) +- [A Guide to the Reflections Library](https://www.baeldung.com/reflections-library) + - More articles [[<-- prev]](/libraries-6) diff --git a/libraries-jdk8/pom.xml b/libraries-jdk8/pom.xml new file mode 100644 index 0000000000..31582e0bdd --- /dev/null +++ b/libraries-jdk8/pom.xml @@ -0,0 +1,40 @@ + + + 4.0.0 + libraries-jdk8 + + + parent-modules + com.baeldung + 1.0.0-SNAPSHOT + + + + + + org.reflections + reflections + ${reflections.version} + + + + net.openhft + chronicle + ${chronicle.version} + + + com.sun.java + tools + + + + + + + 0.9.11 + 3.6.4 + + + \ No newline at end of file diff --git a/libraries/src/main/java/com/baeldung/chronicle/queue/ChronicleQueue.java b/libraries-jdk8/src/main/java/com/baeldung/chronicle/queue/ChronicleQueue.java similarity index 100% rename from libraries/src/main/java/com/baeldung/chronicle/queue/ChronicleQueue.java rename to libraries-jdk8/src/main/java/com/baeldung/chronicle/queue/ChronicleQueue.java diff --git a/libraries-jdk8/src/main/java/reflections/ReflectionsApp.java b/libraries-jdk8/src/main/java/reflections/ReflectionsApp.java new file mode 100644 index 0000000000..39d0fafb10 --- /dev/null +++ b/libraries-jdk8/src/main/java/reflections/ReflectionsApp.java @@ -0,0 +1,71 @@ +package reflections; + +import java.lang.reflect.Constructor; +import java.lang.reflect.Method; +import java.util.Date; +import java.util.Set; +import java.util.regex.Pattern; + +import org.reflections.Reflections; +import org.reflections.scanners.MethodAnnotationsScanner; +import org.reflections.scanners.MethodParameterScanner; +import org.reflections.scanners.ResourcesScanner; +import org.reflections.scanners.Scanner; +import org.reflections.scanners.SubTypesScanner; +import org.reflections.util.ClasspathHelper; +import org.reflections.util.ConfigurationBuilder; + +public class ReflectionsApp { + + public Set> getReflectionsSubTypes() { + Reflections reflections = new Reflections("org.reflections"); + Set> scannersSet = reflections.getSubTypesOf(Scanner.class); + return scannersSet; + } + + public Set> getJDKFunctinalInterfaces() { + Reflections reflections = new Reflections("java.util.function"); + Set> typesSet = reflections.getTypesAnnotatedWith(FunctionalInterface.class); + return typesSet; + } + + public Set getDateDeprecatedMethods() { + Reflections reflections = new Reflections(Date.class, new MethodAnnotationsScanner()); + Set deprecatedMethodsSet = reflections.getMethodsAnnotatedWith(Deprecated.class); + return deprecatedMethodsSet; + } + + @SuppressWarnings("rawtypes") + public Set getDateDeprecatedConstructors() { + Reflections reflections = new Reflections(Date.class, new MethodAnnotationsScanner()); + Set constructorsSet = reflections.getConstructorsAnnotatedWith(Deprecated.class); + return constructorsSet; + } + + public Set getMethodsWithDateParam() { + Reflections reflections = new Reflections(java.text.SimpleDateFormat.class, new MethodParameterScanner()); + Set methodsSet = reflections.getMethodsMatchParams(Date.class); + return methodsSet; + } + + public Set getMethodsWithVoidReturn() { + Reflections reflections = new Reflections(java.text.SimpleDateFormat.class, new MethodParameterScanner()); + Set methodsSet = reflections.getMethodsReturn(void.class); + return methodsSet; + } + + public Set getPomXmlPaths() { + Reflections reflections = new Reflections(new ResourcesScanner()); + Set resourcesSet = reflections.getResources(Pattern.compile(".*pom\\.xml")); + return resourcesSet; + } + + public Set> getReflectionsSubTypesUsingBuilder() { + Reflections reflections = new Reflections(new ConfigurationBuilder().setUrls(ClasspathHelper.forPackage("org.reflections")) + .setScanners(new SubTypesScanner())); + + Set> scannersSet = reflections.getSubTypesOf(Scanner.class); + return scannersSet; + } + +} diff --git a/libraries/src/test/java/com/baeldung/chronicle/queue/ChronicleQueueIntegrationTest.java b/libraries-jdk8/src/test/java/com/baeldung/chronicle/queue/ChronicleQueueIntegrationTest.java similarity index 95% rename from libraries/src/test/java/com/baeldung/chronicle/queue/ChronicleQueueIntegrationTest.java rename to libraries-jdk8/src/test/java/com/baeldung/chronicle/queue/ChronicleQueueIntegrationTest.java index 00e9500318..7e0bcb7d33 100644 --- a/libraries/src/test/java/com/baeldung/chronicle/queue/ChronicleQueueIntegrationTest.java +++ b/libraries-jdk8/src/test/java/com/baeldung/chronicle/queue/ChronicleQueueIntegrationTest.java @@ -8,6 +8,8 @@ import java.nio.file.Files; import org.junit.Test; +import com.baeldung.chronicle.queue.ChronicleQueue; + import net.openhft.chronicle.Chronicle; import net.openhft.chronicle.ChronicleQueueBuilder; import net.openhft.chronicle.ExcerptTailer; @@ -15,6 +17,7 @@ import net.openhft.chronicle.tools.ChronicleTools; public class ChronicleQueueIntegrationTest { +// @Ignore @Test public void givenSetOfValues_whenWriteToQueue_thenWriteSuccesfully() throws IOException { File queueDir = Files.createTempDirectory("chronicle-queue").toFile(); diff --git a/libraries-jdk8/src/test/java/reflections/ReflectionsUnitTest.java b/libraries-jdk8/src/test/java/reflections/ReflectionsUnitTest.java new file mode 100644 index 0000000000..5104855208 --- /dev/null +++ b/libraries-jdk8/src/test/java/reflections/ReflectionsUnitTest.java @@ -0,0 +1,50 @@ +package reflections; + +import static org.junit.jupiter.api.Assertions.assertFalse; + +import org.junit.jupiter.api.Test; + +public class ReflectionsUnitTest { + + @Test + public void givenTypeThenGetAllSubTypes() { + ReflectionsApp reflectionsApp = new ReflectionsApp(); + assertFalse(reflectionsApp.getReflectionsSubTypes() + .isEmpty()); + } + + @Test + public void givenTypeAndUsingBuilderThenGetAllSubTypes() { + ReflectionsApp reflectionsApp = new ReflectionsApp(); + assertFalse(reflectionsApp.getReflectionsSubTypesUsingBuilder() + .isEmpty()); + } + + @Test + public void givenAnnotationThenGetAllAnnotatedMethods() { + ReflectionsApp reflectionsApp = new ReflectionsApp(); + assertFalse(reflectionsApp.getDateDeprecatedMethods() + .isEmpty()); + } + + @Test + public void givenAnnotationThenGetAllAnnotatedConstructors() { + ReflectionsApp reflectionsApp = new ReflectionsApp(); + assertFalse(reflectionsApp.getDateDeprecatedConstructors() + .isEmpty()); + } + + @Test + public void givenParamTypeThenGetAllMethods() { + ReflectionsApp reflectionsApp = new ReflectionsApp(); + assertFalse(reflectionsApp.getMethodsWithDateParam() + .isEmpty()); + } + + @Test + public void givenReturnTypeThenGetAllMethods() { + ReflectionsApp reflectionsApp = new ReflectionsApp(); + assertFalse(reflectionsApp.getMethodsWithVoidReturn() + .isEmpty()); + } +} diff --git a/libraries/pom.xml b/libraries/pom.xml index 7bef56deb0..2ab345c469 100644 --- a/libraries/pom.xml +++ b/libraries/pom.xml @@ -64,7 +64,7 @@ org.datanucleus datanucleus-api-jdo - ${datanucleus.version} + ${datanucleus-api.version} org.datanucleus @@ -86,17 +86,7 @@ datanucleus-jdo-query ${datanucleus-jdo-query.version} - - net.openhft - chronicle - ${chronicle.version} - - - com.sun.java - tools - - - + org.springframework spring-web @@ -180,6 +170,23 @@ + + org.apache.maven.plugins + maven-surefire-plugin + + + --add-exports=java.base/jdk.internal.ref=ALL-UNNAMED + --add-exports=java.base/sun.nio.ch=ALL-UNNAMED + --add-exports=jdk.unsupported/sun.misc=ALL-UNNAMED + --add-exports=jdk.compiler/com.sun.tools.javac.file=ALL-UNNAMED + --add-opens=jdk.compiler/com.sun.tools.javac=ALL-UNNAMED + --add-opens=java.base/java.lang=ALL-UNNAMED + --add-opens=java.base/java.lang.reflect=ALL-UNNAMED + --add-opens=java.base/java.io=ALL-UNNAMED + --add-opens=java.base/java.util=ALL-UNNAMED + + + org.datanucleus @@ -273,16 +280,16 @@ 1.15 1.23.0 0.9.4.0006L - 3.2.0-m7 - 5.1.1 - 5.0.2 + 3.2.1 + 6.0.3 + 6.0.1 + 6.0.0-release 5.0.0-release - 5.0.2 - 3.6.4 + 6.0.1 4.3.8.RELEASE 3.0.3 2.3.0 - 3.21.0-GA + 3.29.2-GA 0.9.12 3.0.2 3.6 diff --git a/pom.xml b/pom.xml index 12688defa6..a812472113 100644 --- a/pom.xml +++ b/pom.xml @@ -362,6 +362,7 @@ language-interop libraries-3 + libraries-jdk8 lombok-modules @@ -491,11 +492,7 @@ jhipster-5 jws - libraries - libraries-4 - libraries-5 libraries-6 - @@ -562,6 +559,7 @@ language-interop libraries-3 + libraries-jdk8 lombok-modules muleesb @@ -673,9 +671,6 @@ jhipster-5 jws - libraries - libraries-4 - libraries-5 libraries-6 @@ -896,8 +891,12 @@ jsoup ksqldb jsf + + libraries libraries-2 - libraries-7 + libraries-4 + libraries-5 + libraries-apache-commons libraries-apache-commons-collections libraries-apache-commons-io @@ -1145,7 +1144,9 @@ jsf ksqldb - libraries-7 + libraries + libraries-4 + libraries-5 libraries-apache-commons libraries-apache-commons-collections libraries-apache-commons-io From 5c520fc768f9e5006fc40181a63e1a7fa800d5d2 Mon Sep 17 00:00:00 2001 From: panos-kakos <102670093+panos-kakos@users.noreply.github.com> Date: Mon, 3 Apr 2023 20:27:36 +0300 Subject: [PATCH 48/85] [JAVA-18144] Moved jmh module to jdk9-and-above profile (#13725) * [JAVA-18144] Moved jmh module to jdk9-and-above profile * [JAVA-18144] Added configuration * [JAVA-18144] Upgraded dependencies * [JAVA-18144] Added compile argument --- jmh/pom.xml | 24 +++++++++++++------ .../com/baeldung/falsesharing/Striped64.java | 2 +- pom.xml | 4 ++-- 3 files changed, 20 insertions(+), 10 deletions(-) diff --git a/jmh/pom.xml b/jmh/pom.xml index 61f62efd5a..6487b24ff4 100644 --- a/jmh/pom.xml +++ b/jmh/pom.xml @@ -1,7 +1,7 @@ + xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" + xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd"> 4.0.0 jmh 1.0-SNAPSHOT @@ -20,12 +20,12 @@ org.openjdk.jmh jmh-core - ${jmh-core.version} + 1.36 org.openjdk.jmh jmh-generator-annprocess - ${jmh-generator.version} + 1.36 org.openjdk.jol @@ -36,6 +36,15 @@ + + org.apache.maven.plugins + maven-compiler-plugin + + + --add-exports=java.base/jdk.internal.vm.annotation=ALL-UNNAMED + + + org.apache.maven.plugins maven-jar-plugin @@ -76,9 +85,10 @@ - 3.0.2 - 0.10 - 3.2.0 + 3.3.0 + 0.17 + 3.5.0 + 3.11.0 \ No newline at end of file diff --git a/jmh/src/main/java/com/baeldung/falsesharing/Striped64.java b/jmh/src/main/java/com/baeldung/falsesharing/Striped64.java index 71c34a9de3..1cb55f3f4e 100644 --- a/jmh/src/main/java/com/baeldung/falsesharing/Striped64.java +++ b/jmh/src/main/java/com/baeldung/falsesharing/Striped64.java @@ -88,7 +88,7 @@ abstract class Striped64 extends Number { * JVM intrinsics note: It would be possible to use a release-only * form of CAS here, if it were provided. */ - @sun.misc.Contended static final class Cell { + @jdk.internal.vm.annotation.Contended static final class Cell { volatile long value; Cell(long x) { value = x; } final boolean cas(long cmp, long val) { diff --git a/pom.xml b/pom.xml index a812472113..d44b836607 100644 --- a/pom.xml +++ b/pom.xml @@ -358,7 +358,6 @@ jetbrains jhipster-5 - jmh language-interop libraries-3 @@ -555,7 +554,6 @@ java-jdi jhipster-5 - jmh language-interop libraries-3 @@ -813,6 +811,7 @@ data-structures ddd-contexts jackson-modules + jmh deeplearning4j docker-modules drools @@ -1063,6 +1062,7 @@ data-structures ddd-contexts jackson-modules + jmh deeplearning4j jmeter docker-modules From 4cebc2aaf1efd3109727c45d977e39418ce5eb47 Mon Sep 17 00:00:00 2001 From: Michael Olayemi Date: Tue, 4 Apr 2023 03:06:12 +0100 Subject: [PATCH 49/85] BAEL-6226 Calculate Pi Java Program (#13693) * BAEL-6226 Calculate Pi Java Program * BAEL-6226 Calculate Pi Java Program --- .../core-java-numbers-6/README.md | 2 ++ core-java-modules/core-java-numbers-6/pom.xml | 29 +++++++++++++++++ .../com/baeldung/pi/PiProgramUnitTest.java | 31 +++++++++++++++++++ core-java-modules/pom.xml | 1 + 4 files changed, 63 insertions(+) create mode 100644 core-java-modules/core-java-numbers-6/README.md create mode 100644 core-java-modules/core-java-numbers-6/pom.xml create mode 100644 core-java-modules/core-java-numbers-6/src/test/java/com/baeldung/pi/PiProgramUnitTest.java diff --git a/core-java-modules/core-java-numbers-6/README.md b/core-java-modules/core-java-numbers-6/README.md new file mode 100644 index 0000000000..a96ddccabb --- /dev/null +++ b/core-java-modules/core-java-numbers-6/README.md @@ -0,0 +1,2 @@ +### Relevant Articles: + diff --git a/core-java-modules/core-java-numbers-6/pom.xml b/core-java-modules/core-java-numbers-6/pom.xml new file mode 100644 index 0000000000..4957eb89c6 --- /dev/null +++ b/core-java-modules/core-java-numbers-6/pom.xml @@ -0,0 +1,29 @@ + + 4.0.0 + core-java-numbers-6 + core-java-numbers-6 + jar + + + com.baeldung.core-java-modules + core-java-modules + 0.0.1-SNAPSHOT + + + + + + + + core-java-numbers-6 + + + src/main/resources + true + + + + + \ No newline at end of file diff --git a/core-java-modules/core-java-numbers-6/src/test/java/com/baeldung/pi/PiProgramUnitTest.java b/core-java-modules/core-java-numbers-6/src/test/java/com/baeldung/pi/PiProgramUnitTest.java new file mode 100644 index 0000000000..729346bc74 --- /dev/null +++ b/core-java-modules/core-java-numbers-6/src/test/java/com/baeldung/pi/PiProgramUnitTest.java @@ -0,0 +1,31 @@ +package com.baeldung.pi; + +import static org.junit.Assert.*; + +import java.util.Random; +import org.junit.Test; + +public class PiProgramUnitTest { + + @Test + public void givenPiCalculator_whenCalculatePiWithTenThousandPoints_thenEstimatedPiIsWithinTolerance() { + int totalPoints = 10000; + int insideCircle = 0; + + Random random = new Random(); + + for (long i = 0; i < totalPoints; i++) { + double x = random.nextDouble() * 2 - 1; + double y = random.nextDouble() * 2 - 1; + + if (x * x + y * y <= 1) { + insideCircle++; + } + + } + double pi = 4.0 * insideCircle / totalPoints; + + assertEquals(Math.PI, pi, 0.01); + } + +} diff --git a/core-java-modules/pom.xml b/core-java-modules/pom.xml index e7894b2f45..52360d060f 100644 --- a/core-java-modules/pom.xml +++ b/core-java-modules/pom.xml @@ -115,6 +115,7 @@ core-java-numbers-3 core-java-numbers-4 core-java-numbers-5 + core-java-numbers-6 core-java-optional core-java-perf core-java-reflection From 28c8893b38fb26549bf18d2e9212838e1ae8cd72 Mon Sep 17 00:00:00 2001 From: Forb Yuan Date: Mon, 3 Apr 2023 20:47:51 -0700 Subject: [PATCH 50/85] [BAEL-6203] Deserialize Generic Type with Jackson (#13764) --- .../jsongeneric/JsonResponse.java | 14 +++++++ .../deserialization/jsongeneric/User.java | 33 +++++++++++++++ .../GenericTypeDeserializerUnitTest.java | 40 +++++++++++++++++++ 3 files changed, 87 insertions(+) create mode 100644 jackson-modules/jackson-core/src/main/java/com/baeldung/jackson/deserialization/jsongeneric/JsonResponse.java create mode 100644 jackson-modules/jackson-core/src/main/java/com/baeldung/jackson/deserialization/jsongeneric/User.java create mode 100644 jackson-modules/jackson-core/src/test/java/com/baeldung/jackson/deserialization/jsongeneric/GenericTypeDeserializerUnitTest.java diff --git a/jackson-modules/jackson-core/src/main/java/com/baeldung/jackson/deserialization/jsongeneric/JsonResponse.java b/jackson-modules/jackson-core/src/main/java/com/baeldung/jackson/deserialization/jsongeneric/JsonResponse.java new file mode 100644 index 0000000000..14f6b3f8ad --- /dev/null +++ b/jackson-modules/jackson-core/src/main/java/com/baeldung/jackson/deserialization/jsongeneric/JsonResponse.java @@ -0,0 +1,14 @@ +package com.baeldung.jackson.deserialization.jsongeneric; + +public class JsonResponse { + + private T result; + + public T getResult() { + return result; + } + + public void setResult(T result) { + this.result = result; + } +} diff --git a/jackson-modules/jackson-core/src/main/java/com/baeldung/jackson/deserialization/jsongeneric/User.java b/jackson-modules/jackson-core/src/main/java/com/baeldung/jackson/deserialization/jsongeneric/User.java new file mode 100644 index 0000000000..1efb3af7f9 --- /dev/null +++ b/jackson-modules/jackson-core/src/main/java/com/baeldung/jackson/deserialization/jsongeneric/User.java @@ -0,0 +1,33 @@ +package com.baeldung.jackson.deserialization.jsongeneric; + +public class User { + + private Long id; + private String firstName; + private String lastName; + + public Long getId() { + return id; + } + + public void setId(Long id) { + this.id = id; + } + + public String getFirstName() { + return firstName; + } + + public void setFirstName(String firstName) { + this.firstName = firstName; + } + + public String getLastName() { + return lastName; + } + + public void setLastName(String lastName) { + this.lastName = lastName; + } +} + diff --git a/jackson-modules/jackson-core/src/test/java/com/baeldung/jackson/deserialization/jsongeneric/GenericTypeDeserializerUnitTest.java b/jackson-modules/jackson-core/src/test/java/com/baeldung/jackson/deserialization/jsongeneric/GenericTypeDeserializerUnitTest.java new file mode 100644 index 0000000000..24baeb7f1f --- /dev/null +++ b/jackson-modules/jackson-core/src/test/java/com/baeldung/jackson/deserialization/jsongeneric/GenericTypeDeserializerUnitTest.java @@ -0,0 +1,40 @@ +package com.baeldung.jackson.deserialization.jsongeneric; + +import com.fasterxml.jackson.core.JsonProcessingException; +import com.fasterxml.jackson.core.type.TypeReference; +import com.fasterxml.jackson.databind.JavaType; +import com.fasterxml.jackson.databind.ObjectMapper; +import org.junit.jupiter.api.Test; + +import static org.assertj.core.api.Assertions.assertThat; + +class GenericTypeDeserializerUnitTest { + + ObjectMapper objectMapper = new ObjectMapper(); + + @Test + void givenJsonObject_whenDeserializeIntoGenericTypeByTypeReference_thenCorrect() throws JsonProcessingException { + String json = "{\"result\":{\"id\":1,\"firstName\":\"John\",\"lastName\":\"Lewis\"}}"; + + TypeReference> typeRef = new TypeReference>() {}; + JsonResponse jsonResponse = objectMapper.readValue(json, typeRef); + User user = jsonResponse.getResult(); + + assertThat(user.getId()).isEqualTo(1); + assertThat(user.getFirstName()).isEqualTo("John"); + assertThat(user.getLastName()).isEqualTo("Lewis"); + } + + @Test + void givenJsonObject_whenDeserializeIntoGenericTypeByJavaType_thenCorrect() throws JsonProcessingException { + String json = "{\"result\":{\"id\":1,\"firstName\":\"John\",\"lastName\":\"Lewis\"}}"; + + JavaType javaType = objectMapper.getTypeFactory().constructParametricType(JsonResponse.class, User.class); + JsonResponse jsonResponse = objectMapper.readValue(json, javaType); + User user = jsonResponse.getResult(); + + assertThat(user.getId()).isEqualTo(1); + assertThat(user.getFirstName()).isEqualTo("John"); + assertThat(user.getLastName()).isEqualTo("Lewis"); + } +} \ No newline at end of file From e9a2b58924ac9d2bf18ae074c9e702fd61216992 Mon Sep 17 00:00:00 2001 From: mariudotsh <33603097+mariudotsh@users.noreply.github.com> Date: Tue, 4 Apr 2023 09:54:37 +0200 Subject: [PATCH 51/85] BAEL-5985 Hibernate @CreationTimestamp and @UpdateTimestamp (#13690) * BAEL-5985 Hibernate @CreationTimestamp and @UpdateTimestamp * BAEL-5985 Remove unnecessary imports * BAEL-5985 Swap order in assertEquals --------- Co-authored-by: Mariusz Kaczmarczyk --- .../creationupdatetimestamp/model/Book.java | 57 +++++++++ ...reationUpdateTimestampIntegrationTest.java | 116 ++++++++++++++++++ 2 files changed, 173 insertions(+) create mode 100644 persistence-modules/hibernate-annotations/src/main/java/com/baeldung/hibernate/creationupdatetimestamp/model/Book.java create mode 100644 persistence-modules/hibernate-annotations/src/test/java/com/baeldung/hibernate/creationupdatetimestamp/HibernateCreationUpdateTimestampIntegrationTest.java diff --git a/persistence-modules/hibernate-annotations/src/main/java/com/baeldung/hibernate/creationupdatetimestamp/model/Book.java b/persistence-modules/hibernate-annotations/src/main/java/com/baeldung/hibernate/creationupdatetimestamp/model/Book.java new file mode 100644 index 0000000000..0677b46690 --- /dev/null +++ b/persistence-modules/hibernate-annotations/src/main/java/com/baeldung/hibernate/creationupdatetimestamp/model/Book.java @@ -0,0 +1,57 @@ +package com.baeldung.hibernate.creationupdatetimestamp.model; + +import java.time.Instant; + +import javax.persistence.Entity; +import javax.persistence.GeneratedValue; +import javax.persistence.Id; + +import org.hibernate.annotations.CreationTimestamp; +import org.hibernate.annotations.UpdateTimestamp; + +@Entity +public class Book { + @Id + @GeneratedValue + private Long id; + private String title; + @CreationTimestamp + private Instant createdOn; + @UpdateTimestamp + private Instant lastUpdatedOn; + + public Book() { + } + + 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 Instant getCreatedOn() { + return createdOn; + } + + public void setCreatedOn(Instant createdOn) { + this.createdOn = createdOn; + } + + public Instant getLastUpdatedOn() { + return lastUpdatedOn; + } + + public void setLastUpdatedOn(Instant lastUpdatedOn) { + this.lastUpdatedOn = lastUpdatedOn; + } +} diff --git a/persistence-modules/hibernate-annotations/src/test/java/com/baeldung/hibernate/creationupdatetimestamp/HibernateCreationUpdateTimestampIntegrationTest.java b/persistence-modules/hibernate-annotations/src/test/java/com/baeldung/hibernate/creationupdatetimestamp/HibernateCreationUpdateTimestampIntegrationTest.java new file mode 100644 index 0000000000..f309e9e22f --- /dev/null +++ b/persistence-modules/hibernate-annotations/src/test/java/com/baeldung/hibernate/creationupdatetimestamp/HibernateCreationUpdateTimestampIntegrationTest.java @@ -0,0 +1,116 @@ +package com.baeldung.hibernate.creationupdatetimestamp; + +import static org.junit.jupiter.api.Assertions.assertEquals; +import static org.junit.jupiter.api.Assertions.assertNotEquals; +import static org.junit.jupiter.api.Assertions.assertNotNull; + +import java.time.Instant; + +import org.h2.Driver; +import org.hibernate.Session; +import org.hibernate.SessionFactory; +import org.hibernate.boot.registry.StandardServiceRegistryBuilder; +import org.hibernate.cfg.Configuration; +import org.hibernate.dialect.H2Dialect; +import org.hibernate.service.ServiceRegistry; +import org.junit.jupiter.api.AfterAll; +import org.junit.jupiter.api.BeforeAll; +import org.junit.jupiter.api.Test; + +import com.baeldung.hibernate.creationupdatetimestamp.model.Book; + +class HibernateCreationUpdateTimestampIntegrationTest { + + private static SessionFactory sessionFactory; + + private Session session; + + @BeforeAll + public static void beforeTests() { + Configuration configuration = new Configuration().addAnnotatedClass(Book.class) + .setProperty("hibernate.dialect", H2Dialect.class.getName()) + .setProperty("hibernate.connection.driver_class", Driver.class.getName()) + .setProperty("hibernate.connection.url", "jdbc:h2:mem:test") + .setProperty("hibernate.connection.username", "sa") + .setProperty("hibernate.connection.password", "") + .setProperty("hibernate.hbm2ddl.auto", "update"); + + ServiceRegistry serviceRegistry = new StandardServiceRegistryBuilder().applySettings(configuration.getProperties()) + .build(); + + sessionFactory = configuration.buildSessionFactory(serviceRegistry); + } + + @Test + void whenCreatingEntity_ThenCreatedOnIsSet() { + session = sessionFactory.openSession(); + session.beginTransaction(); + Book book = new Book(); + + session.save(book); + session.getTransaction() + .commit(); + session.close(); + + assertNotNull(book.getCreatedOn()); + } + + @Test + void whenCreatingEntity_ThenCreatedOnAndLastUpdatedOnAreBothSet() { + session = sessionFactory.openSession(); + session.beginTransaction(); + Book book = new Book(); + + session.save(book); + session.getTransaction() + .commit(); + session.close(); + + assertNotNull(book.getCreatedOn()); + assertNotNull(book.getLastUpdatedOn()); + } + + @Test + void whenCreatingEntity_ThenCreatedOnAndLastUpdatedOnAreNotEqual() { + session = sessionFactory.openSession(); + session.beginTransaction(); + Book book = new Book(); + + session.save(book); + session.getTransaction() + .commit(); + session.close(); + + assertNotEquals(book.getCreatedOn(), book.getLastUpdatedOn()); + } + + @Test + void whenUpdatingEntity_ThenLastUpdatedOnIsUpdatedAndCreatedOnStaysTheSame() { + session = sessionFactory.openSession(); + session.beginTransaction(); + Book book = new Book(); + session.save(book); + session.flush(); + Instant createdOnAfterCreation = book.getCreatedOn(); + Instant lastUpdatedOnAfterCreation = book.getLastUpdatedOn(); + + String newName = "newName"; + book.setTitle(newName); + session.getTransaction() + .commit(); + session.close(); + Instant createdOnAfterUpdate = book.getCreatedOn(); + Instant lastUpdatedOnAfterUpdate = book.getLastUpdatedOn(); + + assertEquals(newName, book.getTitle()); + assertNotNull(createdOnAfterUpdate); + assertNotNull(lastUpdatedOnAfterUpdate); + assertEquals(createdOnAfterCreation, createdOnAfterUpdate); + assertNotEquals(lastUpdatedOnAfterCreation, lastUpdatedOnAfterUpdate); + } + + @AfterAll + static void afterTests() { + sessionFactory.close(); + } +} From 9df061c513713d3a8ffe94a221bb3c0a0d0c368c Mon Sep 17 00:00:00 2001 From: kpentaris Date: Tue, 4 Apr 2023 14:39:51 +0300 Subject: [PATCH 52/85] Add application file for BAEL-4496 (#13762) --- .../com/baeldung/highcpu/Application.java | 20 +++++++++++++++++++ 1 file changed, 20 insertions(+) create mode 100644 core-java-modules/core-java-19/src/main/java/com/baeldung/highcpu/Application.java diff --git a/core-java-modules/core-java-19/src/main/java/com/baeldung/highcpu/Application.java b/core-java-modules/core-java-19/src/main/java/com/baeldung/highcpu/Application.java new file mode 100644 index 0000000000..82162406b3 --- /dev/null +++ b/core-java-modules/core-java-19/src/main/java/com/baeldung/highcpu/Application.java @@ -0,0 +1,20 @@ +package com.baeldung.highcpu; + +import java.util.LinkedList; +import java.util.List; +import java.util.function.IntUnaryOperator; +import java.util.stream.IntStream; + +public class Application { + + static List generateList() { + return IntStream.range(0, 10000000).parallel().map(IntUnaryOperator.identity()).collect(LinkedList::new, List::add, List::addAll); + } + + public static void main(String[] args) { + List list = generateList(); + long start = System.nanoTime(); + int value = list.get(9500000); + System.out.printf("Found value %d in %d nanos\n", value, (System.nanoTime() - start)); + } +} From 745e3728448d8540f20f16d5df125265e1bd8e95 Mon Sep 17 00:00:00 2001 From: Adrian Bob Date: Tue, 4 Apr 2023 16:49:54 +0300 Subject: [PATCH 53/85] BAEL-6071: Resilience4j events endpoints (#13697) * Add project for Resilience4j Events Endpoints article * Update README * Add spring-boot-resilience4j module * Renamed test class to meet constraints * Update package structure * Added formatting * Replaces .parallel() with Executor * Updated concurrent calls for bulkhead test --- spring-boot-modules/pom.xml | 1 + .../spring-boot-resilience4j/README.md | 3 + .../spring-boot-resilience4j/pom.xml | 53 +++ .../eventendpoints/ApiExceptionHandler.java | 29 ++ .../eventendpoints/ExternalAPICaller.java | 28 ++ .../ExternalApiCallerConfig.java | 14 + .../eventendpoints/ResilientApp.java | 12 + .../ResilientAppController.java | 58 ++++ .../src/main/resources/application.yml | 60 ++++ ...ResilientAppControllerIntegrationTest.java | 318 ++++++++++++++++++ .../eventendpoints/model/BulkheadEvent.java | 50 +++ .../eventendpoints/model/BulkheadEvents.java | 16 + .../model/CircuitBreakerEvent.java | 81 +++++ .../model/CircuitBreakerEvents.java | 16 + .../model/RateLimiterEvent.java | 50 +++ .../model/RateLimiterEvents.java | 16 + .../eventendpoints/model/RetryEvent.java | 70 ++++ .../eventendpoints/model/RetryEvents.java | 16 + .../model/TimeLimiterEvent.java | 50 +++ .../model/TimeLimiterEvents.java | 16 + 20 files changed, 957 insertions(+) create mode 100644 spring-boot-modules/spring-boot-resilience4j/README.md create mode 100644 spring-boot-modules/spring-boot-resilience4j/pom.xml create mode 100644 spring-boot-modules/spring-boot-resilience4j/src/main/java/com/baeldung/resilience4j/eventendpoints/ApiExceptionHandler.java create mode 100644 spring-boot-modules/spring-boot-resilience4j/src/main/java/com/baeldung/resilience4j/eventendpoints/ExternalAPICaller.java create mode 100644 spring-boot-modules/spring-boot-resilience4j/src/main/java/com/baeldung/resilience4j/eventendpoints/ExternalApiCallerConfig.java create mode 100644 spring-boot-modules/spring-boot-resilience4j/src/main/java/com/baeldung/resilience4j/eventendpoints/ResilientApp.java create mode 100644 spring-boot-modules/spring-boot-resilience4j/src/main/java/com/baeldung/resilience4j/eventendpoints/ResilientAppController.java create mode 100644 spring-boot-modules/spring-boot-resilience4j/src/main/resources/application.yml create mode 100644 spring-boot-modules/spring-boot-resilience4j/src/test/java/com/baeldung/resilience4j/eventendpoints/ResilientAppControllerIntegrationTest.java create mode 100644 spring-boot-modules/spring-boot-resilience4j/src/test/java/com/baeldung/resilience4j/eventendpoints/model/BulkheadEvent.java create mode 100644 spring-boot-modules/spring-boot-resilience4j/src/test/java/com/baeldung/resilience4j/eventendpoints/model/BulkheadEvents.java create mode 100644 spring-boot-modules/spring-boot-resilience4j/src/test/java/com/baeldung/resilience4j/eventendpoints/model/CircuitBreakerEvent.java create mode 100644 spring-boot-modules/spring-boot-resilience4j/src/test/java/com/baeldung/resilience4j/eventendpoints/model/CircuitBreakerEvents.java create mode 100644 spring-boot-modules/spring-boot-resilience4j/src/test/java/com/baeldung/resilience4j/eventendpoints/model/RateLimiterEvent.java create mode 100644 spring-boot-modules/spring-boot-resilience4j/src/test/java/com/baeldung/resilience4j/eventendpoints/model/RateLimiterEvents.java create mode 100644 spring-boot-modules/spring-boot-resilience4j/src/test/java/com/baeldung/resilience4j/eventendpoints/model/RetryEvent.java create mode 100644 spring-boot-modules/spring-boot-resilience4j/src/test/java/com/baeldung/resilience4j/eventendpoints/model/RetryEvents.java create mode 100644 spring-boot-modules/spring-boot-resilience4j/src/test/java/com/baeldung/resilience4j/eventendpoints/model/TimeLimiterEvent.java create mode 100644 spring-boot-modules/spring-boot-resilience4j/src/test/java/com/baeldung/resilience4j/eventendpoints/model/TimeLimiterEvents.java diff --git a/spring-boot-modules/pom.xml b/spring-boot-modules/pom.xml index 6d542f40dd..83b935f845 100644 --- a/spring-boot-modules/pom.xml +++ b/spring-boot-modules/pom.xml @@ -93,6 +93,7 @@ spring-boot-3-native spring-boot-3-observation spring-boot-3-test-pitfalls + spring-boot-resilience4j diff --git a/spring-boot-modules/spring-boot-resilience4j/README.md b/spring-boot-modules/spring-boot-resilience4j/README.md new file mode 100644 index 0000000000..e6c73674ce --- /dev/null +++ b/spring-boot-modules/spring-boot-resilience4j/README.md @@ -0,0 +1,3 @@ +### Relevant Articles: + +- [Resilience4j Events Endpoints](https://www.baeldung.com/resilience4j-events-endpoints) \ No newline at end of file diff --git a/spring-boot-modules/spring-boot-resilience4j/pom.xml b/spring-boot-modules/spring-boot-resilience4j/pom.xml new file mode 100644 index 0000000000..609bc7fc49 --- /dev/null +++ b/spring-boot-modules/spring-boot-resilience4j/pom.xml @@ -0,0 +1,53 @@ + + + 4.0.0 + com.example + spring-boot-resilience4j + 0.0.1-SNAPSHOT + spring-boot-resilience4j + + + com.baeldung.spring-boot-modules + spring-boot-modules + 1.0.0-SNAPSHOT + + + + + org.springframework.boot + spring-boot-starter-web + + + org.springframework.boot + spring-boot-starter-aop + + + org.springframework.boot + spring-boot-starter-actuator + + + io.github.resilience4j + resilience4j-spring-boot2 + 2.0.2 + + + com.fasterxml.jackson.datatype + jackson-datatype-jsr310 + 2.14.2 + + + org.springframework.boot + spring-boot-starter-test + test + + + com.github.tomakehurst + wiremock-jre8 + 2.35.0 + test + + + + \ No newline at end of file diff --git a/spring-boot-modules/spring-boot-resilience4j/src/main/java/com/baeldung/resilience4j/eventendpoints/ApiExceptionHandler.java b/spring-boot-modules/spring-boot-resilience4j/src/main/java/com/baeldung/resilience4j/eventendpoints/ApiExceptionHandler.java new file mode 100644 index 0000000000..4e14d5c532 --- /dev/null +++ b/spring-boot-modules/spring-boot-resilience4j/src/main/java/com/baeldung/resilience4j/eventendpoints/ApiExceptionHandler.java @@ -0,0 +1,29 @@ +package com.baeldung.resilience4j.eventendpoints; + +import io.github.resilience4j.bulkhead.BulkheadFullException; +import io.github.resilience4j.circuitbreaker.CallNotPermittedException; +import io.github.resilience4j.ratelimiter.RequestNotPermitted; +import java.util.concurrent.TimeoutException; +import org.springframework.http.HttpStatus; +import org.springframework.web.bind.annotation.ControllerAdvice; +import org.springframework.web.bind.annotation.ExceptionHandler; +import org.springframework.web.bind.annotation.ResponseStatus; + +@ControllerAdvice +public class ApiExceptionHandler { + @ExceptionHandler({CallNotPermittedException.class}) + @ResponseStatus(HttpStatus.SERVICE_UNAVAILABLE) + public void handleCallNotPermittedException() {} + + @ExceptionHandler({TimeoutException.class}) + @ResponseStatus(HttpStatus.REQUEST_TIMEOUT) + public void handleTimeoutException() {} + + @ExceptionHandler({BulkheadFullException.class}) + @ResponseStatus(HttpStatus.BANDWIDTH_LIMIT_EXCEEDED) + public void handleBulkheadFullException() {} + + @ExceptionHandler({RequestNotPermitted.class}) + @ResponseStatus(HttpStatus.TOO_MANY_REQUESTS) + public void handleRequestNotPermitted() {} +} diff --git a/spring-boot-modules/spring-boot-resilience4j/src/main/java/com/baeldung/resilience4j/eventendpoints/ExternalAPICaller.java b/spring-boot-modules/spring-boot-resilience4j/src/main/java/com/baeldung/resilience4j/eventendpoints/ExternalAPICaller.java new file mode 100644 index 0000000000..a860e7e3cc --- /dev/null +++ b/spring-boot-modules/spring-boot-resilience4j/src/main/java/com/baeldung/resilience4j/eventendpoints/ExternalAPICaller.java @@ -0,0 +1,28 @@ +package com.baeldung.resilience4j.eventendpoints; + +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.stereotype.Component; +import org.springframework.web.client.RestTemplate; + +@Component +public class ExternalAPICaller { + private final RestTemplate restTemplate; + + @Autowired + public ExternalAPICaller(RestTemplate restTemplate) { + this.restTemplate = restTemplate; + } + + public String callApi() { + return restTemplate.getForObject("/api/external", String.class); + } + + public String callApiWithDelay() { + String result = restTemplate.getForObject("/api/external", String.class); + try { + Thread.sleep(5000); + } catch (InterruptedException ignore) { + } + return result; + } +} diff --git a/spring-boot-modules/spring-boot-resilience4j/src/main/java/com/baeldung/resilience4j/eventendpoints/ExternalApiCallerConfig.java b/spring-boot-modules/spring-boot-resilience4j/src/main/java/com/baeldung/resilience4j/eventendpoints/ExternalApiCallerConfig.java new file mode 100644 index 0000000000..7145e58877 --- /dev/null +++ b/spring-boot-modules/spring-boot-resilience4j/src/main/java/com/baeldung/resilience4j/eventendpoints/ExternalApiCallerConfig.java @@ -0,0 +1,14 @@ +package com.baeldung.resilience4j.eventendpoints; + +import org.springframework.boot.web.client.RestTemplateBuilder; +import org.springframework.context.annotation.Bean; +import org.springframework.context.annotation.Configuration; +import org.springframework.web.client.RestTemplate; + +@Configuration +public class ExternalApiCallerConfig { + @Bean + public RestTemplate restTemplate() { + return new RestTemplateBuilder().rootUri("http://localhost:9090").build(); + } +} diff --git a/spring-boot-modules/spring-boot-resilience4j/src/main/java/com/baeldung/resilience4j/eventendpoints/ResilientApp.java b/spring-boot-modules/spring-boot-resilience4j/src/main/java/com/baeldung/resilience4j/eventendpoints/ResilientApp.java new file mode 100644 index 0000000000..35b999a9de --- /dev/null +++ b/spring-boot-modules/spring-boot-resilience4j/src/main/java/com/baeldung/resilience4j/eventendpoints/ResilientApp.java @@ -0,0 +1,12 @@ +package com.baeldung.resilience4j.eventendpoints; + +import org.springframework.boot.SpringApplication; +import org.springframework.boot.autoconfigure.SpringBootApplication; + +@SpringBootApplication() +public class ResilientApp { + + public static void main(String[] args) { + SpringApplication.run(ResilientApp.class, args); + } +} diff --git a/spring-boot-modules/spring-boot-resilience4j/src/main/java/com/baeldung/resilience4j/eventendpoints/ResilientAppController.java b/spring-boot-modules/spring-boot-resilience4j/src/main/java/com/baeldung/resilience4j/eventendpoints/ResilientAppController.java new file mode 100644 index 0000000000..ccd0108c2f --- /dev/null +++ b/spring-boot-modules/spring-boot-resilience4j/src/main/java/com/baeldung/resilience4j/eventendpoints/ResilientAppController.java @@ -0,0 +1,58 @@ +package com.baeldung.resilience4j.eventendpoints; + +import io.github.resilience4j.bulkhead.annotation.Bulkhead; +import io.github.resilience4j.circuitbreaker.annotation.CircuitBreaker; +import io.github.resilience4j.ratelimiter.annotation.RateLimiter; +import io.github.resilience4j.retry.annotation.Retry; +import io.github.resilience4j.timelimiter.annotation.TimeLimiter; +import java.util.concurrent.CompletableFuture; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.web.bind.annotation.GetMapping; +import org.springframework.web.bind.annotation.RequestMapping; +import org.springframework.web.bind.annotation.RestController; + +@RestController +@RequestMapping("/api/") +public class ResilientAppController { + + private final ExternalAPICaller externalAPICaller; + + @Autowired + public ResilientAppController(ExternalAPICaller externalApi) { + this.externalAPICaller = externalApi; + } + + @GetMapping("/circuit-breaker") + @CircuitBreaker(name = "externalService") + public String circuitBreakerApi() { + return externalAPICaller.callApi(); + } + + @GetMapping("/retry") + @Retry(name = "externalService", fallbackMethod = "fallbackAfterRetry") + public String retryApi() { + return externalAPICaller.callApi(); + } + + @GetMapping("/bulkhead") + @Bulkhead(name = "externalService") + public String bulkheadApi() { + return externalAPICaller.callApi(); + } + + @GetMapping("/rate-limiter") + @RateLimiter(name = "externalService") + public String rateLimitApi() { + return externalAPICaller.callApi(); + } + + @GetMapping("/time-limiter") + @TimeLimiter(name = "externalService") + public CompletableFuture timeLimiterApi() { + return CompletableFuture.supplyAsync(externalAPICaller::callApiWithDelay); + } + + public String fallbackAfterRetry(Exception ex) { + return "all retries have exhausted"; + } +} diff --git a/spring-boot-modules/spring-boot-resilience4j/src/main/resources/application.yml b/spring-boot-modules/spring-boot-resilience4j/src/main/resources/application.yml new file mode 100644 index 0000000000..81904f56d9 --- /dev/null +++ b/spring-boot-modules/spring-boot-resilience4j/src/main/resources/application.yml @@ -0,0 +1,60 @@ +management: + endpoints: + web: + exposure: + include: '*' + +resilience4j.circuitbreaker: + configs: + default: + registerHealthIndicator: true + slidingWindowSize: 10 + minimumNumberOfCalls: 5 + permittedNumberOfCallsInHalfOpenState: 3 + automaticTransitionFromOpenToHalfOpenEnabled: true + waitDurationInOpenState: 5s + failureRateThreshold: 50 + eventConsumerBufferSize: 50 + instances: + externalService: + baseConfig: default + +resilience4j.retry: + configs: + default: + maxAttempts: 3 + waitDuration: 100 + instances: + externalService: + baseConfig: default + +resilience4j.timelimiter: + configs: + default: + cancelRunningFuture: true + timeoutDuration: 2s + instances: + externalService: + baseConfig: default + +resilience4j.bulkhead: + configs: + default: + max-concurrent-calls: 3 + max-wait-duration: 1 + instances: + externalService: + baseConfig: default + +resilience4j.ratelimiter: + configs: + default: + limit-for-period: 5 + limit-refresh-period: 60s + timeout-duration: 0s + allow-health-indicator-to-fail: true + subscribe-for-events: true + event-consumer-buffer-size: 50 + instances: + externalService: + baseConfig: default \ No newline at end of file diff --git a/spring-boot-modules/spring-boot-resilience4j/src/test/java/com/baeldung/resilience4j/eventendpoints/ResilientAppControllerIntegrationTest.java b/spring-boot-modules/spring-boot-resilience4j/src/test/java/com/baeldung/resilience4j/eventendpoints/ResilientAppControllerIntegrationTest.java new file mode 100644 index 0000000000..ae1b89764d --- /dev/null +++ b/spring-boot-modules/spring-boot-resilience4j/src/test/java/com/baeldung/resilience4j/eventendpoints/ResilientAppControllerIntegrationTest.java @@ -0,0 +1,318 @@ +package com.baeldung.resilience4j.eventendpoints; + +import static com.github.tomakehurst.wiremock.client.WireMock.*; +import static org.assertj.core.api.AssertionsForClassTypes.assertThat; +import static org.junit.jupiter.api.Assertions.assertEquals; +import static org.junit.jupiter.api.Assertions.assertTrue; +import static org.springframework.http.HttpStatus.*; + +import com.baeldung.resilience4j.eventendpoints.model.*; +import com.fasterxml.jackson.databind.ObjectMapper; +import com.fasterxml.jackson.datatype.jsr310.JSR310Module; +import com.github.tomakehurst.wiremock.client.WireMock; +import com.github.tomakehurst.wiremock.core.WireMockConfiguration; +import com.github.tomakehurst.wiremock.junit5.WireMockExtension; +import java.net.URI; +import java.nio.charset.Charset; +import java.util.ArrayList; +import java.util.List; +import java.util.Map; +import java.util.concurrent.*; +import java.util.stream.IntStream; +import org.apache.commons.io.IOUtils; +import org.junit.jupiter.api.Test; +import org.junit.jupiter.api.extension.RegisterExtension; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.boot.test.context.SpringBootTest; +import org.springframework.boot.test.web.client.TestRestTemplate; +import org.springframework.boot.test.web.server.LocalServerPort; +import org.springframework.http.HttpStatus; +import org.springframework.http.ResponseEntity; + +@SpringBootTest(webEnvironment = SpringBootTest.WebEnvironment.RANDOM_PORT) +class ResilientAppControllerIntegrationTest { + + @Autowired private TestRestTemplate restTemplate; + + @LocalServerPort private Integer port; + + private static final ObjectMapper objectMapper = + new ObjectMapper().registerModule(new JSR310Module()); + + @RegisterExtension + static WireMockExtension EXTERNAL_SERVICE = + WireMockExtension.newInstance() + .options(WireMockConfiguration.wireMockConfig().port(9090)) + .build(); + + @Test + void testCircuitBreakerEvents() throws Exception { + EXTERNAL_SERVICE.stubFor(WireMock.get("/api/external").willReturn(serverError())); + + IntStream.rangeClosed(1, 5) + .forEach( + i -> { + ResponseEntity response = + restTemplate.getForEntity("/api/circuit-breaker", String.class); + assertThat(response.getStatusCode()).isEqualTo(HttpStatus.INTERNAL_SERVER_ERROR); + }); + + // Fetch the events generated by the above calls + List circuitBreakerEvents = getCircuitBreakerEvents(); + assertThat(circuitBreakerEvents.size()).isEqualTo(7); + + // The first 5 events are the error events corresponding to the above server error responses + IntStream.rangeClosed(0, 4) + .forEach( + i -> { + assertThat(circuitBreakerEvents.get(i).getCircuitBreakerName()) + .isEqualTo("externalService"); + assertThat(circuitBreakerEvents.get(i).getType()).isEqualTo("ERROR"); + assertThat(circuitBreakerEvents.get(i).getCreationTime()).isNotNull(); + assertThat(circuitBreakerEvents.get(i).getErrorMessage()).isNotNull(); + assertThat(circuitBreakerEvents.get(i).getDurationInMs()).isNotNull(); + assertThat(circuitBreakerEvents.get(i).getStateTransition()).isNull(); + }); + + // Following event signals the configured failure rate exceeded + CircuitBreakerEvent failureRateExceededEvent = circuitBreakerEvents.get(5); + assertThat(failureRateExceededEvent.getCircuitBreakerName()).isEqualTo("externalService"); + assertThat(failureRateExceededEvent.getType()).isEqualTo("FAILURE_RATE_EXCEEDED"); + assertThat(failureRateExceededEvent.getCreationTime()).isNotNull(); + assertThat(failureRateExceededEvent.getErrorMessage()).isNull(); + assertThat(failureRateExceededEvent.getDurationInMs()).isNull(); + assertThat(failureRateExceededEvent.getStateTransition()).isNull(); + + // Following event signals the state transition from CLOSED TO OPEN + CircuitBreakerEvent stateTransitionEvent = circuitBreakerEvents.get(6); + assertThat(stateTransitionEvent.getCircuitBreakerName()).isEqualTo("externalService"); + assertThat(stateTransitionEvent.getType()).isEqualTo("STATE_TRANSITION"); + assertThat(stateTransitionEvent.getCreationTime()).isNotNull(); + assertThat(stateTransitionEvent.getErrorMessage()).isNull(); + assertThat(stateTransitionEvent.getDurationInMs()).isNull(); + assertThat(stateTransitionEvent.getStateTransition()).isEqualTo("CLOSED_TO_OPEN"); + + IntStream.rangeClosed(1, 5) + .forEach( + i -> { + ResponseEntity response = + restTemplate.getForEntity("/api/circuit-breaker", String.class); + assertThat(response.getStatusCode()).isEqualTo(HttpStatus.SERVICE_UNAVAILABLE); + }); + + /// Fetch the events generated by the above calls + List updatedCircuitBreakerEvents = getCircuitBreakerEvents(); + assertThat(updatedCircuitBreakerEvents.size()).isEqualTo(12); + + // Newly added events will be of type NOT_PERMITTED since the Circuit Breaker is in OPEN state + IntStream.rangeClosed(7, 11) + .forEach( + i -> { + assertThat(updatedCircuitBreakerEvents.get(i).getCircuitBreakerName()) + .isEqualTo("externalService"); + assertThat(updatedCircuitBreakerEvents.get(i).getType()).isEqualTo("NOT_PERMITTED"); + assertThat(updatedCircuitBreakerEvents.get(i).getCreationTime()).isNotNull(); + assertThat(updatedCircuitBreakerEvents.get(i).getErrorMessage()).isNull(); + assertThat(updatedCircuitBreakerEvents.get(i).getDurationInMs()).isNull(); + assertThat(updatedCircuitBreakerEvents.get(i).getStateTransition()).isNull(); + }); + + EXTERNAL_SERVICE.verify(5, getRequestedFor(urlEqualTo("/api/external"))); + } + + private List getCircuitBreakerEvents() throws Exception { + String jsonEventsList = + IOUtils.toString( + new URI("http://localhost:" + port + "/actuator/circuitbreakerevents"), + Charset.forName("UTF-8")); + CircuitBreakerEvents circuitBreakerEvents = + objectMapper.readValue(jsonEventsList, CircuitBreakerEvents.class); + return circuitBreakerEvents.getCircuitBreakerEvents(); + } + + @Test + void testRetryEvents() throws Exception { + EXTERNAL_SERVICE.stubFor(WireMock.get("/api/external").willReturn(ok())); + ResponseEntity response1 = restTemplate.getForEntity("/api/retry", String.class); + EXTERNAL_SERVICE.verify(1, getRequestedFor(urlEqualTo("/api/external"))); + + EXTERNAL_SERVICE.resetRequests(); + + EXTERNAL_SERVICE.stubFor(WireMock.get("/api/external").willReturn(serverError())); + ResponseEntity response2 = restTemplate.getForEntity("/api/retry", String.class); + assertThat(response2.getBody()).isEqualTo("all retries have exhausted"); + EXTERNAL_SERVICE.verify(3, getRequestedFor(urlEqualTo("/api/external"))); + + List retryEvents = getRetryEvents(); + assertThat(retryEvents.size()).isEqualTo(3); + + // First 2 events should be retry events + IntStream.rangeClosed(0, 1) + .forEach( + i -> { + assertThat(retryEvents.get(i).getRetryName()).isEqualTo("externalService"); + assertThat(retryEvents.get(i).getType()).isEqualTo("RETRY"); + assertThat(retryEvents.get(i).getCreationTime()).isNotNull(); + assertThat(retryEvents.get(i).getErrorMessage()).isNotNull(); + assertThat(retryEvents.get(i).getNumberOfAttempts()).isEqualTo(i + 1); + }); + + // Last event should be an error event because the configured num of retries is reached + RetryEvent errorRetryEvent = retryEvents.get(2); + assertThat(errorRetryEvent.getRetryName()).isEqualTo("externalService"); + assertThat(errorRetryEvent.getType()).isEqualTo("ERROR"); + assertThat(errorRetryEvent.getCreationTime()).isNotNull(); + assertThat(errorRetryEvent.getErrorMessage()).isNotNull(); + assertThat(errorRetryEvent.getNumberOfAttempts()).isEqualTo(3); + } + + private List getRetryEvents() throws Exception { + String jsonEventsList = + IOUtils.toString( + new URI("http://localhost:" + port + "/actuator/retryevents"), + Charset.forName("UTF-8")); + RetryEvents retryEvents = objectMapper.readValue(jsonEventsList, RetryEvents.class); + return retryEvents.getRetryEvents(); + } + + @Test + void testTimeLimiterEvents() throws Exception { + EXTERNAL_SERVICE.stubFor(WireMock.get("/api/external").willReturn(ok())); + ResponseEntity response = restTemplate.getForEntity("/api/time-limiter", String.class); + + assertThat(response.getStatusCode()).isEqualTo(HttpStatus.REQUEST_TIMEOUT); + EXTERNAL_SERVICE.verify(1, getRequestedFor(urlEqualTo("/api/external"))); + + List timeLimiterEvents = getTimeLimiterEvents(); + assertThat(timeLimiterEvents.size()).isEqualTo(1); + TimeLimiterEvent timeoutEvent = timeLimiterEvents.get(0); + assertThat(timeoutEvent.getTimeLimiterName()).isEqualTo("externalService"); + assertThat(timeoutEvent.getType()).isEqualTo("TIMEOUT"); + assertThat(timeoutEvent.getCreationTime()).isNotNull(); + } + + private List getTimeLimiterEvents() throws Exception { + String jsonEventsList = + IOUtils.toString( + new URI("http://localhost:" + port + "/actuator/timelimiterevents"), + Charset.forName("UTF-8")); + TimeLimiterEvents timeLimiterEvents = + objectMapper.readValue(jsonEventsList, TimeLimiterEvents.class); + return timeLimiterEvents.getTimeLimiterEvents(); + } + + @Test + void testBulkheadEvents() throws Exception { + EXTERNAL_SERVICE.stubFor(WireMock.get("/api/external").willReturn(ok())); + Map responseStatusCount = new ConcurrentHashMap<>(); + ExecutorService executorService = Executors.newFixedThreadPool(5); + + List> tasks = new ArrayList<>(); + IntStream.rangeClosed(1, 5) + .forEach( + i -> + tasks.add( + () -> { + ResponseEntity response = + restTemplate.getForEntity("/api/bulkhead", String.class); + return response.getStatusCodeValue(); + })); + + List> futures = executorService.invokeAll(tasks); + for (Future future : futures) { + int statusCode = future.get(); + responseStatusCount.merge(statusCode, 1, Integer::sum); + } + executorService.shutdown(); + + assertEquals(2, responseStatusCount.keySet().size()); + assertTrue(responseStatusCount.containsKey(BANDWIDTH_LIMIT_EXCEEDED.value())); + assertTrue(responseStatusCount.containsKey(OK.value())); + EXTERNAL_SERVICE.verify(3, getRequestedFor(urlEqualTo("/api/external"))); + + List bulkheadEvents = getBulkheadEvents(); + + // Based on the configuration, the first 3 calls should be permitted, so we should see the + // CALL_PERMITTED events + IntStream.rangeClosed(0, 2) + .forEach( + i -> { + assertThat(bulkheadEvents.get(i).getBulkheadName()).isEqualTo("externalService"); + assertThat(bulkheadEvents.get(i).getType()).isEqualTo("CALL_PERMITTED"); + assertThat(bulkheadEvents.get(i).getCreationTime()).isNotNull(); + }); + + // For the other 2 calls made we should see the CALL_REJECTED events + IntStream.rangeClosed(3, 4) + .forEach( + i -> { + assertThat(bulkheadEvents.get(i).getBulkheadName()).isEqualTo("externalService"); + assertThat(bulkheadEvents.get(i).getType()).isEqualTo("CALL_REJECTED"); + assertThat(bulkheadEvents.get(i).getCreationTime()).isNotNull(); + }); + } + + private List getBulkheadEvents() throws Exception { + String jsonEventsList = + IOUtils.toString( + new URI("http://localhost:" + port + "/actuator/bulkheadevents"), + Charset.forName("UTF-8")); + BulkheadEvents bulkheadEvents = objectMapper.readValue(jsonEventsList, BulkheadEvents.class); + return bulkheadEvents.getBulkheadEvents(); + } + + @Test + void testRateLimiterEvents() throws Exception { + EXTERNAL_SERVICE.stubFor(WireMock.get("/api/external").willReturn(ok())); + Map responseStatusCount = new ConcurrentHashMap<>(); + + IntStream.rangeClosed(1, 50) + .forEach( + i -> { + ResponseEntity response = + restTemplate.getForEntity("/api/rate-limiter", String.class); + int statusCode = response.getStatusCodeValue(); + responseStatusCount.put( + statusCode, responseStatusCount.getOrDefault(statusCode, 0) + 1); + }); + + assertEquals(2, responseStatusCount.keySet().size()); + assertTrue(responseStatusCount.containsKey(TOO_MANY_REQUESTS.value())); + assertTrue(responseStatusCount.containsKey(OK.value())); + EXTERNAL_SERVICE.verify(5, getRequestedFor(urlEqualTo("/api/external"))); + + List rateLimiterEvents = getRateLimiterEvents(); + assertThat(rateLimiterEvents.size()).isEqualTo(50); + + // First allowed calls in the rate limit is 5, so we should see for those SUCCESSFUL_ACQUIRE + // events + IntStream.rangeClosed(0, 4) + .forEach( + i -> { + assertThat(rateLimiterEvents.get(i).getRateLimiterName()) + .isEqualTo("externalService"); + assertThat(rateLimiterEvents.get(i).getType()).isEqualTo("SUCCESSFUL_ACQUIRE"); + assertThat(rateLimiterEvents.get(i).getCreationTime()).isNotNull(); + }); + + // the rest should be FAILED_ACQUIRE events since the rate limiter kicks in + IntStream.rangeClosed(5, rateLimiterEvents.size() - 1) + .forEach( + i -> { + assertThat(rateLimiterEvents.get(i).getRateLimiterName()) + .isEqualTo("externalService"); + assertThat(rateLimiterEvents.get(i).getType()).isEqualTo("FAILED_ACQUIRE"); + assertThat(rateLimiterEvents.get(i).getCreationTime()).isNotNull(); + }); + } + + private List getRateLimiterEvents() throws Exception { + String jsonEventsList = + IOUtils.toString( + new URI("http://localhost:" + port + "/actuator/ratelimiterevents"), + Charset.forName("UTF-8")); + RateLimiterEvents rateLimiterEvents = + objectMapper.readValue(jsonEventsList, RateLimiterEvents.class); + return rateLimiterEvents.getRateLimiterEvents(); + } +} diff --git a/spring-boot-modules/spring-boot-resilience4j/src/test/java/com/baeldung/resilience4j/eventendpoints/model/BulkheadEvent.java b/spring-boot-modules/spring-boot-resilience4j/src/test/java/com/baeldung/resilience4j/eventendpoints/model/BulkheadEvent.java new file mode 100644 index 0000000000..6d25006bbb --- /dev/null +++ b/spring-boot-modules/spring-boot-resilience4j/src/test/java/com/baeldung/resilience4j/eventendpoints/model/BulkheadEvent.java @@ -0,0 +1,50 @@ +package com.baeldung.resilience4j.eventendpoints.model; + +import java.time.ZonedDateTime; +import java.util.Objects; + +public class BulkheadEvent { + + private String bulkheadName; + private String type; + private ZonedDateTime creationTime; + + @Override + public boolean equals(Object o) { + if (this == o) return true; + if (o == null || getClass() != o.getClass()) return false; + BulkheadEvent that = (BulkheadEvent) o; + return Objects.equals(bulkheadName, that.bulkheadName) + && Objects.equals(type, that.type) + && Objects.equals(creationTime, that.creationTime); + } + + @Override + public int hashCode() { + return Objects.hash(bulkheadName, type, creationTime); + } + + public String getBulkheadName() { + return bulkheadName; + } + + public void setBulkheadName(String bulkheadName) { + this.bulkheadName = bulkheadName; + } + + public String getType() { + return type; + } + + public void setType(String type) { + this.type = type; + } + + public ZonedDateTime getCreationTime() { + return creationTime; + } + + public void setCreationTime(ZonedDateTime creationTime) { + this.creationTime = creationTime; + } +} diff --git a/spring-boot-modules/spring-boot-resilience4j/src/test/java/com/baeldung/resilience4j/eventendpoints/model/BulkheadEvents.java b/spring-boot-modules/spring-boot-resilience4j/src/test/java/com/baeldung/resilience4j/eventendpoints/model/BulkheadEvents.java new file mode 100644 index 0000000000..7d8b6b2a5f --- /dev/null +++ b/spring-boot-modules/spring-boot-resilience4j/src/test/java/com/baeldung/resilience4j/eventendpoints/model/BulkheadEvents.java @@ -0,0 +1,16 @@ +package com.baeldung.resilience4j.eventendpoints.model; + +import java.util.List; + +public class BulkheadEvents { + + private List bulkheadEvents; + + public List getBulkheadEvents() { + return bulkheadEvents; + } + + public void setBulkheadEvents(List bulkheadEvents) { + this.bulkheadEvents = bulkheadEvents; + } +} diff --git a/spring-boot-modules/spring-boot-resilience4j/src/test/java/com/baeldung/resilience4j/eventendpoints/model/CircuitBreakerEvent.java b/spring-boot-modules/spring-boot-resilience4j/src/test/java/com/baeldung/resilience4j/eventendpoints/model/CircuitBreakerEvent.java new file mode 100644 index 0000000000..0a07c9b495 --- /dev/null +++ b/spring-boot-modules/spring-boot-resilience4j/src/test/java/com/baeldung/resilience4j/eventendpoints/model/CircuitBreakerEvent.java @@ -0,0 +1,81 @@ +package com.baeldung.resilience4j.eventendpoints.model; + +import java.time.ZonedDateTime; +import java.util.Objects; + +public class CircuitBreakerEvent { + + private String circuitBreakerName; + private String type; + private ZonedDateTime creationTime; + private String errorMessage; + private Integer durationInMs; + private String stateTransition; + + @Override + public boolean equals(Object o) { + if (this == o) return true; + if (o == null || getClass() != o.getClass()) return false; + CircuitBreakerEvent that = (CircuitBreakerEvent) o; + return Objects.equals(circuitBreakerName, that.circuitBreakerName) + && Objects.equals(type, that.type) + && Objects.equals(creationTime, that.creationTime) + && Objects.equals(errorMessage, that.errorMessage) + && Objects.equals(durationInMs, that.durationInMs) + && Objects.equals(stateTransition, that.stateTransition); + } + + @Override + public int hashCode() { + return Objects.hash( + circuitBreakerName, type, creationTime, errorMessage, durationInMs, stateTransition); + } + + public String getCircuitBreakerName() { + return circuitBreakerName; + } + + public void setCircuitBreakerName(String circuitBreakerName) { + this.circuitBreakerName = circuitBreakerName; + } + + public String getType() { + return type; + } + + public void setType(String type) { + this.type = type; + } + + public ZonedDateTime getCreationTime() { + return creationTime; + } + + public void setCreationTime(ZonedDateTime creationTime) { + this.creationTime = creationTime; + } + + public String getErrorMessage() { + return errorMessage; + } + + public void setErrorMessage(String errorMessage) { + this.errorMessage = errorMessage; + } + + public Integer getDurationInMs() { + return durationInMs; + } + + public void setDurationInMs(Integer durationInMs) { + this.durationInMs = durationInMs; + } + + public String getStateTransition() { + return stateTransition; + } + + public void setStateTransition(String stateTransition) { + this.stateTransition = stateTransition; + } +} diff --git a/spring-boot-modules/spring-boot-resilience4j/src/test/java/com/baeldung/resilience4j/eventendpoints/model/CircuitBreakerEvents.java b/spring-boot-modules/spring-boot-resilience4j/src/test/java/com/baeldung/resilience4j/eventendpoints/model/CircuitBreakerEvents.java new file mode 100644 index 0000000000..c3ec741d05 --- /dev/null +++ b/spring-boot-modules/spring-boot-resilience4j/src/test/java/com/baeldung/resilience4j/eventendpoints/model/CircuitBreakerEvents.java @@ -0,0 +1,16 @@ +package com.baeldung.resilience4j.eventendpoints.model; + +import java.util.List; + +public class CircuitBreakerEvents { + + private List circuitBreakerEvents; + + public List getCircuitBreakerEvents() { + return circuitBreakerEvents; + } + + public void setCircuitBreakerEvents(List circuitBreakerEvents) { + this.circuitBreakerEvents = circuitBreakerEvents; + } +} diff --git a/spring-boot-modules/spring-boot-resilience4j/src/test/java/com/baeldung/resilience4j/eventendpoints/model/RateLimiterEvent.java b/spring-boot-modules/spring-boot-resilience4j/src/test/java/com/baeldung/resilience4j/eventendpoints/model/RateLimiterEvent.java new file mode 100644 index 0000000000..ccc0f5a9b3 --- /dev/null +++ b/spring-boot-modules/spring-boot-resilience4j/src/test/java/com/baeldung/resilience4j/eventendpoints/model/RateLimiterEvent.java @@ -0,0 +1,50 @@ +package com.baeldung.resilience4j.eventendpoints.model; + +import java.time.ZonedDateTime; +import java.util.Objects; + +public class RateLimiterEvent { + + private String rateLimiterName; + private String type; + private ZonedDateTime creationTime; + + @Override + public boolean equals(Object o) { + if (this == o) return true; + if (o == null || getClass() != o.getClass()) return false; + RateLimiterEvent that = (RateLimiterEvent) o; + return Objects.equals(rateLimiterName, that.rateLimiterName) + && Objects.equals(type, that.type) + && Objects.equals(creationTime, that.creationTime); + } + + @Override + public int hashCode() { + return Objects.hash(rateLimiterName, type, creationTime); + } + + public String getRateLimiterName() { + return rateLimiterName; + } + + public void setRateLimiterName(String rateLimiterName) { + this.rateLimiterName = rateLimiterName; + } + + public String getType() { + return type; + } + + public void setType(String type) { + this.type = type; + } + + public ZonedDateTime getCreationTime() { + return creationTime; + } + + public void setCreationTime(ZonedDateTime creationTime) { + this.creationTime = creationTime; + } +} diff --git a/spring-boot-modules/spring-boot-resilience4j/src/test/java/com/baeldung/resilience4j/eventendpoints/model/RateLimiterEvents.java b/spring-boot-modules/spring-boot-resilience4j/src/test/java/com/baeldung/resilience4j/eventendpoints/model/RateLimiterEvents.java new file mode 100644 index 0000000000..c0cfcdf0d7 --- /dev/null +++ b/spring-boot-modules/spring-boot-resilience4j/src/test/java/com/baeldung/resilience4j/eventendpoints/model/RateLimiterEvents.java @@ -0,0 +1,16 @@ +package com.baeldung.resilience4j.eventendpoints.model; + +import java.util.List; + +public class RateLimiterEvents { + + private List rateLimiterEvents; + + public List getRateLimiterEvents() { + return rateLimiterEvents; + } + + public void setRateLimiterEvents(List rateLimiterEvents) { + this.rateLimiterEvents = rateLimiterEvents; + } +} diff --git a/spring-boot-modules/spring-boot-resilience4j/src/test/java/com/baeldung/resilience4j/eventendpoints/model/RetryEvent.java b/spring-boot-modules/spring-boot-resilience4j/src/test/java/com/baeldung/resilience4j/eventendpoints/model/RetryEvent.java new file mode 100644 index 0000000000..a17d45c679 --- /dev/null +++ b/spring-boot-modules/spring-boot-resilience4j/src/test/java/com/baeldung/resilience4j/eventendpoints/model/RetryEvent.java @@ -0,0 +1,70 @@ +package com.baeldung.resilience4j.eventendpoints.model; + +import java.time.ZonedDateTime; +import java.util.Objects; + +public class RetryEvent { + + private String retryName; + private String type; + private ZonedDateTime creationTime; + private String errorMessage; + private Integer numberOfAttempts; + + @Override + public boolean equals(Object o) { + if (this == o) return true; + if (o == null || getClass() != o.getClass()) return false; + RetryEvent that = (RetryEvent) o; + return Objects.equals(retryName, that.retryName) + && Objects.equals(type, that.type) + && Objects.equals(creationTime, that.creationTime) + && Objects.equals(errorMessage, that.errorMessage) + && Objects.equals(numberOfAttempts, that.numberOfAttempts); + } + + @Override + public int hashCode() { + return Objects.hash(retryName, type, creationTime, errorMessage, numberOfAttempts); + } + + public String getRetryName() { + return retryName; + } + + public void setRetryName(String retryName) { + this.retryName = retryName; + } + + public String getType() { + return type; + } + + public void setType(String type) { + this.type = type; + } + + public ZonedDateTime getCreationTime() { + return creationTime; + } + + public void setCreationTime(ZonedDateTime creationTime) { + this.creationTime = creationTime; + } + + public String getErrorMessage() { + return errorMessage; + } + + public void setErrorMessage(String errorMessage) { + this.errorMessage = errorMessage; + } + + public Integer getNumberOfAttempts() { + return numberOfAttempts; + } + + public void setNumberOfAttempts(Integer numberOfAttempts) { + this.numberOfAttempts = numberOfAttempts; + } +} diff --git a/spring-boot-modules/spring-boot-resilience4j/src/test/java/com/baeldung/resilience4j/eventendpoints/model/RetryEvents.java b/spring-boot-modules/spring-boot-resilience4j/src/test/java/com/baeldung/resilience4j/eventendpoints/model/RetryEvents.java new file mode 100644 index 0000000000..e5bb73ff0c --- /dev/null +++ b/spring-boot-modules/spring-boot-resilience4j/src/test/java/com/baeldung/resilience4j/eventendpoints/model/RetryEvents.java @@ -0,0 +1,16 @@ +package com.baeldung.resilience4j.eventendpoints.model; + +import java.util.List; + +public class RetryEvents { + + private List retryEvents; + + public List getRetryEvents() { + return retryEvents; + } + + public void setRetryEvents(List retryEvents) { + this.retryEvents = retryEvents; + } +} diff --git a/spring-boot-modules/spring-boot-resilience4j/src/test/java/com/baeldung/resilience4j/eventendpoints/model/TimeLimiterEvent.java b/spring-boot-modules/spring-boot-resilience4j/src/test/java/com/baeldung/resilience4j/eventendpoints/model/TimeLimiterEvent.java new file mode 100644 index 0000000000..07f891c401 --- /dev/null +++ b/spring-boot-modules/spring-boot-resilience4j/src/test/java/com/baeldung/resilience4j/eventendpoints/model/TimeLimiterEvent.java @@ -0,0 +1,50 @@ +package com.baeldung.resilience4j.eventendpoints.model; + +import java.time.ZonedDateTime; +import java.util.Objects; + +public class TimeLimiterEvent { + + private String timeLimiterName; + private String type; + private ZonedDateTime creationTime; + + @Override + public boolean equals(Object o) { + if (this == o) return true; + if (o == null || getClass() != o.getClass()) return false; + TimeLimiterEvent that = (TimeLimiterEvent) o; + return Objects.equals(timeLimiterName, that.timeLimiterName) + && Objects.equals(type, that.type) + && Objects.equals(creationTime, that.creationTime); + } + + @Override + public int hashCode() { + return Objects.hash(timeLimiterName, type, creationTime); + } + + public String getTimeLimiterName() { + return timeLimiterName; + } + + public void setTimeLimiterName(String timeLimiterName) { + this.timeLimiterName = timeLimiterName; + } + + public String getType() { + return type; + } + + public void setType(String type) { + this.type = type; + } + + public ZonedDateTime getCreationTime() { + return creationTime; + } + + public void setCreationTime(ZonedDateTime creationTime) { + this.creationTime = creationTime; + } +} diff --git a/spring-boot-modules/spring-boot-resilience4j/src/test/java/com/baeldung/resilience4j/eventendpoints/model/TimeLimiterEvents.java b/spring-boot-modules/spring-boot-resilience4j/src/test/java/com/baeldung/resilience4j/eventendpoints/model/TimeLimiterEvents.java new file mode 100644 index 0000000000..739ff91916 --- /dev/null +++ b/spring-boot-modules/spring-boot-resilience4j/src/test/java/com/baeldung/resilience4j/eventendpoints/model/TimeLimiterEvents.java @@ -0,0 +1,16 @@ +package com.baeldung.resilience4j.eventendpoints.model; + +import java.util.List; + +public class TimeLimiterEvents { + + private List timeLimiterEvents; + + public List getTimeLimiterEvents() { + return timeLimiterEvents; + } + + public void setTimeLimiterEvents(List timeLimiterEvents) { + this.timeLimiterEvents = timeLimiterEvents; + } +} From 5b9e06819d2c901420b9db1dea0562b05e3d2930 Mon Sep 17 00:00:00 2001 From: Dhawal Kapil Date: Wed, 5 Apr 2023 05:36:38 +0530 Subject: [PATCH 54/85] JAVA-19536 Formatting of pom.xml(s) --- akka-modules/akka-http/pom.xml | 1 - annotations/annotation-processing/pom.xml | 1 - apache-httpclient4/pom.xml | 4 ++-- apache-kafka/pom.xml | 5 ++--- apache-spark/pom.xml | 1 - .../aws-lambda/shipping-tracker/ShippingFunction/pom.xml | 1 - aws-modules/aws-lambda/todo-reminder/ToDoFunction/pom.xml | 4 ++-- axon/pom.xml | 3 ++- 8 files changed, 8 insertions(+), 12 deletions(-) diff --git a/akka-modules/akka-http/pom.xml b/akka-modules/akka-http/pom.xml index 3af7c492ca..9372107fc9 100644 --- a/akka-modules/akka-http/pom.xml +++ b/akka-modules/akka-http/pom.xml @@ -36,7 +36,6 @@ - 10.0.11 2.5.11 diff --git a/annotations/annotation-processing/pom.xml b/annotations/annotation-processing/pom.xml index 2a17242ee5..14bbc409e5 100644 --- a/annotations/annotation-processing/pom.xml +++ b/annotations/annotation-processing/pom.xml @@ -21,7 +21,6 @@ - 1.0-rc2 diff --git a/apache-httpclient4/pom.xml b/apache-httpclient4/pom.xml index 1485c94c8c..e0bf9dd5f6 100644 --- a/apache-httpclient4/pom.xml +++ b/apache-httpclient4/pom.xml @@ -1,7 +1,7 @@ + xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" + xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd"> 4.0.0 apache-httpclient4 0.1-SNAPSHOT diff --git a/apache-kafka/pom.xml b/apache-kafka/pom.xml index 915583fed8..494bc94961 100644 --- a/apache-kafka/pom.xml +++ b/apache-kafka/pom.xml @@ -171,7 +171,8 @@ --add-opens java.base/java.time=ALL-UNNAMED - --add-opens java.base/java.nio=ALL-UNNAMED + --add-opens + java.base/java.nio=ALL-UNNAMED --add-opens java.base/java.util=ALL-UNNAMED @@ -179,8 +180,6 @@ - - 3.4.0 1.15.3 diff --git a/apache-spark/pom.xml b/apache-spark/pom.xml index 9e61e1340d..b5e97ee03d 100644 --- a/apache-spark/pom.xml +++ b/apache-spark/pom.xml @@ -7,7 +7,6 @@ 1.0-SNAPSHOT apache-spark jar - http://maven.apache.org com.baeldung diff --git a/aws-modules/aws-lambda/shipping-tracker/ShippingFunction/pom.xml b/aws-modules/aws-lambda/shipping-tracker/ShippingFunction/pom.xml index 24f2a76912..a60f934bad 100644 --- a/aws-modules/aws-lambda/shipping-tracker/ShippingFunction/pom.xml +++ b/aws-modules/aws-lambda/shipping-tracker/ShippingFunction/pom.xml @@ -2,7 +2,6 @@ xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd"> 4.0.0 - com.baeldung ShippingFunction 1.0 ShippingFunction diff --git a/aws-modules/aws-lambda/todo-reminder/ToDoFunction/pom.xml b/aws-modules/aws-lambda/todo-reminder/ToDoFunction/pom.xml index 0dd2e4d14a..5545154a5d 100644 --- a/aws-modules/aws-lambda/todo-reminder/ToDoFunction/pom.xml +++ b/aws-modules/aws-lambda/todo-reminder/ToDoFunction/pom.xml @@ -1,6 +1,6 @@ + xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" + xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd"> 4.0.0 helloworld ToDoFunction diff --git a/axon/pom.xml b/axon/pom.xml index 5c8f1d7a6c..5eed742aab 100644 --- a/axon/pom.xml +++ b/axon/pom.xml @@ -103,7 +103,8 @@ --add-opens java.base/java.util=ALL-UNNAMED - --add-opens java.base/java.util.concurrent=ALL-UNNAMED + --add-opens + java.base/java.util.concurrent=ALL-UNNAMED From 9c59017b4e71819aa9a66f547cfdca9b907c54c0 Mon Sep 17 00:00:00 2001 From: Michael Olayemi Date: Wed, 5 Apr 2023 02:14:45 +0100 Subject: [PATCH 55/85] I text (#13770) * BAEL-6226 Calculate Pi Java Program * BAEL-6226 Calculate Pi Java Program * Calculate Pi Java Program --- .../src/test/java/com/baeldung/pi/PiProgramUnitTest.java | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/core-java-modules/core-java-numbers-6/src/test/java/com/baeldung/pi/PiProgramUnitTest.java b/core-java-modules/core-java-numbers-6/src/test/java/com/baeldung/pi/PiProgramUnitTest.java index 729346bc74..d47942a517 100644 --- a/core-java-modules/core-java-numbers-6/src/test/java/com/baeldung/pi/PiProgramUnitTest.java +++ b/core-java-modules/core-java-numbers-6/src/test/java/com/baeldung/pi/PiProgramUnitTest.java @@ -8,8 +8,8 @@ import org.junit.Test; public class PiProgramUnitTest { @Test - public void givenPiCalculator_whenCalculatePiWithTenThousandPoints_thenEstimatedPiIsWithinTolerance() { - int totalPoints = 10000; + public void givenPiCalculator_whenCalculatePiWithOneMillionPoints_thenEstimatedPiIsWithinTolerance() { + int totalPoints = 1000000; int insideCircle = 0; Random random = new Random(); From d0d58509e2373f9074cbaf98785caac7a9964501 Mon Sep 17 00:00:00 2001 From: Kai Yuan Date: Wed, 5 Apr 2023 03:16:46 +0200 Subject: [PATCH 56/85] [BAEL-6284_tmpDir] add tests for the cleanup option (#13752) --- ...TemporaryDirectoryWithCleanupUnitTest.java | 36 +++++++++++++++++++ 1 file changed, 36 insertions(+) create mode 100644 testing-modules/junit-5-basics/src/test/java/com/baeldung/extensions/tempdir/TemporaryDirectoryWithCleanupUnitTest.java diff --git a/testing-modules/junit-5-basics/src/test/java/com/baeldung/extensions/tempdir/TemporaryDirectoryWithCleanupUnitTest.java b/testing-modules/junit-5-basics/src/test/java/com/baeldung/extensions/tempdir/TemporaryDirectoryWithCleanupUnitTest.java new file mode 100644 index 0000000000..739212ec04 --- /dev/null +++ b/testing-modules/junit-5-basics/src/test/java/com/baeldung/extensions/tempdir/TemporaryDirectoryWithCleanupUnitTest.java @@ -0,0 +1,36 @@ +package com.baeldung.extensions.tempdir; + +import org.junit.jupiter.api.MethodOrderer; +import org.junit.jupiter.api.Order; +import org.junit.jupiter.api.Test; +import org.junit.jupiter.api.TestInstance; +import org.junit.jupiter.api.TestMethodOrder; +import org.junit.jupiter.api.io.TempDir; + +import java.nio.file.Path; + +import static org.junit.Assert.assertNotNull; +import static org.junit.jupiter.api.Assertions.assertTrue; +import static org.junit.jupiter.api.io.CleanupMode.NEVER; + +@TestMethodOrder(MethodOrderer.OrderAnnotation.class) +@TestInstance(TestInstance.Lifecycle.PER_CLASS) +class TemporaryDirectoryWithCleanupUnitTest { + + private Path theTempDirToBeChecked = null; + + @Test + @Order(1) + void whenTestMethodWithTempDirNeverCleanup_thenSetInstanceVariable(@TempDir(cleanup = NEVER) Path tempDir) { + theTempDirToBeChecked = tempDir; + System.out.println(tempDir.toFile().getAbsolutePath()); + } + + @Test + @Order(2) + void whenTestMethodWithTempDirNeverCleanup_thenTempDirShouldNotBeRemoved() { + assertNotNull(theTempDirToBeChecked); + assertTrue(theTempDirToBeChecked.toFile().isDirectory()); + } + +} \ No newline at end of file From 7026b0abc9d8896e3053fadddd1b9f08698f4e19 Mon Sep 17 00:00:00 2001 From: Dhawal Kapil Date: Wed, 5 Apr 2023 07:14:09 +0530 Subject: [PATCH 57/85] JAVA-19536 Fix formatting of pom.xmls --- checker-plugin/pom.xml | 1 - core-groovy-modules/core-groovy-2/pom.xml | 9 --- .../core-groovy-collections/pom.xml | 10 --- .../core-groovy-strings/pom.xml | 9 --- core-groovy-modules/core-groovy/pom.xml | 10 --- core-java-modules/core-java-10/pom.xml | 1 - core-java-modules/core-java-11-2/pom.xml | 1 - core-java-modules/core-java-11-3/pom.xml | 3 +- core-java-modules/core-java-11/pom.xml | 2 - core-java-modules/core-java-12/pom.xml | 2 - core-java-modules/core-java-13/pom.xml | 3 - core-java-modules/core-java-14/pom.xml | 1 - core-java-modules/core-java-15/pom.xml | 1 - core-java-modules/core-java-16/pom.xml | 2 - core-java-modules/core-java-17/pom.xml | 2 - core-java-modules/core-java-19/pom.xml | 20 +++--- core-java-modules/core-java-8-2/pom.xml | 1 - .../core-java-8-datetime-2/pom.xml | 1 - .../core-java-8-datetime/pom.xml | 1 - core-java-modules/core-java-8/pom.xml | 1 - .../core-java-9-improvements/pom.xml | 1 - core-java-modules/core-java-9-jigsaw/pom.xml | 1 - .../core-java-9-new-features/pom.xml | 1 - core-java-modules/core-java-9-streams/pom.xml | 1 - core-java-modules/core-java-9/pom.xml | 1 - .../core-java-annotations/pom.xml | 1 - core-java-modules/core-java-booleans/pom.xml | 24 ++++---- core-java-modules/core-java-char/pom.xml | 1 - .../core-java-collections-3/pom.xml | 1 - .../core-java-collections-4/pom.xml | 1 - .../core-java-collections-5/pom.xml | 6 +- .../core-java-collections-array-list/pom.xml | 57 ++++++++--------- .../pom.xml | 1 - .../core-java-collections-conversions/pom.xml | 1 - .../core-java-collections-list-2/pom.xml | 1 - .../core-java-collections-list-3/pom.xml | 1 - .../core-java-collections-list-4/pom.xml | 1 - .../core-java-collections-list-5/pom.xml | 1 - .../core-java-collections-list/pom.xml | 1 - .../core-java-collections-maps-2/pom.xml | 1 - .../core-java-collections-maps-3/pom.xml | 1 - .../core-java-collections-maps-4/pom.xml | 1 - .../core-java-collections-maps-5/pom.xml | 1 - .../core-java-collections-maps-6/pom.xml | 8 +-- .../core-java-collections-maps/pom.xml | 1 - .../core-java-collections-set-2/pom.xml | 1 - .../core-java-collections-set/pom.xml | 1 - .../core-java-collections/pom.xml | 1 - .../core-java-concurrency-2/pom.xml | 1 - .../core-java-concurrency-advanced-2/pom.xml | 1 - .../core-java-concurrency-advanced-3/pom.xml | 1 - .../core-java-concurrency-advanced-4/pom.xml | 4 -- .../core-java-concurrency-advanced/pom.xml | 1 - .../core-java-concurrency-basic-2/pom.xml | 1 - .../core-java-concurrency-basic-3/pom.xml | 18 +++--- .../core-java-concurrency-basic/pom.xml | 1 - .../pom.xml | 1 - .../core-java-concurrency-collections/pom.xml | 1 - .../core-java-concurrency-simple/pom.xml | 1 - core-java-modules/core-java-console/pom.xml | 1 - .../core-java-date-operations-1/pom.xml | 1 - .../core-java-date-operations-2/pom.xml | 1 - .../core-java-date-operations-3/pom.xml | 7 --- .../core-java-datetime-string-2/pom.xml | 1 - .../core-java-datetime-string/pom.xml | 2 - .../core-java-exceptions-2/pom.xml | 2 - .../core-java-exceptions-3/pom.xml | 2 - .../core-java-exceptions-4/pom.xml | 2 - .../core-java-exceptions/pom.xml | 2 - core-java-modules/core-java-function/pom.xml | 1 - .../core-java-functional/pom.xml | 1 - core-java-modules/core-java-hex/pom.xml | 9 --- .../core-java-httpclient/pom.xml | 1 - core-java-modules/core-java-io-2/pom.xml | 1 - core-java-modules/core-java-io-3/pom.xml | 1 - core-java-modules/core-java-io-4/pom.xml | 1 - core-java-modules/core-java-io-apis-2/pom.xml | 1 - core-java-modules/core-java-io-apis/pom.xml | 1 - .../core-java-io-conversions-2/pom.xml | 1 - .../core-java-io-conversions/pom.xml | 1 - core-java-modules/core-java-io/pom.xml | 1 - core-java-modules/core-java-jar/pom.xml | 1 - core-java-modules/core-java-jndi/pom.xml | 2 - core-java-modules/core-java-jvm-2/pom.xml | 3 - core-java-modules/core-java-jvm-3/pom.xml | 4 -- core-java-modules/core-java-jvm/pom.xml | 5 +- core-java-modules/core-java-lambdas/pom.xml | 1 - core-java-modules/core-java-lang-2/pom.xml | 1 - core-java-modules/core-java-lang-3/pom.xml | 1 - core-java-modules/core-java-lang-4/pom.xml | 1 - core-java-modules/core-java-lang-5/pom.xml | 13 ++-- .../core-java-lang-math-2/pom.xml | 1 - .../core-java-lang-math-3/pom.xml | 1 - core-java-modules/core-java-lang-math/pom.xml | 1 - .../core-java-lang-operators-2/pom.xml | 1 - .../core-java-lang-operators/pom.xml | 1 - .../core-java-lang-syntax-2/pom.xml | 1 - .../core-java-lang-syntax/pom.xml | 1 - core-java-modules/core-java-lang/pom.xml | 1 - .../core-java-networking-4/pom.xml | 2 - .../core-java-networking/pom.xml | 1 - core-java-modules/core-java-nio-2/pom.xml | 1 - core-java-modules/core-java-nio/pom.xml | 1 - core-java-modules/core-java-numbers-2/pom.xml | 1 - core-java-modules/core-java-numbers-6/pom.xml | 6 +- core-java-modules/core-java-numbers/pom.xml | 1 - core-java-modules/core-java-optional/pom.xml | 1 - core-java-modules/core-java-os/pom.xml | 1 - core-java-modules/core-java-perf/pom.xml | 1 - .../core-java-reflection-2/pom.xml | 1 - .../pom.xml | 5 +- .../core-java-reflection/pom.xml | 1 - core-java-modules/core-java-regex-2/pom.xml | 1 - core-java-modules/core-java-regex/pom.xml | 1 - .../core-java-security-2/pom.xml | 1 - .../core-java-security-3/pom.xml | 1 - .../core-java-security-algorithms/pom.xml | 2 - core-java-modules/core-java-security/pom.xml | 5 +- .../core-java-serialization/pom.xml | 1 - core-java-modules/core-java-streams-2/pom.xml | 1 - core-java-modules/core-java-streams-3/pom.xml | 1 - core-java-modules/core-java-streams-4/pom.xml | 1 - .../core-java-streams-collect/pom.xml | 2 - .../core-java-streams-maps/pom.xml | 1 - core-java-modules/core-java-streams/pom.xml | 2 - .../core-java-string-algorithms-2/pom.xml | 1 - .../core-java-string-algorithms-3/pom.xml | 1 - .../core-java-string-algorithms/pom.xml | 1 - .../core-java-string-apis-2/pom.xml | 1 - .../core-java-string-apis/pom.xml | 1 - .../core-java-string-conversions-2/pom.xml | 1 - .../core-java-string-conversions/pom.xml | 1 - .../core-java-string-operations-2/pom.xml | 1 - .../core-java-string-operations-3/pom.xml | 1 - .../core-java-string-operations-4/pom.xml | 1 - .../core-java-string-operations-5/pom.xml | 1 - .../core-java-string-operations/pom.xml | 1 - core-java-modules/core-java-strings/pom.xml | 1 - core-java-modules/core-java-sun/pom.xml | 1 - .../core-java-time-measurements/pom.xml | 2 - core-java-modules/core-java-uuid/pom.xml | 1 - core-java-modules/core-java/pom.xml | 1 - core-java-modules/pom.xml | 28 ++++----- core-java-modules/pre-jpms/pom.xml | 1 - couchbase/pom.xml | 1 - custom-pmd/pom.xml | 1 - data-structures/pom.xml | 15 +++-- ddd/pom.xml | 1 - deeplearning4j/pom.xml | 2 - .../core-java-exclusions/pom.xml | 61 +++++++++---------- .../dummy-surefire-junit47/pom.xml | 4 +- di-modules/guice/pom.xml | 1 - discord4j/pom.xml | 2 - disruptor/pom.xml | 1 - .../multi-module-caching/pom.xml | 4 +- .../single-module-caching/pom.xml | 4 +- docker-modules/docker-compose-2/pom.xml | 4 +- docker-modules/docker-containers/pom.xml | 1 - docker-modules/pom.xml | 2 - dozer/pom.xml | 1 - 160 files changed, 141 insertions(+), 366 deletions(-) diff --git a/checker-plugin/pom.xml b/checker-plugin/pom.xml index 28958db89d..e90dcf271e 100644 --- a/checker-plugin/pom.xml +++ b/checker-plugin/pom.xml @@ -7,7 +7,6 @@ 1.0-SNAPSHOT checker-plugin jar - http://maven.apache.org com.baeldung diff --git a/core-groovy-modules/core-groovy-2/pom.xml b/core-groovy-modules/core-groovy-2/pom.xml index ca6a9a62c7..de750daf0f 100644 --- a/core-groovy-modules/core-groovy-2/pom.xml +++ b/core-groovy-modules/core-groovy-2/pom.xml @@ -4,7 +4,6 @@ xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd"> 4.0.0 core-groovy-2 - 1.0-SNAPSHOT core-groovy-2 jar @@ -153,14 +152,6 @@ - - - maven_central - Maven Central - https://repo.maven.apache.org/maven2/ - - - 1.1.3 3.4.2 diff --git a/core-groovy-modules/core-groovy-collections/pom.xml b/core-groovy-modules/core-groovy-collections/pom.xml index 6d43ce7d18..08589f54e3 100644 --- a/core-groovy-modules/core-groovy-collections/pom.xml +++ b/core-groovy-modules/core-groovy-collections/pom.xml @@ -4,7 +4,6 @@ xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd"> 4.0.0 core-groovy-collections - 1.0-SNAPSHOT core-groovy-collections jar @@ -111,13 +110,4 @@ - - - maven_central - Maven Central - https://repo.maven.apache.org/maven2/ - - - - diff --git a/core-groovy-modules/core-groovy-strings/pom.xml b/core-groovy-modules/core-groovy-strings/pom.xml index fac0f25219..ac68849431 100644 --- a/core-groovy-modules/core-groovy-strings/pom.xml +++ b/core-groovy-modules/core-groovy-strings/pom.xml @@ -4,7 +4,6 @@ xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd"> 4.0.0 core-groovy-strings - 1.0-SNAPSHOT core-groovy-strings jar @@ -101,12 +100,4 @@ - - - maven_central - Maven Central - https://repo.maven.apache.org/maven2/ - - - diff --git a/core-groovy-modules/core-groovy/pom.xml b/core-groovy-modules/core-groovy/pom.xml index cf6cca9e18..6668f62235 100644 --- a/core-groovy-modules/core-groovy/pom.xml +++ b/core-groovy-modules/core-groovy/pom.xml @@ -3,9 +3,7 @@ xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd"> 4.0.0 - core-groovy - 1.0-SNAPSHOT core-groovy jar @@ -102,12 +100,4 @@ - - - maven_central - Maven Central - https://repo.maven.apache.org/maven2/ - - - diff --git a/core-java-modules/core-java-10/pom.xml b/core-java-modules/core-java-10/pom.xml index e2ac8db919..7eccb098a0 100644 --- a/core-java-modules/core-java-10/pom.xml +++ b/core-java-modules/core-java-10/pom.xml @@ -4,7 +4,6 @@ xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd"> 4.0.0 core-java-10 - 0.1.0-SNAPSHOT core-java-10 jar diff --git a/core-java-modules/core-java-11-2/pom.xml b/core-java-modules/core-java-11-2/pom.xml index 64a486b5c4..4647814048 100644 --- a/core-java-modules/core-java-11-2/pom.xml +++ b/core-java-modules/core-java-11-2/pom.xml @@ -4,7 +4,6 @@ xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd"> 4.0.0 core-java-11-2 - 0.1.0-SNAPSHOT core-java-11-2 jar diff --git a/core-java-modules/core-java-11-3/pom.xml b/core-java-modules/core-java-11-3/pom.xml index ccccae5ba1..22db9e62ab 100644 --- a/core-java-modules/core-java-11-3/pom.xml +++ b/core-java-modules/core-java-11-3/pom.xml @@ -4,7 +4,6 @@ xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd"> 4.0.0 core-java-11-3 - 0.1.0-SNAPSHOT core-java-11-3 jar @@ -14,7 +13,7 @@ 1.0.0-SNAPSHOT ../../pom.xml - + com.google.code.gson diff --git a/core-java-modules/core-java-11/pom.xml b/core-java-modules/core-java-11/pom.xml index 28a218c400..d0c2c0acaa 100644 --- a/core-java-modules/core-java-11/pom.xml +++ b/core-java-modules/core-java-11/pom.xml @@ -4,10 +4,8 @@ xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd"> 4.0.0 core-java-11 - 0.1.0-SNAPSHOT core-java-11 jar - http://maven.apache.org com.baeldung diff --git a/core-java-modules/core-java-12/pom.xml b/core-java-modules/core-java-12/pom.xml index 9f95b1bc3f..ba6dfc62bc 100644 --- a/core-java-modules/core-java-12/pom.xml +++ b/core-java-modules/core-java-12/pom.xml @@ -4,10 +4,8 @@ xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd"> 4.0.0 core-java-12 - 0.1.0-SNAPSHOT core-java-12 jar - http://maven.apache.org com.baeldung diff --git a/core-java-modules/core-java-13/pom.xml b/core-java-modules/core-java-13/pom.xml index 9e42838971..11d6ee7007 100644 --- a/core-java-modules/core-java-13/pom.xml +++ b/core-java-modules/core-java-13/pom.xml @@ -3,12 +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 - com.baeldung core-java-13 - 0.1.0-SNAPSHOT core-java-13 jar - http://maven.apache.org com.baeldung diff --git a/core-java-modules/core-java-14/pom.xml b/core-java-modules/core-java-14/pom.xml index f78edd622a..9f48c0b8b2 100644 --- a/core-java-modules/core-java-14/pom.xml +++ b/core-java-modules/core-java-14/pom.xml @@ -6,7 +6,6 @@ core-java-14 core-java-14 jar - http://maven.apache.org com.baeldung diff --git a/core-java-modules/core-java-15/pom.xml b/core-java-modules/core-java-15/pom.xml index a4923054ac..059e2cc8f3 100644 --- a/core-java-modules/core-java-15/pom.xml +++ b/core-java-modules/core-java-15/pom.xml @@ -6,7 +6,6 @@ core-java-15 core-java-15 jar - http://maven.apache.org com.baeldung diff --git a/core-java-modules/core-java-16/pom.xml b/core-java-modules/core-java-16/pom.xml index a2c0d4855b..f8d287880a 100644 --- a/core-java-modules/core-java-16/pom.xml +++ b/core-java-modules/core-java-16/pom.xml @@ -4,10 +4,8 @@ xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd"> 4.0.0 core-java-16 - 0.1.0-SNAPSHOT core-java-16 jar - http://maven.apache.org com.baeldung diff --git a/core-java-modules/core-java-17/pom.xml b/core-java-modules/core-java-17/pom.xml index bc949d9050..e2d854be44 100644 --- a/core-java-modules/core-java-17/pom.xml +++ b/core-java-modules/core-java-17/pom.xml @@ -4,10 +4,8 @@ xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd"> 4.0.0 core-java-17 - 0.1.0-SNAPSHOT core-java-17 jar - http://maven.apache.org com.baeldung diff --git a/core-java-modules/core-java-19/pom.xml b/core-java-modules/core-java-19/pom.xml index 096b13e679..930b37391c 100644 --- a/core-java-modules/core-java-19/pom.xml +++ b/core-java-modules/core-java-19/pom.xml @@ -1,21 +1,17 @@ + xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" + xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd"> 4.0.0 + core-java-19 + core-java-19 + com.baeldung.core-java-modules core-java-modules 0.0.1-SNAPSHOT - core-java-19 - - - 19 - 19 - UTF-8 - @@ -30,4 +26,10 @@ + + 19 + 19 + UTF-8 + + \ No newline at end of file diff --git a/core-java-modules/core-java-8-2/pom.xml b/core-java-modules/core-java-8-2/pom.xml index 7db1e1ed4e..589e384613 100644 --- a/core-java-modules/core-java-8-2/pom.xml +++ b/core-java-modules/core-java-8-2/pom.xml @@ -4,7 +4,6 @@ xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd"> 4.0.0 core-java-8-2 - 0.1.0-SNAPSHOT core-java-8-2 jar diff --git a/core-java-modules/core-java-8-datetime-2/pom.xml b/core-java-modules/core-java-8-datetime-2/pom.xml index 9e54b0ee12..ce349d9dc3 100644 --- a/core-java-modules/core-java-8-datetime-2/pom.xml +++ b/core-java-modules/core-java-8-datetime-2/pom.xml @@ -4,7 +4,6 @@ xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd"> 4.0.0 core-java-8-datetime-2 - ${project.parent.version} core-java-8-datetime-2 jar diff --git a/core-java-modules/core-java-8-datetime/pom.xml b/core-java-modules/core-java-8-datetime/pom.xml index 01ec6c0b76..481b1a6a69 100644 --- a/core-java-modules/core-java-8-datetime/pom.xml +++ b/core-java-modules/core-java-8-datetime/pom.xml @@ -4,7 +4,6 @@ xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd"> 4.0.0 core-java-8-datetime - ${project.parent.version} core-java-8-datetime jar diff --git a/core-java-modules/core-java-8/pom.xml b/core-java-modules/core-java-8/pom.xml index 89925bdbbb..fff7b7f2f9 100644 --- a/core-java-modules/core-java-8/pom.xml +++ b/core-java-modules/core-java-8/pom.xml @@ -4,7 +4,6 @@ xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd"> 4.0.0 core-java-8 - 0.1.0-SNAPSHOT core-java-8 jar diff --git a/core-java-modules/core-java-9-improvements/pom.xml b/core-java-modules/core-java-9-improvements/pom.xml index 56d4ccff9f..f6f13ff409 100644 --- a/core-java-modules/core-java-9-improvements/pom.xml +++ b/core-java-modules/core-java-9-improvements/pom.xml @@ -4,7 +4,6 @@ xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd"> 4.0.0 core-java-9-improvements - 0.2-SNAPSHOT core-java-9-improvements diff --git a/core-java-modules/core-java-9-jigsaw/pom.xml b/core-java-modules/core-java-9-jigsaw/pom.xml index a26a88f4b0..70a2882234 100644 --- a/core-java-modules/core-java-9-jigsaw/pom.xml +++ b/core-java-modules/core-java-9-jigsaw/pom.xml @@ -4,7 +4,6 @@ xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd"> 4.0.0 core-java-9-jigsaw - 0.2-SNAPSHOT core-java-9-jigsaw diff --git a/core-java-modules/core-java-9-new-features/pom.xml b/core-java-modules/core-java-9-new-features/pom.xml index 78ffaff010..6821c9c340 100644 --- a/core-java-modules/core-java-9-new-features/pom.xml +++ b/core-java-modules/core-java-9-new-features/pom.xml @@ -4,7 +4,6 @@ xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd"> 4.0.0 core-java-9-new-features - 0.2-SNAPSHOT core-java-9-new-features diff --git a/core-java-modules/core-java-9-streams/pom.xml b/core-java-modules/core-java-9-streams/pom.xml index d3f81780d1..903194b3b3 100644 --- a/core-java-modules/core-java-9-streams/pom.xml +++ b/core-java-modules/core-java-9-streams/pom.xml @@ -4,7 +4,6 @@ xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd"> 4.0.0 core-java-9-streams - 0.1.0-SNAPSHOT core-java-9-streams jar diff --git a/core-java-modules/core-java-9/pom.xml b/core-java-modules/core-java-9/pom.xml index 272af327cb..bcfdacdf1d 100644 --- a/core-java-modules/core-java-9/pom.xml +++ b/core-java-modules/core-java-9/pom.xml @@ -4,7 +4,6 @@ xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd"> 4.0.0 core-java-9 - 0.2-SNAPSHOT core-java-9 diff --git a/core-java-modules/core-java-annotations/pom.xml b/core-java-modules/core-java-annotations/pom.xml index 1acd347232..6b1b9d802f 100644 --- a/core-java-modules/core-java-annotations/pom.xml +++ b/core-java-modules/core-java-annotations/pom.xml @@ -4,7 +4,6 @@ xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd"> 4.0.0 core-java-annotations - 0.1.0-SNAPSHOT core-java-annotations jar diff --git a/core-java-modules/core-java-booleans/pom.xml b/core-java-modules/core-java-booleans/pom.xml index 18338fd88c..3b0c28208f 100644 --- a/core-java-modules/core-java-booleans/pom.xml +++ b/core-java-modules/core-java-booleans/pom.xml @@ -1,16 +1,16 @@ - 4.0.0 - core-java-booleans - 0.1.0-SNAPSHOT - core-java-booleans - jar + xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" + xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd"> + 4.0.0 + core-java-booleans + core-java-booleans + jar + + + com.baeldung.core-java-modules + core-java-modules + 0.0.1-SNAPSHOT + - - com.baeldung.core-java-modules - core-java-modules - 0.0.1-SNAPSHOT - \ No newline at end of file diff --git a/core-java-modules/core-java-char/pom.xml b/core-java-modules/core-java-char/pom.xml index 7dc0923fb5..eb6cbee952 100644 --- a/core-java-modules/core-java-char/pom.xml +++ b/core-java-modules/core-java-char/pom.xml @@ -4,7 +4,6 @@ xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd"> 4.0.0 core-java-char - 0.1.0-SNAPSHOT core-java-char jar diff --git a/core-java-modules/core-java-collections-3/pom.xml b/core-java-modules/core-java-collections-3/pom.xml index 6ef8e3c81a..373dc9db14 100644 --- a/core-java-modules/core-java-collections-3/pom.xml +++ b/core-java-modules/core-java-collections-3/pom.xml @@ -4,7 +4,6 @@ xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd"> 4.0.0 core-java-collections-3 - 0.1.0-SNAPSHOT core-java-collections-3 jar diff --git a/core-java-modules/core-java-collections-4/pom.xml b/core-java-modules/core-java-collections-4/pom.xml index e88d5a6740..1a59411ecb 100644 --- a/core-java-modules/core-java-collections-4/pom.xml +++ b/core-java-modules/core-java-collections-4/pom.xml @@ -4,7 +4,6 @@ xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd"> 4.0.0 core-java-collections-4 - 0.1.0-SNAPSHOT core-java-collections-4 jar diff --git a/core-java-modules/core-java-collections-5/pom.xml b/core-java-modules/core-java-collections-5/pom.xml index 67c9f7120c..6baecc2802 100644 --- a/core-java-modules/core-java-collections-5/pom.xml +++ b/core-java-modules/core-java-collections-5/pom.xml @@ -1,10 +1,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 core-java-collections-5 - 0.0.1-SNAPSHOT core-java-collections-5 jar @@ -55,4 +54,5 @@ 0.9.38 1.36 + diff --git a/core-java-modules/core-java-collections-array-list/pom.xml b/core-java-modules/core-java-collections-array-list/pom.xml index e3a115854c..ee0b102bb0 100644 --- a/core-java-modules/core-java-collections-array-list/pom.xml +++ b/core-java-modules/core-java-collections-array-list/pom.xml @@ -4,34 +4,6 @@ xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd"> 4.0.0 core-java-collections-array-list - 0.1.0-SNAPSHOT - - - - org.apache.maven.plugins - maven-compiler-plugin - - ${maven-compiler-plugin.source} - ${maven-compiler-plugin.target} - - - - org.apache.maven.plugins - maven-surefire-plugin - ${surefire.plugin.version} - - - --add-opens java.base/java.util=ALL-UNNAMED - - - - - - - 16 - 16 - 3.0.0-M3 - core-java-collections-array-list jar @@ -55,4 +27,33 @@ + + + + org.apache.maven.plugins + maven-compiler-plugin + + ${maven-compiler-plugin.source} + ${maven-compiler-plugin.target} + + + + org.apache.maven.plugins + maven-surefire-plugin + ${surefire.plugin.version} + + + --add-opens java.base/java.util=ALL-UNNAMED + + + + + + + + 16 + 16 + 3.0.0-M3 + + \ No newline at end of file diff --git a/core-java-modules/core-java-collections-conversions-2/pom.xml b/core-java-modules/core-java-collections-conversions-2/pom.xml index f6775a7a42..8cd0a6932b 100644 --- a/core-java-modules/core-java-collections-conversions-2/pom.xml +++ b/core-java-modules/core-java-collections-conversions-2/pom.xml @@ -4,7 +4,6 @@ xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd"> 4.0.0 core-java-collections-conversions-2 - 0.1.0-SNAPSHOT core-java-collections-conversions-2 jar diff --git a/core-java-modules/core-java-collections-conversions/pom.xml b/core-java-modules/core-java-collections-conversions/pom.xml index 08a452da51..78e9847c0a 100644 --- a/core-java-modules/core-java-collections-conversions/pom.xml +++ b/core-java-modules/core-java-collections-conversions/pom.xml @@ -4,7 +4,6 @@ xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd"> 4.0.0 core-java-collections-conversions - 0.1.0-SNAPSHOT core-java-collections-conversions jar diff --git a/core-java-modules/core-java-collections-list-2/pom.xml b/core-java-modules/core-java-collections-list-2/pom.xml index 59ab8c5f27..a305cdffc8 100644 --- a/core-java-modules/core-java-collections-list-2/pom.xml +++ b/core-java-modules/core-java-collections-list-2/pom.xml @@ -4,7 +4,6 @@ xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd"> 4.0.0 core-java-collections-list-2 - 0.1.0-SNAPSHOT core-java-collections-list-2 jar diff --git a/core-java-modules/core-java-collections-list-3/pom.xml b/core-java-modules/core-java-collections-list-3/pom.xml index 912204bcc6..f01fe1f3b9 100644 --- a/core-java-modules/core-java-collections-list-3/pom.xml +++ b/core-java-modules/core-java-collections-list-3/pom.xml @@ -4,7 +4,6 @@ xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd"> 4.0.0 core-java-collections-list-3 - 0.1.0-SNAPSHOT core-java-collections-list-3 jar diff --git a/core-java-modules/core-java-collections-list-4/pom.xml b/core-java-modules/core-java-collections-list-4/pom.xml index 964ea4f5a1..6d068298ec 100644 --- a/core-java-modules/core-java-collections-list-4/pom.xml +++ b/core-java-modules/core-java-collections-list-4/pom.xml @@ -4,7 +4,6 @@ xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd"> 4.0.0 core-java-collections-list-4 - 0.1.0-SNAPSHOT core-java-collections-list-4 jar diff --git a/core-java-modules/core-java-collections-list-5/pom.xml b/core-java-modules/core-java-collections-list-5/pom.xml index 0807f7612c..b51dda4091 100644 --- a/core-java-modules/core-java-collections-list-5/pom.xml +++ b/core-java-modules/core-java-collections-list-5/pom.xml @@ -4,7 +4,6 @@ xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd"> 4.0.0 core-java-collections-list-5 - 0.1.0-SNAPSHOT core-java-collections-list-5 jar diff --git a/core-java-modules/core-java-collections-list/pom.xml b/core-java-modules/core-java-collections-list/pom.xml index 0cc8828a0d..94abb334e0 100644 --- a/core-java-modules/core-java-collections-list/pom.xml +++ b/core-java-modules/core-java-collections-list/pom.xml @@ -4,7 +4,6 @@ xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd"> 4.0.0 core-java-collections-list - 0.1.0-SNAPSHOT core-java-collections-list jar diff --git a/core-java-modules/core-java-collections-maps-2/pom.xml b/core-java-modules/core-java-collections-maps-2/pom.xml index 1e526ef892..15ca688ad2 100644 --- a/core-java-modules/core-java-collections-maps-2/pom.xml +++ b/core-java-modules/core-java-collections-maps-2/pom.xml @@ -4,7 +4,6 @@ xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd"> 4.0.0 core-java-collections-maps-2 - 0.1.0-SNAPSHOT core-java-collections-maps-2 jar diff --git a/core-java-modules/core-java-collections-maps-3/pom.xml b/core-java-modules/core-java-collections-maps-3/pom.xml index a5bb6dc338..98a0d18fe9 100644 --- a/core-java-modules/core-java-collections-maps-3/pom.xml +++ b/core-java-modules/core-java-collections-maps-3/pom.xml @@ -4,7 +4,6 @@ xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd"> 4.0.0 core-java-collections-maps-3 - 0.1.0-SNAPSHOT core-java-collections-maps-3 jar diff --git a/core-java-modules/core-java-collections-maps-4/pom.xml b/core-java-modules/core-java-collections-maps-4/pom.xml index a85e2cde2a..f1734b7379 100644 --- a/core-java-modules/core-java-collections-maps-4/pom.xml +++ b/core-java-modules/core-java-collections-maps-4/pom.xml @@ -4,7 +4,6 @@ xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd"> 4.0.0 core-java-collections-maps-4 - 0.1.0-SNAPSHOT core-java-collections-maps-4 jar diff --git a/core-java-modules/core-java-collections-maps-5/pom.xml b/core-java-modules/core-java-collections-maps-5/pom.xml index f12e044b23..593ec5a8f6 100644 --- a/core-java-modules/core-java-collections-maps-5/pom.xml +++ b/core-java-modules/core-java-collections-maps-5/pom.xml @@ -4,7 +4,6 @@ xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd"> 4.0.0 core-java-collections-maps-5 - 0.1.0-SNAPSHOT core-java-collections-maps-5 jar diff --git a/core-java-modules/core-java-collections-maps-6/pom.xml b/core-java-modules/core-java-collections-maps-6/pom.xml index 9910d08691..70a04c352b 100644 --- a/core-java-modules/core-java-collections-maps-6/pom.xml +++ b/core-java-modules/core-java-collections-maps-6/pom.xml @@ -1,17 +1,17 @@ + xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" + xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd"> + 4.0.0 core-java-collections-maps-6 - 0.1.0-SNAPSHOT core-java-collections-maps-6 jar + core-java-modules com.baeldung.core-java-modules 0.0.1-SNAPSHOT - 4.0.0 5.2.5.RELEASE diff --git a/core-java-modules/core-java-collections-maps/pom.xml b/core-java-modules/core-java-collections-maps/pom.xml index 3a1bf0d8a1..5e19117e08 100644 --- a/core-java-modules/core-java-collections-maps/pom.xml +++ b/core-java-modules/core-java-collections-maps/pom.xml @@ -4,7 +4,6 @@ xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd"> 4.0.0 core-java-collections-maps - 0.1.0-SNAPSHOT core-java-collections-maps jar diff --git a/core-java-modules/core-java-collections-set-2/pom.xml b/core-java-modules/core-java-collections-set-2/pom.xml index b1aadb0c22..680c01d8ca 100644 --- a/core-java-modules/core-java-collections-set-2/pom.xml +++ b/core-java-modules/core-java-collections-set-2/pom.xml @@ -4,7 +4,6 @@ xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd"> 4.0.0 core-java-collections-set-2 - 0.0.1-SNAPSHOT core-java-collections-set-2 jar diff --git a/core-java-modules/core-java-collections-set/pom.xml b/core-java-modules/core-java-collections-set/pom.xml index 0b6e324c78..e130837f1c 100644 --- a/core-java-modules/core-java-collections-set/pom.xml +++ b/core-java-modules/core-java-collections-set/pom.xml @@ -4,7 +4,6 @@ xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd"> 4.0.0 core-java-collections-set - 0.1.0-SNAPSHOT core-java-collections-set jar diff --git a/core-java-modules/core-java-collections/pom.xml b/core-java-modules/core-java-collections/pom.xml index eab7a35584..be91492d06 100644 --- a/core-java-modules/core-java-collections/pom.xml +++ b/core-java-modules/core-java-collections/pom.xml @@ -4,7 +4,6 @@ xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd"> 4.0.0 core-java-collections - 0.1.0-SNAPSHOT core-java-collections jar diff --git a/core-java-modules/core-java-concurrency-2/pom.xml b/core-java-modules/core-java-concurrency-2/pom.xml index c61f28a6b3..e373c829cc 100644 --- a/core-java-modules/core-java-concurrency-2/pom.xml +++ b/core-java-modules/core-java-concurrency-2/pom.xml @@ -4,7 +4,6 @@ xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd"> 4.0.0 core-java-concurrency-2 - 0.1.0-SNAPSHOT core-java-concurrency-2 jar diff --git a/core-java-modules/core-java-concurrency-advanced-2/pom.xml b/core-java-modules/core-java-concurrency-advanced-2/pom.xml index 1f19dc8cca..5c96684311 100644 --- a/core-java-modules/core-java-concurrency-advanced-2/pom.xml +++ b/core-java-modules/core-java-concurrency-advanced-2/pom.xml @@ -4,7 +4,6 @@ xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd"> 4.0.0 core-java-concurrency-advanced-2 - 0.1.0-SNAPSHOT core-java-concurrency-advanced-2 jar diff --git a/core-java-modules/core-java-concurrency-advanced-3/pom.xml b/core-java-modules/core-java-concurrency-advanced-3/pom.xml index 49a72112b4..7fa859c2d5 100644 --- a/core-java-modules/core-java-concurrency-advanced-3/pom.xml +++ b/core-java-modules/core-java-concurrency-advanced-3/pom.xml @@ -4,7 +4,6 @@ xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd"> 4.0.0 core-java-concurrency-advanced-3 - 0.1.0-SNAPSHOT core-java-concurrency-advanced-3 jar diff --git a/core-java-modules/core-java-concurrency-advanced-4/pom.xml b/core-java-modules/core-java-concurrency-advanced-4/pom.xml index 5bd7ccfa07..2ffe19b13c 100644 --- a/core-java-modules/core-java-concurrency-advanced-4/pom.xml +++ b/core-java-modules/core-java-concurrency-advanced-4/pom.xml @@ -4,7 +4,6 @@ xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd"> 4.0.0 core-java-concurrency-advanced-4 - 0.1.0-SNAPSHOT core-java-concurrency-advanced-4 jar @@ -14,9 +13,6 @@ 0.0.1-SNAPSHOT - - - core-java-concurrency-advanced-4 diff --git a/core-java-modules/core-java-concurrency-advanced/pom.xml b/core-java-modules/core-java-concurrency-advanced/pom.xml index 3c726e1284..18cfc5371c 100644 --- a/core-java-modules/core-java-concurrency-advanced/pom.xml +++ b/core-java-modules/core-java-concurrency-advanced/pom.xml @@ -4,7 +4,6 @@ xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd"> 4.0.0 core-java-concurrency-advanced - 0.1.0-SNAPSHOT core-java-concurrency-advanced jar diff --git a/core-java-modules/core-java-concurrency-basic-2/pom.xml b/core-java-modules/core-java-concurrency-basic-2/pom.xml index 9ca12da7fb..0cdfd68f03 100644 --- a/core-java-modules/core-java-concurrency-basic-2/pom.xml +++ b/core-java-modules/core-java-concurrency-basic-2/pom.xml @@ -4,7 +4,6 @@ xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd"> 4.0.0 core-java-concurrency-basic-2 - 0.1.0-SNAPSHOT core-java-concurrency-basic-2 jar diff --git a/core-java-modules/core-java-concurrency-basic-3/pom.xml b/core-java-modules/core-java-concurrency-basic-3/pom.xml index 7289877550..1983d3c163 100644 --- a/core-java-modules/core-java-concurrency-basic-3/pom.xml +++ b/core-java-modules/core-java-concurrency-basic-3/pom.xml @@ -4,7 +4,6 @@ xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd"> 4.0.0 core-java-concurrency-basic-3 - 0.1.0-SNAPSHOT core-java-concurrency-basic-3 jar @@ -14,6 +13,15 @@ 0.0.1-SNAPSHOT + + + org.awaitility + awaitility + ${awaitility.version} + test + + + core-java-concurrency-basic-3 @@ -28,12 +36,4 @@ 4.2.0 - - - org.awaitility - awaitility - ${awaitility.version} - test - - \ No newline at end of file diff --git a/core-java-modules/core-java-concurrency-basic/pom.xml b/core-java-modules/core-java-concurrency-basic/pom.xml index 1e3157291a..36d59f254c 100644 --- a/core-java-modules/core-java-concurrency-basic/pom.xml +++ b/core-java-modules/core-java-concurrency-basic/pom.xml @@ -4,7 +4,6 @@ xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd"> 4.0.0 core-java-concurrency-basic - 0.1.0-SNAPSHOT core-java-concurrency-basic jar diff --git a/core-java-modules/core-java-concurrency-collections-2/pom.xml b/core-java-modules/core-java-concurrency-collections-2/pom.xml index 9a95662fae..a85721e474 100644 --- a/core-java-modules/core-java-concurrency-collections-2/pom.xml +++ b/core-java-modules/core-java-concurrency-collections-2/pom.xml @@ -3,7 +3,6 @@ xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd"> 4.0.0 core-java-concurrency-collections-2 - 0.1.0-SNAPSHOT core-java-concurrency-collections-2 jar diff --git a/core-java-modules/core-java-concurrency-collections/pom.xml b/core-java-modules/core-java-concurrency-collections/pom.xml index 8b8d2fe03b..a35da4ce49 100644 --- a/core-java-modules/core-java-concurrency-collections/pom.xml +++ b/core-java-modules/core-java-concurrency-collections/pom.xml @@ -4,7 +4,6 @@ xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd"> 4.0.0 core-java-concurrency-collections - 0.1.0-SNAPSHOT core-java-concurrency-collections jar diff --git a/core-java-modules/core-java-concurrency-simple/pom.xml b/core-java-modules/core-java-concurrency-simple/pom.xml index 159a105035..a16df4fc97 100644 --- a/core-java-modules/core-java-concurrency-simple/pom.xml +++ b/core-java-modules/core-java-concurrency-simple/pom.xml @@ -3,7 +3,6 @@ xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd"> 4.0.0 core-java-concurrency-simple - 0.1.0-SNAPSHOT core-java-concurrency-simple jar diff --git a/core-java-modules/core-java-console/pom.xml b/core-java-modules/core-java-console/pom.xml index 200e2707dd..4debf9388b 100644 --- a/core-java-modules/core-java-console/pom.xml +++ b/core-java-modules/core-java-console/pom.xml @@ -4,7 +4,6 @@ xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd"> 4.0.0 core-java-console - 0.1.0-SNAPSHOT core-java-console jar diff --git a/core-java-modules/core-java-date-operations-1/pom.xml b/core-java-modules/core-java-date-operations-1/pom.xml index c5d46723d8..5bfbb5bab0 100644 --- a/core-java-modules/core-java-date-operations-1/pom.xml +++ b/core-java-modules/core-java-date-operations-1/pom.xml @@ -4,7 +4,6 @@ xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd"> 4.0.0 core-java-date-operations-1 - ${project.parent.version} core-java-date-operations-1 jar diff --git a/core-java-modules/core-java-date-operations-2/pom.xml b/core-java-modules/core-java-date-operations-2/pom.xml index 461ba70b62..c6a22a4166 100644 --- a/core-java-modules/core-java-date-operations-2/pom.xml +++ b/core-java-modules/core-java-date-operations-2/pom.xml @@ -4,7 +4,6 @@ xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd"> 4.0.0 core-java-date-operations-2 - ${project.parent.version} core-java-date-operations-2 jar diff --git a/core-java-modules/core-java-date-operations-3/pom.xml b/core-java-modules/core-java-date-operations-3/pom.xml index 8713139ba8..89c21a31c1 100644 --- a/core-java-modules/core-java-date-operations-3/pom.xml +++ b/core-java-modules/core-java-date-operations-3/pom.xml @@ -4,7 +4,6 @@ xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd"> 4.0.0 core-java-date-operations-3 - ${project.parent.version} core-java-date-operations-3 jar @@ -14,10 +13,4 @@ 0.0.1-SNAPSHOT - - - - - - \ No newline at end of file diff --git a/core-java-modules/core-java-datetime-string-2/pom.xml b/core-java-modules/core-java-datetime-string-2/pom.xml index 3ec9ccaac4..458fba25a2 100644 --- a/core-java-modules/core-java-datetime-string-2/pom.xml +++ b/core-java-modules/core-java-datetime-string-2/pom.xml @@ -4,7 +4,6 @@ xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd"> 4.0.0 core-java-datetime-string-2 - ${project.parent.version} core-java-datetime-string-2 jar diff --git a/core-java-modules/core-java-datetime-string/pom.xml b/core-java-modules/core-java-datetime-string/pom.xml index 2b3c2edb02..3efb2fe728 100644 --- a/core-java-modules/core-java-datetime-string/pom.xml +++ b/core-java-modules/core-java-datetime-string/pom.xml @@ -4,7 +4,6 @@ xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd"> 4.0.0 core-java-datetime-string - ${project.parent.version} core-java-datetime-string jar @@ -20,7 +19,6 @@ commons-lang3 ${commons-lang3.version} - commons-validator commons-validator diff --git a/core-java-modules/core-java-exceptions-2/pom.xml b/core-java-modules/core-java-exceptions-2/pom.xml index 9103672cd4..8bf5605f09 100644 --- a/core-java-modules/core-java-exceptions-2/pom.xml +++ b/core-java-modules/core-java-exceptions-2/pom.xml @@ -5,8 +5,6 @@ core-java-exceptions-2 core-java-exceptions-2 jar - - http://maven.apache.org com.baeldung.core-java-modules diff --git a/core-java-modules/core-java-exceptions-3/pom.xml b/core-java-modules/core-java-exceptions-3/pom.xml index 7eaa57edf1..6ef979b54a 100644 --- a/core-java-modules/core-java-exceptions-3/pom.xml +++ b/core-java-modules/core-java-exceptions-3/pom.xml @@ -3,9 +3,7 @@ xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd"> 4.0.0 - com.baeldung.exceptions core-java-exceptions-3 - 0.1.0-SNAPSHOT core-java-exceptions-3 jar diff --git a/core-java-modules/core-java-exceptions-4/pom.xml b/core-java-modules/core-java-exceptions-4/pom.xml index e9eb1bf379..c41c782fcc 100644 --- a/core-java-modules/core-java-exceptions-4/pom.xml +++ b/core-java-modules/core-java-exceptions-4/pom.xml @@ -3,9 +3,7 @@ xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd"> 4.0.0 - com.baeldung.exceptions core-java-exceptions-4 - 0.1.0-SNAPSHOT core-java-exceptions-4 jar diff --git a/core-java-modules/core-java-exceptions/pom.xml b/core-java-modules/core-java-exceptions/pom.xml index 866248b416..0bb6e86c76 100644 --- a/core-java-modules/core-java-exceptions/pom.xml +++ b/core-java-modules/core-java-exceptions/pom.xml @@ -3,9 +3,7 @@ xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd"> 4.0.0 - com.baeldung.exceptions core-java-exceptions - 0.1.0-SNAPSHOT core-java-exceptions jar diff --git a/core-java-modules/core-java-function/pom.xml b/core-java-modules/core-java-function/pom.xml index ebc34aaf4b..e8b538ad24 100644 --- a/core-java-modules/core-java-function/pom.xml +++ b/core-java-modules/core-java-function/pom.xml @@ -4,7 +4,6 @@ xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd"> 4.0.0 core-java-function - 0.1.0-SNAPSHOT core-java-function jar diff --git a/core-java-modules/core-java-functional/pom.xml b/core-java-modules/core-java-functional/pom.xml index 9ad47f8133..4b0bf9f730 100644 --- a/core-java-modules/core-java-functional/pom.xml +++ b/core-java-modules/core-java-functional/pom.xml @@ -4,7 +4,6 @@ xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd"> 4.0.0 core-java-functional - 0.1.0-SNAPSHOT core-java-functional jar diff --git a/core-java-modules/core-java-hex/pom.xml b/core-java-modules/core-java-hex/pom.xml index afac1c4d66..71e6b15b2e 100644 --- a/core-java-modules/core-java-hex/pom.xml +++ b/core-java-modules/core-java-hex/pom.xml @@ -4,7 +4,6 @@ xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd"> 4.0.0 core-java-hex - 0.1.0-SNAPSHOT core-java-hex jar @@ -14,12 +13,4 @@ 0.0.1-SNAPSHOT - - - - - - - - \ No newline at end of file diff --git a/core-java-modules/core-java-httpclient/pom.xml b/core-java-modules/core-java-httpclient/pom.xml index 3df0447ff0..f3730d1b45 100644 --- a/core-java-modules/core-java-httpclient/pom.xml +++ b/core-java-modules/core-java-httpclient/pom.xml @@ -4,7 +4,6 @@ xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd"> 4.0.0 core-java-httpclient - 0.1.0-SNAPSHOT core-java-httpclient jar diff --git a/core-java-modules/core-java-io-2/pom.xml b/core-java-modules/core-java-io-2/pom.xml index b5f43d5a94..8f4f2518fe 100644 --- a/core-java-modules/core-java-io-2/pom.xml +++ b/core-java-modules/core-java-io-2/pom.xml @@ -4,7 +4,6 @@ xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd"> 4.0.0 core-java-io-2 - 0.1.0-SNAPSHOT core-java-io-2 jar diff --git a/core-java-modules/core-java-io-3/pom.xml b/core-java-modules/core-java-io-3/pom.xml index 4901133854..26ea301837 100644 --- a/core-java-modules/core-java-io-3/pom.xml +++ b/core-java-modules/core-java-io-3/pom.xml @@ -4,7 +4,6 @@ xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd"> 4.0.0 core-java-io-3 - 0.1.0-SNAPSHOT core-java-io-3 jar diff --git a/core-java-modules/core-java-io-4/pom.xml b/core-java-modules/core-java-io-4/pom.xml index 2cc05698fc..30177e5c09 100644 --- a/core-java-modules/core-java-io-4/pom.xml +++ b/core-java-modules/core-java-io-4/pom.xml @@ -4,7 +4,6 @@ xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd"> 4.0.0 core-java-io-4 - 0.1.0-SNAPSHOT core-java-io-4 jar diff --git a/core-java-modules/core-java-io-apis-2/pom.xml b/core-java-modules/core-java-io-apis-2/pom.xml index 70c3a87da2..5ad5528bad 100644 --- a/core-java-modules/core-java-io-apis-2/pom.xml +++ b/core-java-modules/core-java-io-apis-2/pom.xml @@ -4,7 +4,6 @@ xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd"> 4.0.0 core-java-io-apis-2 - 0.1.0-SNAPSHOT core-java-io-apis-2 jar diff --git a/core-java-modules/core-java-io-apis/pom.xml b/core-java-modules/core-java-io-apis/pom.xml index fab2bff959..f9d404cd5b 100644 --- a/core-java-modules/core-java-io-apis/pom.xml +++ b/core-java-modules/core-java-io-apis/pom.xml @@ -4,7 +4,6 @@ xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd"> 4.0.0 core-java-io-apis - 0.1.0-SNAPSHOT core-java-io-apis jar diff --git a/core-java-modules/core-java-io-conversions-2/pom.xml b/core-java-modules/core-java-io-conversions-2/pom.xml index 24708ad967..2c49bbfd81 100644 --- a/core-java-modules/core-java-io-conversions-2/pom.xml +++ b/core-java-modules/core-java-io-conversions-2/pom.xml @@ -4,7 +4,6 @@ xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd"> 4.0.0 core-java-io-conversions-2 - 0.1.0-SNAPSHOT core-java-io-conversions-2 jar diff --git a/core-java-modules/core-java-io-conversions/pom.xml b/core-java-modules/core-java-io-conversions/pom.xml index 8d5a47a1ac..a44c352df2 100644 --- a/core-java-modules/core-java-io-conversions/pom.xml +++ b/core-java-modules/core-java-io-conversions/pom.xml @@ -4,7 +4,6 @@ xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd"> 4.0.0 core-java-io-conversions - 0.1.0-SNAPSHOT core-java-io-conversions jar diff --git a/core-java-modules/core-java-io/pom.xml b/core-java-modules/core-java-io/pom.xml index e645534b46..ce072e6875 100644 --- a/core-java-modules/core-java-io/pom.xml +++ b/core-java-modules/core-java-io/pom.xml @@ -4,7 +4,6 @@ xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd"> 4.0.0 core-java-io - 0.1.0-SNAPSHOT core-java-io jar diff --git a/core-java-modules/core-java-jar/pom.xml b/core-java-modules/core-java-jar/pom.xml index 0ce2414f1e..e4a43bdf1f 100644 --- a/core-java-modules/core-java-jar/pom.xml +++ b/core-java-modules/core-java-jar/pom.xml @@ -4,7 +4,6 @@ xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd"> 4.0.0 core-java-jar - 0.1.0-SNAPSHOT core-java-jar jar diff --git a/core-java-modules/core-java-jndi/pom.xml b/core-java-modules/core-java-jndi/pom.xml index 752700c390..e48bec6622 100644 --- a/core-java-modules/core-java-jndi/pom.xml +++ b/core-java-modules/core-java-jndi/pom.xml @@ -3,9 +3,7 @@ xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd"> 4.0.0 - com.baeldung.jndi core-java-jndi - 1.0-SNAPSHOT core-java-jndi diff --git a/core-java-modules/core-java-jvm-2/pom.xml b/core-java-modules/core-java-jvm-2/pom.xml index 59d2842ffe..2ccc847a6f 100644 --- a/core-java-modules/core-java-jvm-2/pom.xml +++ b/core-java-modules/core-java-jvm-2/pom.xml @@ -4,7 +4,6 @@ xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd"> 4.0.0 core-java-jvm-2 - 0.1.0-SNAPSHOT core-java-jvm-2 jar @@ -47,10 +46,8 @@ 0.10 0.10.2 - 11 11 - \ No newline at end of file diff --git a/core-java-modules/core-java-jvm-3/pom.xml b/core-java-modules/core-java-jvm-3/pom.xml index cb2d8b0b85..78f4201c94 100644 --- a/core-java-modules/core-java-jvm-3/pom.xml +++ b/core-java-modules/core-java-jvm-3/pom.xml @@ -4,7 +4,6 @@ xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd"> 4.0.0 core-java-jvm-3 - 0.1.0-SNAPSHOT core-java-jvm-3 jar @@ -14,7 +13,4 @@ 0.0.1-SNAPSHOT - - - \ No newline at end of file diff --git a/core-java-modules/core-java-jvm/pom.xml b/core-java-modules/core-java-jvm/pom.xml index 856c6356a4..52bdf8bc5d 100644 --- a/core-java-modules/core-java-jvm/pom.xml +++ b/core-java-modules/core-java-jvm/pom.xml @@ -1,10 +1,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 core-java-jvm - 0.1.0-SNAPSHOT core-java-jvm jar diff --git a/core-java-modules/core-java-lambdas/pom.xml b/core-java-modules/core-java-lambdas/pom.xml index f1e61ab8bf..a7fc5355d7 100644 --- a/core-java-modules/core-java-lambdas/pom.xml +++ b/core-java-modules/core-java-lambdas/pom.xml @@ -4,7 +4,6 @@ xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd"> 4.0.0 core-java-lambdas - 0.1.0-SNAPSHOT core-java-lambdas jar diff --git a/core-java-modules/core-java-lang-2/pom.xml b/core-java-modules/core-java-lang-2/pom.xml index 4a89a22577..22055cf252 100644 --- a/core-java-modules/core-java-lang-2/pom.xml +++ b/core-java-modules/core-java-lang-2/pom.xml @@ -4,7 +4,6 @@ xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd"> 4.0.0 core-java-lang-2 - 0.1.0-SNAPSHOT core-java-lang-2 jar diff --git a/core-java-modules/core-java-lang-3/pom.xml b/core-java-modules/core-java-lang-3/pom.xml index 331d91dff6..f29fa6494a 100644 --- a/core-java-modules/core-java-lang-3/pom.xml +++ b/core-java-modules/core-java-lang-3/pom.xml @@ -4,7 +4,6 @@ xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd"> 4.0.0 core-java-lang-3 - 0.1.0-SNAPSHOT core-java-lang-3 jar diff --git a/core-java-modules/core-java-lang-4/pom.xml b/core-java-modules/core-java-lang-4/pom.xml index de67ddf55a..6977621a0e 100644 --- a/core-java-modules/core-java-lang-4/pom.xml +++ b/core-java-modules/core-java-lang-4/pom.xml @@ -4,7 +4,6 @@ xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd"> 4.0.0 core-java-lang-4 - 0.1.0-SNAPSHOT core-java-lang-4 jar diff --git a/core-java-modules/core-java-lang-5/pom.xml b/core-java-modules/core-java-lang-5/pom.xml index e3130632fb..8e95fc4405 100644 --- a/core-java-modules/core-java-lang-5/pom.xml +++ b/core-java-modules/core-java-lang-5/pom.xml @@ -4,7 +4,6 @@ xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd"> 4.0.0 core-java-lang-5 - 0.1.0-SNAPSHOT core-java-lang-5 jar @@ -13,12 +12,6 @@ core-java-modules 0.0.1-SNAPSHOT - - - 3.12.0 - 0.10.2 - - core-java-lang-5 @@ -29,4 +22,10 @@ + + + 3.12.0 + 0.10.2 + + \ No newline at end of file diff --git a/core-java-modules/core-java-lang-math-2/pom.xml b/core-java-modules/core-java-lang-math-2/pom.xml index e6ead53350..223c791d35 100644 --- a/core-java-modules/core-java-lang-math-2/pom.xml +++ b/core-java-modules/core-java-lang-math-2/pom.xml @@ -4,7 +4,6 @@ xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd"> 4.0.0 core-java-lang-math-2 - 0.0.1-SNAPSHOT core-java-lang-math-2 diff --git a/core-java-modules/core-java-lang-math-3/pom.xml b/core-java-modules/core-java-lang-math-3/pom.xml index 38cb6dfa17..9cd3673df3 100644 --- a/core-java-modules/core-java-lang-math-3/pom.xml +++ b/core-java-modules/core-java-lang-math-3/pom.xml @@ -4,7 +4,6 @@ xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd"> 4.0.0 core-java-lang-math-3 - 0.0.1-SNAPSHOT core-java-lang-math-3 diff --git a/core-java-modules/core-java-lang-math/pom.xml b/core-java-modules/core-java-lang-math/pom.xml index 37550b67d8..551e5db1d5 100644 --- a/core-java-modules/core-java-lang-math/pom.xml +++ b/core-java-modules/core-java-lang-math/pom.xml @@ -4,7 +4,6 @@ xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd"> 4.0.0 core-java-lang-math - 0.1.0-SNAPSHOT core-java-lang-math jar diff --git a/core-java-modules/core-java-lang-operators-2/pom.xml b/core-java-modules/core-java-lang-operators-2/pom.xml index 9d925c553a..4170f9f6a0 100644 --- a/core-java-modules/core-java-lang-operators-2/pom.xml +++ b/core-java-modules/core-java-lang-operators-2/pom.xml @@ -4,7 +4,6 @@ xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd"> 4.0.0 core-java-lang-operators-2 - 0.1.0-SNAPSHOT core-java-lang-operators-2 jar diff --git a/core-java-modules/core-java-lang-operators/pom.xml b/core-java-modules/core-java-lang-operators/pom.xml index c61fb81354..1815d01dcc 100644 --- a/core-java-modules/core-java-lang-operators/pom.xml +++ b/core-java-modules/core-java-lang-operators/pom.xml @@ -4,7 +4,6 @@ xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd"> 4.0.0 core-java-lang-operators - 0.1.0-SNAPSHOT core-java-lang-operators jar diff --git a/core-java-modules/core-java-lang-syntax-2/pom.xml b/core-java-modules/core-java-lang-syntax-2/pom.xml index fdb0503174..bae5f0b6bd 100644 --- a/core-java-modules/core-java-lang-syntax-2/pom.xml +++ b/core-java-modules/core-java-lang-syntax-2/pom.xml @@ -4,7 +4,6 @@ xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd"> 4.0.0 core-java-lang-syntax-2 - 0.1.0-SNAPSHOT core-java-lang-syntax-2 jar diff --git a/core-java-modules/core-java-lang-syntax/pom.xml b/core-java-modules/core-java-lang-syntax/pom.xml index 7cdbc40fbc..005bdc73cc 100644 --- a/core-java-modules/core-java-lang-syntax/pom.xml +++ b/core-java-modules/core-java-lang-syntax/pom.xml @@ -4,7 +4,6 @@ xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd"> 4.0.0 core-java-lang-syntax - 0.1.0-SNAPSHOT core-java-lang-syntax jar diff --git a/core-java-modules/core-java-lang/pom.xml b/core-java-modules/core-java-lang/pom.xml index 4989c6a5a7..27cf0ac276 100644 --- a/core-java-modules/core-java-lang/pom.xml +++ b/core-java-modules/core-java-lang/pom.xml @@ -4,7 +4,6 @@ xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd"> 4.0.0 core-java-lang - 0.1.0-SNAPSHOT core-java-lang jar diff --git a/core-java-modules/core-java-networking-4/pom.xml b/core-java-modules/core-java-networking-4/pom.xml index a3694cfea8..5fca4a1cab 100644 --- a/core-java-modules/core-java-networking-4/pom.xml +++ b/core-java-modules/core-java-networking-4/pom.xml @@ -14,7 +14,6 @@ - commons-validator commons-validator @@ -25,7 +24,6 @@ jsoup ${jsoup.version} - diff --git a/core-java-modules/core-java-networking/pom.xml b/core-java-modules/core-java-networking/pom.xml index 9974134eae..19c620198d 100644 --- a/core-java-modules/core-java-networking/pom.xml +++ b/core-java-modules/core-java-networking/pom.xml @@ -4,7 +4,6 @@ xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd"> 4.0.0 core-java-networking - 0.1.0-SNAPSHOT core-java-networking jar diff --git a/core-java-modules/core-java-nio-2/pom.xml b/core-java-modules/core-java-nio-2/pom.xml index eb56c2bf68..e35b70cfc7 100644 --- a/core-java-modules/core-java-nio-2/pom.xml +++ b/core-java-modules/core-java-nio-2/pom.xml @@ -4,7 +4,6 @@ xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd"> 4.0.0 core-java-nio-2 - 0.1.0-SNAPSHOT core-java-nio-2 jar diff --git a/core-java-modules/core-java-nio/pom.xml b/core-java-modules/core-java-nio/pom.xml index 9e1c529a65..35fef82df5 100644 --- a/core-java-modules/core-java-nio/pom.xml +++ b/core-java-modules/core-java-nio/pom.xml @@ -4,7 +4,6 @@ xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd"> 4.0.0 core-java-nio - 0.1.0-SNAPSHOT core-java-nio jar diff --git a/core-java-modules/core-java-numbers-2/pom.xml b/core-java-modules/core-java-numbers-2/pom.xml index ac3843607e..46e0fa47b4 100644 --- a/core-java-modules/core-java-numbers-2/pom.xml +++ b/core-java-modules/core-java-numbers-2/pom.xml @@ -4,7 +4,6 @@ xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd"> 4.0.0 core-java-numbers-2 - 0.1.0-SNAPSHOT core-java-numbers-2 jar diff --git a/core-java-modules/core-java-numbers-6/pom.xml b/core-java-modules/core-java-numbers-6/pom.xml index 4957eb89c6..0f78f41b9f 100644 --- a/core-java-modules/core-java-numbers-6/pom.xml +++ b/core-java-modules/core-java-numbers-6/pom.xml @@ -6,16 +6,12 @@ core-java-numbers-6 jar - + com.baeldung.core-java-modules core-java-modules 0.0.1-SNAPSHOT - - - - core-java-numbers-6 diff --git a/core-java-modules/core-java-numbers/pom.xml b/core-java-modules/core-java-numbers/pom.xml index 4b2cae8ee9..38def238e8 100644 --- a/core-java-modules/core-java-numbers/pom.xml +++ b/core-java-modules/core-java-numbers/pom.xml @@ -4,7 +4,6 @@ xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd"> 4.0.0 core-java-numbers - 0.1.0-SNAPSHOT core-java-numbers jar diff --git a/core-java-modules/core-java-optional/pom.xml b/core-java-modules/core-java-optional/pom.xml index 08441f6cee..eeefed867e 100644 --- a/core-java-modules/core-java-optional/pom.xml +++ b/core-java-modules/core-java-optional/pom.xml @@ -4,7 +4,6 @@ xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd"> 4.0.0 core-java-optional - 0.1.0-SNAPSHOT core-java-optional jar diff --git a/core-java-modules/core-java-os/pom.xml b/core-java-modules/core-java-os/pom.xml index ef29e435a5..d4ee34b8b7 100644 --- a/core-java-modules/core-java-os/pom.xml +++ b/core-java-modules/core-java-os/pom.xml @@ -4,7 +4,6 @@ xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd"> 4.0.0 core-java-os - 0.1.0-SNAPSHOT core-java-os jar diff --git a/core-java-modules/core-java-perf/pom.xml b/core-java-modules/core-java-perf/pom.xml index f6f3ef795c..c21fc94ec1 100644 --- a/core-java-modules/core-java-perf/pom.xml +++ b/core-java-modules/core-java-perf/pom.xml @@ -4,7 +4,6 @@ xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd"> 4.0.0 core-java-perf - 0.1.0-SNAPSHOT core-java-perf jar diff --git a/core-java-modules/core-java-reflection-2/pom.xml b/core-java-modules/core-java-reflection-2/pom.xml index ee3eeee734..c7a4981533 100644 --- a/core-java-modules/core-java-reflection-2/pom.xml +++ b/core-java-modules/core-java-reflection-2/pom.xml @@ -4,7 +4,6 @@ xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd"> 4.0.0 core-java-reflection-2 - 0.1.0-SNAPSHOT core-java-reflection-2 jar diff --git a/core-java-modules/core-java-reflection-private-constructor/pom.xml b/core-java-modules/core-java-reflection-private-constructor/pom.xml index b53aa2c61b..aee7815e23 100644 --- a/core-java-modules/core-java-reflection-private-constructor/pom.xml +++ b/core-java-modules/core-java-reflection-private-constructor/pom.xml @@ -1,10 +1,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 core-java-reflection-private-constructor - 0.1.0-SNAPSHOT core-java-reflection-private-constructor jar diff --git a/core-java-modules/core-java-reflection/pom.xml b/core-java-modules/core-java-reflection/pom.xml index f6ee08dbda..a836ee4a22 100644 --- a/core-java-modules/core-java-reflection/pom.xml +++ b/core-java-modules/core-java-reflection/pom.xml @@ -4,7 +4,6 @@ xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd"> 4.0.0 core-java-reflection - 0.1.0-SNAPSHOT core-java-reflection jar diff --git a/core-java-modules/core-java-regex-2/pom.xml b/core-java-modules/core-java-regex-2/pom.xml index ae9385e63c..ddfba35cb2 100644 --- a/core-java-modules/core-java-regex-2/pom.xml +++ b/core-java-modules/core-java-regex-2/pom.xml @@ -4,7 +4,6 @@ xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd"> 4.0.0 core-java-regex-2 - 0.1.0-SNAPSHOT core-java-regex-2 jar diff --git a/core-java-modules/core-java-regex/pom.xml b/core-java-modules/core-java-regex/pom.xml index 93f3ae3cdb..00b8107c57 100644 --- a/core-java-modules/core-java-regex/pom.xml +++ b/core-java-modules/core-java-regex/pom.xml @@ -4,7 +4,6 @@ xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd"> 4.0.0 core-java-regex - 0.1.0-SNAPSHOT core-java-regex jar diff --git a/core-java-modules/core-java-security-2/pom.xml b/core-java-modules/core-java-security-2/pom.xml index 7a354ee9e2..0fc121c070 100644 --- a/core-java-modules/core-java-security-2/pom.xml +++ b/core-java-modules/core-java-security-2/pom.xml @@ -4,7 +4,6 @@ xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd"> 4.0.0 core-java-security-2 - 0.1.0-SNAPSHOT core-java-security-2 jar diff --git a/core-java-modules/core-java-security-3/pom.xml b/core-java-modules/core-java-security-3/pom.xml index 3cd546e697..fef8b53289 100644 --- a/core-java-modules/core-java-security-3/pom.xml +++ b/core-java-modules/core-java-security-3/pom.xml @@ -4,7 +4,6 @@ xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd"> 4.0.0 core-java-security-3 - 0.1.0-SNAPSHOT core-java-security-3 jar diff --git a/core-java-modules/core-java-security-algorithms/pom.xml b/core-java-modules/core-java-security-algorithms/pom.xml index 967ddc103e..0dde9f861a 100644 --- a/core-java-modules/core-java-security-algorithms/pom.xml +++ b/core-java-modules/core-java-security-algorithms/pom.xml @@ -4,7 +4,6 @@ xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd"> 4.0.0 core-java-security-algorithms - 0.1.0-SNAPSHOT core-java-security-algorithms jar @@ -25,7 +24,6 @@ bcprov-jdk15on ${bouncycastle.version} - javax.xml.bind jaxb-api diff --git a/core-java-modules/core-java-security/pom.xml b/core-java-modules/core-java-security/pom.xml index 66b56ada74..921017b080 100644 --- a/core-java-modules/core-java-security/pom.xml +++ b/core-java-modules/core-java-security/pom.xml @@ -1,10 +1,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 core-java-security - 0.1.0-SNAPSHOT core-java-security jar diff --git a/core-java-modules/core-java-serialization/pom.xml b/core-java-modules/core-java-serialization/pom.xml index c82ae9d1d6..04144fb27f 100644 --- a/core-java-modules/core-java-serialization/pom.xml +++ b/core-java-modules/core-java-serialization/pom.xml @@ -4,7 +4,6 @@ xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd"> 4.0.0 core-java-serialization - 0.1.0-SNAPSHOT core-java-serialization jar diff --git a/core-java-modules/core-java-streams-2/pom.xml b/core-java-modules/core-java-streams-2/pom.xml index c8fa83c55a..9725497b04 100644 --- a/core-java-modules/core-java-streams-2/pom.xml +++ b/core-java-modules/core-java-streams-2/pom.xml @@ -4,7 +4,6 @@ xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd"> 4.0.0 core-java-streams-2 - 1.0 core-java-streams-2 jar diff --git a/core-java-modules/core-java-streams-3/pom.xml b/core-java-modules/core-java-streams-3/pom.xml index 3074a647ff..9c657119b5 100644 --- a/core-java-modules/core-java-streams-3/pom.xml +++ b/core-java-modules/core-java-streams-3/pom.xml @@ -4,7 +4,6 @@ xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd"> 4.0.0 core-java-streams-3 - 0.1.0-SNAPSHOT core-java-streams-3 jar diff --git a/core-java-modules/core-java-streams-4/pom.xml b/core-java-modules/core-java-streams-4/pom.xml index 46c0f3f7e1..fe791ebd42 100644 --- a/core-java-modules/core-java-streams-4/pom.xml +++ b/core-java-modules/core-java-streams-4/pom.xml @@ -4,7 +4,6 @@ xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd"> 4.0.0 core-java-streams-4 - 0.1.0-SNAPSHOT core-java-streams-4 jar diff --git a/core-java-modules/core-java-streams-collect/pom.xml b/core-java-modules/core-java-streams-collect/pom.xml index c60cf2ab93..e81598017c 100644 --- a/core-java-modules/core-java-streams-collect/pom.xml +++ b/core-java-modules/core-java-streams-collect/pom.xml @@ -4,7 +4,6 @@ xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd"> 4.0.0 core-java-streams-4 - 0.1.0-SNAPSHOT core-java-streams-collect jar @@ -35,7 +34,6 @@ - 3.23.1 diff --git a/core-java-modules/core-java-streams-maps/pom.xml b/core-java-modules/core-java-streams-maps/pom.xml index 06cc9ceef6..66e1fedd87 100644 --- a/core-java-modules/core-java-streams-maps/pom.xml +++ b/core-java-modules/core-java-streams-maps/pom.xml @@ -4,7 +4,6 @@ xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd"> 4.0.0 core-java-streams-maps - 0.1.0-SNAPSHOT core-java-streams-maps jar diff --git a/core-java-modules/core-java-streams/pom.xml b/core-java-modules/core-java-streams/pom.xml index a6bb827e77..b0794829c2 100644 --- a/core-java-modules/core-java-streams/pom.xml +++ b/core-java-modules/core-java-streams/pom.xml @@ -4,7 +4,6 @@ xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd"> 4.0.0 core-java-streams - 0.1.0-SNAPSHOT core-java-streams jar @@ -15,7 +14,6 @@ - org.openjdk.jmh jmh-core diff --git a/core-java-modules/core-java-string-algorithms-2/pom.xml b/core-java-modules/core-java-string-algorithms-2/pom.xml index 5af187abc2..3fdb022a4b 100644 --- a/core-java-modules/core-java-string-algorithms-2/pom.xml +++ b/core-java-modules/core-java-string-algorithms-2/pom.xml @@ -4,7 +4,6 @@ xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd"> 4.0.0 core-java-string-algorithms-2 - 0.1.0-SNAPSHOT core-java-string-algorithms-2 jar diff --git a/core-java-modules/core-java-string-algorithms-3/pom.xml b/core-java-modules/core-java-string-algorithms-3/pom.xml index 147ea22375..74a9486ec0 100644 --- a/core-java-modules/core-java-string-algorithms-3/pom.xml +++ b/core-java-modules/core-java-string-algorithms-3/pom.xml @@ -3,7 +3,6 @@ xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd"> 4.0.0 core-java-string-algorithms-3 - 0.1.0-SNAPSHOT core-java-string-algorithms-3 jar diff --git a/core-java-modules/core-java-string-algorithms/pom.xml b/core-java-modules/core-java-string-algorithms/pom.xml index 84f3b61f84..10d28feb2f 100644 --- a/core-java-modules/core-java-string-algorithms/pom.xml +++ b/core-java-modules/core-java-string-algorithms/pom.xml @@ -4,7 +4,6 @@ xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd"> 4.0.0 core-java-string-algorithms - 0.1.0-SNAPSHOT core-java-string-algorithms jar diff --git a/core-java-modules/core-java-string-apis-2/pom.xml b/core-java-modules/core-java-string-apis-2/pom.xml index ba983d7593..db97b85748 100644 --- a/core-java-modules/core-java-string-apis-2/pom.xml +++ b/core-java-modules/core-java-string-apis-2/pom.xml @@ -4,7 +4,6 @@ xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd"> 4.0.0 core-java-string-apis-2 - 0.0.1-SNAPSHOT core-java-string-apis-2 jar diff --git a/core-java-modules/core-java-string-apis/pom.xml b/core-java-modules/core-java-string-apis/pom.xml index 6a382c3c57..5d7737228c 100644 --- a/core-java-modules/core-java-string-apis/pom.xml +++ b/core-java-modules/core-java-string-apis/pom.xml @@ -4,7 +4,6 @@ xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd"> 4.0.0 core-java-string-apis - 0.1.0-SNAPSHOT core-java-string-apis jar diff --git a/core-java-modules/core-java-string-conversions-2/pom.xml b/core-java-modules/core-java-string-conversions-2/pom.xml index e424ef3083..90463271b8 100644 --- a/core-java-modules/core-java-string-conversions-2/pom.xml +++ b/core-java-modules/core-java-string-conversions-2/pom.xml @@ -4,7 +4,6 @@ xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd"> 4.0.0 core-java-string-conversions-2 - 0.1.0-SNAPSHOT core-java-string-conversions-2 jar diff --git a/core-java-modules/core-java-string-conversions/pom.xml b/core-java-modules/core-java-string-conversions/pom.xml index c715e22ed4..b87431cd0b 100644 --- a/core-java-modules/core-java-string-conversions/pom.xml +++ b/core-java-modules/core-java-string-conversions/pom.xml @@ -4,7 +4,6 @@ xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd"> 4.0.0 core-java-string-conversions - 0.1.0-SNAPSHOT core-java-string-conversions jar diff --git a/core-java-modules/core-java-string-operations-2/pom.xml b/core-java-modules/core-java-string-operations-2/pom.xml index 92bfa6b2d8..c6debc4f71 100644 --- a/core-java-modules/core-java-string-operations-2/pom.xml +++ b/core-java-modules/core-java-string-operations-2/pom.xml @@ -4,7 +4,6 @@ xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd"> 4.0.0 core-java-string-operations-2 - 0.1.0-SNAPSHOT core-java-string-operations-2 jar diff --git a/core-java-modules/core-java-string-operations-3/pom.xml b/core-java-modules/core-java-string-operations-3/pom.xml index 19b3d57ffd..39167271fa 100644 --- a/core-java-modules/core-java-string-operations-3/pom.xml +++ b/core-java-modules/core-java-string-operations-3/pom.xml @@ -4,7 +4,6 @@ xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd"> 4.0.0 core-java-string-operations-3 - 0.1.0-SNAPSHOT core-java-string-operations-3 jar diff --git a/core-java-modules/core-java-string-operations-4/pom.xml b/core-java-modules/core-java-string-operations-4/pom.xml index 0f1e377d18..cc755cf470 100644 --- a/core-java-modules/core-java-string-operations-4/pom.xml +++ b/core-java-modules/core-java-string-operations-4/pom.xml @@ -4,7 +4,6 @@ xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd"> 4.0.0 core-java-string-operations-4 - 0.1.0-SNAPSHOT core-java-string-operations-4 jar diff --git a/core-java-modules/core-java-string-operations-5/pom.xml b/core-java-modules/core-java-string-operations-5/pom.xml index efb32c73b9..2a2a353984 100644 --- a/core-java-modules/core-java-string-operations-5/pom.xml +++ b/core-java-modules/core-java-string-operations-5/pom.xml @@ -4,7 +4,6 @@ xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd"> 4.0.0 core-java-string-operations-5 - 0.1.0-SNAPSHOT core-java-string-operations-5 jar diff --git a/core-java-modules/core-java-string-operations/pom.xml b/core-java-modules/core-java-string-operations/pom.xml index 0970125281..577736a324 100644 --- a/core-java-modules/core-java-string-operations/pom.xml +++ b/core-java-modules/core-java-string-operations/pom.xml @@ -4,7 +4,6 @@ xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd"> 4.0.0 core-java-string-operations - 0.1.0-SNAPSHOT core-java-string-operations jar diff --git a/core-java-modules/core-java-strings/pom.xml b/core-java-modules/core-java-strings/pom.xml index 2cc35dad5f..e3cdb3c666 100644 --- a/core-java-modules/core-java-strings/pom.xml +++ b/core-java-modules/core-java-strings/pom.xml @@ -4,7 +4,6 @@ xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd"> 4.0.0 core-java-strings - 0.1.0-SNAPSHOT core-java-strings jar diff --git a/core-java-modules/core-java-sun/pom.xml b/core-java-modules/core-java-sun/pom.xml index e959932235..c9427f66a3 100644 --- a/core-java-modules/core-java-sun/pom.xml +++ b/core-java-modules/core-java-sun/pom.xml @@ -4,7 +4,6 @@ xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd"> 4.0.0 core-java-sun - 0.1.0-SNAPSHOT core-java-sun jar diff --git a/core-java-modules/core-java-time-measurements/pom.xml b/core-java-modules/core-java-time-measurements/pom.xml index ac5fb3a5e6..7b2bc31ebb 100644 --- a/core-java-modules/core-java-time-measurements/pom.xml +++ b/core-java-modules/core-java-time-measurements/pom.xml @@ -3,9 +3,7 @@ xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd"> 4.0.0 - com.baeldung.exception.numberformat core-java-time-measurements - 0.0.1-SNAPSHOT core-java-time-measurements jar diff --git a/core-java-modules/core-java-uuid/pom.xml b/core-java-modules/core-java-uuid/pom.xml index 7d851292f5..b97db174b4 100644 --- a/core-java-modules/core-java-uuid/pom.xml +++ b/core-java-modules/core-java-uuid/pom.xml @@ -4,7 +4,6 @@ xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd"> 4.0.0 core-java-uuid - 0.1.0-SNAPSHOT core-java-uuid jar diff --git a/core-java-modules/core-java/pom.xml b/core-java-modules/core-java/pom.xml index 87abe6c007..552999702e 100644 --- a/core-java-modules/core-java/pom.xml +++ b/core-java-modules/core-java/pom.xml @@ -4,7 +4,6 @@ xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd"> 4.0.0 core-java - 0.1.0-SNAPSHOT core-java jar diff --git a/core-java-modules/pom.xml b/core-java-modules/pom.xml index 52360d060f..1292cdc6c8 100644 --- a/core-java-modules/pom.xml +++ b/core-java-modules/pom.xml @@ -16,20 +16,20 @@ - - - - - - - - - - - - - - + + + + + + + + + + + + + + core-java-annotations core-java-arrays-sorting diff --git a/core-java-modules/pre-jpms/pom.xml b/core-java-modules/pre-jpms/pom.xml index 11db8f8027..67bc913767 100644 --- a/core-java-modules/pre-jpms/pom.xml +++ b/core-java-modules/pre-jpms/pom.xml @@ -4,7 +4,6 @@ xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd"> 4.0.0 pre-jpms - 0.0.1-SNAPSHOT pre-jpms jar diff --git a/couchbase/pom.xml b/couchbase/pom.xml index 095bda3610..823b33ee29 100644 --- a/couchbase/pom.xml +++ b/couchbase/pom.xml @@ -4,7 +4,6 @@ xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd"> 4.0.0 couchbase - 0.1-SNAPSHOT couchbase jar Couchbase Tutorials diff --git a/custom-pmd/pom.xml b/custom-pmd/pom.xml index 38a5e30404..8097d4fefa 100644 --- a/custom-pmd/pom.xml +++ b/custom-pmd/pom.xml @@ -8,7 +8,6 @@ 0.0.1 custom-pmd jar - http://maven.apache.org com.baeldung diff --git a/data-structures/pom.xml b/data-structures/pom.xml index cba602878f..aeadfcefc3 100644 --- a/data-structures/pom.xml +++ b/data-structures/pom.xml @@ -4,7 +4,6 @@ xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd"> 4.0.0 data-structures - 0.0.1-SNAPSHOT data-structures @@ -13,13 +12,6 @@ 1.0.0-SNAPSHOT - - - github.release.repo - https://raw.github.com/bulldog2011/bulldog-repo/master/repo/releases/ - - - com.leansoft @@ -39,6 +31,13 @@ + + + github.release.repo + https://raw.github.com/bulldog2011/bulldog-repo/master/repo/releases/ + + + 0.7.0 diff --git a/ddd/pom.xml b/ddd/pom.xml index 6128bb1cd9..443b2b5148 100644 --- a/ddd/pom.xml +++ b/ddd/pom.xml @@ -3,7 +3,6 @@ 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 - com.baeldung.ddd ddd ddd jar diff --git a/deeplearning4j/pom.xml b/deeplearning4j/pom.xml index 01bac93214..875d8cdf85 100644 --- a/deeplearning4j/pom.xml +++ b/deeplearning4j/pom.xml @@ -3,9 +3,7 @@ xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd"> 4.0.0 - com.baeldung.deeplearning4j deeplearning4j - 1.0-SNAPSHOT deeplearning4j jar diff --git a/dependency-exclusion/core-java-exclusions/pom.xml b/dependency-exclusion/core-java-exclusions/pom.xml index cf1b36656d..69701a2ead 100644 --- a/dependency-exclusion/core-java-exclusions/pom.xml +++ b/dependency-exclusion/core-java-exclusions/pom.xml @@ -1,10 +1,9 @@ + xmlns="http://maven.apache.org/POM/4.0.0" + xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd"> 4.0.0 core-java-exclusions - 0.0.0-SNAPSHOT core-java-exclusions jar @@ -14,34 +13,6 @@ 0.0.1-SNAPSHOT - - - - org.apache.maven.plugins - maven-surefire-plugin - ${surefire-version} - - alphabetical - 1 - - - junit - false - - - - - - - org.apache.maven.surefire - surefire-junit47 - dummy - - - - - - junit @@ -50,4 +21,32 @@ + + + + org.apache.maven.plugins + maven-surefire-plugin + ${surefire-version} + + alphabetical + 1 + + + junit + false + + + + + + + org.apache.maven.surefire + surefire-junit47 + dummy + + + + + + diff --git a/dependency-exclusion/dummy-surefire-junit47/pom.xml b/dependency-exclusion/dummy-surefire-junit47/pom.xml index 5859ddbe72..7332d8deb1 100644 --- a/dependency-exclusion/dummy-surefire-junit47/pom.xml +++ b/dependency-exclusion/dummy-surefire-junit47/pom.xml @@ -1,7 +1,7 @@ + xmlns="http://maven.apache.org/POM/4.0.0" + xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd"> 4.0.0 org.apache.maven.surefire surefire-junit47 diff --git a/di-modules/guice/pom.xml b/di-modules/guice/pom.xml index a28dbe5297..d0d2876fc8 100644 --- a/di-modules/guice/pom.xml +++ b/di-modules/guice/pom.xml @@ -3,7 +3,6 @@ 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 - com.baeldung.examples.guice guice guice jar diff --git a/discord4j/pom.xml b/discord4j/pom.xml index 3ea85c05c7..086adebee5 100644 --- a/discord4j/pom.xml +++ b/discord4j/pom.xml @@ -3,9 +3,7 @@ xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 https://maven.apache.org/xsd/maven-4.0.0.xsd"> 4.0.0 - com.baeldung discord4j - 0.0.1-SNAPSHOT discord4j Demo Discord bot using Discord4J + Spring Boot diff --git a/disruptor/pom.xml b/disruptor/pom.xml index c2f9cf34b0..75e783e935 100644 --- a/disruptor/pom.xml +++ b/disruptor/pom.xml @@ -4,7 +4,6 @@ xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd"> 4.0.0 disruptor - 0.1.0-SNAPSHOT disruptor jar diff --git a/docker-modules/docker-caching/multi-module-caching/pom.xml b/docker-modules/docker-caching/multi-module-caching/pom.xml index 94a370453c..1fdd6173bc 100644 --- a/docker-modules/docker-caching/multi-module-caching/pom.xml +++ b/docker-modules/docker-caching/multi-module-caching/pom.xml @@ -1,7 +1,7 @@ + xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" + xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 https://maven.apache.org/xsd/maven-4.0.0.xsd"> 4.0.0 com.baeldung multi-module-caching diff --git a/docker-modules/docker-caching/single-module-caching/pom.xml b/docker-modules/docker-caching/single-module-caching/pom.xml index 4a4e53f1d3..a388c7563f 100644 --- a/docker-modules/docker-caching/single-module-caching/pom.xml +++ b/docker-modules/docker-caching/single-module-caching/pom.xml @@ -1,7 +1,7 @@ + xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" + xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd"> 4.0.0 com.baeldung single-module-caching diff --git a/docker-modules/docker-compose-2/pom.xml b/docker-modules/docker-compose-2/pom.xml index 851742309d..3a94ee3901 100644 --- a/docker-modules/docker-compose-2/pom.xml +++ b/docker-modules/docker-compose-2/pom.xml @@ -1,7 +1,7 @@ + xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" + xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 https://maven.apache.org/xsd/maven-4.0.0.xsd"> 4.0.0 docker-compose-2 Demo project for Spring Boot and Docker - Module docker-compose-2 diff --git a/docker-modules/docker-containers/pom.xml b/docker-modules/docker-containers/pom.xml index 42c2d403e4..79bf0aee72 100644 --- a/docker-modules/docker-containers/pom.xml +++ b/docker-modules/docker-containers/pom.xml @@ -5,7 +5,6 @@ 4.0.0 com.baeldung.docker docker-containers - 0.0.1-SNAPSHOT Demo project for Spring Boot diff --git a/docker-modules/pom.xml b/docker-modules/pom.xml index 1a87fa5d1c..b4c5240718 100644 --- a/docker-modules/pom.xml +++ b/docker-modules/pom.xml @@ -3,9 +3,7 @@ xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 https://maven.apache.org/xsd/maven-4.0.0.xsd"> 4.0.0 - com.baeldung docker-modules - 1.0.0-SNAPSHOT docker-modules pom diff --git a/dozer/pom.xml b/dozer/pom.xml index 840763445c..66f4ee8227 100644 --- a/dozer/pom.xml +++ b/dozer/pom.xml @@ -4,7 +4,6 @@ xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd"> 4.0.0 dozer - 1.0 dozer From d1249befd1aaac75adcdaa55dd39e13730025e91 Mon Sep 17 00:00:00 2001 From: timis1 <12120641+timis1@users.noreply.github.com> Date: Wed, 5 Apr 2023 12:46:50 +0300 Subject: [PATCH 58/85] =?UTF-8?q?JAVA-18609=20GitHub=20Issue:=20Spring=20B?= =?UTF-8?q?atch=20-=20JobBuilderFactory=20and=20StepBui=E2=80=A6=20(#13618?= =?UTF-8?q?)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit * JAVA-18609 GitHub Issue: Spring Batch - JobBuilderFactory and StepBuilderFactory are deprecated --------- Co-authored-by: timis1 --- pom.xml | 5 +- spring-batch-2/pom.xml | 9 +- .../baeldung/batch/BatchConfiguration.java | 25 ++--- .../baeldung/batch/CoffeeItemProcessor.java | 2 +- .../JobCompletionNotificationListener.java | 4 +- .../batchscheduler/SpringBatchScheduler.java | 52 ++++----- .../batch/SpringBootBatchIntegrationTest.java | 27 +++-- .../SpringBatchSchedulerIntegrationTest.java | 29 ++--- spring-batch/pom.xml | 59 ++++------ spring-batch/repository.sqlite | Bin 73728 -> 73728 bytes .../src/main/java/com/baeldung/batch/App.java | 5 +- .../com/baeldung/batch/SpringBatchConfig.java | 105 ++++++++++++------ .../batch/SpringBatchRetryConfig.java | 45 ++++---- .../java/com/baeldung/batch/SpringConfig.java | 80 ------------- .../com/baeldung/batch/model/Transaction.java | 7 +- .../CustomMultiResourcePartitioner.java | 2 +- ...g.java => SpringBatchPartitionConfig.java} | 53 +++++---- ...pp.java => SpringBatchPartitionerApp.java} | 6 +- .../batch/service/CustomSkipPolicy.java | 12 +- .../batch/service/RecordFieldSetMapper.java | 2 +- .../batch/service/RetryItemProcessor.java | 8 +- .../service/adapter/LocalDateTimeAdapter.java | 3 +- .../springboot/SpringBootBatchConfig.java | 63 +++++------ .../SpringBatchConfiguration.java | 46 +++----- .../service/BookDetailsItemProcessor.java | 2 +- .../service/BookItemProcessor.java | 2 +- .../service/BookRecordFieldSetMapper.java | 2 +- .../taskletsvschunks/chunks/LineReader.java | 4 +- .../taskletsvschunks/chunks/LinesWriter.java | 5 +- .../taskletsvschunks/config/ChunksConfig.java | 67 ++--------- .../config/TaskletsConfig.java | 84 +++----------- .../tasklets/LinesReader.java | 2 +- .../ConditionalFlowApplication.java | 2 +- .../config/NumberInfoConfig.java | 85 ++++++++++---- .../conditionalflow/step/NotifierTasklet.java | 5 +- .../step/NumberInfoClassifier.java | 4 +- .../step/NumberInfoClassifierWithDecider.java | 2 +- .../step/PrependingStdoutWriter.java | 7 +- .../src/main/resources/output/output1.xml | 36 +++--- .../src/main/resources/output/output2.xml | 36 +++--- .../src/main/resources/output/output3.xml | 36 +++--- .../src/main/resources/output/output4.xml | 36 +++--- .../src/main/resources/output/output5.xml | 36 +++--- .../src/main/resources/spring-batch-intro.xml | 6 +- spring-batch/src/main/resources/spring.xml | 9 +- .../SpringBatchRetryIntegrationTest.java | 25 ++--- .../SpringBatchIntegrationTest.java | 34 ++---- .../SpringBatchStepScopeIntegrationTest.java | 40 +++---- .../chunks/ChunksIntegrationTest.java | 20 ++-- .../tasklets/TaskletsIntegrationTest.java | 18 +-- .../DeciderJobIntegrationTest.java | 21 +--- .../model/NumberInfoUnitTest.java | 6 +- .../test/resources/output/actual-output.json | 9 +- 53 files changed, 548 insertions(+), 742 deletions(-) delete mode 100644 spring-batch/src/main/java/com/baeldung/batch/SpringConfig.java rename spring-batch/src/main/java/com/baeldung/batch/partitioner/{SpringbatchPartitionConfig.java => SpringBatchPartitionConfig.java} (77%) rename spring-batch/src/main/java/com/baeldung/batch/partitioner/{SpringbatchPartitionerApp.java => SpringBatchPartitionerApp.java} (89%) diff --git a/pom.xml b/pom.xml index d44b836607..ca55866a42 100644 --- a/pom.xml +++ b/pom.xml @@ -759,6 +759,7 @@ javafx spring-batch + spring-batch-2 spring-boot-rest spring-drools spring-exceptions @@ -781,7 +782,6 @@ server-modules apache-cxf-modules - spring-aop jmeter spring-aop-2 @@ -928,7 +928,6 @@ spring-5-webflux spring-5-webflux-2 spring-activiti - spring-batch-2 spring-core-2 spring-core-3 spring-core-5 @@ -1012,6 +1011,7 @@ javafx spring-batch + spring-batch-2 spring-boot-rest spring-drools spring-exceptions @@ -1180,7 +1180,6 @@ spring-5-webflux spring-5-webflux-2 spring-activiti - spring-batch-2 spring-core-2 spring-core-3 spring-core-5 diff --git a/spring-batch-2/pom.xml b/spring-batch-2/pom.xml index 12d31aca14..378191c91c 100644 --- a/spring-batch-2/pom.xml +++ b/spring-batch-2/pom.xml @@ -11,9 +11,9 @@ com.baeldung - parent-boot-2 + parent-boot-3 0.0.1-SNAPSHOT - ../parent-boot-2 + ../parent-boot-3 @@ -51,8 +51,9 @@ - 4.3.0 - 3.1.1 + 5.0.0 + 4.2.0 + com.baeldung.batch.SpringBootBatchProcessingApplication \ No newline at end of file diff --git a/spring-batch-2/src/main/java/com/baeldung/batch/BatchConfiguration.java b/spring-batch-2/src/main/java/com/baeldung/batch/BatchConfiguration.java index 0c053dd86c..770b6330dd 100644 --- a/spring-batch-2/src/main/java/com/baeldung/batch/BatchConfiguration.java +++ b/spring-batch-2/src/main/java/com/baeldung/batch/BatchConfiguration.java @@ -4,31 +4,24 @@ import javax.sql.DataSource; import org.springframework.batch.core.Job; import org.springframework.batch.core.Step; -import org.springframework.batch.core.configuration.annotation.EnableBatchProcessing; -import org.springframework.batch.core.configuration.annotation.JobBuilderFactory; -import org.springframework.batch.core.configuration.annotation.StepBuilderFactory; +import org.springframework.batch.core.job.builder.JobBuilder; import org.springframework.batch.core.launch.support.RunIdIncrementer; +import org.springframework.batch.core.repository.JobRepository; +import org.springframework.batch.core.step.builder.StepBuilder; import org.springframework.batch.item.database.BeanPropertyItemSqlParameterSourceProvider; import org.springframework.batch.item.database.JdbcBatchItemWriter; import org.springframework.batch.item.database.builder.JdbcBatchItemWriterBuilder; import org.springframework.batch.item.file.FlatFileItemReader; import org.springframework.batch.item.file.builder.FlatFileItemReaderBuilder; import org.springframework.batch.item.file.mapping.BeanWrapperFieldSetMapper; -import org.springframework.beans.factory.annotation.Autowired; import org.springframework.beans.factory.annotation.Value; import org.springframework.context.annotation.Bean; import org.springframework.context.annotation.Configuration; import org.springframework.core.io.ClassPathResource; +import org.springframework.transaction.PlatformTransactionManager; @Configuration -@EnableBatchProcessing public class BatchConfiguration { - - @Autowired - public JobBuilderFactory jobBuilderFactory; - - @Autowired - public StepBuilderFactory stepBuilderFactory; @Value("${file.input}") private String fileInput; @@ -59,8 +52,8 @@ public class BatchConfiguration { } @Bean - public Job importUserJob(JobCompletionNotificationListener listener, Step step1) { - return jobBuilderFactory.get("importUserJob") + public Job importUserJob(JobRepository jobRepository, JobCompletionNotificationListener listener, Step step1) { + return new JobBuilder("importUserJob", jobRepository) .incrementer(new RunIdIncrementer()) .listener(listener) .flow(step1) @@ -69,9 +62,9 @@ public class BatchConfiguration { } @Bean - public Step step1(JdbcBatchItemWriter writer) { - return stepBuilderFactory.get("step1") - . chunk(10) + public Step step1(JobRepository jobRepository, PlatformTransactionManager transactionManager, JdbcBatchItemWriter writer) { + return new StepBuilder("step1", jobRepository) + . chunk(10, transactionManager) .reader(reader()) .processor(processor()) .writer(writer) diff --git a/spring-batch-2/src/main/java/com/baeldung/batch/CoffeeItemProcessor.java b/spring-batch-2/src/main/java/com/baeldung/batch/CoffeeItemProcessor.java index b154b80453..bd4173e9ed 100644 --- a/spring-batch-2/src/main/java/com/baeldung/batch/CoffeeItemProcessor.java +++ b/spring-batch-2/src/main/java/com/baeldung/batch/CoffeeItemProcessor.java @@ -10,7 +10,7 @@ public class CoffeeItemProcessor implements ItemProcessor { private static final Logger LOGGER = LoggerFactory.getLogger(CoffeeItemProcessor.class); @Override - public Coffee process(final Coffee coffee) throws Exception { + public Coffee process(final Coffee coffee) { String brand = coffee.getBrand().toUpperCase(); String origin = coffee.getOrigin().toUpperCase(); String chracteristics = coffee.getCharacteristics().toUpperCase(); diff --git a/spring-batch-2/src/main/java/com/baeldung/batch/JobCompletionNotificationListener.java b/spring-batch-2/src/main/java/com/baeldung/batch/JobCompletionNotificationListener.java index ca1de40aea..b61faeb13b 100644 --- a/spring-batch-2/src/main/java/com/baeldung/batch/JobCompletionNotificationListener.java +++ b/spring-batch-2/src/main/java/com/baeldung/batch/JobCompletionNotificationListener.java @@ -4,13 +4,13 @@ import org.slf4j.Logger; import org.slf4j.LoggerFactory; import org.springframework.batch.core.BatchStatus; import org.springframework.batch.core.JobExecution; -import org.springframework.batch.core.listener.JobExecutionListenerSupport; +import org.springframework.batch.core.JobExecutionListener; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.jdbc.core.JdbcTemplate; import org.springframework.stereotype.Component; @Component -public class JobCompletionNotificationListener extends JobExecutionListenerSupport { +public class JobCompletionNotificationListener implements JobExecutionListener { private static final Logger LOGGER = LoggerFactory.getLogger(JobCompletionNotificationListener.class); diff --git a/spring-batch-2/src/main/java/com/baeldung/batchscheduler/SpringBatchScheduler.java b/spring-batch-2/src/main/java/com/baeldung/batchscheduler/SpringBatchScheduler.java index c830a41855..dcb2bc5199 100644 --- a/spring-batch-2/src/main/java/com/baeldung/batchscheduler/SpringBatchScheduler.java +++ b/spring-batch-2/src/main/java/com/baeldung/batchscheduler/SpringBatchScheduler.java @@ -7,15 +7,16 @@ import org.springframework.batch.core.Job; import org.springframework.batch.core.JobExecution; import org.springframework.batch.core.JobParametersBuilder; import org.springframework.batch.core.Step; -import org.springframework.batch.core.configuration.annotation.EnableBatchProcessing; -import org.springframework.batch.core.configuration.annotation.JobBuilderFactory; -import org.springframework.batch.core.configuration.annotation.StepBuilderFactory; +import org.springframework.batch.core.job.builder.JobBuilder; import org.springframework.batch.core.launch.JobLauncher; +import org.springframework.batch.core.repository.JobRepository; +import org.springframework.batch.core.step.builder.StepBuilder; import org.springframework.batch.item.ItemWriter; import org.springframework.batch.item.file.FlatFileItemReader; import org.springframework.batch.item.file.builder.FlatFileItemReaderBuilder; import org.springframework.batch.item.file.mapping.BeanWrapperFieldSetMapper; import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.context.ApplicationContext; import org.springframework.context.annotation.Bean; import org.springframework.context.annotation.Configuration; import org.springframework.core.io.ClassPathResource; @@ -24,17 +25,16 @@ import org.springframework.scheduling.annotation.EnableScheduling; import org.springframework.scheduling.annotation.Scheduled; import org.springframework.scheduling.concurrent.ThreadPoolTaskScheduler; import org.springframework.scheduling.support.ScheduledMethodRunnable; +import org.springframework.transaction.PlatformTransactionManager; import java.util.Date; import java.util.IdentityHashMap; -import java.util.List; import java.util.Map; import java.util.concurrent.ScheduledFuture; import java.util.concurrent.atomic.AtomicBoolean; import java.util.concurrent.atomic.AtomicInteger; @Configuration -@EnableBatchProcessing @EnableScheduling public class SpringBatchScheduler { @@ -46,21 +46,21 @@ public class SpringBatchScheduler { private final Map> scheduledTasks = new IdentityHashMap<>(); - @Autowired - private JobBuilderFactory jobBuilderFactory; - - @Autowired - private StepBuilderFactory stepBuilderFactory; - @Autowired private JobLauncher jobLauncher; + @Autowired + private JobRepository jobRepository; + + @Autowired + private PlatformTransactionManager transactionManager; + @Scheduled(fixedRate = 2000) public void launchJob() throws Exception { Date date = new Date(); logger.debug("scheduler starts at " + date); if (enabled.get()) { - JobExecution jobExecution = jobLauncher.run(job(), new JobParametersBuilder().addDate("launchDate", date) + JobExecution jobExecution = jobLauncher.run(job(jobRepository, transactionManager), new JobParametersBuilder().addDate("launchDate", date) .toJobParameters()); batchRunCounter.incrementAndGet(); logger.debug("Batch job ends with status as " + jobExecution.getStatus()); @@ -106,17 +106,16 @@ public class SpringBatchScheduler { } @Bean - public Job job() { - return jobBuilderFactory - .get("job") - .start(readBooks()) + public Job job(JobRepository jobRepository, PlatformTransactionManager transactionManager) { + return new JobBuilder("job", jobRepository) + .start(readBooks(jobRepository, transactionManager)) .build(); } @Bean - protected Step readBooks() { - return stepBuilderFactory.get("readBooks") - . chunk(2) + protected Step readBooks(JobRepository jobRepository, PlatformTransactionManager transactionManager) { + return new StepBuilder("readBooks", jobRepository) + . chunk(2, transactionManager) .reader(reader()) .writer(writer()) .build(); @@ -128,7 +127,7 @@ public class SpringBatchScheduler { .resource(new ClassPathResource("books.csv")) .delimited() .names(new String[] { "id", "name" }) - .fieldSetMapper(new BeanWrapperFieldSetMapper() { + .fieldSetMapper(new BeanWrapperFieldSetMapper<>() { { setTargetType(Book.class); } @@ -138,15 +137,10 @@ public class SpringBatchScheduler { @Bean public ItemWriter writer() { - return new ItemWriter() { - - @Override - public void write(List items) throws Exception { - logger.debug("writer..." + items.size()); - for (Book item : items) { - logger.debug(item.toString()); - } - + return items -> { + logger.debug("writer..." + items.size()); + for (Book item : items) { + logger.debug(item.toString()); } }; } diff --git a/spring-batch-2/src/test/java/com/baeldung/batch/SpringBootBatchIntegrationTest.java b/spring-batch-2/src/test/java/com/baeldung/batch/SpringBootBatchIntegrationTest.java index ba2b8a6a13..21fd7bf4b1 100644 --- a/spring-batch-2/src/test/java/com/baeldung/batch/SpringBootBatchIntegrationTest.java +++ b/spring-batch-2/src/test/java/com/baeldung/batch/SpringBootBatchIntegrationTest.java @@ -1,11 +1,10 @@ package com.baeldung.batch; -import static org.hamcrest.Matchers.is; -import static org.junit.Assert.assertThat; -import org.junit.After; -import org.junit.Test; -import org.junit.runner.RunWith; +import static org.junit.jupiter.api.Assertions.assertEquals; + +import org.junit.jupiter.api.AfterEach; +import org.junit.jupiter.api.Test; import org.springframework.batch.core.ExitStatus; import org.springframework.batch.core.JobExecution; import org.springframework.batch.core.JobInstance; @@ -13,16 +12,17 @@ import org.springframework.batch.test.JobLauncherTestUtils; import org.springframework.batch.test.JobRepositoryTestUtils; import org.springframework.batch.test.context.SpringBatchTest; import org.springframework.beans.factory.annotation.Autowired; -import org.springframework.boot.test.context.SpringBootTest; +import org.springframework.boot.autoconfigure.EnableAutoConfiguration; +import org.springframework.boot.test.mock.mockito.MockBean; import org.springframework.context.annotation.PropertySource; import org.springframework.test.annotation.DirtiesContext; -import org.springframework.test.context.junit4.SpringRunner; +import org.springframework.test.context.junit.jupiter.SpringJUnitConfig; @SpringBatchTest -@SpringBootTest @DirtiesContext +@SpringJUnitConfig(BatchConfiguration.class) @PropertySource("classpath:application.properties") -@RunWith(SpringRunner.class) +@EnableAutoConfiguration public class SpringBootBatchIntegrationTest { @Autowired @@ -31,7 +31,10 @@ public class SpringBootBatchIntegrationTest { @Autowired private JobRepositoryTestUtils jobRepositoryTestUtils; - @After + @MockBean + private JobCompletionNotificationListener jobCompletionNotificationListener; + + @AfterEach public void cleanUp() { jobRepositoryTestUtils.removeJobExecutions(); } @@ -42,8 +45,8 @@ public class SpringBootBatchIntegrationTest { JobInstance jobInstance = jobExecution.getJobInstance(); ExitStatus jobExitStatus = jobExecution.getExitStatus(); - assertThat(jobInstance.getJobName(), is("importUserJob")); - assertThat(jobExitStatus.getExitCode(), is("COMPLETED")); + assertEquals("importUserJob", jobInstance.getJobName()); + assertEquals("COMPLETED", jobExitStatus.getExitCode()); } } diff --git a/spring-batch-2/src/test/java/com/baeldung/batchscheduler/SpringBatchSchedulerIntegrationTest.java b/spring-batch-2/src/test/java/com/baeldung/batchscheduler/SpringBatchSchedulerIntegrationTest.java index 61e5a1dd74..297e8d989f 100644 --- a/spring-batch-2/src/test/java/com/baeldung/batchscheduler/SpringBatchSchedulerIntegrationTest.java +++ b/spring-batch-2/src/test/java/com/baeldung/batchscheduler/SpringBatchSchedulerIntegrationTest.java @@ -1,28 +1,20 @@ package com.baeldung.batchscheduler; -import com.baeldung.batchscheduler.SpringBatchScheduler; -import org.junit.Assert; -import org.junit.Test; -import org.junit.runner.RunWith; -import org.springframework.batch.test.context.SpringBatchTest; +import org.junit.jupiter.api.Test; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.boot.test.context.SpringBootTest; import org.springframework.context.ApplicationContext; import org.springframework.context.annotation.PropertySource; import org.springframework.scheduling.annotation.ScheduledAnnotationBeanPostProcessor; import org.springframework.test.annotation.DirtiesContext; -import org.springframework.test.context.ContextConfiguration; -import org.springframework.test.context.junit4.SpringJUnit4ClassRunner; -import org.springframework.test.context.junit4.SpringRunner; import static org.awaitility.Awaitility.await; import static java.util.concurrent.TimeUnit.*; +import static org.junit.jupiter.api.Assertions.assertEquals; -@SpringBatchTest @SpringBootTest @DirtiesContext @PropertySource("classpath:application.properties") -@RunWith(SpringRunner.class) public class SpringBatchSchedulerIntegrationTest { @Autowired @@ -31,37 +23,36 @@ public class SpringBatchSchedulerIntegrationTest { @Test public void stopJobsWhenSchedulerDisabled() { SpringBatchScheduler schedulerBean = context.getBean(SpringBatchScheduler.class); - await().untilAsserted(() -> Assert.assertEquals(2, schedulerBean.getBatchRunCounter() + await().untilAsserted(() -> assertEquals(2, schedulerBean.getBatchRunCounter() .get())); schedulerBean.stop(); await().atLeast(3, SECONDS); - Assert.assertEquals(2, schedulerBean.getBatchRunCounter() - .get()); + assertEquals(2, schedulerBean.getBatchRunCounter().get()); } @Test - public void stopJobSchedulerWhenSchedulerDestroyed() throws Exception { + public void stopJobSchedulerWhenSchedulerDestroyed() { ScheduledAnnotationBeanPostProcessor bean = context.getBean(ScheduledAnnotationBeanPostProcessor.class); SpringBatchScheduler schedulerBean = context.getBean(SpringBatchScheduler.class); - await().untilAsserted(() -> Assert.assertEquals(2, schedulerBean.getBatchRunCounter() + await().untilAsserted(() -> assertEquals(2, schedulerBean.getBatchRunCounter() .get())); bean.postProcessBeforeDestruction(schedulerBean, "SpringBatchScheduler"); await().atLeast(3, SECONDS); - Assert.assertEquals(2, schedulerBean.getBatchRunCounter() + assertEquals(2, schedulerBean.getBatchRunCounter() .get()); } @Test - public void stopJobSchedulerWhenFutureTasksCancelled() throws Exception { + public void stopJobSchedulerWhenFutureTasksCancelled() { SpringBatchScheduler schedulerBean = context.getBean(SpringBatchScheduler.class); - await().untilAsserted(() -> Assert.assertEquals(2, schedulerBean.getBatchRunCounter() + await().untilAsserted(() -> assertEquals(2, schedulerBean.getBatchRunCounter() .get())); schedulerBean.cancelFutureSchedulerTasks(); await().atLeast(3, SECONDS); - Assert.assertEquals(2, schedulerBean.getBatchRunCounter() + assertEquals(2, schedulerBean.getBatchRunCounter() .get()); } diff --git a/spring-batch/pom.xml b/spring-batch/pom.xml index e9d3afa376..810ddcdcdd 100644 --- a/spring-batch/pom.xml +++ b/spring-batch/pom.xml @@ -11,9 +11,9 @@ com.baeldung - parent-boot-2 + parent-boot-3 0.0.1-SNAPSHOT - ../parent-boot-2 + ../parent-boot-3 @@ -22,25 +22,15 @@ jackson-datatype-jsr310 ${jackson-datatype.version} - - - javax.xml.bind - jaxb-api - ${jaxb.version} - + jakarta.xml.bind + jakarta.xml.bind-api + 4.0.0 org.glassfish.jaxb jaxb-runtime ${jaxb.version} - - - - - org.xerial - sqlite-jdbc - ${sqlite.version} org.springframework @@ -53,20 +43,9 @@ - - org.springframework - spring-jdbc - ${spring.version} - - - org.springframework.batch - spring-batch-core - ${spring.batch.version} - org.springframework.batch spring-batch-test - ${spring.batch.version} com.opencsv @@ -78,19 +57,29 @@ spring-boot-starter-batch - org.hsqldb - hsqldb - runtime + org.apache.httpcomponents + httpclient + ${http-client.version} + + + org.codehaus.jettison + jettison + ${jettison.version} + + + com.h2database + h2 - 5.3.0 - 4.3.0 - 3.15.1 - 4.1 - 2.3.1 - 2.12.3 + 6.0.6 + 5.7.1 + 4.0.2 + 2.14.2 + 4.5.14 + 1.5.3 + com.baeldung.batchtesting.SpringBatchApplication \ No newline at end of file diff --git a/spring-batch/repository.sqlite b/spring-batch/repository.sqlite index b6a954554c9659b0f486c8af45bd69b710e61a0f..ddf5d0c16f52839ec30a36ec4e23155f07ea04db 100644 GIT binary patch delta 3284 zcmeGeYiv_h_?~lnZ{NEe8;-586%lCN?Amo5FdpM>6zM42+y;sMa9+xF?d*#_#_IG}G- z&$-|0+>vv-k#oAkHM4}*IF6e|mVqph<8UzF(DVS|y2HpS{l=O3Q(Rf7?1)sbbeqoW zFN(W_M%{7Uef+7yeB0MpS9Zj71BUq3@Fed$^sz_Cg0?N}%GI-C3+j|)c4dDFg~qQ1)KL(kd^jh2H5elSXK zND>OaTFWrzY=!b;-$?mm6{3l}_cUpktLB;P8Q8#8ClfIQu1#up^JDv|1!U)y&ROCAL#ci zu?gJXt#JNmEv(ws4#we)NP>akcZISN{)>gl%wkJv=MoFJ9- zl3*OQ;n^H=Apw5B>?q&=+0)~8L}43)30ORl02F!<4qp}E&xh^seB>d#tO-63+F^BY zF1&EXg`0i1$X2{`Sy5scGC=p$O5}$Blc6Li{ObV+t^VF)uO+}E<}A(K|MJr#m-K( zVLuhycZZW{)tyx`Pr3VcB*Og!32axxxok4+RvDr?{~;J+0Zgt%l^m)v3W88)L0S{{M6;`$ zw=;s1+j*OUww0f>)8b+eAs-|ERSPYjQRwM=`ss|I-RP)v zr*jEsUo@VIspOC$C6@?C#vYfDcXy28?o2L~N|K0`c4$#kO*8vD$=I7N@wlueqmp%m zlX3TEMU8FAkrZxLvf+qZPNk>=;?GG@rr+#m`n&IF5Lcp!X?35MsB6X2g3KIZV}XnV zR!kR?RC3`sllKwy{7q!!5OG>~ibk2}PE{47--ze3@S>-S>+pTz#gbryT!CMVn^vHwn3Icnm`Crll? u2elj4fY^PQRu&Eu^sS|snx<5@a8?s-WL@2KN( zndMTaiy@$row#U=0F7P1|0F1i1P0m!2=ajf)t1oHz|trk2vTb4H_VA5g9JYm2JvVvCU>?Kjr)4^h1+do7ta{ zETq?R=44II(>KU~DbV;?nVRy#=jh&n8=}FIA zD#g8Yq9-@B7P^^9tpUCl3tiv`ye2L3WJv?EWp?kWz1&)X&uwNhz16tHZ=74p7q;73 z;Ga(BQ|FTTg-|pYT;w}3Ae59(Co}11q*WtmDzmo2FYzU%-qcjNTGxz}w^N0S+h@iix#-TFP%gzhU$~J={neb1s>c41N{N?Ap(4mNb&U_k}bNp|6cXGP`atJn*%YTkZE< zmChzNGwntMZK9AYY;N>qVG*LG*0R|&ZBLufD|Y(LB_29h+H%Z}XVaO2lpk=ukWUw+ z0ar$0<9vF3z()^n>9w9;OGz6W+m@dBwM=FunL0l}P`b!Uu-XSNU_w0rtBvFnT|d36 zSmHCujl%Zk`YMbht6fN~I|#;zx1)!6G41ipC6nC89_Zm_GdHX!^U3UnRcEXFxGgx_ zio#f3?Gj(uT8GM9HP|H9?N)(ZU?d&F$Pi$okWc5H*nT>hF(?4wl+!5C%)QILeGHme zYsc*J;p*BZjPWd*{t1JDluEO9wgf{xjOFRGTaY5ph5^BpS*xyI$LzNB_Ai}sd*;Gn z?q%ghb!kzFu2Ho&R<+%5qBGblEwN!QorB&Wmy)1QHClbQztZ#6-<@>*A?{#b)K{4| z*&iKmTc+&*2H3OdCpPm*HmS?3rPxO=cLo;+T0O;w&3G(1r3XEWL5wEa3BhIsogexD zw(fAxJ^V1Y#h9e|;TkL~x0~d{EjF_-|8$y|qc7}2UEU{45OeYRyPTdmLEv6o>tno5 z!d<@WxY$jU2mRYz*9mULCcV?LQA455bfZQ*^79k-)C`Cvm8WF>la6DcK z#e{esYHZWyj&6Dv1lw zSRx*bM+Bh~FU5=D5{X7aP6&TGs}fB;T#>cXE|fD8FA7Bx4~j%6m*jY<6p4z(XgpR4 zmlKhMP!=5!N60q!s*QD}RxNcSl1MZmhaoSCkVs@mD=vhKK~fHi;b;uzZF(ingP^DOk#^p#+h*W}!Xt@{;ibWyBu{>6)YE$dPsf0o$C`hOrsf3}} z2?DhlF2}@RM2-O1C_q{foxht6*GmQu! z0*C-2fCwN0hyWsh2p|H803u*QV8MA`mK#G7Fx3e-N)Rv^be_y|N00+d1f26(Zfr4t zx08`kQUFgU;3y%0+nj+>G5}Y|c{+>U75-@F@e<_}zsM=gEm#@(4Yrz338?b*CKb-%;$h?NJ8HT7P* zL+J7BY<~cI5Sz{J`z0;MyL|tre+(%UdLaUc03v`0{9X_^e9yPdlK^IPowV-{xpY%-mZ zR`s`{?gW|*6->-3Dr~tsP}IFZks7xJN^oF6psA5YfXc1|8}Q0h_p6$8r9?=XlVOZIQrBGI+E2PxY zh!xpzRJh5ElN%ES1KlA+` zYRVf`sBhBOsv3IxTCntNm+{EWn5D6%R!JQ=si2!f2Rc|J~xb~rqYRT)p{#W9+1Pf?6U+=181 zj}=jf9Hkzu;0-Yx8OSLGs`iRD2xLecx92S>4FaPpqZ6Rj*QS{#4I*o%s)Hd=m1%`8 z+&CO7V|-W#r8jz&kvE{!Q!`N9AzBW~l_yOYh@i8gSus3W5@2gTvf&L+qg_*JD7jjf zYnG{mgj-Dox-`IycDRFO5F(?gcjrA8tN@H4wfo+IrWA@ErDsYO=}Ao`jaIDDMVK5J z>Y?ChqHI?8l*monxCxl}&CkO`kxl#FY*DW_zsV+l--gq0)-w_u2*W;L^7;;X1b`3b zi(vmh`xiFf4}E{{`-E@bmjm1X>Dm8=Qvf~(&iEh#hyWsh2p|H803v`0AOeU0B7g`W z0>_TP{L}>Zo(E@KUaxP8o~c=rTlLcJDy-+ZtNE9u|J|COGy+Tx26!~P^}qxKI5FdO zdwmo1%uNuAm6iRs{`6}PBp-kOSGOMU8s6Tn_h+`g@|nYLJ^b;ld5=Nf(?|aDwTHJ~ z-{AjaZbCmlv0hh-o*`C#j$-3Vm23=|bYTYhe0qMe*on3xzBw|eyd??nCov9mN1 zLaoAu z#ytdz{u5q~#^*Sy@3&JDbiWuSpsW6W$0CTjy5DVgqTb(R*Dze2-(z$zJRlR+quzg% zDaj~{1JwJ2-2<2?^r-224Hi1OPP4LJR}`V%zsF>W@tLJ+ANBr>T~P1eXXIv~?1j#V z+E1X~ANBrsuHHZX70*WWn53SRgi0*Js}h`_by!4~Mnl>|gfN;XlyQs2YY@} zE4S)9fi`~4%gquyc-L?UWU6)2yr4pjsmEJ6%W#PB^@H1;bHiBvcr!1;xyH92cD>OZ zZ_ZcXeB~ECHv{{f)Ue^u=X<^Hg43$+@glCk-le;p6|YC&?C+QMpgrA=v2a6^uSl0+ z&j1~Q^-h@Weo>7<_*s3_uF24eXO#Mme<}FflHV#`Lupp2!MJ~UFiup2NM~W^%h_s; z++es59_P?}Jp#v{BWy#q)>+PIu1DbTcZBW8uthU z&-s39^ZgcHuoVFQPxt(#cLa9a*nNTU8y`df5kLeG0Ym^1Km-s0L;w*$1P}p4;B75gUnZ=bZ=>{E6d+yC$RhRydY-_PI%fPeS>gYPw;=3Dnpdwv4W_#gs^ z03v`0AOeWM9g2W|%4tgvSNC7_PmT`r@g$f$e9|?X(vrVM%|#3qBQqvSs;YdLsWvtL z(z89*M#Jq-_LVZJG2;_3f2hOxlVDktl?i`NDepi6Oa8J_^e?~QKP0m1UltN#Xvx11 zCui+KxV2PaZAHq{K=R>QC96A!Iw78xYb_urfI<__gEI1}RrlfWtzA{AD}i)Vk-%%o zpOXAA=VD|o5V8lvH#T#t$*m6UEtY&J5rdKwxuO5m)D~It>!fPR&LPcbwG4678*31; zB-cp2EURtvrfO4(!;RSft5=u&@(yGy62H21OE^6ttB3r$qUk0(eLzLSU7*fNEBVc2 z-YCrtkOJV22`HL)7pIC`Yu*Y_G4U3GS|OTt$X}>739U~vL&f4FaT3IKkTyr%Bu>e~ zW`2OBB9MF+saxczXy_J!x*#9c37=Q2fD$_>0D~vj^XW{dZM3-wng(l_ZIEDraudvS zL0Zj88v`hr+ug15QzU$gFeS_KJ`czAl@Ca*Hpo&5u$W{}&~8LpFGyL7UaEs;8?MB0 z!W9ys&+Bs4t>P7m-XdO^R;gO65q^Ca{!|+l-Fl+aX#-^0ZnxWJEdiLRm$v}lo8Ya& zxy}3_YYAbX*2U@;TVN=D^||M+`n{vaS-)qDFzzwJxJHL@JDs+7+FrQocC`Q6+kZLz zZ=e4E4xQm(wh#eC01-e05CKF05kLeG0Ym^1Km-s0MBru+uup^je@55;_t^j63@MC* z2p|H803v`0AOeU0B7g`W0*C-2fCwN0cPIkA_WyR*mu@z0X+Yo z9$>X$T$rHWW-Wxry@VMKo(#~t5(2}I^~dx7hh5vwP7;rfzIwWQr7|2axgQup63_p~ z^Z)A_J2Tce(^GHSp~UEmu>1H7&;PGC;f8T~eSAS~?$wBX**Kp6uc&))D6Ur8?YS|+ z;v_yi{~wNuUJi>ze6P2j^0c;K= zeEV`PxWDib9(I^(q}&_6$(weQx37>O>g8&Q1hUm;6XI<)iApz;8|lwXPRJTR_Nn&A zwKk0>hD@4toSLmhLs7K=!>d5{8*nl=3GBjs#Wm8#a93_o5Ejfq^kug&Y~4L9g|Z@D zA*Gf^tjLC=!cArz@1{EnpW)gR*QR6lOt?0!Y0z0Uh^!g?BI_Ms(~Cboz6XBSSqD9Fr(qZ6DA(I!f^z8`;$M2uEEO20d893=6|14Lv!m$*npF zuR0S5BV!rnPSjIEKyB6A=mPnUdpqM1v7K=?vHLPz|Jz;PvH89QFMJRIL;w*$1ny1* zUO9mKTsc_RyH1>V{XH(5-Ohx(Z?X4}S%<%_ujKXjI16K@C#S0ROm)Ai(UmnRld`eG zUgoJEU!$J9QsGaBPP0`z4K)7hn8+Ts5^mXLj@cw zD#$|)taM(ZwDAGCR3gphsc0~`Fhnq-Pb<(4z(ShSojqEJa8TBwQ1(*P0IWLd&5EM# zk7hHp1JG6Zfu6PADP}NHpdjk{emI@3R+LM7uzE??d)(0uU}T?&vKExJkU*14KrC3H zM;y@8{@NBwZKxoI0W0TaLZdAReNP5a(#QLi_@$tHi_POW9vGgR$wd@%Pn znEv1Gwz=J|AKaajUd%NjfCwN0h(HelXPncv2@nL>?!O<#17;2Iy&tim;y>Fq0h_t= zxwQ*9=Ju0U4jg8|fv)_QneQHZzcEU1plhAkN~cFUfcpRbb@(vtJnH|MRAPmi=bG2d z9leQ#7Zdt~gpOWg9HG`o*$1vk#~0pN%#?9W3I;YkOK-E{T8NCPjJ(l81Z~sNHodc< zqbp>*bJnD6E6yd<|EnZGQMiNk|KFkO|4GM3Y_8w9KJTi!{LX)KzUs_6y^gPeBR+@# zB5<1!kY?_)abUphn&&t#=YF^W~I zD?RACd$Z!D0e27C`)5XMr`v6OGq0aZo=$FhD0S<}Lqk39V(%x7s3w4Efb)`jC>b{; za52Z;-9q(~x%jzru2JQpSy|+r^!?y_jSTgbYw^LkR~=5+1wa|_gwB3mjv5Wv+4_`P z(Y5yw!0P`WgIoIQ-|oDz;efubWvjN^v;L8s>J9WMtOVDyhTnnD(N_ zFj%(qWOXJUML>iy4R&;ZA-Cv=-%zG8d_$Sa_9+;~*?rp zIhh8V*F8hm|6XT<>i^$xeZqCo^@q;?aQ-bg;DZPt0*JsdBM_egLnT;qwhfh-l;iCC zsd(aSmI*X|Z7f-h59)q?GCpaF$pjl8yiWZd`xJdkR$>Y2{?qt`DJBzTTyoH*_N5ek z@BQ3J%J^XJzleKHF?Er_yQ$yq)AU_+84-*R=I)7mOfi|1VEY@?Z~Le8{rrcF2*w9< ze=hDe#nc4@EYBA|Kto*oni0YHVD4X!yG${eAYfhuzs32_()WXZWJEANnEMA`IdGcw z|0at8Hc}{WyZ#^7|G56QJT;-K0yEnTuw@_G*`u93uK#beYGrmV`nCaM(Q38E$MruP lh8G`p=!!1%!}Y(sEJQ}18Q49n(?ZgAN7~uno9q9^{{te3?6&{_ diff --git a/spring-batch/src/main/java/com/baeldung/batch/App.java b/spring-batch/src/main/java/com/baeldung/batch/App.java index c2db446965..c5823590d8 100644 --- a/spring-batch/src/main/java/com/baeldung/batch/App.java +++ b/spring-batch/src/main/java/com/baeldung/batch/App.java @@ -18,20 +18,19 @@ public class App { public static void main(final String[] args) { // Spring Java config final AnnotationConfigApplicationContext context = new AnnotationConfigApplicationContext(); - context.register(SpringConfig.class); + context.getEnvironment().addActiveProfile("spring"); context.register(SpringBatchConfig.class); context.register(SpringBatchRetryConfig.class); context.refresh(); // Spring xml config - // ApplicationContext context = new ClassPathXmlApplicationContext("spring-batch.xml"); + // ApplicationContext context = new ClassPathXmlApplicationContext("spring-batch-intro.xml"); runJob(context, "firstBatchJob"); runJob(context, "skippingBatchJob"); runJob(context, "skipPolicyBatchJob"); runJob(context, "retryBatchJob"); - } private static void runJob(AnnotationConfigApplicationContext context, String batchJobName) { diff --git a/spring-batch/src/main/java/com/baeldung/batch/SpringBatchConfig.java b/spring-batch/src/main/java/com/baeldung/batch/SpringBatchConfig.java index 5546df22fc..5d999c68e7 100644 --- a/spring-batch/src/main/java/com/baeldung/batch/SpringBatchConfig.java +++ b/spring-batch/src/main/java/com/baeldung/batch/SpringBatchConfig.java @@ -1,5 +1,7 @@ package com.baeldung.batch; +import javax.sql.DataSource; + import com.baeldung.batch.model.Transaction; import com.baeldung.batch.service.CustomItemProcessor; import com.baeldung.batch.service.CustomSkipPolicy; @@ -7,10 +9,15 @@ import com.baeldung.batch.service.MissingUsernameException; import com.baeldung.batch.service.NegativeAmountException; import com.baeldung.batch.service.RecordFieldSetMapper; import com.baeldung.batch.service.SkippingItemProcessor; + import org.springframework.batch.core.Job; import org.springframework.batch.core.Step; -import org.springframework.batch.core.configuration.annotation.JobBuilderFactory; -import org.springframework.batch.core.configuration.annotation.StepBuilderFactory; +import org.springframework.batch.core.job.builder.JobBuilder; +import org.springframework.batch.core.launch.JobLauncher; +import org.springframework.batch.core.launch.support.TaskExecutorJobLauncher; +import org.springframework.batch.core.repository.JobRepository; +import org.springframework.batch.core.repository.support.JobRepositoryFactoryBean; +import org.springframework.batch.core.step.builder.StepBuilder; import org.springframework.batch.item.ItemProcessor; import org.springframework.batch.item.ItemReader; import org.springframework.batch.item.ItemWriter; @@ -19,24 +26,23 @@ import org.springframework.batch.item.file.FlatFileItemReader; import org.springframework.batch.item.file.mapping.DefaultLineMapper; import org.springframework.batch.item.file.transform.DelimitedLineTokenizer; import org.springframework.batch.item.xml.StaxEventItemWriter; -import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.batch.support.transaction.ResourcelessTransactionManager; import org.springframework.beans.factory.annotation.Qualifier; import org.springframework.beans.factory.annotation.Value; import org.springframework.context.annotation.Bean; +import org.springframework.context.annotation.Configuration; import org.springframework.context.annotation.Profile; import org.springframework.core.io.Resource; +import org.springframework.core.io.WritableResource; +import org.springframework.jdbc.datasource.embedded.EmbeddedDatabaseBuilder; +import org.springframework.jdbc.datasource.embedded.EmbeddedDatabaseType; import org.springframework.oxm.Marshaller; import org.springframework.oxm.jaxb.Jaxb2Marshaller; +import org.springframework.transaction.PlatformTransactionManager; -import java.text.ParseException; - +@Configuration @Profile("spring") public class SpringBatchConfig { - @Autowired - private JobBuilderFactory jobBuilderFactory; - - @Autowired - private StepBuilderFactory stepBuilderFactory; @Value("input/record.csv") private Resource inputCsv; @@ -45,9 +51,9 @@ public class SpringBatchConfig { private Resource invalidInputCsv; @Value("file:xml/output.xml") - private Resource outputXml; + private WritableResource outputXml; - public ItemReader itemReader(Resource inputData) throws UnexpectedInputException, ParseException { + public ItemReader itemReader(Resource inputData) throws UnexpectedInputException { FlatFileItemReader reader = new FlatFileItemReader<>(); DelimitedLineTokenizer tokenizer = new DelimitedLineTokenizer(); String[] tokens = {"username", "userid", "transactiondate", "amount"}; @@ -88,10 +94,10 @@ public class SpringBatchConfig { } @Bean - protected Step step1(@Qualifier("itemProcessor") ItemProcessor processor, ItemWriter writer) throws ParseException { - return stepBuilderFactory - .get("step1") - . chunk(10) + protected Step step1(JobRepository jobRepository, PlatformTransactionManager transactionManager, @Qualifier("itemProcessor") ItemProcessor processor, ItemWriter writer) { + return new StepBuilder("step1", jobRepository) + . chunk(10, transactionManager) .reader(itemReader(inputCsv)) .processor(processor) .writer(writer) @@ -99,16 +105,15 @@ public class SpringBatchConfig { } @Bean(name = "firstBatchJob") - public Job job(@Qualifier("step1") Step step1) { - return jobBuilderFactory.get("firstBatchJob").start(step1).build(); + public Job job(JobRepository jobRepository, @Qualifier("step1") Step step1) { + return new JobBuilder("firstBatchJob", jobRepository).preventRestart().start(step1).build(); } @Bean - public Step skippingStep(@Qualifier("skippingItemProcessor") ItemProcessor processor, - ItemWriter writer) throws ParseException { - return stepBuilderFactory - .get("skippingStep") - .chunk(10) + public Step skippingStep(JobRepository jobRepository, PlatformTransactionManager transactionManager, @Qualifier("skippingItemProcessor") ItemProcessor processor, ItemWriter writer) { + return new StepBuilder("skippingStep", jobRepository) + .chunk(10, transactionManager) .reader(itemReader(invalidInputCsv)) .processor(processor) .writer(writer) @@ -120,19 +125,18 @@ public class SpringBatchConfig { } @Bean(name = "skippingBatchJob") - public Job skippingJob(@Qualifier("skippingStep") Step skippingStep) { - return jobBuilderFactory - .get("skippingBatchJob") + public Job skippingJob(JobRepository jobRepository, PlatformTransactionManager transactionManager, @Qualifier("skippingStep") Step skippingStep) { + return new JobBuilder("skippingBatchJob", jobRepository) .start(skippingStep) + .preventRestart() .build(); } @Bean - public Step skipPolicyStep(@Qualifier("skippingItemProcessor") ItemProcessor processor, - ItemWriter writer) throws ParseException { - return stepBuilderFactory - .get("skipPolicyStep") - .chunk(10) + public Step skipPolicyStep(JobRepository jobRepository, PlatformTransactionManager transactionManager, @Qualifier("skippingItemProcessor") ItemProcessor processor, + ItemWriter writer) { + return new StepBuilder("skipPolicyStep", jobRepository) + .chunk(10, transactionManager) .reader(itemReader(invalidInputCsv)) .processor(processor) .writer(writer) @@ -142,11 +146,44 @@ public class SpringBatchConfig { } @Bean(name = "skipPolicyBatchJob") - public Job skipPolicyBatchJob(@Qualifier("skipPolicyStep") Step skipPolicyStep) { - return jobBuilderFactory - .get("skipPolicyBatchJob") + public Job skipPolicyBatchJob(JobRepository jobRepository, @Qualifier("skipPolicyStep") Step skipPolicyStep) { + return new JobBuilder("skipPolicyBatchJob", jobRepository) .start(skipPolicyStep) + .preventRestart() .build(); } + public DataSource dataSource() { + EmbeddedDatabaseBuilder builder = new EmbeddedDatabaseBuilder(); + return builder.setType(EmbeddedDatabaseType.H2) + .addScript("classpath:org/springframework/batch/core/schema-drop-h2.sql") + .addScript("classpath:org/springframework/batch/core/schema-h2.sql") + .build(); + } + + @Bean(name = "transactionManager") + public PlatformTransactionManager getTransactionManager() { + return new ResourcelessTransactionManager(); + } + + @Bean(name = "jobRepository") + public JobRepository getJobRepository() throws Exception { + JobRepositoryFactoryBean factory = new JobRepositoryFactoryBean(); + factory.setDataSource(dataSource()); + factory.setTransactionManager(getTransactionManager()); + // JobRepositoryFactoryBean's methods Throws Generic Exception, + // it would have been better to have a specific one + factory.afterPropertiesSet(); + return factory.getObject(); + } + + @Bean(name = "jobLauncher") + public JobLauncher getJobLauncher() throws Exception { + TaskExecutorJobLauncher jobLauncher = new TaskExecutorJobLauncher(); + // TaskExecutorJobLauncher's methods Throws Generic Exception, + // it would have been better to have a specific one + jobLauncher.setJobRepository(getJobRepository()); + jobLauncher.afterPropertiesSet(); + return jobLauncher; + } } diff --git a/spring-batch/src/main/java/com/baeldung/batch/SpringBatchRetryConfig.java b/spring-batch/src/main/java/com/baeldung/batch/SpringBatchRetryConfig.java index a329df3016..4b6246c074 100644 --- a/spring-batch/src/main/java/com/baeldung/batch/SpringBatchRetryConfig.java +++ b/spring-batch/src/main/java/com/baeldung/batch/SpringBatchRetryConfig.java @@ -1,17 +1,18 @@ package com.baeldung.batch; +import com.baeldung.batch.model.Transaction; +import com.baeldung.batch.service.RecordFieldSetMapper; +import com.baeldung.batch.service.RetryItemProcessor; + import org.apache.http.client.config.RequestConfig; import org.apache.http.conn.ConnectTimeoutException; import org.apache.http.impl.client.CloseableHttpClient; import org.apache.http.impl.client.HttpClientBuilder; -import com.baeldung.batch.model.Transaction; -import com.baeldung.batch.service.RecordFieldSetMapper; -import com.baeldung.batch.service.RetryItemProcessor; import org.springframework.batch.core.Job; import org.springframework.batch.core.Step; -import org.springframework.batch.core.configuration.annotation.EnableBatchProcessing; -import org.springframework.batch.core.configuration.annotation.JobBuilderFactory; -import org.springframework.batch.core.configuration.annotation.StepBuilderFactory; +import org.springframework.batch.core.job.builder.JobBuilder; +import org.springframework.batch.core.repository.JobRepository; +import org.springframework.batch.core.step.builder.StepBuilder; import org.springframework.batch.item.ItemProcessor; import org.springframework.batch.item.ItemReader; import org.springframework.batch.item.ItemWriter; @@ -19,38 +20,30 @@ import org.springframework.batch.item.file.FlatFileItemReader; import org.springframework.batch.item.file.mapping.DefaultLineMapper; import org.springframework.batch.item.file.transform.DelimitedLineTokenizer; import org.springframework.batch.item.xml.StaxEventItemWriter; -import org.springframework.beans.factory.annotation.Autowired; import org.springframework.beans.factory.annotation.Qualifier; import org.springframework.beans.factory.annotation.Value; import org.springframework.context.annotation.Bean; import org.springframework.context.annotation.Configuration; import org.springframework.core.io.Resource; +import org.springframework.core.io.WritableResource; import org.springframework.dao.DeadlockLoserDataAccessException; import org.springframework.oxm.Marshaller; import org.springframework.oxm.jaxb.Jaxb2Marshaller; - -import java.text.ParseException; +import org.springframework.transaction.PlatformTransactionManager; @Configuration -@EnableBatchProcessing public class SpringBatchRetryConfig { - + private static final String[] tokens = { "username", "userid", "transactiondate", "amount" }; private static final int TWO_SECONDS = 2000; - @Autowired - private JobBuilderFactory jobBuilderFactory; - - @Autowired - private StepBuilderFactory stepBuilderFactory; - @Value("input/recordRetry.csv") private Resource inputCsv; @Value("file:xml/retryOutput.xml") - private Resource outputXml; + private WritableResource outputXml; - public ItemReader itemReader(Resource inputData) throws ParseException { + public ItemReader itemReader(Resource inputData) { DelimitedLineTokenizer tokenizer = new DelimitedLineTokenizer(); tokenizer.setNames(tokens); DefaultLineMapper lineMapper = new DefaultLineMapper<>(); @@ -93,10 +86,11 @@ public class SpringBatchRetryConfig { } @Bean - public Step retryStep(@Qualifier("retryItemProcessor") ItemProcessor processor, - ItemWriter writer) throws ParseException { - return stepBuilderFactory.get("retryStep") - .chunk(10) + public Step retryStep( + JobRepository jobRepository, PlatformTransactionManager transactionManager, @Qualifier("retryItemProcessor") ItemProcessor processor, + ItemWriter writer) { + return new StepBuilder("retryStep", jobRepository) + .chunk(10, transactionManager) .reader(itemReader(inputCsv)) .processor(processor) .writer(writer) @@ -108,9 +102,8 @@ public class SpringBatchRetryConfig { } @Bean(name = "retryBatchJob") - public Job retryJob(@Qualifier("retryStep") Step retryStep) { - return jobBuilderFactory - .get("retryBatchJob") + public Job retryJob(JobRepository jobRepository, @Qualifier("retryStep") Step retryStep) { + return new JobBuilder("retryBatchJob", jobRepository) .start(retryStep) .build(); } diff --git a/spring-batch/src/main/java/com/baeldung/batch/SpringConfig.java b/spring-batch/src/main/java/com/baeldung/batch/SpringConfig.java deleted file mode 100644 index dc6c242996..0000000000 --- a/spring-batch/src/main/java/com/baeldung/batch/SpringConfig.java +++ /dev/null @@ -1,80 +0,0 @@ -package com.baeldung.batch; - -import java.net.MalformedURLException; - -import javax.sql.DataSource; - -import org.springframework.batch.core.configuration.annotation.EnableBatchProcessing; -import org.springframework.batch.core.launch.JobLauncher; -import org.springframework.batch.core.launch.support.SimpleJobLauncher; -import org.springframework.batch.core.repository.JobRepository; -import org.springframework.batch.core.repository.support.JobRepositoryFactoryBean; -import org.springframework.batch.support.transaction.ResourcelessTransactionManager; -import org.springframework.beans.factory.annotation.Value; -import org.springframework.context.annotation.Bean; -import org.springframework.context.annotation.Configuration; -import org.springframework.context.annotation.Profile; -import org.springframework.core.io.Resource; -import org.springframework.jdbc.datasource.DriverManagerDataSource; -import org.springframework.jdbc.datasource.init.DataSourceInitializer; -import org.springframework.jdbc.datasource.init.ResourceDatabasePopulator; -import org.springframework.transaction.PlatformTransactionManager; - -@Configuration -@EnableBatchProcessing -@Profile("spring") -public class SpringConfig { - - @Value("org/springframework/batch/core/schema-drop-sqlite.sql") - private Resource dropReopsitoryTables; - - @Value("org/springframework/batch/core/schema-sqlite.sql") - private Resource dataReopsitorySchema; - - @Bean - public DataSource dataSource() { - DriverManagerDataSource dataSource = new DriverManagerDataSource(); - dataSource.setDriverClassName("org.sqlite.JDBC"); - dataSource.setUrl("jdbc:sqlite:repository.sqlite"); - return dataSource; - } - - @Bean - public DataSourceInitializer dataSourceInitializer(DataSource dataSource) throws MalformedURLException { - ResourceDatabasePopulator databasePopulator = new ResourceDatabasePopulator(); - - databasePopulator.addScript(dropReopsitoryTables); - databasePopulator.addScript(dataReopsitorySchema); - databasePopulator.setIgnoreFailedDrops(true); - - DataSourceInitializer initializer = new DataSourceInitializer(); - initializer.setDataSource(dataSource); - initializer.setDatabasePopulator(databasePopulator); - - return initializer; - } - - private JobRepository getJobRepository() throws Exception { - JobRepositoryFactoryBean factory = new JobRepositoryFactoryBean(); - factory.setDataSource(dataSource()); - factory.setTransactionManager(getTransactionManager()); - // JobRepositoryFactoryBean's methods Throws Generic Exception, - // it would have been better to have a specific one - factory.afterPropertiesSet(); - return (JobRepository) factory.getObject(); - } - - private PlatformTransactionManager getTransactionManager() { - return new ResourcelessTransactionManager(); - } - - public JobLauncher getJobLauncher() throws Exception { - SimpleJobLauncher jobLauncher = new SimpleJobLauncher(); - // SimpleJobLauncher's methods Throws Generic Exception, - // it would have been better to have a specific one - jobLauncher.setJobRepository(getJobRepository()); - jobLauncher.afterPropertiesSet(); - return jobLauncher; - } - -} \ No newline at end of file diff --git a/spring-batch/src/main/java/com/baeldung/batch/model/Transaction.java b/spring-batch/src/main/java/com/baeldung/batch/model/Transaction.java index ffb6d59a79..c4ca36c1bc 100644 --- a/spring-batch/src/main/java/com/baeldung/batch/model/Transaction.java +++ b/spring-batch/src/main/java/com/baeldung/batch/model/Transaction.java @@ -1,10 +1,11 @@ package com.baeldung.batch.model; +import java.time.LocalDateTime; + import com.baeldung.batch.service.adapter.LocalDateTimeAdapter; -import javax.xml.bind.annotation.XmlRootElement; -import javax.xml.bind.annotation.adapters.XmlJavaTypeAdapter; -import java.time.LocalDateTime; +import jakarta.xml.bind.annotation.XmlRootElement; +import jakarta.xml.bind.annotation.adapters.XmlJavaTypeAdapter; @SuppressWarnings("restriction") @XmlRootElement(name = "transactionRecord") diff --git a/spring-batch/src/main/java/com/baeldung/batch/partitioner/CustomMultiResourcePartitioner.java b/spring-batch/src/main/java/com/baeldung/batch/partitioner/CustomMultiResourcePartitioner.java index 4fade76ffc..1ff74ce192 100644 --- a/spring-batch/src/main/java/com/baeldung/batch/partitioner/CustomMultiResourcePartitioner.java +++ b/spring-batch/src/main/java/com/baeldung/batch/partitioner/CustomMultiResourcePartitioner.java @@ -60,7 +60,7 @@ public class CustomMultiResourcePartitioner implements Partitioner { */ @Override public Map partition(int gridSize) { - Map map = new HashMap(gridSize); + Map map = new HashMap<>(gridSize); int i = 0, k = 1; for (Resource resource : resources) { ExecutionContext context = new ExecutionContext(); diff --git a/spring-batch/src/main/java/com/baeldung/batch/partitioner/SpringbatchPartitionConfig.java b/spring-batch/src/main/java/com/baeldung/batch/partitioner/SpringBatchPartitionConfig.java similarity index 77% rename from spring-batch/src/main/java/com/baeldung/batch/partitioner/SpringbatchPartitionConfig.java rename to spring-batch/src/main/java/com/baeldung/batch/partitioner/SpringBatchPartitionConfig.java index b08c95af53..ceacb36e4d 100644 --- a/spring-batch/src/main/java/com/baeldung/batch/partitioner/SpringbatchPartitionConfig.java +++ b/spring-batch/src/main/java/com/baeldung/batch/partitioner/SpringBatchPartitionConfig.java @@ -5,13 +5,13 @@ import com.baeldung.batch.service.RecordFieldSetMapper; import org.springframework.batch.core.Job; import org.springframework.batch.core.Step; import org.springframework.batch.core.configuration.annotation.EnableBatchProcessing; -import org.springframework.batch.core.configuration.annotation.JobBuilderFactory; -import org.springframework.batch.core.configuration.annotation.StepBuilderFactory; import org.springframework.batch.core.configuration.annotation.StepScope; +import org.springframework.batch.core.job.builder.JobBuilder; import org.springframework.batch.core.launch.JobLauncher; -import org.springframework.batch.core.launch.support.SimpleJobLauncher; +import org.springframework.batch.core.launch.support.TaskExecutorJobLauncher; import org.springframework.batch.core.repository.JobRepository; import org.springframework.batch.core.repository.support.JobRepositoryFactoryBean; +import org.springframework.batch.core.step.builder.StepBuilder; import org.springframework.batch.item.UnexpectedInputException; import org.springframework.batch.item.file.FlatFileItemReader; import org.springframework.batch.item.file.mapping.DefaultLineMapper; @@ -36,42 +36,35 @@ import org.springframework.transaction.PlatformTransactionManager; import javax.sql.DataSource; import java.io.IOException; -import java.net.MalformedURLException; import java.text.ParseException; @Configuration @EnableBatchProcessing -public class SpringbatchPartitionConfig { +public class SpringBatchPartitionConfig { @Autowired - ResourcePatternResolver resoursePatternResolver; - - @Autowired - private JobBuilderFactory jobs; - - @Autowired - private StepBuilderFactory steps; + private ResourcePatternResolver resourcePatternResolver; @Bean(name = "partitionerJob") - public Job partitionerJob() throws UnexpectedInputException, MalformedURLException, ParseException { - return jobs.get("partitionerJob") - .start(partitionStep()) + public Job partitionerJob(JobRepository jobRepository, PlatformTransactionManager transactionManager) throws UnexpectedInputException, ParseException { + return new JobBuilder("partitionerJob", jobRepository) + .start(partitionStep(jobRepository, transactionManager)) .build(); } @Bean - public Step partitionStep() throws UnexpectedInputException, MalformedURLException, ParseException { - return steps.get("partitionStep") + public Step partitionStep(JobRepository jobRepository, PlatformTransactionManager transactionManager) throws UnexpectedInputException, ParseException { + return new StepBuilder("partitionStep", jobRepository) .partitioner("slaveStep", partitioner()) - .step(slaveStep()) + .step(slaveStep(jobRepository, transactionManager)) .taskExecutor(taskExecutor()) .build(); } @Bean - public Step slaveStep() throws UnexpectedInputException, MalformedURLException, ParseException { - return steps.get("slaveStep") - .chunk(1) + public Step slaveStep(JobRepository jobRepository, PlatformTransactionManager transactionManager) throws UnexpectedInputException, ParseException { + return new StepBuilder("slaveStep", jobRepository) + .chunk(1, transactionManager) .reader(itemReader(null)) .writer(itemWriter(marshaller(), null)) .build(); @@ -82,7 +75,7 @@ public class SpringbatchPartitionConfig { CustomMultiResourcePartitioner partitioner = new CustomMultiResourcePartitioner(); Resource[] resources; try { - resources = resoursePatternResolver.getResources("file:src/main/resources/input/partitioner/*.csv"); + resources = resourcePatternResolver.getResources("file:src/main/resources/input/partitioner/*.csv"); } catch (IOException e) { throw new RuntimeException("I/O problems when resolving the input file pattern.", e); } @@ -108,7 +101,7 @@ public class SpringbatchPartitionConfig { @Bean(destroyMethod = "") @StepScope - public StaxEventItemWriter itemWriter(Marshaller marshaller, @Value("#{stepExecutionContext[opFileName]}") String filename) throws MalformedURLException { + public StaxEventItemWriter itemWriter(Marshaller marshaller, @Value("#{stepExecutionContext[opFileName]}") String filename) { StaxEventItemWriter itemWriter = new StaxEventItemWriter<>(); itemWriter.setMarshaller(marshaller); itemWriter.setRootTagName("transactionRecord"); @@ -133,7 +126,8 @@ public class SpringbatchPartitionConfig { return taskExecutor; } - private JobRepository getJobRepository() throws Exception { + @Bean(name = "jobRepository") + public JobRepository getJobRepository() throws Exception { JobRepositoryFactoryBean factory = new JobRepositoryFactoryBean(); factory.setDataSource(dataSource()); factory.setTransactionManager(getTransactionManager()); @@ -143,20 +137,23 @@ public class SpringbatchPartitionConfig { return factory.getObject(); } - private DataSource dataSource() { + @Bean(name = "dataSource") + public DataSource dataSource() { EmbeddedDatabaseBuilder builder = new EmbeddedDatabaseBuilder(); - return builder.setType(EmbeddedDatabaseType.HSQL) + return builder.setType(EmbeddedDatabaseType.H2) .addScript("classpath:org/springframework/batch/core/schema-drop-h2.sql") .addScript("classpath:org/springframework/batch/core/schema-h2.sql") .build(); } - private PlatformTransactionManager getTransactionManager() { + @Bean(name = "transactionManager") + public PlatformTransactionManager getTransactionManager() { return new ResourcelessTransactionManager(); } + @Bean(name = "jobLauncher") public JobLauncher getJobLauncher() throws Exception { - SimpleJobLauncher jobLauncher = new SimpleJobLauncher(); + TaskExecutorJobLauncher jobLauncher = new TaskExecutorJobLauncher(); // SimpleJobLauncher's methods Throws Generic Exception, // it would have been better to have a specific one jobLauncher.setJobRepository(getJobRepository()); diff --git a/spring-batch/src/main/java/com/baeldung/batch/partitioner/SpringbatchPartitionerApp.java b/spring-batch/src/main/java/com/baeldung/batch/partitioner/SpringBatchPartitionerApp.java similarity index 89% rename from spring-batch/src/main/java/com/baeldung/batch/partitioner/SpringbatchPartitionerApp.java rename to spring-batch/src/main/java/com/baeldung/batch/partitioner/SpringBatchPartitionerApp.java index e755e21ca9..a1661e750e 100644 --- a/spring-batch/src/main/java/com/baeldung/batch/partitioner/SpringbatchPartitionerApp.java +++ b/spring-batch/src/main/java/com/baeldung/batch/partitioner/SpringBatchPartitionerApp.java @@ -8,14 +8,14 @@ import org.springframework.batch.core.JobParameters; import org.springframework.batch.core.launch.JobLauncher; import org.springframework.context.annotation.AnnotationConfigApplicationContext; -public class SpringbatchPartitionerApp { +public class SpringBatchPartitionerApp { - private static final Logger LOGGER = LoggerFactory.getLogger(SpringbatchPartitionerApp.class); + private static final Logger LOGGER = LoggerFactory.getLogger(SpringBatchPartitionerApp.class); public static void main(final String[] args) { // Spring Java config final AnnotationConfigApplicationContext context = new AnnotationConfigApplicationContext(); - context.register(SpringbatchPartitionConfig.class); + context.register(SpringBatchPartitionConfig.class); context.refresh(); final JobLauncher jobLauncher = (JobLauncher) context.getBean("jobLauncher"); diff --git a/spring-batch/src/main/java/com/baeldung/batch/service/CustomSkipPolicy.java b/spring-batch/src/main/java/com/baeldung/batch/service/CustomSkipPolicy.java index 25401de022..af6fe20529 100644 --- a/spring-batch/src/main/java/com/baeldung/batch/service/CustomSkipPolicy.java +++ b/spring-batch/src/main/java/com/baeldung/batch/service/CustomSkipPolicy.java @@ -9,19 +9,13 @@ public class CustomSkipPolicy implements SkipPolicy { private static final int INVALID_TX_AMOUNT_LIMIT = -1000; @Override - public boolean shouldSkip(Throwable throwable, int skipCount) throws SkipLimitExceededException { - + public boolean shouldSkip(Throwable throwable, long skipCount) throws SkipLimitExceededException { if (throwable instanceof MissingUsernameException && skipCount < MAX_SKIP_COUNT) { return true; } - if (throwable instanceof NegativeAmountException && skipCount < MAX_SKIP_COUNT ) { - NegativeAmountException ex = (NegativeAmountException) throwable; - if(ex.getAmount() < INVALID_TX_AMOUNT_LIMIT){ - return false; - } else{ - return true; - } + if (throwable instanceof NegativeAmountException ex && skipCount < MAX_SKIP_COUNT ) { + return ex.getAmount() >= INVALID_TX_AMOUNT_LIMIT; } return false; diff --git a/spring-batch/src/main/java/com/baeldung/batch/service/RecordFieldSetMapper.java b/spring-batch/src/main/java/com/baeldung/batch/service/RecordFieldSetMapper.java index 09478e9a30..97c77d9e6a 100644 --- a/spring-batch/src/main/java/com/baeldung/batch/service/RecordFieldSetMapper.java +++ b/spring-batch/src/main/java/com/baeldung/batch/service/RecordFieldSetMapper.java @@ -10,7 +10,7 @@ import java.time.format.DateTimeFormatter; public class RecordFieldSetMapper implements FieldSetMapper { - public Transaction mapFieldSet(FieldSet fieldSet) throws BindException { + public Transaction mapFieldSet(FieldSet fieldSet) { DateTimeFormatter formatter = DateTimeFormatter.ofPattern("d/M/yyy"); diff --git a/spring-batch/src/main/java/com/baeldung/batch/service/RetryItemProcessor.java b/spring-batch/src/main/java/com/baeldung/batch/service/RetryItemProcessor.java index c380e2c0ab..aa49680b2a 100644 --- a/spring-batch/src/main/java/com/baeldung/batch/service/RetryItemProcessor.java +++ b/spring-batch/src/main/java/com/baeldung/batch/service/RetryItemProcessor.java @@ -5,15 +5,13 @@ import org.apache.http.client.methods.HttpGet; import org.apache.http.impl.client.CloseableHttpClient; import org.apache.http.util.EntityUtils; import com.baeldung.batch.model.Transaction; -import org.codehaus.jettison.json.JSONException; + import org.codehaus.jettison.json.JSONObject; import org.slf4j.Logger; import org.slf4j.LoggerFactory; import org.springframework.batch.item.ItemProcessor; import org.springframework.beans.factory.annotation.Autowired; -import java.io.IOException; - public class RetryItemProcessor implements ItemProcessor { private static final Logger LOGGER = LoggerFactory.getLogger(RetryItemProcessor.class); @@ -22,7 +20,7 @@ public class RetryItemProcessor implements ItemProcessor { private static final String DATE_FORMAT = "yyyy-MM-dd HH:mm:ss"; diff --git a/spring-batch/src/main/java/com/baeldung/batch/springboot/SpringBootBatchConfig.java b/spring-batch/src/main/java/com/baeldung/batch/springboot/SpringBootBatchConfig.java index 57531ebc39..6c463de5dc 100644 --- a/spring-batch/src/main/java/com/baeldung/batch/springboot/SpringBootBatchConfig.java +++ b/spring-batch/src/main/java/com/baeldung/batch/springboot/SpringBootBatchConfig.java @@ -5,8 +5,9 @@ import com.baeldung.batch.service.*; import org.springframework.batch.core.Job; import org.springframework.batch.core.Step; import org.springframework.batch.core.configuration.annotation.EnableBatchProcessing; -import org.springframework.batch.core.configuration.annotation.JobBuilderFactory; -import org.springframework.batch.core.configuration.annotation.StepBuilderFactory; +import org.springframework.batch.core.job.builder.JobBuilder; +import org.springframework.batch.core.repository.JobRepository; +import org.springframework.batch.core.step.builder.StepBuilder; import org.springframework.batch.item.ItemProcessor; import org.springframework.batch.item.ItemReader; import org.springframework.batch.item.ItemWriter; @@ -15,27 +16,21 @@ import org.springframework.batch.item.file.FlatFileItemReader; import org.springframework.batch.item.file.mapping.DefaultLineMapper; import org.springframework.batch.item.file.transform.DelimitedLineTokenizer; import org.springframework.batch.item.xml.StaxEventItemWriter; -import org.springframework.beans.factory.annotation.Autowired; import org.springframework.beans.factory.annotation.Qualifier; import org.springframework.beans.factory.annotation.Value; import org.springframework.context.annotation.Bean; import org.springframework.context.annotation.Configuration; import org.springframework.context.annotation.Profile; import org.springframework.core.io.Resource; +import org.springframework.core.io.WritableResource; import org.springframework.oxm.Marshaller; import org.springframework.oxm.jaxb.Jaxb2Marshaller; - -import java.text.ParseException; +import org.springframework.transaction.PlatformTransactionManager; @Configuration @EnableBatchProcessing @Profile("spring-boot") public class SpringBootBatchConfig { - @Autowired - private JobBuilderFactory jobBuilderFactory; - - @Autowired - private StepBuilderFactory stepBuilderFactory; @Value("input/record.csv") private Resource inputCsv; @@ -44,9 +39,9 @@ public class SpringBootBatchConfig { private Resource invalidInputCsv; @Value("file:xml/output.xml") - private Resource outputXml; + private WritableResource outputXml; - public ItemReader itemReader(Resource inputData) throws UnexpectedInputException, ParseException { + public ItemReader itemReader(Resource inputData) throws UnexpectedInputException { FlatFileItemReader reader = new FlatFileItemReader<>(); DelimitedLineTokenizer tokenizer = new DelimitedLineTokenizer(); String[] tokens = {"username", "userid", "transactiondate", "amount"}; @@ -86,11 +81,10 @@ public class SpringBootBatchConfig { return marshaller3; } - @Bean - protected Step step1(@Qualifier("itemProcessor") ItemProcessor processor, ItemWriter itemWriter3) throws ParseException { - return stepBuilderFactory - .get("step1") - . chunk(10) + @Bean(name = "step1") + protected Step step1(JobRepository jobRepository, PlatformTransactionManager transactionManager, @Qualifier("itemProcessor") ItemProcessor processor, ItemWriter itemWriter3) { + return new StepBuilder("step1", jobRepository) + . chunk(10, transactionManager) .reader(itemReader(inputCsv)) .processor(processor) .writer(itemWriter3) @@ -98,16 +92,15 @@ public class SpringBootBatchConfig { } @Bean(name = "firstBatchJob") - public Job job(@Qualifier("step1") Step step1) { - return jobBuilderFactory.get("firstBatchJob").start(step1).build(); + public Job job(@Qualifier("step1") Step step1, JobRepository jobRepository) { + return new JobBuilder("firstBatchJob", jobRepository).start(step1).build(); } @Bean - public Step skippingStep(@Qualifier("skippingItemProcessor") ItemProcessor processor, - ItemWriter itemWriter3) throws ParseException { - return stepBuilderFactory - .get("skippingStep") - .chunk(10) + public Step skippingStep(JobRepository jobRepository, PlatformTransactionManager transactionManager, @Qualifier("skippingItemProcessor") ItemProcessor processor, + ItemWriter itemWriter3) { + return new StepBuilder("skippingStep", jobRepository) + .chunk(10, transactionManager) .reader(itemReader(invalidInputCsv)) .processor(processor) .writer(itemWriter3) @@ -119,19 +112,17 @@ public class SpringBootBatchConfig { } @Bean(name = "skippingBatchJob") - public Job skippingJob(@Qualifier("skippingStep") Step skippingStep) { - return jobBuilderFactory - .get("skippingBatchJob") + public Job skippingJob(JobRepository jobRepository, @Qualifier("skippingStep") Step skippingStep) { + return new JobBuilder("skippingBatchJob", jobRepository) .start(skippingStep) .build(); } - @Bean - public Step skipPolicyStep(@Qualifier("skippingItemProcessor") ItemProcessor processor, - ItemWriter itemWriter3) throws ParseException { - return stepBuilderFactory - .get("skipPolicyStep") - .chunk(10) + @Bean(name = "skipPolicyStep") + public Step skipPolicyStep(JobRepository jobRepository, PlatformTransactionManager transactionManager, @Qualifier("skippingItemProcessor") ItemProcessor processor, + ItemWriter itemWriter3) { + return new StepBuilder("skipPolicyStep", jobRepository) + .chunk(10, transactionManager) .reader(itemReader(invalidInputCsv)) .processor(processor) .writer(itemWriter3) @@ -141,11 +132,9 @@ public class SpringBootBatchConfig { } @Bean(name = "skipPolicyBatchJob") - public Job skipPolicyBatchJob(@Qualifier("skipPolicyStep") Step skipPolicyStep) { - return jobBuilderFactory - .get("skipPolicyBatchJob") + public Job skipPolicyBatchJob(JobRepository jobRepository, @Qualifier("skipPolicyStep") Step skipPolicyStep) { + return new JobBuilder("skipPolicyBatchJob", jobRepository) .start(skipPolicyStep) .build(); } - } diff --git a/spring-batch/src/main/java/com/baeldung/batchtesting/SpringBatchConfiguration.java b/spring-batch/src/main/java/com/baeldung/batchtesting/SpringBatchConfiguration.java index 664db3fbba..547074ff84 100644 --- a/spring-batch/src/main/java/com/baeldung/batchtesting/SpringBatchConfiguration.java +++ b/spring-batch/src/main/java/com/baeldung/batchtesting/SpringBatchConfiguration.java @@ -1,7 +1,5 @@ package com.baeldung.batchtesting; -import java.io.IOException; - import com.baeldung.batchtesting.model.Book; import com.baeldung.batchtesting.model.BookDetails; import com.baeldung.batchtesting.model.BookRecord; @@ -12,10 +10,10 @@ import org.slf4j.Logger; import org.slf4j.LoggerFactory; import org.springframework.batch.core.Job; import org.springframework.batch.core.Step; -import org.springframework.batch.core.configuration.annotation.EnableBatchProcessing; -import org.springframework.batch.core.configuration.annotation.JobBuilderFactory; -import org.springframework.batch.core.configuration.annotation.StepBuilderFactory; import org.springframework.batch.core.configuration.annotation.StepScope; +import org.springframework.batch.core.job.builder.JobBuilder; +import org.springframework.batch.core.repository.JobRepository; +import org.springframework.batch.core.step.builder.StepBuilder; import org.springframework.batch.item.ItemReader; import org.springframework.batch.item.ItemWriter; import org.springframework.batch.item.file.FlatFileItemReader; @@ -25,27 +23,19 @@ import org.springframework.batch.item.json.JacksonJsonObjectMarshaller; import org.springframework.batch.item.json.JsonFileItemWriter; import org.springframework.batch.item.json.builder.JsonFileItemWriterBuilder; import org.springframework.batch.item.support.ListItemWriter; -import org.springframework.beans.factory.annotation.Autowired; import org.springframework.beans.factory.annotation.Value; import org.springframework.context.annotation.Bean; import org.springframework.context.annotation.Configuration; import org.springframework.core.io.FileSystemResource; - +import org.springframework.transaction.PlatformTransactionManager; @Configuration -@EnableBatchProcessing public class SpringBatchConfiguration { private static Logger LOGGER = LoggerFactory.getLogger(SpringBatchConfiguration.class); private static final String[] TOKENS = { "bookname", "bookauthor", "bookformat", "isbn", "publishyear" }; - @Autowired - private JobBuilderFactory jobBuilderFactory; - - @Autowired - private StepBuilderFactory stepBuilderFactory; - @Bean @StepScope public FlatFileItemReader csvItemReader(@Value("#{jobParameters['file.input']}") String input) { @@ -65,7 +55,7 @@ public class SpringBatchConfiguration { @Bean @StepScope - public JsonFileItemWriter jsonItemWriter(@Value("#{jobParameters['file.output']}") String output) throws IOException { + public JsonFileItemWriter jsonItemWriter(@Value("#{jobParameters['file.output']}") String output) { JsonFileItemWriterBuilder builder = new JsonFileItemWriterBuilder<>(); JacksonJsonObjectMarshaller marshaller = new JacksonJsonObjectMarshaller<>(); LOGGER.info("Configuring writer to output {}", output); @@ -81,7 +71,7 @@ public class SpringBatchConfiguration { @Bean @StepScope public ListItemWriter listItemWriter() { - return new ListItemWriter(); + return new ListItemWriter<>(); } @Bean @@ -96,12 +86,11 @@ public class SpringBatchConfiguration { return new BookDetailsItemProcessor(); } - @Bean - public Step step1(ItemReader csvItemReader, ItemWriter jsonItemWriter) throws IOException { + @Bean(name = "step1") + public Step step1(JobRepository jobRepository, PlatformTransactionManager transactionManager, ItemReader csvItemReader, ItemWriter jsonItemWriter) { // @formatter:off - return stepBuilderFactory - .get("step1") - . chunk(3) + return new StepBuilder("step1", jobRepository) + . chunk(3, transactionManager) .reader(csvItemReader) .processor(bookItemProcessor()) .writer(jsonItemWriter) @@ -109,12 +98,11 @@ public class SpringBatchConfiguration { // @formatter:on } - @Bean - public Step step2(ItemReader csvItemReader, ItemWriter listItemWriter) { + @Bean(name = "step2") + public Step step2(JobRepository jobRepository, PlatformTransactionManager transactionManager, ItemReader csvItemReader, ItemWriter listItemWriter) { // @formatter:off - return stepBuilderFactory - .get("step2") - . chunk(3) + return new StepBuilder("step2", jobRepository) + . chunk(3, transactionManager) .reader(csvItemReader) .processor(bookDetailsItemProcessor()) .writer(listItemWriter) @@ -123,15 +111,13 @@ public class SpringBatchConfiguration { } @Bean(name = "transformBooksRecords") - public Job transformBookRecords(Step step1, Step step2) throws IOException { + public Job transformBookRecords(JobRepository jobRepository, Step step1, Step step2) { // @formatter:off - return jobBuilderFactory - .get("transformBooksRecords") + return new JobBuilder("transformBooksRecords", jobRepository) .flow(step1) .next(step2) .end() .build(); // @formatter:on } - } diff --git a/spring-batch/src/main/java/com/baeldung/batchtesting/service/BookDetailsItemProcessor.java b/spring-batch/src/main/java/com/baeldung/batchtesting/service/BookDetailsItemProcessor.java index 514a383108..4e4d1e9075 100644 --- a/spring-batch/src/main/java/com/baeldung/batchtesting/service/BookDetailsItemProcessor.java +++ b/spring-batch/src/main/java/com/baeldung/batchtesting/service/BookDetailsItemProcessor.java @@ -11,7 +11,7 @@ public class BookDetailsItemProcessor implements ItemProcessor { private static Logger LOGGER = LoggerFactory.getLogger(BookItemProcessor.class); @Override - public Book process(BookRecord item) throws Exception { + public Book process(BookRecord item) { Book book = new Book(); book.setAuthor(item.getBookAuthor()); book.setName(item.getBookName()); diff --git a/spring-batch/src/main/java/com/baeldung/batchtesting/service/BookRecordFieldSetMapper.java b/spring-batch/src/main/java/com/baeldung/batchtesting/service/BookRecordFieldSetMapper.java index d9e8ee1158..e4760da20f 100644 --- a/spring-batch/src/main/java/com/baeldung/batchtesting/service/BookRecordFieldSetMapper.java +++ b/spring-batch/src/main/java/com/baeldung/batchtesting/service/BookRecordFieldSetMapper.java @@ -9,7 +9,7 @@ import org.springframework.validation.BindException; public class BookRecordFieldSetMapper implements FieldSetMapper { @Override - public BookRecord mapFieldSet(FieldSet fieldSet) throws BindException { + public BookRecord mapFieldSet(FieldSet fieldSet) { BookRecord bookRecord = new BookRecord(); bookRecord.setBookName(fieldSet.readString("bookname")); bookRecord.setBookAuthor(fieldSet.readString("bookauthor")); diff --git a/spring-batch/src/main/java/com/baeldung/taskletsvschunks/chunks/LineReader.java b/spring-batch/src/main/java/com/baeldung/taskletsvschunks/chunks/LineReader.java index 6ffa730c19..d8ba2c9728 100644 --- a/spring-batch/src/main/java/com/baeldung/taskletsvschunks/chunks/LineReader.java +++ b/spring-batch/src/main/java/com/baeldung/taskletsvschunks/chunks/LineReader.java @@ -21,9 +21,9 @@ public class LineReader implements ItemReader, StepExecutionListener { } @Override - public Line read() throws Exception { + public Line read() { Line line = fu.readLine(); - if (line != null) logger.debug("Read line: " + line.toString()); + if (line != null) logger.debug("Read line: " + line); return line; } diff --git a/spring-batch/src/main/java/com/baeldung/taskletsvschunks/chunks/LinesWriter.java b/spring-batch/src/main/java/com/baeldung/taskletsvschunks/chunks/LinesWriter.java index 9f292b24b9..bcf648820c 100644 --- a/spring-batch/src/main/java/com/baeldung/taskletsvschunks/chunks/LinesWriter.java +++ b/spring-batch/src/main/java/com/baeldung/taskletsvschunks/chunks/LinesWriter.java @@ -7,10 +7,9 @@ import org.slf4j.LoggerFactory; import org.springframework.batch.core.ExitStatus; import org.springframework.batch.core.StepExecution; import org.springframework.batch.core.StepExecutionListener; +import org.springframework.batch.item.Chunk; import org.springframework.batch.item.ItemWriter; -import java.util.List; - public class LinesWriter implements ItemWriter, StepExecutionListener { private final Logger logger = LoggerFactory.getLogger(LinesWriter.class); @@ -30,7 +29,7 @@ public class LinesWriter implements ItemWriter, StepExecutionListener { } @Override - public void write(List lines) throws Exception { + public void write(Chunk lines) { for (Line line : lines) { fu.writeLine(line); logger.debug("Wrote line " + line.toString()); diff --git a/spring-batch/src/main/java/com/baeldung/taskletsvschunks/config/ChunksConfig.java b/spring-batch/src/main/java/com/baeldung/taskletsvschunks/config/ChunksConfig.java index c8b05848f9..16c6b1191f 100644 --- a/spring-batch/src/main/java/com/baeldung/taskletsvschunks/config/ChunksConfig.java +++ b/spring-batch/src/main/java/com/baeldung/taskletsvschunks/config/ChunksConfig.java @@ -6,67 +6,19 @@ import com.baeldung.taskletsvschunks.chunks.LinesWriter; import com.baeldung.taskletsvschunks.model.Line; import org.springframework.batch.core.Job; import org.springframework.batch.core.Step; -import org.springframework.batch.core.configuration.annotation.EnableBatchProcessing; -import org.springframework.batch.core.configuration.annotation.JobBuilderFactory; -import org.springframework.batch.core.configuration.annotation.StepBuilderFactory; -import org.springframework.batch.core.launch.JobLauncher; -import org.springframework.batch.core.launch.support.SimpleJobLauncher; +import org.springframework.batch.core.job.builder.JobBuilder; import org.springframework.batch.core.repository.JobRepository; -import org.springframework.batch.core.repository.support.JobRepositoryFactoryBean; +import org.springframework.batch.core.step.builder.StepBuilder; import org.springframework.batch.item.ItemProcessor; import org.springframework.batch.item.ItemReader; import org.springframework.batch.item.ItemWriter; -import org.springframework.batch.support.transaction.ResourcelessTransactionManager; -import org.springframework.batch.test.JobLauncherTestUtils; -import org.springframework.beans.factory.annotation.Autowired; import org.springframework.context.annotation.Bean; import org.springframework.context.annotation.Configuration; -import org.springframework.jdbc.datasource.DriverManagerDataSource; import org.springframework.transaction.PlatformTransactionManager; -import javax.sql.DataSource; - @Configuration -@EnableBatchProcessing public class ChunksConfig { - @Autowired private JobBuilderFactory jobs; - - @Autowired private StepBuilderFactory steps; - - @Bean - public JobLauncherTestUtils jobLauncherTestUtils() { - return new JobLauncherTestUtils(); - } - - @Bean - public JobRepository jobRepository() throws Exception { - JobRepositoryFactoryBean factory = new JobRepositoryFactoryBean(); - factory.setDataSource(dataSource()); - factory.setTransactionManager(transactionManager()); - return factory.getObject(); - } - - @Bean - public DataSource dataSource() { - DriverManagerDataSource dataSource = new DriverManagerDataSource(); - dataSource.setDriverClassName("org.sqlite.JDBC"); - dataSource.setUrl("jdbc:sqlite:repository.sqlite"); - return dataSource; - } - - @Bean - public PlatformTransactionManager transactionManager() { - return new ResourcelessTransactionManager(); - } - - @Bean - public JobLauncher jobLauncher() throws Exception { - SimpleJobLauncher jobLauncher = new SimpleJobLauncher(); - jobLauncher.setJobRepository(jobRepository()); - return jobLauncher; - } - @Bean public ItemReader itemReader() { return new LineReader(); @@ -82,20 +34,19 @@ public class ChunksConfig { return new LinesWriter(); } - @Bean - protected Step processLines(ItemReader reader, ItemProcessor processor, ItemWriter writer) { - return steps.get("processLines"). chunk(2) + @Bean(name = "processLines") + protected Step processLines(JobRepository jobRepository, PlatformTransactionManager transactionManager, ItemReader reader, ItemProcessor processor, ItemWriter writer) { + return new StepBuilder("processLines", jobRepository). chunk(2, transactionManager) .reader(reader) .processor(processor) .writer(writer) .build(); } - @Bean - public Job job() { - return jobs - .get("chunksJob") - .start(processLines(itemReader(), itemProcessor(), itemWriter())) + @Bean(name = "chunksJob") + public Job job(JobRepository jobRepository, PlatformTransactionManager transactionManager) { + return new JobBuilder("chunksJob", jobRepository) + .start(processLines(jobRepository, transactionManager, itemReader(), itemProcessor(), itemWriter())) .build(); } diff --git a/spring-batch/src/main/java/com/baeldung/taskletsvschunks/config/TaskletsConfig.java b/spring-batch/src/main/java/com/baeldung/taskletsvschunks/config/TaskletsConfig.java index 5f2f49928c..ab9d506229 100644 --- a/spring-batch/src/main/java/com/baeldung/taskletsvschunks/config/TaskletsConfig.java +++ b/spring-batch/src/main/java/com/baeldung/taskletsvschunks/config/TaskletsConfig.java @@ -5,64 +5,16 @@ import com.baeldung.taskletsvschunks.tasklets.LinesReader; import com.baeldung.taskletsvschunks.tasklets.LinesWriter; import org.springframework.batch.core.Job; import org.springframework.batch.core.Step; -import org.springframework.batch.core.configuration.annotation.EnableBatchProcessing; -import org.springframework.batch.core.configuration.annotation.JobBuilderFactory; -import org.springframework.batch.core.configuration.annotation.StepBuilderFactory; -import org.springframework.batch.core.launch.JobLauncher; -import org.springframework.batch.core.launch.support.SimpleJobLauncher; +import org.springframework.batch.core.job.builder.JobBuilder; import org.springframework.batch.core.repository.JobRepository; -import org.springframework.batch.core.repository.support.JobRepositoryFactoryBean; -import org.springframework.batch.support.transaction.ResourcelessTransactionManager; -import org.springframework.batch.test.JobLauncherTestUtils; -import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.batch.core.step.builder.StepBuilder; import org.springframework.context.annotation.Bean; import org.springframework.context.annotation.Configuration; -import org.springframework.jdbc.datasource.DriverManagerDataSource; import org.springframework.transaction.PlatformTransactionManager; -import javax.sql.DataSource; - @Configuration -@EnableBatchProcessing public class TaskletsConfig { - @Autowired private JobBuilderFactory jobs; - - @Autowired private StepBuilderFactory steps; - - @Bean - public JobLauncherTestUtils jobLauncherTestUtils() { - return new JobLauncherTestUtils(); - } - - @Bean - public JobRepository jobRepository() throws Exception { - JobRepositoryFactoryBean factory = new JobRepositoryFactoryBean(); - factory.setDataSource(dataSource()); - factory.setTransactionManager(transactionManager()); - return factory.getObject(); - } - - @Bean - public DataSource dataSource() { - DriverManagerDataSource dataSource = new DriverManagerDataSource(); - dataSource.setDriverClassName("org.sqlite.JDBC"); - dataSource.setUrl("jdbc:sqlite:repository.sqlite"); - return dataSource; - } - - @Bean - public PlatformTransactionManager transactionManager() { - return new ResourcelessTransactionManager(); - } - - @Bean - public JobLauncher jobLauncher() throws Exception { - SimpleJobLauncher jobLauncher = new SimpleJobLauncher(); - jobLauncher.setJobRepository(jobRepository()); - return jobLauncher; - } - @Bean public LinesReader linesReader() { return new LinesReader(); @@ -79,36 +31,32 @@ public class TaskletsConfig { } @Bean - protected Step readLines() { - return steps - .get("readLines") - .tasklet(linesReader()) + protected Step readLines(JobRepository jobRepository, PlatformTransactionManager transactionManager) { + return new StepBuilder("readLines", jobRepository) + .tasklet(linesReader(), transactionManager) .build(); } @Bean - protected Step processLines() { - return steps - .get("processLines") - .tasklet(linesProcessor()) + protected Step processLines(JobRepository jobRepository, PlatformTransactionManager transactionManager) { + return new StepBuilder("processLines", jobRepository) + .tasklet(linesProcessor(), transactionManager) .build(); } @Bean - protected Step writeLines() { - return steps - .get("writeLines") - .tasklet(linesWriter()) + protected Step writeLines(JobRepository jobRepository, PlatformTransactionManager transactionManager) { + return new StepBuilder("writeLines", jobRepository) + .tasklet(linesWriter(), transactionManager) .build(); } @Bean - public Job job() { - return jobs - .get("taskletsJob") - .start(readLines()) - .next(processLines()) - .next(writeLines()) + public Job job(JobRepository jobRepository, PlatformTransactionManager transactionManager) { + return new JobBuilder("taskletsJob", jobRepository) + .start(readLines(jobRepository, transactionManager)) + .next(processLines(jobRepository, transactionManager)) + .next(writeLines(jobRepository, transactionManager)) .build(); } diff --git a/spring-batch/src/main/java/com/baeldung/taskletsvschunks/tasklets/LinesReader.java b/spring-batch/src/main/java/com/baeldung/taskletsvschunks/tasklets/LinesReader.java index b1f58be4a4..70f1a1b05d 100644 --- a/spring-batch/src/main/java/com/baeldung/taskletsvschunks/tasklets/LinesReader.java +++ b/spring-batch/src/main/java/com/baeldung/taskletsvschunks/tasklets/LinesReader.java @@ -24,7 +24,7 @@ public class LinesReader implements Tasklet, StepExecutionListener { @Override public void beforeStep(StepExecution stepExecution) { - lines = new ArrayList(); + lines = new ArrayList<>(); fu = new FileUtils("taskletsvschunks/input/tasklets-vs-chunks.csv"); logger.debug("Lines Reader initialized."); } diff --git a/spring-batch/src/main/java/org/baeldung/conditionalflow/ConditionalFlowApplication.java b/spring-batch/src/main/java/org/baeldung/conditionalflow/ConditionalFlowApplication.java index c977d6ecab..8a8f62ae31 100644 --- a/spring-batch/src/main/java/org/baeldung/conditionalflow/ConditionalFlowApplication.java +++ b/spring-batch/src/main/java/org/baeldung/conditionalflow/ConditionalFlowApplication.java @@ -15,7 +15,7 @@ public class ConditionalFlowApplication implements CommandLineRunner { } @Override - public void run(String... args) throws Exception { + public void run(String... args) { logger.info("Running conditional flow application..."); } } diff --git a/spring-batch/src/main/java/org/baeldung/conditionalflow/config/NumberInfoConfig.java b/spring-batch/src/main/java/org/baeldung/conditionalflow/config/NumberInfoConfig.java index 906a6e1d28..4954d9ffcd 100644 --- a/spring-batch/src/main/java/org/baeldung/conditionalflow/config/NumberInfoConfig.java +++ b/spring-batch/src/main/java/org/baeldung/conditionalflow/config/NumberInfoConfig.java @@ -6,39 +6,49 @@ import org.baeldung.conditionalflow.step.*; import org.springframework.batch.core.Job; import org.springframework.batch.core.Step; import org.springframework.batch.core.configuration.annotation.EnableBatchProcessing; -import org.springframework.batch.core.configuration.annotation.JobBuilderFactory; -import org.springframework.batch.core.configuration.annotation.StepBuilderFactory; +import org.springframework.batch.core.job.builder.JobBuilder; +import org.springframework.batch.core.launch.JobLauncher; +import org.springframework.batch.core.launch.support.TaskExecutorJobLauncher; +import org.springframework.batch.core.repository.JobRepository; +import org.springframework.batch.core.repository.support.JobRepositoryFactoryBean; +import org.springframework.batch.core.step.builder.StepBuilder; +import org.springframework.batch.support.transaction.ResourcelessTransactionManager; import org.springframework.beans.factory.annotation.Qualifier; import org.springframework.context.annotation.Bean; import org.springframework.context.annotation.Configuration; import org.springframework.context.annotation.Primary; +import org.springframework.jdbc.datasource.embedded.EmbeddedDatabaseBuilder; +import org.springframework.jdbc.datasource.embedded.EmbeddedDatabaseType; +import org.springframework.transaction.PlatformTransactionManager; import static org.baeldung.conditionalflow.NumberInfoDecider.NOTIFY; +import javax.sql.DataSource; + @Configuration @EnableBatchProcessing public class NumberInfoConfig { @Bean @Qualifier("NotificationStep") - public Step notificationStep(StepBuilderFactory sbf) { - return sbf.get("Notify step") - .tasklet(new NotifierTasklet()) + public Step notificationStep(JobRepository jobRepository, PlatformTransactionManager transactionManager) { + return new StepBuilder("Notify step", jobRepository) + .tasklet(new NotifierTasklet(), transactionManager) .build(); } - public Step numberGeneratorStep(StepBuilderFactory sbf, int[] values, String prepend) { - return sbf.get("Number generator") - . chunk(1) + public Step numberGeneratorStep(JobRepository jobRepositories, PlatformTransactionManager transactionManager, int[] values, String prepend) { + return new StepBuilder("Number generator", jobRepositories) + . chunk(1, transactionManager) .reader(new NumberInfoGenerator(values)) .processor(new NumberInfoClassifier()) .writer(new PrependingStdoutWriter<>(prepend)) .build(); } - public Step numberGeneratorStepDecider(StepBuilderFactory sbf, int[] values, String prepend) { - return sbf.get("Number generator decider") - . chunk(1) + public Step numberGeneratorStepDecider(JobRepository jobRepositories, PlatformTransactionManager transactionManager, int[] values, String prepend) { + return new StepBuilder("Number generator decider", jobRepositories) + . chunk(1, transactionManager) .reader(new NumberInfoGenerator(values)) .processor(new NumberInfoClassifierWithDecider()) .writer(new PrependingStdoutWriter<>(prepend)) @@ -47,10 +57,10 @@ public class NumberInfoConfig { @Bean @Qualifier("first_job") - public Job numberGeneratorNonNotifierJob(JobBuilderFactory jobBuilderFactory, StepBuilderFactory stepBuilderFactory, @Qualifier("NotificationStep") Step notificationStep) { + public Job numberGeneratorNonNotifierJob(JobRepository jobRepository, PlatformTransactionManager transactionManager, @Qualifier("NotificationStep") Step notificationStep) { int[] nonNotifierData = { -1, -2, -3 }; - Step step = numberGeneratorStep(stepBuilderFactory, nonNotifierData, "First Dataset Processor"); - return jobBuilderFactory.get("Number generator - first dataset") + Step step = numberGeneratorStep(jobRepository, transactionManager, nonNotifierData, "First Dataset Processor"); + return new JobBuilder("Number generator - first dataset", jobRepository) .start(step) .on(NOTIFY) .to(notificationStep) @@ -63,10 +73,10 @@ public class NumberInfoConfig { @Bean @Qualifier("second_job") - public Job numberGeneratorNotifierJob(JobBuilderFactory jobBuilderFactory, StepBuilderFactory stepBuilderFactory, @Qualifier("NotificationStep") Step notificationStep) { + public Job numberGeneratorNotifierJob(JobRepository jobRepository, PlatformTransactionManager transactionManager, @Qualifier("NotificationStep") Step notificationStep) { int[] billableData = { 11, -2, -3 }; - Step dataProviderStep = numberGeneratorStep(stepBuilderFactory, billableData, "Second Dataset Processor"); - return jobBuilderFactory.get("Number generator - second dataset") + Step dataProviderStep = numberGeneratorStep(jobRepository, transactionManager, billableData, "Second Dataset Processor"); + return new JobBuilder("Number generator - second dataset", jobRepository) .start(dataProviderStep) .on(NOTIFY) .to(notificationStep) @@ -77,10 +87,10 @@ public class NumberInfoConfig { @Bean @Qualifier("third_job") @Primary - public Job numberGeneratorNotifierJobWithDecider(JobBuilderFactory jobBuilderFactory, StepBuilderFactory stepBuilderFactory, @Qualifier("NotificationStep") Step notificationStep) { + public Job numberGeneratorNotifierJobWithDecider(JobRepository jobRepository, PlatformTransactionManager transactionManager, @Qualifier("NotificationStep") Step notificationStep) { int[] billableData = { 11, -2, -3 }; - Step dataProviderStep = numberGeneratorStepDecider(stepBuilderFactory, billableData, "Third Dataset Processor"); - return jobBuilderFactory.get("Number generator - third dataset") + Step dataProviderStep = numberGeneratorStepDecider(jobRepository, transactionManager, billableData, "Third Dataset Processor"); + return new JobBuilder("Number generator - third dataset", jobRepository) .start(dataProviderStep) .next(new NumberInfoDecider()) .on(NOTIFY) @@ -88,4 +98,39 @@ public class NumberInfoConfig { .end() .build(); } + + @Bean(name = "jobRepository") + public JobRepository getJobRepository() throws Exception { + JobRepositoryFactoryBean factory = new JobRepositoryFactoryBean(); + factory.setDataSource(dataSource()); + factory.setTransactionManager(getTransactionManager()); + // JobRepositoryFactoryBean's methods Throws Generic Exception, + // it would have been better to have a specific one + factory.afterPropertiesSet(); + return factory.getObject(); + } + + @Bean(name = "dataSource") + public DataSource dataSource() { + EmbeddedDatabaseBuilder builder = new EmbeddedDatabaseBuilder(); + return builder.setType(EmbeddedDatabaseType.H2) + .addScript("classpath:org/springframework/batch/core/schema-drop-h2.sql") + .addScript("classpath:org/springframework/batch/core/schema-h2.sql") + .build(); + } + + @Bean(name = "transactionManager") + public PlatformTransactionManager getTransactionManager() { + return new ResourcelessTransactionManager(); + } + + @Bean(name = "jobLauncher") + public JobLauncher getJobLauncher() throws Exception { + TaskExecutorJobLauncher jobLauncher = new TaskExecutorJobLauncher(); + // SimpleJobLauncher's methods Throws Generic Exception, + // it would have been better to have a specific one + jobLauncher.setJobRepository(getJobRepository()); + jobLauncher.afterPropertiesSet(); + return jobLauncher; + } } diff --git a/spring-batch/src/main/java/org/baeldung/conditionalflow/step/NotifierTasklet.java b/spring-batch/src/main/java/org/baeldung/conditionalflow/step/NotifierTasklet.java index 0d1db66fe9..99ec151cba 100644 --- a/spring-batch/src/main/java/org/baeldung/conditionalflow/step/NotifierTasklet.java +++ b/spring-batch/src/main/java/org/baeldung/conditionalflow/step/NotifierTasklet.java @@ -7,9 +7,8 @@ import org.springframework.batch.repeat.RepeatStatus; public class NotifierTasklet implements Tasklet { @Override - public RepeatStatus execute(StepContribution stepContribution, ChunkContext chunkContext) throws Exception { - System.err.println("[" + chunkContext.getStepContext() - .getJobName() + "] contains interesting data!!"); + public RepeatStatus execute(StepContribution stepContribution, ChunkContext chunkContext) { + System.err.println("[" + chunkContext.getStepContext().getJobName() + "] contains interesting data!!"); return RepeatStatus.FINISHED; } } diff --git a/spring-batch/src/main/java/org/baeldung/conditionalflow/step/NumberInfoClassifier.java b/spring-batch/src/main/java/org/baeldung/conditionalflow/step/NumberInfoClassifier.java index fdb28263e7..71d88e3f0a 100644 --- a/spring-batch/src/main/java/org/baeldung/conditionalflow/step/NumberInfoClassifier.java +++ b/spring-batch/src/main/java/org/baeldung/conditionalflow/step/NumberInfoClassifier.java @@ -29,7 +29,7 @@ public class NumberInfoClassifier extends ItemListenerSupport implements ItemProcessor { @Override - public Integer process(NumberInfo numberInfo) throws Exception { + public Integer process(NumberInfo numberInfo) { return Integer.valueOf(numberInfo.getNumber()); } } diff --git a/spring-batch/src/main/java/org/baeldung/conditionalflow/step/PrependingStdoutWriter.java b/spring-batch/src/main/java/org/baeldung/conditionalflow/step/PrependingStdoutWriter.java index 9ffea1e798..abadb78e93 100644 --- a/spring-batch/src/main/java/org/baeldung/conditionalflow/step/PrependingStdoutWriter.java +++ b/spring-batch/src/main/java/org/baeldung/conditionalflow/step/PrependingStdoutWriter.java @@ -1,7 +1,6 @@ package org.baeldung.conditionalflow.step; -import java.util.List; - +import org.springframework.batch.item.Chunk; import org.springframework.batch.item.ItemWriter; public class PrependingStdoutWriter implements ItemWriter { @@ -12,8 +11,8 @@ public class PrependingStdoutWriter implements ItemWriter { } @Override - public void write(List list) { - for (T listItem : list) { + public void write(Chunk chunk) { + for (T listItem : chunk) { System.out.println(prependText + " " + listItem.toString()); } } diff --git a/spring-batch/src/main/resources/output/output1.xml b/spring-batch/src/main/resources/output/output1.xml index 838d04882a..78bc7349e8 100644 --- a/spring-batch/src/main/resources/output/output1.xml +++ b/spring-batch/src/main/resources/output/output1.xml @@ -1,21 +1,21 @@ - - 10000.0 - 2015-10-31 00:00:00 - 1234 - devendra - - - 12321.0 - 2015-12-03 00:00:00 - 2134 - john - - - 23411.0 - 2015-02-02 00:00:00 - 2134 - robin - + + 10000.0 + 2015-10-31 00:00:00 + 1234 + devendra + + + 12321.0 + 2015-12-03 00:00:00 + 2134 + john + + + 23411.0 + 2015-02-02 00:00:00 + 2134 + robin + \ No newline at end of file diff --git a/spring-batch/src/main/resources/output/output2.xml b/spring-batch/src/main/resources/output/output2.xml index 838d04882a..78bc7349e8 100644 --- a/spring-batch/src/main/resources/output/output2.xml +++ b/spring-batch/src/main/resources/output/output2.xml @@ -1,21 +1,21 @@ - - 10000.0 - 2015-10-31 00:00:00 - 1234 - devendra - - - 12321.0 - 2015-12-03 00:00:00 - 2134 - john - - - 23411.0 - 2015-02-02 00:00:00 - 2134 - robin - + + 10000.0 + 2015-10-31 00:00:00 + 1234 + devendra + + + 12321.0 + 2015-12-03 00:00:00 + 2134 + john + + + 23411.0 + 2015-02-02 00:00:00 + 2134 + robin + \ No newline at end of file diff --git a/spring-batch/src/main/resources/output/output3.xml b/spring-batch/src/main/resources/output/output3.xml index 838d04882a..78bc7349e8 100644 --- a/spring-batch/src/main/resources/output/output3.xml +++ b/spring-batch/src/main/resources/output/output3.xml @@ -1,21 +1,21 @@ - - 10000.0 - 2015-10-31 00:00:00 - 1234 - devendra - - - 12321.0 - 2015-12-03 00:00:00 - 2134 - john - - - 23411.0 - 2015-02-02 00:00:00 - 2134 - robin - + + 10000.0 + 2015-10-31 00:00:00 + 1234 + devendra + + + 12321.0 + 2015-12-03 00:00:00 + 2134 + john + + + 23411.0 + 2015-02-02 00:00:00 + 2134 + robin + \ No newline at end of file diff --git a/spring-batch/src/main/resources/output/output4.xml b/spring-batch/src/main/resources/output/output4.xml index 838d04882a..78bc7349e8 100644 --- a/spring-batch/src/main/resources/output/output4.xml +++ b/spring-batch/src/main/resources/output/output4.xml @@ -1,21 +1,21 @@ - - 10000.0 - 2015-10-31 00:00:00 - 1234 - devendra - - - 12321.0 - 2015-12-03 00:00:00 - 2134 - john - - - 23411.0 - 2015-02-02 00:00:00 - 2134 - robin - + + 10000.0 + 2015-10-31 00:00:00 + 1234 + devendra + + + 12321.0 + 2015-12-03 00:00:00 + 2134 + john + + + 23411.0 + 2015-02-02 00:00:00 + 2134 + robin + \ No newline at end of file diff --git a/spring-batch/src/main/resources/output/output5.xml b/spring-batch/src/main/resources/output/output5.xml index 838d04882a..78bc7349e8 100644 --- a/spring-batch/src/main/resources/output/output5.xml +++ b/spring-batch/src/main/resources/output/output5.xml @@ -1,21 +1,21 @@ - - 10000.0 - 2015-10-31 00:00:00 - 1234 - devendra - - - 12321.0 - 2015-12-03 00:00:00 - 2134 - john - - - 23411.0 - 2015-02-02 00:00:00 - 2134 - robin - + + 10000.0 + 2015-10-31 00:00:00 + 1234 + devendra + + + 12321.0 + 2015-12-03 00:00:00 + 2134 + john + + + 23411.0 + 2015-02-02 00:00:00 + 2134 + robin + \ No newline at end of file diff --git a/spring-batch/src/main/resources/spring-batch-intro.xml b/spring-batch/src/main/resources/spring-batch-intro.xml index 2a7c1e7c4a..bb11ea0efd 100644 --- a/spring-batch/src/main/resources/spring-batch-intro.xml +++ b/spring-batch/src/main/resources/spring-batch-intro.xml @@ -17,7 +17,7 @@ + value="username,userid,transactiondate,amount" /> @@ -33,11 +33,11 @@ - + - + com.baeldung.batch.model.Transaction diff --git a/spring-batch/src/main/resources/spring.xml b/spring-batch/src/main/resources/spring.xml index dea261c5e6..fc7e867941 100644 --- a/spring-batch/src/main/resources/spring.xml +++ b/spring-batch/src/main/resources/spring.xml @@ -9,8 +9,8 @@ - - + + @@ -18,8 +18,8 @@ - + location="org/springframework/batch/core/schema-drop-h2.sql" /> + @@ -31,7 +31,6 @@ class="org.springframework.batch.core.repository.support.JobRepositoryFactoryBean"> - { - assertThat(stepExecution.getWriteCount(), is(8)); + assertEquals(8L, stepExecution.getWriteCount()); }); } diff --git a/spring-batch/src/test/java/com/baeldung/batchtesting/SpringBatchStepScopeIntegrationTest.java b/spring-batch/src/test/java/com/baeldung/batchtesting/SpringBatchStepScopeIntegrationTest.java index 4655117b85..311bd828cb 100644 --- a/spring-batch/src/test/java/com/baeldung/batchtesting/SpringBatchStepScopeIntegrationTest.java +++ b/spring-batch/src/test/java/com/baeldung/batchtesting/SpringBatchStepScopeIntegrationTest.java @@ -1,22 +1,21 @@ package com.baeldung.batchtesting; -import static org.hamcrest.Matchers.is; -import static org.junit.Assert.assertThat; +import static org.junit.jupiter.api.Assertions.assertEquals; +import static org.springframework.batch.test.AssertFile.assertFileEquals; -import java.util.Arrays; +import java.util.List; -import com.baeldung.batchtesting.SpringBatchConfiguration; import com.baeldung.batchtesting.model.Book; import com.baeldung.batchtesting.model.BookRecord; -import org.junit.After; -import org.junit.Test; -import org.junit.runner.RunWith; + +import org.junit.jupiter.api.AfterEach; +import org.junit.jupiter.api.Test; import org.springframework.batch.core.JobParameters; import org.springframework.batch.core.JobParametersBuilder; import org.springframework.batch.core.StepExecution; +import org.springframework.batch.item.Chunk; import org.springframework.batch.item.file.FlatFileItemReader; import org.springframework.batch.item.json.JsonFileItemWriter; -import org.springframework.batch.test.AssertFile; import org.springframework.batch.test.JobRepositoryTestUtils; import org.springframework.batch.test.MetaDataInstanceFactory; import org.springframework.batch.test.StepScopeTestUtils; @@ -24,21 +23,12 @@ import org.springframework.batch.test.context.SpringBatchTest; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.boot.autoconfigure.EnableAutoConfiguration; import org.springframework.core.io.FileSystemResource; -import org.springframework.test.annotation.DirtiesContext; -import org.springframework.test.annotation.DirtiesContext.ClassMode; import org.springframework.test.context.ContextConfiguration; -import org.springframework.test.context.TestExecutionListeners; -import org.springframework.test.context.junit4.SpringRunner; -import org.springframework.test.context.support.DependencyInjectionTestExecutionListener; -import org.springframework.test.context.support.DirtiesContextTestExecutionListener; -@RunWith(SpringRunner.class) @SpringBatchTest @EnableAutoConfiguration @ContextConfiguration(classes = { SpringBatchConfiguration.class }) -@TestExecutionListeners({ DependencyInjectionTestExecutionListener.class, DirtiesContextTestExecutionListener.class }) -@DirtiesContext(classMode = ClassMode.AFTER_CLASS) public class SpringBatchStepScopeIntegrationTest { private static final String TEST_OUTPUT = "src/test/resources/output/actual-output.json"; @@ -62,7 +52,7 @@ public class SpringBatchStepScopeIntegrationTest { return paramsBuilder.toJobParameters(); } - @After + @AfterEach public void cleanUp() { jobRepositoryTestUtils.removeJobExecutions(); } @@ -80,11 +70,11 @@ public class SpringBatchStepScopeIntegrationTest { while ((bookRecord = itemReader.read()) != null) { // then - assertThat(bookRecord.getBookName(), is("Foundation")); - assertThat(bookRecord.getBookAuthor(), is("Asimov I.")); - assertThat(bookRecord.getBookISBN(), is("ISBN 12839")); - assertThat(bookRecord.getBookFormat(), is("hardcover")); - assertThat(bookRecord.getPublishingYear(), is("2018")); + assertEquals("Foundation", bookRecord.getBookName()); + assertEquals("Asimov I.", bookRecord.getBookAuthor()); + assertEquals("ISBN 12839", bookRecord.getBookISBN()); + assertEquals("hardcover", bookRecord.getBookFormat()); + assertEquals("2018", bookRecord.getPublishingYear()); } itemReader.close(); return null; @@ -106,12 +96,12 @@ public class SpringBatchStepScopeIntegrationTest { StepScopeTestUtils.doInStepScope(stepExecution, () -> { jsonItemWriter.open(stepExecution.getExecutionContext()); - jsonItemWriter.write(Arrays.asList(demoBook)); + jsonItemWriter.write(new Chunk<>(List.of(demoBook))); jsonItemWriter.close(); return null; }); // then - AssertFile.assertFileEquals(expectedResult, actualResult); + assertFileEquals(expectedResult, actualResult); } } diff --git a/spring-batch/src/test/java/com/baeldung/taskletsvschunks/chunks/ChunksIntegrationTest.java b/spring-batch/src/test/java/com/baeldung/taskletsvschunks/chunks/ChunksIntegrationTest.java index 1132e4d5e2..109342076b 100644 --- a/spring-batch/src/test/java/com/baeldung/taskletsvschunks/chunks/ChunksIntegrationTest.java +++ b/spring-batch/src/test/java/com/baeldung/taskletsvschunks/chunks/ChunksIntegrationTest.java @@ -1,25 +1,29 @@ package com.baeldung.taskletsvschunks.chunks; +import static org.junit.jupiter.api.Assertions.assertEquals; + import com.baeldung.taskletsvschunks.config.ChunksConfig; -import org.junit.Assert; -import org.junit.Test; -import org.junit.runner.RunWith; + +import org.junit.jupiter.api.Test; import org.springframework.batch.core.ExitStatus; import org.springframework.batch.core.JobExecution; import org.springframework.batch.test.JobLauncherTestUtils; +import org.springframework.batch.test.context.SpringBatchTest; import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.boot.autoconfigure.EnableAutoConfiguration; import org.springframework.test.context.ContextConfiguration; -import org.springframework.test.context.junit4.SpringJUnit4ClassRunner; -@RunWith(SpringJUnit4ClassRunner.class) -@ContextConfiguration(classes = ChunksConfig.class) +@SpringBatchTest +@EnableAutoConfiguration +@ContextConfiguration(classes = ChunksConfig.class) public class ChunksIntegrationTest { - @Autowired private JobLauncherTestUtils jobLauncherTestUtils; + @Autowired + private JobLauncherTestUtils jobLauncherTestUtils; @Test public void givenChunksJob_WhenJobEnds_ThenStatusCompleted() throws Exception { JobExecution jobExecution = jobLauncherTestUtils.launchJob(); - Assert.assertEquals(ExitStatus.COMPLETED, jobExecution.getExitStatus()); + assertEquals(ExitStatus.COMPLETED, jobExecution.getExitStatus()); } } \ No newline at end of file diff --git a/spring-batch/src/test/java/com/baeldung/taskletsvschunks/tasklets/TaskletsIntegrationTest.java b/spring-batch/src/test/java/com/baeldung/taskletsvschunks/tasklets/TaskletsIntegrationTest.java index 2e1ad031aa..103b1a2096 100644 --- a/spring-batch/src/test/java/com/baeldung/taskletsvschunks/tasklets/TaskletsIntegrationTest.java +++ b/spring-batch/src/test/java/com/baeldung/taskletsvschunks/tasklets/TaskletsIntegrationTest.java @@ -1,25 +1,29 @@ package com.baeldung.taskletsvschunks.tasklets; +import static org.junit.jupiter.api.Assertions.assertEquals; + import com.baeldung.taskletsvschunks.config.TaskletsConfig; -import org.junit.Assert; -import org.junit.Test; -import org.junit.runner.RunWith; + +import org.junit.jupiter.api.Test; import org.springframework.batch.core.ExitStatus; import org.springframework.batch.core.JobExecution; import org.springframework.batch.test.JobLauncherTestUtils; +import org.springframework.batch.test.context.SpringBatchTest; import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.boot.autoconfigure.EnableAutoConfiguration; import org.springframework.test.context.ContextConfiguration; -import org.springframework.test.context.junit4.SpringJUnit4ClassRunner; -@RunWith(SpringJUnit4ClassRunner.class) +@SpringBatchTest +@EnableAutoConfiguration @ContextConfiguration(classes = TaskletsConfig.class) public class TaskletsIntegrationTest { - @Autowired private JobLauncherTestUtils jobLauncherTestUtils; + @Autowired + private JobLauncherTestUtils jobLauncherTestUtils; @Test public void givenTaskletsJob_WhenJobEnds_ThenStatusCompleted() throws Exception { JobExecution jobExecution = jobLauncherTestUtils.launchJob(); - Assert.assertEquals(ExitStatus.COMPLETED, jobExecution.getExitStatus()); + assertEquals(ExitStatus.COMPLETED, jobExecution.getExitStatus()); } } \ No newline at end of file diff --git a/spring-batch/src/test/java/org/baeldung/conditionalflow/DeciderJobIntegrationTest.java b/spring-batch/src/test/java/org/baeldung/conditionalflow/DeciderJobIntegrationTest.java index e73cb17494..a50ad0455c 100644 --- a/spring-batch/src/test/java/org/baeldung/conditionalflow/DeciderJobIntegrationTest.java +++ b/spring-batch/src/test/java/org/baeldung/conditionalflow/DeciderJobIntegrationTest.java @@ -1,8 +1,10 @@ package org.baeldung.conditionalflow; +import static org.junit.jupiter.api.Assertions.assertEquals; +import static org.junit.jupiter.api.Assertions.assertTrue; + import org.baeldung.conditionalflow.config.NumberInfoConfig; -import org.junit.Test; -import org.junit.runner.RunWith; +import org.junit.jupiter.api.Test; import org.springframework.batch.core.ExitStatus; import org.springframework.batch.core.JobExecution; import org.springframework.batch.core.StepExecution; @@ -10,26 +12,16 @@ import org.springframework.batch.test.JobLauncherTestUtils; import org.springframework.batch.test.context.SpringBatchTest; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.boot.autoconfigure.EnableAutoConfiguration; -import org.springframework.test.annotation.DirtiesContext; import org.springframework.test.context.ContextConfiguration; -import org.springframework.test.context.TestExecutionListeners; -import org.springframework.test.context.junit4.SpringRunner; -import org.springframework.test.context.support.DependencyInjectionTestExecutionListener; -import org.springframework.test.context.support.DirtiesContextTestExecutionListener; import java.util.Collection; import java.util.Iterator; -import static org.junit.Assert.assertEquals; -import static org.junit.Assert.assertTrue; - -@RunWith(SpringRunner.class) @SpringBatchTest @EnableAutoConfiguration @ContextConfiguration(classes = { NumberInfoConfig.class }) -@TestExecutionListeners({ DependencyInjectionTestExecutionListener.class, DirtiesContextTestExecutionListener.class }) -@DirtiesContext(classMode = DirtiesContext.ClassMode.AFTER_CLASS) public class DeciderJobIntegrationTest { + @Autowired private JobLauncherTestUtils jobLauncherTestUtils; @@ -39,8 +31,7 @@ public class DeciderJobIntegrationTest { Collection actualStepExecutions = jobExecution.getStepExecutions(); ExitStatus actualJobExitStatus = jobExecution.getExitStatus(); - assertEquals("COMPLETED", actualJobExitStatus.getExitCode() - .toString()); + assertEquals("COMPLETED", actualJobExitStatus.getExitCode()); assertEquals(2, actualStepExecutions.size()); boolean notifyStepDidRun = false; Iterator iterator = actualStepExecutions.iterator(); diff --git a/spring-batch/src/test/java/org/baeldung/conditionalflow/model/NumberInfoUnitTest.java b/spring-batch/src/test/java/org/baeldung/conditionalflow/model/NumberInfoUnitTest.java index dc396b38da..bdecee5621 100644 --- a/spring-batch/src/test/java/org/baeldung/conditionalflow/model/NumberInfoUnitTest.java +++ b/spring-batch/src/test/java/org/baeldung/conditionalflow/model/NumberInfoUnitTest.java @@ -5,10 +5,10 @@ import static org.junit.jupiter.api.Assertions.assertFalse; import static org.junit.jupiter.api.Assertions.assertTrue; import org.junit.jupiter.api.Test; -import org.junit.runner.RunWith; -import org.springframework.test.context.junit4.SpringJUnit4ClassRunner; +import org.junit.jupiter.api.extension.ExtendWith; +import org.springframework.test.context.junit.jupiter.SpringExtension; -@RunWith(SpringJUnit4ClassRunner.class) +@ExtendWith(SpringExtension.class) class NumberInfoUnitTest { @Test diff --git a/spring-batch/src/test/resources/output/actual-output.json b/spring-batch/src/test/resources/output/actual-output.json index 1fd6cfcf37..32ad8b7ead 100644 --- a/spring-batch/src/test/resources/output/actual-output.json +++ b/spring-batch/src/test/resources/output/actual-output.json @@ -1,3 +1,10 @@ [ - {"author":"Grisham J.","name":"The Firm"} + {"author":"Asimov I.","name":"Foundation"}, + {"author":"Strugatski A.","name":"Roadside Picnic"}, + {"author":"Murakami H.","name":"Norwegian Wood"}, + {"author":"Brown D.","name":"Davinci Code"}, + {"author":"Dick K. P.","name":"Ubik"}, + {"author":"King S.","name":"JFK"}, + {"author":"Sagan C.","name":"Contact"}, + {"author":"Huxley A.","name":"Brave New World"} ] From 9e5fe2d7ac4968551452e80f615f09910d3b2284 Mon Sep 17 00:00:00 2001 From: Bipin kumar Date: Wed, 5 Apr 2023 21:56:04 +0530 Subject: [PATCH 59/85] =?UTF-8?q?Java-14972:=20changes=20made=20for=20addi?= =?UTF-8?q?ng=20new=20example=20using=20field=20annoted=20@=E2=80=A6=20(#1?= =?UTF-8?q?3746)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit * Java-19389: changes made for adding new example using field annoted @jsonValue * Java-14972: Changes made for renaming the test methods and removing commented code * dev-14972 : Changes made for incorporating review comments * dev-14972: changes made for adding GeneralBean class and test cases of jsonValue against the GeneralBean class --- .../jackson/annotation/GeneralBean.java | 26 +++++++++++++++ .../dtos/withEnum/TypeEnumWithValue.java | 23 +++++++++++++ .../annotation/JacksonAnnotationUnitTest.java | 33 +++++++++++++++++++ 3 files changed, 82 insertions(+) create mode 100644 jackson-simple/src/main/java/com/baeldung/jackson/annotation/GeneralBean.java create mode 100644 jackson-simple/src/main/java/com/baeldung/jackson/annotation/dtos/withEnum/TypeEnumWithValue.java diff --git a/jackson-simple/src/main/java/com/baeldung/jackson/annotation/GeneralBean.java b/jackson-simple/src/main/java/com/baeldung/jackson/annotation/GeneralBean.java new file mode 100644 index 0000000000..a8333f54ae --- /dev/null +++ b/jackson-simple/src/main/java/com/baeldung/jackson/annotation/GeneralBean.java @@ -0,0 +1,26 @@ +package com.baeldung.jackson.annotation; + +import com.fasterxml.jackson.annotation.JsonValue; + +public class GeneralBean { + Integer id; + + @JsonValue + String name; + + public GeneralBean() { + } + + public GeneralBean(Integer id, String name) { + this.id = id; + this.name = name; + } + + public Integer getId() { + return id; + } + + public String getName() { + return name; + } +} diff --git a/jackson-simple/src/main/java/com/baeldung/jackson/annotation/dtos/withEnum/TypeEnumWithValue.java b/jackson-simple/src/main/java/com/baeldung/jackson/annotation/dtos/withEnum/TypeEnumWithValue.java new file mode 100644 index 0000000000..2c8718dfd8 --- /dev/null +++ b/jackson-simple/src/main/java/com/baeldung/jackson/annotation/dtos/withEnum/TypeEnumWithValue.java @@ -0,0 +1,23 @@ +package com.baeldung.jackson.annotation.dtos.withEnum; + +import com.fasterxml.jackson.annotation.JsonValue; + +public enum TypeEnumWithValue { + TYPE1(1, "Type A"), TYPE2(2, "Type 2"); + + private Integer id; + + @JsonValue + private String name; + + + TypeEnumWithValue(int id, String name) { + this.id = id; + this.name = name; + } + + //@JsonValue + public String getName() { + return name; + } +} diff --git a/jackson-simple/src/test/java/com/baeldung/jackson/annotation/JacksonAnnotationUnitTest.java b/jackson-simple/src/test/java/com/baeldung/jackson/annotation/JacksonAnnotationUnitTest.java index bbbb79b0a8..9fb982842f 100644 --- a/jackson-simple/src/test/java/com/baeldung/jackson/annotation/JacksonAnnotationUnitTest.java +++ b/jackson-simple/src/test/java/com/baeldung/jackson/annotation/JacksonAnnotationUnitTest.java @@ -20,6 +20,7 @@ import com.baeldung.jackson.annotation.bidirection.UserWithIdentity; import com.baeldung.jackson.annotation.bidirection.UserWithRef; import com.baeldung.jackson.annotation.date.EventWithFormat; import com.baeldung.jackson.annotation.date.EventWithSerializer; +import com.baeldung.jackson.annotation.dtos.withEnum.TypeEnumWithValue; import com.baeldung.jackson.annotation.ignore.MyMixInForIgnoreType; import com.baeldung.jackson.annotation.dtos.withEnum.DistanceEnumWithValue; import com.baeldung.jackson.annotation.exception.UserWithRoot; @@ -95,6 +96,7 @@ public class JacksonAnnotationUnitTest { assertThat(enumAsString, is("1609.34")); } + @Test public void whenSerializingUsingJsonSerialize_thenCorrect() throws JsonProcessingException, ParseException { final SimpleDateFormat df = new SimpleDateFormat("dd-MM-yyyy hh:mm:ss"); @@ -107,6 +109,19 @@ public class JacksonAnnotationUnitTest { assertThat(result, containsString(toParse)); } + @Test + public void whenSerializingUsingJsonValueAnnotatedField_thenCorrect() throws JsonProcessingException { + final String enumValue = new ObjectMapper().writeValueAsString(TypeEnumWithValue.TYPE1); + assertThat(enumValue, is("\"Type A\"")); + } + + @Test + public void whenSerializingUsingJsonValueAnnotatedFieldInPojo_thenCorrect() throws JsonProcessingException { + GeneralBean bean1 = new GeneralBean(1, "Bean 1"); + final String bean1AsString = new ObjectMapper().writeValueAsString(bean1); + assertThat(bean1AsString, is("\"Bean 1\"")); + } + // ========================= Deserializing annotations ============================ @Test @@ -118,6 +133,7 @@ public class JacksonAnnotationUnitTest { assertEquals("My bean", bean.name); } + @Test public void whenDeserializingUsingJsonInject_thenCorrect() throws IOException { final String json = "{\"name\":\"My bean\"}"; @@ -161,6 +177,23 @@ public class JacksonAnnotationUnitTest { assertEquals("20-12-2014 02:30:00", df.format(event.eventDate)); } + @Test + public void whenDeserializingUsingJsonValue_thenCorrect() throws JsonProcessingException { + final String str = "\"Type A\""; + TypeEnumWithValue te = new ObjectMapper().readerFor(TypeEnumWithValue.class) + .readValue(str); + assertThat(te, is(TypeEnumWithValue.TYPE1)); + } + + @Test(expected = Exception.class) + public void whenDeserializingUsingJsonValueAnnotatedFieldInPojo_thenGetException() throws JsonProcessingException { + GeneralBean bean1 = new GeneralBean(1, "Bean 1"); + final String bean1AsString = new ObjectMapper().writeValueAsString(bean1); + GeneralBean bean = new ObjectMapper().readerFor(GeneralBean.class) + .readValue(bean1AsString); + assertThat(bean.getName(), is(bean1.getName())); + } + // ========================= Inclusion annotations ============================ @Test From 9f179d687e3a7e20e94e1193277f45c7a203bfca Mon Sep 17 00:00:00 2001 From: Bipin kumar Date: Wed, 5 Apr 2023 21:58:06 +0530 Subject: [PATCH 60/85] Dev 19389 (#13745) * Java-19389 : commits made for adding two new test cases for UUID use: * Java-19389 : commits made for adding two new test cases for UUID use: * JAVA-19389: Changes made for incorporating review comments --- .../main/java/com/baeldung/entity/Customer.java | 15 +++++++++++++++ .../baeldung/repository/CustomerRepository.java | 2 ++ .../CustomerRepositoryIntegrationTest.java | 16 ++++++++++++++++ 3 files changed, 33 insertions(+) diff --git a/persistence-modules/spring-data-jpa-filtering/src/main/java/com/baeldung/entity/Customer.java b/persistence-modules/spring-data-jpa-filtering/src/main/java/com/baeldung/entity/Customer.java index efcae73853..5af96d7822 100644 --- a/persistence-modules/spring-data-jpa-filtering/src/main/java/com/baeldung/entity/Customer.java +++ b/persistence-modules/spring-data-jpa-filtering/src/main/java/com/baeldung/entity/Customer.java @@ -1,8 +1,11 @@ package com.baeldung.entity; +import org.hibernate.annotations.Type; + import javax.persistence.Entity; import javax.persistence.GeneratedValue; import javax.persistence.Id; +import java.util.UUID; @Entity public class Customer { @@ -13,11 +16,20 @@ public class Customer { private String name; private String email; + @Type(type = "org.hibernate.type.UUIDCharType") + private UUID uuid; + public Customer(String name, String email) { this.name = name; this.email = email; } + public Customer(String name, String email, UUID uuid) { + this.name = name; + this.email = email; + this.uuid = uuid; + } + public String getName() { return name; } @@ -34,4 +46,7 @@ public class Customer { this.email = email; } + public UUID getUuid() { + return this.uuid; + } } diff --git a/persistence-modules/spring-data-jpa-filtering/src/main/java/com/baeldung/repository/CustomerRepository.java b/persistence-modules/spring-data-jpa-filtering/src/main/java/com/baeldung/repository/CustomerRepository.java index 65b22bbd84..5f9710b839 100644 --- a/persistence-modules/spring-data-jpa-filtering/src/main/java/com/baeldung/repository/CustomerRepository.java +++ b/persistence-modules/spring-data-jpa-filtering/src/main/java/com/baeldung/repository/CustomerRepository.java @@ -6,6 +6,7 @@ import org.springframework.data.jpa.repository.Query; import org.springframework.data.repository.query.Param; import java.util.List; +import java.util.UUID; public interface CustomerRepository extends JpaRepository { @@ -16,4 +17,5 @@ public interface CustomerRepository extends JpaRepository { @Query("SELECT c FROM Customer c WHERE (:name is null or c.name = :name) and (:email is null or c.email = :email)") List findCustomerByNameAndEmail(@Param("name") String name, @Param("email") String email); + List findCustomerByUuid(@Param("uuid") UUID uuid); } diff --git a/persistence-modules/spring-data-jpa-filtering/src/test/java/com/baeldung/repository/CustomerRepositoryIntegrationTest.java b/persistence-modules/spring-data-jpa-filtering/src/test/java/com/baeldung/repository/CustomerRepositoryIntegrationTest.java index 5d6457ce30..27208507f1 100644 --- a/persistence-modules/spring-data-jpa-filtering/src/test/java/com/baeldung/repository/CustomerRepositoryIntegrationTest.java +++ b/persistence-modules/spring-data-jpa-filtering/src/test/java/com/baeldung/repository/CustomerRepositoryIntegrationTest.java @@ -12,6 +12,7 @@ import org.springframework.test.context.junit4.SpringRunner; import javax.persistence.EntityManager; import javax.persistence.PersistenceContext; import java.util.List; +import java.util.UUID; import static org.junit.Assert.assertEquals; @@ -30,6 +31,7 @@ public class CustomerRepositoryIntegrationTest { entityManager.persist(new Customer("A", "A@example.com")); entityManager.persist(new Customer("D", null)); entityManager.persist(new Customer("D", "D@example.com")); + entityManager.persist(new Customer("C", null, UUID.fromString("c7c19ff4-8636-4b99-9591-c3327652f191"))); } @Test @@ -57,6 +59,20 @@ public class CustomerRepositoryIntegrationTest { assertEquals(2, customers.size()); } + @Test + public void givenUUIDIsPresent_whenQueryMethod_thenFetchedCorrectly() { + List customers = repository.findCustomerByUuid(UUID.fromString("c7c19ff4-8636-4b99-9591-c3327652f191")); + + assertEquals(1, customers.size()); + } + + @Test + public void givenNullUuid_whenQueryMethod_thenFetchedCorrectly() { + List customers = repository.findCustomerByUuid(null); + + assertEquals(3, customers.size()); + } + @After public void cleanUp() { repository.deleteAll(); From f21cf9951be43eb9faeeed21cdb2bee679dea681 Mon Sep 17 00:00:00 2001 From: Iniubong LA Date: Thu, 6 Apr 2023 01:22:12 +0000 Subject: [PATCH 61/85] arthurshur (#13737) * Creating a deep vs shallow copy of an object in Java * Creating a deep vs shallow copy of an object in Java * Baeldung article converting number bases * Baeldung article converting number bases * edits made to Converting a Number from One Base to Another in Java * added braces to oneliners * added precondition to check input * String[] vs String... * helper vs Utility classes * helper vs utility classes code * helper vs utility classes refactor * utility vs helper class * Helper vs utility * helper vs utility classes * refactor package name * Revert "refactor package name" This reverts commit d9464aa2de272b75ff7efe1c5ffb4de7fd4506e0. * renamed package --- .../helpervsutilityclasses/MyHelperClass.java | 40 +++++++++++++++++++ .../MyUtilityClass.java | 19 +++++++++ .../MyHelperClassUnitTest.java | 20 ++++++++++ .../MyUtilityClassUnitTest.java | 15 +++++++ 4 files changed, 94 insertions(+) create mode 100644 core-java-modules/core-java-8-2/src/main/java/com/baeldung/helpervsutilityclasses/MyHelperClass.java create mode 100644 core-java-modules/core-java-8-2/src/main/java/com/baeldung/helpervsutilityclasses/MyUtilityClass.java create mode 100644 core-java-modules/core-java-8-2/src/test/java/com/baeldung/helpervsutilityclasses/MyHelperClassUnitTest.java create mode 100644 core-java-modules/core-java-8-2/src/test/java/com/baeldung/helpervsutilityclasses/MyUtilityClassUnitTest.java diff --git a/core-java-modules/core-java-8-2/src/main/java/com/baeldung/helpervsutilityclasses/MyHelperClass.java b/core-java-modules/core-java-8-2/src/main/java/com/baeldung/helpervsutilityclasses/MyHelperClass.java new file mode 100644 index 0000000000..40b58bf200 --- /dev/null +++ b/core-java-modules/core-java-8-2/src/main/java/com/baeldung/helpervsutilityclasses/MyHelperClass.java @@ -0,0 +1,40 @@ +package com.baeldung.helpervsutilityclasses; + +class MyHelperClass { + public double discount; + public MyHelperClass(double discount) { + if (discount > 0 && discount < 1) { + this.discount = discount; + } + } + public double discountedPrice(double price) { + return price - (price * discount); + } + + public static int getMaxNumber(int[] numbers) { + if (numbers.length == 0) { + throw new IllegalArgumentException("Ensure array is not empty"); + } + int max = numbers[0]; + for (int i = 1; i < numbers.length; i++) { + if (numbers[i] > max) { + max = numbers[i]; + } + } + return max; + } + + public static int getMinNumber(int[] numbers) { + if (numbers.length == 0) { + throw new IllegalArgumentException("Ensure array is not empty"); + } + int min = numbers[0]; + for (int i = 1; i < numbers.length; i++) { + if (numbers[i] < min) { + min = numbers[i]; + } + } + return min; + } + +} diff --git a/core-java-modules/core-java-8-2/src/main/java/com/baeldung/helpervsutilityclasses/MyUtilityClass.java b/core-java-modules/core-java-8-2/src/main/java/com/baeldung/helpervsutilityclasses/MyUtilityClass.java new file mode 100644 index 0000000000..1f0075995c --- /dev/null +++ b/core-java-modules/core-java-8-2/src/main/java/com/baeldung/helpervsutilityclasses/MyUtilityClass.java @@ -0,0 +1,19 @@ +package com.baeldung.helpervsutilityclasses; + +public final class MyUtilityClass { + + private MyUtilityClass(){} + + public static String returnUpperCase(String stringInput) { + return stringInput.toUpperCase(); + } + + public static String returnLowerCase(String stringInput) { + return stringInput.toLowerCase(); + } + + public static String[] splitStringInput(String stringInput, String delimiter) { + return stringInput.split(delimiter); + } + +} diff --git a/core-java-modules/core-java-8-2/src/test/java/com/baeldung/helpervsutilityclasses/MyHelperClassUnitTest.java b/core-java-modules/core-java-8-2/src/test/java/com/baeldung/helpervsutilityclasses/MyHelperClassUnitTest.java new file mode 100644 index 0000000000..a0c1afea52 --- /dev/null +++ b/core-java-modules/core-java-8-2/src/test/java/com/baeldung/helpervsutilityclasses/MyHelperClassUnitTest.java @@ -0,0 +1,20 @@ +package com.baeldung.helpervsutilityclasses; + +import static org.junit.jupiter.api.Assertions.*; + +import org.junit.jupiter.api.Test; + +class MyHelperClassUnitTest { + + @Test + void whenCreatingHelperObject_thenHelperObjectShouldBeCreated() { + MyHelperClass myHelperClassObject = new MyHelperClass(0.10); + int[] numberArray = {15, 23, 66, 3, 51, 79}; + + assertNotNull(myHelperClassObject); + + assertEquals(90, myHelperClassObject.discountedPrice(100.00)); + assertEquals( 79, MyHelperClass.getMaxNumber(numberArray)); + assertEquals(3, MyHelperClass.getMinNumber(numberArray)); + } +} \ No newline at end of file diff --git a/core-java-modules/core-java-8-2/src/test/java/com/baeldung/helpervsutilityclasses/MyUtilityClassUnitTest.java b/core-java-modules/core-java-8-2/src/test/java/com/baeldung/helpervsutilityclasses/MyUtilityClassUnitTest.java new file mode 100644 index 0000000000..8b29f51959 --- /dev/null +++ b/core-java-modules/core-java-8-2/src/test/java/com/baeldung/helpervsutilityclasses/MyUtilityClassUnitTest.java @@ -0,0 +1,15 @@ +package com.baeldung.helpervsutilityclasses; + +import static org.junit.jupiter.api.Assertions.*; + +import org.junit.jupiter.api.Test; + +class MyUtilityClassUnitTest { + + @Test + void whenUsingUtilityMethods_thenAccessMethodsViaClassName(){ + assertEquals( "INIUBONG", MyUtilityClass.returnUpperCase("iniubong")); + assertEquals("accra", MyUtilityClass.returnLowerCase("AcCrA")); + } + +} \ No newline at end of file From e7ccb7a4c0a19a56219adf81685afa601460170a Mon Sep 17 00:00:00 2001 From: jsgrah-spring Date: Thu, 6 Apr 2023 18:39:24 +0200 Subject: [PATCH 62/85] JAVA-19970, Module gcp-firebase - use dummy keys. (#13742) Co-authored-by: jogra --- .../src/main/resources/firebase-service-account.json | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/gcp-firebase/src/main/resources/firebase-service-account.json b/gcp-firebase/src/main/resources/firebase-service-account.json index ed5afa9f13..cd87ff6bda 100644 --- a/gcp-firebase/src/main/resources/firebase-service-account.json +++ b/gcp-firebase/src/main/resources/firebase-service-account.json @@ -1,10 +1,10 @@ { "type": "service_account", - "project_id": "tutorials-2cdfb", - "private_key_id": "d9f6a684d6814f85ed2d0490585eb7bf590f983a", - "private_key": "-----BEGIN PRIVATE KEY-----\nMIIEvgIBADANBgkqhkiG9w0BAQEFAASCBKgwggSkAgEAAoIBAQDdJWTeGT2eBFo+\nXxzT9xFJYPtyawTAj0K1rVUNlWNUwj3zszK6P2sAsrpI2Rz1klwQ9aDz9i3+Opxv\n7UZ3pOzur6S58JnoswtNs6BZ9P7oeggLJJC6MPjioxwh8jLLIGMgdVtC2/iPYW3r\nGzurWlwkM8M8DyCgNq7KKJcx44pGcyy16ZGCYiijuTEmK6R+WHJTTyICzRFu3Org\nuHGlZUs/G4E76p10HanoFX2AIS/fDEEMP2DXBB73yoCal5GuvMY9yZWxnvV65Y5z\nGveY3NDB9EESbO2AAhDvHekWT17uWhymtO5N3gM8da48J9d51tVzi0D/NIPZnF0u\nTS64uxK3AgMBAAECggEAYuEQa7oPcfLyQscWRbRH1250n2E4e7zSkBcTW4J7Km+7\ncZajTOGEP4iqgF4Lc8XgQnkBYXOmdvDP97+47VAh3EtOtRDeUEyV9kUlonNH8rx1\nkj3kNEwnTHav4oG/slEl4WJ3zro6NinTEvdXQ7OgVVOLrPP6m4g3uQ5TJCxgLEUI\nTd3Hs3cg3P71mzEqfBF4NmGVmC1ea5lXFELd6giJJMvL7g+O2w22/fquGWOrreAM\ncj/G2Xv9/vmzeb9yzbgGxqCJyY6vspmd90fQLUu7bxkEY5/PPc6Zk8qay4AdEn47\nkL6hnJiR8H1wMCzV2RTUKE7ospriNVdBilXgxm9IMQKBgQD1TmF0Bg85zvXmEKBa\nLBhbc3xTtM7DOgKs+pI12sYDKwgL/QKEI/TKkYXua0aVGiQWc2Bk2/0sYhO6aB2f\n6AN1ZUrf4PRM8c53jebChc7beVLSjWI8Tx+kE+0t8864OwvELYZUzP35oSx3RdJD\nE/CvqBM7NQfJwx2Mw2VJK/YRGQKBgQDmyWLm/IWitehkITw6xMQpkkFs2m4Joq3A\nJvAyri58TRkw/7rqWaIxb5Wcy/7BOvjDN8PZNTHh4ZvhQiHpn7NGUks2/ULnWxUB\nWAA9YbeO9PNHJfZ6PjD2FSvwOXHj+vVkWt2GCXT8pDGYM2ImqXon85Oe3OH/h+N5\nktO9taesTwKBgQCSdPGKK/P7N61oZpTWQW1pbFHWSCUKOiBO1mtk6/E9AvwS7EQM\nUMteBfRInJPPgYP6Q3hRv2YwkX3l1TOavRMTjB5f/BbfuZ7jkj0r9mfCcXUZcIAu\nMa9abus0fFP3eolT3zpMdvdLiwbZTz5x/f29YkPZHZhAxdVmrWJThYOsQQKBgBDu\nZVsc25D8V3hBF/IXzWxfVn1t6PS8ApM+SBDvxmlIHrkBiez3dna6APfn32C9utJX\nnP6qcGZp7s2v1F0XYkeecfYuzmG6xOe8VQgryxOp1M87ccG2HlFvbDHLhRd8qdQa\n9nWG7BY81Yac/m5nsJaNwB6/hbUBeybIJtCcKxjxAoGBAJ3y+QSFb4AYmxLFtmMA\nklOvlT+r70w4RV/z4SEO1gjWEh9IozNSXknl5Q/8Zh9IVm3+/qYap//IzEv9JUc3\nv4+HlpZu0trxTpvRWWjPqVr3ssxRdiFLC0LCLEk4rzqWLBVyzJm8uHVIF9Inv8PE\naudInvdbnfAWi60+1Wi8u0Co\n-----END PRIVATE KEY-----\n", - "client_email": "firebase-adminsdk-2afzd@tutorials-2cdfb.iam.gserviceaccount.com", - "client_id": "111111112074248894669", + "project_id": "REPLACE WITH VALID PROJECT ID", + "private_key_id": "REPLACE WITH VALID PRIVATE KEY ID", + "private_key": "REPLACE WITH VALID PRIVATE KEY", + "client_email": "REPLACE WITH VALID CLIENT EMAIL", + "client_id": "REPLACE WITH VALID CLIENT ID", "auth_uri": "https://accounts.google.com/o/oauth2/auth", "token_uri": "https://oauth2.googleapis.com/token", "auth_provider_x509_cert_url": "https://www.googleapis.com/oauth2/v1/certs", From 3051d4ba97c04ebf3e9828c695dac2baa41cd537 Mon Sep 17 00:00:00 2001 From: Tapan Avasthi Date: Fri, 7 Apr 2023 05:23:50 +0530 Subject: [PATCH 63/85] BAEL-6370: Introduce @JsonKey annotation for Map serialization (#13766) Co-authored-by: Tapan Avasthi --- jackson-modules/jackson-conversions/pom.xml | 5 ++ .../java/com/baeldung/jackson/map/Fruit.java | 21 ++++++++ .../map/MapWithJsonKeyValueUnitTest.java | 48 +++++++++++++++++++ 3 files changed, 74 insertions(+) create mode 100644 jackson-modules/jackson-conversions/src/main/java/com/baeldung/jackson/map/Fruit.java create mode 100644 jackson-modules/jackson-conversions/src/test/java/com/baeldung/jackson/map/MapWithJsonKeyValueUnitTest.java diff --git a/jackson-modules/jackson-conversions/pom.xml b/jackson-modules/jackson-conversions/pom.xml index 9218f209ac..9ab1fa9020 100644 --- a/jackson-modules/jackson-conversions/pom.xml +++ b/jackson-modules/jackson-conversions/pom.xml @@ -24,6 +24,11 @@ jackson-datatype-jsr310 ${jackson.version} + + com.fasterxml.jackson.core + jackson-databind + ${jackson.version} + diff --git a/jackson-modules/jackson-conversions/src/main/java/com/baeldung/jackson/map/Fruit.java b/jackson-modules/jackson-conversions/src/main/java/com/baeldung/jackson/map/Fruit.java new file mode 100644 index 0000000000..49e45f2161 --- /dev/null +++ b/jackson-modules/jackson-conversions/src/main/java/com/baeldung/jackson/map/Fruit.java @@ -0,0 +1,21 @@ +package com.baeldung.jackson.map; + +import com.fasterxml.jackson.annotation.JsonKey; +import com.fasterxml.jackson.annotation.JsonValue; + +public class Fruit { + public String variety; + + @JsonKey + public String name; + + public Fruit(String variety, String name) { + this.variety = variety; + this.name = name; + } + + @JsonValue + public String getFullName() { + return this.variety + " " + this.name; + } +} diff --git a/jackson-modules/jackson-conversions/src/test/java/com/baeldung/jackson/map/MapWithJsonKeyValueUnitTest.java b/jackson-modules/jackson-conversions/src/test/java/com/baeldung/jackson/map/MapWithJsonKeyValueUnitTest.java new file mode 100644 index 0000000000..87c425fe96 --- /dev/null +++ b/jackson-modules/jackson-conversions/src/test/java/com/baeldung/jackson/map/MapWithJsonKeyValueUnitTest.java @@ -0,0 +1,48 @@ +package com.baeldung.jackson.map; + +import java.util.HashMap; +import java.util.Map; + +import org.junit.Test; +import org.junit.jupiter.api.Assertions; + +import com.fasterxml.jackson.core.JsonProcessingException; +import com.fasterxml.jackson.databind.ObjectMapper; + +public class MapWithJsonKeyValueUnitTest { + private static final Fruit FRUIT1 = new Fruit("Alphonso", "Mango"); + private static final Fruit FRUIT2 = new Fruit("Black", "Grapes"); + private static final ObjectMapper OBJECT_MAPPER = new ObjectMapper(); + + @Test + public void givenObject_WhenSerialize_ThenUseJsonValueForSerialization() throws JsonProcessingException { + String serializedValueForFruit1 = OBJECT_MAPPER.writeValueAsString(FRUIT1); + Assertions.assertEquals("\"Alphonso Mango\"", serializedValueForFruit1); + String serializedValueForFruit2 = OBJECT_MAPPER.writeValueAsString(FRUIT2); + Assertions.assertEquals("\"Black Grapes\"", serializedValueForFruit2); + } + + @Test + public void givenMapWithObjectKeys_WhenSerialize_ThenUseJsonKeyForSerialization() throws JsonProcessingException { + // Given + Map selectionByFruit = new HashMap<>(); + selectionByFruit.put(FRUIT1, "Hagrid"); + selectionByFruit.put(FRUIT2, "Hercules"); + // When + String serializedValue = OBJECT_MAPPER.writeValueAsString(selectionByFruit); + // Then + Assertions.assertEquals("{\"Mango\":\"Hagrid\",\"Grapes\":\"Hercules\"}", serializedValue); + } + + @Test + public void givenMapWithObjectValues_WhenSerialize_ThenUseJsonValueForSerialization() throws JsonProcessingException { + // Given + Map selectionByPerson = new HashMap<>(); + selectionByPerson.put("Hagrid", FRUIT1); + selectionByPerson.put("Hercules", FRUIT2); + // When + String serializedValue = OBJECT_MAPPER.writeValueAsString(selectionByPerson); + // Then + Assertions.assertEquals("{\"Hagrid\":\"Alphonso Mango\",\"Hercules\":\"Black Grapes\"}", serializedValue); + } +} From 84a3a42fd03936033cf526c78409616a3729fdaa Mon Sep 17 00:00:00 2001 From: timis1 <12120641+timis1@users.noreply.github.com> Date: Fri, 7 Apr 2023 04:53:12 +0300 Subject: [PATCH 64/85] JAVA-18167 Upgrade persistence-modules to JDK 11 (#13714) * JAVA-18167 Upgrade persistence-modules to JDK 11 (activejdbc and core-java-persistence) * JAVA-16167 Update pom.xml to include just the updated modules * JAVA-18167 Added vaadin because it looks that I removed * JAVA-18167 Migration deltaspike * JAVA-18167 Migration hbase module * JAVA-18167 Migration hibernate-mapping-2 * JAVA-18167 Migration hibernate-exceptions * JAVA-18167 Migration hibernate-jpa module * JAVA-18167 Migration hibernate-jpa change the name of User entity * JAVA-18167 Overwriting the version of slf4j and logback for hibernate-jpa * JAVA-18167 Migrate deltaspike back to jdk8 * JAVA-18167 Remove some modules that was added elsewhere * Revert "JAVA-18167 Migration deltaspike" This reverts commit 874b4ba2 * JAVA-18167 Comment failed module (it will be migrated later) --------- Co-authored-by: timis1 --- .gitignore | 1 + persistence-modules/activejdbc/pom.xml | 4 +- .../main/java/com/baeldung/ActiveJDBCApp.java | 4 +- .../core-java-persistence/pom.xml | 17 ++-- .../baeldung/jdbcmetadata/DatabaseConfig.java | 13 +-- .../jdbcmetadata/JdbcMetadataApplication.java | 7 +- .../jdbcrowset/DatabaseConfiguration.java | 4 - .../jdbcrowset/JdbcRowsetApplication.java | 18 ++--- .../jdbcrowset/JdbcRowSetLiveTest.java | 22 +++-- .../baeldung/spring/jdbc/JdbcLiveTest.java | 5 +- .../spring/jdbc/ResultSetLiveTest.java | 3 - persistence-modules/hbase/pom.xml | 2 +- .../baeldung/hbase/HbaseClientExample.java | 8 +- .../hibernate-exceptions/pom.xml | 8 +- .../entitynotfoundexception/Category.java | 2 +- .../entitynotfoundexception/Item.java | 5 +- .../entitynotfoundexception/User.java | 4 +- .../detachedentity/entity/Comment.java | 10 +-- .../exception/detachedentity/entity/Post.java | 8 +- .../lazyinitialization/entity/Role.java | 12 +-- .../lazyinitialization/entity/User.java | 16 ++-- .../persistentobject/entity/Article.java | 10 +-- .../persistentobject/entity/Author.java | 11 ++- .../persistentobject/entity/Book.java | 11 ++- .../transientobject/entity/Address.java | 20 ++--- .../transientobject/entity/Author.java | 17 ++-- .../transientobject/entity/Book.java | 17 ++-- .../transientobject/entity/Department.java | 16 ++-- .../transientobject/entity/Employee.java | 17 ++-- .../transientobject/entity/User.java | 23 +++--- ...ntityNotFoundExceptionIntegrationTest.java | 8 +- .../DetachedEntityUnitTest.java | 7 +- persistence-modules/hibernate-jpa/pom.xml | 12 +-- .../converters/PersonNameConverter.java | 4 +- .../hibernate/entities/Department.java | 2 +- .../hibernate/entities/DeptEmployee.java | 12 +-- .../entitymanager/getreference/Game.java | 4 +- .../entitymanager/getreference/Player.java | 6 +- .../jpabootstrap/application/Application.java | 5 +- .../config/HibernatePersistenceUnitInfo.java | 10 +-- .../config/JpaEntityManagerFactory.java | 6 +- .../hibernate/jpabootstrap/entities/User.java | 10 +-- .../service/EmployeeSearchServiceImpl.java | 14 ++-- .../onetoone/foreignkeybased/Address.java | 14 ++-- .../onetoone/foreignkeybased/User.java | 18 ++--- .../onetoone/jointablebased/Employee.java | 20 ++--- .../onetoone/jointablebased/WorkStation.java | 14 ++-- .../onetoone/sharedkeybased/Address.java | 14 ++-- .../onetoone/sharedkeybased/User.java | 18 ++--- .../OptimisticLockingCourse.java | 2 +- .../OptimisticLockingStudent.java | 2 +- .../hibernate/pessimisticlocking/Address.java | 2 +- .../pessimisticlocking/Customer.java | 2 +- .../pessimisticlocking/Individual.java | 8 +- .../PessimisticLockingCourse.java | 2 +- .../PessimisticLockingEmployee.java | 2 +- .../PessimisticLockingStudent.java | 2 +- .../com/baeldung/hibernate/pojo/Movie.java | 6 +- .../com/baeldung/hibernate/pojo/Person.java | 8 +- .../com/baeldung/hibernate/pojo/Post.java | 8 +- .../com/baeldung/hibernate/pojo/Student.java | 8 +- .../hibernate/serializable/Account.java | 8 +- .../hibernate/serializable/Email.java | 4 +- .../baeldung/hibernate/serializable/User.java | 4 +- .../hibernate/serializable/UserId.java | 2 +- .../persistencecontext/entity/User.java | 6 +- ...ExtendedPersistenceContextUserService.java | 12 +-- ...ansctionPersistenceContextUserService.java | 12 +-- .../main/resources/META-INF/persistence.xml | 81 ++++++++++++------- .../GetReferenceH2IntegrationTest.java | 44 +++++----- .../GetReferenceMySQLManualTest.java | 6 +- .../GetReferencePostgreSQLManualTest.java | 6 +- .../EmployeeSearchServiceIntegrationTest.java | 4 +- .../OptimisticLockingIntegrationTest.java | 6 +- ...asicPessimisticLockingIntegrationTest.java | 6 +- .../PessimisticLockScopesIntegrationTest.java | 12 +-- .../JPASerializableIntegrationTest.java | 11 ++- .../TransactionIntegrationTest.java | 2 - .../PersistenceContextIntegrationTest.java | 4 +- .../hibernate-mapping-2/pom.xml | 24 +----- .../baeldung/manytomany/model/Employee.java | 20 ++--- .../baeldung/manytomany/model/Project.java | 12 +-- persistence-modules/pom.xml | 55 +++++++------ pom.xml | 13 ++- 84 files changed, 441 insertions(+), 478 deletions(-) diff --git a/.gitignore b/.gitignore index d68ab98349..7725bf202e 100644 --- a/.gitignore +++ b/.gitignore @@ -89,6 +89,7 @@ spring-soap/src/main/java/com/baeldung/springsoap/gen/ /report-*.json transaction.log *-shell.log +customers.xml apache-cxf/cxf-aegis/baeldung.xml testing-modules/report-*.json diff --git a/persistence-modules/activejdbc/pom.xml b/persistence-modules/activejdbc/pom.xml index 5fdf27a679..a661fc3abb 100644 --- a/persistence-modules/activejdbc/pom.xml +++ b/persistence-modules/activejdbc/pom.xml @@ -74,9 +74,9 @@ - 2.0 + 3.4-j11 development.test,development - 5.1.34 + 8.0.32 \ No newline at end of file diff --git a/persistence-modules/activejdbc/src/main/java/com/baeldung/ActiveJDBCApp.java b/persistence-modules/activejdbc/src/main/java/com/baeldung/ActiveJDBCApp.java index 8906d3e759..ea600b9721 100644 --- a/persistence-modules/activejdbc/src/main/java/com/baeldung/ActiveJDBCApp.java +++ b/persistence-modules/activejdbc/src/main/java/com/baeldung/ActiveJDBCApp.java @@ -4,6 +4,7 @@ package com.baeldung; import com.baeldung.model.Employee; import com.baeldung.model.Role; import org.javalite.activejdbc.Base; +import org.javalite.activejdbc.DB; import org.javalite.activejdbc.LazyList; import org.javalite.activejdbc.Model; @@ -11,8 +12,7 @@ public class ActiveJDBCApp { public static void main( String[] args ) { - try { - Base.open(); + try(final DB open = Base.open()) { ActiveJDBCApp app = new ActiveJDBCApp(); app.create(); app.update(); diff --git a/persistence-modules/core-java-persistence/pom.xml b/persistence-modules/core-java-persistence/pom.xml index 5cc1df483f..e8add07fbf 100644 --- a/persistence-modules/core-java-persistence/pom.xml +++ b/persistence-modules/core-java-persistence/pom.xml @@ -52,14 +52,21 @@ spring-boot-starter ${springframework.boot.spring-boot-starter.version} + + mysql + mysql-connector-java + ${mysql-connector.version} + runtime + - 2.4.0 - 3.2.0 - 0.9.5.2 - 1.5.8.RELEASE - 4.3.4.RELEASE + 2.9.0 + 5.0.1 + 0.9.5.5 + 3.0.4 + 6.0.6 + 8.0.32 \ No newline at end of file diff --git a/persistence-modules/core-java-persistence/src/main/java/com/baeldung/jdbcmetadata/DatabaseConfig.java b/persistence-modules/core-java-persistence/src/main/java/com/baeldung/jdbcmetadata/DatabaseConfig.java index 8ad689041e..44cfc75a2b 100644 --- a/persistence-modules/core-java-persistence/src/main/java/com/baeldung/jdbcmetadata/DatabaseConfig.java +++ b/persistence-modules/core-java-persistence/src/main/java/com/baeldung/jdbcmetadata/DatabaseConfig.java @@ -1,13 +1,14 @@ package com.baeldung.jdbcmetadata; -import org.apache.log4j.Logger; - import java.sql.Connection; import java.sql.DriverManager; import java.sql.SQLException; +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; + public class DatabaseConfig { - private static final Logger LOG = Logger.getLogger(DatabaseConfig.class); + private static final Logger LOG = LoggerFactory.getLogger(DatabaseConfig.class); private Connection connection; @@ -17,7 +18,7 @@ public class DatabaseConfig { String url = "jdbc:h2:mem:testdb"; connection = DriverManager.getConnection(url, "sa", ""); } catch (ClassNotFoundException | SQLException e) { - LOG.error(e); + LOG.error(e.getMessage()); } } @@ -35,7 +36,7 @@ public class DatabaseConfig { connection.createStatement().executeUpdate("create table CUSTOMER (ID int primary key auto_increment, NAME VARCHAR(45))"); connection.createStatement().executeUpdate("create table CUST_ADDRESS (ID VARCHAR(36), CUST_ID int, ADDRESS VARCHAR(45), FOREIGN KEY (CUST_ID) REFERENCES CUSTOMER(ID))"); } catch (SQLException e) { - LOG.error(e); + LOG.error(e.getMessage()); } } @@ -43,7 +44,7 @@ public class DatabaseConfig { try { connection.createStatement().executeUpdate("CREATE VIEW CUSTOMER_VIEW AS SELECT * FROM CUSTOMER"); } catch (SQLException e) { - LOG.error(e); + LOG.error(e.getMessage()); } } } diff --git a/persistence-modules/core-java-persistence/src/main/java/com/baeldung/jdbcmetadata/JdbcMetadataApplication.java b/persistence-modules/core-java-persistence/src/main/java/com/baeldung/jdbcmetadata/JdbcMetadataApplication.java index 591a14f3b5..f85f227381 100644 --- a/persistence-modules/core-java-persistence/src/main/java/com/baeldung/jdbcmetadata/JdbcMetadataApplication.java +++ b/persistence-modules/core-java-persistence/src/main/java/com/baeldung/jdbcmetadata/JdbcMetadataApplication.java @@ -1,12 +1,13 @@ package com.baeldung.jdbcmetadata; -import org.apache.log4j.Logger; - import java.sql.SQLException; +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; + public class JdbcMetadataApplication { - private static final Logger LOG = Logger.getLogger(JdbcMetadataApplication.class); + private static final Logger LOG = LoggerFactory.getLogger(JdbcMetadataApplication.class); public static void main(String[] args) { DatabaseConfig databaseConfig = new DatabaseConfig(); diff --git a/persistence-modules/core-java-persistence/src/main/java/com/baeldung/jdbcrowset/DatabaseConfiguration.java b/persistence-modules/core-java-persistence/src/main/java/com/baeldung/jdbcrowset/DatabaseConfiguration.java index 9cfcff468e..a53c82d3da 100644 --- a/persistence-modules/core-java-persistence/src/main/java/com/baeldung/jdbcrowset/DatabaseConfiguration.java +++ b/persistence-modules/core-java-persistence/src/main/java/com/baeldung/jdbcrowset/DatabaseConfiguration.java @@ -5,10 +5,6 @@ import java.sql.DriverManager; import java.sql.SQLException; import java.sql.Statement; -import javax.sql.rowset.JdbcRowSet; -import javax.sql.rowset.RowSetFactory; -import javax.sql.rowset.RowSetProvider; - import org.springframework.boot.autoconfigure.EnableAutoConfiguration; import org.springframework.context.annotation.Configuration; diff --git a/persistence-modules/core-java-persistence/src/main/java/com/baeldung/jdbcrowset/JdbcRowsetApplication.java b/persistence-modules/core-java-persistence/src/main/java/com/baeldung/jdbcrowset/JdbcRowsetApplication.java index 72c462ac42..163b3a3b58 100644 --- a/persistence-modules/core-java-persistence/src/main/java/com/baeldung/jdbcrowset/JdbcRowsetApplication.java +++ b/persistence-modules/core-java-persistence/src/main/java/com/baeldung/jdbcrowset/JdbcRowsetApplication.java @@ -7,8 +7,6 @@ import java.sql.ResultSetMetaData; import java.sql.SQLException; import java.sql.Statement; -import com.sun.rowset.*; - import javax.sql.rowset.CachedRowSet; import javax.sql.rowset.FilteredRowSet; import javax.sql.rowset.JdbcRowSet; @@ -25,7 +23,7 @@ public class JdbcRowsetApplication { public static void main(String[] args) throws Exception { SpringApplication.run(JdbcRowsetApplication.class, args); - Statement stmt = null; + Statement stmt; try { Connection conn = DatabaseConfiguration.geth2Connection(); @@ -41,8 +39,7 @@ public class JdbcRowsetApplication { DatabaseConfiguration.initDatabase(stmt); // JdbcRowSet Example String sql = "SELECT * FROM customers"; - JdbcRowSet jdbcRS; - jdbcRS = new JdbcRowSetImpl(conn); + JdbcRowSet jdbcRS = RowSetProvider.newFactory().createJdbcRowSet(); jdbcRS.setType(ResultSet.TYPE_SCROLL_INSENSITIVE); jdbcRS.setCommand(sql); jdbcRS.execute(); @@ -58,7 +55,8 @@ public class JdbcRowsetApplication { String username = "sa"; String password = ""; String url = "jdbc:h2:mem:testdb"; - CachedRowSet crs = new CachedRowSetImpl(); + RowSetFactory aFactory = RowSetProvider.newFactory(); + CachedRowSet crs = aFactory.createCachedRowSet(); crs.setUsername(username); crs.setPassword(password); crs.setUrl(url); @@ -74,7 +72,7 @@ public class JdbcRowsetApplication { } // WebRowSet example - WebRowSet wrs = new WebRowSetImpl(); + WebRowSet wrs = RowSetProvider.newFactory().createWebRowSet(); wrs.setUsername(username); wrs.setPassword(password); wrs.setUrl(url); @@ -84,14 +82,14 @@ public class JdbcRowsetApplication { wrs.writeXml(ostream); // JoinRowSet example - CachedRowSetImpl customers = new CachedRowSetImpl(); + CachedRowSet customers = aFactory.createCachedRowSet(); customers.setUsername(username); customers.setPassword(password); customers.setUrl(url); customers.setCommand(sql); customers.execute(); - CachedRowSetImpl associates = new CachedRowSetImpl(); + CachedRowSet associates = aFactory.createCachedRowSet(); associates.setUsername(username); associates.setPassword(password); associates.setUrl(url); @@ -99,7 +97,7 @@ public class JdbcRowsetApplication { associates.setCommand(associatesSQL); associates.execute(); - JoinRowSet jrs = new JoinRowSetImpl(); + JoinRowSet jrs = RowSetProvider.newFactory().createJoinRowSet(); final String ID = "id"; final String NAME = "name"; jrs.addRowSet(customers, ID); diff --git a/persistence-modules/core-java-persistence/src/test/java/com/baeldung/jdbcrowset/JdbcRowSetLiveTest.java b/persistence-modules/core-java-persistence/src/test/java/com/baeldung/jdbcrowset/JdbcRowSetLiveTest.java index ebfb4df102..2b2b35c423 100644 --- a/persistence-modules/core-java-persistence/src/test/java/com/baeldung/jdbcrowset/JdbcRowSetLiveTest.java +++ b/persistence-modules/core-java-persistence/src/test/java/com/baeldung/jdbcrowset/JdbcRowSetLiveTest.java @@ -19,11 +19,6 @@ import javax.sql.rowset.WebRowSet; import org.junit.Before; import org.junit.Test; -import com.sun.rowset.CachedRowSetImpl; -import com.sun.rowset.JdbcRowSetImpl; -import com.sun.rowset.JoinRowSetImpl; -import com.sun.rowset.WebRowSetImpl; - public class JdbcRowSetLiveTest { Statement stmt = null; String username = "sa"; @@ -51,9 +46,10 @@ public class JdbcRowSetLiveTest { public void createJdbcRowSet_SelectCustomers_ThenCorrect() throws Exception { String sql = "SELECT * FROM customers"; - JdbcRowSet jdbcRS; - Connection conn = DatabaseConfiguration.geth2Connection(); - jdbcRS = new JdbcRowSetImpl(conn); + JdbcRowSet jdbcRS = RowSetProvider.newFactory().createJdbcRowSet(); + jdbcRS.setUrl("jdbc:h2:mem:testdb"); + jdbcRS.setUsername("sa"); + jdbcRS.setPassword(""); jdbcRS.setType(ResultSet.TYPE_SCROLL_INSENSITIVE); jdbcRS.setCommand(sql); jdbcRS.execute(); @@ -71,7 +67,7 @@ public class JdbcRowSetLiveTest { @Test public void createCachedRowSet_DeleteRecord_ThenCorrect() throws Exception { - CachedRowSet crs = new CachedRowSetImpl(); + CachedRowSet crs = RowSetProvider.newFactory().createCachedRowSet(); crs.setUsername(username); crs.setPassword(password); crs.setUrl(url); @@ -91,7 +87,7 @@ public class JdbcRowSetLiveTest { @Test public void createWebRowSet_SelectCustomers_WritetoXML_ThenCorrect() throws SQLException, IOException { - WebRowSet wrs = new WebRowSetImpl(); + WebRowSet wrs = RowSetProvider.newFactory().createWebRowSet(); wrs.setUsername(username); wrs.setPassword(password); wrs.setUrl(url); @@ -105,14 +101,14 @@ public class JdbcRowSetLiveTest { @Test public void createCachedRowSets_DoJoinRowSet_ThenCorrect() throws Exception { - CachedRowSetImpl customers = new CachedRowSetImpl(); + CachedRowSet customers = RowSetProvider.newFactory().createCachedRowSet(); customers.setUsername(username); customers.setPassword(password); customers.setUrl(url); customers.setCommand(sql); customers.execute(); - CachedRowSetImpl associates = new CachedRowSetImpl(); + CachedRowSet associates = RowSetProvider.newFactory().createCachedRowSet(); associates.setUsername(username); associates.setPassword(password); associates.setUrl(url); @@ -120,7 +116,7 @@ public class JdbcRowSetLiveTest { associates.setCommand(associatesSQL); associates.execute(); - JoinRowSet jrs = new JoinRowSetImpl(); + JoinRowSet jrs = RowSetProvider.newFactory().createJoinRowSet(); final String ID = "id"; final String NAME = "name"; jrs.addRowSet(customers, ID); diff --git a/persistence-modules/core-java-persistence/src/test/java/com/baeldung/spring/jdbc/JdbcLiveTest.java b/persistence-modules/core-java-persistence/src/test/java/com/baeldung/spring/jdbc/JdbcLiveTest.java index c13f94f12a..fe00ca28dc 100644 --- a/persistence-modules/core-java-persistence/src/test/java/com/baeldung/spring/jdbc/JdbcLiveTest.java +++ b/persistence-modules/core-java-persistence/src/test/java/com/baeldung/spring/jdbc/JdbcLiveTest.java @@ -1,9 +1,10 @@ package com.baeldung.spring.jdbc; -import org.apache.log4j.Logger; import org.junit.After; import org.junit.Before; import org.junit.Test; +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; import java.sql.CallableStatement; import java.sql.Connection; @@ -24,7 +25,7 @@ import static org.junit.Assert.assertTrue; public class JdbcLiveTest { - private static final Logger LOG = Logger.getLogger(JdbcLiveTest.class); + private static final Logger LOG = LoggerFactory.getLogger(JdbcLiveTest.class); private Connection con; diff --git a/persistence-modules/core-java-persistence/src/test/java/com/baeldung/spring/jdbc/ResultSetLiveTest.java b/persistence-modules/core-java-persistence/src/test/java/com/baeldung/spring/jdbc/ResultSetLiveTest.java index 853e78a68d..c77e314141 100644 --- a/persistence-modules/core-java-persistence/src/test/java/com/baeldung/spring/jdbc/ResultSetLiveTest.java +++ b/persistence-modules/core-java-persistence/src/test/java/com/baeldung/spring/jdbc/ResultSetLiveTest.java @@ -13,7 +13,6 @@ import java.sql.Statement; import java.util.ArrayList; import java.util.List; -import org.apache.log4j.Logger; import org.junit.AfterClass; import org.junit.BeforeClass; import org.junit.FixMethodOrder; @@ -25,8 +24,6 @@ import junit.framework.Assert; @FixMethodOrder(MethodSorters.NAME_ASCENDING) public class ResultSetLiveTest { - private static final Logger logger = Logger.getLogger(ResultSetLiveTest.class); - private final Employee expectedEmployee1 = new Employee(1, "John", 1000.0, "Developer"); private final Employee updatedEmployee1 = new Employee(1, "John", 1100.0, "Developer"); diff --git a/persistence-modules/hbase/pom.xml b/persistence-modules/hbase/pom.xml index e38b73e137..3e6cfe27be 100644 --- a/persistence-modules/hbase/pom.xml +++ b/persistence-modules/hbase/pom.xml @@ -33,7 +33,7 @@ - 1.3.1 + 2.5.3 \ No newline at end of file diff --git a/persistence-modules/hbase/src/main/java/com/baeldung/hbase/HbaseClientExample.java b/persistence-modules/hbase/src/main/java/com/baeldung/hbase/HbaseClientExample.java index 5546f15e36..3a137a6019 100644 --- a/persistence-modules/hbase/src/main/java/com/baeldung/hbase/HbaseClientExample.java +++ b/persistence-modules/hbase/src/main/java/com/baeldung/hbase/HbaseClientExample.java @@ -1,7 +1,5 @@ package com.baeldung.hbase; - -import com.google.protobuf.ServiceException; import org.apache.hadoop.conf.Configuration; import org.apache.hadoop.fs.Path; import org.apache.hadoop.hbase.HBaseConfiguration; @@ -13,11 +11,11 @@ import java.io.IOException; //install hbase locally & hbase master start public class HbaseClientExample { - public static void main(String[] args) throws IOException, ServiceException { + public static void main(String[] args) throws IOException { new HbaseClientExample().connect(); } - private void connect() throws IOException, ServiceException { + private void connect() throws IOException { Configuration config = HBaseConfiguration.create(); String path = this.getClass().getClassLoader().getResource("hbase-site.xml").getPath(); @@ -25,7 +23,7 @@ public class HbaseClientExample { config.addResource(new Path(path)); try { - HBaseAdmin.checkHBaseAvailable(config); + HBaseAdmin.available(config); } catch (MasterNotRunningException e) { System.out.println("HBase is not running." + e.getMessage()); return; diff --git a/persistence-modules/hibernate-exceptions/pom.xml b/persistence-modules/hibernate-exceptions/pom.xml index 4bef688715..670ff4cdb8 100644 --- a/persistence-modules/hibernate-exceptions/pom.xml +++ b/persistence-modules/hibernate-exceptions/pom.xml @@ -24,11 +24,6 @@ hibernate-core ${hibernate.version} - - javax.xml.bind - jaxb-api - ${jaxb.version} - com.h2database h2 @@ -37,8 +32,7 @@ - 2.4.0 - 2.3.0 + 2.7.1 2.1.214 diff --git a/persistence-modules/hibernate-exceptions/src/main/java/com/baeldung/hibernate/entitynotfoundexception/Category.java b/persistence-modules/hibernate-exceptions/src/main/java/com/baeldung/hibernate/entitynotfoundexception/Category.java index 25d31d50c7..cab06ae9cf 100644 --- a/persistence-modules/hibernate-exceptions/src/main/java/com/baeldung/hibernate/entitynotfoundexception/Category.java +++ b/persistence-modules/hibernate-exceptions/src/main/java/com/baeldung/hibernate/entitynotfoundexception/Category.java @@ -1,6 +1,6 @@ package com.baeldung.hibernate.entitynotfoundexception; -import javax.persistence.*; +import jakarta.persistence.*; import java.io.Serializable; import java.util.ArrayList; import java.util.List; diff --git a/persistence-modules/hibernate-exceptions/src/main/java/com/baeldung/hibernate/entitynotfoundexception/Item.java b/persistence-modules/hibernate-exceptions/src/main/java/com/baeldung/hibernate/entitynotfoundexception/Item.java index 3abed00eb8..2d07178aaf 100644 --- a/persistence-modules/hibernate-exceptions/src/main/java/com/baeldung/hibernate/entitynotfoundexception/Item.java +++ b/persistence-modules/hibernate-exceptions/src/main/java/com/baeldung/hibernate/entitynotfoundexception/Item.java @@ -1,9 +1,6 @@ package com.baeldung.hibernate.entitynotfoundexception; -import org.hibernate.annotations.NotFound; -import org.hibernate.annotations.NotFoundAction; - -import javax.persistence.*; +import jakarta.persistence.*; import java.io.Serializable; @Entity diff --git a/persistence-modules/hibernate-exceptions/src/main/java/com/baeldung/hibernate/entitynotfoundexception/User.java b/persistence-modules/hibernate-exceptions/src/main/java/com/baeldung/hibernate/entitynotfoundexception/User.java index d89047195c..8351c5df96 100644 --- a/persistence-modules/hibernate-exceptions/src/main/java/com/baeldung/hibernate/entitynotfoundexception/User.java +++ b/persistence-modules/hibernate-exceptions/src/main/java/com/baeldung/hibernate/entitynotfoundexception/User.java @@ -1,7 +1,7 @@ package com.baeldung.hibernate.entitynotfoundexception; -import javax.persistence.Entity; -import javax.persistence.Id; +import jakarta.persistence.Entity; +import jakarta.persistence.Id; @Entity public class User { 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 index 4a3e9739e2..e73adfef6b 100644 --- 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 @@ -1,10 +1,10 @@ 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; +import jakarta.persistence.Entity; +import jakarta.persistence.GeneratedValue; +import jakarta.persistence.GenerationType; +import jakarta.persistence.Id; +import jakarta.persistence.ManyToOne; @Entity public class Comment { 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 index 7d95b41948..155a1bfe69 100644 --- 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 @@ -1,9 +1,9 @@ package com.baeldung.hibernate.exception.detachedentity.entity; -import javax.persistence.Entity; -import javax.persistence.GeneratedValue; -import javax.persistence.GenerationType; -import javax.persistence.Id; +import jakarta.persistence.Entity; +import jakarta.persistence.GeneratedValue; +import jakarta.persistence.GenerationType; +import jakarta.persistence.Id; @Entity public class Post { diff --git a/persistence-modules/hibernate-exceptions/src/main/java/com/baeldung/hibernate/exception/lazyinitialization/entity/Role.java b/persistence-modules/hibernate-exceptions/src/main/java/com/baeldung/hibernate/exception/lazyinitialization/entity/Role.java index c15e674c52..5e613004a3 100644 --- a/persistence-modules/hibernate-exceptions/src/main/java/com/baeldung/hibernate/exception/lazyinitialization/entity/Role.java +++ b/persistence-modules/hibernate-exceptions/src/main/java/com/baeldung/hibernate/exception/lazyinitialization/entity/Role.java @@ -1,11 +1,11 @@ package com.baeldung.hibernate.exception.lazyinitialization.entity; -import javax.persistence.Column; -import javax.persistence.Entity; -import javax.persistence.GeneratedValue; -import javax.persistence.GenerationType; -import javax.persistence.Id; -import javax.persistence.Table; +import jakarta.persistence.Column; +import jakarta.persistence.Entity; +import jakarta.persistence.GeneratedValue; +import jakarta.persistence.GenerationType; +import jakarta.persistence.Id; +import jakarta.persistence.Table; @Entity @Table(name = "role") diff --git a/persistence-modules/hibernate-exceptions/src/main/java/com/baeldung/hibernate/exception/lazyinitialization/entity/User.java b/persistence-modules/hibernate-exceptions/src/main/java/com/baeldung/hibernate/exception/lazyinitialization/entity/User.java index 5bd7e00801..ffae05c0a0 100644 --- a/persistence-modules/hibernate-exceptions/src/main/java/com/baeldung/hibernate/exception/lazyinitialization/entity/User.java +++ b/persistence-modules/hibernate-exceptions/src/main/java/com/baeldung/hibernate/exception/lazyinitialization/entity/User.java @@ -3,14 +3,14 @@ package com.baeldung.hibernate.exception.lazyinitialization.entity; import java.util.HashSet; import java.util.Set; -import javax.persistence.Column; -import javax.persistence.Entity; -import javax.persistence.GeneratedValue; -import javax.persistence.GenerationType; -import javax.persistence.Id; -import javax.persistence.JoinColumn; -import javax.persistence.OneToMany; -import javax.persistence.Table; +import jakarta.persistence.Column; +import jakarta.persistence.Entity; +import jakarta.persistence.GeneratedValue; +import jakarta.persistence.GenerationType; +import jakarta.persistence.Id; +import jakarta.persistence.JoinColumn; +import jakarta.persistence.OneToMany; +import jakarta.persistence.Table; @Entity @Table(name = "user") diff --git a/persistence-modules/hibernate-exceptions/src/main/java/com/baeldung/hibernate/exception/persistentobject/entity/Article.java b/persistence-modules/hibernate-exceptions/src/main/java/com/baeldung/hibernate/exception/persistentobject/entity/Article.java index 3c9c7c5b31..eb697334ae 100644 --- a/persistence-modules/hibernate-exceptions/src/main/java/com/baeldung/hibernate/exception/persistentobject/entity/Article.java +++ b/persistence-modules/hibernate-exceptions/src/main/java/com/baeldung/hibernate/exception/persistentobject/entity/Article.java @@ -1,10 +1,10 @@ package com.baeldung.hibernate.exception.persistentobject.entity; -import javax.persistence.Entity; -import javax.persistence.GeneratedValue; -import javax.persistence.GenerationType; -import javax.persistence.Id; -import javax.persistence.ManyToOne; +import jakarta.persistence.Entity; +import jakarta.persistence.GeneratedValue; +import jakarta.persistence.GenerationType; +import jakarta.persistence.Id; +import jakarta.persistence.ManyToOne; @Entity public class Article { diff --git a/persistence-modules/hibernate-exceptions/src/main/java/com/baeldung/hibernate/exception/persistentobject/entity/Author.java b/persistence-modules/hibernate-exceptions/src/main/java/com/baeldung/hibernate/exception/persistentobject/entity/Author.java index fa6aaa9abe..f8dcb82b7e 100644 --- a/persistence-modules/hibernate-exceptions/src/main/java/com/baeldung/hibernate/exception/persistentobject/entity/Author.java +++ b/persistence-modules/hibernate-exceptions/src/main/java/com/baeldung/hibernate/exception/persistentobject/entity/Author.java @@ -2,12 +2,11 @@ package com.baeldung.hibernate.exception.persistentobject.entity; import java.util.List; -import javax.persistence.Entity; -import javax.persistence.GeneratedValue; -import javax.persistence.GenerationType; -import javax.persistence.Id; -import javax.persistence.OneToMany; -import javax.persistence.OneToOne; +import jakarta.persistence.Entity; +import jakarta.persistence.GeneratedValue; +import jakarta.persistence.GenerationType; +import jakarta.persistence.Id; +import jakarta.persistence.OneToMany; import org.hibernate.annotations.Cascade; import org.hibernate.annotations.CascadeType; diff --git a/persistence-modules/hibernate-exceptions/src/main/java/com/baeldung/hibernate/exception/persistentobject/entity/Book.java b/persistence-modules/hibernate-exceptions/src/main/java/com/baeldung/hibernate/exception/persistentobject/entity/Book.java index 342da27c77..986c7f061f 100644 --- a/persistence-modules/hibernate-exceptions/src/main/java/com/baeldung/hibernate/exception/persistentobject/entity/Book.java +++ b/persistence-modules/hibernate-exceptions/src/main/java/com/baeldung/hibernate/exception/persistentobject/entity/Book.java @@ -1,11 +1,10 @@ package com.baeldung.hibernate.exception.persistentobject.entity; -import javax.persistence.Column; -import javax.persistence.Entity; -import javax.persistence.GeneratedValue; -import javax.persistence.GenerationType; -import javax.persistence.Id; -import javax.persistence.JoinColumn; +import jakarta.persistence.Column; +import jakarta.persistence.Entity; +import jakarta.persistence.GeneratedValue; +import jakarta.persistence.GenerationType; +import jakarta.persistence.Id; @Entity public class Book { diff --git a/persistence-modules/hibernate-exceptions/src/main/java/com/baeldung/hibernate/exception/transientobject/entity/Address.java b/persistence-modules/hibernate-exceptions/src/main/java/com/baeldung/hibernate/exception/transientobject/entity/Address.java index e450fc3c18..8d1208e036 100644 --- a/persistence-modules/hibernate-exceptions/src/main/java/com/baeldung/hibernate/exception/transientobject/entity/Address.java +++ b/persistence-modules/hibernate-exceptions/src/main/java/com/baeldung/hibernate/exception/transientobject/entity/Address.java @@ -1,18 +1,12 @@ package com.baeldung.hibernate.exception.transientobject.entity; -import java.io.Serializable; -import java.util.HashSet; -import java.util.Set; - -import javax.persistence.Column; -import javax.persistence.Entity; -import javax.persistence.GeneratedValue; -import javax.persistence.GenerationType; -import javax.persistence.Id; -import javax.persistence.JoinColumn; -import javax.persistence.OneToMany; -import javax.persistence.OneToOne; -import javax.persistence.Table; +import jakarta.persistence.Column; +import jakarta.persistence.Entity; +import jakarta.persistence.GeneratedValue; +import jakarta.persistence.GenerationType; +import jakarta.persistence.Id; +import jakarta.persistence.OneToOne; +import jakarta.persistence.Table; @Entity @Table(name = "address") diff --git a/persistence-modules/hibernate-exceptions/src/main/java/com/baeldung/hibernate/exception/transientobject/entity/Author.java b/persistence-modules/hibernate-exceptions/src/main/java/com/baeldung/hibernate/exception/transientobject/entity/Author.java index f1a88daa36..271e810002 100644 --- a/persistence-modules/hibernate-exceptions/src/main/java/com/baeldung/hibernate/exception/transientobject/entity/Author.java +++ b/persistence-modules/hibernate-exceptions/src/main/java/com/baeldung/hibernate/exception/transientobject/entity/Author.java @@ -3,15 +3,14 @@ package com.baeldung.hibernate.exception.transientobject.entity; import org.hibernate.annotations.Cascade; import org.hibernate.annotations.CascadeType; -import javax.persistence.Column; -import javax.persistence.Entity; -import javax.persistence.GeneratedValue; -import javax.persistence.GenerationType; -import javax.persistence.Id; -import javax.persistence.JoinColumn; -import javax.persistence.ManyToMany; -import javax.persistence.ManyToOne; -import javax.persistence.Table; +import jakarta.persistence.Column; +import jakarta.persistence.Entity; +import jakarta.persistence.GeneratedValue; +import jakarta.persistence.GenerationType; +import jakarta.persistence.Id; +import jakarta.persistence.JoinColumn; +import jakarta.persistence.ManyToMany; +import jakarta.persistence.Table; import java.util.HashSet; import java.util.Set; diff --git a/persistence-modules/hibernate-exceptions/src/main/java/com/baeldung/hibernate/exception/transientobject/entity/Book.java b/persistence-modules/hibernate-exceptions/src/main/java/com/baeldung/hibernate/exception/transientobject/entity/Book.java index 91728430ea..0734cccff1 100644 --- a/persistence-modules/hibernate-exceptions/src/main/java/com/baeldung/hibernate/exception/transientobject/entity/Book.java +++ b/persistence-modules/hibernate-exceptions/src/main/java/com/baeldung/hibernate/exception/transientobject/entity/Book.java @@ -4,15 +4,14 @@ package com.baeldung.hibernate.exception.transientobject.entity; import org.hibernate.annotations.Cascade; import org.hibernate.annotations.CascadeType; -import javax.persistence.Column; -import javax.persistence.Entity; -import javax.persistence.GeneratedValue; -import javax.persistence.GenerationType; -import javax.persistence.Id; -import javax.persistence.JoinColumn; -import javax.persistence.ManyToMany; -import javax.persistence.OneToMany; -import javax.persistence.Table; +import jakarta.persistence.Column; +import jakarta.persistence.Entity; +import jakarta.persistence.GeneratedValue; +import jakarta.persistence.GenerationType; +import jakarta.persistence.Id; +import jakarta.persistence.JoinColumn; +import jakarta.persistence.ManyToMany; +import jakarta.persistence.Table; import java.util.HashSet; import java.util.Set; diff --git a/persistence-modules/hibernate-exceptions/src/main/java/com/baeldung/hibernate/exception/transientobject/entity/Department.java b/persistence-modules/hibernate-exceptions/src/main/java/com/baeldung/hibernate/exception/transientobject/entity/Department.java index 4b8fa69964..5bd9a109ab 100644 --- a/persistence-modules/hibernate-exceptions/src/main/java/com/baeldung/hibernate/exception/transientobject/entity/Department.java +++ b/persistence-modules/hibernate-exceptions/src/main/java/com/baeldung/hibernate/exception/transientobject/entity/Department.java @@ -1,13 +1,13 @@ package com.baeldung.hibernate.exception.transientobject.entity; -import javax.persistence.CascadeType; -import javax.persistence.Column; -import javax.persistence.Entity; -import javax.persistence.GeneratedValue; -import javax.persistence.GenerationType; -import javax.persistence.Id; -import javax.persistence.OneToMany; -import javax.persistence.Table; +import jakarta.persistence.CascadeType; +import jakarta.persistence.Column; +import jakarta.persistence.Entity; +import jakarta.persistence.GeneratedValue; +import jakarta.persistence.GenerationType; +import jakarta.persistence.Id; +import jakarta.persistence.OneToMany; +import jakarta.persistence.Table; import java.util.HashSet; import java.util.Set; diff --git a/persistence-modules/hibernate-exceptions/src/main/java/com/baeldung/hibernate/exception/transientobject/entity/Employee.java b/persistence-modules/hibernate-exceptions/src/main/java/com/baeldung/hibernate/exception/transientobject/entity/Employee.java index 56443cce70..6a2ec8b938 100644 --- a/persistence-modules/hibernate-exceptions/src/main/java/com/baeldung/hibernate/exception/transientobject/entity/Employee.java +++ b/persistence-modules/hibernate-exceptions/src/main/java/com/baeldung/hibernate/exception/transientobject/entity/Employee.java @@ -4,15 +4,14 @@ package com.baeldung.hibernate.exception.transientobject.entity; import org.hibernate.annotations.Cascade; import org.hibernate.annotations.CascadeType; -import javax.persistence.Column; -import javax.persistence.Entity; -import javax.persistence.FetchType; -import javax.persistence.GeneratedValue; -import javax.persistence.GenerationType; -import javax.persistence.Id; -import javax.persistence.JoinColumn; -import javax.persistence.ManyToOne; -import javax.persistence.Table; +import jakarta.persistence.Column; +import jakarta.persistence.Entity; +import jakarta.persistence.GeneratedValue; +import jakarta.persistence.GenerationType; +import jakarta.persistence.Id; +import jakarta.persistence.JoinColumn; +import jakarta.persistence.ManyToOne; +import jakarta.persistence.Table; @Entity @Table(name = "employee") diff --git a/persistence-modules/hibernate-exceptions/src/main/java/com/baeldung/hibernate/exception/transientobject/entity/User.java b/persistence-modules/hibernate-exceptions/src/main/java/com/baeldung/hibernate/exception/transientobject/entity/User.java index eff1a88b51..cf56afd8b9 100644 --- a/persistence-modules/hibernate-exceptions/src/main/java/com/baeldung/hibernate/exception/transientobject/entity/User.java +++ b/persistence-modules/hibernate-exceptions/src/main/java/com/baeldung/hibernate/exception/transientobject/entity/User.java @@ -1,19 +1,14 @@ package com.baeldung.hibernate.exception.transientobject.entity; -import java.io.Serializable; -import java.util.HashSet; -import java.util.Set; - -import javax.persistence.CascadeType; -import javax.persistence.Column; -import javax.persistence.Entity; -import javax.persistence.GeneratedValue; -import javax.persistence.GenerationType; -import javax.persistence.Id; -import javax.persistence.JoinColumn; -import javax.persistence.OneToMany; -import javax.persistence.OneToOne; -import javax.persistence.Table; +import jakarta.persistence.CascadeType; +import jakarta.persistence.Column; +import jakarta.persistence.Entity; +import jakarta.persistence.GeneratedValue; +import jakarta.persistence.GenerationType; +import jakarta.persistence.Id; +import jakarta.persistence.JoinColumn; +import jakarta.persistence.OneToOne; +import jakarta.persistence.Table; @Entity @Table(name = "user") diff --git a/persistence-modules/hibernate-exceptions/src/test/java/com/baeldung/hibernate/entitynotfoundexception/EntityNotFoundExceptionIntegrationTest.java b/persistence-modules/hibernate-exceptions/src/test/java/com/baeldung/hibernate/entitynotfoundexception/EntityNotFoundExceptionIntegrationTest.java index bcb4e3eb95..f339afd536 100644 --- a/persistence-modules/hibernate-exceptions/src/test/java/com/baeldung/hibernate/entitynotfoundexception/EntityNotFoundExceptionIntegrationTest.java +++ b/persistence-modules/hibernate-exceptions/src/test/java/com/baeldung/hibernate/entitynotfoundexception/EntityNotFoundExceptionIntegrationTest.java @@ -4,10 +4,10 @@ import org.junit.After; import org.junit.Before; import org.junit.Test; -import javax.persistence.EntityManager; -import javax.persistence.EntityManagerFactory; -import javax.persistence.EntityNotFoundException; -import javax.persistence.Persistence; +import jakarta.persistence.EntityManager; +import jakarta.persistence.EntityManagerFactory; +import jakarta.persistence.EntityNotFoundException; +import jakarta.persistence.Persistence; import java.io.IOException; public class EntityNotFoundExceptionIntegrationTest { 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 index afb0efae77..c10b319319 100644 --- 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 @@ -3,13 +3,12 @@ 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 jakarta.persistence.PersistenceException; import java.util.List; @@ -43,7 +42,7 @@ public class DetachedEntityUnitTest { assertThatThrownBy(() -> session.persist(detachedPost)) .isInstanceOf(PersistenceException.class) - .hasMessageContaining("org.hibernate.PersistentObjectException: detached entity passed to persist"); + .hasMessageContaining("`org.hibernate.PersistentObjectException` to JPA `PersistenceException` : detached entity passed to persist"); } @Test @@ -72,7 +71,7 @@ public class DetachedEntityUnitTest { assertThatThrownBy(() -> session.persist(detachedPost)) .isInstanceOf(PersistenceException.class) - .hasMessageContaining("org.hibernate.PersistentObjectException: detached entity passed to persist"); + .hasMessageContaining("`org.hibernate.PersistentObjectException` to JPA `PersistenceException` : detached entity passed to persist"); } @Test diff --git a/persistence-modules/hibernate-jpa/pom.xml b/persistence-modules/hibernate-jpa/pom.xml index f742290884..086e487eb9 100644 --- a/persistence-modules/hibernate-jpa/pom.xml +++ b/persistence-modules/hibernate-jpa/pom.xml @@ -83,11 +83,13 @@ - 5.3.7.Final - 8.0.13 - 2.2.3 - 2.1.7.RELEASE - 1.4.200 + 6.1.7.Final + 8.0.32 + 2.6.0 + 3.0.4 + 2.1.214 + 2.0.7 + 1.4.6 \ No newline at end of file diff --git a/persistence-modules/hibernate-jpa/src/main/java/com/baeldung/hibernate/converters/PersonNameConverter.java b/persistence-modules/hibernate-jpa/src/main/java/com/baeldung/hibernate/converters/PersonNameConverter.java index 506e674984..ec0e2f2e2c 100644 --- a/persistence-modules/hibernate-jpa/src/main/java/com/baeldung/hibernate/converters/PersonNameConverter.java +++ b/persistence-modules/hibernate-jpa/src/main/java/com/baeldung/hibernate/converters/PersonNameConverter.java @@ -1,7 +1,7 @@ package com.baeldung.hibernate.converters; -import javax.persistence.AttributeConverter; -import javax.persistence.Converter; +import jakarta.persistence.AttributeConverter; +import jakarta.persistence.Converter; import com.baeldung.hibernate.pojo.PersonName; diff --git a/persistence-modules/hibernate-jpa/src/main/java/com/baeldung/hibernate/entities/Department.java b/persistence-modules/hibernate-jpa/src/main/java/com/baeldung/hibernate/entities/Department.java index ff94f4f849..39e69a2b1c 100644 --- a/persistence-modules/hibernate-jpa/src/main/java/com/baeldung/hibernate/entities/Department.java +++ b/persistence-modules/hibernate-jpa/src/main/java/com/baeldung/hibernate/entities/Department.java @@ -2,7 +2,7 @@ package com.baeldung.hibernate.entities; import java.util.List; -import javax.persistence.*; +import jakarta.persistence.*; @Entity public class Department { diff --git a/persistence-modules/hibernate-jpa/src/main/java/com/baeldung/hibernate/entities/DeptEmployee.java b/persistence-modules/hibernate-jpa/src/main/java/com/baeldung/hibernate/entities/DeptEmployee.java index 6510e70650..38519644c5 100644 --- a/persistence-modules/hibernate-jpa/src/main/java/com/baeldung/hibernate/entities/DeptEmployee.java +++ b/persistence-modules/hibernate-jpa/src/main/java/com/baeldung/hibernate/entities/DeptEmployee.java @@ -1,13 +1,13 @@ package com.baeldung.hibernate.entities; -import javax.persistence.Entity; -import javax.persistence.GeneratedValue; -import javax.persistence.GenerationType; -import javax.persistence.Id; -import javax.persistence.ManyToOne; +import jakarta.persistence.Entity; +import jakarta.persistence.GeneratedValue; +import jakarta.persistence.GenerationType; +import jakarta.persistence.Id; +import jakarta.persistence.ManyToOne; @org.hibernate.annotations.NamedQueries({ @org.hibernate.annotations.NamedQuery(name = "DeptEmployee_FindByEmployeeNumber", query = "from DeptEmployee where employeeNumber = :employeeNo"), - @org.hibernate.annotations.NamedQuery(name = "DeptEmployee_FindAllByDesgination", query = "from DeptEmployee where designation = :designation"), + @org.hibernate.annotations.NamedQuery(name = "DeptEmployee_FindAllByDesgination", query = "from DeptEmployee where employeeNumber = :employeeNumber"), @org.hibernate.annotations.NamedQuery(name = "DeptEmployee_UpdateEmployeeDepartment", query = "Update DeptEmployee set department = :newDepartment where employeeNumber = :employeeNo"), @org.hibernate.annotations.NamedQuery(name = "DeptEmployee_FindAllByDepartment", query = "from DeptEmployee where department = :department", timeout = 1, fetchSize = 10) }) @org.hibernate.annotations.NamedNativeQueries({ @org.hibernate.annotations.NamedNativeQuery(name = "DeptEmployee_FindByEmployeeName", query = "select * from deptemployee emp where name=:name", resultClass = DeptEmployee.class), diff --git a/persistence-modules/hibernate-jpa/src/main/java/com/baeldung/hibernate/entitymanager/getreference/Game.java b/persistence-modules/hibernate-jpa/src/main/java/com/baeldung/hibernate/entitymanager/getreference/Game.java index 1de8de0327..5a6f9c7c6c 100644 --- a/persistence-modules/hibernate-jpa/src/main/java/com/baeldung/hibernate/entitymanager/getreference/Game.java +++ b/persistence-modules/hibernate-jpa/src/main/java/com/baeldung/hibernate/entitymanager/getreference/Game.java @@ -1,7 +1,7 @@ package com.baeldung.hibernate.entitymanager.getreference; -import javax.persistence.Entity; -import javax.persistence.Id; +import jakarta.persistence.Entity; +import jakarta.persistence.Id; @Entity public class Game { diff --git a/persistence-modules/hibernate-jpa/src/main/java/com/baeldung/hibernate/entitymanager/getreference/Player.java b/persistence-modules/hibernate-jpa/src/main/java/com/baeldung/hibernate/entitymanager/getreference/Player.java index 459a3a00ad..6e62aeda45 100644 --- a/persistence-modules/hibernate-jpa/src/main/java/com/baeldung/hibernate/entitymanager/getreference/Player.java +++ b/persistence-modules/hibernate-jpa/src/main/java/com/baeldung/hibernate/entitymanager/getreference/Player.java @@ -1,8 +1,8 @@ package com.baeldung.hibernate.entitymanager.getreference; -import javax.persistence.Entity; -import javax.persistence.Id; -import javax.persistence.ManyToOne; +import jakarta.persistence.Entity; +import jakarta.persistence.Id; +import jakarta.persistence.ManyToOne; @Entity public class Player { diff --git a/persistence-modules/hibernate-jpa/src/main/java/com/baeldung/hibernate/jpabootstrap/application/Application.java b/persistence-modules/hibernate-jpa/src/main/java/com/baeldung/hibernate/jpabootstrap/application/Application.java index b547a60b06..6263df4237 100644 --- a/persistence-modules/hibernate-jpa/src/main/java/com/baeldung/hibernate/jpabootstrap/application/Application.java +++ b/persistence-modules/hibernate-jpa/src/main/java/com/baeldung/hibernate/jpabootstrap/application/Application.java @@ -2,7 +2,7 @@ package com.baeldung.hibernate.jpabootstrap.application; import com.baeldung.hibernate.jpabootstrap.config.JpaEntityManagerFactory; import com.baeldung.hibernate.jpabootstrap.entities.User; -import javax.persistence.EntityManager; +import jakarta.persistence.EntityManager; public class Application { @@ -24,8 +24,7 @@ public class Application { } private static class EntityManagerHolder { - private static final EntityManager ENTITY_MANAGER = new JpaEntityManagerFactory( - new Class[]{User.class}).getEntityManager(); + private static final EntityManager ENTITY_MANAGER = new JpaEntityManagerFactory(new Class[]{User.class}).getEntityManager(); } public static EntityManager getJpaEntityManager() { diff --git a/persistence-modules/hibernate-jpa/src/main/java/com/baeldung/hibernate/jpabootstrap/config/HibernatePersistenceUnitInfo.java b/persistence-modules/hibernate-jpa/src/main/java/com/baeldung/hibernate/jpabootstrap/config/HibernatePersistenceUnitInfo.java index 3852b44b64..af01ea630c 100644 --- a/persistence-modules/hibernate-jpa/src/main/java/com/baeldung/hibernate/jpabootstrap/config/HibernatePersistenceUnitInfo.java +++ b/persistence-modules/hibernate-jpa/src/main/java/com/baeldung/hibernate/jpabootstrap/config/HibernatePersistenceUnitInfo.java @@ -6,11 +6,11 @@ import java.util.Collections; import java.util.List; import java.util.Properties; import javax.sql.DataSource; -import javax.persistence.SharedCacheMode; -import javax.persistence.ValidationMode; -import javax.persistence.spi.ClassTransformer; -import javax.persistence.spi.PersistenceUnitInfo; -import javax.persistence.spi.PersistenceUnitTransactionType; +import jakarta.persistence.SharedCacheMode; +import jakarta.persistence.ValidationMode; +import jakarta.persistence.spi.ClassTransformer; +import jakarta.persistence.spi.PersistenceUnitInfo; +import jakarta.persistence.spi.PersistenceUnitTransactionType; import org.hibernate.jpa.HibernatePersistenceProvider; public class HibernatePersistenceUnitInfo implements PersistenceUnitInfo { diff --git a/persistence-modules/hibernate-jpa/src/main/java/com/baeldung/hibernate/jpabootstrap/config/JpaEntityManagerFactory.java b/persistence-modules/hibernate-jpa/src/main/java/com/baeldung/hibernate/jpabootstrap/config/JpaEntityManagerFactory.java index bc1932af6f..e115727d67 100644 --- a/persistence-modules/hibernate-jpa/src/main/java/com/baeldung/hibernate/jpabootstrap/config/JpaEntityManagerFactory.java +++ b/persistence-modules/hibernate-jpa/src/main/java/com/baeldung/hibernate/jpabootstrap/config/JpaEntityManagerFactory.java @@ -7,10 +7,10 @@ import java.util.List; import java.util.Map; import java.util.Properties; import java.util.stream.Collectors; -import javax.persistence.EntityManager; +import jakarta.persistence.EntityManager; import javax.sql.DataSource; -import javax.persistence.EntityManagerFactory; -import javax.persistence.spi.PersistenceUnitInfo; +import jakarta.persistence.EntityManagerFactory; +import jakarta.persistence.spi.PersistenceUnitInfo; import org.hibernate.jpa.boot.internal.EntityManagerFactoryBuilderImpl; import org.hibernate.jpa.boot.internal.PersistenceUnitInfoDescriptor; diff --git a/persistence-modules/hibernate-jpa/src/main/java/com/baeldung/hibernate/jpabootstrap/entities/User.java b/persistence-modules/hibernate-jpa/src/main/java/com/baeldung/hibernate/jpabootstrap/entities/User.java index 86ca1dfa19..43c99f8d96 100644 --- a/persistence-modules/hibernate-jpa/src/main/java/com/baeldung/hibernate/jpabootstrap/entities/User.java +++ b/persistence-modules/hibernate-jpa/src/main/java/com/baeldung/hibernate/jpabootstrap/entities/User.java @@ -1,10 +1,10 @@ package com.baeldung.hibernate.jpabootstrap.entities; -import javax.persistence.Entity; -import javax.persistence.GeneratedValue; -import javax.persistence.GenerationType; -import javax.persistence.Id; -import javax.persistence.Table; +import jakarta.persistence.Entity; +import jakarta.persistence.GeneratedValue; +import jakarta.persistence.GenerationType; +import jakarta.persistence.Id; +import jakarta.persistence.Table; @Entity @Table(name = "users") diff --git a/persistence-modules/hibernate-jpa/src/main/java/com/baeldung/hibernate/jpacriteriabuilder/service/EmployeeSearchServiceImpl.java b/persistence-modules/hibernate-jpa/src/main/java/com/baeldung/hibernate/jpacriteriabuilder/service/EmployeeSearchServiceImpl.java index e79168a451..9a3216b5eb 100644 --- a/persistence-modules/hibernate-jpa/src/main/java/com/baeldung/hibernate/jpacriteriabuilder/service/EmployeeSearchServiceImpl.java +++ b/persistence-modules/hibernate-jpa/src/main/java/com/baeldung/hibernate/jpacriteriabuilder/service/EmployeeSearchServiceImpl.java @@ -2,13 +2,13 @@ package com.baeldung.hibernate.jpacriteriabuilder.service; import java.util.List; -import javax.persistence.EntityManager; -import javax.persistence.TypedQuery; -import javax.persistence.criteria.CriteriaBuilder; -import javax.persistence.criteria.CriteriaBuilder.In; -import javax.persistence.criteria.CriteriaQuery; -import javax.persistence.criteria.Root; -import javax.persistence.criteria.Subquery; +import jakarta.persistence.EntityManager; +import jakarta.persistence.TypedQuery; +import jakarta.persistence.criteria.CriteriaBuilder; +import jakarta.persistence.criteria.CriteriaBuilder.In; +import jakarta.persistence.criteria.CriteriaQuery; +import jakarta.persistence.criteria.Root; +import jakarta.persistence.criteria.Subquery; import com.baeldung.hibernate.entities.Department; import com.baeldung.hibernate.entities.DeptEmployee; diff --git a/persistence-modules/hibernate-jpa/src/main/java/com/baeldung/hibernate/onetoone/foreignkeybased/Address.java b/persistence-modules/hibernate-jpa/src/main/java/com/baeldung/hibernate/onetoone/foreignkeybased/Address.java index e05eb46030..0c3238cf98 100644 --- a/persistence-modules/hibernate-jpa/src/main/java/com/baeldung/hibernate/onetoone/foreignkeybased/Address.java +++ b/persistence-modules/hibernate-jpa/src/main/java/com/baeldung/hibernate/onetoone/foreignkeybased/Address.java @@ -1,12 +1,12 @@ package com.baeldung.hibernate.onetoone.foreignkeybased; -import javax.persistence.Column; -import javax.persistence.Entity; -import javax.persistence.GeneratedValue; -import javax.persistence.GenerationType; -import javax.persistence.Id; -import javax.persistence.OneToOne; -import javax.persistence.Table; +import jakarta.persistence.Column; +import jakarta.persistence.Entity; +import jakarta.persistence.GeneratedValue; +import jakarta.persistence.GenerationType; +import jakarta.persistence.Id; +import jakarta.persistence.OneToOne; +import jakarta.persistence.Table; @Entity @Table(name = "address") diff --git a/persistence-modules/hibernate-jpa/src/main/java/com/baeldung/hibernate/onetoone/foreignkeybased/User.java b/persistence-modules/hibernate-jpa/src/main/java/com/baeldung/hibernate/onetoone/foreignkeybased/User.java index dda972f29c..14c2a0a28c 100644 --- a/persistence-modules/hibernate-jpa/src/main/java/com/baeldung/hibernate/onetoone/foreignkeybased/User.java +++ b/persistence-modules/hibernate-jpa/src/main/java/com/baeldung/hibernate/onetoone/foreignkeybased/User.java @@ -1,14 +1,14 @@ package com.baeldung.hibernate.onetoone.foreignkeybased; -import javax.persistence.CascadeType; -import javax.persistence.Column; -import javax.persistence.Entity; -import javax.persistence.GeneratedValue; -import javax.persistence.GenerationType; -import javax.persistence.Id; -import javax.persistence.JoinColumn; -import javax.persistence.OneToOne; -import javax.persistence.Table; +import jakarta.persistence.CascadeType; +import jakarta.persistence.Column; +import jakarta.persistence.Entity; +import jakarta.persistence.GeneratedValue; +import jakarta.persistence.GenerationType; +import jakarta.persistence.Id; +import jakarta.persistence.JoinColumn; +import jakarta.persistence.OneToOne; +import jakarta.persistence.Table; @Entity @Table(name = "users") diff --git a/persistence-modules/hibernate-jpa/src/main/java/com/baeldung/hibernate/onetoone/jointablebased/Employee.java b/persistence-modules/hibernate-jpa/src/main/java/com/baeldung/hibernate/onetoone/jointablebased/Employee.java index a0bc101b9f..fc8b9eefec 100644 --- a/persistence-modules/hibernate-jpa/src/main/java/com/baeldung/hibernate/onetoone/jointablebased/Employee.java +++ b/persistence-modules/hibernate-jpa/src/main/java/com/baeldung/hibernate/onetoone/jointablebased/Employee.java @@ -1,15 +1,15 @@ package com.baeldung.hibernate.onetoone.jointablebased; -import javax.persistence.CascadeType; -import javax.persistence.Column; -import javax.persistence.Entity; -import javax.persistence.GeneratedValue; -import javax.persistence.GenerationType; -import javax.persistence.Id; -import javax.persistence.JoinColumn; -import javax.persistence.JoinTable; -import javax.persistence.OneToOne; -import javax.persistence.Table; +import jakarta.persistence.CascadeType; +import jakarta.persistence.Column; +import jakarta.persistence.Entity; +import jakarta.persistence.GeneratedValue; +import jakarta.persistence.GenerationType; +import jakarta.persistence.Id; +import jakarta.persistence.JoinColumn; +import jakarta.persistence.JoinTable; +import jakarta.persistence.OneToOne; +import jakarta.persistence.Table; @Entity @Table(name = "employee") diff --git a/persistence-modules/hibernate-jpa/src/main/java/com/baeldung/hibernate/onetoone/jointablebased/WorkStation.java b/persistence-modules/hibernate-jpa/src/main/java/com/baeldung/hibernate/onetoone/jointablebased/WorkStation.java index f530611f6e..0834b9f9d7 100644 --- a/persistence-modules/hibernate-jpa/src/main/java/com/baeldung/hibernate/onetoone/jointablebased/WorkStation.java +++ b/persistence-modules/hibernate-jpa/src/main/java/com/baeldung/hibernate/onetoone/jointablebased/WorkStation.java @@ -1,13 +1,13 @@ package com.baeldung.hibernate.onetoone.jointablebased; -import javax.persistence.Column; -import javax.persistence.Entity; -import javax.persistence.GeneratedValue; -import javax.persistence.GenerationType; -import javax.persistence.Id; -import javax.persistence.OneToOne; -import javax.persistence.Table; +import jakarta.persistence.Column; +import jakarta.persistence.Entity; +import jakarta.persistence.GeneratedValue; +import jakarta.persistence.GenerationType; +import jakarta.persistence.Id; +import jakarta.persistence.OneToOne; +import jakarta.persistence.Table; @Entity @Table(name = "workstation") diff --git a/persistence-modules/hibernate-jpa/src/main/java/com/baeldung/hibernate/onetoone/sharedkeybased/Address.java b/persistence-modules/hibernate-jpa/src/main/java/com/baeldung/hibernate/onetoone/sharedkeybased/Address.java index e70c62e77b..d738b900bc 100644 --- a/persistence-modules/hibernate-jpa/src/main/java/com/baeldung/hibernate/onetoone/sharedkeybased/Address.java +++ b/persistence-modules/hibernate-jpa/src/main/java/com/baeldung/hibernate/onetoone/sharedkeybased/Address.java @@ -1,12 +1,12 @@ package com.baeldung.hibernate.onetoone.sharedkeybased; -import javax.persistence.Column; -import javax.persistence.Entity; -import javax.persistence.Id; -import javax.persistence.JoinColumn; -import javax.persistence.MapsId; -import javax.persistence.OneToOne; -import javax.persistence.Table; +import jakarta.persistence.Column; +import jakarta.persistence.Entity; +import jakarta.persistence.Id; +import jakarta.persistence.JoinColumn; +import jakarta.persistence.MapsId; +import jakarta.persistence.OneToOne; +import jakarta.persistence.Table; @Entity @Table(name = "address") diff --git a/persistence-modules/hibernate-jpa/src/main/java/com/baeldung/hibernate/onetoone/sharedkeybased/User.java b/persistence-modules/hibernate-jpa/src/main/java/com/baeldung/hibernate/onetoone/sharedkeybased/User.java index 605671a149..8ce767eaf7 100644 --- a/persistence-modules/hibernate-jpa/src/main/java/com/baeldung/hibernate/onetoone/sharedkeybased/User.java +++ b/persistence-modules/hibernate-jpa/src/main/java/com/baeldung/hibernate/onetoone/sharedkeybased/User.java @@ -1,15 +1,15 @@ package com.baeldung.hibernate.onetoone.sharedkeybased; -import javax.persistence.CascadeType; -import javax.persistence.Column; -import javax.persistence.Entity; -import javax.persistence.GeneratedValue; -import javax.persistence.GenerationType; -import javax.persistence.Id; -import javax.persistence.OneToOne; -import javax.persistence.PrimaryKeyJoinColumn; -import javax.persistence.Table; +import jakarta.persistence.CascadeType; +import jakarta.persistence.Column; +import jakarta.persistence.Entity; +import jakarta.persistence.GeneratedValue; +import jakarta.persistence.GenerationType; +import jakarta.persistence.Id; +import jakarta.persistence.OneToOne; +import jakarta.persistence.PrimaryKeyJoinColumn; +import jakarta.persistence.Table; @Entity @Table(name = "users") diff --git a/persistence-modules/hibernate-jpa/src/main/java/com/baeldung/hibernate/optimisticlocking/OptimisticLockingCourse.java b/persistence-modules/hibernate-jpa/src/main/java/com/baeldung/hibernate/optimisticlocking/OptimisticLockingCourse.java index 1af3e3e21b..b8212a049d 100644 --- a/persistence-modules/hibernate-jpa/src/main/java/com/baeldung/hibernate/optimisticlocking/OptimisticLockingCourse.java +++ b/persistence-modules/hibernate-jpa/src/main/java/com/baeldung/hibernate/optimisticlocking/OptimisticLockingCourse.java @@ -1,6 +1,6 @@ package com.baeldung.hibernate.optimisticlocking; -import javax.persistence.*; +import jakarta.persistence.*; @Entity public class OptimisticLockingCourse { diff --git a/persistence-modules/hibernate-jpa/src/main/java/com/baeldung/hibernate/optimisticlocking/OptimisticLockingStudent.java b/persistence-modules/hibernate-jpa/src/main/java/com/baeldung/hibernate/optimisticlocking/OptimisticLockingStudent.java index b79212ae8d..22f11e37fb 100644 --- a/persistence-modules/hibernate-jpa/src/main/java/com/baeldung/hibernate/optimisticlocking/OptimisticLockingStudent.java +++ b/persistence-modules/hibernate-jpa/src/main/java/com/baeldung/hibernate/optimisticlocking/OptimisticLockingStudent.java @@ -1,6 +1,6 @@ package com.baeldung.hibernate.optimisticlocking; -import javax.persistence.*; +import jakarta.persistence.*; import java.util.List; @Entity diff --git a/persistence-modules/hibernate-jpa/src/main/java/com/baeldung/hibernate/pessimisticlocking/Address.java b/persistence-modules/hibernate-jpa/src/main/java/com/baeldung/hibernate/pessimisticlocking/Address.java index c889cb6127..7c6d20df40 100644 --- a/persistence-modules/hibernate-jpa/src/main/java/com/baeldung/hibernate/pessimisticlocking/Address.java +++ b/persistence-modules/hibernate-jpa/src/main/java/com/baeldung/hibernate/pessimisticlocking/Address.java @@ -1,6 +1,6 @@ package com.baeldung.hibernate.pessimisticlocking; -import javax.persistence.Embeddable; +import jakarta.persistence.Embeddable; @Embeddable public class Address { diff --git a/persistence-modules/hibernate-jpa/src/main/java/com/baeldung/hibernate/pessimisticlocking/Customer.java b/persistence-modules/hibernate-jpa/src/main/java/com/baeldung/hibernate/pessimisticlocking/Customer.java index cb73cbc958..9f36e3b308 100644 --- a/persistence-modules/hibernate-jpa/src/main/java/com/baeldung/hibernate/pessimisticlocking/Customer.java +++ b/persistence-modules/hibernate-jpa/src/main/java/com/baeldung/hibernate/pessimisticlocking/Customer.java @@ -1,6 +1,6 @@ package com.baeldung.hibernate.pessimisticlocking; -import javax.persistence.*; +import jakarta.persistence.*; import java.util.List; @Entity diff --git a/persistence-modules/hibernate-jpa/src/main/java/com/baeldung/hibernate/pessimisticlocking/Individual.java b/persistence-modules/hibernate-jpa/src/main/java/com/baeldung/hibernate/pessimisticlocking/Individual.java index e491c09eb5..b954c9fdb2 100644 --- a/persistence-modules/hibernate-jpa/src/main/java/com/baeldung/hibernate/pessimisticlocking/Individual.java +++ b/persistence-modules/hibernate-jpa/src/main/java/com/baeldung/hibernate/pessimisticlocking/Individual.java @@ -1,9 +1,9 @@ package com.baeldung.hibernate.pessimisticlocking; -import javax.persistence.Entity; -import javax.persistence.Id; -import javax.persistence.Inheritance; -import javax.persistence.InheritanceType; +import jakarta.persistence.Entity; +import jakarta.persistence.Id; +import jakarta.persistence.Inheritance; +import jakarta.persistence.InheritanceType; @Entity @Inheritance(strategy = InheritanceType.JOINED) diff --git a/persistence-modules/hibernate-jpa/src/main/java/com/baeldung/hibernate/pessimisticlocking/PessimisticLockingCourse.java b/persistence-modules/hibernate-jpa/src/main/java/com/baeldung/hibernate/pessimisticlocking/PessimisticLockingCourse.java index aea7d5fc87..012f3d1d39 100644 --- a/persistence-modules/hibernate-jpa/src/main/java/com/baeldung/hibernate/pessimisticlocking/PessimisticLockingCourse.java +++ b/persistence-modules/hibernate-jpa/src/main/java/com/baeldung/hibernate/pessimisticlocking/PessimisticLockingCourse.java @@ -1,6 +1,6 @@ package com.baeldung.hibernate.pessimisticlocking; -import javax.persistence.*; +import jakarta.persistence.*; @Entity public class PessimisticLockingCourse { diff --git a/persistence-modules/hibernate-jpa/src/main/java/com/baeldung/hibernate/pessimisticlocking/PessimisticLockingEmployee.java b/persistence-modules/hibernate-jpa/src/main/java/com/baeldung/hibernate/pessimisticlocking/PessimisticLockingEmployee.java index a1328cbdad..e5b00f3800 100644 --- a/persistence-modules/hibernate-jpa/src/main/java/com/baeldung/hibernate/pessimisticlocking/PessimisticLockingEmployee.java +++ b/persistence-modules/hibernate-jpa/src/main/java/com/baeldung/hibernate/pessimisticlocking/PessimisticLockingEmployee.java @@ -1,6 +1,6 @@ package com.baeldung.hibernate.pessimisticlocking; -import javax.persistence.Entity; +import jakarta.persistence.Entity; import java.math.BigDecimal; @Entity diff --git a/persistence-modules/hibernate-jpa/src/main/java/com/baeldung/hibernate/pessimisticlocking/PessimisticLockingStudent.java b/persistence-modules/hibernate-jpa/src/main/java/com/baeldung/hibernate/pessimisticlocking/PessimisticLockingStudent.java index e6c5f476b4..c5634ebc24 100644 --- a/persistence-modules/hibernate-jpa/src/main/java/com/baeldung/hibernate/pessimisticlocking/PessimisticLockingStudent.java +++ b/persistence-modules/hibernate-jpa/src/main/java/com/baeldung/hibernate/pessimisticlocking/PessimisticLockingStudent.java @@ -1,6 +1,6 @@ package com.baeldung.hibernate.pessimisticlocking; -import javax.persistence.*; +import jakarta.persistence.*; import java.util.List; @Entity diff --git a/persistence-modules/hibernate-jpa/src/main/java/com/baeldung/hibernate/pojo/Movie.java b/persistence-modules/hibernate-jpa/src/main/java/com/baeldung/hibernate/pojo/Movie.java index 5fae7f6a97..7aeadd4501 100644 --- a/persistence-modules/hibernate-jpa/src/main/java/com/baeldung/hibernate/pojo/Movie.java +++ b/persistence-modules/hibernate-jpa/src/main/java/com/baeldung/hibernate/pojo/Movie.java @@ -1,8 +1,8 @@ package com.baeldung.hibernate.pojo; -import javax.persistence.Entity; -import javax.persistence.Id; -import javax.persistence.Table; +import jakarta.persistence.Entity; +import jakarta.persistence.Id; +import jakarta.persistence.Table; @Entity @Table(name = "MOVIE") diff --git a/persistence-modules/hibernate-jpa/src/main/java/com/baeldung/hibernate/pojo/Person.java b/persistence-modules/hibernate-jpa/src/main/java/com/baeldung/hibernate/pojo/Person.java index 390a5954ed..d0c8b8aa2f 100644 --- a/persistence-modules/hibernate-jpa/src/main/java/com/baeldung/hibernate/pojo/Person.java +++ b/persistence-modules/hibernate-jpa/src/main/java/com/baeldung/hibernate/pojo/Person.java @@ -1,9 +1,9 @@ package com.baeldung.hibernate.pojo; -import javax.persistence.Convert; -import javax.persistence.Entity; -import javax.persistence.GeneratedValue; -import javax.persistence.Id; +import jakarta.persistence.Convert; +import jakarta.persistence.Entity; +import jakarta.persistence.GeneratedValue; +import jakarta.persistence.Id; import com.baeldung.hibernate.converters.PersonNameConverter; diff --git a/persistence-modules/hibernate-jpa/src/main/java/com/baeldung/hibernate/pojo/Post.java b/persistence-modules/hibernate-jpa/src/main/java/com/baeldung/hibernate/pojo/Post.java index 25e51e35d0..66a68367d7 100644 --- a/persistence-modules/hibernate-jpa/src/main/java/com/baeldung/hibernate/pojo/Post.java +++ b/persistence-modules/hibernate-jpa/src/main/java/com/baeldung/hibernate/pojo/Post.java @@ -1,9 +1,9 @@ package com.baeldung.hibernate.pojo; -import javax.persistence.Entity; -import javax.persistence.GeneratedValue; -import javax.persistence.Id; -import javax.persistence.Table; +import jakarta.persistence.Entity; +import jakarta.persistence.GeneratedValue; +import jakarta.persistence.Id; +import jakarta.persistence.Table; @Entity @Table(name = "posts") diff --git a/persistence-modules/hibernate-jpa/src/main/java/com/baeldung/hibernate/pojo/Student.java b/persistence-modules/hibernate-jpa/src/main/java/com/baeldung/hibernate/pojo/Student.java index 9b26c117eb..263908a5fc 100644 --- a/persistence-modules/hibernate-jpa/src/main/java/com/baeldung/hibernate/pojo/Student.java +++ b/persistence-modules/hibernate-jpa/src/main/java/com/baeldung/hibernate/pojo/Student.java @@ -1,9 +1,9 @@ package com.baeldung.hibernate.pojo; -import javax.persistence.Entity; -import javax.persistence.GeneratedValue; -import javax.persistence.GenerationType; -import javax.persistence.Id; +import jakarta.persistence.Entity; +import jakarta.persistence.GeneratedValue; +import jakarta.persistence.GenerationType; +import jakarta.persistence.Id; @Entity public class Student { diff --git a/persistence-modules/hibernate-jpa/src/main/java/com/baeldung/hibernate/serializable/Account.java b/persistence-modules/hibernate-jpa/src/main/java/com/baeldung/hibernate/serializable/Account.java index b051809ee5..7070f21c45 100644 --- a/persistence-modules/hibernate-jpa/src/main/java/com/baeldung/hibernate/serializable/Account.java +++ b/persistence-modules/hibernate-jpa/src/main/java/com/baeldung/hibernate/serializable/Account.java @@ -1,9 +1,9 @@ package com.baeldung.hibernate.serializable; -import javax.persistence.Entity; -import javax.persistence.Id; -import javax.persistence.JoinColumn; -import javax.persistence.ManyToOne; +import jakarta.persistence.Entity; +import jakarta.persistence.Id; +import jakarta.persistence.JoinColumn; +import jakarta.persistence.ManyToOne; @Entity public class Account { diff --git a/persistence-modules/hibernate-jpa/src/main/java/com/baeldung/hibernate/serializable/Email.java b/persistence-modules/hibernate-jpa/src/main/java/com/baeldung/hibernate/serializable/Email.java index 11e7c6f159..4ba902281a 100644 --- a/persistence-modules/hibernate-jpa/src/main/java/com/baeldung/hibernate/serializable/Email.java +++ b/persistence-modules/hibernate-jpa/src/main/java/com/baeldung/hibernate/serializable/Email.java @@ -1,7 +1,7 @@ package com.baeldung.hibernate.serializable; -import javax.persistence.Entity; -import javax.persistence.Id; +import jakarta.persistence.Entity; +import jakarta.persistence.Id; import java.io.Serializable; @Entity diff --git a/persistence-modules/hibernate-jpa/src/main/java/com/baeldung/hibernate/serializable/User.java b/persistence-modules/hibernate-jpa/src/main/java/com/baeldung/hibernate/serializable/User.java index e7820fe52f..267155b4db 100644 --- a/persistence-modules/hibernate-jpa/src/main/java/com/baeldung/hibernate/serializable/User.java +++ b/persistence-modules/hibernate-jpa/src/main/java/com/baeldung/hibernate/serializable/User.java @@ -1,7 +1,7 @@ package com.baeldung.hibernate.serializable; -import javax.persistence.EmbeddedId; -import javax.persistence.Entity; +import jakarta.persistence.EmbeddedId; +import jakarta.persistence.Entity; @Entity public class User { diff --git a/persistence-modules/hibernate-jpa/src/main/java/com/baeldung/hibernate/serializable/UserId.java b/persistence-modules/hibernate-jpa/src/main/java/com/baeldung/hibernate/serializable/UserId.java index 7d3d382f67..6fcbeafdd0 100644 --- a/persistence-modules/hibernate-jpa/src/main/java/com/baeldung/hibernate/serializable/UserId.java +++ b/persistence-modules/hibernate-jpa/src/main/java/com/baeldung/hibernate/serializable/UserId.java @@ -1,6 +1,6 @@ package com.baeldung.hibernate.serializable; -import javax.persistence.Embeddable; +import jakarta.persistence.Embeddable; import java.io.Serializable; @Embeddable diff --git a/persistence-modules/hibernate-jpa/src/main/java/com/baeldung/persistencecontext/entity/User.java b/persistence-modules/hibernate-jpa/src/main/java/com/baeldung/persistencecontext/entity/User.java index 7252ac46f5..afdbf067c3 100644 --- a/persistence-modules/hibernate-jpa/src/main/java/com/baeldung/persistencecontext/entity/User.java +++ b/persistence-modules/hibernate-jpa/src/main/java/com/baeldung/persistencecontext/entity/User.java @@ -1,9 +1,9 @@ package com.baeldung.persistencecontext.entity; -import javax.persistence.Entity; -import javax.persistence.Id; +import jakarta.persistence.Entity; +import jakarta.persistence.Id; -@Entity +@Entity(name = "users") public class User { @Id diff --git a/persistence-modules/hibernate-jpa/src/main/java/com/baeldung/persistencecontext/service/ExtendedPersistenceContextUserService.java b/persistence-modules/hibernate-jpa/src/main/java/com/baeldung/persistencecontext/service/ExtendedPersistenceContextUserService.java index ef25aac69f..7ad6aae745 100644 --- a/persistence-modules/hibernate-jpa/src/main/java/com/baeldung/persistencecontext/service/ExtendedPersistenceContextUserService.java +++ b/persistence-modules/hibernate-jpa/src/main/java/com/baeldung/persistencecontext/service/ExtendedPersistenceContextUserService.java @@ -1,15 +1,15 @@ package com.baeldung.persistencecontext.service; -import javax.persistence.EntityManager; -import javax.persistence.PersistenceContext; -import javax.persistence.PersistenceContextType; -import javax.transaction.Transactional; +import jakarta.persistence.EntityManager; +import jakarta.persistence.PersistenceContext; +import jakarta.persistence.PersistenceContextType; +import jakarta.transaction.Transactional; -import org.springframework.stereotype.Component; +import org.springframework.stereotype.Service; import com.baeldung.persistencecontext.entity.User; -@Component +@Service public class ExtendedPersistenceContextUserService { @PersistenceContext(type = PersistenceContextType.EXTENDED) diff --git a/persistence-modules/hibernate-jpa/src/main/java/com/baeldung/persistencecontext/service/TransctionPersistenceContextUserService.java b/persistence-modules/hibernate-jpa/src/main/java/com/baeldung/persistencecontext/service/TransctionPersistenceContextUserService.java index 481defcf08..6b9fd1f14c 100644 --- a/persistence-modules/hibernate-jpa/src/main/java/com/baeldung/persistencecontext/service/TransctionPersistenceContextUserService.java +++ b/persistence-modules/hibernate-jpa/src/main/java/com/baeldung/persistencecontext/service/TransctionPersistenceContextUserService.java @@ -1,20 +1,20 @@ package com.baeldung.persistencecontext.service; -import javax.persistence.EntityManager; -import javax.persistence.PersistenceContext; -import javax.transaction.Transactional; +import jakarta.persistence.EntityManager; +import jakarta.persistence.PersistenceContext; +import jakarta.transaction.Transactional; -import org.springframework.stereotype.Component; +import org.springframework.stereotype.Service; import com.baeldung.persistencecontext.entity.User; -@Component +@Service public class TransctionPersistenceContextUserService { @PersistenceContext private EntityManager entityManager; - + @Transactional public User insertWithTransaction(User user) { entityManager.persist(user); diff --git a/persistence-modules/hibernate-jpa/src/main/resources/META-INF/persistence.xml b/persistence-modules/hibernate-jpa/src/main/resources/META-INF/persistence.xml index 12b41a4973..1669413289 100644 --- a/persistence-modules/hibernate-jpa/src/main/resources/META-INF/persistence.xml +++ b/persistence-modules/hibernate-jpa/src/main/resources/META-INF/persistence.xml @@ -8,12 +8,13 @@ com.baeldung.hibernate.pojo.Movie true - + - - - - + + + + + @@ -34,10 +35,14 @@ - - - - + + + + + + + + @@ -57,16 +62,20 @@ - - - - - + + + + + - - - - + + + + + + + + @@ -87,16 +96,20 @@ - - - - - + + + + + - - - - + + + + + + + + @@ -113,10 +126,16 @@ - - - - + + + + + + + + + + diff --git a/persistence-modules/hibernate-jpa/src/test/java/com/baeldung/hibernate/entitymanager/getreference/GetReferenceH2IntegrationTest.java b/persistence-modules/hibernate-jpa/src/test/java/com/baeldung/hibernate/entitymanager/getreference/GetReferenceH2IntegrationTest.java index e8e6aeed7c..02744c8ee5 100644 --- a/persistence-modules/hibernate-jpa/src/test/java/com/baeldung/hibernate/entitymanager/getreference/GetReferenceH2IntegrationTest.java +++ b/persistence-modules/hibernate-jpa/src/test/java/com/baeldung/hibernate/entitymanager/getreference/GetReferenceH2IntegrationTest.java @@ -5,9 +5,9 @@ import ch.qos.logback.classic.Logger; import org.junit.jupiter.api.*; import org.slf4j.LoggerFactory; -import javax.persistence.EntityManager; -import javax.persistence.EntityManagerFactory; -import javax.persistence.Persistence; +import jakarta.persistence.EntityManager; +import jakarta.persistence.EntityManagerFactory; +import jakarta.persistence.Persistence; import java.io.ByteArrayOutputStream; import java.io.OutputStream; import java.io.PrintStream; @@ -87,8 +87,8 @@ public class GetReferenceH2IntegrationTest { }); StringBuilder expected = new StringBuilder(); - expected.append("Hibernate: select game0_.id as id1_0_0_, game0_.name as name2_0_0_ from Game game0_ where game0_.id=?\n"); - expected.append("Hibernate: update Game set name=? where id=?\n"); + expected.append("Hibernate: select g1_0.id,g1_0.name from Game g1_0 where g1_0.id=?" + System.lineSeparator()); + expected.append("Hibernate: update Game set name=? where id=?" + System.lineSeparator()); assertEquals(expected.toString(), output.toString()); } @@ -104,8 +104,8 @@ public class GetReferenceH2IntegrationTest { }); StringBuilder expected = new StringBuilder(); - expected.append("Hibernate: select game0_.id as id1_0_0_, game0_.name as name2_0_0_ from Game game0_ where game0_.id=?\n"); - expected.append("Hibernate: update Game set name=? where id=?\n"); + expected.append("Hibernate: select g1_0.id,g1_0.name from Game g1_0 where g1_0.id=?" + System.lineSeparator()); + expected.append("Hibernate: update Game set name=? where id=?" + System.lineSeparator()); assertEquals(expected.toString(), output.toString()); } @@ -120,10 +120,9 @@ public class GetReferenceH2IntegrationTest { StringBuilder expected = new StringBuilder(); expected.append("Hibernate: select "); - expected.append("player0_.id as id1_1_0_, player0_.game_id as game_id3_1_0_, "); - expected.append("player0_.name as name2_1_0_, game1_.id as id1_0_1_, game1_.name as name2_0_1_ "); - expected.append("from Player player0_ left outer join Game game1_ on player0_.game_id=game1_.id where player0_.id=?\n"); - expected.append("Hibernate: delete from Player where id=?\n"); + expected.append("p1_0.id,g1_0.id,g1_0.name,p1_0.name "); + expected.append("from Player p1_0 left join Game g1_0 on g1_0.id=p1_0.game_id where p1_0.id=?" + System.lineSeparator()); + expected.append("Hibernate: delete from Player where id=?" + System.lineSeparator()); assertEquals(expected.toString(), output.toString()); } @@ -138,10 +137,9 @@ public class GetReferenceH2IntegrationTest { StringBuilder expected = new StringBuilder(); expected.append("Hibernate: select "); - expected.append("player0_.id as id1_1_0_, player0_.game_id as game_id3_1_0_, "); - expected.append("player0_.name as name2_1_0_, game1_.id as id1_0_1_, game1_.name as name2_0_1_ "); - expected.append("from Player player0_ left outer join Game game1_ on player0_.game_id=game1_.id where player0_.id=?\n"); - expected.append("Hibernate: delete from Player where id=?\n"); + expected.append("p1_0.id,g1_0.id,g1_0.name,p1_0.name "); + expected.append("from Player p1_0 left join Game g1_0 on g1_0.id=p1_0.game_id where p1_0.id=?" + System.lineSeparator()); + expected.append("Hibernate: delete from Player where id=?" + System.lineSeparator()); assertEquals(expected.toString(), output.toString()); } @@ -159,12 +157,11 @@ public class GetReferenceH2IntegrationTest { })); StringBuilder expected = new StringBuilder(); - expected.append("Hibernate: select game0_.id as id1_0_0_, game0_.name as name2_0_0_ from Game game0_ where game0_.id=?\n"); + expected.append("Hibernate: select g1_0.id,g1_0.name from Game g1_0 where g1_0.id=?" + System.lineSeparator()); expected.append("Hibernate: select "); - expected.append("player0_.id as id1_1_0_, player0_.game_id as game_id3_1_0_, "); - expected.append("player0_.name as name2_1_0_, game1_.id as id1_0_1_, game1_.name as name2_0_1_ "); - expected.append("from Player player0_ left outer join Game game1_ on player0_.game_id=game1_.id where player0_.id=?\n"); - expected.append("Hibernate: update Player set game_id=?, name=? where id=?\n"); + expected.append("p1_0.id,g1_0.id,g1_0.name,p1_0.name "); + expected.append("from Player p1_0 left join Game g1_0 on g1_0.id=p1_0.game_id where p1_0.id=?" + System.lineSeparator()); + expected.append("Hibernate: update Player set game_id=?, name=? where id=?" + System.lineSeparator()); assertEquals(expected.toString(), output.toString()); } @@ -183,10 +180,9 @@ public class GetReferenceH2IntegrationTest { StringBuilder expected = new StringBuilder(); expected.append("Hibernate: select "); - expected.append("player0_.id as id1_1_0_, player0_.game_id as game_id3_1_0_, "); - expected.append("player0_.name as name2_1_0_, game1_.id as id1_0_1_, game1_.name as name2_0_1_ "); - expected.append("from Player player0_ left outer join Game game1_ on player0_.game_id=game1_.id where player0_.id=?\n"); - expected.append("Hibernate: update Player set game_id=?, name=? where id=?\n"); + expected.append("p1_0.id,g1_0.id,g1_0.name,p1_0.name "); + expected.append("from Player p1_0 left join Game g1_0 on g1_0.id=p1_0.game_id where p1_0.id=?" + System.lineSeparator()); + expected.append("Hibernate: update Player set game_id=?, name=? where id=?" + System.lineSeparator()); assertEquals(expected.toString(), output.toString()); } diff --git a/persistence-modules/hibernate-jpa/src/test/java/com/baeldung/hibernate/entitymanager/getreference/GetReferenceMySQLManualTest.java b/persistence-modules/hibernate-jpa/src/test/java/com/baeldung/hibernate/entitymanager/getreference/GetReferenceMySQLManualTest.java index 2b7c5e8119..29be19dd68 100644 --- a/persistence-modules/hibernate-jpa/src/test/java/com/baeldung/hibernate/entitymanager/getreference/GetReferenceMySQLManualTest.java +++ b/persistence-modules/hibernate-jpa/src/test/java/com/baeldung/hibernate/entitymanager/getreference/GetReferenceMySQLManualTest.java @@ -5,9 +5,9 @@ import ch.qos.logback.classic.Logger; import org.junit.jupiter.api.*; import org.slf4j.LoggerFactory; -import javax.persistence.EntityManager; -import javax.persistence.EntityManagerFactory; -import javax.persistence.Persistence; +import jakarta.persistence.EntityManager; +import jakarta.persistence.EntityManagerFactory; +import jakarta.persistence.Persistence; import java.io.ByteArrayOutputStream; import java.io.OutputStream; import java.io.PrintStream; diff --git a/persistence-modules/hibernate-jpa/src/test/java/com/baeldung/hibernate/entitymanager/getreference/GetReferencePostgreSQLManualTest.java b/persistence-modules/hibernate-jpa/src/test/java/com/baeldung/hibernate/entitymanager/getreference/GetReferencePostgreSQLManualTest.java index 17f6b10b8a..20a0bca6f1 100644 --- a/persistence-modules/hibernate-jpa/src/test/java/com/baeldung/hibernate/entitymanager/getreference/GetReferencePostgreSQLManualTest.java +++ b/persistence-modules/hibernate-jpa/src/test/java/com/baeldung/hibernate/entitymanager/getreference/GetReferencePostgreSQLManualTest.java @@ -5,9 +5,9 @@ import ch.qos.logback.classic.Logger; import org.junit.jupiter.api.*; import org.slf4j.LoggerFactory; -import javax.persistence.EntityManager; -import javax.persistence.EntityManagerFactory; -import javax.persistence.Persistence; +import jakarta.persistence.EntityManager; +import jakarta.persistence.EntityManagerFactory; +import jakarta.persistence.Persistence; import java.io.ByteArrayOutputStream; import java.io.OutputStream; import java.io.PrintStream; diff --git a/persistence-modules/hibernate-jpa/src/test/java/com/baeldung/hibernate/jpacriteriabuilder/EmployeeSearchServiceIntegrationTest.java b/persistence-modules/hibernate-jpa/src/test/java/com/baeldung/hibernate/jpacriteriabuilder/EmployeeSearchServiceIntegrationTest.java index 2b12734a10..d9bffcfc08 100644 --- a/persistence-modules/hibernate-jpa/src/test/java/com/baeldung/hibernate/jpacriteriabuilder/EmployeeSearchServiceIntegrationTest.java +++ b/persistence-modules/hibernate-jpa/src/test/java/com/baeldung/hibernate/jpacriteriabuilder/EmployeeSearchServiceIntegrationTest.java @@ -9,7 +9,7 @@ import java.util.ArrayList; import java.util.List; import java.util.stream.Collectors; -import javax.persistence.EntityManager; +import jakarta.persistence.EntityManager; import org.hibernate.HibernateException; import org.hibernate.Session; @@ -81,7 +81,7 @@ public class EmployeeSearchServiceIntegrationTest { @Test public final void givenCriteriaQuery_whenSearchedUsingCriteriaBuilderWithListofAuthors_thenResultIsFilteredByAuthorNames() { - List titles = new ArrayList() { + List titles = new ArrayList<>() { { add("Manager"); add("Senior Manager"); diff --git a/persistence-modules/hibernate-jpa/src/test/java/com/baeldung/hibernate/optimisticlocking/OptimisticLockingIntegrationTest.java b/persistence-modules/hibernate-jpa/src/test/java/com/baeldung/hibernate/optimisticlocking/OptimisticLockingIntegrationTest.java index 37c490f297..2fa302e270 100644 --- a/persistence-modules/hibernate-jpa/src/test/java/com/baeldung/hibernate/optimisticlocking/OptimisticLockingIntegrationTest.java +++ b/persistence-modules/hibernate-jpa/src/test/java/com/baeldung/hibernate/optimisticlocking/OptimisticLockingIntegrationTest.java @@ -3,9 +3,9 @@ package com.baeldung.hibernate.optimisticlocking; import java.io.IOException; import java.util.Arrays; -import javax.persistence.EntityManager; -import javax.persistence.LockModeType; -import javax.persistence.OptimisticLockException; +import jakarta.persistence.EntityManager; +import jakarta.persistence.LockModeType; +import jakarta.persistence.OptimisticLockException; import org.hibernate.SessionFactory; import org.junit.After; diff --git a/persistence-modules/hibernate-jpa/src/test/java/com/baeldung/hibernate/pessimisticlocking/BasicPessimisticLockingIntegrationTest.java b/persistence-modules/hibernate-jpa/src/test/java/com/baeldung/hibernate/pessimisticlocking/BasicPessimisticLockingIntegrationTest.java index 4b9c7720fd..4085a98dad 100644 --- a/persistence-modules/hibernate-jpa/src/test/java/com/baeldung/hibernate/pessimisticlocking/BasicPessimisticLockingIntegrationTest.java +++ b/persistence-modules/hibernate-jpa/src/test/java/com/baeldung/hibernate/pessimisticlocking/BasicPessimisticLockingIntegrationTest.java @@ -1,14 +1,14 @@ package com.baeldung.hibernate.pessimisticlocking; import com.baeldung.hibernate.HibernateUtil; -import com.vividsolutions.jts.util.Assert; +import org.locationtech.jts.util.Assert; import org.hibernate.SessionFactory; import org.junit.AfterClass; import org.junit.BeforeClass; import org.junit.Test; -import javax.persistence.*; +import jakarta.persistence.*; import java.io.IOException; import java.util.Arrays; @@ -46,7 +46,7 @@ public class BasicPessimisticLockingIntegrationTest { } @Test - public void givenRecordWithPessimisticReadQuery_whenQueryingNewOne_PessimisticLockExceptionThrown() throws IOException { + public void givenRecordWithPessimisticReadQuery_whenQueryingNewOne_PessimisticLockExceptionThrown() { try { EntityManager entityManager = getEntityManagerWithOpenTransaction(); Query query = entityManager.createQuery("from Student where studentId = :studentId"); diff --git a/persistence-modules/hibernate-jpa/src/test/java/com/baeldung/hibernate/pessimisticlocking/PessimisticLockScopesIntegrationTest.java b/persistence-modules/hibernate-jpa/src/test/java/com/baeldung/hibernate/pessimisticlocking/PessimisticLockScopesIntegrationTest.java index 81cb7d95f8..c2f2326159 100644 --- a/persistence-modules/hibernate-jpa/src/test/java/com/baeldung/hibernate/pessimisticlocking/PessimisticLockScopesIntegrationTest.java +++ b/persistence-modules/hibernate-jpa/src/test/java/com/baeldung/hibernate/pessimisticlocking/PessimisticLockScopesIntegrationTest.java @@ -6,9 +6,9 @@ import org.hibernate.SessionFactory; import org.junit.AfterClass; import org.junit.Test; -import javax.persistence.EntityManager; -import javax.persistence.LockModeType; -import javax.persistence.PessimisticLockScope; +import jakarta.persistence.EntityManager; +import jakarta.persistence.LockModeType; +import jakarta.persistence.PessimisticLockScope; import java.io.IOException; import java.math.BigDecimal; import java.util.Arrays; @@ -36,7 +36,7 @@ public class PessimisticLockScopesIntegrationTest { // EXTENDED SCOPE Map map = new HashMap<>(); - map.put("javax.persistence.lock.scope", PessimisticLockScope.EXTENDED); + map.put("jakarta.persistence", PessimisticLockScope.EXTENDED); EntityManager em3 = getEntityManagerWithOpenTransaction(); foundEmployee = em3.find(PessimisticLockingEmployee.class, 1L, LockModeType.PESSIMISTIC_WRITE, map); @@ -65,7 +65,7 @@ public class PessimisticLockScopesIntegrationTest { // EXTENDED SCOPE Map map = new HashMap<>(); - map.put("javax.persistence.lock.scope", PessimisticLockScope.EXTENDED); + map.put("jakarta.persistence", PessimisticLockScope.EXTENDED); EntityManager em3 = getEntityManagerWithOpenTransaction(); foundCustomer = em3.find(Customer.class, 1L, LockModeType.PESSIMISTIC_WRITE, map); @@ -96,7 +96,7 @@ public class PessimisticLockScopesIntegrationTest { // EXTENDED SCOPE Map map = new HashMap<>(); - map.put("javax.persistence.lock.scope", PessimisticLockScope.EXTENDED); + map.put("jakarta.persistence", PessimisticLockScope.EXTENDED); EntityManager em3 = getEntityManagerWithOpenTransaction(); foundCourse = em3.find(PessimisticLockingCourse.class, 1L, LockModeType.PESSIMISTIC_WRITE, map); diff --git a/persistence-modules/hibernate-jpa/src/test/java/com/baeldung/hibernate/serializable/JPASerializableIntegrationTest.java b/persistence-modules/hibernate-jpa/src/test/java/com/baeldung/hibernate/serializable/JPASerializableIntegrationTest.java index 696bc23ab0..5512757889 100644 --- a/persistence-modules/hibernate-jpa/src/test/java/com/baeldung/hibernate/serializable/JPASerializableIntegrationTest.java +++ b/persistence-modules/hibernate-jpa/src/test/java/com/baeldung/hibernate/serializable/JPASerializableIntegrationTest.java @@ -4,10 +4,9 @@ import org.junit.After; import org.junit.Before; import org.junit.Test; -import javax.persistence.EntityManager; -import javax.persistence.EntityManagerFactory; -import javax.persistence.Persistence; -import java.io.IOException; +import jakarta.persistence.EntityManager; +import jakarta.persistence.EntityManagerFactory; +import jakarta.persistence.Persistence; import java.util.List; import static org.junit.jupiter.api.Assertions.assertEquals; @@ -17,7 +16,7 @@ public class JPASerializableIntegrationTest { private static EntityManager entityManager; @Before - public void setUp() throws IOException { + public void setUp() { EntityManagerFactory entityManagerFactory = Persistence.createEntityManagerFactory("com.baeldung.hibernate.serializable.h2_persistence_unit"); entityManager = entityManagerFactory.createEntityManager(); entityManager.getTransaction().begin(); @@ -63,7 +62,7 @@ public class JPASerializableIntegrationTest { entityManager.persist(account); entityManager.persist(account2); - List userAccounts = entityManager.createQuery("select a from Account a join fetch a.user where a.user.email = :email") + List userAccounts = entityManager.createQuery("select a from Account a join fetch a.user where a.user.email = :email", Account.class) .setParameter("email", email) .getResultList(); assertEquals(2, userAccounts.size()); diff --git a/persistence-modules/hibernate-jpa/src/test/java/com/baeldung/hibernate/transaction/TransactionIntegrationTest.java b/persistence-modules/hibernate-jpa/src/test/java/com/baeldung/hibernate/transaction/TransactionIntegrationTest.java index 246a7d59f9..f64846ba59 100644 --- a/persistence-modules/hibernate-jpa/src/test/java/com/baeldung/hibernate/transaction/TransactionIntegrationTest.java +++ b/persistence-modules/hibernate-jpa/src/test/java/com/baeldung/hibernate/transaction/TransactionIntegrationTest.java @@ -2,7 +2,6 @@ package com.baeldung.hibernate.transaction; import com.baeldung.hibernate.HibernateUtil; import com.baeldung.hibernate.pojo.Post; -import com.baeldung.hibernate.transaction.PostService; import org.hibernate.Session; import org.hibernate.SessionFactory; import org.junit.BeforeClass; @@ -10,7 +9,6 @@ import org.junit.Test; import org.slf4j.Logger; import org.slf4j.LoggerFactory; -import java.io.FileInputStream; import java.io.IOException; import java.util.Properties; diff --git a/persistence-modules/hibernate-jpa/src/test/java/com/baeldung/persistencecontext/PersistenceContextIntegrationTest.java b/persistence-modules/hibernate-jpa/src/test/java/com/baeldung/persistencecontext/PersistenceContextIntegrationTest.java index b299dd5834..37e6e438d8 100644 --- a/persistence-modules/hibernate-jpa/src/test/java/com/baeldung/persistencecontext/PersistenceContextIntegrationTest.java +++ b/persistence-modules/hibernate-jpa/src/test/java/com/baeldung/persistencecontext/PersistenceContextIntegrationTest.java @@ -4,8 +4,8 @@ import com.baeldung.persistencecontext.entity.User; import com.baeldung.persistencecontext.service.ExtendedPersistenceContextUserService; import com.baeldung.persistencecontext.service.TransctionPersistenceContextUserService; -import javax.persistence.EntityExistsException; -import javax.persistence.TransactionRequiredException; +import jakarta.persistence.EntityExistsException; +import jakarta.persistence.TransactionRequiredException; import org.junit.Test; import org.junit.runner.RunWith; diff --git a/persistence-modules/hibernate-mapping-2/pom.xml b/persistence-modules/hibernate-mapping-2/pom.xml index 2a787a0e46..a56f67b202 100644 --- a/persistence-modules/hibernate-mapping-2/pom.xml +++ b/persistence-modules/hibernate-mapping-2/pom.xml @@ -55,32 +55,16 @@ h2 ${h2.version} - - com.sun.xml.bind - jaxb-core - ${com.sun.xml.version} - - - javax.xml.bind - jaxb-api - ${javax.xml.bind.version} - - - com.sun.xml.bind - jaxb-impl - ${com.sun.xml.version} - - 5.0.2.RELEASE - 1.10.6.RELEASE + 6.0.6 + 3.0.3 - 5.2.10.Final + 6.1.7.Final 9.0.0.M26 - 2.3.0.1 - 2.3.1 + 4.0.2 2.1.214 diff --git a/persistence-modules/hibernate-mapping-2/src/main/java/com/baeldung/manytomany/model/Employee.java b/persistence-modules/hibernate-mapping-2/src/main/java/com/baeldung/manytomany/model/Employee.java index 39671c21bc..cc745f9307 100644 --- a/persistence-modules/hibernate-mapping-2/src/main/java/com/baeldung/manytomany/model/Employee.java +++ b/persistence-modules/hibernate-mapping-2/src/main/java/com/baeldung/manytomany/model/Employee.java @@ -4,16 +4,16 @@ import java.io.Serializable; import java.util.HashSet; import java.util.Set; -import javax.persistence.CascadeType; -import javax.persistence.Column; -import javax.persistence.Entity; -import javax.persistence.GeneratedValue; -import javax.persistence.GenerationType; -import javax.persistence.Id; -import javax.persistence.JoinColumn; -import javax.persistence.JoinTable; -import javax.persistence.ManyToMany; -import javax.persistence.Table; +import jakarta.persistence.CascadeType; +import jakarta.persistence.Column; +import jakarta.persistence.Entity; +import jakarta.persistence.GeneratedValue; +import jakarta.persistence.GenerationType; +import jakarta.persistence.Id; +import jakarta.persistence.JoinColumn; +import jakarta.persistence.JoinTable; +import jakarta.persistence.ManyToMany; +import jakarta.persistence.Table; @Entity @Table(name = "Employee") diff --git a/persistence-modules/hibernate-mapping-2/src/main/java/com/baeldung/manytomany/model/Project.java b/persistence-modules/hibernate-mapping-2/src/main/java/com/baeldung/manytomany/model/Project.java index b5dc3cb856..b0ca7f06cb 100644 --- a/persistence-modules/hibernate-mapping-2/src/main/java/com/baeldung/manytomany/model/Project.java +++ b/persistence-modules/hibernate-mapping-2/src/main/java/com/baeldung/manytomany/model/Project.java @@ -4,12 +4,12 @@ import java.io.Serializable; import java.util.HashSet; import java.util.Set; -import javax.persistence.Column; -import javax.persistence.Entity; -import javax.persistence.GeneratedValue; -import javax.persistence.Id; -import javax.persistence.ManyToMany; -import javax.persistence.Table; +import jakarta.persistence.Column; +import jakarta.persistence.Entity; +import jakarta.persistence.GeneratedValue; +import jakarta.persistence.Id; +import jakarta.persistence.ManyToMany; +import jakarta.persistence.Table; @Entity @Table(name = "Project") diff --git a/persistence-modules/pom.xml b/persistence-modules/pom.xml index d7ff51b487..85cf251d18 100644 --- a/persistence-modules/pom.xml +++ b/persistence-modules/pom.xml @@ -21,61 +21,60 @@ blaze-persistence core-java-persistence core-java-persistence-2 - deltaspike elasticsearch flyway flyway-repair hbase hibernate5 - hibernate-mapping + hibernate-mapping-2 - hibernate-ogm - hibernate-annotations + hibernate-exceptions hibernate-libraries hibernate-jpa - hibernate-queries - hibernate-enterprise + + influxdb - java-cassandra + java-cockroachdb java-jdbi - java-jpa - java-jpa-2 + + java-jpa-3 java-mongodb-2 java-mongodb-3 java-mongodb-queries - jnosql + jooq jpa-hibernate-cascade-type liquibase orientdb persistence-libraries - querydsl - r2dbc + + read-only-transactions - redis + solr - spring-boot-persistence-2 + spring-boot-persistence-3 spring-boot-mysql spring-boot-persistence spring-boot-persistence-h2 - spring-boot-persistence-mongodb + spring-data-arangodb spring-data-cassandra spring-data-cassandra-test - spring-data-cassandra-reactive + spring-data-cosmosdb - spring-data-couchbase-2 + spring-data-dynamodb - spring-data-eclipselink + spring-data-elasticsearch @@ -89,24 +88,24 @@ spring-data-jpa-query spring-data-jpa-query-2 spring-data-jpa-query-3 - spring-data-jpa-repo + spring-data-jpa-repo-2 spring-data-jdbc spring-data-keyvalue - spring-data-mongodb + spring-data-mongodb-2 spring-data-mongodb-reactive - spring-data-neo4j + spring-data-redis spring-data-rest-2 spring-data-rest-querydsl spring-data-solr - spring-hibernate-3 - spring-hibernate-5 - spring-jpa - spring-jpa-2 + + + spring-jdbc spring-jooq spring-mybatis @@ -115,8 +114,8 @@ - 5.2.17.Final - 42.2.20 + 6.1.7.Final + 42.5.4 2.3.4 1.16.3 diff --git a/pom.xml b/pom.xml index ca55866a42..ca50f630ae 100644 --- a/pom.xml +++ b/pom.xml @@ -367,8 +367,8 @@ muleesb - persistence-modules web-modules + persistence-modules/deltaspike @@ -562,8 +562,8 @@ lombok-modules muleesb - persistence-modules web-modules + persistence-modules/deltaspike @@ -821,9 +821,7 @@ libraries-testing maven-modules optaplanner - persistence-modules/sirix - persistence-modules/spring-data-cassandra-2 - persistence-modules/spring-data-jpa-repo-3 + persistence-modules quarkus-modules spring-reactive-modules spring-swagger-codegen/custom-validations-opeanpi-codegen @@ -1073,9 +1071,7 @@ libraries-testing maven-modules optaplanner - persistence-modules/sirix - persistence-modules/spring-data-cassandra-2 - persistence-modules/spring-data-jpa-repo-3 + persistence-modules quarkus-modules spring-reactive-modules spring-swagger-codegen/custom-validations-opeanpi-codegen @@ -1257,6 +1253,7 @@ 1.12.13 + 1.7.32 1.2.7 From 89e7249f0d886ac4c7f1913f3c821f934fa52f19 Mon Sep 17 00:00:00 2001 From: edizor <113095366+edizor@users.noreply.github.com> Date: Fri, 7 Apr 2023 23:39:24 +0800 Subject: [PATCH 65/85] Update README.md [skip ci] --- jackson-modules/jackson-custom-conversions/README.md | 1 + 1 file changed, 1 insertion(+) diff --git a/jackson-modules/jackson-custom-conversions/README.md b/jackson-modules/jackson-custom-conversions/README.md index 68e9a6d50d..2f45a2f43b 100644 --- a/jackson-modules/jackson-custom-conversions/README.md +++ b/jackson-modules/jackson-custom-conversions/README.md @@ -7,3 +7,4 @@ This module contains articles about Jackson custom conversions. - [Getting Started with Custom Deserialization in Jackson](https://www.baeldung.com/jackson-deserialization) - [Serialize Only Fields that meet a Custom Criteria with Jackson](https://www.baeldung.com/jackson-serialize-field-custom-criteria) - [Calling Default Serializer from Custom Serializer in Jackson](https://www.baeldung.com/jackson-call-default-serializer-from-custom-serializer) +- [OffsetDateTime Serialization With Jackson](https://www.baeldung.com/java-jackson-offsetdatetime) From ca90b8f9b8b197a2ef888aaeb4731e25dbfbf5b3 Mon Sep 17 00:00:00 2001 From: edizor <113095366+edizor@users.noreply.github.com> Date: Fri, 7 Apr 2023 23:44:46 +0800 Subject: [PATCH 66/85] Update README.md [skip ci] --- apache-httpclient4/README.md | 1 + 1 file changed, 1 insertion(+) diff --git a/apache-httpclient4/README.md b/apache-httpclient4/README.md index dff63a5cc1..9c18e06243 100644 --- a/apache-httpclient4/README.md +++ b/apache-httpclient4/README.md @@ -9,6 +9,7 @@ This module contains articles about Apache HttpClient 4.5 - [Custom HTTP Header with the Apache HttpClient](https://www.baeldung.com/httpclient-custom-http-header) - [Apache HttpClient vs. CloseableHttpClient](https://www.baeldung.com/apache-httpclient-vs-closeablehttpclient) - [Expand Shortened URLs with Apache HttpClient](https://www.baeldung.com/apache-httpclient-expand-url) +- [Retrying Requests using Apache HttpClient](https://www.baeldung.com/java-retrying-requests-using-apache-httpclient) ### Running the Tests To run the live tests, use the command: mvn clean install -Plive From 19e050852c5b6771b6b62ee91a8b3d4c7249f66d Mon Sep 17 00:00:00 2001 From: edizor <113095366+edizor@users.noreply.github.com> Date: Fri, 7 Apr 2023 23:51:06 +0800 Subject: [PATCH 67/85] Update README.md [skip ci] --- core-java-modules/core-java-booleans/README.md | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/core-java-modules/core-java-booleans/README.md b/core-java-modules/core-java-booleans/README.md index 6a9be31958..fe7068c6f4 100644 --- a/core-java-modules/core-java-booleans/README.md +++ b/core-java-modules/core-java-booleans/README.md @@ -2,4 +2,5 @@ This module contains articles about Java Booleans. -### Relevant Articles: \ No newline at end of file +### Relevant Articles: +- [Convert Boolean to String in Java](https://www.baeldung.com/java-convert-boolean-to-string) From 7c5ceb42b6f00e5852b01cc2cbe5301c1dd7e979 Mon Sep 17 00:00:00 2001 From: edizor <113095366+edizor@users.noreply.github.com> Date: Fri, 7 Apr 2023 23:53:48 +0800 Subject: [PATCH 68/85] Update README.md [skip ci] --- spring-boot-modules/spring-boot-keycloak-2/README.md | 1 + 1 file changed, 1 insertion(+) diff --git a/spring-boot-modules/spring-boot-keycloak-2/README.md b/spring-boot-modules/spring-boot-keycloak-2/README.md index d372132a6a..e4f8b1904b 100644 --- a/spring-boot-modules/spring-boot-keycloak-2/README.md +++ b/spring-boot-modules/spring-boot-keycloak-2/README.md @@ -4,3 +4,4 @@ This module contains articles about Keycloak in Spring Boot projects. ## Relevant articles: - [Disabling Keycloak Security in Spring Boot](https://www.baeldung.com/spring-keycloak-security-disable) +- [Search Users With Keycloak in Java](https://www.baeldung.com/java-keycloak-search-users) From c07f3eb890e3c748893dcb761191b4cf0bc2672f Mon Sep 17 00:00:00 2001 From: edizor <113095366+edizor@users.noreply.github.com> Date: Fri, 7 Apr 2023 23:56:46 +0800 Subject: [PATCH 69/85] Update README.md [skip ci] --- core-java-modules/core-java-uuid/README.md | 1 + 1 file changed, 1 insertion(+) diff --git a/core-java-modules/core-java-uuid/README.md b/core-java-modules/core-java-uuid/README.md index 0a77c36acd..4438c9a770 100644 --- a/core-java-modules/core-java-uuid/README.md +++ b/core-java-modules/core-java-uuid/README.md @@ -4,3 +4,4 @@ - [Generating Alphanumeric UUID String in Java](https://www.baeldung.com/java-generate-alphanumeric-uuid) - [Guide to UUID in Java](http://www.baeldung.com/java-uuid) - [Validate UUID String in Java](https://www.baeldung.com/java-validate-uuid-string) +- [Generate the Same UUID From a String in Java](https://www.baeldung.com/java-generate-same-uuid-from-string) From c398dd05914fc5127aeba1cf4c2172a5bda564e1 Mon Sep 17 00:00:00 2001 From: edizor <113095366+edizor@users.noreply.github.com> Date: Fri, 7 Apr 2023 23:59:05 +0800 Subject: [PATCH 70/85] Update README.md [skip ci] --- spring-cloud-modules/spring-cloud-azure/README.md | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/spring-cloud-modules/spring-cloud-azure/README.md b/spring-cloud-modules/spring-cloud-azure/README.md index 810efbc8dc..7f0e9815ae 100644 --- a/spring-cloud-modules/spring-cloud-azure/README.md +++ b/spring-cloud-modules/spring-cloud-azure/README.md @@ -1,7 +1,7 @@ # Spring Cloud Azure # Relevant Articles - +- [A Guide to Spring Cloud Azure Key Vault](https://www.baeldung.com/spring-cloud-azure-key-vault) # Azure KeyVault: In order to create the secrets, follow these steps: - create an Azure account @@ -10,4 +10,4 @@ In order to create the secrets, follow these steps: - create a resource group: _az group create --name spring_cloud_azure --location eastus_ - create a keyvault storage: _az keyvault create --name new_keyvault --resource-group spring_cloud_azure --location eastus_ - create the secrets: > az keyvault secret set --name my-database-secret --value my-database-secret-value --vault-name new_keyvault,> az keyvault secret set --name my-secret --value my-secret-value --vault-name new_keyvault -``` \ No newline at end of file +``` From c5cf69e1ad1299fd3682f914bfede03f6b7862ac Mon Sep 17 00:00:00 2001 From: Anastasios Ioannidis <121166333+anastasiosioannidis@users.noreply.github.com> Date: Fri, 7 Apr 2023 19:00:48 +0300 Subject: [PATCH 71/85] JAVA-15014 Removed httpclient4 Expand Shortened Urls article from apache-httpclient-2 (#13778) --- apache-httpclient-2/README.md | 1 - 1 file changed, 1 deletion(-) diff --git a/apache-httpclient-2/README.md b/apache-httpclient-2/README.md index 45f1e41637..05bebfaacb 100644 --- a/apache-httpclient-2/README.md +++ b/apache-httpclient-2/README.md @@ -12,6 +12,5 @@ The "REST With Spring" Classes: http://bit.ly/restwithspring - [Reading an HTTP Response Body as a String in Java](https://www.baeldung.com/java-http-response-body-as-string) - [How To Get Cookies From the Apache HttpClient Response](https://www.baeldung.com/java-apache-httpclient-cookies) - [Enabling Logging for Apache HttpClient](https://www.baeldung.com/apache-httpclient-enable-logging) -- [Expand Shortened URLs with Apache HttpClient](https://www.baeldung.com/apache-httpclient-expand-url) - [Apache HttpClient vs. CloseableHttpClient](https://www.baeldung.com/apache-httpclient-vs-closeablehttpclient) - More articles: [[<-- prev]](../apache-httpclient) From 57ad9ed32e629b666e2199a4effc0b506dc1e1ec Mon Sep 17 00:00:00 2001 From: Anastasios Ioannidis <121166333+anastasiosioannidis@users.noreply.github.com> Date: Fri, 7 Apr 2023 19:03:05 +0300 Subject: [PATCH 72/85] JAVA-18131 Adjust core-java-jvm PrintClassLoaders to sync with article (#13780) --- .../main/java/com/baeldung/classloader/PrintClassLoader.java | 3 +++ 1 file changed, 3 insertions(+) diff --git a/core-java-modules/core-java-jvm/src/main/java/com/baeldung/classloader/PrintClassLoader.java b/core-java-modules/core-java-jvm/src/main/java/com/baeldung/classloader/PrintClassLoader.java index b976ac99f2..cd7000b419 100644 --- a/core-java-modules/core-java-jvm/src/main/java/com/baeldung/classloader/PrintClassLoader.java +++ b/core-java-modules/core-java-jvm/src/main/java/com/baeldung/classloader/PrintClassLoader.java @@ -1,5 +1,7 @@ package com.baeldung.classloader; +import java.sql.DriverManager; + import java.util.ArrayList; public class PrintClassLoader { @@ -7,6 +9,7 @@ public class PrintClassLoader { public void printClassLoaders() throws ClassNotFoundException { System.out.println("Classloader of this class:" + PrintClassLoader.class.getClassLoader()); + System.out.println("Classloader of DriverManager:" + DriverManager.class.getClassLoader()); System.out.println("Classloader of ArrayList:" + ArrayList.class.getClassLoader()); } From 356e7487017faaa52698523cf25f7449aed23934 Mon Sep 17 00:00:00 2001 From: edizor <113095366+edizor@users.noreply.github.com> Date: Sat, 8 Apr 2023 00:03:46 +0800 Subject: [PATCH 73/85] Update README.md [skip ci] --- persistence-modules/spring-data-jpa-repo-2/README.md | 1 + 1 file changed, 1 insertion(+) diff --git a/persistence-modules/spring-data-jpa-repo-2/README.md b/persistence-modules/spring-data-jpa-repo-2/README.md index 23134ec02d..dc94ba41d0 100644 --- a/persistence-modules/spring-data-jpa-repo-2/README.md +++ b/persistence-modules/spring-data-jpa-repo-2/README.md @@ -9,4 +9,5 @@ - [Difference Between JPA and Spring Data JPA](https://www.baeldung.com/spring-data-jpa-vs-jpa) - [Differences Between Spring Data JPA findFirst() and findTop()](https://www.baeldung.com/spring-data-jpa-findfirst-vs-findtop) - [Difference Between findBy and findAllBy in Spring Data JPA](https://www.baeldung.com/spring-data-jpa-find-by-vs-find-all-by) +- [Unidirectional One-to-Many and Cascading Delete in JPA](https://www.baeldung.com/spring-jpa-unidirectional-one-to-many-and-cascading-delete) - More articles: [[<-- prev]](../spring-data-jpa-repo) From 6e4502955a203607ce8f449eafdf0d6ce6d905f8 Mon Sep 17 00:00:00 2001 From: edizor <113095366+edizor@users.noreply.github.com> Date: Sat, 8 Apr 2023 00:07:32 +0800 Subject: [PATCH 74/85] Update README.md [skip ci] --- core-java-modules/core-java-numbers-6/README.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/core-java-modules/core-java-numbers-6/README.md b/core-java-modules/core-java-numbers-6/README.md index a96ddccabb..2c0b0554c4 100644 --- a/core-java-modules/core-java-numbers-6/README.md +++ b/core-java-modules/core-java-numbers-6/README.md @@ -1,2 +1,2 @@ ### Relevant Articles: - +- [Java Program to Calculate Pi](https://www.baeldung.com/java-monte-carlo-compute-pi) From 50fa3093722b36548c3298140063791436e2ae25 Mon Sep 17 00:00:00 2001 From: edizor <113095366+edizor@users.noreply.github.com> Date: Sat, 8 Apr 2023 00:11:38 +0800 Subject: [PATCH 75/85] Update README.md [skip ci] --- persistence-modules/hibernate-annotations/README.md | 1 + 1 file changed, 1 insertion(+) diff --git a/persistence-modules/hibernate-annotations/README.md b/persistence-modules/hibernate-annotations/README.md index 9b68579151..a03fb7e8e3 100644 --- a/persistence-modules/hibernate-annotations/README.md +++ b/persistence-modules/hibernate-annotations/README.md @@ -10,3 +10,4 @@ This module contains articles about Annotations used in Hibernate. - [Hibernate @WhereJoinTable Annotation](https://www.baeldung.com/hibernate-wherejointable) - [Usage of the Hibernate @LazyCollection Annotation](https://www.baeldung.com/hibernate-lazycollection) - [@Immutable in Hibernate](https://www.baeldung.com/hibernate-immutable) +- [Hibernate @CreationTimestamp and @UpdateTimestamp](https://www.baeldung.com/hibernate-creationtimestamp-updatetimestamp) From 1c97da707e4e293e4c3b8af9a8e0f5df325cfc17 Mon Sep 17 00:00:00 2001 From: Dhawal Kapil Date: Fri, 7 Apr 2023 22:02:06 +0530 Subject: [PATCH 76/85] JAVA-19536 Formatting of pom.xml --- ethereum/pom.xml | 8 +- feign/pom.xml | 1 - gcp-firebase/pom.xml | 83 ++++++++++--------- geotools/pom.xml | 18 ++-- google-cloud/pom.xml | 2 - graphql-modules/graphql-dgs/pom.xml | 1 - graphql-modules/graphql-java/pom.xml | 23 ++--- .../graphql-spqr-boot-starter/pom.xml | 1 - graphql-modules/graphql-spqr/pom.xml | 1 - graphql-modules/pom.xml | 1 - grpc/pom.xml | 1 - guava-modules/guava-18/pom.xml | 1 - guava-modules/guava-19/pom.xml | 1 - guava-modules/guava-21/pom.xml | 1 - guava-modules/guava-collections-list/pom.xml | 1 - guava-modules/guava-collections-map/pom.xml | 1 - guava-modules/guava-collections-set/pom.xml | 1 - guava-modules/guava-collections/pom.xml | 1 - guava-modules/guava-core/pom.xml | 1 - guava-modules/guava-io/pom.xml | 1 - guava-modules/guava-utilities/pom.xml | 1 - hazelcast/pom.xml | 1 - httpclient-simple/pom.xml | 5 +- hystrix/pom.xml | 1 - 24 files changed, 65 insertions(+), 92 deletions(-) diff --git a/ethereum/pom.xml b/ethereum/pom.xml index 6c1a0e900f..8dc25427d9 100644 --- a/ethereum/pom.xml +++ b/ethereum/pom.xml @@ -1,7 +1,7 @@ + xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" + xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd"> 4.0.0 com.baeldung.ethereum ethereum @@ -113,7 +113,8 @@ test ${spring.boot.version} - + junit junit @@ -195,4 +196,5 @@ 2.0.4.RELEASE 3.1 + \ No newline at end of file diff --git a/feign/pom.xml b/feign/pom.xml index 7f71794e29..edb55e7da5 100644 --- a/feign/pom.xml +++ b/feign/pom.xml @@ -3,7 +3,6 @@ xmlns="http://maven.apache.org/POM/4.0.0" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd"> 4.0.0 - com.baeldung.feign feign feign diff --git a/gcp-firebase/pom.xml b/gcp-firebase/pom.xml index c563099ad6..10a899f370 100644 --- a/gcp-firebase/pom.xml +++ b/gcp-firebase/pom.xml @@ -1,48 +1,51 @@ - - 4.0.0 + + 4.0.0 + gcp-firebase + com.baeldung parent-boot-2 0.0.1-SNAPSHOT ../parent-boot-2 - gcp-firebase - - - 9.1.1 - - - - com.google.firebase - firebase-admin - ${firebase-admin.version} - - - - - org.springframework.boot - spring-boot-starter-web - - - org.springframework.boot - spring-boot-starter-test - test - - - org.springframework.boot - spring-boot-configuration-processor - true - - - - - - - - org.springframework.boot - spring-boot-maven-plugin - - - + + + com.google.firebase + firebase-admin + ${firebase-admin.version} + + + + + org.springframework.boot + spring-boot-starter-web + + + org.springframework.boot + spring-boot-starter-test + test + + + org.springframework.boot + spring-boot-configuration-processor + true + + + + + + + org.springframework.boot + spring-boot-maven-plugin + + + + + + 9.1.1 + + \ No newline at end of file diff --git a/geotools/pom.xml b/geotools/pom.xml index f17b4cc5da..61682ae0f5 100644 --- a/geotools/pom.xml +++ b/geotools/pom.xml @@ -4,10 +4,8 @@ xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd"> 4.0.0 geotools - 0.0.1-SNAPSHOT geotools jar - http://maven.apache.org com.baeldung @@ -15,14 +13,6 @@ 1.0.0-SNAPSHOT - - - osgeo-release - OSGeo Repository - https://repo.osgeo.org/repository/release/ - - - org.geotools @@ -41,6 +31,14 @@ + + + osgeo-release + OSGeo Repository + https://repo.osgeo.org/repository/release/ + + + 28.1 28.1 diff --git a/google-cloud/pom.xml b/google-cloud/pom.xml index 72b9647bc8..8bb535f12a 100644 --- a/google-cloud/pom.xml +++ b/google-cloud/pom.xml @@ -4,7 +4,6 @@ xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd"> 4.0.0 google-cloud - 0.1-SNAPSHOT google-cloud jar Google Cloud Tutorials @@ -24,7 +23,6 @@ org.projectlombok lombok - ${lombok.version} provided diff --git a/graphql-modules/graphql-dgs/pom.xml b/graphql-modules/graphql-dgs/pom.xml index 051785b4b8..313e598130 100644 --- a/graphql-modules/graphql-dgs/pom.xml +++ b/graphql-modules/graphql-dgs/pom.xml @@ -4,7 +4,6 @@ xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd"> 4.0.0 graphql-dgs - 1.0 graphql-dgs diff --git a/graphql-modules/graphql-java/pom.xml b/graphql-modules/graphql-java/pom.xml index 01b7a4fbc3..88f2beb574 100644 --- a/graphql-modules/graphql-java/pom.xml +++ b/graphql-modules/graphql-java/pom.xml @@ -4,7 +4,6 @@ xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd"> 4.0.0 graphql-java - 1.0 graphql-java @@ -13,21 +12,6 @@ 1.0.0-SNAPSHOT - - - jitpack.io - https://jitpack.io - - - - false - - central - Central Repository - https://repo.maven.apache.org/maven2 - - - com.graphql-java @@ -143,6 +127,13 @@ + + + jitpack.io + https://jitpack.io + + + 11.0 5.2.4 diff --git a/graphql-modules/graphql-spqr-boot-starter/pom.xml b/graphql-modules/graphql-spqr-boot-starter/pom.xml index 6cb1d74329..fd9ebc0224 100644 --- a/graphql-modules/graphql-spqr-boot-starter/pom.xml +++ b/graphql-modules/graphql-spqr-boot-starter/pom.xml @@ -4,7 +4,6 @@ xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd"> 4.0.0 graphql-spqr-boot-starter - 1.0 graphql-spqr-boot-starter diff --git a/graphql-modules/graphql-spqr/pom.xml b/graphql-modules/graphql-spqr/pom.xml index d845d1ac8a..756930f2ac 100644 --- a/graphql-modules/graphql-spqr/pom.xml +++ b/graphql-modules/graphql-spqr/pom.xml @@ -4,7 +4,6 @@ xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd"> 4.0.0 graphql-spqr - 1.0 graphql-spqr diff --git a/graphql-modules/pom.xml b/graphql-modules/pom.xml index a42400b7cc..4b43cbffde 100644 --- a/graphql-modules/pom.xml +++ b/graphql-modules/pom.xml @@ -5,7 +5,6 @@ 4.0.0 com.baeldung.graphql graphql-modules - 1.0.0-SNAPSHOT graphql-modules pom diff --git a/grpc/pom.xml b/grpc/pom.xml index 40d35183dc..fed1e801f2 100644 --- a/grpc/pom.xml +++ b/grpc/pom.xml @@ -4,7 +4,6 @@ xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd"> 4.0.0 grpc - 0.0.1-SNAPSHOT grpc jar diff --git a/guava-modules/guava-18/pom.xml b/guava-modules/guava-18/pom.xml index 8f5108bff1..873555bf24 100644 --- a/guava-modules/guava-18/pom.xml +++ b/guava-modules/guava-18/pom.xml @@ -4,7 +4,6 @@ xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd"> 4.0.0 guava-18 - 0.1.0-SNAPSHOT guava-18 diff --git a/guava-modules/guava-19/pom.xml b/guava-modules/guava-19/pom.xml index ba85fe0ae8..9a40677e08 100644 --- a/guava-modules/guava-19/pom.xml +++ b/guava-modules/guava-19/pom.xml @@ -4,7 +4,6 @@ xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd"> 4.0.0 guava-19 - 0.1.0-SNAPSHOT guava-19 diff --git a/guava-modules/guava-21/pom.xml b/guava-modules/guava-21/pom.xml index 9e791bfe23..a26176ba0b 100644 --- a/guava-modules/guava-21/pom.xml +++ b/guava-modules/guava-21/pom.xml @@ -4,7 +4,6 @@ xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd"> 4.0.0 guava-21 - 1.0-SNAPSHOT guava-21 diff --git a/guava-modules/guava-collections-list/pom.xml b/guava-modules/guava-collections-list/pom.xml index 6863b4011c..a07f34e56c 100644 --- a/guava-modules/guava-collections-list/pom.xml +++ b/guava-modules/guava-collections-list/pom.xml @@ -4,7 +4,6 @@ xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd"> 4.0.0 guava-collections-list - 0.1.0-SNAPSHOT guava-collections-list diff --git a/guava-modules/guava-collections-map/pom.xml b/guava-modules/guava-collections-map/pom.xml index 04beaa13a1..6b73e8c29a 100644 --- a/guava-modules/guava-collections-map/pom.xml +++ b/guava-modules/guava-collections-map/pom.xml @@ -5,7 +5,6 @@ 4.0.0 com.baeldung.guava guava-collections-map - 0.1.0-SNAPSHOT guava-collections-map diff --git a/guava-modules/guava-collections-set/pom.xml b/guava-modules/guava-collections-set/pom.xml index 49bfc46ee2..ffd6c80a3e 100644 --- a/guava-modules/guava-collections-set/pom.xml +++ b/guava-modules/guava-collections-set/pom.xml @@ -4,7 +4,6 @@ xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd"> 4.0.0 guava-collections-set - 0.1.0-SNAPSHOT guava-collections-set diff --git a/guava-modules/guava-collections/pom.xml b/guava-modules/guava-collections/pom.xml index 8dc052db75..e016b1c547 100644 --- a/guava-modules/guava-collections/pom.xml +++ b/guava-modules/guava-collections/pom.xml @@ -4,7 +4,6 @@ xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd"> 4.0.0 guava-collections - 0.1.0-SNAPSHOT guava-collections diff --git a/guava-modules/guava-core/pom.xml b/guava-modules/guava-core/pom.xml index dd68fef43a..6c4f76356f 100644 --- a/guava-modules/guava-core/pom.xml +++ b/guava-modules/guava-core/pom.xml @@ -4,7 +4,6 @@ xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd"> 4.0.0 guava-core - 0.1.0-SNAPSHOT guava-core diff --git a/guava-modules/guava-io/pom.xml b/guava-modules/guava-io/pom.xml index 2ea91c5e4f..367533139e 100644 --- a/guava-modules/guava-io/pom.xml +++ b/guava-modules/guava-io/pom.xml @@ -4,7 +4,6 @@ xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd"> 4.0.0 guava-io - 0.1.0-SNAPSHOT guava-io diff --git a/guava-modules/guava-utilities/pom.xml b/guava-modules/guava-utilities/pom.xml index ab849072a5..407a44587e 100644 --- a/guava-modules/guava-utilities/pom.xml +++ b/guava-modules/guava-utilities/pom.xml @@ -4,7 +4,6 @@ xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd"> 4.0.0 guava-utilities - 0.1.0-SNAPSHOT guava-utilities diff --git a/hazelcast/pom.xml b/hazelcast/pom.xml index 694563790f..4742f213e5 100644 --- a/hazelcast/pom.xml +++ b/hazelcast/pom.xml @@ -4,7 +4,6 @@ xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd"> 4.0.0 hazelcast - 0.0.1-SNAPSHOT hazelcast diff --git a/httpclient-simple/pom.xml b/httpclient-simple/pom.xml index eea056477c..a6049432ce 100644 --- a/httpclient-simple/pom.xml +++ b/httpclient-simple/pom.xml @@ -1,10 +1,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 httpclient-simple - 0.1-SNAPSHOT httpclient-simple war diff --git a/hystrix/pom.xml b/hystrix/pom.xml index 639d4eba02..007c2e237b 100644 --- a/hystrix/pom.xml +++ b/hystrix/pom.xml @@ -4,7 +4,6 @@ xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd"> 4.0.0 hystrix - 1.0 hystrix From e297f43f173048ceb57e95cb427e5c566a2d266e Mon Sep 17 00:00:00 2001 From: Dhawal Kapil Date: Fri, 7 Apr 2023 22:32:01 +0530 Subject: [PATCH 77/85] JAVA-19536 Formatting of pom.xml --- image-processing/pom.xml | 1 - jackson-modules/jackson-annotations/pom.xml | 1 - jackson-modules/jackson-conversions-2/pom.xml | 1 - jackson-modules/jackson-conversions/pom.xml | 1 - jackson-modules/jackson-core/pom.xml | 1 - .../jackson-custom-conversions/pom.xml | 1 - jackson-modules/jackson-exceptions/pom.xml | 1 - jackson-simple/pom.xml | 1 - java-blockchain/pom.xml | 1 - java-jdi/pom.xml | 1 - java-panama/pom.xml | 87 +++++++++---------- java-rmi/pom.xml | 1 - java-websocket/pom.xml | 1 - javax-sound/pom.xml | 1 - javax-validation-advanced/pom.xml | 1 - javaxval-2/pom.xml | 1 - javaxval/pom.xml | 3 +- jaxb/pom.xml | 1 - jenkins-modules/plugins/pom.xml | 1 - jersey/pom.xml | 1 - jetbrains/pom.xml | 1 - jgit/pom.xml | 16 ++-- jib/pom.xml | 1 - jmeter/pom.xml | 22 ++--- jmh/pom.xml | 6 +- jsf/pom.xml | 3 +- json-modules/gson/pom.xml | 1 - json-modules/json-path/pom.xml | 1 - json-modules/json/pom.xml | 1 - jws/pom.xml | 2 - 30 files changed, 64 insertions(+), 98 deletions(-) diff --git a/image-processing/pom.xml b/image-processing/pom.xml index 3780ecfd33..2a2b92ca48 100644 --- a/image-processing/pom.xml +++ b/image-processing/pom.xml @@ -4,7 +4,6 @@ xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd"> 4.0.0 image-processing - 1.0-SNAPSHOT image-processing diff --git a/jackson-modules/jackson-annotations/pom.xml b/jackson-modules/jackson-annotations/pom.xml index 4bb9341e43..e2d5e1e607 100644 --- a/jackson-modules/jackson-annotations/pom.xml +++ b/jackson-modules/jackson-annotations/pom.xml @@ -4,7 +4,6 @@ xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd"> 4.0.0 jackson-annotations - 0.0.1-SNAPSHOT jackson-annotations diff --git a/jackson-modules/jackson-conversions-2/pom.xml b/jackson-modules/jackson-conversions-2/pom.xml index 1c6d2fc002..457045b460 100644 --- a/jackson-modules/jackson-conversions-2/pom.xml +++ b/jackson-modules/jackson-conversions-2/pom.xml @@ -4,7 +4,6 @@ xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd"> 4.0.0 jackson-conversions-2 - 0.0.1-SNAPSHOT jackson-conversions-2 diff --git a/jackson-modules/jackson-conversions/pom.xml b/jackson-modules/jackson-conversions/pom.xml index 9ab1fa9020..e0990ed34f 100644 --- a/jackson-modules/jackson-conversions/pom.xml +++ b/jackson-modules/jackson-conversions/pom.xml @@ -4,7 +4,6 @@ xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd"> 4.0.0 jackson-conversions - 0.0.1-SNAPSHOT jackson-conversions diff --git a/jackson-modules/jackson-core/pom.xml b/jackson-modules/jackson-core/pom.xml index f3edffc07c..4eccd4d8f8 100644 --- a/jackson-modules/jackson-core/pom.xml +++ b/jackson-modules/jackson-core/pom.xml @@ -4,7 +4,6 @@ xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd"> 4.0.0 jackson-core - 0.0.1-SNAPSHOT jackson-core diff --git a/jackson-modules/jackson-custom-conversions/pom.xml b/jackson-modules/jackson-custom-conversions/pom.xml index 79af962eec..31e460511a 100644 --- a/jackson-modules/jackson-custom-conversions/pom.xml +++ b/jackson-modules/jackson-custom-conversions/pom.xml @@ -4,7 +4,6 @@ xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd"> 4.0.0 jackson-custom-conversions - 0.0.1-SNAPSHOT jackson-custom-conversions diff --git a/jackson-modules/jackson-exceptions/pom.xml b/jackson-modules/jackson-exceptions/pom.xml index a24a0ab4b7..e19ef4f883 100644 --- a/jackson-modules/jackson-exceptions/pom.xml +++ b/jackson-modules/jackson-exceptions/pom.xml @@ -4,7 +4,6 @@ xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd"> 4.0.0 jackson-exceptions - 0.0.1-SNAPSHOT jackson-exceptions diff --git a/jackson-simple/pom.xml b/jackson-simple/pom.xml index f71cb1ffbf..6569324586 100644 --- a/jackson-simple/pom.xml +++ b/jackson-simple/pom.xml @@ -4,7 +4,6 @@ xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd"> 4.0.0 jackson-simple - 0.0.1-SNAPSHOT jackson-simple diff --git a/java-blockchain/pom.xml b/java-blockchain/pom.xml index 2279a7ceff..d45d2bf573 100644 --- a/java-blockchain/pom.xml +++ b/java-blockchain/pom.xml @@ -5,7 +5,6 @@ 4.0.0 com.baeldung.blockchain java-blockchain - 0.1.0-SNAPSHOT java-blockchain jar diff --git a/java-jdi/pom.xml b/java-jdi/pom.xml index a8716de4ee..b4c11c1bfe 100644 --- a/java-jdi/pom.xml +++ b/java-jdi/pom.xml @@ -4,7 +4,6 @@ xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd"> 4.0.0 java-jdi - 0.1.0-SNAPSHOT java-jdi jar diff --git a/java-panama/pom.xml b/java-panama/pom.xml index 8453a38abd..7c6b420eeb 100644 --- a/java-panama/pom.xml +++ b/java-panama/pom.xml @@ -1,49 +1,48 @@ - - ${project.model.version} + + ${project.model.version} + com.baeldung.java.panama + java-panama + ${project.version} + java-panama + jar - com.baeldung.java.panama - java-panama - ${project.version} - jar + + + org.junit.jupiter + junit-jupiter + ${junit.jupiter.version} + test + + - java-panama - https://maven.apache.org + + + + org.apache.maven.plugins + maven-compiler-plugin + ${maven.compiler.version} + + ${maven.compiler.source} + ${maven.compiler.target} + + --add-opens=java.base/java.lang.foreign=ALL-UNNAMED + --enable-preview + + + + + - - 4.0.0 - UTF-8 - 1.0 - 19 - 19 - 3.10.1 - 5.9.0 - + + 4.0.0 + UTF-8 + 1.0 + 19 + 19 + 3.10.1 + 5.9.0 + - - - org.junit.jupiter - junit-jupiter - ${junit.jupiter.version} - test - - - - - - - org.apache.maven.plugins - maven-compiler-plugin - ${maven.compiler.version} - - ${maven.compiler.source} - ${maven.compiler.target} - - --add-opens=java.base/java.lang.foreign=ALL-UNNAMED - --enable-preview - - - - - diff --git a/java-rmi/pom.xml b/java-rmi/pom.xml index fee5107423..2256883f84 100644 --- a/java-rmi/pom.xml +++ b/java-rmi/pom.xml @@ -5,7 +5,6 @@ 4.0.0 com.baeldung.rmi java-rmi - 1.0-SNAPSHOT java-rmi jar diff --git a/java-websocket/pom.xml b/java-websocket/pom.xml index 41c1b251c0..7c5c006aa9 100644 --- a/java-websocket/pom.xml +++ b/java-websocket/pom.xml @@ -4,7 +4,6 @@ xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd"> 4.0.0 java-websocket - 0.0.1-SNAPSHOT java-websocket war diff --git a/javax-sound/pom.xml b/javax-sound/pom.xml index dcd08cbcb8..6652022a40 100644 --- a/javax-sound/pom.xml +++ b/javax-sound/pom.xml @@ -5,7 +5,6 @@ 4.0.0 com.baeldung.javax-sound javax-sound - 1.0-SNAPSHOT javax-sound jar diff --git a/javax-validation-advanced/pom.xml b/javax-validation-advanced/pom.xml index 39da166071..7709f37883 100644 --- a/javax-validation-advanced/pom.xml +++ b/javax-validation-advanced/pom.xml @@ -4,7 +4,6 @@ xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd"> 4.0.0 javax-validation-advanced - 0.1-SNAPSHOT javax-validation-advanced diff --git a/javaxval-2/pom.xml b/javaxval-2/pom.xml index 5c311e10f8..1b1c4929c8 100644 --- a/javaxval-2/pom.xml +++ b/javaxval-2/pom.xml @@ -4,7 +4,6 @@ xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd"> 4.0.0 javaxval-2 - 0.1-SNAPSHOT javaxval-2 diff --git a/javaxval/pom.xml b/javaxval/pom.xml index 1feed71abb..78f37c20d9 100644 --- a/javaxval/pom.xml +++ b/javaxval/pom.xml @@ -4,7 +4,6 @@ xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd"> 4.0.0 javaxval - 0.1-SNAPSHOT javaxval @@ -46,7 +45,7 @@ test - + diff --git a/jaxb/pom.xml b/jaxb/pom.xml index a7f0324bc0..ac448d2d62 100644 --- a/jaxb/pom.xml +++ b/jaxb/pom.xml @@ -4,7 +4,6 @@ xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd"> 4.0.0 jaxb - 0.0.1-SNAPSHOT jaxb diff --git a/jenkins-modules/plugins/pom.xml b/jenkins-modules/plugins/pom.xml index 7f88382e22..42add1664e 100644 --- a/jenkins-modules/plugins/pom.xml +++ b/jenkins-modules/plugins/pom.xml @@ -4,7 +4,6 @@ xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd"> 4.0.0 plugins - 1.0-SNAPSHOT plugins hpi A sample Jenkins Hello World plugin diff --git a/jersey/pom.xml b/jersey/pom.xml index 9a212c6da1..005fa85077 100644 --- a/jersey/pom.xml +++ b/jersey/pom.xml @@ -4,7 +4,6 @@ xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd"> 4.0.0 jersey - 0.0.1-SNAPSHOT jersey war diff --git a/jetbrains/pom.xml b/jetbrains/pom.xml index a10fd3b913..ec46dc54f0 100644 --- a/jetbrains/pom.xml +++ b/jetbrains/pom.xml @@ -7,7 +7,6 @@ 1.0-SNAPSHOT jetbrains jar - http://maven.apache.org com.baeldung diff --git a/jgit/pom.xml b/jgit/pom.xml index 91881fbec8..1b0d82e4d7 100644 --- a/jgit/pom.xml +++ b/jgit/pom.xml @@ -4,10 +4,8 @@ xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd"> 4.0.0 jgit - 1.0-SNAPSHOT jgit jar - http://maven.apache.org com.baeldung @@ -15,14 +13,6 @@ 1.0.0-SNAPSHOT - - - jgit-repository - https://repo.eclipse.org/content/groups/releases/ - - - - org.eclipse.jgit @@ -36,6 +26,12 @@ + + + jgit-repository + https://repo.eclipse.org/content/groups/releases/ + + 4.5.0.201609210915-r diff --git a/jib/pom.xml b/jib/pom.xml index bbc9a3c623..2bdaa258f5 100644 --- a/jib/pom.xml +++ b/jib/pom.xml @@ -4,7 +4,6 @@ xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd"> 4.0.0 jib - 0.1-SNAPSHOT jib diff --git a/jmeter/pom.xml b/jmeter/pom.xml index 33cd56032e..5f4105d282 100644 --- a/jmeter/pom.xml +++ b/jmeter/pom.xml @@ -50,13 +50,13 @@ jmeter-maven-plugin ${jmeter-maven-plugin.version} - - - configuration - - configure - - + + + configuration + + configure + + jmeter-tests @@ -72,10 +72,6 @@ - - 3.7.0 - - dashboard @@ -167,4 +163,8 @@ + + 3.7.0 + + \ No newline at end of file diff --git a/jmh/pom.xml b/jmh/pom.xml index 6487b24ff4..5b98d59002 100644 --- a/jmh/pom.xml +++ b/jmh/pom.xml @@ -1,13 +1,11 @@ + xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" + xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd"> 4.0.0 jmh - 1.0-SNAPSHOT jmh jar - http://maven.apache.org com.baeldung diff --git a/jsf/pom.xml b/jsf/pom.xml index 4e17540557..81030537fb 100644 --- a/jsf/pom.xml +++ b/jsf/pom.xml @@ -4,7 +4,6 @@ xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd"> 4.0.0 jsf - 0.1-SNAPSHOT jsf war @@ -79,7 +78,7 @@ 3.0.0 3.3.1 - + 1.3.1 diff --git a/json-modules/gson/pom.xml b/json-modules/gson/pom.xml index faa8a48297..ecfbaa7be4 100644 --- a/json-modules/gson/pom.xml +++ b/json-modules/gson/pom.xml @@ -4,7 +4,6 @@ xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd"> 4.0.0 gson - 0.1-SNAPSHOT gson diff --git a/json-modules/json-path/pom.xml b/json-modules/json-path/pom.xml index e467ee9557..88b81dfc68 100644 --- a/json-modules/json-path/pom.xml +++ b/json-modules/json-path/pom.xml @@ -4,7 +4,6 @@ xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd"> 4.0.0 json-path - 0.0.1-SNAPSHOT json-path diff --git a/json-modules/json/pom.xml b/json-modules/json/pom.xml index 06e67288c5..bf6a511a9d 100644 --- a/json-modules/json/pom.xml +++ b/json-modules/json/pom.xml @@ -5,7 +5,6 @@ 4.0.0 org.baeldung json - 0.0.1-SNAPSHOT json diff --git a/jws/pom.xml b/jws/pom.xml index 3d2f67c691..8c14a16cff 100644 --- a/jws/pom.xml +++ b/jws/pom.xml @@ -3,9 +3,7 @@ xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd"> 4.0.0 - com.example jws - 0.0.1-SNAPSHOT jws war From 4a1641a7c7fa75d241b0751d8b569daf98b9db21 Mon Sep 17 00:00:00 2001 From: etrandafir93 <75391049+etrandafir93@users.noreply.github.com> Date: Sun, 9 Apr 2023 05:28:06 +0300 Subject: [PATCH 78/85] BAEL-6285: added code support for JUnit5's @Timeout (#13784) --- .../junit5/timeout/TimeoutUnitTest.java | 79 +++++++++++++++++++ 1 file changed, 79 insertions(+) create mode 100644 testing-modules/junit5-annotations/src/test/java/com/baeldung/junit5/timeout/TimeoutUnitTest.java diff --git a/testing-modules/junit5-annotations/src/test/java/com/baeldung/junit5/timeout/TimeoutUnitTest.java b/testing-modules/junit5-annotations/src/test/java/com/baeldung/junit5/timeout/TimeoutUnitTest.java new file mode 100644 index 0000000000..b952dcf09f --- /dev/null +++ b/testing-modules/junit5-annotations/src/test/java/com/baeldung/junit5/timeout/TimeoutUnitTest.java @@ -0,0 +1,79 @@ +package com.baeldung.junit5.timeout; + +import org.junit.jupiter.api.Nested; +import org.junit.jupiter.api.Test; +import org.junit.jupiter.api.Timeout; +import org.junit.jupiter.params.ParameterizedTest; +import org.junit.jupiter.params.provider.ValueSource; + +import java.util.concurrent.TimeUnit; + + +@Timeout(5) +class TimeoutUnitTest { + + @Test + @Timeout(1) + void shouldFailAfterOneSecond() { + slowMethod(); + } + + @Test + @Timeout(value = 5, unit = TimeUnit.MINUTES, threadMode = Timeout.ThreadMode.SEPARATE_THREAD) + void shouldUseADifferentThread() { + System.out.println(Thread.currentThread().getName()); + slowMethod(); + } + + @Test + void shouldFailAfterDefaultTimeoutOfFiveSeconds() { + slowMethod(); + } + + @Test + @Timeout(value = 2, unit = TimeUnit.MINUTES) + void shouldFailAfterTwoMinutes() { + slowMethod(); + } + + @Timeout(1) + @ParameterizedTest + @ValueSource(ints = {1, 2, 3, 4, 5}) + void eachTestShouldFailAfterOneSecond(int input) { + slowMethod(); + } + + @Nested + class NestedClassWithoutTimeout { + @Test + void shouldFailAfterParentsDefaultTimeoutOfFiveSeconds() { + slowMethod(); + } + } + + @Nested + @Timeout(3) + class NestedClassWithTimeout { + + @Test + void shouldFailAfterNestedClassTimeoutOfThreeSeconds() { + slowMethod(); + } + + @Test + @Timeout(1) + void shouldFailAfterOneSecond() { + slowMethod(); + } + } + + private void slowMethod() { + try { +// Thread.sleep(10_000); +// just for demonstration purposes +// tests cannot fail on the pipeline, bue we need failing examples in the article + } catch (Exception e) { + throw new RuntimeException(e); + } + } +} From 7eb3b2ec1ab1689a7793f5b9b5b306e91144a584 Mon Sep 17 00:00:00 2001 From: panos-kakos <102670093+panos-kakos@users.noreply.github.com> Date: Sun, 9 Apr 2023 05:48:38 +0300 Subject: [PATCH 79/85] [JAVA-19668] Clean up (#13767) --- .../baeldung/reflections/ReflectionsApp.java | 71 ------------------- .../reflections/ReflectionsUnitTest.java | 50 ------------- libraries-jdk8/README.md | 2 +- 3 files changed, 1 insertion(+), 122 deletions(-) delete mode 100644 libraries-6/src/main/java/com/baeldung/reflections/ReflectionsApp.java delete mode 100644 libraries-6/src/test/java/com/baeldung/reflections/ReflectionsUnitTest.java diff --git a/libraries-6/src/main/java/com/baeldung/reflections/ReflectionsApp.java b/libraries-6/src/main/java/com/baeldung/reflections/ReflectionsApp.java deleted file mode 100644 index 4f5b6dd183..0000000000 --- a/libraries-6/src/main/java/com/baeldung/reflections/ReflectionsApp.java +++ /dev/null @@ -1,71 +0,0 @@ -package com.baeldung.reflections; - -import java.lang.reflect.Constructor; -import java.lang.reflect.Method; -import java.util.Date; -import java.util.Set; -import java.util.regex.Pattern; - -import org.reflections.Reflections; -import org.reflections.scanners.MethodAnnotationsScanner; -import org.reflections.scanners.MethodParameterScanner; -import org.reflections.scanners.ResourcesScanner; -import org.reflections.scanners.Scanner; -import org.reflections.scanners.SubTypesScanner; -import org.reflections.util.ClasspathHelper; -import org.reflections.util.ConfigurationBuilder; - -public class ReflectionsApp { - - public Set> getReflectionsSubTypes() { - Reflections reflections = new Reflections("org.reflections"); - Set> scannersSet = reflections.getSubTypesOf(Scanner.class); - return scannersSet; - } - - public Set> getJDKFunctinalInterfaces() { - Reflections reflections = new Reflections("java.util.function"); - Set> typesSet = reflections.getTypesAnnotatedWith(FunctionalInterface.class); - return typesSet; - } - - public Set getDateDeprecatedMethods() { - Reflections reflections = new Reflections(java.util.Date.class, new MethodAnnotationsScanner()); - Set deprecatedMethodsSet = reflections.getMethodsAnnotatedWith(Deprecated.class); - return deprecatedMethodsSet; - } - - @SuppressWarnings("rawtypes") - public Set getDateDeprecatedConstructors() { - Reflections reflections = new Reflections(java.util.Date.class, new MethodAnnotationsScanner()); - Set constructorsSet = reflections.getConstructorsAnnotatedWith(Deprecated.class); - return constructorsSet; - } - - public Set getMethodsWithDateParam() { - Reflections reflections = new Reflections(java.text.SimpleDateFormat.class, new MethodParameterScanner()); - Set methodsSet = reflections.getMethodsMatchParams(Date.class); - return methodsSet; - } - - public Set getMethodsWithVoidReturn() { - Reflections reflections = new Reflections(java.text.SimpleDateFormat.class, new MethodParameterScanner()); - Set methodsSet = reflections.getMethodsReturn(void.class); - return methodsSet; - } - - public Set getPomXmlPaths() { - Reflections reflections = new Reflections(new ResourcesScanner()); - Set resourcesSet = reflections.getResources(Pattern.compile(".*pom\\.xml")); - return resourcesSet; - } - - public Set> getReflectionsSubTypesUsingBuilder() { - Reflections reflections = new Reflections(new ConfigurationBuilder().setUrls(ClasspathHelper.forPackage("org.reflections")) - .setScanners(new SubTypesScanner())); - - Set> scannersSet = reflections.getSubTypesOf(Scanner.class); - return scannersSet; - } - -} diff --git a/libraries-6/src/test/java/com/baeldung/reflections/ReflectionsUnitTest.java b/libraries-6/src/test/java/com/baeldung/reflections/ReflectionsUnitTest.java deleted file mode 100644 index b86094b6f4..0000000000 --- a/libraries-6/src/test/java/com/baeldung/reflections/ReflectionsUnitTest.java +++ /dev/null @@ -1,50 +0,0 @@ -package com.baeldung.reflections; - -import static org.junit.jupiter.api.Assertions.assertFalse; - -import org.junit.jupiter.api.Test; - -public class ReflectionsUnitTest { - - @Test - public void givenTypeThenGetAllSubTypes() { - ReflectionsApp reflectionsApp = new ReflectionsApp(); - assertFalse(reflectionsApp.getReflectionsSubTypes() - .isEmpty()); - } - - @Test - public void givenTypeAndUsingBuilderThenGetAllSubTypes() { - ReflectionsApp reflectionsApp = new ReflectionsApp(); - assertFalse(reflectionsApp.getReflectionsSubTypesUsingBuilder() - .isEmpty()); - } - - @Test - public void givenAnnotationThenGetAllAnnotatedMethods() { - ReflectionsApp reflectionsApp = new ReflectionsApp(); - assertFalse(reflectionsApp.getDateDeprecatedMethods() - .isEmpty()); - } - - @Test - public void givenAnnotationThenGetAllAnnotatedConstructors() { - ReflectionsApp reflectionsApp = new ReflectionsApp(); - assertFalse(reflectionsApp.getDateDeprecatedConstructors() - .isEmpty()); - } - - @Test - public void givenParamTypeThenGetAllMethods() { - ReflectionsApp reflectionsApp = new ReflectionsApp(); - assertFalse(reflectionsApp.getMethodsWithDateParam() - .isEmpty()); - } - - @Test - public void givenReturnTypeThenGetAllMethods() { - ReflectionsApp reflectionsApp = new ReflectionsApp(); - assertFalse(reflectionsApp.getMethodsWithVoidReturn() - .isEmpty()); - } -} diff --git a/libraries-jdk8/README.md b/libraries-jdk8/README.md index 1aefc54289..fa2126c89a 100644 --- a/libraries-jdk8/README.md +++ b/libraries-jdk8/README.md @@ -1,4 +1,4 @@ -## Libraries-7 +## Libraries-jdk8 This module contains articles about various Java libraries. These are small libraries that are relatively easy to use and do not require any separate module of their own. From 43b744f7cbd18c7a0095f8b708148f6a628c01c0 Mon Sep 17 00:00:00 2001 From: panos-kakos <102670093+panos-kakos@users.noreply.github.com> Date: Sun, 9 Apr 2023 06:01:05 +0300 Subject: [PATCH 80/85] [JAVA-18185] Downgrade to groovy 3 for spock (#13783) --- spring-boot-modules/spring-boot-testing/pom.xml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/spring-boot-modules/spring-boot-testing/pom.xml b/spring-boot-modules/spring-boot-testing/pom.xml index f54a1964f9..7eadfd9b24 100644 --- a/spring-boot-modules/spring-boot-testing/pom.xml +++ b/spring-boot-modules/spring-boot-testing/pom.xml @@ -147,7 +147,7 @@ com.baeldung.boot.Application 2.2.4 - 2.4-M1-groovy-4.0 + 2.4-M1-groovy-3.0 2.0.0 3.10.1 0.7.2 From b280691134e3e77075b9031e9e3595757af58999 Mon Sep 17 00:00:00 2001 From: Azhwani <13301425+azhwani@users.noreply.github.com> Date: Sun, 9 Apr 2023 10:26:01 +0200 Subject: [PATCH 81/85] BAEL-6311: Applying @JsonValue on fields in Jackson (#13749) Co-authored-by: Luis Javier Peris Morillo --- .../jackson/annotation/PriorityEnum.java | 16 ++++++++++++++++ .../annotation/JacksonAnnotationUnitTest.java | 10 ++++++++-- 2 files changed, 24 insertions(+), 2 deletions(-) create mode 100644 jackson-simple/src/main/java/com/baeldung/jackson/annotation/PriorityEnum.java diff --git a/jackson-simple/src/main/java/com/baeldung/jackson/annotation/PriorityEnum.java b/jackson-simple/src/main/java/com/baeldung/jackson/annotation/PriorityEnum.java new file mode 100644 index 0000000000..ed74052ede --- /dev/null +++ b/jackson-simple/src/main/java/com/baeldung/jackson/annotation/PriorityEnum.java @@ -0,0 +1,16 @@ +package com.baeldung.jackson.annotation; + +import com.fasterxml.jackson.annotation.JsonValue; + +public enum PriorityEnum { + + LOW(0), MEDIUM(1), HIGH(3); + + @JsonValue + private int level; + + PriorityEnum(int level) { + this.level = level; + } + +} diff --git a/jackson-simple/src/test/java/com/baeldung/jackson/annotation/JacksonAnnotationUnitTest.java b/jackson-simple/src/test/java/com/baeldung/jackson/annotation/JacksonAnnotationUnitTest.java index 9fb982842f..57ef231825 100644 --- a/jackson-simple/src/test/java/com/baeldung/jackson/annotation/JacksonAnnotationUnitTest.java +++ b/jackson-simple/src/test/java/com/baeldung/jackson/annotation/JacksonAnnotationUnitTest.java @@ -25,6 +25,7 @@ import com.baeldung.jackson.annotation.ignore.MyMixInForIgnoreType; import com.baeldung.jackson.annotation.dtos.withEnum.DistanceEnumWithValue; import com.baeldung.jackson.annotation.exception.UserWithRoot; import com.baeldung.jackson.annotation.exception.UserWithRootNamespace; +import com.baeldung.jackson.annotation.ignore.MyMixInForIgnoreType; import com.baeldung.jackson.annotation.jsonview.Item; import com.baeldung.jackson.annotation.jsonview.Views; import com.fasterxml.jackson.core.JsonProcessingException; @@ -97,6 +98,13 @@ public class JacksonAnnotationUnitTest { } + @Test + public void whenSerializingFieldUsingJsonValue_thenCorrect() throws IOException { + final String enumAsString = new ObjectMapper().writeValueAsString(PriorityEnum.HIGH); + + assertEquals("3", enumAsString); + } + @Test public void whenSerializingUsingJsonSerialize_thenCorrect() throws JsonProcessingException, ParseException { final SimpleDateFormat df = new SimpleDateFormat("dd-MM-yyyy hh:mm:ss"); @@ -432,7 +440,5 @@ public class JacksonAnnotationUnitTest { */ } - - } From 4272773056ed11e728f1238933ae2ca7f2f94709 Mon Sep 17 00:00:00 2001 From: panos-kakos <102670093+panos-kakos@users.noreply.github.com> Date: Sun, 9 Apr 2023 17:48:23 +0300 Subject: [PATCH 82/85] [JAVA-18156] (#13787) * [JAVA-18156] * [JAVA-18156] Revert changes + use correct profile --- logging-modules/log4j2/pom.xml | 47 ++++--------------- .../tests/CustomLoggingIntegrationTest.java | 18 +++---- .../log4j2/src/test/resources/log4j2.xml | 4 +- 3 files changed, 21 insertions(+), 48 deletions(-) diff --git a/logging-modules/log4j2/pom.xml b/logging-modules/log4j2/pom.xml index 50c7114556..9fa58769b2 100644 --- a/logging-modules/log4j2/pom.xml +++ b/logging-modules/log4j2/pom.xml @@ -68,46 +68,19 @@ none + + org.apache.maven.plugins + maven-surefire-plugin + + + json + ${java.io.tmpdir}/${maven.build.timestamp}/logfile.json + + + - - - integration-lite-first - - - - org.apache.maven.plugins - maven-surefire-plugin - - - integration-test - - test - - - - **/*ManualTest.java - **/*LiveTest.java - - - **/*IntegrationTest.java - **/*IntTest.java - - - - - - - json - ${java.io.tmpdir}/${maven.build.timestamp}/logfile.json - - - - - - - 2.9.0 diff --git a/logging-modules/log4j2/src/test/java/com/baeldung/logging/log4j2/tests/CustomLoggingIntegrationTest.java b/logging-modules/log4j2/src/test/java/com/baeldung/logging/log4j2/tests/CustomLoggingIntegrationTest.java index 3e94e4e430..06fbb33b9d 100644 --- a/logging-modules/log4j2/src/test/java/com/baeldung/logging/log4j2/tests/CustomLoggingIntegrationTest.java +++ b/logging-modules/log4j2/src/test/java/com/baeldung/logging/log4j2/tests/CustomLoggingIntegrationTest.java @@ -21,7 +21,7 @@ import com.baeldung.logging.log4j2.tests.jdbc.ConnectionFactory; @RunWith(JUnit4.class) public class CustomLoggingIntegrationTest { - + private static String logFilePath = System.getProperty("logging.folder.path"); @BeforeClass @@ -34,7 +34,7 @@ public class CustomLoggingIntegrationTest { } @Test - public void givenLoggerWithDefaultConfig_whenLogToConsole_thanOK() throws Exception { + public void givenLoggerWithDefaultConfig_whenLogToConsole_thenOK() throws Exception { Logger logger = LogManager.getLogger(getClass()); Exception e = new RuntimeException("This is only a test!"); @@ -43,7 +43,7 @@ public class CustomLoggingIntegrationTest { } @Test - public void givenLoggerWithConsoleConfig_whenLogToConsoleInColors_thanOK() throws Exception { + public void givenLoggerWithConsoleConfig_whenLogToConsoleInColors_thenOK() throws Exception { Logger logger = LogManager.getLogger("CONSOLE_PATTERN_APPENDER_MARKER"); Exception e = new RuntimeException("This is only a test!"); @@ -56,7 +56,7 @@ public class CustomLoggingIntegrationTest { } @Test - public void givenLoggerWithConsoleConfig_whenFilterByMarker_thanOK() throws Exception { + public void givenLoggerWithConsoleConfig_whenFilterByMarker_thenOK() throws Exception { Logger logger = LogManager.getLogger("CONSOLE_PATTERN_APPENDER_MARKER"); Marker appError = MarkerManager.getMarker("APP_ERROR"); Marker connectionTrace = MarkerManager.getMarker("CONN_TRACE"); @@ -66,7 +66,7 @@ public class CustomLoggingIntegrationTest { } @Test - public void givenLoggerWithConsoleConfig_whenFilterByThreadContext_thanOK() throws Exception { + public void givenLoggerWithConsoleConfig_whenFilterByThreadContext_thenOK() throws Exception { Logger logger = LogManager.getLogger("CONSOLE_PATTERN_APPENDER_THREAD_CONTEXT"); ThreadContext.put("userId", "1000"); logger.info("This is a log-visible user login. Maybe from an admin account?"); @@ -75,7 +75,7 @@ public class CustomLoggingIntegrationTest { } @Test - public void givenLoggerWithAsyncConfig_whenLogToJsonFile_thanOK() throws Exception { + public void givenLoggerWithAsyncConfig_whenLogToJsonFile_thenOK() throws Exception { Logger logger = LogManager.getLogger("ASYNC_JSON_FILE_APPENDER"); final int count = 88; @@ -90,7 +90,7 @@ public class CustomLoggingIntegrationTest { } @Test - public void givenLoggerWithFailoverConfig_whenLog_thanOK() throws Exception { + public void givenLoggerWithFailoverConfig_whenLog_thenOK() throws Exception { Logger logger = LogManager.getLogger("FAIL_OVER_SYSLOG_APPENDER"); Exception e = new RuntimeException("This is only a test!"); @@ -103,7 +103,7 @@ public class CustomLoggingIntegrationTest { } @Test - public void givenLoggerWithJdbcConfig_whenLogToDataSource_thanOK() throws Exception { + public void givenLoggerWithJdbcConfig_whenLogToDataSource_thenOK() throws Exception { Logger logger = LogManager.getLogger("JDBC_APPENDER"); final int count = 88; @@ -122,7 +122,7 @@ public class CustomLoggingIntegrationTest { } @Test - public void givenLoggerWithRollingFileConfig_whenLogToXMLFile_thanOK() throws Exception { + public void givenLoggerWithRollingFileConfig_whenLogToXMLFile_thenOK() throws Exception { Logger logger = LogManager.getLogger("XML_ROLLING_FILE_APPENDER"); final int count = 88; diff --git a/logging-modules/log4j2/src/test/resources/log4j2.xml b/logging-modules/log4j2/src/test/resources/log4j2.xml index 050e0aa705..6516d9884c 100644 --- a/logging-modules/log4j2/src/test/resources/log4j2.xml +++ b/logging-modules/log4j2/src/test/resources/log4j2.xml @@ -1,5 +1,5 @@ - - + From 8b688e4e4098d2ef0c27a0a83a96898e1fb4c623 Mon Sep 17 00:00:00 2001 From: mdabrowski-eu <57441874+mdabrowski-eu@users.noreply.github.com> Date: Mon, 10 Apr 2023 07:59:12 +0200 Subject: [PATCH 83/85] BAEL-6216 Use Mapper in Another Mapper with Mapstruct and Java (#13802) --- .../java/com/baeldung/dto/ArticleDTO.java | 12 +++++ .../java/com/baeldung/entity/Article.java | 12 +++++ .../com/baeldung/mapper/ArticleMapper.java | 20 ++++++++ .../mapper/ArticleUsingPersonMapper.java | 16 ++++++ .../mapper/ArticleMapperUnitTest.java | 49 +++++++++++++++++++ 5 files changed, 109 insertions(+) create mode 100644 mapstruct/src/main/java/com/baeldung/dto/ArticleDTO.java create mode 100644 mapstruct/src/main/java/com/baeldung/entity/Article.java create mode 100644 mapstruct/src/main/java/com/baeldung/mapper/ArticleMapper.java create mode 100644 mapstruct/src/main/java/com/baeldung/mapper/ArticleUsingPersonMapper.java create mode 100644 mapstruct/src/test/java/com/baeldung/mapper/ArticleMapperUnitTest.java diff --git a/mapstruct/src/main/java/com/baeldung/dto/ArticleDTO.java b/mapstruct/src/main/java/com/baeldung/dto/ArticleDTO.java new file mode 100644 index 0000000000..708167de94 --- /dev/null +++ b/mapstruct/src/main/java/com/baeldung/dto/ArticleDTO.java @@ -0,0 +1,12 @@ +package com.baeldung.dto; + +import lombok.Getter; +import lombok.Setter; + +@Getter +@Setter +public class ArticleDTO { + private int id; + private String name; + private PersonDTO author; +} diff --git a/mapstruct/src/main/java/com/baeldung/entity/Article.java b/mapstruct/src/main/java/com/baeldung/entity/Article.java new file mode 100644 index 0000000000..4aff8f4166 --- /dev/null +++ b/mapstruct/src/main/java/com/baeldung/entity/Article.java @@ -0,0 +1,12 @@ +package com.baeldung.entity; + +import lombok.Getter; +import lombok.Setter; + +@Getter +@Setter +public class Article { + private int id; + private String name; + private Person author; +} diff --git a/mapstruct/src/main/java/com/baeldung/mapper/ArticleMapper.java b/mapstruct/src/main/java/com/baeldung/mapper/ArticleMapper.java new file mode 100644 index 0000000000..b5b47f6b3b --- /dev/null +++ b/mapstruct/src/main/java/com/baeldung/mapper/ArticleMapper.java @@ -0,0 +1,20 @@ +package com.baeldung.mapper; + +import com.baeldung.dto.ArticleDTO; +import com.baeldung.dto.PersonDTO; +import com.baeldung.entity.Article; +import com.baeldung.entity.Person; +import org.mapstruct.Mapper; +import org.mapstruct.factory.Mappers; + +@Mapper +public interface ArticleMapper { + + ArticleMapper INSTANCE = Mappers.getMapper(ArticleMapper.class); + + ArticleDTO articleToArticleDto(Article article); + + default PersonDTO personToPersonDto(Person person) { + return Mappers.getMapper(PersonMapper.class).personToPersonDTO(person); + } +} diff --git a/mapstruct/src/main/java/com/baeldung/mapper/ArticleUsingPersonMapper.java b/mapstruct/src/main/java/com/baeldung/mapper/ArticleUsingPersonMapper.java new file mode 100644 index 0000000000..c1ea0797ed --- /dev/null +++ b/mapstruct/src/main/java/com/baeldung/mapper/ArticleUsingPersonMapper.java @@ -0,0 +1,16 @@ +package com.baeldung.mapper; + +import com.baeldung.dto.ArticleDTO; +import com.baeldung.dto.PersonDTO; +import com.baeldung.entity.Article; +import com.baeldung.entity.Person; +import org.mapstruct.Mapper; +import org.mapstruct.factory.Mappers; + +@Mapper(uses = PersonMapper.class) +public interface ArticleUsingPersonMapper { + + ArticleUsingPersonMapper INSTANCE = Mappers.getMapper(ArticleUsingPersonMapper.class); + + ArticleDTO articleToArticleDto(Article article); +} diff --git a/mapstruct/src/test/java/com/baeldung/mapper/ArticleMapperUnitTest.java b/mapstruct/src/test/java/com/baeldung/mapper/ArticleMapperUnitTest.java new file mode 100644 index 0000000000..2470915a01 --- /dev/null +++ b/mapstruct/src/test/java/com/baeldung/mapper/ArticleMapperUnitTest.java @@ -0,0 +1,49 @@ +package com.baeldung.mapper; + +import com.baeldung.dto.ArticleDTO; +import com.baeldung.dto.CarDTO; +import com.baeldung.entity.Article; +import com.baeldung.entity.Car; +import com.baeldung.entity.Person; +import org.junit.Test; + +import static org.junit.Assert.assertEquals; + +public class ArticleMapperUnitTest { + + @Test + public void givenArticle_whenMaps_thenProducesCorrectDto() { + + Article entity = new Article(); + entity.setId(1); + entity.setName("Mapstruct Mapping"); + Person author = new Person(); + author.setId("1"); + author.setName("John"); + entity.setAuthor(author); + + ArticleDTO articleDTO = ArticleMapper.INSTANCE.articleToArticleDto(entity); + + assertEquals(articleDTO.getId(), entity.getId()); + assertEquals(articleDTO.getName(), entity.getName()); + assertEquals(articleDTO.getAuthor().getName(), entity.getAuthor().getName()); + } + + @Test + public void givenArticle_whenMapsWithUses_thenProducesCorrectDto() { + + Article entity = new Article(); + entity.setId(1); + entity.setName("Mapstruct Mapping"); + Person author = new Person(); + author.setId("1"); + author.setName("John"); + entity.setAuthor(author); + + ArticleDTO articleDTO = ArticleUsingPersonMapper.INSTANCE.articleToArticleDto(entity); + + assertEquals(articleDTO.getId(), entity.getId()); + assertEquals(articleDTO.getName(), entity.getName()); + assertEquals(articleDTO.getAuthor().getName(), entity.getAuthor().getName()); + } +} From 26790b429fd6e90932a022b07528e5f23ae02dff Mon Sep 17 00:00:00 2001 From: anuragkumawat Date: Mon, 10 Apr 2023 15:07:29 +0530 Subject: [PATCH 84/85] JAVA-19118 Create new core-java-locale sub module under core-java-modules (#13612) * JAVA-19118 Create new core-java-locale sub module under core-java-modules --- core-java-modules/core-java-locale/README.md | 6 ++++++ core-java-modules/core-java-locale/pom.xml | 20 +++++++++++++++++++ .../resourcebundle/ExampleControl.java | 0 .../resourcebundle/ExampleResource.java | 0 .../resourcebundle/ExampleResource_pl.java | 0 .../resourcebundle/ExampleResource_pl_PL.java | 0 .../resourcebundle/resource.properties | 0 .../resourcebundle/resource_en.properties | 0 .../resourcebundle/resource_pl_PL.properties | 0 .../ExampleResourceUnitTest.java | 0 .../PropertyResourceUnitTest.java | 0 core-java-modules/core-java/README.md | 1 - core-java-modules/pom.xml | 1 + 13 files changed, 27 insertions(+), 1 deletion(-) create mode 100644 core-java-modules/core-java-locale/README.md create mode 100644 core-java-modules/core-java-locale/pom.xml rename core-java-modules/{core-java => core-java-locale}/src/main/java/com/baeldung/resourcebundle/ExampleControl.java (100%) rename core-java-modules/{core-java => core-java-locale}/src/main/java/com/baeldung/resourcebundle/ExampleResource.java (100%) rename core-java-modules/{core-java => core-java-locale}/src/main/java/com/baeldung/resourcebundle/ExampleResource_pl.java (100%) rename core-java-modules/{core-java => core-java-locale}/src/main/java/com/baeldung/resourcebundle/ExampleResource_pl_PL.java (100%) rename core-java-modules/{core-java => core-java-locale}/src/main/resources/resourcebundle/resource.properties (100%) rename core-java-modules/{core-java => core-java-locale}/src/main/resources/resourcebundle/resource_en.properties (100%) rename core-java-modules/{core-java => core-java-locale}/src/main/resources/resourcebundle/resource_pl_PL.properties (100%) rename core-java-modules/{core-java => core-java-locale}/src/test/java/com/baeldung/resourcebundle/ExampleResourceUnitTest.java (100%) rename core-java-modules/{core-java => core-java-locale}/src/test/java/com/baeldung/resourcebundle/PropertyResourceUnitTest.java (100%) diff --git a/core-java-modules/core-java-locale/README.md b/core-java-modules/core-java-locale/README.md new file mode 100644 index 0000000000..744b5e760f --- /dev/null +++ b/core-java-modules/core-java-locale/README.md @@ -0,0 +1,6 @@ + Core Java Locale + +### Relevant Articles: + +- [A Guide to the ResourceBundle](http://www.baeldung.com/java-resourcebundle) + diff --git a/core-java-modules/core-java-locale/pom.xml b/core-java-modules/core-java-locale/pom.xml new file mode 100644 index 0000000000..f493d572a1 --- /dev/null +++ b/core-java-modules/core-java-locale/pom.xml @@ -0,0 +1,20 @@ + + + 4.0.0 + core-java-locale + 0.1.0-SNAPSHOT + core-java-locale + jar + + + com.baeldung.core-java-modules + core-java-modules + 0.0.1-SNAPSHOT + + + + + + \ No newline at end of file diff --git a/core-java-modules/core-java/src/main/java/com/baeldung/resourcebundle/ExampleControl.java b/core-java-modules/core-java-locale/src/main/java/com/baeldung/resourcebundle/ExampleControl.java similarity index 100% rename from core-java-modules/core-java/src/main/java/com/baeldung/resourcebundle/ExampleControl.java rename to core-java-modules/core-java-locale/src/main/java/com/baeldung/resourcebundle/ExampleControl.java diff --git a/core-java-modules/core-java/src/main/java/com/baeldung/resourcebundle/ExampleResource.java b/core-java-modules/core-java-locale/src/main/java/com/baeldung/resourcebundle/ExampleResource.java similarity index 100% rename from core-java-modules/core-java/src/main/java/com/baeldung/resourcebundle/ExampleResource.java rename to core-java-modules/core-java-locale/src/main/java/com/baeldung/resourcebundle/ExampleResource.java diff --git a/core-java-modules/core-java/src/main/java/com/baeldung/resourcebundle/ExampleResource_pl.java b/core-java-modules/core-java-locale/src/main/java/com/baeldung/resourcebundle/ExampleResource_pl.java similarity index 100% rename from core-java-modules/core-java/src/main/java/com/baeldung/resourcebundle/ExampleResource_pl.java rename to core-java-modules/core-java-locale/src/main/java/com/baeldung/resourcebundle/ExampleResource_pl.java diff --git a/core-java-modules/core-java/src/main/java/com/baeldung/resourcebundle/ExampleResource_pl_PL.java b/core-java-modules/core-java-locale/src/main/java/com/baeldung/resourcebundle/ExampleResource_pl_PL.java similarity index 100% rename from core-java-modules/core-java/src/main/java/com/baeldung/resourcebundle/ExampleResource_pl_PL.java rename to core-java-modules/core-java-locale/src/main/java/com/baeldung/resourcebundle/ExampleResource_pl_PL.java diff --git a/core-java-modules/core-java/src/main/resources/resourcebundle/resource.properties b/core-java-modules/core-java-locale/src/main/resources/resourcebundle/resource.properties similarity index 100% rename from core-java-modules/core-java/src/main/resources/resourcebundle/resource.properties rename to core-java-modules/core-java-locale/src/main/resources/resourcebundle/resource.properties diff --git a/core-java-modules/core-java/src/main/resources/resourcebundle/resource_en.properties b/core-java-modules/core-java-locale/src/main/resources/resourcebundle/resource_en.properties similarity index 100% rename from core-java-modules/core-java/src/main/resources/resourcebundle/resource_en.properties rename to core-java-modules/core-java-locale/src/main/resources/resourcebundle/resource_en.properties diff --git a/core-java-modules/core-java/src/main/resources/resourcebundle/resource_pl_PL.properties b/core-java-modules/core-java-locale/src/main/resources/resourcebundle/resource_pl_PL.properties similarity index 100% rename from core-java-modules/core-java/src/main/resources/resourcebundle/resource_pl_PL.properties rename to core-java-modules/core-java-locale/src/main/resources/resourcebundle/resource_pl_PL.properties diff --git a/core-java-modules/core-java/src/test/java/com/baeldung/resourcebundle/ExampleResourceUnitTest.java b/core-java-modules/core-java-locale/src/test/java/com/baeldung/resourcebundle/ExampleResourceUnitTest.java similarity index 100% rename from core-java-modules/core-java/src/test/java/com/baeldung/resourcebundle/ExampleResourceUnitTest.java rename to core-java-modules/core-java-locale/src/test/java/com/baeldung/resourcebundle/ExampleResourceUnitTest.java diff --git a/core-java-modules/core-java/src/test/java/com/baeldung/resourcebundle/PropertyResourceUnitTest.java b/core-java-modules/core-java-locale/src/test/java/com/baeldung/resourcebundle/PropertyResourceUnitTest.java similarity index 100% rename from core-java-modules/core-java/src/test/java/com/baeldung/resourcebundle/PropertyResourceUnitTest.java rename to core-java-modules/core-java-locale/src/test/java/com/baeldung/resourcebundle/PropertyResourceUnitTest.java diff --git a/core-java-modules/core-java/README.md b/core-java-modules/core-java/README.md index 087c5d356e..f29d6abd7c 100644 --- a/core-java-modules/core-java/README.md +++ b/core-java-modules/core-java/README.md @@ -6,6 +6,5 @@ - [Java Money and the Currency API](http://www.baeldung.com/java-money-and-currency) - [Compiling Java *.class Files with javac](http://www.baeldung.com/javac) - [Introduction to Javadoc](http://www.baeldung.com/javadoc) -- [A Guide to the ResourceBundle](http://www.baeldung.com/java-resourcebundle) - [Merging java.util.Properties Objects](https://www.baeldung.com/java-merging-properties) - [Illegal Character Compilation Error](https://www.baeldung.com/java-illegal-character-error) diff --git a/core-java-modules/pom.xml b/core-java-modules/pom.xml index 1292cdc6c8..c5dbdca299 100644 --- a/core-java-modules/pom.xml +++ b/core-java-modules/pom.xml @@ -106,6 +106,7 @@ core-java-lang-operators-2 core-java-lang-syntax core-java-lang-syntax-2 + core-java-locale core-java-networking core-java-networking-2 core-java-networking-4 From 23c1abe3f27ef327eefaf3911aa15cb630a927a7 Mon Sep 17 00:00:00 2001 From: jsgrah-spring Date: Mon, 10 Apr 2023 13:35:40 +0200 Subject: [PATCH 85/85] JAVA-18116 Review log statements for projects - Week 7 - 2023 (#13583) JAVA-18116 Review log statements for projects - Week 7 - 2023 (#13583) --------- Co-authored-by: jogra --- .../concurrent/countdownlatch/Worker.java | 7 ++++++- .../concurrent/phaser/LongRunningAction.java | 15 ++++++++++----- .../concurrent/phaser/PhaserUnitTest.java | 15 ++++++++++----- .../src/test/resources/logback-test.xml | 19 +++++++++++++++++++ libraries-apache-commons-io/pom.xml | 5 +++++ .../commons/io/CommonsIOUnitTest.java | 9 ++++++--- .../src/test/resources/logback-test.xml | 12 ++++++++++++ .../model/HighEndComputerBuilder.java | 5 ++++- .../model/StandardComputerBuilder.java | 7 +++++-- .../src/test/resources/logback-test.xml | 12 ++++++++++++ .../service/TaxiFareCalculatorService.java | 6 +++++- .../VertxWithRxJavaIntegrationTest.java | 10 +++++----- 12 files changed, 99 insertions(+), 23 deletions(-) create mode 100644 core-java-modules/core-java-concurrency-advanced/src/test/resources/logback-test.xml create mode 100644 libraries-apache-commons-io/src/test/resources/logback-test.xml create mode 100644 patterns-modules/design-patterns-behavioral/src/test/resources/logback-test.xml diff --git a/core-java-modules/core-java-concurrency-advanced/src/main/java/com/baeldung/concurrent/countdownlatch/Worker.java b/core-java-modules/core-java-concurrency-advanced/src/main/java/com/baeldung/concurrent/countdownlatch/Worker.java index 389e25719b..d23f1faa69 100644 --- a/core-java-modules/core-java-concurrency-advanced/src/main/java/com/baeldung/concurrent/countdownlatch/Worker.java +++ b/core-java-modules/core-java-concurrency-advanced/src/main/java/com/baeldung/concurrent/countdownlatch/Worker.java @@ -1,9 +1,14 @@ package com.baeldung.concurrent.countdownlatch; +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; + import java.util.List; import java.util.concurrent.CountDownLatch; public class Worker implements Runnable { + + private static Logger log = LoggerFactory.getLogger(Worker.class); private final List outputScraper; private final CountDownLatch countDownLatch; @@ -15,7 +20,7 @@ public class Worker implements Runnable { @Override public void run() { // Do some work - System.out.println("Doing some logic"); + log.debug("Doing some logic"); outputScraper.add("Counted down"); countDownLatch.countDown(); } diff --git a/core-java-modules/core-java-concurrency-advanced/src/main/java/com/baeldung/concurrent/phaser/LongRunningAction.java b/core-java-modules/core-java-concurrency-advanced/src/main/java/com/baeldung/concurrent/phaser/LongRunningAction.java index c022c02085..44f84ad77c 100644 --- a/core-java-modules/core-java-concurrency-advanced/src/main/java/com/baeldung/concurrent/phaser/LongRunningAction.java +++ b/core-java-modules/core-java-concurrency-advanced/src/main/java/com/baeldung/concurrent/phaser/LongRunningAction.java @@ -1,8 +1,13 @@ package com.baeldung.concurrent.phaser; +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; + import java.util.concurrent.Phaser; class LongRunningAction implements Runnable { + + private static Logger log = LoggerFactory.getLogger(LongRunningAction.class); private String threadName; private Phaser ph; @@ -14,18 +19,18 @@ class LongRunningAction implements Runnable { @Override public void run() { - System.out.println("This is phase " + ph.getPhase()); - System.out.println("Thread " + threadName + " before long running action"); + log.info("This is phase {}", ph.getPhase()); + log.info("Thread {} before long running action", threadName); try { Thread.sleep(2000); } catch (InterruptedException e) { e.printStackTrace(); } - - System.out.println("Thread " + threadName + " action completed and waiting for others"); + + log.debug("Thread {} action completed and waiting for others", threadName); ph.arriveAndAwaitAdvance(); - System.out.println("Thread " + threadName + " proceeding in phase " + ph.getPhase()); + log.debug("Thread {} proceeding in phase {}", threadName, ph.getPhase()); ph.arriveAndDeregister(); } diff --git a/core-java-modules/core-java-concurrency-advanced/src/test/java/com/baeldung/concurrent/phaser/PhaserUnitTest.java b/core-java-modules/core-java-concurrency-advanced/src/test/java/com/baeldung/concurrent/phaser/PhaserUnitTest.java index 88c18b5149..384a1837c1 100644 --- a/core-java-modules/core-java-concurrency-advanced/src/test/java/com/baeldung/concurrent/phaser/PhaserUnitTest.java +++ b/core-java-modules/core-java-concurrency-advanced/src/test/java/com/baeldung/concurrent/phaser/PhaserUnitTest.java @@ -4,6 +4,9 @@ import org.junit.FixMethodOrder; import org.junit.Test; import org.junit.runners.MethodSorters; +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; + import java.util.concurrent.ExecutorService; import java.util.concurrent.Executors; import java.util.concurrent.Phaser; @@ -13,6 +16,8 @@ import static junit.framework.TestCase.assertEquals; @FixMethodOrder(MethodSorters.NAME_ASCENDING) public class PhaserUnitTest { + private static Logger log = LoggerFactory.getLogger(PhaserUnitTest.class); + @Test public void givenPhaser_whenCoordinateWorksBetweenThreads_thenShouldCoordinateBetweenMultiplePhases() { //given @@ -26,19 +31,19 @@ public class PhaserUnitTest { executorService.submit(new LongRunningAction("thread-3", ph)); //then - System.out.println("Thread " + Thread.currentThread().getName() + " waiting for others"); + log.debug("Thread {} waiting for others", Thread.currentThread().getName()); ph.arriveAndAwaitAdvance(); - System.out.println("Thread " + Thread.currentThread().getName() + " proceeding in phase " + ph.getPhase()); + log.debug("Thread {} proceeding in phase {}", Thread.currentThread().getName(), ph.getPhase()); assertEquals(1, ph.getPhase()); //and executorService.submit(new LongRunningAction("thread-4", ph)); executorService.submit(new LongRunningAction("thread-5", ph)); - - System.out.println("Thread " + Thread.currentThread().getName() + " waiting for others"); + + log.debug("Thread {} waiting for others", Thread.currentThread().getName()); ph.arriveAndAwaitAdvance(); - System.out.println("Thread " + Thread.currentThread().getName() + " proceeding in phase " + ph.getPhase()); + log.debug("Thread {} proceeding in phase {}", Thread.currentThread().getName(), ph.getPhase()); assertEquals(2, ph.getPhase()); diff --git a/core-java-modules/core-java-concurrency-advanced/src/test/resources/logback-test.xml b/core-java-modules/core-java-concurrency-advanced/src/test/resources/logback-test.xml new file mode 100644 index 0000000000..56af2d397e --- /dev/null +++ b/core-java-modules/core-java-concurrency-advanced/src/test/resources/logback-test.xml @@ -0,0 +1,19 @@ + + + + + %d{HH:mm:ss.SSS} [%thread] %-5level %logger{36} - %msg%n + + + + + + + + + + + + + + \ No newline at end of file diff --git a/libraries-apache-commons-io/pom.xml b/libraries-apache-commons-io/pom.xml index 7cac50a8e2..ca5cc4574d 100644 --- a/libraries-apache-commons-io/pom.xml +++ b/libraries-apache-commons-io/pom.xml @@ -23,6 +23,11 @@ commons-io ${commons-io.version} + + org.projectlombok + lombok + ${lombok.version} + diff --git a/libraries-apache-commons-io/src/test/java/com/baeldung/commons/io/CommonsIOUnitTest.java b/libraries-apache-commons-io/src/test/java/com/baeldung/commons/io/CommonsIOUnitTest.java index 7481e5a1a3..ce98e8026e 100644 --- a/libraries-apache-commons-io/src/test/java/com/baeldung/commons/io/CommonsIOUnitTest.java +++ b/libraries-apache-commons-io/src/test/java/com/baeldung/commons/io/CommonsIOUnitTest.java @@ -22,6 +22,9 @@ import java.io.FilterOutputStream; import java.io.IOException; import java.nio.charset.Charset; +import lombok.extern.slf4j.Slf4j; + +@Slf4j public class CommonsIOUnitTest { @Test @@ -47,9 +50,9 @@ public class CommonsIOUnitTest { String extension = FilenameUtils.getExtension(path); String baseName = FilenameUtils.getBaseName(path); - System.out.println("full path" + fullPath); - System.out.println("Extension" + extension); - System.out.println("Base name" + baseName); + log.debug("full path: " + fullPath); + log.debug("Extension: " + extension); + log.debug("Base name: " + baseName); } @Test diff --git a/libraries-apache-commons-io/src/test/resources/logback-test.xml b/libraries-apache-commons-io/src/test/resources/logback-test.xml new file mode 100644 index 0000000000..499cc828a2 --- /dev/null +++ b/libraries-apache-commons-io/src/test/resources/logback-test.xml @@ -0,0 +1,12 @@ + + + + + %d{yyyy-MM-dd HH:mm:ss} | %-5p | [%thread] %logger{5}:%L - %msg%n + + + + + + + \ No newline at end of file diff --git a/patterns-modules/design-patterns-behavioral/src/main/java/com/baeldung/templatemethod/model/HighEndComputerBuilder.java b/patterns-modules/design-patterns-behavioral/src/main/java/com/baeldung/templatemethod/model/HighEndComputerBuilder.java index 2ee6f93f9b..e06f1291a6 100644 --- a/patterns-modules/design-patterns-behavioral/src/main/java/com/baeldung/templatemethod/model/HighEndComputerBuilder.java +++ b/patterns-modules/design-patterns-behavioral/src/main/java/com/baeldung/templatemethod/model/HighEndComputerBuilder.java @@ -1,5 +1,8 @@ package com.baeldung.templatemethod.model; +import lombok.extern.slf4j.Slf4j; + +@Slf4j public class HighEndComputerBuilder extends ComputerBuilder { @Override @@ -11,7 +14,7 @@ public class HighEndComputerBuilder extends ComputerBuilder { public void setupMotherboard() { motherboardSetupStatus.add("Screwing the high-end motherboard to the case."); motherboardSetupStatus.add("Pluging in the power supply connectors."); - motherboardSetupStatus.forEach(step -> System.out.println(step)); + motherboardSetupStatus.forEach(step -> log.debug(step)); } @Override diff --git a/patterns-modules/design-patterns-behavioral/src/main/java/com/baeldung/templatemethod/model/StandardComputerBuilder.java b/patterns-modules/design-patterns-behavioral/src/main/java/com/baeldung/templatemethod/model/StandardComputerBuilder.java index da2c2e9b2d..f5b953c830 100644 --- a/patterns-modules/design-patterns-behavioral/src/main/java/com/baeldung/templatemethod/model/StandardComputerBuilder.java +++ b/patterns-modules/design-patterns-behavioral/src/main/java/com/baeldung/templatemethod/model/StandardComputerBuilder.java @@ -1,5 +1,8 @@ package com.baeldung.templatemethod.model; - + +import lombok.extern.slf4j.Slf4j; + +@Slf4j public class StandardComputerBuilder extends ComputerBuilder { @Override @@ -11,7 +14,7 @@ public class StandardComputerBuilder extends ComputerBuilder { public void setupMotherboard() { motherboardSetupStatus.add("Screwing the standard motherboard to the case."); motherboardSetupStatus.add("Pluging in the power supply connectors."); - motherboardSetupStatus.forEach(step -> System.out.println(step)); + motherboardSetupStatus.forEach(step -> log.debug(step)); } @Override diff --git a/patterns-modules/design-patterns-behavioral/src/test/resources/logback-test.xml b/patterns-modules/design-patterns-behavioral/src/test/resources/logback-test.xml new file mode 100644 index 0000000000..499cc828a2 --- /dev/null +++ b/patterns-modules/design-patterns-behavioral/src/test/resources/logback-test.xml @@ -0,0 +1,12 @@ + + + + + %d{yyyy-MM-dd HH:mm:ss} | %-5p | [%thread] %logger{5}:%L - %msg%n + + + + + + + \ No newline at end of file diff --git a/spring-drools/src/main/java/com/baeldung/spring/drools/service/TaxiFareCalculatorService.java b/spring-drools/src/main/java/com/baeldung/spring/drools/service/TaxiFareCalculatorService.java index c2c5b399df..8f6f49c29b 100644 --- a/spring-drools/src/main/java/com/baeldung/spring/drools/service/TaxiFareCalculatorService.java +++ b/spring-drools/src/main/java/com/baeldung/spring/drools/service/TaxiFareCalculatorService.java @@ -2,6 +2,8 @@ package com.baeldung.spring.drools.service; import org.kie.api.runtime.KieContainer; import org.kie.api.runtime.KieSession; +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; @@ -11,6 +13,8 @@ import com.baeldung.spring.drools.model.TaxiRide; @Service public class TaxiFareCalculatorService { + private static final Logger LOGGER = LoggerFactory.getLogger(TaxiFareCalculatorService.class); + @Autowired private KieContainer kContainer; @@ -20,7 +24,7 @@ public class TaxiFareCalculatorService { kieSession.insert(taxiRide); kieSession.fireAllRules(); kieSession.dispose(); - System.out.println("!! RIDE FARE !! " + rideFare.getTotalFare()); + LOGGER.debug("!! RIDE FARE !! " + rideFare.getTotalFare()); return rideFare.getTotalFare(); } } diff --git a/vertx-modules/vertx-and-rxjava/src/test/java/com/baeldung/weather/VertxWithRxJavaIntegrationTest.java b/vertx-modules/vertx-and-rxjava/src/test/java/com/baeldung/weather/VertxWithRxJavaIntegrationTest.java index a2ddbe5007..d5d58438e2 100644 --- a/vertx-modules/vertx-and-rxjava/src/test/java/com/baeldung/weather/VertxWithRxJavaIntegrationTest.java +++ b/vertx-modules/vertx-and-rxjava/src/test/java/com/baeldung/weather/VertxWithRxJavaIntegrationTest.java @@ -45,18 +45,18 @@ public class VertxWithRxJavaIntegrationTest { // read the file that contains one city name per line fileSystem .rxReadFile("cities.txt").toFlowable() - .doOnNext(buffer -> log.info("File buffer ---\n{}\n---", buffer)) + .doOnNext(buffer -> log.debug("File buffer ---\n{}\n---", buffer)) .flatMap(buffer -> Flowable.fromArray(buffer.toString().split("\\r?\\n"))) - .doOnNext(city -> log.info("City from file: '{}'", city)) + .doOnNext(city -> log.debug("City from file: '{}'", city)) .filter(city -> !city.startsWith("#")) - .doOnNext(city -> log.info("City that survived filtering: '{}'", city)) + .doOnNext(city -> log.debug("City that survived filtering: '{}'", city)) .flatMap(city -> searchByCityName(httpClient, city)) .flatMap(HttpClientResponse::toFlowable) - .doOnNext(buffer -> log.info("JSON of city detail: '{}'", buffer)) + .doOnNext(buffer -> log.debug("JSON of city detail: '{}'", buffer)) .map(extractingWoeid()) .flatMap(cityId -> getDataByPlaceId(httpClient, cityId)) .flatMap(toBufferFlowable()) - .doOnNext(buffer -> log.info("JSON of place detail: '{}'", buffer)) + .doOnNext(buffer -> log.debug("JSON of place detail: '{}'", buffer)) .map(Buffer::toJsonObject) .map(toCityAndDayLength()) .subscribe(System.out::println, Throwable::printStackTrace);