From 4a0a7fb9376c3305f1908eb29e16b5f09c307170 Mon Sep 17 00:00:00 2001 From: panos-kakos Date: Sun, 20 Aug 2023 12:39:42 +0300 Subject: [PATCH 01/51] [JAVA-23096] Upgraded logback library version to latest available --- core-groovy-modules/core-groovy-2/gmavenplus-pom.xml | 1 - logging-modules/logback/pom.xml | 1 - maven-modules/maven-exec-plugin/pom.xml | 2 +- parent-boot-3/pom.xml | 2 +- persistence-modules/hibernate-jpa/pom.xml | 1 - persistence-modules/spring-boot-persistence-2/pom.xml | 1 - persistence-modules/spring-data-eclipselink/pom.xml | 1 - pom.xml | 2 +- 8 files changed, 3 insertions(+), 8 deletions(-) diff --git a/core-groovy-modules/core-groovy-2/gmavenplus-pom.xml b/core-groovy-modules/core-groovy-2/gmavenplus-pom.xml index 975ad6f689..9d4c78dd5f 100644 --- a/core-groovy-modules/core-groovy-2/gmavenplus-pom.xml +++ b/core-groovy-modules/core-groovy-2/gmavenplus-pom.xml @@ -168,7 +168,6 @@ UTF-8 3.9 1.8 - 1.2.3 diff --git a/logging-modules/logback/pom.xml b/logging-modules/logback/pom.xml index cddc2e72ea..8cc5468041 100644 --- a/logging-modules/logback/pom.xml +++ b/logging-modules/logback/pom.xml @@ -119,7 +119,6 @@ 3.3.5 2.0.1 2.0.0 - 1.4.8 2.0.4 1.18.22 diff --git a/maven-modules/maven-exec-plugin/pom.xml b/maven-modules/maven-exec-plugin/pom.xml index f0d4706455..b62dedec7e 100644 --- a/maven-modules/maven-exec-plugin/pom.xml +++ b/maven-modules/maven-exec-plugin/pom.xml @@ -44,7 +44,7 @@ - 1.2.6 + 1.4.11 3.8.1 1.8 diff --git a/parent-boot-3/pom.xml b/parent-boot-3/pom.xml index dabcd7850b..bde3f8f760 100644 --- a/parent-boot-3/pom.xml +++ b/parent-boot-3/pom.xml @@ -236,7 +236,7 @@ 17 ${java.version} ${java.version} - 1.4.4 + 1.4.11 2.0.3 diff --git a/persistence-modules/hibernate-jpa/pom.xml b/persistence-modules/hibernate-jpa/pom.xml index 5a99c1c4d0..59ba6a2315 100644 --- a/persistence-modules/hibernate-jpa/pom.xml +++ b/persistence-modules/hibernate-jpa/pom.xml @@ -88,7 +88,6 @@ 3.0.4 2.1.214 2.0.7 - 1.4.6 diff --git a/persistence-modules/spring-boot-persistence-2/pom.xml b/persistence-modules/spring-boot-persistence-2/pom.xml index 6bca6df2b9..dc108bb102 100644 --- a/persistence-modules/spring-boot-persistence-2/pom.xml +++ b/persistence-modules/spring-boot-persistence-2/pom.xml @@ -134,7 +134,6 @@ 21.9.0.0 2.0.7 - 1.4.6 8.0.33 diff --git a/persistence-modules/spring-data-eclipselink/pom.xml b/persistence-modules/spring-data-eclipselink/pom.xml index 34d8a1a6f8..54accd5583 100644 --- a/persistence-modules/spring-data-eclipselink/pom.xml +++ b/persistence-modules/spring-data-eclipselink/pom.xml @@ -68,7 +68,6 @@ 4.0.1 2.1.214 2.0.7 - 1.4.6 \ No newline at end of file diff --git a/pom.xml b/pom.xml index 8b9c61550a..da0994c468 100644 --- a/pom.xml +++ b/pom.xml @@ -1266,7 +1266,7 @@ 1.7.32 - 1.2.7 + 1.4.11 2.22.2 From 64870ca3bc2807339e4c6919a45419098bffdd09 Mon Sep 17 00:00:00 2001 From: panos-kakos Date: Sun, 20 Aug 2023 17:26:37 +0300 Subject: [PATCH 02/51] [JAVA-23096] Upgraded slf4j library version to latest available --- patterns-modules/design-patterns-structural/pom.xml | 10 ++++++++++ pom.xml | 2 +- 2 files changed, 11 insertions(+), 1 deletion(-) diff --git a/patterns-modules/design-patterns-structural/pom.xml b/patterns-modules/design-patterns-structural/pom.xml index e9b7194b73..473eb40b2e 100644 --- a/patterns-modules/design-patterns-structural/pom.xml +++ b/patterns-modules/design-patterns-structural/pom.xml @@ -20,6 +20,16 @@ log4j ${log4j.version} + + org.slf4j + slf4j-api + ${org.slf4j.version} + + + org.slf4j + jcl-over-slf4j + ${org.slf4j.version} + \ No newline at end of file diff --git a/pom.xml b/pom.xml index da0994c468..6fc65d5cb2 100644 --- a/pom.xml +++ b/pom.xml @@ -1265,7 +1265,7 @@ - 1.7.32 + 2.07 1.4.11 From 79bfd767eb4af8ec4890aa4810a7436c673b2142 Mon Sep 17 00:00:00 2001 From: panos-kakos Date: Sun, 20 Aug 2023 17:33:36 +0300 Subject: [PATCH 03/51] [JAVA-23096] Fixed typo --- pom.xml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/pom.xml b/pom.xml index 6fc65d5cb2..d2504118a4 100644 --- a/pom.xml +++ b/pom.xml @@ -1265,7 +1265,7 @@ - 2.07 + 2.0.7 1.4.11 From 287c8c41bdf7a060a2c8e68eb979756a1a6118c2 Mon Sep 17 00:00:00 2001 From: panos-kakos Date: Tue, 22 Aug 2023 07:37:35 +0300 Subject: [PATCH 04/51] [JAVA-22589] Converted integration test to manual --- .../eventendpoints/ResilientAppControllerIntegrationTest.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) 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 index b4378a9248..30c498640b 100644 --- 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 @@ -33,7 +33,7 @@ import org.springframework.test.annotation.DirtiesContext; @SpringBootTest(webEnvironment = SpringBootTest.WebEnvironment.RANDOM_PORT) @DirtiesContext(classMode = DirtiesContext.ClassMode.AFTER_EACH_TEST_METHOD) -class ResilientAppControllerIntegrationTest { +class ResilientAppControllerManualTest { private final Logger LOGGER = LoggerFactory.getLogger(getClass()); From ddd19c7d3b0dcae834fd11ba3301db7147dc5f18 Mon Sep 17 00:00:00 2001 From: panos-kakos Date: Thu, 24 Aug 2023 08:00:11 +0300 Subject: [PATCH 05/51] [JAVA-23096] Defined logback & slf4j version for muleesb module --- muleesb/pom.xml | 2 ++ 1 file changed, 2 insertions(+) diff --git a/muleesb/pom.xml b/muleesb/pom.xml index a2204c15b7..468b355323 100644 --- a/muleesb/pom.xml +++ b/muleesb/pom.xml @@ -217,6 +217,8 @@ 1.3.6 1.10 2.2.1 + 1.2.7 + 1.7.32 \ No newline at end of file From fdf58ba3ca4a8dc030e2e1cfbad3491a9b3fecae Mon Sep 17 00:00:00 2001 From: panos-kakos Date: Thu, 24 Aug 2023 08:16:46 +0300 Subject: [PATCH 06/51] [JAVA-23096] Defined logback & slf4j version for jdk8 modules --- spring-cloud-modules/pom.xml | 2 ++ spring-exceptions/pom.xml | 2 ++ spring-integration/pom.xml | 2 ++ spring-jenkins-pipeline/pom.xml | 2 ++ spring-security-modules/spring-security-ldap/pom.xml | 2 ++ spring-swagger-codegen/pom.xml | 6 ++++++ 6 files changed, 16 insertions(+) diff --git a/spring-cloud-modules/pom.xml b/spring-cloud-modules/pom.xml index 9c926bbe61..c9155329ae 100644 --- a/spring-cloud-modules/pom.xml +++ b/spring-cloud-modules/pom.xml @@ -97,6 +97,8 @@ 1.4.7.RELEASE 1.4.7.RELEASE 3.1.3 + 1.2.7 + 1.7.32 diff --git a/spring-exceptions/pom.xml b/spring-exceptions/pom.xml index 8912cad674..fc1b6562dc 100644 --- a/spring-exceptions/pom.xml +++ b/spring-exceptions/pom.xml @@ -182,6 +182,8 @@ 2.7 1.6.1 3.3.2 + 1.2.7 + 1.7.32 \ No newline at end of file diff --git a/spring-integration/pom.xml b/spring-integration/pom.xml index abf5cfb3d6..4cfff55796 100644 --- a/spring-integration/pom.xml +++ b/spring-integration/pom.xml @@ -132,6 +132,8 @@ 2.10 2.3.0 42.3.8 + 1.2.7 + 1.7.32 \ No newline at end of file diff --git a/spring-jenkins-pipeline/pom.xml b/spring-jenkins-pipeline/pom.xml index 0d4ad05fc8..db9aa7f8b7 100644 --- a/spring-jenkins-pipeline/pom.xml +++ b/spring-jenkins-pipeline/pom.xml @@ -81,6 +81,8 @@ 2.17 + 1.2.7 + 1.7.32 \ No newline at end of file diff --git a/spring-security-modules/spring-security-ldap/pom.xml b/spring-security-modules/spring-security-ldap/pom.xml index 471ffff4a1..f6b4deb732 100644 --- a/spring-security-modules/spring-security-ldap/pom.xml +++ b/spring-security-modules/spring-security-ldap/pom.xml @@ -79,6 +79,8 @@ 1.5.5 + 1.2.7 + 1.7.32 \ No newline at end of file diff --git a/spring-swagger-codegen/pom.xml b/spring-swagger-codegen/pom.xml index d4fff7eb63..52754b1b63 100644 --- a/spring-swagger-codegen/pom.xml +++ b/spring-swagger-codegen/pom.xml @@ -21,4 +21,10 @@ spring-swagger-codegen-app + + + 1.2.7 + 1.7.32 + + \ No newline at end of file From b23e1569295ec0013021f5c460cc3ca5ae153aaa Mon Sep 17 00:00:00 2001 From: panos-kakos Date: Thu, 24 Aug 2023 11:56:13 +0300 Subject: [PATCH 07/51] [JAVA-23096] Defined logback & slf4j version for jdk8 modules --- spring-4/pom.xml | 1 + spring-cloud-modules/spring-cloud-bootstrap/config/pom.xml | 1 + 2 files changed, 2 insertions(+) diff --git a/spring-4/pom.xml b/spring-4/pom.xml index 681747c1f6..daf4bd7ff6 100644 --- a/spring-4/pom.xml +++ b/spring-4/pom.xml @@ -122,6 +122,7 @@ 2.4.0 4.0.3 2.17.1 + 1.2.7 \ No newline at end of file diff --git a/spring-cloud-modules/spring-cloud-bootstrap/config/pom.xml b/spring-cloud-modules/spring-cloud-bootstrap/config/pom.xml index c1be447822..2c275e2562 100644 --- a/spring-cloud-modules/spring-cloud-bootstrap/config/pom.xml +++ b/spring-cloud-modules/spring-cloud-bootstrap/config/pom.xml @@ -43,6 +43,7 @@ 2021.0.7 + 1.2.7 \ No newline at end of file From 7919d41d1802e9be539ab6c5776030b4c6d1a6d6 Mon Sep 17 00:00:00 2001 From: Bipinkumar27 Date: Thu, 24 Aug 2023 21:53:25 +0530 Subject: [PATCH 08/51] JAVA-24007: Uncommenting libraries-data-2 module --- pom.xml | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/pom.xml b/pom.xml index 12fbc3c4f0..7bfdb61cce 100644 --- a/pom.xml +++ b/pom.xml @@ -868,7 +868,7 @@ libraries-apache-commons-2 libraries-apache-commons-collections libraries-apache-commons-io - + libraries-data-2 libraries-data-io libraries-files libraries-http @@ -1140,7 +1140,7 @@ libraries-apache-commons-2 libraries-apache-commons-collections libraries-apache-commons-io - + libraries-data-2 libraries-data-io libraries-files libraries-http From 9b1d47ff4ec5cf2f17e801c967e3321c258e90f7 Mon Sep 17 00:00:00 2001 From: parthiv39731 <70740707+parthiv39731@users.noreply.github.com> Date: Thu, 24 Aug 2023 12:04:54 -0700 Subject: [PATCH 09/51] BAEL-6865, Aggregate Runtime Exceptions in Java Streams Changed method names --- core-java-modules/core-java-streams-5/pom.xml | 6 + .../baeldung/aggregateEx/CustomMapper.java | 19 ++ .../aggregateEx/ExceptionCollector.java | 41 ++++ .../entity/ExceptionAggregator.java | 27 +++ .../baeldung/aggregateEx/entity/Result.java | 27 +++ .../AggregateExceptionHandlerUnitTest.java | 180 ++++++++++++++++++ 6 files changed, 300 insertions(+) create mode 100644 core-java-modules/core-java-streams-5/src/main/java/com/baeldung/aggregateEx/CustomMapper.java create mode 100644 core-java-modules/core-java-streams-5/src/main/java/com/baeldung/aggregateEx/ExceptionCollector.java create mode 100644 core-java-modules/core-java-streams-5/src/main/java/com/baeldung/aggregateEx/entity/ExceptionAggregator.java create mode 100644 core-java-modules/core-java-streams-5/src/main/java/com/baeldung/aggregateEx/entity/Result.java create mode 100644 core-java-modules/core-java-streams-5/src/test/java/com/baeldung/aggregateEx/AggregateExceptionHandlerUnitTest.java diff --git a/core-java-modules/core-java-streams-5/pom.xml b/core-java-modules/core-java-streams-5/pom.xml index d1f8af6461..abbdb504c1 100644 --- a/core-java-modules/core-java-streams-5/pom.xml +++ b/core-java-modules/core-java-streams-5/pom.xml @@ -38,6 +38,11 @@ 3.12.0 test + + io.vavr + vavr + ${vavr.version} + @@ -67,6 +72,7 @@ 3.1 12 12 + 0.10.2 \ No newline at end of file diff --git a/core-java-modules/core-java-streams-5/src/main/java/com/baeldung/aggregateEx/CustomMapper.java b/core-java-modules/core-java-streams-5/src/main/java/com/baeldung/aggregateEx/CustomMapper.java new file mode 100644 index 0000000000..114a812fdc --- /dev/null +++ b/core-java-modules/core-java-streams-5/src/main/java/com/baeldung/aggregateEx/CustomMapper.java @@ -0,0 +1,19 @@ +package com.baeldung.aggregateEx; + +import com.baeldung.aggregateEx.entity.Result; + +import java.util.function.Function; + +public class CustomMapper { + public static Function> mapper(Function func) { + return arg -> { + Result result; + try { + result = new Result(func.apply(arg)); + } catch (Exception e) { + result = new Result(e); + } + return result; + }; + } +} diff --git a/core-java-modules/core-java-streams-5/src/main/java/com/baeldung/aggregateEx/ExceptionCollector.java b/core-java-modules/core-java-streams-5/src/main/java/com/baeldung/aggregateEx/ExceptionCollector.java new file mode 100644 index 0000000000..5472724b7c --- /dev/null +++ b/core-java-modules/core-java-streams-5/src/main/java/com/baeldung/aggregateEx/ExceptionCollector.java @@ -0,0 +1,41 @@ +package com.baeldung.aggregateEx; + +import java.util.ArrayList; +import java.util.List; +import java.util.function.Function; +import java.util.stream.Collector; + +public class ExceptionCollector { + private final List results = new ArrayList<>(); + private final List exceptions = new ArrayList<>(); + + private ExceptionCollector() { + } + + public static Collector> of(Function mapper) { + return Collector.of( + ExceptionCollector::new, + (collector, item) -> { + try { + R result = mapper.apply(item); + collector.results.add(result); + } catch (Exception e) { + collector.exceptions.add(e); + } + }, + (left, right) -> { + left.results.addAll(right.results); + left.exceptions.addAll(right.exceptions); + return left; + } + ); + } + + public List getResults() { + return results; + } + + public List getExceptions() { + return exceptions; + } +} diff --git a/core-java-modules/core-java-streams-5/src/main/java/com/baeldung/aggregateEx/entity/ExceptionAggregator.java b/core-java-modules/core-java-streams-5/src/main/java/com/baeldung/aggregateEx/entity/ExceptionAggregator.java new file mode 100644 index 0000000000..b4c38db2cf --- /dev/null +++ b/core-java-modules/core-java-streams-5/src/main/java/com/baeldung/aggregateEx/entity/ExceptionAggregator.java @@ -0,0 +1,27 @@ +package com.baeldung.aggregateEx.entity; + +import java.util.ArrayList; +import java.util.List; + +public class ExceptionAggregator extends RuntimeException { + private List exceptions; + + public ExceptionAggregator(String message) { + super(message); + exceptions = new ArrayList<>(); + } + + public List getExceptions() { + return exceptions; + } + + public Exception addException(Exception e) { + this.addSuppressed(e); + exceptions.add(e); + return e; + } + + public void addExceptions(List exceptions) { + exceptions.forEach(this::addException); + } +} diff --git a/core-java-modules/core-java-streams-5/src/main/java/com/baeldung/aggregateEx/entity/Result.java b/core-java-modules/core-java-streams-5/src/main/java/com/baeldung/aggregateEx/entity/Result.java new file mode 100644 index 0000000000..287cccd060 --- /dev/null +++ b/core-java-modules/core-java-streams-5/src/main/java/com/baeldung/aggregateEx/entity/Result.java @@ -0,0 +1,27 @@ +package com.baeldung.aggregateEx.entity; + +import java.util.Optional; + +public class Result { + private Optional result; + private Optional exception; + + public Result(R result) { + this.result = Optional.of(result); + this.exception = Optional.empty(); + } + + public Result(Exception exception) { + this.exception = Optional.of(exception); + this.result = Optional.empty(); + } + + public Optional getResult() { + return result; + } + + public Optional getException() { + return exception; + } + +} diff --git a/core-java-modules/core-java-streams-5/src/test/java/com/baeldung/aggregateEx/AggregateExceptionHandlerUnitTest.java b/core-java-modules/core-java-streams-5/src/test/java/com/baeldung/aggregateEx/AggregateExceptionHandlerUnitTest.java new file mode 100644 index 0000000000..952ec376ac --- /dev/null +++ b/core-java-modules/core-java-streams-5/src/test/java/com/baeldung/aggregateEx/AggregateExceptionHandlerUnitTest.java @@ -0,0 +1,180 @@ +package com.baeldung.aggregateEx; + +import com.baeldung.aggregateEx.entity.ExceptionAggregator; +import com.baeldung.aggregateEx.entity.Result; + +import static org.junit.Assert.*; + +import io.vavr.control.Either; +import io.vavr.control.Try; +import org.junit.Test; + +import java.util.Arrays; +import java.util.List; +import java.util.Map; +import java.util.Objects; +import java.util.stream.Collectors; + +public class AggregateExceptionHandlerUnitTest { + + private static RuntimeException process(String str) { + try { + Integer.parseInt(str); + return null; + } catch (NumberFormatException e) { + return new RuntimeException(e); + } + } + + private static Object transform(String str) { + try { + return (Integer.parseInt(str)); + } catch (NumberFormatException e) { + return new RuntimeException(e); + } + } + + @Test + public void givenExtractedMethod_whenFoundNonInt_thenAggregateException() { + String[] strings = {"1", "2", "3", "a", "b", "c"}; + RuntimeException runEx = Arrays.stream(strings) + .map(AggregateExceptionHandlerUnitTest::process) + .filter(Objects::nonNull) + .reduce(new RuntimeException("Errors Occurred"), (o1, o2) -> { + o1.addSuppressed(o2); + return o1; + }); + assertEquals("Errors Occurred", runEx.getMessage()); + assertEquals(3, runEx.getSuppressed().length); + } + + @Test + public void givenTryCatchInPipeline_whenFoundNonInts_thenAggregateException() { + String[] strings = {"1", "2", "3", "a", "b", "c"}; + RuntimeException runEx = Arrays.stream(strings) + .map(str -> { + try { + Integer.parseInt(str); + return null; + } catch (NumberFormatException e) { + return new RuntimeException(e); + } + }) + .filter(Objects::nonNull) + .reduce(new RuntimeException("Errors Occurred"), (o1, o2) -> { + o1.addSuppressed(o2); + return o1; + }); + assertEquals("Errors Occurred", runEx.getMessage()); + assertEquals(3, runEx.getSuppressed().length); + } + + @Test + public void whenFoundNonInts_thenAggregateExceptionAndReturnOutput() { + String[] strings = {"1", "2", "3", "a", "b", "c"}; + Map resultMap = Arrays.stream(strings) + .map(AggregateExceptionHandlerUnitTest::transform) + .collect(Collectors.partitioningBy(o -> o instanceof RuntimeException, Collectors.toList())); + RuntimeException ex = null; + if (resultMap.containsKey(Boolean.TRUE)) { + List exs = (List) resultMap.get(Boolean.TRUE); + ex = exs.stream() + .reduce( + new RuntimeException("Errors Occurred"), (o1, o2) -> { + o1.addSuppressed(o2); + return o1; + }); + } + assertEquals("Errors Occurred", ex.getMessage()); + assertEquals(3, ex.getSuppressed().length); + } + + @Test + public void givenWrapFunction_whenFoundNonInts_thenAggregateException() throws ExceptionAggregator { + String[] strings = {"1", "2", "3", "a", "b", "c"}; + Map>> resultmap = Arrays.stream(strings) + .map(CustomMapper.mapper(Integer::parseInt)) + .collect(Collectors.partitioningBy(r -> r.getException().isEmpty(), Collectors.toList())); + + if (resultmap.containsKey(Boolean.FALSE)) { + List> resultList = resultmap.get(Boolean.FALSE); + List exceptionList = resultList.stream() + .map(opex -> opex.getException().get()) + .collect(Collectors.toList()); + + assertThrows(ExceptionAggregator.class, () -> handleExceptions(exceptionList)); + } + } + + private void handleExceptions(List exceptions) throws ExceptionAggregator { + ExceptionAggregator exceptionAggregator = new ExceptionAggregator("Errors occurred"); + exceptionAggregator.addExceptions(exceptions); + throw exceptionAggregator; + } + + @Test + public void givenExCollector_whenFoundNonInts_thenAggregateException() throws ExceptionAggregator { + String[] strings = {"1", "2", "3", "a", "b", "c"}; + ExceptionCollector exCollector = Arrays.stream(strings) + .collect(ExceptionCollector.of(Integer::parseInt)); + List output = exCollector.getResults(); + List runEx = exCollector.getExceptions(); + assertEquals(3, runEx.size()); + } + + private static Either processAndReturnEither(String str) { + Either either = null; + try { + either = Either.right(Integer.parseInt(str)); + } catch (NumberFormatException e) { + either = Either.left(new RuntimeException(e)); + } + return either; + } + + @Test + public void givenVavrEither_whenFoundNonInts_thenAggregateException() { + List strings = List.of("1", "2", "3", "a", "b", "c"); + Map>> map = strings.stream() + .map(str -> processAndReturnEither(str)) + .collect(Collectors.partitioningBy((t) -> t.isLeft(), Collectors.toList())); + + RuntimeException runEx = map.get(Boolean.TRUE) + .stream().map(either -> either.getLeft()) + .reduce(new RuntimeException("Errors Occurred"), (o1, o2) -> { + o1.addSuppressed(o2); + return o1; + }); + assertEquals(3, runEx.getSuppressed().length); + } + + @Test + public void givenVavrTry_whenFoundNonInts_thenAggregateException() { + List strings = List.of("1", "2", "3", "a", "b", "c"); + Map>> map = strings.stream() + .map(str -> Try.of(() -> Integer.parseInt(str))) + .collect(Collectors.partitioningBy((t) -> t.isFailure(), Collectors.toList())); + Throwable runEx = map.get(Boolean.TRUE).stream() + .map(t -> t.getCause()) + .reduce(new RuntimeException("Errors Occurred"), (o1, o2) -> { + o1.addSuppressed(o2); + return o1; + }); + assertEquals(3, runEx.getSuppressed().length); + } + + @Test + public void givenVavrEitherAndTry_whenFoundNonInts_thenAggregateException() { + List strings = List.of("1", "2", "3", "a", "b", "c"); + Map>> map = strings.stream() + .map(str -> Try.of(() -> Integer.parseInt(str)).toEither()) + .collect(Collectors.partitioningBy(Either::isLeft, Collectors.toList())); + Throwable runEx = map.get(Boolean.TRUE).stream() + .map(either -> either.getLeft()) + .reduce(new RuntimeException("Errors Occurred"), (o1, o2) -> { + o1.addSuppressed(o2); + return o1; + }); + assertEquals(3, runEx.getSuppressed().length); + } +} From eedf7d6089fd1fbc00309776e7fed945126da15c Mon Sep 17 00:00:00 2001 From: Bipinkumar27 Date: Fri, 25 Aug 2023 08:47:44 +0530 Subject: [PATCH 10/51] JAVA-240007: Ignore givenJWT_whenCreatedWithNotBefore_thenThrowException due to failing in prod env need to investigate more in JAVA-24552 --- .../com/baeldung/jwt/auth0/Auth0JsonWebTokenUnitTest.java | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/security-modules/jwt/src/test/java/com/baeldung/jwt/auth0/Auth0JsonWebTokenUnitTest.java b/security-modules/jwt/src/test/java/com/baeldung/jwt/auth0/Auth0JsonWebTokenUnitTest.java index a9c3b4185d..c5a870170b 100644 --- a/security-modules/jwt/src/test/java/com/baeldung/jwt/auth0/Auth0JsonWebTokenUnitTest.java +++ b/security-modules/jwt/src/test/java/com/baeldung/jwt/auth0/Auth0JsonWebTokenUnitTest.java @@ -7,6 +7,7 @@ import static org.junit.jupiter.api.Assertions.assertThrows; import java.util.Date; +import org.junit.Ignore; import org.junit.jupiter.api.BeforeAll; import org.junit.jupiter.api.Test; @@ -97,7 +98,8 @@ public class Auth0JsonWebTokenUnitTest { assertEquals(DATA, claim.asString()); } - @Test + //Need to fix with JAVA-24552 + @Ignore public void givenJWT_whenCreatedWithNotBefore_thenThrowException() { jwtToken = JWT.create() From 63f511b9c607ac599d49773b4d613c6752246c07 Mon Sep 17 00:00:00 2001 From: parthiv39731 <70740707+parthiv39731@users.noreply.github.com> Date: Fri, 25 Aug 2023 09:50:53 -0700 Subject: [PATCH 11/51] Update core-java-modules/core-java-streams-5/src/test/java/com/baeldung/aggregateEx/AggregateExceptionHandlerUnitTest.java removing extra parentheses Co-authored-by: Liam Williams --- .../baeldung/aggregateEx/AggregateExceptionHandlerUnitTest.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/core-java-modules/core-java-streams-5/src/test/java/com/baeldung/aggregateEx/AggregateExceptionHandlerUnitTest.java b/core-java-modules/core-java-streams-5/src/test/java/com/baeldung/aggregateEx/AggregateExceptionHandlerUnitTest.java index 952ec376ac..20cce4440b 100644 --- a/core-java-modules/core-java-streams-5/src/test/java/com/baeldung/aggregateEx/AggregateExceptionHandlerUnitTest.java +++ b/core-java-modules/core-java-streams-5/src/test/java/com/baeldung/aggregateEx/AggregateExceptionHandlerUnitTest.java @@ -28,7 +28,7 @@ public class AggregateExceptionHandlerUnitTest { private static Object transform(String str) { try { - return (Integer.parseInt(str)); + return Integer.parseInt(str); } catch (NumberFormatException e) { return new RuntimeException(e); } From 5bf002e0fdf017c2e1b4384eadde496982fd1760 Mon Sep 17 00:00:00 2001 From: parthiv39731 <70740707+parthiv39731@users.noreply.github.com> Date: Fri, 25 Aug 2023 10:35:47 -0700 Subject: [PATCH 12/51] BAEL-6865, taking care of review comments as part of PR-14653 --- .../baeldung/aggregateEx/CustomMapper.java | 6 +- .../AggregateExceptionHandlerUnitTest.java | 71 ++++++++++--------- 2 files changed, 39 insertions(+), 38 deletions(-) diff --git a/core-java-modules/core-java-streams-5/src/main/java/com/baeldung/aggregateEx/CustomMapper.java b/core-java-modules/core-java-streams-5/src/main/java/com/baeldung/aggregateEx/CustomMapper.java index 114a812fdc..47b433a132 100644 --- a/core-java-modules/core-java-streams-5/src/main/java/com/baeldung/aggregateEx/CustomMapper.java +++ b/core-java-modules/core-java-streams-5/src/main/java/com/baeldung/aggregateEx/CustomMapper.java @@ -7,13 +7,11 @@ import java.util.function.Function; public class CustomMapper { public static Function> mapper(Function func) { return arg -> { - Result result; try { - result = new Result(func.apply(arg)); + return new Result(func.apply(arg)); } catch (Exception e) { - result = new Result(e); + return new Result(e); } - return result; }; } } diff --git a/core-java-modules/core-java-streams-5/src/test/java/com/baeldung/aggregateEx/AggregateExceptionHandlerUnitTest.java b/core-java-modules/core-java-streams-5/src/test/java/com/baeldung/aggregateEx/AggregateExceptionHandlerUnitTest.java index 952ec376ac..dff9dafbb7 100644 --- a/core-java-modules/core-java-streams-5/src/test/java/com/baeldung/aggregateEx/AggregateExceptionHandlerUnitTest.java +++ b/core-java-modules/core-java-streams-5/src/test/java/com/baeldung/aggregateEx/AggregateExceptionHandlerUnitTest.java @@ -2,9 +2,6 @@ package com.baeldung.aggregateEx; import com.baeldung.aggregateEx.entity.ExceptionAggregator; import com.baeldung.aggregateEx.entity.Result; - -import static org.junit.Assert.*; - import io.vavr.control.Either; import io.vavr.control.Try; import org.junit.Test; @@ -15,6 +12,8 @@ import java.util.Map; import java.util.Objects; import java.util.stream.Collectors; +import static org.junit.Assert.*; + public class AggregateExceptionHandlerUnitTest { private static RuntimeException process(String str) { @@ -28,14 +27,14 @@ public class AggregateExceptionHandlerUnitTest { private static Object transform(String str) { try { - return (Integer.parseInt(str)); + return Integer.parseInt(str); } catch (NumberFormatException e) { return new RuntimeException(e); } } @Test - public void givenExtractedMethod_whenFoundNonInt_thenAggregateException() { + public void givenExtractedMethod_whenFoundNonInt_thenSuppressExIntoRuntimeEx() { String[] strings = {"1", "2", "3", "a", "b", "c"}; RuntimeException runEx = Arrays.stream(strings) .map(AggregateExceptionHandlerUnitTest::process) @@ -49,7 +48,7 @@ public class AggregateExceptionHandlerUnitTest { } @Test - public void givenTryCatchInPipeline_whenFoundNonInts_thenAggregateException() { + public void givenTryCatchInPipeline_whenFoundNonInts_thenSuppressExIntoRuntimeEx() { String[] strings = {"1", "2", "3", "a", "b", "c"}; RuntimeException runEx = Arrays.stream(strings) .map(str -> { @@ -70,40 +69,44 @@ public class AggregateExceptionHandlerUnitTest { } @Test - public void whenFoundNonInts_thenAggregateExceptionAndReturnOutput() { + public void givenExtractedMethodReturnOutputAndEx_whenFoundNonInts_thenSuppressExIntoRuntimeEx() { String[] strings = {"1", "2", "3", "a", "b", "c"}; Map resultMap = Arrays.stream(strings) .map(AggregateExceptionHandlerUnitTest::transform) .collect(Collectors.partitioningBy(o -> o instanceof RuntimeException, Collectors.toList())); + RuntimeException ex = null; - if (resultMap.containsKey(Boolean.TRUE)) { - List exs = (List) resultMap.get(Boolean.TRUE); - ex = exs.stream() - .reduce( - new RuntimeException("Errors Occurred"), (o1, o2) -> { - o1.addSuppressed(o2); - return o1; - }); - } + + assertTrue(resultMap.containsKey(Boolean.TRUE)); + + List exs = (List) resultMap.get(Boolean.TRUE); + ex = exs.stream() + .reduce( + new RuntimeException("Errors Occurred"), (o1, o2) -> { + o1.addSuppressed(o2); + return o1; + }); + assertEquals("Errors Occurred", ex.getMessage()); assertEquals(3, ex.getSuppressed().length); } @Test - public void givenWrapFunction_whenFoundNonInts_thenAggregateException() throws ExceptionAggregator { + public void givenWrapFunction_whenFoundNonInts_thenUseExAggregator() throws ExceptionAggregator { String[] strings = {"1", "2", "3", "a", "b", "c"}; Map>> resultmap = Arrays.stream(strings) .map(CustomMapper.mapper(Integer::parseInt)) .collect(Collectors.partitioningBy(r -> r.getException().isEmpty(), Collectors.toList())); - if (resultmap.containsKey(Boolean.FALSE)) { - List> resultList = resultmap.get(Boolean.FALSE); - List exceptionList = resultList.stream() - .map(opex -> opex.getException().get()) - .collect(Collectors.toList()); + assertTrue(resultmap.containsKey(Boolean.TRUE)); + + List> resultList = resultmap.get(Boolean.FALSE); + List exceptionList = resultList.stream() + .map(opex -> opex.getException().get()) + .collect(Collectors.toList()); + + assertThrows(ExceptionAggregator.class, () -> handleExceptions(exceptionList)); - assertThrows(ExceptionAggregator.class, () -> handleExceptions(exceptionList)); - } } private void handleExceptions(List exceptions) throws ExceptionAggregator { @@ -113,7 +116,7 @@ public class AggregateExceptionHandlerUnitTest { } @Test - public void givenExCollector_whenFoundNonInts_thenAggregateException() throws ExceptionAggregator { + public void givenExCollector_whenFoundNonInts_thenAggregateExInCustomCollector() throws ExceptionAggregator { String[] strings = {"1", "2", "3", "a", "b", "c"}; ExceptionCollector exCollector = Arrays.stream(strings) .collect(ExceptionCollector.of(Integer::parseInt)); @@ -123,21 +126,21 @@ public class AggregateExceptionHandlerUnitTest { } private static Either processAndReturnEither(String str) { - Either either = null; try { - either = Either.right(Integer.parseInt(str)); + return Either.right(Integer.parseInt(str)); } catch (NumberFormatException e) { - either = Either.left(new RuntimeException(e)); + return Either.left(new RuntimeException(e)); } - return either; } @Test - public void givenVavrEither_whenFoundNonInts_thenAggregateException() { + public void givenVavrEither_whenFoundNonInts_thenSuppressExIntoRuntimeEx() { List strings = List.of("1", "2", "3", "a", "b", "c"); Map>> map = strings.stream() .map(str -> processAndReturnEither(str)) - .collect(Collectors.partitioningBy((t) -> t.isLeft(), Collectors.toList())); + .collect(Collectors.partitioningBy(t -> t.isLeft(), Collectors.toList())); + + assertTrue(map.containsKey(Boolean.TRUE)); RuntimeException runEx = map.get(Boolean.TRUE) .stream().map(either -> either.getLeft()) @@ -149,11 +152,11 @@ public class AggregateExceptionHandlerUnitTest { } @Test - public void givenVavrTry_whenFoundNonInts_thenAggregateException() { + public void givenVavrTry_whenFoundNonInts_thenSuppressExIntoRuntimeEx() { List strings = List.of("1", "2", "3", "a", "b", "c"); Map>> map = strings.stream() .map(str -> Try.of(() -> Integer.parseInt(str))) - .collect(Collectors.partitioningBy((t) -> t.isFailure(), Collectors.toList())); + .collect(Collectors.partitioningBy(t -> t.isFailure(), Collectors.toList())); Throwable runEx = map.get(Boolean.TRUE).stream() .map(t -> t.getCause()) .reduce(new RuntimeException("Errors Occurred"), (o1, o2) -> { @@ -164,7 +167,7 @@ public class AggregateExceptionHandlerUnitTest { } @Test - public void givenVavrEitherAndTry_whenFoundNonInts_thenAggregateException() { + public void givenVavrEitherAndTry_whenFoundNonInts_thenSuppressExIntoRuntimeEx() { List strings = List.of("1", "2", "3", "a", "b", "c"); Map>> map = strings.stream() .map(str -> Try.of(() -> Integer.parseInt(str)).toEither()) From 2743bcc498997b56c4261855362e5ef6626e3d64 Mon Sep 17 00:00:00 2001 From: abdul0214 Date: Wed, 19 Jul 2023 22:57:13 +0200 Subject: [PATCH 13/51] BAEL-5928: Adds conversion b/w Epoch & LocalDateTime --- .../epochconversion/EpochToLocalDate.java | 24 ++++++++++++ .../epochconversion/LocalDateToEpoch.java | 18 +++++++++ .../EpochToLocalDateUnitTest.java | 39 +++++++++++++++++++ .../LocalDateTimeToEpochUnitTest.java | 37 ++++++++++++++++++ 4 files changed, 118 insertions(+) create mode 100644 core-java-modules/core-java-date-operations-3/src/main/java/com/baeldung/epochconversion/EpochToLocalDate.java create mode 100644 core-java-modules/core-java-date-operations-3/src/main/java/com/baeldung/epochconversion/LocalDateToEpoch.java create mode 100644 core-java-modules/core-java-date-operations-3/src/test/java/com/baeldung/epochconversion/EpochToLocalDateUnitTest.java create mode 100644 core-java-modules/core-java-date-operations-3/src/test/java/com/baeldung/epochconversion/LocalDateTimeToEpochUnitTest.java diff --git a/core-java-modules/core-java-date-operations-3/src/main/java/com/baeldung/epochconversion/EpochToLocalDate.java b/core-java-modules/core-java-date-operations-3/src/main/java/com/baeldung/epochconversion/EpochToLocalDate.java new file mode 100644 index 0000000000..574693355d --- /dev/null +++ b/core-java-modules/core-java-date-operations-3/src/main/java/com/baeldung/epochconversion/EpochToLocalDate.java @@ -0,0 +1,24 @@ +package com.baeldung.epochconversion; + +import java.time.Instant; +import java.time.LocalDate; +import java.time.LocalDateTime; +import java.time.ZoneId; + +public class EpochToLocalDate { + + public static void main(String[] args) { + long millisSinceEpoch = 2131242L; + ZoneId zoneId = ZoneId.of("Europe/Amsterdam"); // or: ZoneId.systemDefault(); + // to get All Zone Ids available, we can use the function below + // Set allZoneIds = ZoneId.getAvailableZoneIds(); + LocalDate date = + Instant.ofEpochMilli(millisSinceEpoch) + .atZone(zoneId) + .toLocalDate(); + LocalDateTime time = + Instant.ofEpochMilli(millisSinceEpoch) + .atZone(zoneId) + .toLocalDateTime(); + } +} \ No newline at end of file diff --git a/core-java-modules/core-java-date-operations-3/src/main/java/com/baeldung/epochconversion/LocalDateToEpoch.java b/core-java-modules/core-java-date-operations-3/src/main/java/com/baeldung/epochconversion/LocalDateToEpoch.java new file mode 100644 index 0000000000..b84cd5c1a7 --- /dev/null +++ b/core-java-modules/core-java-date-operations-3/src/main/java/com/baeldung/epochconversion/LocalDateToEpoch.java @@ -0,0 +1,18 @@ +package com.baeldung.epochconversion; + +import java.time.LocalDate; +import java.time.LocalDateTime; +import java.time.ZoneId; + +public class LocalDateToEpoch { + + public static void main(String[] args) { + ZoneId zoneId = ZoneId.of("Europe/Amsterdam"); // or: ZoneId.systemDefault() + LocalDate date = LocalDate.now(); + long epochMilliSecondsAtDate = date.atStartOfDay(zoneId).toInstant().toEpochMilli(); + + // epoch for time + LocalDateTime time = LocalDateTime.parse("2019-11-15T13:15:30"); + long epochMilliSecondsAtTime = time.atZone(zoneId).toInstant().toEpochMilli(); + } +} \ No newline at end of file diff --git a/core-java-modules/core-java-date-operations-3/src/test/java/com/baeldung/epochconversion/EpochToLocalDateUnitTest.java b/core-java-modules/core-java-date-operations-3/src/test/java/com/baeldung/epochconversion/EpochToLocalDateUnitTest.java new file mode 100644 index 0000000000..90ab056511 --- /dev/null +++ b/core-java-modules/core-java-date-operations-3/src/test/java/com/baeldung/epochconversion/EpochToLocalDateUnitTest.java @@ -0,0 +1,39 @@ +package com.baeldung.epochconversion; + +import org.junit.jupiter.api.Test; + +import java.time.Instant; +import java.time.LocalDate; +import java.time.LocalDateTime; +import java.time.ZoneId; + +import static org.junit.jupiter.api.Assertions.assertEquals; + +public class EpochToLocalDateUnitTest { + + @Test + void givenEpoch_thenComputeLocalDateCorrectly() { + ZoneId zoneId = ZoneId.systemDefault(); + LocalDate expectedDate = LocalDate.of(1995, 4, 15); + long date = expectedDate.atStartOfDay(zoneId).toInstant().toEpochMilli(); + + LocalDate actualDate = + Instant.ofEpochMilli(date) + .atZone(zoneId) + .toLocalDate(); + assertEquals(expectedDate, actualDate); + } + + @Test + void givenEpoch_thenComputeLocalDateTimeCorrectly() { + ZoneId zoneId = ZoneId.systemDefault(); + LocalDateTime expectedTime = LocalDateTime.parse("2019-11-15T13:15:30"); + long time = expectedTime.atZone(zoneId).toInstant().toEpochMilli(); + + LocalDateTime actualTime = + Instant.ofEpochMilli(time) + .atZone(zoneId) + .toLocalDateTime(); + assertEquals(expectedTime, actualTime); + } +} \ No newline at end of file diff --git a/core-java-modules/core-java-date-operations-3/src/test/java/com/baeldung/epochconversion/LocalDateTimeToEpochUnitTest.java b/core-java-modules/core-java-date-operations-3/src/test/java/com/baeldung/epochconversion/LocalDateTimeToEpochUnitTest.java new file mode 100644 index 0000000000..8e9a4b01d0 --- /dev/null +++ b/core-java-modules/core-java-date-operations-3/src/test/java/com/baeldung/epochconversion/LocalDateTimeToEpochUnitTest.java @@ -0,0 +1,37 @@ +package com.baeldung.epochconversion; + +import org.junit.jupiter.api.Test; + +import java.time.Instant; +import java.time.LocalDate; +import java.time.LocalDateTime; +import java.time.ZoneId; + +import static org.junit.jupiter.api.Assertions.assertEquals; + +public class LocalDateTimeToEpochUnitTest { + + @Test + void givenDate_thenComputeEpochCorrectly() { + ZoneId zoneId = ZoneId.of("Europe/Tallinn"); + long expectedEpoch = LocalDate.now().toEpochDay(); + LocalDateTime givenDate = Instant.ofEpochMilli(expectedEpoch) + .atZone(zoneId) + .toLocalDateTime(); + + long actualEpoch = givenDate.atZone(zoneId).toInstant().toEpochMilli(); + assertEquals(expectedEpoch, actualEpoch); + } + + @Test + void givenTime_thenComputeEpochCorrectly() { + ZoneId zoneId = ZoneId.of("Europe/Amsterdam"); + long expectedEpoch = Instant.now().toEpochMilli(); + LocalDateTime givenTime = Instant.ofEpochMilli(expectedEpoch) + .atZone(zoneId) + .toLocalDateTime(); + + long actualEpoch = givenTime.atZone(zoneId).toInstant().toEpochMilli(); + assertEquals(expectedEpoch, actualEpoch); + } +} \ No newline at end of file From 5a77609143119e68f92c85feedc012aa3ae4ea99 Mon Sep 17 00:00:00 2001 From: panos-kakos Date: Sun, 27 Aug 2023 18:20:21 +0300 Subject: [PATCH 14/51] [JAVA-23096] Defined logback & slf4j version for graphql,spring-boot-persistence-3,spring-persistence-simple --- graphql-modules/graphql-spqr-boot-starter/pom.xml | 2 ++ graphql-modules/graphql-spqr/pom.xml | 2 ++ persistence-modules/spring-boot-persistence-3/pom.xml | 2 ++ persistence-modules/spring-persistence-simple/pom.xml | 2 ++ 4 files changed, 8 insertions(+) diff --git a/graphql-modules/graphql-spqr-boot-starter/pom.xml b/graphql-modules/graphql-spqr-boot-starter/pom.xml index fd9ebc0224..e15be6d1fb 100644 --- a/graphql-modules/graphql-spqr-boot-starter/pom.xml +++ b/graphql-modules/graphql-spqr-boot-starter/pom.xml @@ -36,6 +36,8 @@ 0.0.6 + 1.7.32 + 1.2.7 \ No newline at end of file diff --git a/graphql-modules/graphql-spqr/pom.xml b/graphql-modules/graphql-spqr/pom.xml index 756930f2ac..1d77246a7a 100644 --- a/graphql-modules/graphql-spqr/pom.xml +++ b/graphql-modules/graphql-spqr/pom.xml @@ -37,6 +37,8 @@ 0.11.2 + 1.7.32 + 1.2.7 \ No newline at end of file diff --git a/persistence-modules/spring-boot-persistence-3/pom.xml b/persistence-modules/spring-boot-persistence-3/pom.xml index 5e8ad64a7a..96488ee907 100644 --- a/persistence-modules/spring-boot-persistence-3/pom.xml +++ b/persistence-modules/spring-boot-persistence-3/pom.xml @@ -61,6 +61,8 @@ 2.1.8.RELEASE + 1.7.32 + 1.2.7 \ No newline at end of file diff --git a/persistence-modules/spring-persistence-simple/pom.xml b/persistence-modules/spring-persistence-simple/pom.xml index c486a95e96..04c0dfe297 100644 --- a/persistence-modules/spring-persistence-simple/pom.xml +++ b/persistence-modules/spring-persistence-simple/pom.xml @@ -101,6 +101,8 @@ 2.2.7.RELEASE 0.23.0 2.5.2 + 1.7.32 + 1.2.7 \ No newline at end of file From 1ac88d18e349e96f600d3027cc8c1a58d086ba76 Mon Sep 17 00:00:00 2001 From: panos-kakos Date: Mon, 28 Aug 2023 08:48:54 +0300 Subject: [PATCH 15/51] [JAVA-23099] Upgraded maven-compiler-plugin to latest version --- core-java-modules/core-java-14/pom.xml | 1 - core-java-modules/core-java-15/pom.xml | 1 - core-java-modules/core-java-conditionals/pom.xml | 1 - core-java-modules/core-java-streams-4/pom.xml | 1 - core-java-modules/core-java-streams-5/pom.xml | 1 - core-java-modules/core-java-streams-maps/pom.xml | 1 - jmh/pom.xml | 1 - persistence-modules/java-jpa-2/pom.xml | 1 - persistence-modules/java-jpa-3/pom.xml | 1 - pom.xml | 2 +- quarkus-modules/quarkus-vs-springboot/spring-project/pom.xml | 1 - spring-boot-modules/spring-boot-testing-spock/pom.xml | 1 - spring-boot-modules/spring-boot-testing/pom.xml | 1 - 13 files changed, 1 insertion(+), 13 deletions(-) diff --git a/core-java-modules/core-java-14/pom.xml b/core-java-modules/core-java-14/pom.xml index 9f48c0b8b2..55c50b2a5c 100644 --- a/core-java-modules/core-java-14/pom.xml +++ b/core-java-modules/core-java-14/pom.xml @@ -48,7 +48,6 @@ 14 - 3.8.1 3.0.0-M3 diff --git a/core-java-modules/core-java-15/pom.xml b/core-java-modules/core-java-15/pom.xml index 059e2cc8f3..3ac45d26ba 100644 --- a/core-java-modules/core-java-15/pom.xml +++ b/core-java-modules/core-java-15/pom.xml @@ -53,7 +53,6 @@ 15 - 3.8.1 3.0.0-M3 diff --git a/core-java-modules/core-java-conditionals/pom.xml b/core-java-modules/core-java-conditionals/pom.xml index 2a1290c98e..7cec575f61 100644 --- a/core-java-modules/core-java-conditionals/pom.xml +++ b/core-java-modules/core-java-conditionals/pom.xml @@ -50,7 +50,6 @@ 14 - 3.8.1 14 3.0.0-M3 diff --git a/core-java-modules/core-java-streams-4/pom.xml b/core-java-modules/core-java-streams-4/pom.xml index 0b9b3569f1..e832cc1616 100644 --- a/core-java-modules/core-java-streams-4/pom.xml +++ b/core-java-modules/core-java-streams-4/pom.xml @@ -115,7 +115,6 @@ 3.23.1 - 3.1 12 12 1.2.5 diff --git a/core-java-modules/core-java-streams-5/pom.xml b/core-java-modules/core-java-streams-5/pom.xml index d1f8af6461..fde48978c9 100644 --- a/core-java-modules/core-java-streams-5/pom.xml +++ b/core-java-modules/core-java-streams-5/pom.xml @@ -64,7 +64,6 @@ - 3.1 12 12 diff --git a/core-java-modules/core-java-streams-maps/pom.xml b/core-java-modules/core-java-streams-maps/pom.xml index 66e1fedd87..6b04897a29 100644 --- a/core-java-modules/core-java-streams-maps/pom.xml +++ b/core-java-modules/core-java-streams-maps/pom.xml @@ -58,7 +58,6 @@ - 3.1 1.8 1.8 diff --git a/jmh/pom.xml b/jmh/pom.xml index e5e0f46044..4fef67cb74 100644 --- a/jmh/pom.xml +++ b/jmh/pom.xml @@ -86,7 +86,6 @@ 3.3.0 0.17 3.5.0 - 3.11.0 \ No newline at end of file diff --git a/persistence-modules/java-jpa-2/pom.xml b/persistence-modules/java-jpa-2/pom.xml index 34e7f9f349..77d9590d65 100644 --- a/persistence-modules/java-jpa-2/pom.xml +++ b/persistence-modules/java-jpa-2/pom.xml @@ -156,7 +156,6 @@ 4.0.1 2.2 - 3.5.1 3.3.3 3.0.0 5.0.0 diff --git a/persistence-modules/java-jpa-3/pom.xml b/persistence-modules/java-jpa-3/pom.xml index 20143af9f0..0237da7ece 100644 --- a/persistence-modules/java-jpa-3/pom.xml +++ b/persistence-modules/java-jpa-3/pom.xml @@ -88,7 +88,6 @@ 2.7.4 8.0.21 2.2 - 3.5.1 3.3.3 3.0.0 2.1.214 diff --git a/pom.xml b/pom.xml index a8c24c7f78..c8c64d391e 100644 --- a/pom.xml +++ b/pom.xml @@ -1270,7 +1270,7 @@ 2.22.2 - 3.8.1 + 3.11.0 3.0.0 1.8 1.2.17 diff --git a/quarkus-modules/quarkus-vs-springboot/spring-project/pom.xml b/quarkus-modules/quarkus-vs-springboot/spring-project/pom.xml index df3eca8a4f..74deab3558 100644 --- a/quarkus-modules/quarkus-vs-springboot/spring-project/pom.xml +++ b/quarkus-modules/quarkus-vs-springboot/spring-project/pom.xml @@ -255,7 +255,6 @@ 1.17.2 11 0.12.1 - 3.10.1 11 11 3.1.0 diff --git a/spring-boot-modules/spring-boot-testing-spock/pom.xml b/spring-boot-modules/spring-boot-testing-spock/pom.xml index c82d88ccfb..db78143cb8 100644 --- a/spring-boot-modules/spring-boot-testing-spock/pom.xml +++ b/spring-boot-modules/spring-boot-testing-spock/pom.xml @@ -96,7 +96,6 @@ com.baeldung.boot.Application 2.4-M1-groovy-4.0 3.0.0 - 3.10.1 2.17.1 diff --git a/spring-boot-modules/spring-boot-testing/pom.xml b/spring-boot-modules/spring-boot-testing/pom.xml index 2098ac767d..41783ebd7d 100644 --- a/spring-boot-modules/spring-boot-testing/pom.xml +++ b/spring-boot-modules/spring-boot-testing/pom.xml @@ -121,7 +121,6 @@ 2.2.4 2.4-M1-groovy-4.0 3.0.0 - 3.10.1 0.7.2 2.5.0 2.17.1 From 923f895d95a7baae10dfa96451f608e9f2bfe172 Mon Sep 17 00:00:00 2001 From: panos-kakos Date: Mon, 28 Aug 2023 08:50:17 +0300 Subject: [PATCH 16/51] [JAVA-23099] Upgraded exec-maven-plugin to latest version --- microservices-modules/rest-express/pom.xml | 1 - pom.xml | 2 +- 2 files changed, 1 insertion(+), 2 deletions(-) diff --git a/microservices-modules/rest-express/pom.xml b/microservices-modules/rest-express/pom.xml index da697fdc56..182d14cfbf 100644 --- a/microservices-modules/rest-express/pom.xml +++ b/microservices-modules/rest-express/pom.xml @@ -144,7 +144,6 @@ 1.0 0.4.8 4.11 - 1.2.1 2.4.1 2.0 diff --git a/pom.xml b/pom.xml index c8c64d391e..a91dc6145a 100644 --- a/pom.xml +++ b/pom.xml @@ -1271,7 +1271,7 @@ 2.22.2 3.11.0 - 3.0.0 + 3.1.0 1.8 1.2.17 1.36 From 75f85380c5274a43831497c991956e5ef758c5ee Mon Sep 17 00:00:00 2001 From: panos-kakos Date: Mon, 28 Aug 2023 08:52:58 +0300 Subject: [PATCH 17/51] [JAVA-23099] Upgraded maven-failsafe-plugin to latest version --- core-groovy-modules/pom.xml | 1 + pom.xml | 2 +- spring-boot-modules/spring-boot-artifacts/pom.xml | 1 - testing-modules/cucumber/pom.xml | 1 - testing-modules/zerocode/pom.xml | 1 - web-modules/blade/pom.xml | 1 - 6 files changed, 2 insertions(+), 5 deletions(-) diff --git a/core-groovy-modules/pom.xml b/core-groovy-modules/pom.xml index 6faa7f94c8..4fdaf3ee7a 100644 --- a/core-groovy-modules/pom.xml +++ b/core-groovy-modules/pom.xml @@ -27,6 +27,7 @@ 2.7.1 2.3-groovy-3.0 2.1.0 + 2.21.0 diff --git a/pom.xml b/pom.xml index a91dc6145a..d0cd03700e 100644 --- a/pom.xml +++ b/pom.xml @@ -1276,7 +1276,7 @@ 1.2.17 1.36 1.36 - 2.21.0 + 3.1.2 4.4 2.13.0 2.6 diff --git a/spring-boot-modules/spring-boot-artifacts/pom.xml b/spring-boot-modules/spring-boot-artifacts/pom.xml index dedeb0ab2a..e39ddb5af1 100644 --- a/spring-boot-modules/spring-boot-artifacts/pom.xml +++ b/spring-boot-modules/spring-boot-artifacts/pom.xml @@ -193,7 +193,6 @@ 2.2.4 3.1.7 4.5.8 - 2.18 \ No newline at end of file diff --git a/testing-modules/cucumber/pom.xml b/testing-modules/cucumber/pom.xml index ffa5c0d250..6d178b86a3 100644 --- a/testing-modules/cucumber/pom.xml +++ b/testing-modules/cucumber/pom.xml @@ -124,7 +124,6 @@ 14 6.10.3 5.4.0 - 2.22.2 3.141.59 4.3.1 0.40 diff --git a/testing-modules/zerocode/pom.xml b/testing-modules/zerocode/pom.xml index 15ef45be63..c0aa370096 100644 --- a/testing-modules/zerocode/pom.xml +++ b/testing-modules/zerocode/pom.xml @@ -91,7 +91,6 @@ - 3.0.0-M5 3.0.0-M5 8 8 diff --git a/web-modules/blade/pom.xml b/web-modules/blade/pom.xml index 0733556c20..2748c05663 100644 --- a/web-modules/blade/pom.xml +++ b/web-modules/blade/pom.xml @@ -112,7 +112,6 @@ 4.5.6 4.5.6 4.4.10 - 3.0.0-M3 0.7 3.1.0 From b9e8f39c00e3225db5ae3b40803f4287106eb01e Mon Sep 17 00:00:00 2001 From: panos-kakos Date: Mon, 28 Aug 2023 09:02:54 +0300 Subject: [PATCH 18/51] [JAVA-23099] Upgraded maven-war-plugin to latest version --- apache-cxf-modules/cxf-spring/pom.xml | 10 ++++++---- apache-httpclient4/pom.xml | 2 -- apache-velocity/pom.xml | 1 - azure/pom.xml | 1 - java-websocket/pom.xml | 1 - jersey/pom.xml | 1 - jsf/pom.xml | 2 -- libraries-server-2/pom.xml | 1 - microservices-modules/pom.xml | 4 ---- muleesb/pom.xml | 1 + pom.xml | 2 +- saas-modules/sentry-servlet/pom.xml | 1 - security-modules/pom.xml | 4 ---- spring-boot-modules/pom.xml | 4 ---- spring-boot-modules/spring-boot-documentation/pom.xml | 1 - spring-boot-rest/pom.xml | 1 - spring-core-4/pom.xml | 1 - spring-core/pom.xml | 1 - spring-di/pom.xml | 1 - spring-exceptions/pom.xml | 1 - spring-jersey/pom.xml | 1 - spring-katharsis/pom.xml | 1 - spring-mobile/pom.xml | 1 - .../spring-security-web-mvc-custom/pom.xml | 1 - spring-shell/pom.xml | 1 - spring-websockets/pom.xml | 4 ---- vaadin/pom.xml | 1 - web-modules/wicket/pom.xml | 1 - 28 files changed, 8 insertions(+), 44 deletions(-) diff --git a/apache-cxf-modules/cxf-spring/pom.xml b/apache-cxf-modules/cxf-spring/pom.xml index 1c87ae4bfb..67a61e8200 100644 --- a/apache-cxf-modules/cxf-spring/pom.xml +++ b/apache-cxf-modules/cxf-spring/pom.xml @@ -43,19 +43,19 @@ com.sun.xml.ws jaxws-ri - 2.3.3 + ${jaxws-ri.version} pom javax.servlet javax.servlet-api - 4.0.1 + ${javax.servlet-api.version} provided javax.servlet jstl - 1.2 + ${jstl.version} @@ -117,7 +117,9 @@ 5.3.25 1.6.1 - 3.3.2 + 1.2 + 4.0.1 + 2.3.3 \ No newline at end of file diff --git a/apache-httpclient4/pom.xml b/apache-httpclient4/pom.xml index 21c675db35..f4c213687e 100644 --- a/apache-httpclient4/pom.xml +++ b/apache-httpclient4/pom.xml @@ -241,8 +241,6 @@ 4.4.16 4.5.14 5.11.2 - - 3.3.2 \ No newline at end of file diff --git a/apache-velocity/pom.xml b/apache-velocity/pom.xml index a562ebeec0..f4b6de8872 100644 --- a/apache-velocity/pom.xml +++ b/apache-velocity/pom.xml @@ -63,7 +63,6 @@ 4.5.2 1.7 2.0 - 3.3.2 \ No newline at end of file diff --git a/azure/pom.xml b/azure/pom.xml index aae84db0c6..6a06282a71 100644 --- a/azure/pom.xml +++ b/azure/pom.xml @@ -122,7 +122,6 @@ ${azure.containerRegistry}.azurecr.io 1.1.0 1.1.0 - 3.3.2 \ No newline at end of file diff --git a/java-websocket/pom.xml b/java-websocket/pom.xml index 7c5c006aa9..d529b32022 100644 --- a/java-websocket/pom.xml +++ b/java-websocket/pom.xml @@ -30,7 +30,6 @@ 1.1 2.8.0 - 3.3.2 \ No newline at end of file diff --git a/jersey/pom.xml b/jersey/pom.xml index 005fa85077..c2b37f7118 100644 --- a/jersey/pom.xml +++ b/jersey/pom.xml @@ -100,7 +100,6 @@ 3.1.1 - 3.3.2 \ No newline at end of file diff --git a/jsf/pom.xml b/jsf/pom.xml index 81030537fb..09dea98f65 100644 --- a/jsf/pom.xml +++ b/jsf/pom.xml @@ -76,8 +76,6 @@ 2.2.14 3.0.0 - - 3.3.1 1.3.1 diff --git a/libraries-server-2/pom.xml b/libraries-server-2/pom.xml index cf5d016d9f..7377fa3fa9 100644 --- a/libraries-server-2/pom.xml +++ b/libraries-server-2/pom.xml @@ -73,7 +73,6 @@ 9.4.27.v20200227 8.1.11.v20170118 - 3.2.2 \ No newline at end of file diff --git a/microservices-modules/pom.xml b/microservices-modules/pom.xml index 2111390481..a9cd8d2cd9 100644 --- a/microservices-modules/pom.xml +++ b/microservices-modules/pom.xml @@ -22,8 +22,4 @@ rest-express - - 3.3.2 - - \ No newline at end of file diff --git a/muleesb/pom.xml b/muleesb/pom.xml index a2204c15b7..f471895ccb 100644 --- a/muleesb/pom.xml +++ b/muleesb/pom.xml @@ -217,6 +217,7 @@ 1.3.6 1.10 2.2.1 + 3.3.2 \ No newline at end of file diff --git a/pom.xml b/pom.xml index d0cd03700e..c03742dc02 100644 --- a/pom.xml +++ b/pom.xml @@ -1282,7 +1282,7 @@ 2.6 3.13.0 1.5.0 - 3.3.2 + 3.4.0 4.0.1 1.2 2.3.3 diff --git a/saas-modules/sentry-servlet/pom.xml b/saas-modules/sentry-servlet/pom.xml index 4f9e37ebd5..70f6876dee 100644 --- a/saas-modules/sentry-servlet/pom.xml +++ b/saas-modules/sentry-servlet/pom.xml @@ -46,6 +46,5 @@ 6.11.0 1.10.4 - 3.3.2 \ No newline at end of file diff --git a/security-modules/pom.xml b/security-modules/pom.xml index b779c0d46d..864b1a7fcc 100644 --- a/security-modules/pom.xml +++ b/security-modules/pom.xml @@ -25,8 +25,4 @@ sql-injection-samples - - 3.3.2 - - diff --git a/spring-boot-modules/pom.xml b/spring-boot-modules/pom.xml index 251dba0316..f87446b413 100644 --- a/spring-boot-modules/pom.xml +++ b/spring-boot-modules/pom.xml @@ -120,8 +120,4 @@ - - 3.3.2 - - diff --git a/spring-boot-modules/spring-boot-documentation/pom.xml b/spring-boot-modules/spring-boot-documentation/pom.xml index 587ad8473b..513c5678d5 100644 --- a/spring-boot-modules/spring-boot-documentation/pom.xml +++ b/spring-boot-modules/spring-boot-documentation/pom.xml @@ -92,7 +92,6 @@ - 3.3.2 2.2.11 0.12.1 0.8.0 diff --git a/spring-boot-rest/pom.xml b/spring-boot-rest/pom.xml index 74d46f0651..d4d7cd9c1a 100644 --- a/spring-boot-rest/pom.xml +++ b/spring-boot-rest/pom.xml @@ -163,7 +163,6 @@ com.baeldung.SpringBootRestApplication 1.4.11.1 3.1.0 - 3.3.2 2.3.7 diff --git a/spring-core-4/pom.xml b/spring-core-4/pom.xml index 492a2ec5a2..2d11cc701b 100644 --- a/spring-core-4/pom.xml +++ b/spring-core-4/pom.xml @@ -84,7 +84,6 @@ 4.0.2 4.0.0 1.3.2 - 3.3.2 1.10.0 diff --git a/spring-core/pom.xml b/spring-core/pom.xml index d1c155b92a..e369bc24d0 100644 --- a/spring-core/pom.xml +++ b/spring-core/pom.xml @@ -88,7 +88,6 @@ 1.5.2.RELEASE 1.10.19 1.3.2 - 3.3.2 \ No newline at end of file diff --git a/spring-di/pom.xml b/spring-di/pom.xml index cf3703096c..af0601deb6 100644 --- a/spring-di/pom.xml +++ b/spring-di/pom.xml @@ -149,7 +149,6 @@ 1.5.2.RELEASE 1.10.19 1.9.5 - 3.3.2 \ No newline at end of file diff --git a/spring-exceptions/pom.xml b/spring-exceptions/pom.xml index 8912cad674..49c44f88f2 100644 --- a/spring-exceptions/pom.xml +++ b/spring-exceptions/pom.xml @@ -181,7 +181,6 @@ 2.7 1.6.1 - 3.3.2 \ No newline at end of file diff --git a/spring-jersey/pom.xml b/spring-jersey/pom.xml index 17d527ca6a..32f75aa676 100644 --- a/spring-jersey/pom.xml +++ b/spring-jersey/pom.xml @@ -221,7 +221,6 @@ 4.5.5 2.27.2 1.5.10.RELEASE - 3.3.2 \ No newline at end of file diff --git a/spring-katharsis/pom.xml b/spring-katharsis/pom.xml index 82be0555c3..b836a42bca 100644 --- a/spring-katharsis/pom.xml +++ b/spring-katharsis/pom.xml @@ -135,7 +135,6 @@ 3.0.2 0.9.10 1.6.1 - 3.3.2 \ No newline at end of file diff --git a/spring-mobile/pom.xml b/spring-mobile/pom.xml index 0c279c0d62..a7effc31be 100644 --- a/spring-mobile/pom.xml +++ b/spring-mobile/pom.xml @@ -58,7 +58,6 @@ 1.1.5.RELEASE 11 11 - 3.3.2 \ No newline at end of file diff --git a/spring-security-modules/spring-security-web-mvc-custom/pom.xml b/spring-security-modules/spring-security-web-mvc-custom/pom.xml index f21c6dbe40..41f24050b2 100644 --- a/spring-security-modules/spring-security-web-mvc-custom/pom.xml +++ b/spring-security-modules/spring-security-web-mvc-custom/pom.xml @@ -172,7 +172,6 @@ - 3.2.2 1.6.1 1.3.2 diff --git a/spring-shell/pom.xml b/spring-shell/pom.xml index 506884b413..952920fd1e 100644 --- a/spring-shell/pom.xml +++ b/spring-shell/pom.xml @@ -39,7 +39,6 @@ 1.2.0.RELEASE - 3.3.2 \ No newline at end of file diff --git a/spring-websockets/pom.xml b/spring-websockets/pom.xml index c13d1cff33..a28ef8749a 100644 --- a/spring-websockets/pom.xml +++ b/spring-websockets/pom.xml @@ -44,8 +44,4 @@ - - 3.3.2 - - \ No newline at end of file diff --git a/vaadin/pom.xml b/vaadin/pom.xml index 777ab2551c..aa37a2392a 100644 --- a/vaadin/pom.xml +++ b/vaadin/pom.xml @@ -187,7 +187,6 @@ local mytheme 3.0.0 - 3.3.2 \ No newline at end of file diff --git a/web-modules/wicket/pom.xml b/web-modules/wicket/pom.xml index 9348e15cdb..244d176e25 100644 --- a/web-modules/wicket/pom.xml +++ b/web-modules/wicket/pom.xml @@ -84,7 +84,6 @@ 7.5.0 9.2.13.v20150730 - 3.3.1 \ No newline at end of file From d5e653d995a8519e634cf9b35eca550759a48d7a Mon Sep 17 00:00:00 2001 From: panos-kakos Date: Mon, 28 Aug 2023 09:03:38 +0300 Subject: [PATCH 19/51] [JAVA-23099] Upgraded directory-maven-plugin to latest version --- pom.xml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/pom.xml b/pom.xml index c03742dc02..12727c99e1 100644 --- a/pom.xml +++ b/pom.xml @@ -1292,7 +1292,7 @@ 1.9.2 5.9.2 1.3.2 - 0.3.1 + 1.0 2.5.2 0.0.1 3.12.2 From ac60b9b89a44a28f5f0d2f31967517756e162f64 Mon Sep 17 00:00:00 2001 From: panos-kakos Date: Mon, 28 Aug 2023 09:06:42 +0300 Subject: [PATCH 20/51] [JAVA-23099] Upgraded maven-install-plugin to latest version --- muleesb/pom.xml | 1 + pom.xml | 2 +- 2 files changed, 2 insertions(+), 1 deletion(-) diff --git a/muleesb/pom.xml b/muleesb/pom.xml index f471895ccb..8cdd3400e9 100644 --- a/muleesb/pom.xml +++ b/muleesb/pom.xml @@ -218,6 +218,7 @@ 1.10 2.2.1 3.3.2 + 2.5.2 \ No newline at end of file diff --git a/pom.xml b/pom.xml index 12727c99e1..f353261825 100644 --- a/pom.xml +++ b/pom.xml @@ -1293,7 +1293,7 @@ 5.9.2 1.3.2 1.0 - 2.5.2 + 3.1.1 0.0.1 3.12.2 3.0.0 From 6d5eab9aa2e50cacf81bfb993a098456710b9a79 Mon Sep 17 00:00:00 2001 From: panos-kakos Date: Mon, 28 Aug 2023 09:07:12 +0300 Subject: [PATCH 21/51] [JAVA-23099] Upgraded maven-jxr-plugin to latest version --- pom.xml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/pom.xml b/pom.xml index f353261825..425fa68d66 100644 --- a/pom.xml +++ b/pom.xml @@ -1296,7 +1296,7 @@ 3.1.1 0.0.1 3.12.2 - 3.0.0 + 3.3.0 3.19.0 1.18.28 2.1.214 From 89e3eaccf47a740a2173fd9465c20e28cf9a982d Mon Sep 17 00:00:00 2001 From: panos-kakos Date: Mon, 28 Aug 2023 09:07:52 +0300 Subject: [PATCH 22/51] [JAVA-23099] Upgraded maven-pmd-plugin to latest version --- pom.xml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/pom.xml b/pom.xml index 425fa68d66..b729bf3104 100644 --- a/pom.xml +++ b/pom.xml @@ -1297,7 +1297,7 @@ 0.0.1 3.12.2 3.3.0 - 3.19.0 + 3.21.0 1.18.28 2.1.214 32.1.2-jre From cff743d86d703f68ede62ae89c4418c5c688f2c8 Mon Sep 17 00:00:00 2001 From: panos-kakos Date: Mon, 28 Aug 2023 09:11:25 +0300 Subject: [PATCH 23/51] [JAVA-23099] Upgraded maven-jar-plugin to latest version --- asm/pom.xml | 1 - core-java-modules/core-java-9-new-features/pom.xml | 1 - core-java-modules/core-java-io/pom.xml | 1 - core-java-modules/core-java-jar/pom.xml | 1 - disruptor/pom.xml | 1 - jmh/pom.xml | 1 - jws/pom.xml | 4 ---- libraries/pom.xml | 1 - persistence-modules/hibernate-libraries/pom.xml | 1 - pom.xml | 2 +- saas-modules/slack/pom.xml | 1 - server-modules/undertow/pom.xml | 1 - spring-cloud-modules/spring-cloud-zuul-fallback/pom.xml | 1 - 13 files changed, 1 insertion(+), 16 deletions(-) diff --git a/asm/pom.xml b/asm/pom.xml index f1e60d2560..4edfe86ae5 100644 --- a/asm/pom.xml +++ b/asm/pom.xml @@ -49,7 +49,6 @@ 5.2 - 2.4 \ No newline at end of file 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 6821c9c340..9c897f1cea 100644 --- a/core-java-modules/core-java-9-new-features/pom.xml +++ b/core-java-modules/core-java-9-new-features/pom.xml @@ -152,7 +152,6 @@ 4.0.2 1.9 1.9 - 3.2.0 \ No newline at end of file diff --git a/core-java-modules/core-java-io/pom.xml b/core-java-modules/core-java-io/pom.xml index 8364f36874..59952c2d9e 100644 --- a/core-java-modules/core-java-io/pom.xml +++ b/core-java-modules/core-java-io/pom.xml @@ -132,7 +132,6 @@ 2.8.0 0.1.5 - 3.3.0 4.4.2 2.1.2 2.0.1 diff --git a/core-java-modules/core-java-jar/pom.xml b/core-java-modules/core-java-jar/pom.xml index ec88abe444..a46299c669 100644 --- a/core-java-modules/core-java-jar/pom.xml +++ b/core-java-modules/core-java-jar/pom.xml @@ -275,7 +275,6 @@ 1.1 3.0.0-M1 - 3.0.2 1.4.4 3.1.1 3.3.0 diff --git a/disruptor/pom.xml b/disruptor/pom.xml index 75e783e935..b3b065d67e 100644 --- a/disruptor/pom.xml +++ b/disruptor/pom.xml @@ -119,7 +119,6 @@ 3.3.6 2.4.3 - 3.0.2 1.4.4 diff --git a/jmh/pom.xml b/jmh/pom.xml index 4fef67cb74..e8a88bf301 100644 --- a/jmh/pom.xml +++ b/jmh/pom.xml @@ -83,7 +83,6 @@ - 3.3.0 0.17 3.5.0 diff --git a/jws/pom.xml b/jws/pom.xml index 2f01f90721..12aa76127c 100644 --- a/jws/pom.xml +++ b/jws/pom.xml @@ -61,8 +61,4 @@ - - 3.0.2 - - diff --git a/libraries/pom.xml b/libraries/pom.xml index 2ab345c469..07a4853728 100644 --- a/libraries/pom.xml +++ b/libraries/pom.xml @@ -291,7 +291,6 @@ 2.3.0 3.29.2-GA 0.9.12 - 3.0.2 3.6 2.6 diff --git a/persistence-modules/hibernate-libraries/pom.xml b/persistence-modules/hibernate-libraries/pom.xml index 031d55c17d..3f4da28296 100644 --- a/persistence-modules/hibernate-libraries/pom.xml +++ b/persistence-modules/hibernate-libraries/pom.xml @@ -166,7 +166,6 @@ 3.27.0-GA 2.3.1 2.0.0 - 3.0.2 3.8.1 3.8.1 8.0.19 diff --git a/pom.xml b/pom.xml index b729bf3104..7429eb77d4 100644 --- a/pom.xml +++ b/pom.xml @@ -1301,7 +1301,7 @@ 1.18.28 2.1.214 32.1.2-jre - 3.2.2 + 3.3.0 diff --git a/saas-modules/slack/pom.xml b/saas-modules/slack/pom.xml index 326167c055..d9e7abb4a2 100644 --- a/saas-modules/slack/pom.xml +++ b/saas-modules/slack/pom.xml @@ -55,7 +55,6 @@ 1.4 - 2.4 \ No newline at end of file diff --git a/server-modules/undertow/pom.xml b/server-modules/undertow/pom.xml index 42a46d9508..a73771485c 100644 --- a/server-modules/undertow/pom.xml +++ b/server-modules/undertow/pom.xml @@ -46,7 +46,6 @@ 1.4.18.Final - 3.0.2 \ No newline at end of file diff --git a/spring-cloud-modules/spring-cloud-zuul-fallback/pom.xml b/spring-cloud-modules/spring-cloud-zuul-fallback/pom.xml index ff62a99a00..fcf216cd6e 100644 --- a/spring-cloud-modules/spring-cloud-zuul-fallback/pom.xml +++ b/spring-cloud-modules/spring-cloud-zuul-fallback/pom.xml @@ -22,7 +22,6 @@ 2020.0.3 2.2.7.RELEASE - 3.1.1 \ No newline at end of file From 6beb78f9d44df5838557382b751cad2d428fc983 Mon Sep 17 00:00:00 2001 From: panos-kakos Date: Mon, 28 Aug 2023 10:04:17 +0300 Subject: [PATCH 24/51] [JAVA-22589] Added comment regarding the failure of test --- .../eventendpoints/ResilientAppControllerIntegrationTest.java | 4 ++++ 1 file changed, 4 insertions(+) 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 index 30c498640b..a1173f40ae 100644 --- 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 @@ -31,6 +31,10 @@ import org.springframework.http.HttpStatus; import org.springframework.http.ResponseEntity; import org.springframework.test.annotation.DirtiesContext; +/** + * This was failing as a unit test in integrated environment + * probably due to parallel execution of tests. + */ @SpringBootTest(webEnvironment = SpringBootTest.WebEnvironment.RANDOM_PORT) @DirtiesContext(classMode = DirtiesContext.ClassMode.AFTER_EACH_TEST_METHOD) class ResilientAppControllerManualTest { From ad61560016d67c65631b531b230571e68fd8adb1 Mon Sep 17 00:00:00 2001 From: panos-kakos Date: Mon, 28 Aug 2023 10:19:28 +0300 Subject: [PATCH 25/51] [JAVA-22589] Defined logback version for maven-integration-test module --- maven-modules/maven-integration-test/pom.xml | 1 + 1 file changed, 1 insertion(+) diff --git a/maven-modules/maven-integration-test/pom.xml b/maven-modules/maven-integration-test/pom.xml index 4483bb2d55..27191d1148 100644 --- a/maven-modules/maven-integration-test/pom.xml +++ b/maven-modules/maven-integration-test/pom.xml @@ -276,6 +276,7 @@ 3.0.0 9.4.11.v20180605 2.27 + 1.2.7 \ No newline at end of file From 8462a30691e68c8413ff2e1039d5347db2b33a0d Mon Sep 17 00:00:00 2001 From: Bipinkumar27 Date: Mon, 28 Aug 2023 20:38:21 +0530 Subject: [PATCH 26/51] JAVA-24552: fix test failure of jwt module --- .../java/com/baeldung/jwt/auth0/Auth0JsonWebTokenUnitTest.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/security-modules/jwt/src/test/java/com/baeldung/jwt/auth0/Auth0JsonWebTokenUnitTest.java b/security-modules/jwt/src/test/java/com/baeldung/jwt/auth0/Auth0JsonWebTokenUnitTest.java index a9c3b4185d..a3f0564cd3 100644 --- a/security-modules/jwt/src/test/java/com/baeldung/jwt/auth0/Auth0JsonWebTokenUnitTest.java +++ b/security-modules/jwt/src/test/java/com/baeldung/jwt/auth0/Auth0JsonWebTokenUnitTest.java @@ -103,7 +103,7 @@ public class Auth0JsonWebTokenUnitTest { jwtToken = JWT.create() .withIssuer(ISSUER) .withClaim(DATA_CLAIM, DATA) - .withNotBefore(new Date(System.currentTimeMillis() + 1000L)) + .withNotBefore(new Date(System.currentTimeMillis() + 10000L)) .sign(algorithm); assertThrows(IncorrectClaimException.class, () -> { From b858b5521fee45e9840da588195d0fd120924042 Mon Sep 17 00:00:00 2001 From: Bipin kumar Date: Mon, 28 Aug 2023 20:58:01 +0530 Subject: [PATCH 27/51] JAVA-24381:Changes made for fixing pom indentation (#14633) --- apache-libraries-2/pom.xml | 1 - aws-modules/aws-s3-update-object/pom.xml | 5 +++-- aws-modules/aws-s3/pom.xml | 4 ++-- .../core-java-collections-list-5/pom.xml | 4 ++-- core-java-modules/core-java-conditionals/pom.xml | 16 ++++++++-------- .../core-java-date-operations-3/pom.xml | 4 ++-- core-java-modules/core-java-lang-6/pom.xml | 4 ++-- core-java-modules/core-java-scanner/pom.xml | 4 ++-- .../core-java-string-operations-6/pom.xml | 4 ++-- 9 files changed, 23 insertions(+), 23 deletions(-) diff --git a/apache-libraries-2/pom.xml b/apache-libraries-2/pom.xml index 618ff4a188..d188204208 100644 --- a/apache-libraries-2/pom.xml +++ b/apache-libraries-2/pom.xml @@ -21,7 +21,6 @@ - 2.0.1.Final diff --git a/aws-modules/aws-s3-update-object/pom.xml b/aws-modules/aws-s3-update-object/pom.xml index 574a63977b..3cf7b657b0 100644 --- a/aws-modules/aws-s3-update-object/pom.xml +++ b/aws-modules/aws-s3-update-object/pom.xml @@ -1,6 +1,7 @@ - + 4.0.0 aws-s3-update-object 0.0.1-SNAPSHOT diff --git a/aws-modules/aws-s3/pom.xml b/aws-modules/aws-s3/pom.xml index 157aeb671d..e2bc04964a 100644 --- a/aws-modules/aws-s3/pom.xml +++ b/aws-modules/aws-s3/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 aws-s3 0.1.0-SNAPSHOT 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 bcdb6824ed..2b4b0041b3 100644 --- a/core-java-modules/core-java-collections-list-5/pom.xml +++ b/core-java-modules/core-java-collections-list-5/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-collections-list-5 core-java-collections-list-5 diff --git a/core-java-modules/core-java-conditionals/pom.xml b/core-java-modules/core-java-conditionals/pom.xml index 7cec575f61..811f183e99 100644 --- a/core-java-modules/core-java-conditionals/pom.xml +++ b/core-java-modules/core-java-conditionals/pom.xml @@ -37,14 +37,14 @@ --enable-preview - - org.apache.maven.plugins - maven-surefire-plugin - ${surefire.plugin.version} - - --enable-preview - - + + org.apache.maven.plugins + maven-surefire-plugin + ${surefire.plugin.version} + + --enable-preview + + 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 19760ca357..9b7be18b85 100644 --- a/core-java-modules/core-java-date-operations-3/pom.xml +++ b/core-java-modules/core-java-date-operations-3/pom.xml @@ -12,7 +12,7 @@ core-java-modules 0.0.1-SNAPSHOT - + joda-time @@ -25,7 +25,7 @@ ${commons-lang3.version} - + 2.12.5 3.12.0 diff --git a/core-java-modules/core-java-lang-6/pom.xml b/core-java-modules/core-java-lang-6/pom.xml index 86121e0a7f..53ef36a898 100644 --- a/core-java-modules/core-java-lang-6/pom.xml +++ b/core-java-modules/core-java-lang-6/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 com.baeldung.core-java-modules diff --git a/core-java-modules/core-java-scanner/pom.xml b/core-java-modules/core-java-scanner/pom.xml index f149f51955..bb5c7dca78 100644 --- a/core-java-modules/core-java-scanner/pom.xml +++ b/core-java-modules/core-java-scanner/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 core-java-scanner core-java-scanner diff --git a/core-java-modules/core-java-string-operations-6/pom.xml b/core-java-modules/core-java-string-operations-6/pom.xml index 0ec32d91b1..ca9a7a9297 100644 --- a/core-java-modules/core-java-string-operations-6/pom.xml +++ b/core-java-modules/core-java-string-operations-6/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-string-operations-6 core-java-string-operations-6 From 34580d18844602ee593e2daf259dc1bf7194813e Mon Sep 17 00:00:00 2001 From: Bipin kumar Date: Mon, 28 Aug 2023 20:59:31 +0530 Subject: [PATCH 28/51] JAVA-24381:Changes made for fixing pom indentation for modules starts L to D (#14634) --- di-modules/avaje/pom.xml | 66 +++++++++---------- .../pom.xml | 4 +- .../jhipster-microservice/car-app/pom.xml | 18 ++--- .../jhipster-microservice/dealer-app/pom.xml | 18 ++--- .../jhipster-microservice/gateway-app/pom.xml | 16 +++-- json-modules/json-conversion/pom.xml | 4 +- kubernetes-modules/jkube-demo/pom.xml | 5 +- libraries-data-2/pom.xml | 4 +- logging-modules/logback/pom.xml | 8 +-- 9 files changed, 75 insertions(+), 68 deletions(-) diff --git a/di-modules/avaje/pom.xml b/di-modules/avaje/pom.xml index 7ffe14bd72..49162c518e 100644 --- a/di-modules/avaje/pom.xml +++ b/di-modules/avaje/pom.xml @@ -1,37 +1,37 @@ - 4.0.0 - com.baeldung - inject-intro - 0.0.1-SNAPSHOT - avaje-inject-intro - - 11 - 11 - 9.5 - - - - io.avaje - avaje-inject - ${avaje.inject.version} - + 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 + inject-intro + 0.0.1-SNAPSHOT + avaje-inject-intro + + 11 + 11 + 9.5 + + + + io.avaje + avaje-inject + ${avaje.inject.version} + - - io.avaje - avaje-inject-test - ${avaje.inject.version} - test - + + io.avaje + avaje-inject-test + ${avaje.inject.version} + test + - - - io.avaje - avaje-inject-generator - ${avaje.inject.version} - provided - true - - + + + io.avaje + avaje-inject-generator + ${avaje.inject.version} + provided + true + + \ No newline at end of file diff --git a/jackson-modules/jackson-polymorphic-deserialization/pom.xml b/jackson-modules/jackson-polymorphic-deserialization/pom.xml index afa9cab82f..0d88c19500 100644 --- a/jackson-modules/jackson-polymorphic-deserialization/pom.xml +++ b/jackson-modules/jackson-polymorphic-deserialization/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 jackson-polymorphic-deserialization jackson-polymorphic-deserialization diff --git a/jhipster-modules/jhipster-microservice/car-app/pom.xml b/jhipster-modules/jhipster-microservice/car-app/pom.xml index f345688939..9ecf471bc2 100644 --- a/jhipster-modules/jhipster-microservice/car-app/pom.xml +++ b/jhipster-modules/jhipster-microservice/car-app/pom.xml @@ -1,5 +1,7 @@ - + 4.0.0 @@ -45,8 +47,8 @@ 3.1.3 v6.10.0 - - + + ${project.build.directory}/test-results 0.0.20 @@ -440,7 +442,7 @@ - + @@ -634,9 +636,9 @@ src/main/resources/config/liquibase/changelog/${maven.build.timestamp}_changelog.xml org.h2.Driver jdbc:h2:file:./target/h2db/db/carapp - + carapp - + hibernate:spring:com.car.app.domain?dialect=org.hibernate.dialect.H2Dialect&hibernate.physical_naming_strategy=org.springframework.boot.orm.jpa.hibernate.SpringPhysicalNamingStrategy&hibernate.implicit_naming_strategy=org.springframework.boot.orm.jpa.hibernate.SpringImplicitNamingStrategy true debug @@ -683,7 +685,7 @@ org.apache.maven.plugins maven-war-plugin - + @@ -722,7 +724,7 @@ org.apache.maven.plugins maven-war-plugin - + org.springframework.boot diff --git a/jhipster-modules/jhipster-microservice/dealer-app/pom.xml b/jhipster-modules/jhipster-microservice/dealer-app/pom.xml index 056bd60f33..33a238c96c 100644 --- a/jhipster-modules/jhipster-microservice/dealer-app/pom.xml +++ b/jhipster-modules/jhipster-microservice/dealer-app/pom.xml @@ -1,5 +1,7 @@ - + 4.0.0 @@ -44,8 +46,8 @@ 3.1.3 v6.10.0 - - + + ${project.build.directory}/test-results 0.0.20 @@ -439,7 +441,7 @@ - + @@ -633,9 +635,9 @@ src/main/resources/config/liquibase/changelog/${maven.build.timestamp}_changelog.xml org.h2.Driver jdbc:h2:file:./target/h2db/db/dealerapp - + dealerapp - + hibernate:spring:com.dealer.app.domain?dialect=org.hibernate.dialect.H2Dialect&hibernate.physical_naming_strategy=org.springframework.boot.orm.jpa.hibernate.SpringPhysicalNamingStrategy&hibernate.implicit_naming_strategy=org.springframework.boot.orm.jpa.hibernate.SpringImplicitNamingStrategy true debug @@ -682,7 +684,7 @@ org.apache.maven.plugins maven-war-plugin - + @@ -721,7 +723,7 @@ org.apache.maven.plugins maven-war-plugin - + org.springframework.boot diff --git a/jhipster-modules/jhipster-microservice/gateway-app/pom.xml b/jhipster-modules/jhipster-microservice/gateway-app/pom.xml index b90f22f009..3956475380 100644 --- a/jhipster-modules/jhipster-microservice/gateway-app/pom.xml +++ b/jhipster-modules/jhipster-microservice/gateway-app/pom.xml @@ -1,5 +1,7 @@ - + 4.0.0 @@ -48,8 +50,8 @@ 3.1.3 v6.10.0 - - + + ${project.build.directory}/test-results 0.0.20 @@ -481,7 +483,7 @@ - + @@ -497,7 +499,7 @@ - + @@ -691,9 +693,9 @@ src/main/resources/config/liquibase/changelog/${maven.build.timestamp}_changelog.xml org.h2.Driver jdbc:h2:file:./target/h2db/db/gateway - + gateway - + hibernate:spring:com.gateway.domain?dialect=org.hibernate.dialect.H2Dialect&hibernate.physical_naming_strategy=org.springframework.boot.orm.jpa.hibernate.SpringPhysicalNamingStrategy&hibernate.implicit_naming_strategy=org.springframework.boot.orm.jpa.hibernate.SpringImplicitNamingStrategy true debug diff --git a/json-modules/json-conversion/pom.xml b/json-modules/json-conversion/pom.xml index 1af13cbbcb..365c6d2ac9 100644 --- a/json-modules/json-conversion/pom.xml +++ b/json-modules/json-conversion/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 org.baeldung json-conversion diff --git a/kubernetes-modules/jkube-demo/pom.xml b/kubernetes-modules/jkube-demo/pom.xml index 7bb662c4a3..6fedc0f24a 100644 --- a/kubernetes-modules/jkube-demo/pom.xml +++ b/kubernetes-modules/jkube-demo/pom.xml @@ -1,6 +1,7 @@ - + 4.0.0 com.baeldung diff --git a/libraries-data-2/pom.xml b/libraries-data-2/pom.xml index e19067daa3..0620dd69ea 100644 --- a/libraries-data-2/pom.xml +++ b/libraries-data-2/pom.xml @@ -92,7 +92,7 @@ suanshu ${suanshu.version} - --> + --> org.derive4j derive4j @@ -162,7 +162,7 @@ - + - - org.junit.jupiter - junit-jupiter-engine - ${junit.jupiter.engine.version} - test - - - org.mockito - mockito-core - ${mockito.version} - test - - - org.mockito - mockito-junit-jupiter - ${mockito.version} - test - - - org.junit.jupiter - junit-jupiter-api - ${junit.jupiter.engine.version} - test - - + + com.baeldung.spring-thymeleaf-attributes + spring-thymeleaf-attributes + 0.0.1-SNAPSHOT + ../pom.xml + - - - - org.springframework.boot - spring-boot-maven-plugin - - - -Dfile.encoding="UTF-8" -Xdebug - -Xrunjdwp:transport=dt_socket,server=y,suspend=n,address=5005 - - - - - + + + org.springframework.boot + spring-boot-starter-web + + + org.springframework.boot + spring-boot-starter-thymeleaf + ${spring.boot.starter.thymeleaf} + + + + org.junit.jupiter + junit-jupiter-engine + ${junit.jupiter.engine.version} + test + + + org.mockito + mockito-core + ${mockito.version} + test + + + org.mockito + mockito-junit-jupiter + ${mockito.version} + test + + + org.junit.jupiter + junit-jupiter-api + ${junit.jupiter.engine.version} + test + + - - com.baeldung.accesing_session_attributes.SpringWebApplicationInitializer - UTF-8 - UTF-8 - UTF-8 - true - true - 5.9.3 - 5.3.1 - 3.1.1.RELEASE - 3.1.1 - + + + + org.springframework.boot + spring-boot-maven-plugin + + + -Dfile.encoding="UTF-8" -Xdebug + -Xrunjdwp:transport=dt_socket,server=y,suspend=n,address=5005 + + + + + + + + com.baeldung.accesing_session_attributes.SpringWebApplicationInitializer + UTF-8 + UTF-8 + UTF-8 + true + true + 5.9.3 + 5.3.1 + 3.1.1.RELEASE + 3.1.1 + \ No newline at end of file diff --git a/testing-modules/testing-libraries-2/pom.xml b/testing-modules/testing-libraries-2/pom.xml index d74ede07db..4cc3ea8428 100644 --- a/testing-modules/testing-libraries-2/pom.xml +++ b/testing-modules/testing-libraries-2/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/xsd/maven-4.0.0.xsd"> 4.0.0 testing-libraries-2 testing-libraries-2 From c34697f8990db8ec89d25273d9777c218f03a0ec Mon Sep 17 00:00:00 2001 From: timis1 <12120641+timis1@users.noreply.github.com> Date: Mon, 28 Aug 2023 20:25:53 +0300 Subject: [PATCH 31/51] JAVA-24051 Upgrade java-base64-encode-and-decode (#14654) --- .../core-java-string-operations/pom.xml | 19 +++++-------------- .../StringToByteArrayUnitTest.java | 2 +- 2 files changed, 6 insertions(+), 15 deletions(-) diff --git a/core-java-modules/core-java-string-operations/pom.xml b/core-java-modules/core-java-string-operations/pom.xml index 577736a324..601d0341a3 100644 --- a/core-java-modules/core-java-string-operations/pom.xml +++ b/core-java-modules/core-java-string-operations/pom.xml @@ -15,30 +15,20 @@ - javax.xml.bind - jaxb-api - 2.4.0-b180725.0427 + jakarta.xml.bind + jakarta.xml.bind-api + ${jakarta.xml.bind-api.version} org.apache.commons commons-lang3 ${commons-lang3.version} - - org.openjdk.jmh - jmh-core - ${jmh-core.version} - log4j log4j ${log4j.version} - - org.openjdk.jmh - jmh-generator-annprocess - ${jmh-generator.version} - commons-codec commons-codec @@ -57,7 +47,8 @@ - 1.15 + 1.16.0 + 4.0.0 \ No newline at end of file diff --git a/core-java-modules/core-java-string-operations/src/test/java/com/baeldung/base64encodinganddecoding/StringToByteArrayUnitTest.java b/core-java-modules/core-java-string-operations/src/test/java/com/baeldung/base64encodinganddecoding/StringToByteArrayUnitTest.java index 6f8a17e316..491574f0f1 100644 --- a/core-java-modules/core-java-string-operations/src/test/java/com/baeldung/base64encodinganddecoding/StringToByteArrayUnitTest.java +++ b/core-java-modules/core-java-string-operations/src/test/java/com/baeldung/base64encodinganddecoding/StringToByteArrayUnitTest.java @@ -2,7 +2,7 @@ package com.baeldung.base64encodinganddecoding; import org.junit.Test; -import javax.xml.bind.DatatypeConverter; +import jakarta.xml.bind.DatatypeConverter; import java.io.UnsupportedEncodingException; import java.nio.charset.StandardCharsets; import java.util.Arrays; From 5b8de98ac341b0763b20ba43e8a2753e3f572d1b Mon Sep 17 00:00:00 2001 From: Gaetano Piazzolla Date: Mon, 28 Aug 2023 19:38:00 +0200 Subject: [PATCH 32/51] JAVA-23377 | fixing sync code block (#14574) --- .../baeldung/producerconsumer/DataQueue.java | 4 ++ .../baeldung/producerconsumer/Producer.java | 46 ++++++++++++------- .../ProducerConsumerDemonstrator.java | 9 ++-- 3 files changed, 39 insertions(+), 20 deletions(-) diff --git a/core-java-modules/core-java-concurrency-advanced-4/src/main/java/com/baeldung/producerconsumer/DataQueue.java b/core-java-modules/core-java-concurrency-advanced-4/src/main/java/com/baeldung/producerconsumer/DataQueue.java index 8867ddeb63..8b6f02b529 100644 --- a/core-java-modules/core-java-concurrency-advanced-4/src/main/java/com/baeldung/producerconsumer/DataQueue.java +++ b/core-java-modules/core-java-concurrency-advanced-4/src/main/java/com/baeldung/producerconsumer/DataQueue.java @@ -58,4 +58,8 @@ public class DataQueue { return queue.poll(); } } + + public Integer getSize() { + return queue.size(); + } } diff --git a/core-java-modules/core-java-concurrency-advanced-4/src/main/java/com/baeldung/producerconsumer/Producer.java b/core-java-modules/core-java-concurrency-advanced-4/src/main/java/com/baeldung/producerconsumer/Producer.java index 5ca60a29e4..069476bbd1 100644 --- a/core-java-modules/core-java-concurrency-advanced-4/src/main/java/com/baeldung/producerconsumer/Producer.java +++ b/core-java-modules/core-java-concurrency-advanced-4/src/main/java/com/baeldung/producerconsumer/Producer.java @@ -1,12 +1,13 @@ package com.baeldung.producerconsumer; +import java.util.concurrent.locks.ReentrantLock; import java.util.logging.Logger; public class Producer implements Runnable { private static final Logger log = Logger.getLogger(Producer.class.getCanonicalName()); private final DataQueue dataQueue; - private static int idSequence = 0; + final ReentrantLock lock = new ReentrantLock(); public Producer(DataQueue dataQueue) { this.dataQueue = dataQueue; @@ -19,22 +20,38 @@ public class Producer implements Runnable { public void produce() { while (dataQueue.runFlag) { - while (dataQueue.isFull() && dataQueue.runFlag) { - try { - dataQueue.waitOnFull(); - } catch (InterruptedException e) { - e.printStackTrace(); + + try { + lock.lock(); + + while (dataQueue.isFull() && dataQueue.runFlag) { + try { + dataQueue.waitOnFull(); + } catch (InterruptedException e) { + e.printStackTrace(); + break; + } + } + + if (!dataQueue.runFlag) { break; } - } - if (!dataQueue.runFlag) { - break; - } - Message message = generateMessage(); - dataQueue.add(message); - dataQueue.notifyAllForEmpty(); + Message message = generateMessage(); + dataQueue.add(message); + dataQueue.notifyAllForEmpty(); + + log.info("Size of the queue is: " + dataQueue.getSize()); + + } + finally{ + lock.unlock(); + } + + //Sleeping on random time to make it realistic + ThreadUtil.sleep((long) (Math.random() * 100)); } + log.info("Producer Stopped"); } @@ -43,9 +60,6 @@ public class Producer implements Runnable { log.info(String.format("[%s] Generated Message. Id: %d, Data: %f%n", Thread.currentThread().getName(), message.getId(), message.getData())); - //Sleeping on random time to make it realistic - ThreadUtil.sleep((long) (message.getData() * 100)); - return message; } diff --git a/core-java-modules/core-java-concurrency-advanced-4/src/main/java/com/baeldung/producerconsumer/ProducerConsumerDemonstrator.java b/core-java-modules/core-java-concurrency-advanced-4/src/main/java/com/baeldung/producerconsumer/ProducerConsumerDemonstrator.java index 96d7b9f865..eac026536d 100644 --- a/core-java-modules/core-java-concurrency-advanced-4/src/main/java/com/baeldung/producerconsumer/ProducerConsumerDemonstrator.java +++ b/core-java-modules/core-java-concurrency-advanced-4/src/main/java/com/baeldung/producerconsumer/ProducerConsumerDemonstrator.java @@ -36,8 +36,8 @@ public class ProducerConsumerDemonstrator { public static void demoMultipleProducersAndMultipleConsumers() { DataQueue dataQueue = new DataQueue(MAX_QUEUE_CAPACITY); - int producerCount = 3; - int consumerCount = 3; + int producerCount = 5; + int consumerCount = 5; List threads = new ArrayList<>(); Producer producer = new Producer(dataQueue); for(int i = 0; i < producerCount; i++) { @@ -45,6 +45,7 @@ public class ProducerConsumerDemonstrator { producerThread.start(); threads.add(producerThread); } + Consumer consumer = new Consumer(dataQueue); for(int i = 0; i < consumerCount; i++) { Thread consumerThread = new Thread(consumer); @@ -52,8 +53,8 @@ public class ProducerConsumerDemonstrator { threads.add(consumerThread); } - // let threads run for two seconds - sleep(2000); + // let threads run for ten seconds + sleep(10000); // Stop threads producer.stop(); From 2b88d3e646a7d8be3bcf091417713367d821ed5b Mon Sep 17 00:00:00 2001 From: parthiv39731 <70740707+parthiv39731@users.noreply.github.com> Date: Mon, 28 Aug 2023 10:40:06 -0700 Subject: [PATCH 33/51] BAEL-6865, implemented review comments --- ...ionCollector.java => CustomCollector.java} | 21 +- .../baeldung/aggregateEx/CustomMapper.java | 2 +- .../entity/ExceptionAggregator.java | 8 +- .../baeldung/aggregateEx/entity/Result.java | 9 +- .../AggregateExceptionHandlerUnitTest.java | 220 ++++++++---------- 5 files changed, 117 insertions(+), 143 deletions(-) rename core-java-modules/core-java-streams-5/src/main/java/com/baeldung/aggregateEx/{ExceptionCollector.java => CustomCollector.java} (56%) diff --git a/core-java-modules/core-java-streams-5/src/main/java/com/baeldung/aggregateEx/ExceptionCollector.java b/core-java-modules/core-java-streams-5/src/main/java/com/baeldung/aggregateEx/CustomCollector.java similarity index 56% rename from core-java-modules/core-java-streams-5/src/main/java/com/baeldung/aggregateEx/ExceptionCollector.java rename to core-java-modules/core-java-streams-5/src/main/java/com/baeldung/aggregateEx/CustomCollector.java index 5472724b7c..4e3c2679a1 100644 --- a/core-java-modules/core-java-streams-5/src/main/java/com/baeldung/aggregateEx/ExceptionCollector.java +++ b/core-java-modules/core-java-streams-5/src/main/java/com/baeldung/aggregateEx/CustomCollector.java @@ -1,31 +1,34 @@ package com.baeldung.aggregateEx; +import com.baeldung.aggregateEx.entity.ExceptionAggregator; + import java.util.ArrayList; import java.util.List; import java.util.function.Function; import java.util.stream.Collector; -public class ExceptionCollector { +public class CustomCollector { private final List results = new ArrayList<>(); - private final List exceptions = new ArrayList<>(); + private final List exceptions = new ArrayList<>(); - private ExceptionCollector() { - } + private final ExceptionAggregator exceptionAggregator = new ExceptionAggregator("Exceptions occurred"); - public static Collector> of(Function mapper) { + public static Collector> of(Function mapper) { return Collector.of( - ExceptionCollector::new, + CustomCollector::new, (collector, item) -> { try { R result = mapper.apply(item); collector.results.add(result); } catch (Exception e) { collector.exceptions.add(e); + collector.exceptionAggregator.addException(e); } }, (left, right) -> { left.results.addAll(right.results); left.exceptions.addAll(right.exceptions); + left.exceptionAggregator.addExceptions(right.exceptions); return left; } ); @@ -35,7 +38,11 @@ public class ExceptionCollector { return results; } - public List getExceptions() { + public List getExceptions() { return exceptions; } + + public ExceptionAggregator getExceptionAggregator() { + return exceptionAggregator; + } } diff --git a/core-java-modules/core-java-streams-5/src/main/java/com/baeldung/aggregateEx/CustomMapper.java b/core-java-modules/core-java-streams-5/src/main/java/com/baeldung/aggregateEx/CustomMapper.java index 47b433a132..2e4de3ac66 100644 --- a/core-java-modules/core-java-streams-5/src/main/java/com/baeldung/aggregateEx/CustomMapper.java +++ b/core-java-modules/core-java-streams-5/src/main/java/com/baeldung/aggregateEx/CustomMapper.java @@ -5,7 +5,7 @@ import com.baeldung.aggregateEx.entity.Result; import java.util.function.Function; public class CustomMapper { - public static Function> mapper(Function func) { + public static Function> mapper(Function func) { return arg -> { try { return new Result(func.apply(arg)); diff --git a/core-java-modules/core-java-streams-5/src/main/java/com/baeldung/aggregateEx/entity/ExceptionAggregator.java b/core-java-modules/core-java-streams-5/src/main/java/com/baeldung/aggregateEx/entity/ExceptionAggregator.java index b4c38db2cf..50e11ca33e 100644 --- a/core-java-modules/core-java-streams-5/src/main/java/com/baeldung/aggregateEx/entity/ExceptionAggregator.java +++ b/core-java-modules/core-java-streams-5/src/main/java/com/baeldung/aggregateEx/entity/ExceptionAggregator.java @@ -4,24 +4,24 @@ import java.util.ArrayList; import java.util.List; public class ExceptionAggregator extends RuntimeException { - private List exceptions; + private List exceptions; public ExceptionAggregator(String message) { super(message); exceptions = new ArrayList<>(); } - public List getExceptions() { + public List getExceptions() { return exceptions; } - public Exception addException(Exception e) { + public Throwable addException(Throwable e) { this.addSuppressed(e); exceptions.add(e); return e; } - public void addExceptions(List exceptions) { + public void addExceptions(List exceptions) { exceptions.forEach(this::addException); } } diff --git a/core-java-modules/core-java-streams-5/src/main/java/com/baeldung/aggregateEx/entity/Result.java b/core-java-modules/core-java-streams-5/src/main/java/com/baeldung/aggregateEx/entity/Result.java index 287cccd060..95823d0bc9 100644 --- a/core-java-modules/core-java-streams-5/src/main/java/com/baeldung/aggregateEx/entity/Result.java +++ b/core-java-modules/core-java-streams-5/src/main/java/com/baeldung/aggregateEx/entity/Result.java @@ -2,16 +2,16 @@ package com.baeldung.aggregateEx.entity; import java.util.Optional; -public class Result { +public class Result { private Optional result; - private Optional exception; + private Optional exception; public Result(R result) { this.result = Optional.of(result); this.exception = Optional.empty(); } - public Result(Exception exception) { + public Result(E exception) { this.exception = Optional.of(exception); this.result = Optional.empty(); } @@ -20,8 +20,7 @@ public class Result { return result; } - public Optional getException() { + public Optional getException() { return exception; } - } diff --git a/core-java-modules/core-java-streams-5/src/test/java/com/baeldung/aggregateEx/AggregateExceptionHandlerUnitTest.java b/core-java-modules/core-java-streams-5/src/test/java/com/baeldung/aggregateEx/AggregateExceptionHandlerUnitTest.java index dff9dafbb7..17a53f41f5 100644 --- a/core-java-modules/core-java-streams-5/src/test/java/com/baeldung/aggregateEx/AggregateExceptionHandlerUnitTest.java +++ b/core-java-modules/core-java-streams-5/src/test/java/com/baeldung/aggregateEx/AggregateExceptionHandlerUnitTest.java @@ -5,6 +5,8 @@ import com.baeldung.aggregateEx.entity.Result; import io.vavr.control.Either; import io.vavr.control.Try; import org.junit.Test; +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; import java.util.Arrays; import java.util.List; @@ -12,172 +14,138 @@ import java.util.Map; import java.util.Objects; import java.util.stream.Collectors; -import static org.junit.Assert.*; +import static org.junit.Assert.assertEquals; + public class AggregateExceptionHandlerUnitTest { - - private static RuntimeException process(String str) { - try { - Integer.parseInt(str); - return null; - } catch (NumberFormatException e) { - return new RuntimeException(e); - } - } - - private static Object transform(String str) { - try { - return Integer.parseInt(str); - } catch (NumberFormatException e) { - return new RuntimeException(e); - } - } + static Logger logger = LoggerFactory.getLogger(AggregateExceptionHandlerUnitTest.class); @Test - public void givenExtractedMethod_whenFoundNonInt_thenSuppressExIntoRuntimeEx() { + public void givenExtractedMethod_whenFoundEx_thenSuppressExIntoRuntimeEx() { String[] strings = {"1", "2", "3", "a", "b", "c"}; - RuntimeException runEx = Arrays.stream(strings) - .map(AggregateExceptionHandlerUnitTest::process) + Throwable runEx = Arrays.stream(strings) + .map(str -> callProcessThrowsExAndNoOutput(str)) .filter(Objects::nonNull) .reduce(new RuntimeException("Errors Occurred"), (o1, o2) -> { o1.addSuppressed(o2); return o1; }); + processExceptions(runEx); assertEquals("Errors Occurred", runEx.getMessage()); assertEquals(3, runEx.getSuppressed().length); } - @Test - public void givenTryCatchInPipeline_whenFoundNonInts_thenSuppressExIntoRuntimeEx() { + public void givenTryCatchInPipeline_whenFoundEx_thenSuppressExIntoRuntimeEx() { String[] strings = {"1", "2", "3", "a", "b", "c"}; - RuntimeException runEx = Arrays.stream(strings) - .map(str -> { + RuntimeException runEx = Arrays.stream(strings).map(str -> { try { - Integer.parseInt(str); + processThrowsExAndNoOutput(str); return null; - } catch (NumberFormatException e) { - return new RuntimeException(e); + } catch (RuntimeException e) { + return e; } - }) - .filter(Objects::nonNull) - .reduce(new RuntimeException("Errors Occurred"), (o1, o2) -> { - o1.addSuppressed(o2); - return o1; - }); + }).filter(Objects::nonNull) + .collect(Collectors.collectingAndThen(Collectors.toList(), list -> { + RuntimeException runtimeException = new RuntimeException("Errors Occurred"); + list.forEach(runtimeException::addSuppressed); + return runtimeException; + })); + processExceptions(runEx); assertEquals("Errors Occurred", runEx.getMessage()); assertEquals(3, runEx.getSuppressed().length); } @Test - public void givenExtractedMethodReturnOutputAndEx_whenFoundNonInts_thenSuppressExIntoRuntimeEx() { - String[] strings = {"1", "2", "3", "a", "b", "c"}; - Map resultMap = Arrays.stream(strings) - .map(AggregateExceptionHandlerUnitTest::transform) + public void givenProcessMethod_whenStreamResultHasExAndOutput_thenHandleExceptionListAndOutputList() { + List strings = List.of("1", "2", "3", "a", "b", "c"); + Map map = strings.stream() + .map(s -> processReturnsExAndOutput(s)) .collect(Collectors.partitioningBy(o -> o instanceof RuntimeException, Collectors.toList())); - - RuntimeException ex = null; - - assertTrue(resultMap.containsKey(Boolean.TRUE)); - - List exs = (List) resultMap.get(Boolean.TRUE); - ex = exs.stream() - .reduce( - new RuntimeException("Errors Occurred"), (o1, o2) -> { - o1.addSuppressed(o2); - return o1; - }); - - assertEquals("Errors Occurred", ex.getMessage()); - assertEquals(3, ex.getSuppressed().length); + assert(map.containsKey(Boolean.TRUE) && map.containsKey(Boolean.FALSE)); + handleExceptionsAndOutputs((List) map.get(Boolean.TRUE), (List)map.get(Boolean.FALSE)); } @Test - public void givenWrapFunction_whenFoundNonInts_thenUseExAggregator() throws ExceptionAggregator { - String[] strings = {"1", "2", "3", "a", "b", "c"}; - Map>> resultmap = Arrays.stream(strings) + public void givenCustomMapper_whenStreamResultHasExAndSuccess_thenHandleExceptionListAndOutputList() { + List strings = List.of("1", "2", "3", "a", "b", "c"); + strings.stream() .map(CustomMapper.mapper(Integer::parseInt)) - .collect(Collectors.partitioningBy(r -> r.getException().isEmpty(), Collectors.toList())); - - assertTrue(resultmap.containsKey(Boolean.TRUE)); - - List> resultList = resultmap.get(Boolean.FALSE); - List exceptionList = resultList.stream() - .map(opex -> opex.getException().get()) - .collect(Collectors.toList()); - - assertThrows(ExceptionAggregator.class, () -> handleExceptions(exceptionList)); - - } - - private void handleExceptions(List exceptions) throws ExceptionAggregator { - ExceptionAggregator exceptionAggregator = new ExceptionAggregator("Errors occurred"); - exceptionAggregator.addExceptions(exceptions); - throw exceptionAggregator; + .collect(Collectors.collectingAndThen(Collectors.toList(), list -> handleErrorsAndOutPutForResult(list))); } @Test - public void givenExCollector_whenFoundNonInts_thenAggregateExInCustomCollector() throws ExceptionAggregator { + public void givenCustomCollector_whenStreamResultHasExAndSuccess_thenHandleAggrExceptionAndResults() { String[] strings = {"1", "2", "3", "a", "b", "c"}; - ExceptionCollector exCollector = Arrays.stream(strings) - .collect(ExceptionCollector.of(Integer::parseInt)); - List output = exCollector.getResults(); - List runEx = exCollector.getExceptions(); - assertEquals(3, runEx.size()); + Arrays.stream(strings) + .collect(Collectors.collectingAndThen(CustomCollector.of(Integer::parseInt), col -> { + handleExAndResults(col.getExceptionAggregator(), col.getResults()); + return col; + })); } - private static Either processAndReturnEither(String str) { + @Test + public void givenVavrEitherAndTry_whenStreamResultHasExAndSuccess_thenHandleExceptionListAndOutputList() { + List strings = List.of("1", "2", "3", "a", "b", "c"); + strings.stream() + .map(str -> Try.of(() -> Integer.parseInt(str)).toEither()) + .collect(Collectors.collectingAndThen(Collectors.partitioningBy(Either::isLeft, Collectors.toList()), map -> { + handleErrorsAndOutPutForEither(map); + return map; + })); + } + + private static void processThrowsExAndNoOutput(String input) { + //return exception when input is "a", "b", "c" + if (input.matches("[a-c]")) { + throw new RuntimeException("Downstream method throws exception for " + input); + } + } + private static Throwable callProcessThrowsExAndNoOutput(String input) { try { - return Either.right(Integer.parseInt(str)); - } catch (NumberFormatException e) { - return Either.left(new RuntimeException(e)); + processThrowsExAndNoOutput(input); + return null; + } catch (RuntimeException e) { + return e; } } - @Test - public void givenVavrEither_whenFoundNonInts_thenSuppressExIntoRuntimeEx() { - List strings = List.of("1", "2", "3", "a", "b", "c"); - Map>> map = strings.stream() - .map(str -> processAndReturnEither(str)) - .collect(Collectors.partitioningBy(t -> t.isLeft(), Collectors.toList())); - - assertTrue(map.containsKey(Boolean.TRUE)); - - RuntimeException runEx = map.get(Boolean.TRUE) - .stream().map(either -> either.getLeft()) - .reduce(new RuntimeException("Errors Occurred"), (o1, o2) -> { - o1.addSuppressed(o2); - return o1; - }); - assertEquals(3, runEx.getSuppressed().length); + private static Object processReturnsExAndOutput(String input) { + logger.info("call a downstream method that returns an Integer"); + try { + return Integer.parseInt(input); + } catch (Exception e) { + return new RuntimeException("Exception in processWithReturnOutput for " + input, e); + } } - @Test - public void givenVavrTry_whenFoundNonInts_thenSuppressExIntoRuntimeEx() { - List strings = List.of("1", "2", "3", "a", "b", "c"); - Map>> map = strings.stream() - .map(str -> Try.of(() -> Integer.parseInt(str))) - .collect(Collectors.partitioningBy(t -> t.isFailure(), Collectors.toList())); - Throwable runEx = map.get(Boolean.TRUE).stream() - .map(t -> t.getCause()) - .reduce(new RuntimeException("Errors Occurred"), (o1, o2) -> { - o1.addSuppressed(o2); - return o1; - }); - assertEquals(3, runEx.getSuppressed().length); + private static void processExceptions(Throwable throwable) { + logger.error("Process Exception" + throwable.getMessage()); } - @Test - public void givenVavrEitherAndTry_whenFoundNonInts_thenSuppressExIntoRuntimeEx() { - List strings = List.of("1", "2", "3", "a", "b", "c"); - Map>> map = strings.stream() - .map(str -> Try.of(() -> Integer.parseInt(str)).toEither()) - .collect(Collectors.partitioningBy(Either::isLeft, Collectors.toList())); - Throwable runEx = map.get(Boolean.TRUE).stream() - .map(either -> either.getLeft()) - .reduce(new RuntimeException("Errors Occurred"), (o1, o2) -> { - o1.addSuppressed(o2); - return o1; - }); - assertEquals(3, runEx.getSuppressed().length); + private static void handleExceptionsAndOutputs(List exs, List output) { + logger.info("handle exceptions and output"); } -} + + private static void handleExAndResults(ExceptionAggregator exAgg, List results ) { + logger.info("handle aggregated exceptions and results" + exAgg.getExceptions().size() + " " + results.size()); + } + + private static void handleErrorsAndOutPutForEither(Map>> map) { + logger.info("handle errors and output"); + map.get(Boolean.TRUE).forEach(either -> logger.error("Process Exception " + either.getLeft())); + + map.get(Boolean.FALSE).forEach(either -> logger.info("Process Result " + either.get())); + } + + private static String handleErrorsAndOutPutForResult(List> successAndErrors) { + logger.info("handle errors and output"); + successAndErrors.forEach(result -> { + if (result.getException().isPresent()) { + logger.error("Process Exception " + result.getException().get()); + } else { + logger.info("Process Result" + result.getResult()); + } + }); + return "Errors and Output Handled"; + } +} \ No newline at end of file From 259de2ed39db240d5b5768dfa1fa046ca2b94eb2 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Ana=20Peterli=C4=87?= Date: Tue, 29 Aug 2023 08:32:19 +0200 Subject: [PATCH 34/51] BAEL-6700 - Check if Certificate is Self-Signed or CA Signed with Java (#14628) * BAEL-6700 - Check if Certificate is Self-Signed or CA Signed with Java * Added new module to parent pom * Update test method names --- .../core-java-security-4/README.md | 7 ++ .../core-java-security-4/pom.xml | 16 ++++ .../certificate/RootCertificateUtil.java | 51 ++++++++++++ .../src/main/resources/keystore.jks | Bin 0 -> 3783 bytes .../src/main/resources/truststore.jks | Bin 0 -> 2327 bytes .../SignedCertificateUnitTest.java | 76 ++++++++++++++++++ core-java-modules/pom.xml | 1 + 7 files changed, 151 insertions(+) create mode 100644 core-java-modules/core-java-security-4/README.md create mode 100644 core-java-modules/core-java-security-4/pom.xml create mode 100644 core-java-modules/core-java-security-4/src/main/java/com/baeldung/certificate/RootCertificateUtil.java create mode 100644 core-java-modules/core-java-security-4/src/main/resources/keystore.jks create mode 100644 core-java-modules/core-java-security-4/src/main/resources/truststore.jks create mode 100644 core-java-modules/core-java-security-4/src/test/java/com/baeldung/certificate/SignedCertificateUnitTest.java diff --git a/core-java-modules/core-java-security-4/README.md b/core-java-modules/core-java-security-4/README.md new file mode 100644 index 0000000000..e850841d2b --- /dev/null +++ b/core-java-modules/core-java-security-4/README.md @@ -0,0 +1,7 @@ +## Core Java Security + +This module contains articles about core Java Security + +### Relevant Articles: + +- More articles: [[<-- prev]](/core-java-modules/core-java-security-3) diff --git a/core-java-modules/core-java-security-4/pom.xml b/core-java-modules/core-java-security-4/pom.xml new file mode 100644 index 0000000000..cca86d804a --- /dev/null +++ b/core-java-modules/core-java-security-4/pom.xml @@ -0,0 +1,16 @@ + + + 4.0.0 + core-java-security-4 + core-java-security-4 + 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-security-4/src/main/java/com/baeldung/certificate/RootCertificateUtil.java b/core-java-modules/core-java-security-4/src/main/java/com/baeldung/certificate/RootCertificateUtil.java new file mode 100644 index 0000000000..3e8445971f --- /dev/null +++ b/core-java-modules/core-java-security-4/src/main/java/com/baeldung/certificate/RootCertificateUtil.java @@ -0,0 +1,51 @@ +package com.baeldung.certificate; + +import java.security.KeyStore; +import java.security.KeyStoreException; +import java.security.cert.Certificate; +import java.security.cert.X509Certificate; +import java.util.Enumeration; + +public class RootCertificateUtil { + + private RootCertificateUtil() { + } + + public static X509Certificate getRootCertificate(X509Certificate endEntityCertificate, KeyStore trustStore) + throws Exception { + X509Certificate issuerCertificate = findIssuerCertificate(endEntityCertificate, trustStore); + if (issuerCertificate != null) { + if (isRoot(issuerCertificate)) { + return issuerCertificate; + } else { + return getRootCertificate(issuerCertificate, trustStore); + } + } + return null; + } + + private static X509Certificate findIssuerCertificate(X509Certificate certificate, KeyStore trustStore) + throws KeyStoreException { + Enumeration aliases = trustStore.aliases(); + while (aliases.hasMoreElements()) { + String alias = aliases.nextElement(); + Certificate cert = trustStore.getCertificate(alias); + if (cert instanceof X509Certificate) { + X509Certificate x509Cert = (X509Certificate) cert; + if (x509Cert.getSubjectX500Principal().equals(certificate.getIssuerX500Principal())) { + return x509Cert; + } + } + } + return null; + } + + private static boolean isRoot(X509Certificate certificate) { + try { + certificate.verify(certificate.getPublicKey()); + return certificate.getKeyUsage() != null && certificate.getKeyUsage()[5]; + } catch (Exception e) { + return false; + } + } +} diff --git a/core-java-modules/core-java-security-4/src/main/resources/keystore.jks b/core-java-modules/core-java-security-4/src/main/resources/keystore.jks new file mode 100644 index 0000000000000000000000000000000000000000..656c6c17d3c190f683a12e553bd56610ce673d83 GIT binary patch literal 3783 zcmV;&4mj~Jf)2w10Ru3C4txd)Duzgg_YDCD0ic2oZ3Kc2X)uBgWiWycVFn2*hDe6@ z4FLxRpn?ukFoF(F0s#Opf(}Op2`Yw2hW8Bt2LUi<1_>&LNQU+thDZTr0|Wso1Q2*R@YzkL;!D)+fv4uu{~LgU4baK`j`WRViyHuASGd41BXR@9 zL#gES*;CeWT(09=1~0eA&zGT?rE9XX31r(p>nLV+LA(hW!YP`aSI5puRCf=v(n40T z(aL8d-ae({##3YP75lRV*z}7vNisoL$G!^LM&8P}?2-bdM!E8k!jQ)2^H-h5exY&@ zp>NO=s0LlJ%^I`j1TD@P10T>o@%j=Ydb#wM4zCPQG= z4|`*)G2@brF^PvwCxSgQo;4ecj!!=&Xr?4fo^m1QGL%BzTPEAJamsh1TP=_OpEaRo zFnomtF9+-iZ_9Gm{{xK8L=-EfhBSJuxGoGopb{oYW32r$67 zmq{uGygs$#)jyM<^yf4hSK!>N+ZV zEr~-wFZhk18!t(%Z=;7vp%!o}4xxvKXziS{-jHy${VHJ9dX*}g(v1u{Tw2}*gZu`h z^dDIwA=2N;<2!e0mwk$Y;aaRBmo7vlpWUdO*K+J^yP@*<@Ka1z5B$n#A40|B>M@d> z6RJ;06BFh3n=QdtzPR(7;QB#{uaVvuuch!+?Mbrhx;j~ zNr)O`7ya;bN8E^}E@YlIep`itWSs&2r6gTIkb`m(wT+yL4Fyrv;lzD>AAJ8BmWgRO z7Tesj4zGRzM9am#$V>f1vR@f2+p#v3PxZ4)P!&=vhvE7eCjnekymTqWuNPj} z%_&uClYNd`6JF>huKOqWvtai?SYd5)l^3m3FPpUFaVP(=EN;E-2kwP8egbW zb|C>ZOP}kGVwtte!0p91D#$F=rYC&}A_rQ?oJyfr$IoqIe;VOQSn95u#|F~R-bO}d zOklu%;SQPkX+zQ8cz--wdN0XDq59R}B6y3JTgomWi=vUWQ|w#jsycGAzPRZvllFb6*LnV;5=QycgnhJA`a_WKhET5i z^-$jijs_f}E>muAcm`xJx=w*9A{&3z-RAhyo z(MU!8(^*;~07(KLwv((Nq7#RC+dc(!6eX&?xn{9IkeXKkZ|=yo4|ACwKLtR0z#gY1 z&M#VzsTKEz_M2NR=a^v+;Xq*SjHQG#oB-Ku8!nXCOQ4VgNg2^F`L-2rH&3M$v}|4v z=fvWwgs6ht`_?4>M@23FQ6LdKhfa5AJ11FzQLjhA;+SBlc}=!WqqiN*?hifs_Cl~U zCh$7L3Wh06iR`(vE^I>TrdET-eq1(4RB+qJxj?cPY!)-7clFr1ykxi)%csk4e%PV) zE#Npi=8lEOfEA%mQkvqkCG^r|8IEFbnA?c>l%B0QMgSWSfH`PHN}KPZZ~xFGYOE5Fp<49hGbIQf#`{Oy#nBk!4P7?g|u32h;*=rcT+G79tobo zFdurbeL6krD2@s3Vb0ASiHf^@rgLKR{7g{5KRoVcJ_nLFu6T}ohqyE@oWhE@cX_UM zK*!pjHgWlJs$Bj=2I{So$a5scJ!z6eN9aaEucvA7u&ACMscRalLs5=Fr57#`l)1}D z87%b?MQNo?KT=asiUH5v`&JPepmLJ?Tx{P+IFp5;654kJ>|kWn!xwK#_!nL3C<{#tQDrKaabaDyD!?Hp=28LR^_ll?2N8ps7 zx+-067Ve>x!97vem~EE+d5}1}&Nx>k7y%^e6X)n;Xlfbq_(>bY5)%`McPi{m$Dac8 zVnj`%OA7`tFaySnG#9@*2$hdJQ>XRgcHfLd`%WL0FOBY8MY2GQ;B?1)`svCqlDi18 zV7I5RxJneyuQ>khZ*J3<`@k{V5@Fdm9hXz3>3&nM4RfxtKns(LdoRnoY_5wyAElH6 zfSy`p+$T^Oa9Q^>mSF&_&sKW{S=3 zYwZ~eQB{jH%FR=NCG)Y{Up_hM+%oV^Tr>R?xtyW-6?b}5NJ~72=RC<&?NBH_KO3%< z^auk|aCNWZ7T8z%5P9etH#(DKLC>WU#_iDyAw3~=wloyB6$D1x(3zt8)XI6D%%cRn zeQ5RCTm*um{DC#=ikSCJl|HXAq+T-8wU#q)=&w>{4|6 zjJk$p(tkR8Q!yEArgzFYNgG|Y1F!Fld_%rwpj`ypuVdnI6{f>|uHx1i6D$R3qQ?rN zkGjODS>o$X)_J2k$M^EJ>3fqjz~>E@T=h$uNE#*oP`5$ID_&)|XicO4=It>5gCp8v z3MB}3Zkyu;QVum)F^Qm##D+fHefTeWcEGvwBI-=Yba(T<8WyHpF7J8c;?PvP!2Rdf zTNAYffoDHdmNseB-S^lsF_Qty6P*%cg?gT6S;)lbtrjig0e5rdOS)sSiU#E&SOC=$ zDQNMxW`)yh@J>7|9PP?6E)EN6^ojYSRuv9R3a_?7d6mbI5e4$g(ZX5%GlAwt*oc-> zeum4xq8a`xL}|$Bfs9nC$AC}NG@>}L9@i(yz+tuvQyPPmE+RL6U-TW_QZk%wLUV&A`T(u5CFUbDiOeNpKP`3>; z$IWC!QU&A~Rb7;4?5CXw#2^22Sl_PXWUYyAXEBv|CZ3@GR4o1!FH5@>nQnL*q0fCI z=}zKd13mp_+FL3FBmY}MQTRk)Csv?h)Fyvuve7u`)Y52oo#pRn%*b5FN$&`Ou#Z59>^W2S4~Z4f@1o76S06Vi z_aZug;VaCnR~RG|5GqVhAg2=Ezh<4VUoJLb{Ko!*bpIT&BAQEUzqb*mtWC+rV@Q&* z8wEx|pSF!D3f!CVu-TS^R!IqVwUYai-_EY=m6r_LjYr82gH0=%5XhH?`VZ628_|BV z@vvsY!&uvWZrxaH#~P^Vf=AjAxrc#>(F93G61XB8$1&uN8w(XstQ^%)S6!^QRsL-L zexX=mVWaDJW=1-r&xN}jflht7mJgfG&m`rQx5A+uWf_-MSC1jxId;VMEKRRjj@DsqUXu zC6S%psR!q@9Uf3GD1uv56REBiH!+2)3TD(d7_u_u>%5eGIs$Xy;fb-CkG73En3dhf z#7N+TXDWnMm;@!fQk|`ZwxPOM@jGj8K#BC|O(G=pZeo&0C<*!0W718m)|ZR>_i-(h zJM&A&jY2pw4P_Z=QnA2+i_!ULe^MPNneYy4VL3{LjjRlEIGDNFh+k94^4jeO$7$9z z&jI@DGFhyx_xNXcezUta!JPLCegCzX(n^Ze#Nwx|Cui?WbBNumXCszOEQgA)@F*z1 z8S{m3@;v0%Z}RB(si4wy%J~8;3cG&mJxf6*v}I2OTi>z~JQAETU4hUxuT)gaeeL9& zGCJ_DC1pfv23`PL#5=ZgQfdy|#T(-((&zsRXdgdm0emn%Fd;Ar1_dh)0|FWa00b1a xh|Xb`meiqWRiF;zNqT0jo1t0+6gQt#>Gta#1dI0Ru3C2+RfvDuzgg_YDCD0ic2iy##^?xiEqVwJ?GRu?7h$hDe6@ z4FLxRpn?dZFoFo40s#Opf(Vxe2`Yw2hW8Bt2LUi<1_>&LNQU+thDZTr0|Wso1P~2&goDWGM%QUoqYB`yp^t!q2q3p5^qEI)q9S?R&rH#e@h-8b z++uy!L03-o=0yPrxTfJqM->Z@`&LFyNe9(aRTE(V*;{-{VFu9{@*K<~;vgerQobr?)R&(X_Knspy-{Ah`$JavraMhFe($0< z_mnSF1z^PjnuOu%^&jVG6w}f7&NA3q_V^)#o~X?FG0r!8H8YRJMyfY43QNNX{V`Nw zv|Q?3I0Nvz#`7D@__+KiWX>4LD)c&axtJa$PeNLyc37p({nn*BUxs_lk+7FF!tK>c zBhC}YOjmeNS&bg==bqYbG~`LvzD(_x1p%BC3QBs=OTz^{Yd)=;-LE}@-iPlZx z1U%Py5i8q_wkH>nPO~UjmWJ;k1mjPWzH|f; zIF6iyoaO7@a)1`X6C{X2yEb<$B3ketYTXdKf2jgS48A1Ra5T`H88K3ZB8gs4%Ao$K*5^JSWMt;R?biYKKk^^LH z2C~LKjS2lMJ*UT4rQ-P5`r!Bho>mR^CGn<5Fg}nYJS02;z*&vkjt*X`lu(;=q%tEo zwV{yYy!!oUlK*5f{Y`|W%l_UPE}ar!)QbmR(Cwaw9>R<)zulua*qNt|X+mtrUkz57 zYFRgb6mqFl?@0F=%YjxmRKCI+^wd1vu0?xK13SeaL+LB?r2dZE=Vtw8Ac7SZ~ zI<00TgigeEsUtUMJW1 z+5*!)nbU6r_TnQazaM@jry95~U;^vDev}XIx(y~P*WVZ&vBE2BL;JYTao-9piCmA> zA1wbb_8{qXQ?G7c25w|lg#Y-?Rdv(vn=Ji$B|r~yS<_QiUK|33(0}M;vVG%RN)GFG z2B?CYB~R=qOcji5(&L)=m{h2db_N9QM*Y>B{g^a@me4~W8BqwH{+`c4tb-{UgpyzMzTt!4A0Jyki1)7P9$TdWSvc>+k;6-$ zzBK_5$6YdT7h6+g$YV>ai(yh-pATk)2vLZ~t`yxlmd-O^UvbgXqZ!g1CQP?vlT=&< zV*>Le6^wvCz+kas*o1UcV=`u(oi(rUM+l?1k|G!1u;SxH8l z?ib2&NpJ&QB~ZV>yv8^2@8N}uI4u^RCIgC^xTRJ!1_*1Bss+Xr`dddC@edsVDDL0@Nh?PdLj$Z zUd5x`zA=K~vBO(cs>#l-aS+UP7|@!hlS||WsjRds8OFwxs1w9eZqlo=i~sbrIu*>^ zSFBH+l73HlM@yJ|*4WeEF`Rm8Q certificate.verify(certificate.getPublicKey())); + } + + @Test + void whenCertificateIsCASigned_thenItCantBeVerifiedWithItsOwnPublicKey() throws Exception { + X509Certificate certificate = (X509Certificate) keyStore.getCertificate("baeldung"); + assertThrows(SignatureException.class, () -> certificate.verify(certificate.getPublicKey())); + } + + @Test + void whenCertificateIsCASigned_thenRootCanBeFoundInTruststore() throws Exception { + X509Certificate endEntityCertificate = (X509Certificate) keyStore.getCertificate("baeldung"); + X509Certificate rootCertificate = getRootCertificate(endEntityCertificate, trustStore); + assertNotNull(rootCertificate); + } + + @Test + void whenCertificateIsCA_thenItCanBeUsedToSignOtherCertificates() throws Exception { + X509Certificate certificate = (X509Certificate) keyStore.getCertificate("cloudflare"); + assertTrue(certificate.getKeyUsage()[5]); + } + + @Test + void whenCertificateIsCA_thenBasicConstrainsReturnsZeroOrGreaterThanZero() throws Exception { + X509Certificate certificate = (X509Certificate) keyStore.getCertificate("cloudflare"); + assertNotEquals(-1, certificate.getBasicConstraints()); + } + + @Test + void whenCertificateIsSelfSigned_thenItCantBeUsedToSignOtherCertificates() throws Exception { + X509Certificate certificate = (X509Certificate) keyStore.getCertificate("selfsigned"); + assertNull(certificate.getKeyUsage()); + } +} \ No newline at end of file diff --git a/core-java-modules/pom.xml b/core-java-modules/pom.xml index e9bb86e500..4f21da40f5 100644 --- a/core-java-modules/pom.xml +++ b/core-java-modules/pom.xml @@ -127,6 +127,7 @@ core-java-scanner core-java-security-2 core-java-security-3 + core-java-security-4 core-java-security-algorithms core-java-streams core-java-streams-3 From 2f309cff8636b40df58ef6c62a0aec1595f2883e Mon Sep 17 00:00:00 2001 From: parthiv39731 <70740707+parthiv39731@users.noreply.github.com> Date: Tue, 29 Aug 2023 08:34:38 -0700 Subject: [PATCH 35/51] BAEL-6865, implemented review comments --- .../entity/ExceptionAggregator.java | 27 ---------- .../CustomCollector.java | 12 +---- .../CustomMapper.java | 4 +- .../entity/Result.java | 2 +- .../AggregateExceptionHandlerUnitTest.java | 53 +++++++++---------- 5 files changed, 30 insertions(+), 68 deletions(-) delete mode 100644 core-java-modules/core-java-streams-5/src/main/java/com/baeldung/aggregateEx/entity/ExceptionAggregator.java rename core-java-modules/core-java-streams-5/src/main/java/com/baeldung/{aggregateEx => aggregateexception}/CustomCollector.java (71%) rename core-java-modules/core-java-streams-5/src/main/java/com/baeldung/{aggregateEx => aggregateexception}/CustomMapper.java (78%) rename core-java-modules/core-java-streams-5/src/main/java/com/baeldung/{aggregateEx => aggregateexception}/entity/Result.java (91%) rename core-java-modules/core-java-streams-5/src/test/java/com/baeldung/{aggregateEx => aggregateexception}/AggregateExceptionHandlerUnitTest.java (72%) diff --git a/core-java-modules/core-java-streams-5/src/main/java/com/baeldung/aggregateEx/entity/ExceptionAggregator.java b/core-java-modules/core-java-streams-5/src/main/java/com/baeldung/aggregateEx/entity/ExceptionAggregator.java deleted file mode 100644 index 50e11ca33e..0000000000 --- a/core-java-modules/core-java-streams-5/src/main/java/com/baeldung/aggregateEx/entity/ExceptionAggregator.java +++ /dev/null @@ -1,27 +0,0 @@ -package com.baeldung.aggregateEx.entity; - -import java.util.ArrayList; -import java.util.List; - -public class ExceptionAggregator extends RuntimeException { - private List exceptions; - - public ExceptionAggregator(String message) { - super(message); - exceptions = new ArrayList<>(); - } - - public List getExceptions() { - return exceptions; - } - - public Throwable addException(Throwable e) { - this.addSuppressed(e); - exceptions.add(e); - return e; - } - - public void addExceptions(List exceptions) { - exceptions.forEach(this::addException); - } -} diff --git a/core-java-modules/core-java-streams-5/src/main/java/com/baeldung/aggregateEx/CustomCollector.java b/core-java-modules/core-java-streams-5/src/main/java/com/baeldung/aggregateexception/CustomCollector.java similarity index 71% rename from core-java-modules/core-java-streams-5/src/main/java/com/baeldung/aggregateEx/CustomCollector.java rename to core-java-modules/core-java-streams-5/src/main/java/com/baeldung/aggregateexception/CustomCollector.java index 4e3c2679a1..dea3d3f44c 100644 --- a/core-java-modules/core-java-streams-5/src/main/java/com/baeldung/aggregateEx/CustomCollector.java +++ b/core-java-modules/core-java-streams-5/src/main/java/com/baeldung/aggregateexception/CustomCollector.java @@ -1,6 +1,4 @@ -package com.baeldung.aggregateEx; - -import com.baeldung.aggregateEx.entity.ExceptionAggregator; +package com.baeldung.aggregateexception; import java.util.ArrayList; import java.util.List; @@ -11,8 +9,6 @@ public class CustomCollector { private final List results = new ArrayList<>(); private final List exceptions = new ArrayList<>(); - private final ExceptionAggregator exceptionAggregator = new ExceptionAggregator("Exceptions occurred"); - public static Collector> of(Function mapper) { return Collector.of( CustomCollector::new, @@ -22,13 +18,11 @@ public class CustomCollector { collector.results.add(result); } catch (Exception e) { collector.exceptions.add(e); - collector.exceptionAggregator.addException(e); } }, (left, right) -> { left.results.addAll(right.results); left.exceptions.addAll(right.exceptions); - left.exceptionAggregator.addExceptions(right.exceptions); return left; } ); @@ -41,8 +35,4 @@ public class CustomCollector { public List getExceptions() { return exceptions; } - - public ExceptionAggregator getExceptionAggregator() { - return exceptionAggregator; - } } diff --git a/core-java-modules/core-java-streams-5/src/main/java/com/baeldung/aggregateEx/CustomMapper.java b/core-java-modules/core-java-streams-5/src/main/java/com/baeldung/aggregateexception/CustomMapper.java similarity index 78% rename from core-java-modules/core-java-streams-5/src/main/java/com/baeldung/aggregateEx/CustomMapper.java rename to core-java-modules/core-java-streams-5/src/main/java/com/baeldung/aggregateexception/CustomMapper.java index 2e4de3ac66..920c963337 100644 --- a/core-java-modules/core-java-streams-5/src/main/java/com/baeldung/aggregateEx/CustomMapper.java +++ b/core-java-modules/core-java-streams-5/src/main/java/com/baeldung/aggregateexception/CustomMapper.java @@ -1,6 +1,6 @@ -package com.baeldung.aggregateEx; +package com.baeldung.aggregateexception; -import com.baeldung.aggregateEx.entity.Result; +import com.baeldung.aggregateexception.entity.Result; import java.util.function.Function; diff --git a/core-java-modules/core-java-streams-5/src/main/java/com/baeldung/aggregateEx/entity/Result.java b/core-java-modules/core-java-streams-5/src/main/java/com/baeldung/aggregateexception/entity/Result.java similarity index 91% rename from core-java-modules/core-java-streams-5/src/main/java/com/baeldung/aggregateEx/entity/Result.java rename to core-java-modules/core-java-streams-5/src/main/java/com/baeldung/aggregateexception/entity/Result.java index 95823d0bc9..b723c3e510 100644 --- a/core-java-modules/core-java-streams-5/src/main/java/com/baeldung/aggregateEx/entity/Result.java +++ b/core-java-modules/core-java-streams-5/src/main/java/com/baeldung/aggregateexception/entity/Result.java @@ -1,4 +1,4 @@ -package com.baeldung.aggregateEx.entity; +package com.baeldung.aggregateexception.entity; import java.util.Optional; diff --git a/core-java-modules/core-java-streams-5/src/test/java/com/baeldung/aggregateEx/AggregateExceptionHandlerUnitTest.java b/core-java-modules/core-java-streams-5/src/test/java/com/baeldung/aggregateexception/AggregateExceptionHandlerUnitTest.java similarity index 72% rename from core-java-modules/core-java-streams-5/src/test/java/com/baeldung/aggregateEx/AggregateExceptionHandlerUnitTest.java rename to core-java-modules/core-java-streams-5/src/test/java/com/baeldung/aggregateexception/AggregateExceptionHandlerUnitTest.java index 17a53f41f5..0a6a294f3a 100644 --- a/core-java-modules/core-java-streams-5/src/test/java/com/baeldung/aggregateEx/AggregateExceptionHandlerUnitTest.java +++ b/core-java-modules/core-java-streams-5/src/test/java/com/baeldung/aggregateexception/AggregateExceptionHandlerUnitTest.java @@ -1,7 +1,6 @@ -package com.baeldung.aggregateEx; +package com.baeldung.aggregateexception; -import com.baeldung.aggregateEx.entity.ExceptionAggregator; -import com.baeldung.aggregateEx.entity.Result; +import com.baeldung.aggregateexception.entity.Result; import io.vavr.control.Either; import io.vavr.control.Try; import org.junit.Test; @@ -18,12 +17,12 @@ import static org.junit.Assert.assertEquals; public class AggregateExceptionHandlerUnitTest { - static Logger logger = LoggerFactory.getLogger(AggregateExceptionHandlerUnitTest.class); + private static final Logger logger = LoggerFactory.getLogger(AggregateExceptionHandlerUnitTest.class); @Test public void givenExtractedMethod_whenFoundEx_thenSuppressExIntoRuntimeEx() { String[] strings = {"1", "2", "3", "a", "b", "c"}; - Throwable runEx = Arrays.stream(strings) + RuntimeException runEx = Arrays.stream(strings) .map(str -> callProcessThrowsExAndNoOutput(str)) .filter(Objects::nonNull) .reduce(new RuntimeException("Errors Occurred"), (o1, o2) -> { @@ -58,11 +57,13 @@ public class AggregateExceptionHandlerUnitTest { @Test public void givenProcessMethod_whenStreamResultHasExAndOutput_thenHandleExceptionListAndOutputList() { List strings = List.of("1", "2", "3", "a", "b", "c"); - Map map = strings.stream() + Map> map = strings.stream() .map(s -> processReturnsExAndOutput(s)) .collect(Collectors.partitioningBy(o -> o instanceof RuntimeException, Collectors.toList())); - assert(map.containsKey(Boolean.TRUE) && map.containsKey(Boolean.FALSE)); - handleExceptionsAndOutputs((List) map.get(Boolean.TRUE), (List)map.get(Boolean.FALSE)); + + List exceptions = map.getOrDefault(Boolean.TRUE, List.of()); + List results = map.getOrDefault(Boolean.FALSE, List.of()); + handleExceptionsAndOutputs(exceptions, results); } @Test @@ -70,17 +71,15 @@ public class AggregateExceptionHandlerUnitTest { List strings = List.of("1", "2", "3", "a", "b", "c"); strings.stream() .map(CustomMapper.mapper(Integer::parseInt)) - .collect(Collectors.collectingAndThen(Collectors.toList(), list -> handleErrorsAndOutPutForResult(list))); + .collect(Collectors.collectingAndThen(Collectors.toList(), list -> handleErrorsAndOutputForResult(list))); } @Test public void givenCustomCollector_whenStreamResultHasExAndSuccess_thenHandleAggrExceptionAndResults() { String[] strings = {"1", "2", "3", "a", "b", "c"}; Arrays.stream(strings) - .collect(Collectors.collectingAndThen(CustomCollector.of(Integer::parseInt), col -> { - handleExAndResults(col.getExceptionAggregator(), col.getResults()); - return col; - })); + .collect(Collectors.collectingAndThen(CustomCollector.of(Integer::parseInt), + col -> handleExAndResults(col.getExceptions(), col.getResults()))); } @Test @@ -88,19 +87,17 @@ public class AggregateExceptionHandlerUnitTest { List strings = List.of("1", "2", "3", "a", "b", "c"); strings.stream() .map(str -> Try.of(() -> Integer.parseInt(str)).toEither()) - .collect(Collectors.collectingAndThen(Collectors.partitioningBy(Either::isLeft, Collectors.toList()), map -> { - handleErrorsAndOutPutForEither(map); - return map; - })); + .collect(Collectors.collectingAndThen(Collectors.partitioningBy(Either::isLeft, Collectors.toList()) + , map -> handleErrorsAndOutputForEither(map))); } private static void processThrowsExAndNoOutput(String input) { - //return exception when input is "a", "b", "c" + //throw exception when input is "a", "b", "c" if (input.matches("[a-c]")) { throw new RuntimeException("Downstream method throws exception for " + input); } } - private static Throwable callProcessThrowsExAndNoOutput(String input) { + private static RuntimeException callProcessThrowsExAndNoOutput(String input) { try { processThrowsExAndNoOutput(input); return null; @@ -122,22 +119,24 @@ public class AggregateExceptionHandlerUnitTest { logger.error("Process Exception" + throwable.getMessage()); } - private static void handleExceptionsAndOutputs(List exs, List output) { - logger.info("handle exceptions and output"); + private static void handleExceptionsAndOutputs(List exs, List output) { + logger.info("number of exceptions " + exs.size() + " number of outputs " + output.size()); } - private static void handleExAndResults(ExceptionAggregator exAgg, List results ) { - logger.info("handle aggregated exceptions and results" + exAgg.getExceptions().size() + " " + results.size()); + private static String handleExAndResults(List ex, List results ) { + logger.info("handle aggregated exceptions and results" + ex.size() + " " + results.size()); + return "Exceptions and Results Handled"; } - private static void handleErrorsAndOutPutForEither(Map>> map) { + private static String handleErrorsAndOutputForEither(Map>> map) { logger.info("handle errors and output"); - map.get(Boolean.TRUE).forEach(either -> logger.error("Process Exception " + either.getLeft())); + map.getOrDefault(Boolean.TRUE, List.of()).forEach(either -> logger.error("Process Exception " + either.getLeft())); - map.get(Boolean.FALSE).forEach(either -> logger.info("Process Result " + either.get())); + map.getOrDefault(Boolean.FALSE, List.of()).forEach(either -> logger.info("Process Result " + either.get())); + return "Errors and Output Handled"; } - private static String handleErrorsAndOutPutForResult(List> successAndErrors) { + private static String handleErrorsAndOutputForResult(List> successAndErrors) { logger.info("handle errors and output"); successAndErrors.forEach(result -> { if (result.getException().isPresent()) { From bd869f214e21131b999e09e3c0813ff9ada0f03b Mon Sep 17 00:00:00 2001 From: parthiv39731 <70740707+parthiv39731@users.noreply.github.com> Date: Tue, 29 Aug 2023 09:00:39 -0700 Subject: [PATCH 36/51] BAEL-6865, implemented review comments --- .../AggregateExceptionHandlerUnitTest.java | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/core-java-modules/core-java-streams-5/src/test/java/com/baeldung/aggregateexception/AggregateExceptionHandlerUnitTest.java b/core-java-modules/core-java-streams-5/src/test/java/com/baeldung/aggregateexception/AggregateExceptionHandlerUnitTest.java index 0a6a294f3a..8c19724b87 100644 --- a/core-java-modules/core-java-streams-5/src/test/java/com/baeldung/aggregateexception/AggregateExceptionHandlerUnitTest.java +++ b/core-java-modules/core-java-streams-5/src/test/java/com/baeldung/aggregateexception/AggregateExceptionHandlerUnitTest.java @@ -57,12 +57,12 @@ public class AggregateExceptionHandlerUnitTest { @Test public void givenProcessMethod_whenStreamResultHasExAndOutput_thenHandleExceptionListAndOutputList() { List strings = List.of("1", "2", "3", "a", "b", "c"); - Map> map = strings.stream() + Map map = strings.stream() .map(s -> processReturnsExAndOutput(s)) .collect(Collectors.partitioningBy(o -> o instanceof RuntimeException, Collectors.toList())); - List exceptions = map.getOrDefault(Boolean.TRUE, List.of()); - List results = map.getOrDefault(Boolean.FALSE, List.of()); + List exceptions = (List)map.getOrDefault(Boolean.TRUE, List.of()); + List results = (List)map.getOrDefault(Boolean.FALSE, List.of()); handleExceptionsAndOutputs(exceptions, results); } @@ -119,7 +119,7 @@ public class AggregateExceptionHandlerUnitTest { logger.error("Process Exception" + throwable.getMessage()); } - private static void handleExceptionsAndOutputs(List exs, List output) { + private static void handleExceptionsAndOutputs(List exs, List output) { logger.info("number of exceptions " + exs.size() + " number of outputs " + output.size()); } From 86f7514df6911e70db72b02271a083f7a315d7e2 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Bogdan=20Cardo=C5=9F?= <106325528+sodrac@users.noreply.github.com> Date: Wed, 30 Aug 2023 00:56:00 +0300 Subject: [PATCH 37/51] BAEL-6819 convert from int to Long in Java (#14671) * BAEL-6819 convert from int to Long in Java * BAEL-6819 update package name --- .../baeldung/inttolong/IntToLongUnitTest.java | 36 +++++++++++++++++++ 1 file changed, 36 insertions(+) create mode 100644 core-java-modules/core-java-numbers-conversions/src/test/java/com/baeldung/inttolong/IntToLongUnitTest.java diff --git a/core-java-modules/core-java-numbers-conversions/src/test/java/com/baeldung/inttolong/IntToLongUnitTest.java b/core-java-modules/core-java-numbers-conversions/src/test/java/com/baeldung/inttolong/IntToLongUnitTest.java new file mode 100644 index 0000000000..bc4109b42a --- /dev/null +++ b/core-java-modules/core-java-numbers-conversions/src/test/java/com/baeldung/inttolong/IntToLongUnitTest.java @@ -0,0 +1,36 @@ +package com.baeldung.inttolong; + +import static org.junit.jupiter.api.Assertions.assertEquals; + +import org.junit.jupiter.api.Test; + +class IntToLongUnitTest { + + @Test + void whenUsingTheAutoboxing_thenGetTheExpectedLong() { + int intTen = 10; + Long longTen = (long) intTen; + assertEquals(intTen, longTen); + } + + @Test + void whenUsingTheValueOf_thenGetTheExpectedLong() { + int intTen = 10; + Long longTen = Long.valueOf(intTen); + assertEquals(intTen, longTen); + } + + @Test + void whenUsingTheConstructor_thenGetTheExpectedLong() { + int intTen = 10; + Long longTen = new Long(intTen); + assertEquals(intTen, longTen); + } + + @Test + void whenUsingTheParseLong_thenGetTheExpectedLong() { + int intTen = 10; + Long longTen = Long.parseLong(String.valueOf(intTen)); + assertEquals(intTen, longTen); + } +} \ No newline at end of file From 9e0223b28f73d50814e78b20cca12d35d1dea678 Mon Sep 17 00:00:00 2001 From: parthiv39731 <70740707+parthiv39731@users.noreply.github.com> Date: Tue, 29 Aug 2023 20:16:37 -0700 Subject: [PATCH 38/51] BAEL-6865, implemented review comments --- .../AggregateExceptionHandlerUnitTest.java | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/core-java-modules/core-java-streams-5/src/test/java/com/baeldung/aggregateexception/AggregateExceptionHandlerUnitTest.java b/core-java-modules/core-java-streams-5/src/test/java/com/baeldung/aggregateexception/AggregateExceptionHandlerUnitTest.java index 8c19724b87..6410645d2a 100644 --- a/core-java-modules/core-java-streams-5/src/test/java/com/baeldung/aggregateexception/AggregateExceptionHandlerUnitTest.java +++ b/core-java-modules/core-java-streams-5/src/test/java/com/baeldung/aggregateexception/AggregateExceptionHandlerUnitTest.java @@ -87,8 +87,8 @@ public class AggregateExceptionHandlerUnitTest { List strings = List.of("1", "2", "3", "a", "b", "c"); strings.stream() .map(str -> Try.of(() -> Integer.parseInt(str)).toEither()) - .collect(Collectors.collectingAndThen(Collectors.partitioningBy(Either::isLeft, Collectors.toList()) - , map -> handleErrorsAndOutputForEither(map))); + .collect(Collectors.collectingAndThen(Collectors.partitioningBy(Either::isLeft, Collectors.toList()), + map -> handleErrorsAndOutputForEither(map))); } private static void processThrowsExAndNoOutput(String input) { @@ -142,7 +142,7 @@ public class AggregateExceptionHandlerUnitTest { if (result.getException().isPresent()) { logger.error("Process Exception " + result.getException().get()); } else { - logger.info("Process Result" + result.getResult()); + logger.info("Process Result" + result.getResult().get()); } }); return "Errors and Output Handled"; From efdb71e05eb3e06ea365a693d49ae3d72a5b92be Mon Sep 17 00:00:00 2001 From: gaepi Date: Wed, 30 Aug 2023 10:40:32 +0200 Subject: [PATCH 39/51] JAVA-23096 | renamed tests to live tests --- .../main/java/com/baeldung/testcontainers/Application.java | 1 - ...iesIntegrationTest.java => DynamicPropertiesLiveTest.java} | 4 ++-- ...ionIntegrationTest.java => ServiceConnectionLiveTest.java} | 4 ++-- 3 files changed, 4 insertions(+), 5 deletions(-) rename spring-boot-modules/spring-boot-3-testcontainers/src/test/java/com/baeldung/testcontainers/{DynamicPropertiesIntegrationTest.java => DynamicPropertiesLiveTest.java} (95%) rename spring-boot-modules/spring-boot-3-testcontainers/src/test/java/com/baeldung/testcontainers/{ServiceConnectionIntegrationTest.java => ServiceConnectionLiveTest.java} (94%) diff --git a/spring-boot-modules/spring-boot-3-testcontainers/src/main/java/com/baeldung/testcontainers/Application.java b/spring-boot-modules/spring-boot-3-testcontainers/src/main/java/com/baeldung/testcontainers/Application.java index 9a00bfebf2..afe987a313 100644 --- a/spring-boot-modules/spring-boot-3-testcontainers/src/main/java/com/baeldung/testcontainers/Application.java +++ b/spring-boot-modules/spring-boot-3-testcontainers/src/main/java/com/baeldung/testcontainers/Application.java @@ -2,7 +2,6 @@ package com.baeldung.testcontainers; import org.springframework.boot.SpringApplication; import org.springframework.boot.autoconfigure.SpringBootApplication; -import org.springframework.data.mongodb.repository.config.EnableMongoRepositories; @SpringBootApplication public class Application { diff --git a/spring-boot-modules/spring-boot-3-testcontainers/src/test/java/com/baeldung/testcontainers/DynamicPropertiesIntegrationTest.java b/spring-boot-modules/spring-boot-3-testcontainers/src/test/java/com/baeldung/testcontainers/DynamicPropertiesLiveTest.java similarity index 95% rename from spring-boot-modules/spring-boot-3-testcontainers/src/test/java/com/baeldung/testcontainers/DynamicPropertiesIntegrationTest.java rename to spring-boot-modules/spring-boot-3-testcontainers/src/test/java/com/baeldung/testcontainers/DynamicPropertiesLiveTest.java index 8689b10110..e8818c1019 100644 --- a/spring-boot-modules/spring-boot-3-testcontainers/src/test/java/com/baeldung/testcontainers/DynamicPropertiesIntegrationTest.java +++ b/spring-boot-modules/spring-boot-3-testcontainers/src/test/java/com/baeldung/testcontainers/DynamicPropertiesLiveTest.java @@ -25,7 +25,7 @@ import com.baeldung.testcontainers.support.MiddleEarthCharactersRepository; @Testcontainers @SpringBootTest(webEnvironment = DEFINED_PORT) @DirtiesContext(classMode = AFTER_CLASS) -class DynamicPropertiesIntegrationTest { +class DynamicPropertiesLiveTest { @Container static MongoDBContainer mongoDBContainer = new MongoDBContainer(DockerImageName.parse("mongo:4.0.10")); @@ -48,7 +48,7 @@ class DynamicPropertiesIntegrationTest { new MiddleEarthCharacter("Frodo", "hobbit"), new MiddleEarthCharacter("Samwise", "hobbit"), new MiddleEarthCharacter("Aragon", "human"), - new MiddleEarthCharacter("Gandalf", "wizzard") + new MiddleEarthCharacter("Gandalf", "wizard") )); when().get("/characters?race=hobbit") diff --git a/spring-boot-modules/spring-boot-3-testcontainers/src/test/java/com/baeldung/testcontainers/ServiceConnectionIntegrationTest.java b/spring-boot-modules/spring-boot-3-testcontainers/src/test/java/com/baeldung/testcontainers/ServiceConnectionLiveTest.java similarity index 94% rename from spring-boot-modules/spring-boot-3-testcontainers/src/test/java/com/baeldung/testcontainers/ServiceConnectionIntegrationTest.java rename to spring-boot-modules/spring-boot-3-testcontainers/src/test/java/com/baeldung/testcontainers/ServiceConnectionLiveTest.java index 500d6d2e61..838ee127f6 100644 --- a/spring-boot-modules/spring-boot-3-testcontainers/src/test/java/com/baeldung/testcontainers/ServiceConnectionIntegrationTest.java +++ b/spring-boot-modules/spring-boot-3-testcontainers/src/test/java/com/baeldung/testcontainers/ServiceConnectionLiveTest.java @@ -24,7 +24,7 @@ import com.baeldung.testcontainers.support.MiddleEarthCharactersRepository; @Testcontainers @SpringBootTest(webEnvironment = DEFINED_PORT) @DirtiesContext(classMode = AFTER_CLASS) -class ServiceConnectionIntegrationTest { +class ServiceConnectionLiveTest { @Container @ServiceConnection @@ -44,7 +44,7 @@ class ServiceConnectionIntegrationTest { new MiddleEarthCharacter("Frodo", "hobbit"), new MiddleEarthCharacter("Samwise", "hobbit"), new MiddleEarthCharacter("Aragon", "human"), - new MiddleEarthCharacter("Gandalf", "wizzard") + new MiddleEarthCharacter("Gandalf", "wizard") )); when().get("/characters?race=hobbit") From ef2de84e4e0b11e7bc924a735d93c17deb8ce370 Mon Sep 17 00:00:00 2001 From: kasramp Date: Wed, 30 Aug 2023 15:54:25 +0200 Subject: [PATCH 40/51] JAVA-23096 revert slf4j and logback upgrades --- core-groovy-modules/core-groovy-2/gmavenplus-pom.xml | 1 + graphql-modules/graphql-spqr-boot-starter/pom.xml | 2 -- graphql-modules/graphql-spqr/pom.xml | 2 -- logging-modules/logback/pom.xml | 1 + maven-modules/maven-exec-plugin/pom.xml | 2 +- maven-modules/maven-integration-test/pom.xml | 1 - muleesb/pom.xml | 2 -- parent-boot-3/pom.xml | 2 +- patterns-modules/design-patterns-structural/pom.xml | 10 ---------- persistence-modules/hibernate-jpa/pom.xml | 1 + persistence-modules/spring-boot-persistence-2/pom.xml | 1 + persistence-modules/spring-boot-persistence-3/pom.xml | 2 -- persistence-modules/spring-data-eclipselink/pom.xml | 1 + persistence-modules/spring-persistence-simple/pom.xml | 2 -- pom.xml | 4 ++-- spring-4/pom.xml | 1 - spring-cloud-modules/pom.xml | 2 -- .../spring-cloud-bootstrap/config/pom.xml | 1 - spring-exceptions/pom.xml | 3 --- spring-integration/pom.xml | 2 -- spring-jenkins-pipeline/pom.xml | 2 -- spring-security-modules/spring-security-ldap/pom.xml | 2 -- spring-swagger-codegen/pom.xml | 6 ------ 23 files changed, 9 insertions(+), 44 deletions(-) diff --git a/core-groovy-modules/core-groovy-2/gmavenplus-pom.xml b/core-groovy-modules/core-groovy-2/gmavenplus-pom.xml index 9d4c78dd5f..975ad6f689 100644 --- a/core-groovy-modules/core-groovy-2/gmavenplus-pom.xml +++ b/core-groovy-modules/core-groovy-2/gmavenplus-pom.xml @@ -168,6 +168,7 @@ UTF-8 3.9 1.8 + 1.2.3 diff --git a/graphql-modules/graphql-spqr-boot-starter/pom.xml b/graphql-modules/graphql-spqr-boot-starter/pom.xml index e15be6d1fb..fd9ebc0224 100644 --- a/graphql-modules/graphql-spqr-boot-starter/pom.xml +++ b/graphql-modules/graphql-spqr-boot-starter/pom.xml @@ -36,8 +36,6 @@ 0.0.6 - 1.7.32 - 1.2.7 \ No newline at end of file diff --git a/graphql-modules/graphql-spqr/pom.xml b/graphql-modules/graphql-spqr/pom.xml index 1d77246a7a..756930f2ac 100644 --- a/graphql-modules/graphql-spqr/pom.xml +++ b/graphql-modules/graphql-spqr/pom.xml @@ -37,8 +37,6 @@ 0.11.2 - 1.7.32 - 1.2.7 \ No newline at end of file diff --git a/logging-modules/logback/pom.xml b/logging-modules/logback/pom.xml index 016ac24ce2..8df95c18bb 100644 --- a/logging-modules/logback/pom.xml +++ b/logging-modules/logback/pom.xml @@ -119,6 +119,7 @@ 3.3.5 2.0.1 2.0.0 + 1.4.8 2.0.4 1.18.22 diff --git a/maven-modules/maven-exec-plugin/pom.xml b/maven-modules/maven-exec-plugin/pom.xml index b62dedec7e..f0d4706455 100644 --- a/maven-modules/maven-exec-plugin/pom.xml +++ b/maven-modules/maven-exec-plugin/pom.xml @@ -44,7 +44,7 @@ - 1.4.11 + 1.2.6 3.8.1 1.8 diff --git a/maven-modules/maven-integration-test/pom.xml b/maven-modules/maven-integration-test/pom.xml index 27191d1148..4483bb2d55 100644 --- a/maven-modules/maven-integration-test/pom.xml +++ b/maven-modules/maven-integration-test/pom.xml @@ -276,7 +276,6 @@ 3.0.0 9.4.11.v20180605 2.27 - 1.2.7 \ No newline at end of file diff --git a/muleesb/pom.xml b/muleesb/pom.xml index 26b99c5414..8cdd3400e9 100644 --- a/muleesb/pom.xml +++ b/muleesb/pom.xml @@ -217,8 +217,6 @@ 1.3.6 1.10 2.2.1 - 1.2.7 - 1.7.32 3.3.2 2.5.2 diff --git a/parent-boot-3/pom.xml b/parent-boot-3/pom.xml index bde3f8f760..dabcd7850b 100644 --- a/parent-boot-3/pom.xml +++ b/parent-boot-3/pom.xml @@ -236,7 +236,7 @@ 17 ${java.version} ${java.version} - 1.4.11 + 1.4.4 2.0.3 diff --git a/patterns-modules/design-patterns-structural/pom.xml b/patterns-modules/design-patterns-structural/pom.xml index 473eb40b2e..e9b7194b73 100644 --- a/patterns-modules/design-patterns-structural/pom.xml +++ b/patterns-modules/design-patterns-structural/pom.xml @@ -20,16 +20,6 @@ log4j ${log4j.version} - - org.slf4j - slf4j-api - ${org.slf4j.version} - - - org.slf4j - jcl-over-slf4j - ${org.slf4j.version} - \ No newline at end of file diff --git a/persistence-modules/hibernate-jpa/pom.xml b/persistence-modules/hibernate-jpa/pom.xml index 59ba6a2315..5a99c1c4d0 100644 --- a/persistence-modules/hibernate-jpa/pom.xml +++ b/persistence-modules/hibernate-jpa/pom.xml @@ -88,6 +88,7 @@ 3.0.4 2.1.214 2.0.7 + 1.4.6 diff --git a/persistence-modules/spring-boot-persistence-2/pom.xml b/persistence-modules/spring-boot-persistence-2/pom.xml index dc108bb102..6bca6df2b9 100644 --- a/persistence-modules/spring-boot-persistence-2/pom.xml +++ b/persistence-modules/spring-boot-persistence-2/pom.xml @@ -134,6 +134,7 @@ 21.9.0.0 2.0.7 + 1.4.6 8.0.33 diff --git a/persistence-modules/spring-boot-persistence-3/pom.xml b/persistence-modules/spring-boot-persistence-3/pom.xml index 96488ee907..5e8ad64a7a 100644 --- a/persistence-modules/spring-boot-persistence-3/pom.xml +++ b/persistence-modules/spring-boot-persistence-3/pom.xml @@ -61,8 +61,6 @@ 2.1.8.RELEASE - 1.7.32 - 1.2.7 \ No newline at end of file diff --git a/persistence-modules/spring-data-eclipselink/pom.xml b/persistence-modules/spring-data-eclipselink/pom.xml index 54accd5583..34d8a1a6f8 100644 --- a/persistence-modules/spring-data-eclipselink/pom.xml +++ b/persistence-modules/spring-data-eclipselink/pom.xml @@ -68,6 +68,7 @@ 4.0.1 2.1.214 2.0.7 + 1.4.6 \ No newline at end of file diff --git a/persistence-modules/spring-persistence-simple/pom.xml b/persistence-modules/spring-persistence-simple/pom.xml index 04c0dfe297..c486a95e96 100644 --- a/persistence-modules/spring-persistence-simple/pom.xml +++ b/persistence-modules/spring-persistence-simple/pom.xml @@ -101,8 +101,6 @@ 2.2.7.RELEASE 0.23.0 2.5.2 - 1.7.32 - 1.2.7 \ No newline at end of file diff --git a/pom.xml b/pom.xml index 256661f853..f39559ed28 100644 --- a/pom.xml +++ b/pom.xml @@ -1265,8 +1265,8 @@ - 2.0.7 - 1.4.11 + 1.7.32 + 1.2.7 2.22.2 diff --git a/spring-4/pom.xml b/spring-4/pom.xml index daf4bd7ff6..681747c1f6 100644 --- a/spring-4/pom.xml +++ b/spring-4/pom.xml @@ -122,7 +122,6 @@ 2.4.0 4.0.3 2.17.1 - 1.2.7 \ No newline at end of file diff --git a/spring-cloud-modules/pom.xml b/spring-cloud-modules/pom.xml index c9155329ae..9c926bbe61 100644 --- a/spring-cloud-modules/pom.xml +++ b/spring-cloud-modules/pom.xml @@ -97,8 +97,6 @@ 1.4.7.RELEASE 1.4.7.RELEASE 3.1.3 - 1.2.7 - 1.7.32 diff --git a/spring-cloud-modules/spring-cloud-bootstrap/config/pom.xml b/spring-cloud-modules/spring-cloud-bootstrap/config/pom.xml index 2c275e2562..c1be447822 100644 --- a/spring-cloud-modules/spring-cloud-bootstrap/config/pom.xml +++ b/spring-cloud-modules/spring-cloud-bootstrap/config/pom.xml @@ -43,7 +43,6 @@ 2021.0.7 - 1.2.7 \ No newline at end of file diff --git a/spring-exceptions/pom.xml b/spring-exceptions/pom.xml index fc1b6562dc..49c44f88f2 100644 --- a/spring-exceptions/pom.xml +++ b/spring-exceptions/pom.xml @@ -181,9 +181,6 @@ 2.7 1.6.1 - 3.3.2 - 1.2.7 - 1.7.32 \ No newline at end of file diff --git a/spring-integration/pom.xml b/spring-integration/pom.xml index 4cfff55796..abf5cfb3d6 100644 --- a/spring-integration/pom.xml +++ b/spring-integration/pom.xml @@ -132,8 +132,6 @@ 2.10 2.3.0 42.3.8 - 1.2.7 - 1.7.32 \ No newline at end of file diff --git a/spring-jenkins-pipeline/pom.xml b/spring-jenkins-pipeline/pom.xml index db9aa7f8b7..0d4ad05fc8 100644 --- a/spring-jenkins-pipeline/pom.xml +++ b/spring-jenkins-pipeline/pom.xml @@ -81,8 +81,6 @@ 2.17 - 1.2.7 - 1.7.32 \ No newline at end of file diff --git a/spring-security-modules/spring-security-ldap/pom.xml b/spring-security-modules/spring-security-ldap/pom.xml index f6b4deb732..471ffff4a1 100644 --- a/spring-security-modules/spring-security-ldap/pom.xml +++ b/spring-security-modules/spring-security-ldap/pom.xml @@ -79,8 +79,6 @@ 1.5.5 - 1.2.7 - 1.7.32 \ No newline at end of file diff --git a/spring-swagger-codegen/pom.xml b/spring-swagger-codegen/pom.xml index 52754b1b63..d4fff7eb63 100644 --- a/spring-swagger-codegen/pom.xml +++ b/spring-swagger-codegen/pom.xml @@ -21,10 +21,4 @@ spring-swagger-codegen-app - - - 1.2.7 - 1.7.32 - - \ No newline at end of file From 05ca68683341bc25cb4622b8f70cd73fbd024b83 Mon Sep 17 00:00:00 2001 From: Abhinav Pandey Date: Wed, 30 Aug 2023 21:50:22 +0530 Subject: [PATCH 41/51] BAEL-6692 - converting json to map and comparing (#14630) * BAEL-6692 - converting json to map and comparing * BAEL-6692 - converting json to map and comparing * BAEL-6692 - converting json to map and comparing --- json-modules/json-conversion/pom.xml | 6 +++ .../com/baeldung/jsontomap/FlattenUtils.java | 36 ++++++++++++++++++ .../com/baeldung/jsontomap/JsonUtils.java | 23 ++++++++++++ .../jsontomap/JSONComparisonUnitTest.java | 37 +++++++++++++++++++ .../src/test/resources/first.json | 22 +++++++++++ .../src/test/resources/second.json | 22 +++++++++++ 6 files changed, 146 insertions(+) create mode 100644 json-modules/json-conversion/src/main/java/com/baeldung/jsontomap/FlattenUtils.java create mode 100644 json-modules/json-conversion/src/main/java/com/baeldung/jsontomap/JsonUtils.java create mode 100644 json-modules/json-conversion/src/test/java/com/baeldung/jsontomap/JSONComparisonUnitTest.java create mode 100644 json-modules/json-conversion/src/test/resources/first.json create mode 100644 json-modules/json-conversion/src/test/resources/second.json diff --git a/json-modules/json-conversion/pom.xml b/json-modules/json-conversion/pom.xml index 365c6d2ac9..680f27fa38 100644 --- a/json-modules/json-conversion/pom.xml +++ b/json-modules/json-conversion/pom.xml @@ -29,11 +29,17 @@ jackson-databind ${jackson.version} + + com.google.guava + guava + ${guava.version} + 20211205 2.10.1 + 32.1.2-jre diff --git a/json-modules/json-conversion/src/main/java/com/baeldung/jsontomap/FlattenUtils.java b/json-modules/json-conversion/src/main/java/com/baeldung/jsontomap/FlattenUtils.java new file mode 100644 index 0000000000..2fd49d99ad --- /dev/null +++ b/json-modules/json-conversion/src/main/java/com/baeldung/jsontomap/FlattenUtils.java @@ -0,0 +1,36 @@ +package com.baeldung.jsontomap; + +import java.util.HashMap; +import java.util.List; +import java.util.Map; + +public class FlattenUtils { + public static Map flatten(Map map) { + return flatten(map, null); + } + + private static Map flatten(Map map, String prefix) { + Map flatMap = new HashMap<>(); + map.forEach((key, value) -> { + String newKey = prefix != null ? prefix + "." + key : key; + if (value instanceof Map) { + flatMap.putAll(flatten((Map) value, newKey)); + } else if (value instanceof List) { + // check for list of primitives + Object element = ((List) value).get(0); + if (element instanceof String || element instanceof Number || element instanceof Boolean) { + flatMap.put(newKey, value); + } else { + // check for list of objects + List> list = (List>) value; + for (int i = 0; i < list.size(); i++) { + flatMap.putAll(flatten(list.get(i), newKey + "[" + i + "]")); + } + } + } else { + flatMap.put(newKey, value); + } + }); + return flatMap; + } +} \ No newline at end of file diff --git a/json-modules/json-conversion/src/main/java/com/baeldung/jsontomap/JsonUtils.java b/json-modules/json-conversion/src/main/java/com/baeldung/jsontomap/JsonUtils.java new file mode 100644 index 0000000000..35339494fb --- /dev/null +++ b/json-modules/json-conversion/src/main/java/com/baeldung/jsontomap/JsonUtils.java @@ -0,0 +1,23 @@ +package com.baeldung.jsontomap; + +import com.fasterxml.jackson.core.type.TypeReference; +import com.fasterxml.jackson.databind.ObjectMapper; +import com.google.gson.Gson; +import com.google.gson.reflect.TypeToken; + +import java.io.File; +import java.io.FileReader; +import java.io.IOException; +import java.util.Map; + +public class JsonUtils { + public static Map jsonFileToMap(String path) throws IOException { + ObjectMapper mapper = new ObjectMapper(); + return mapper.readValue(new File(path), new TypeReference>() {}); + } + + public static Map jsonFileToMapGson(String path) throws IOException { + Gson gson = new Gson(); + return gson.fromJson(new FileReader(path), new TypeToken>() {}.getType()); + } +} diff --git a/json-modules/json-conversion/src/test/java/com/baeldung/jsontomap/JSONComparisonUnitTest.java b/json-modules/json-conversion/src/test/java/com/baeldung/jsontomap/JSONComparisonUnitTest.java new file mode 100644 index 0000000000..908161c258 --- /dev/null +++ b/json-modules/json-conversion/src/test/java/com/baeldung/jsontomap/JSONComparisonUnitTest.java @@ -0,0 +1,37 @@ +package com.baeldung.jsontomap; + +import com.google.common.collect.MapDifference; +import com.google.common.collect.Maps; +import org.junit.jupiter.api.Test; + +import java.io.IOException; +import java.util.Map; + +import static org.assertj.core.api.Assertions.assertThat; + +public class JSONComparisonUnitTest { + + @Test + void givenTwoJsonFiles_whenCompared_thenTheyAreDifferent() throws IOException { + Map firstMap = JsonUtils.jsonFileToMap("src/test/resources/first.json"); + Map secondMap = JsonUtils.jsonFileToMap("src/test/resources/second.json"); + + MapDifference difference = Maps.difference(firstMap, secondMap); + difference.entriesDiffering().forEach((key, value) -> { + System.out.println(key + ": " + value.leftValue() + " - " + value.rightValue()); + }); + assertThat(difference.areEqual()).isFalse(); + } + + @Test + void givenTwoJsonFiles_whenFlattenedAndCompared_thenTheyAreDifferent() throws IOException { + Map firstFlatMap = FlattenUtils.flatten(JsonUtils.jsonFileToMap("src/test/resources/first.json")); + Map secondFlatMap = FlattenUtils.flatten(JsonUtils.jsonFileToMap("src/test/resources/second.json")); + + MapDifference difference = Maps.difference(firstFlatMap, secondFlatMap); + difference.entriesDiffering().forEach((key, value) -> { + System.out.println(key + ": " + value.leftValue() + " - " + value.rightValue()); + }); + assertThat(difference.areEqual()).isFalse(); + } +} diff --git a/json-modules/json-conversion/src/test/resources/first.json b/json-modules/json-conversion/src/test/resources/first.json new file mode 100644 index 0000000000..905859c59f --- /dev/null +++ b/json-modules/json-conversion/src/test/resources/first.json @@ -0,0 +1,22 @@ +{ + "name": "John", + "age": 30, + "cars": [ + "Ford", + "BMW" + ], + "address": { + "street": "Second Street", + "city": "New York" + }, + "children": [ + { + "name": "Sara", + "age": 5 + }, + { + "name": "Alex", + "age": 3 + } + ] +} \ No newline at end of file diff --git a/json-modules/json-conversion/src/test/resources/second.json b/json-modules/json-conversion/src/test/resources/second.json new file mode 100644 index 0000000000..503228519f --- /dev/null +++ b/json-modules/json-conversion/src/test/resources/second.json @@ -0,0 +1,22 @@ +{ + "name": "John", + "age": 30, + "cars": [ + "Ford", + "Audi" + ], + "address": { + "street": "Main Street", + "city": "New York" + }, + "children": [ + { + "name": "Peter", + "age": 5 + }, + { + "name": "Cathy", + "age": 10 + } + ] +} \ No newline at end of file From 036409850b58e19e58213bb853839860dc05e7e0 Mon Sep 17 00:00:00 2001 From: Michael Olayemi Date: Fri, 1 Sep 2023 03:12:51 +0000 Subject: [PATCH 42/51] Clamp Function in Java (#14650) * Clamp Function in Java * Clamp Function in Java * Clamp Function in Java * Clamp Function in Java --- .../com/baeldung/clampfunction/Clamp.java | 23 +++++++++++ .../clampfunction/ClampFunctionUnitTest.java | 40 +++++++++++++++++++ 2 files changed, 63 insertions(+) create mode 100644 core-java-modules/core-java-lang-math-3/src/main/java/com/baeldung/clampfunction/Clamp.java create mode 100644 core-java-modules/core-java-lang-math-3/src/test/java/com/baeldung/clampfunction/ClampFunctionUnitTest.java diff --git a/core-java-modules/core-java-lang-math-3/src/main/java/com/baeldung/clampfunction/Clamp.java b/core-java-modules/core-java-lang-math-3/src/main/java/com/baeldung/clampfunction/Clamp.java new file mode 100644 index 0000000000..4c62c0560e --- /dev/null +++ b/core-java-modules/core-java-lang-math-3/src/main/java/com/baeldung/clampfunction/Clamp.java @@ -0,0 +1,23 @@ +package com.baeldung.clampfunction; + +public class Clamp { + + public int clamp(int value, int min, int max) { + return Math.max(min, Math.min(max, value)); + } + + public double clamp(double value, double min, double max) { + return Math.max(min, Math.min(max, value)); + } + + public static > T clamp(T value, T min, T max) { + if (value.compareTo(min) < 0) { + return min; + } else if (value.compareTo(max) > 0) { + return max; + } else { + return value; + } + } + +} diff --git a/core-java-modules/core-java-lang-math-3/src/test/java/com/baeldung/clampfunction/ClampFunctionUnitTest.java b/core-java-modules/core-java-lang-math-3/src/test/java/com/baeldung/clampfunction/ClampFunctionUnitTest.java new file mode 100644 index 0000000000..7bcf676dd0 --- /dev/null +++ b/core-java-modules/core-java-lang-math-3/src/test/java/com/baeldung/clampfunction/ClampFunctionUnitTest.java @@ -0,0 +1,40 @@ +package com.baeldung.clampfunction; + +import static org.junit.jupiter.api.Assertions.*; + +import org.junit.jupiter.api.BeforeEach; +import org.junit.jupiter.api.Test; + +public class ClampFunctionUnitTest { + + Clamp clampValue = new Clamp(); + + @Test + public void givenValueOutsideRange_whenClamp_thenReturnLowerValue() { + assertEquals(15, clampValue.clamp(10, 15, 35)); + } + + @Test + public void givenValueWithinRange_whenClamp_thenReturnValue() { + assertEquals(20, clampValue.clamp(20, 15, 35)); + } + + @Test + public void givenValueOutsideRange_whenClamp_thenReturnMaximumValue() { + assertEquals(35, clampValue.clamp(50, 15, 35)); + } + + @Test + public void givenDoubleValueOutsideRange_whenClamp_thenReturnMaximumValue() { + assertEquals(60.5, clampValue.clamp(75.6, 25.5, 60.5)); + } + + /* + * This method uses the clamp() method introduced in Java 21 + @Test + public void givenValueWithinRange_whenClamp_thenReturnValue() { + assertEquals(20, Math.clamp(20, 67,98)); + } + */ + +} From 94b8db604292597d090886dc631c3698fe32a3ea Mon Sep 17 00:00:00 2001 From: Pedro Lopes Date: Fri, 1 Sep 2023 16:01:51 -0300 Subject: [PATCH 43/51] BAEL-6699: Java Interface Naming Conventions (#14551) * interfaces and implementations * code review changes --- .../interfaces/namingconventions/Identifiable.java | 5 +++++ .../interfaces/namingconventions/RegularUser.java | 13 +++++++++++++ .../interfaces/namingconventions/RootUser.java | 13 +++++++++++++ .../baeldung/interfaces/namingconventions/User.java | 5 +++++ 4 files changed, 36 insertions(+) create mode 100644 core-java-modules/core-java-lang-oop-others/src/main/java/com/baeldung/interfaces/namingconventions/Identifiable.java create mode 100644 core-java-modules/core-java-lang-oop-others/src/main/java/com/baeldung/interfaces/namingconventions/RegularUser.java create mode 100644 core-java-modules/core-java-lang-oop-others/src/main/java/com/baeldung/interfaces/namingconventions/RootUser.java create mode 100644 core-java-modules/core-java-lang-oop-others/src/main/java/com/baeldung/interfaces/namingconventions/User.java diff --git a/core-java-modules/core-java-lang-oop-others/src/main/java/com/baeldung/interfaces/namingconventions/Identifiable.java b/core-java-modules/core-java-lang-oop-others/src/main/java/com/baeldung/interfaces/namingconventions/Identifiable.java new file mode 100644 index 0000000000..080f63b295 --- /dev/null +++ b/core-java-modules/core-java-lang-oop-others/src/main/java/com/baeldung/interfaces/namingconventions/Identifiable.java @@ -0,0 +1,5 @@ +package com.baeldung.interfaces.namingconventions; + +public interface Identifiable { + void identify(); +} diff --git a/core-java-modules/core-java-lang-oop-others/src/main/java/com/baeldung/interfaces/namingconventions/RegularUser.java b/core-java-modules/core-java-lang-oop-others/src/main/java/com/baeldung/interfaces/namingconventions/RegularUser.java new file mode 100644 index 0000000000..e75d01e365 --- /dev/null +++ b/core-java-modules/core-java-lang-oop-others/src/main/java/com/baeldung/interfaces/namingconventions/RegularUser.java @@ -0,0 +1,13 @@ +package com.baeldung.interfaces.namingconventions; + +public class RegularUser implements User { + @Override + public void identify() { + // some implementation + } + + @Override + public void authorize() { + // some implementation + } +} diff --git a/core-java-modules/core-java-lang-oop-others/src/main/java/com/baeldung/interfaces/namingconventions/RootUser.java b/core-java-modules/core-java-lang-oop-others/src/main/java/com/baeldung/interfaces/namingconventions/RootUser.java new file mode 100644 index 0000000000..a02804d0b3 --- /dev/null +++ b/core-java-modules/core-java-lang-oop-others/src/main/java/com/baeldung/interfaces/namingconventions/RootUser.java @@ -0,0 +1,13 @@ +package com.baeldung.interfaces.namingconventions; + +public class RootUser implements User { + @Override + public void identify() { + // some implementation + } + + @Override + public void authorize() { + // some implementation + } +} diff --git a/core-java-modules/core-java-lang-oop-others/src/main/java/com/baeldung/interfaces/namingconventions/User.java b/core-java-modules/core-java-lang-oop-others/src/main/java/com/baeldung/interfaces/namingconventions/User.java new file mode 100644 index 0000000000..2891126ddd --- /dev/null +++ b/core-java-modules/core-java-lang-oop-others/src/main/java/com/baeldung/interfaces/namingconventions/User.java @@ -0,0 +1,5 @@ +package com.baeldung.interfaces.namingconventions; + +public interface User extends Identifiable { + void authorize(); +} From 29c9c5dba98b3ebb98b3db3428dbc92ecf29707d Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Kingsley=E2=9C=A8?= <64941442+KingsleyAmankwah@users.noreply.github.com> Date: Sat, 2 Sep 2023 05:27:34 +0000 Subject: [PATCH 44/51] XSLT Processing Update (#14693) --- .../XSLTProcessorWithParametersAndOption.java | 31 +++++++++++++++++++ .../XSLTProcessorWithTemplate.java | 21 +++++++++++++ 2 files changed, 52 insertions(+) create mode 100644 apache-libraries-2/src/main/java/com/baeldung/xsltProcessing/XSLTProcessorWithParametersAndOption.java create mode 100644 apache-libraries-2/src/main/java/com/baeldung/xsltProcessing/XSLTProcessorWithTemplate.java diff --git a/apache-libraries-2/src/main/java/com/baeldung/xsltProcessing/XSLTProcessorWithParametersAndOption.java b/apache-libraries-2/src/main/java/com/baeldung/xsltProcessing/XSLTProcessorWithParametersAndOption.java new file mode 100644 index 0000000000..07efab080d --- /dev/null +++ b/apache-libraries-2/src/main/java/com/baeldung/xsltProcessing/XSLTProcessorWithParametersAndOption.java @@ -0,0 +1,31 @@ +package com.baeldung.xsltProcessing; + +import javax.xml.transform.*; +import javax.xml.transform.stream.StreamResult; +import javax.xml.transform.stream.StreamSource; +import java.io.File; + +public class XSLTProcessorWithParametersAndOption { + public static void transformXMLWithParametersAndOption( + String inputXMLPath, + String xsltPath, + String outputHTMLPath, + String companyName, + boolean enableIndentation + ) throws TransformerException { + TransformerFactory transformerFactory = TransformerFactory.newInstance(); + Source xsltSource = new StreamSource(new File(xsltPath)); + Transformer transformer = transformerFactory.newTransformer(xsltSource); + + transformer.setParameter("companyName", companyName); + + if (enableIndentation) { + transformer.setOutputProperty(OutputKeys.INDENT, "yes"); + } + + Source xmlSource = new StreamSource(new File(inputXMLPath)); + Result outputResult = new StreamResult(new File(outputHTMLPath)); + + transformer.transform(xmlSource, outputResult); + } +} diff --git a/apache-libraries-2/src/main/java/com/baeldung/xsltProcessing/XSLTProcessorWithTemplate.java b/apache-libraries-2/src/main/java/com/baeldung/xsltProcessing/XSLTProcessorWithTemplate.java new file mode 100644 index 0000000000..017fc0db8b --- /dev/null +++ b/apache-libraries-2/src/main/java/com/baeldung/xsltProcessing/XSLTProcessorWithTemplate.java @@ -0,0 +1,21 @@ +package com.baeldung.xsltProcessing; + +import javax.xml.transform.*; +import javax.xml.transform.stream.StreamResult; +import javax.xml.transform.stream.StreamSource; +import java.io.File; + +public class XSLTProcessorWithTemplate { + public static void transformXMLUsingTemplate(String inputXMLPath, String xsltPath, String outputHTMLPath) throws TransformerException { + TransformerFactory transformerFactory = TransformerFactory.newInstance(); + Source xsltSource = new StreamSource(new File(xsltPath)); + Templates templates = transformerFactory.newTemplates(xsltSource); + + Transformer transformer = templates.newTransformer(); + + Source xmlSource = new StreamSource(new File(inputXMLPath)); + Result outputResult = new StreamResult(new File(outputHTMLPath)); + + transformer.transform(xmlSource, outputResult); + } +} From 8c3d581fa9b66dd7b91d6d26d31eb1c81d5bd3f9 Mon Sep 17 00:00:00 2001 From: Forb Yuan Date: Sat, 2 Sep 2023 22:23:29 +0800 Subject: [PATCH 45/51] BAEL-6300: Invoking Spring Cache @Cacheable from Another Method of the Same Bean (#14689) * BAEL-6300: Problem Reproduction * BAEL-6300: Internal Invocation with External Reference * BAEL-6300: compile-time weaving * BAEL-6300: load-time weaving --- spring-aop-2/pom.xml | 115 ++++++++++++++++++ .../main/java/com/baeldung/Application.java | 8 ++ .../CompileTimeWeavingApplication.java | 20 +++ .../LoadTimeWeavingApplication.java | 16 +++ .../baeldung/selfinvocation/MathService.java | 43 +++++++ spring-aop-2/src/main/resources/logback.xml | 2 + .../CompileTimeWeavingIntegrationTest.java | 24 ++++ .../LoadTimeWeavingIntegrationTest.java | 25 ++++ .../MathServiceIntegrationTest.java | 47 +++++++ 9 files changed, 300 insertions(+) create mode 100644 spring-aop-2/src/main/java/com/baeldung/selfinvocation/CompileTimeWeavingApplication.java create mode 100644 spring-aop-2/src/main/java/com/baeldung/selfinvocation/LoadTimeWeavingApplication.java create mode 100644 spring-aop-2/src/main/java/com/baeldung/selfinvocation/MathService.java create mode 100644 spring-aop-2/src/test/java/com/baeldung/selfinvocation/CompileTimeWeavingIntegrationTest.java create mode 100644 spring-aop-2/src/test/java/com/baeldung/selfinvocation/LoadTimeWeavingIntegrationTest.java create mode 100644 spring-aop-2/src/test/java/com/baeldung/selfinvocation/MathServiceIntegrationTest.java diff --git a/spring-aop-2/pom.xml b/spring-aop-2/pom.xml index 056e248a3c..206e1d7d7c 100644 --- a/spring-aop-2/pom.xml +++ b/spring-aop-2/pom.xml @@ -51,4 +51,119 @@ + + + no-weaving + + true + + + + + + org.apache.maven.plugins + maven-surefire-plugin + + + com.baeldung.selfinvocation.CompileTimeWeavingIntegrationTest + com.baeldung.selfinvocation.LoadTimeWeavingIntegrationTest + + + + + + + + + compile-time-weaving + + + + org.springframework + spring-aspects + + + + + + org.apache.maven.plugins + maven-surefire-plugin + + + com.baeldung.selfinvocation.CompileTimeWeavingIntegrationTest + + + + + org.codehaus.mojo + aspectj-maven-plugin + ${aspectj-plugin.version} + + ${java.version} + ${java.version} + ${java.version} + ignore + UTF-8 + + + org.springframework + spring-aspects + + + + + + + compile + + + + + + + + + + load-time-weaving + + + + org.springframework + spring-aspects + + + org.springframework + spring-tx + + + + + + org.apache.maven.plugins + maven-surefire-plugin + ${maven-surefire-plugin.version} + + + --add-opens java.base/java.lang=ALL-UNNAMED + --add-opens java.base/java.util=ALL-UNNAMED + -javaagent:"${settings.localRepository}"/org/aspectj/aspectjweaver/${aspectjweaver.version}/aspectjweaver-${aspectjweaver.version}.jar + -javaagent:"${settings.localRepository}"/org/springframework/spring-instrument/${spring.version}/spring-instrument-${spring.version}.jar + + true + always + + com.baeldung.selfinvocation.LoadTimeWeavingIntegrationTest + + + + + + + + + + 1.14.0 + 5.3.27 + + \ No newline at end of file diff --git a/spring-aop-2/src/main/java/com/baeldung/Application.java b/spring-aop-2/src/main/java/com/baeldung/Application.java index c0490d50c6..cc64447264 100644 --- a/spring-aop-2/src/main/java/com/baeldung/Application.java +++ b/spring-aop-2/src/main/java/com/baeldung/Application.java @@ -2,8 +2,16 @@ package com.baeldung; import org.springframework.boot.SpringApplication; import org.springframework.boot.autoconfigure.SpringBootApplication; +import org.springframework.cache.annotation.EnableCaching; +import org.springframework.context.annotation.ComponentScan; +import org.springframework.context.annotation.FilterType; @SpringBootApplication +@ComponentScan(basePackages = { "com.baeldung" }, excludeFilters = { + @ComponentScan.Filter(type = FilterType.ANNOTATION, + value = { SpringBootApplication.class}) +}) +@EnableCaching public class Application { public static void main(String[] args) { diff --git a/spring-aop-2/src/main/java/com/baeldung/selfinvocation/CompileTimeWeavingApplication.java b/spring-aop-2/src/main/java/com/baeldung/selfinvocation/CompileTimeWeavingApplication.java new file mode 100644 index 0000000000..03995dd53b --- /dev/null +++ b/spring-aop-2/src/main/java/com/baeldung/selfinvocation/CompileTimeWeavingApplication.java @@ -0,0 +1,20 @@ +package com.baeldung.selfinvocation; + +import org.springframework.boot.SpringApplication; +import org.springframework.boot.autoconfigure.SpringBootApplication; +import org.springframework.cache.annotation.EnableCaching; +import org.springframework.context.annotation.AdviceMode; +import org.springframework.context.annotation.ComponentScan; +import org.springframework.context.annotation.FilterType; + +@SpringBootApplication +@EnableCaching(mode = AdviceMode.ASPECTJ) +@ComponentScan(basePackages = { "com.baeldung" }, excludeFilters = { + @ComponentScan.Filter(type = FilterType.ANNOTATION, + value = { SpringBootApplication.class}) +}) +public class CompileTimeWeavingApplication { + public static void main(String[] args) { + SpringApplication.run(CompileTimeWeavingApplication.class, args); + } +} \ No newline at end of file diff --git a/spring-aop-2/src/main/java/com/baeldung/selfinvocation/LoadTimeWeavingApplication.java b/spring-aop-2/src/main/java/com/baeldung/selfinvocation/LoadTimeWeavingApplication.java new file mode 100644 index 0000000000..a3dcc161b3 --- /dev/null +++ b/spring-aop-2/src/main/java/com/baeldung/selfinvocation/LoadTimeWeavingApplication.java @@ -0,0 +1,16 @@ +package com.baeldung.selfinvocation; + +import org.springframework.boot.SpringApplication; +import org.springframework.boot.autoconfigure.SpringBootApplication; +import org.springframework.cache.annotation.EnableCaching; +import org.springframework.context.annotation.AdviceMode; +import org.springframework.context.annotation.EnableLoadTimeWeaving; + +@SpringBootApplication +@EnableCaching(mode = AdviceMode.ASPECTJ) +@EnableLoadTimeWeaving +public class LoadTimeWeavingApplication { + public static void main(String[] args) { + SpringApplication.run(LoadTimeWeavingApplication.class, args); + } +} \ No newline at end of file diff --git a/spring-aop-2/src/main/java/com/baeldung/selfinvocation/MathService.java b/spring-aop-2/src/main/java/com/baeldung/selfinvocation/MathService.java new file mode 100644 index 0000000000..993b73295f --- /dev/null +++ b/spring-aop-2/src/main/java/com/baeldung/selfinvocation/MathService.java @@ -0,0 +1,43 @@ +package com.baeldung.selfinvocation; + +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.cache.annotation.CacheConfig; +import org.springframework.cache.annotation.CacheEvict; +import org.springframework.cache.annotation.Cacheable; +import org.springframework.context.annotation.Scope; +import org.springframework.context.annotation.ScopedProxyMode; +import org.springframework.stereotype.Service; + +import java.util.concurrent.atomic.AtomicInteger; + +@Service +@CacheConfig(cacheNames = "square") +@Scope(proxyMode = ScopedProxyMode.TARGET_CLASS) +public class MathService { + + @Autowired + private MathService self; + private final AtomicInteger counter = new AtomicInteger(); + + @CacheEvict(allEntries = true) + public AtomicInteger resetCounter() { + counter.set(0); + return counter; + } + + @Cacheable(key = "#n") + public double square(double n) { + counter.incrementAndGet(); + return n * n; + } + + public double sumOfSquareOf2() { + return this.square(2) + this.square(2); + } + + public double sumOfSquareOf3() { + return self.square(3) + self.square(3); + } + +} + diff --git a/spring-aop-2/src/main/resources/logback.xml b/spring-aop-2/src/main/resources/logback.xml index 4eaa556705..d63707a9da 100644 --- a/spring-aop-2/src/main/resources/logback.xml +++ b/spring-aop-2/src/main/resources/logback.xml @@ -17,6 +17,8 @@ + + diff --git a/spring-aop-2/src/test/java/com/baeldung/selfinvocation/CompileTimeWeavingIntegrationTest.java b/spring-aop-2/src/test/java/com/baeldung/selfinvocation/CompileTimeWeavingIntegrationTest.java new file mode 100644 index 0000000000..d0522f67e5 --- /dev/null +++ b/spring-aop-2/src/test/java/com/baeldung/selfinvocation/CompileTimeWeavingIntegrationTest.java @@ -0,0 +1,24 @@ +package com.baeldung.selfinvocation; + +import org.junit.jupiter.api.Test; +import org.springframework.boot.test.context.SpringBootTest; + +import javax.annotation.Resource; +import java.util.concurrent.atomic.AtomicInteger; + +import static org.assertj.core.api.Assertions.assertThat; + +@SpringBootTest(classes = CompileTimeWeavingApplication.class) +class CompileTimeWeavingIntegrationTest { + + @Resource + private MathService mathService; + + @Test + void givenCacheableMethod_whenInvokingByInternalCall_thenCacheIsTriggered() { + AtomicInteger counter = mathService.resetCounter(); + + assertThat(mathService.sumOfSquareOf2()).isEqualTo(8); + assertThat(counter.get()).isEqualTo(1); + } +} \ No newline at end of file diff --git a/spring-aop-2/src/test/java/com/baeldung/selfinvocation/LoadTimeWeavingIntegrationTest.java b/spring-aop-2/src/test/java/com/baeldung/selfinvocation/LoadTimeWeavingIntegrationTest.java new file mode 100644 index 0000000000..93c57699d6 --- /dev/null +++ b/spring-aop-2/src/test/java/com/baeldung/selfinvocation/LoadTimeWeavingIntegrationTest.java @@ -0,0 +1,25 @@ +package com.baeldung.selfinvocation; + +import org.junit.jupiter.api.Test; +import org.springframework.boot.test.context.SpringBootTest; + +import javax.annotation.Resource; +import java.util.concurrent.atomic.AtomicInteger; + +import static org.assertj.core.api.Assertions.assertThat; + +@SpringBootTest(classes = LoadTimeWeavingApplication.class) +class LoadTimeWeavingIntegrationTest { + + @Resource + private MathService mathService; + + @Test + void givenCacheableMethod_whenInvokingByInternalCall_thenCacheIsTriggered() { + AtomicInteger counter = mathService.resetCounter(); + + assertThat(mathService.sumOfSquareOf2()).isEqualTo(8); + assertThat(counter.get()).isEqualTo(1); + } + +} \ No newline at end of file diff --git a/spring-aop-2/src/test/java/com/baeldung/selfinvocation/MathServiceIntegrationTest.java b/spring-aop-2/src/test/java/com/baeldung/selfinvocation/MathServiceIntegrationTest.java new file mode 100644 index 0000000000..24b829fa07 --- /dev/null +++ b/spring-aop-2/src/test/java/com/baeldung/selfinvocation/MathServiceIntegrationTest.java @@ -0,0 +1,47 @@ +package com.baeldung.selfinvocation; + +import com.baeldung.Application; +import org.junit.jupiter.api.Test; +import org.springframework.boot.test.context.SpringBootTest; + +import javax.annotation.Resource; +import java.util.concurrent.atomic.AtomicInteger; + +import static org.assertj.core.api.Assertions.assertThat; + +@SpringBootTest(classes = Application.class) +class MathServiceIntegrationTest { + + @Resource + private MathService mathService; + + @Test + void givenCacheableMethod_whenInvokedForSecondTime_thenCounterShouldNotIncrease() { + AtomicInteger counter = mathService.resetCounter(); + assertThat(mathService.square(2)).isEqualTo(4); + assertThat(counter.get()).isEqualTo(1); + + mathService.square(2); + assertThat(counter.get()).isEqualTo(1); + + mathService.square(3); + assertThat(counter.get()).isEqualTo(2); + } + + @Test + void givenCacheableMethod_whenInvokingByInternalCall_thenCacheIsNotTriggered() { + AtomicInteger counter = mathService.resetCounter(); + + assertThat(mathService.sumOfSquareOf2()).isEqualTo(8); + assertThat(counter.get()).isEqualTo(2); + } + + @Test + void givenCacheableMethod_whenInvokingByExternalCall_thenCacheIsTriggered() { + AtomicInteger counter = mathService.resetCounter(); + + assertThat(mathService.sumOfSquareOf3()).isEqualTo(18); + assertThat(counter.get()).isEqualTo(1); + } + +} \ No newline at end of file From 8c54cce5d14b20a420348c8fbeb3f0e99a7fdfae Mon Sep 17 00:00:00 2001 From: ACHRAF TAITAI <43656331+achraftt@users.noreply.github.com> Date: Sat, 2 Sep 2023 16:35:17 +0200 Subject: [PATCH 46/51] BAEL-6847: Replacing Single Quotes in Java String (#14665) --- .../replace/ReplaceStringUnitTest.java | 22 +++++++++++++++++++ 1 file changed, 22 insertions(+) create mode 100644 core-java-modules/core-java-string-operations-5/src/test/java/com/baeldung/replace/ReplaceStringUnitTest.java diff --git a/core-java-modules/core-java-string-operations-5/src/test/java/com/baeldung/replace/ReplaceStringUnitTest.java b/core-java-modules/core-java-string-operations-5/src/test/java/com/baeldung/replace/ReplaceStringUnitTest.java new file mode 100644 index 0000000000..081ffabab1 --- /dev/null +++ b/core-java-modules/core-java-string-operations-5/src/test/java/com/baeldung/replace/ReplaceStringUnitTest.java @@ -0,0 +1,22 @@ +package com.baeldung.replace; + +import static org.junit.jupiter.api.Assertions.assertEquals; + +import org.junit.jupiter.api.Test; + +public class ReplaceStringUnitTest { + private final String ORIGINAL_STRING = "This is 'Baeldung' tutorial."; + private final String EXPECTED_STRING = "This is \\'Baeldung\\' tutorial."; + + @Test + public void givenString_thenReplaceUsinReplaceAllMethod() { + String modifiedString = ORIGINAL_STRING.replaceAll("'", "\\\\'"); + assertEquals(EXPECTED_STRING, modifiedString); + } + + @Test + public void givenString_thenReplaceUsinReplaceMethod() { + String modifiedString = ORIGINAL_STRING.replace("'", "\\'"); + assertEquals(EXPECTED_STRING, modifiedString); + } +} \ No newline at end of file From e337b6dff33fdb605dfe54800f6b2fd79a0981d1 Mon Sep 17 00:00:00 2001 From: Bhaskar Ghosh Dastidar Date: Sun, 3 Sep 2023 08:51:33 +0530 Subject: [PATCH 47/51] [BAEL-6823] middle of array (#14696) Co-authored-by: Bhaskar --- .../baeldung/arraymiddle/MiddleOfArray.java | 65 ++++++++++++++ .../arraymiddle/MiddleOfArrayUnitTest.java | 89 +++++++++++++++++++ 2 files changed, 154 insertions(+) create mode 100644 core-java-modules/core-java-arrays-operations-advanced/src/main/java/com/baeldung/arraymiddle/MiddleOfArray.java create mode 100644 core-java-modules/core-java-arrays-operations-advanced/src/test/java/com/baeldung/arraymiddle/MiddleOfArrayUnitTest.java diff --git a/core-java-modules/core-java-arrays-operations-advanced/src/main/java/com/baeldung/arraymiddle/MiddleOfArray.java b/core-java-modules/core-java-arrays-operations-advanced/src/main/java/com/baeldung/arraymiddle/MiddleOfArray.java new file mode 100644 index 0000000000..f389893209 --- /dev/null +++ b/core-java-modules/core-java-arrays-operations-advanced/src/main/java/com/baeldung/arraymiddle/MiddleOfArray.java @@ -0,0 +1,65 @@ +package com.baeldung.arraymiddle; + +import java.util.Arrays; + +import org.apache.commons.lang3.ObjectUtils; + +public class MiddleOfArray { + int[] middleOfArray(int[] array) { + if (ObjectUtils.isEmpty(array) || array.length < 3) + return array; + int n = array.length; + int mid = n / 2; + if (n % 2 == 0) { + int mid2 = mid - 1; + return new int[] { array[mid2], array[mid] }; + } else { + return new int[] { array[mid] }; + } + } + + int[] middleOfArrayWithStartEndNaive(int[] array, int start, int end) { + int mid = (start + end) / 2; + int n = end - start; + if (n % 2 == 0) { + int mid2 = mid - 1; + return new int[] { array[mid2], array[mid] }; + } else { + return new int[] { array[mid] }; + } + } + + int[] middleOfArrayWithStartEnd(int[] array, int start, int end) { + int mid = start + (end - start) / 2; + int n = end - start; + if (n % 2 == 0) { + int mid2 = mid - 1; + return new int[] { array[mid2], array[mid] }; + } else { + return new int[] { array[mid] }; + } + } + + int[] middleOfArrayWithStartEndBitwise(int[] array, int start, int end) { + int mid = (start + end) >>> 1; + int n = end - start; + if (n % 2 == 0) { + int mid2 = mid - 1; + return new int[] { array[mid2], array[mid] }; + } else { + return new int[] { array[mid] }; + } + } + + int medianOfArray(int[] array, int start, int end) { + Arrays.sort(array); // for safety. This can be ignored + int mid = (start + end) >>> 1; + int n = end - start; + if (n % 2 == 0) { + int mid2 = mid - 1; + return (array[mid2] + array[mid]) / 2; + } else { + return array[mid]; + } + } +} diff --git a/core-java-modules/core-java-arrays-operations-advanced/src/test/java/com/baeldung/arraymiddle/MiddleOfArrayUnitTest.java b/core-java-modules/core-java-arrays-operations-advanced/src/test/java/com/baeldung/arraymiddle/MiddleOfArrayUnitTest.java new file mode 100644 index 0000000000..706412d83e --- /dev/null +++ b/core-java-modules/core-java-arrays-operations-advanced/src/test/java/com/baeldung/arraymiddle/MiddleOfArrayUnitTest.java @@ -0,0 +1,89 @@ +package com.baeldung.arraymiddle; + +import org.junit.Assert; +import org.junit.Test; + +public class MiddleOfArrayUnitTest { + + @Test + public void givenArrayOfEvenLength_whenMiddleOfArray_thenReturn2Values() { + int[] array = new int[100]; + for (int i = 0; i < array.length; i++) { + array[i] = i + 1; + } + int[] expectedMidArray = { 50, 51 }; + MiddleOfArray middleOfArray = new MiddleOfArray(); + Assert.assertArrayEquals(expectedMidArray, middleOfArray.middleOfArray(array)); + } + + @Test + public void givenArrayOfEdgeCaseLength_whenMiddleOfArray_thenReturn2Values() { + int[] array = new int[0]; + int[] expectedMidArray = new int[0]; + MiddleOfArray middleOfArray = new MiddleOfArray(); + Assert.assertArrayEquals(expectedMidArray, middleOfArray.middleOfArray(array)); + + array = new int[] { 1, 2 }; + expectedMidArray = new int[] { 1, 2 }; + + Assert.assertArrayEquals(expectedMidArray, middleOfArray.middleOfArray(array)); + } + + @Test + public void givenArrayOfOddLength_whenMiddleOfArray_thenReturnMid() { + int[] array = new int[99]; + for (int i = 0; i < array.length; i++) { + array[i] = i + 1; + } + int[] expectedMidArray = { 50 }; + MiddleOfArray middleOfArray = new MiddleOfArray(); + Assert.assertArrayEquals(expectedMidArray, middleOfArray.middleOfArray(array)); + } + + @Test + public void givenArrayWithStartAndEnd_whenMiddleOfArray_thenReturnMid() { + int[] array = new int[100]; + for (int i = 0; i < array.length; i++) { + array[i] = i + 1; + } + int[] expectedMidArray = { 58 }; + MiddleOfArray middleOfArray = new MiddleOfArray(); + Assert.assertArrayEquals(expectedMidArray, middleOfArray.middleOfArrayWithStartEndNaive(array, 55, 60)); + + expectedMidArray = new int[] { 58, 59 }; + Assert.assertArrayEquals(expectedMidArray, middleOfArray.middleOfArrayWithStartEndNaive(array, 56, 60)); + } + + @Test + public void givenArrayWithStartAndEndOptimized_whenMiddleOfArray_thenReturnMid() { + int[] array = new int[100]; + for (int i = 0; i < array.length; i++) { + array[i] = i + 1; + } + int[] expectedMidArray = { 78 }; + MiddleOfArray middleOfArray = new MiddleOfArray(); + Assert.assertArrayEquals(expectedMidArray, middleOfArray.middleOfArrayWithStartEnd(array, 55, 100)); + } + + @Test + public void givenArrayWithStartAndEndBitwise_whenMiddleOfArray_thenReturnMid() { + int[] array = new int[100]; + for (int i = 0; i < array.length; i++) { + array[i] = i + 1; + } + int[] expectedMidArray = { 78 }; + MiddleOfArray middleOfArray = new MiddleOfArray(); + Assert.assertArrayEquals(expectedMidArray, middleOfArray.middleOfArrayWithStartEndBitwise(array, 55, 100)); + } + + @Test + public void givenArrayWithStartAndEnd_whenMedianOfArray_thenReturnMid() { + int[] array = new int[100]; + for (int i = 0; i < array.length; i++) { + array[i] = i + 1; + } + int expectMedian = 50; + MiddleOfArray middleOfArray = new MiddleOfArray(); + Assert.assertEquals(expectMedian, middleOfArray.medianOfArray(array, 0, 100)); + } +} From 228598db3cd2f70f53720364b23501a0e44439dd Mon Sep 17 00:00:00 2001 From: Partha Sutradhar <53944765+zaxxio@users.noreply.github.com> Date: Sun, 3 Sep 2023 10:43:01 +0600 Subject: [PATCH 48/51] [BAEL-6481] - Stop Executing Further Code in Java (#14076) * Creating a Deep vs Shallow Copy of an Object in Java * [BAEL-6481]-Stop Executing Further Code in Java * [BAEL-6481] - Stop Executing Further Code in Java * [BAEL-6481] - Stop Executing Further Code in Java * [BAEL-6481] - Stop Executing Further Code in Java. * [BAEL-6481] - Stop Executing Further Code in Java. * [BAEL-6481] - Stop Executing Further Code in Java. * [BAEL-6481] Stop Executing Further Code in Java. * [BAEL-6481] Stop Executing Further Code in Java. Moved to core java numbers - 6 * [BAEL-6481] Stop Executing Further Code in Java. * [BAEL-6481] Stop Executing Further Code in Java. * [BAEL-6481] Stop Executing Further Code in Java. * [BAEL-6481] Stop Executing Further Code in Java. [Commented the Test cases] * [BAEL-6481] Stop Executing Further Code in Java. [Commented the Two Test] * [BAEL-6481] Stop Executing Further Code in Java. [Fixed Method Name's] --- .../stopexecution/InterruptThread.java | 13 +++ .../StopExecutionFurtherCode.java | 87 ++++++++++++++++++ .../StopExecutionFurtherCodeUnitTest.java | 90 +++++++++++++++++++ 3 files changed, 190 insertions(+) create mode 100644 core-java-modules/core-java-lang-6/src/main/java/com/baeldung/stopexecution/InterruptThread.java create mode 100644 core-java-modules/core-java-lang-6/src/main/java/com/baeldung/stopexecution/StopExecutionFurtherCode.java create mode 100644 core-java-modules/core-java-lang-6/src/test/java/com/baeldung/stopexecution/StopExecutionFurtherCodeUnitTest.java diff --git a/core-java-modules/core-java-lang-6/src/main/java/com/baeldung/stopexecution/InterruptThread.java b/core-java-modules/core-java-lang-6/src/main/java/com/baeldung/stopexecution/InterruptThread.java new file mode 100644 index 0000000000..7964ad9f52 --- /dev/null +++ b/core-java-modules/core-java-lang-6/src/main/java/com/baeldung/stopexecution/InterruptThread.java @@ -0,0 +1,13 @@ +package com.baeldung.stopexecution; + +public class InterruptThread extends Thread { + @Override + public void run() { + while (!isInterrupted()) { + if (isInterrupted()) { + break; + } + // business logic + } + } +} diff --git a/core-java-modules/core-java-lang-6/src/main/java/com/baeldung/stopexecution/StopExecutionFurtherCode.java b/core-java-modules/core-java-lang-6/src/main/java/com/baeldung/stopexecution/StopExecutionFurtherCode.java new file mode 100644 index 0000000000..81abe15b5c --- /dev/null +++ b/core-java-modules/core-java-lang-6/src/main/java/com/baeldung/stopexecution/StopExecutionFurtherCode.java @@ -0,0 +1,87 @@ +package com.baeldung.stopexecution; + +import java.io.FileOutputStream; +import java.io.IOException; +import java.io.InputStream; +import java.net.MalformedURLException; +import java.net.URL; +import java.util.Locale; + +public class StopExecutionFurtherCode { + + boolean shouldContinue = true; + + int performTask(int a, int b) { + if (!shouldContinue) { + System.exit(0); + } + return a + b; + } + + void stop() { + this.shouldContinue = false; + } + + int calculateFactorial(int n) { + if (n <= 1) { + return 1; // base case + } + + return n * calculateFactorial(n - 1); + } + + int calculateSum(int[] x) { + int sum = 0; + for (int i = 0; i < 10; i++) { + if (x[i] < 0) { + break; + } + sum += x[i]; + } + return sum; + } + + T stopExecutionUsingException(T object) { + if (object instanceof Number) { + throw new IllegalArgumentException("Parameter can not be number."); + } + T upperCase = (T) String.valueOf(object) + .toUpperCase(Locale.ENGLISH); + return upperCase; + } + + int processLines(String[] lines) { + int statusCode = 0; + parser: + for (String line : lines) { + System.out.println("Processing line: " + line); + if (line.equals("stop")) { + System.out.println("Stopping parsing..."); + statusCode = -1; + break parser; // Stop parsing and exit the loop + } + System.out.println("Line processed."); + } + return statusCode; + } + + void download(String fileUrl, String destinationPath) throws MalformedURLException { + if (fileUrl == null || fileUrl.isEmpty() || destinationPath == null || destinationPath.isEmpty()) { + return; + } + // execute downloading + URL url = new URL(fileUrl); + try (InputStream in = url.openStream(); FileOutputStream out = new FileOutputStream(destinationPath)) { + byte[] buffer = new byte[1024]; + int bytesRead; + while ((bytesRead = in.read(buffer)) != -1) { + out.write(buffer, 0, bytesRead); + } + } catch (IOException e) { + throw new RuntimeException(e); + } + } + + + +} diff --git a/core-java-modules/core-java-lang-6/src/test/java/com/baeldung/stopexecution/StopExecutionFurtherCodeUnitTest.java b/core-java-modules/core-java-lang-6/src/test/java/com/baeldung/stopexecution/StopExecutionFurtherCodeUnitTest.java new file mode 100644 index 0000000000..9cdb1e71aa --- /dev/null +++ b/core-java-modules/core-java-lang-6/src/test/java/com/baeldung/stopexecution/StopExecutionFurtherCodeUnitTest.java @@ -0,0 +1,90 @@ +package com.baeldung.stopexecution; + +import static org.junit.Assert.assertEquals; +import static org.junit.Assert.assertNotEquals; +import static org.junit.Assert.assertThrows; +import static org.junit.Assert.assertTrue; + +import java.net.MalformedURLException; + +import org.junit.Assert; +import org.junit.FixMethodOrder; +import org.junit.jupiter.api.Test; +import org.junit.runners.MethodSorters; + +@FixMethodOrder(MethodSorters.NAME_ASCENDING) +public class StopExecutionFurtherCodeUnitTest { + + + @Test + void givenExecution_whenStopIsNotCalled_thenTaskIsPerformed() { + StopExecutionFurtherCode stopExecution = new StopExecutionFurtherCode(); + int performedTask = stopExecution.performTask(10, 20); + Assert.assertEquals(30, performedTask); + } + + // This test case have been commented because, otherwise, the program will exit since System.exit(statusCode) is being used. + /*@Test + void givenExecution_whenStopIsCalled_thenTaskNotPerformed() { + StopExecutionFurtherCode stopExecution = new StopExecutionFurtherCode(); + stopExecution.stop(); + int performedTask = stopExecution.performTask(10, 20); + Assert.assertEquals(30, performedTask); + }*/ + + @Test + void givenWrongUrlAndPath_whenDownloadCalled_thenExecutionIsStopped() throws MalformedURLException { + StopExecutionFurtherCode stopExecutionFurtherCode = new StopExecutionFurtherCode(); + stopExecutionFurtherCode.download("", ""); + } + + @Test + void givenName_whenStopExecutionUsingExceptionCalled_thenNameIsConvertedToUpper() { + StopExecutionFurtherCode stopExecutionFurtherCode = new StopExecutionFurtherCode(); + String name = "John"; + String result1 = stopExecutionFurtherCode.stopExecutionUsingException(name); + Assert.assertEquals("JOHN", result1); + try { + Integer number1 = 10; + Assert.assertThrows(IllegalArgumentException.class, () -> { + int result = stopExecutionFurtherCode.stopExecutionUsingException(number1); + }); + } catch (Exception e) { + Assert.fail("Unexpected exception thrown: " + e.getMessage()); + } + } + + @Test + void givenBaseCase_whenStopExecutionWhenBaseCaseKnownCalled_thenFactorialIsCalculated() throws MalformedURLException { + StopExecutionFurtherCode stopExecutionFurtherCode = new StopExecutionFurtherCode(); + int factorial = stopExecutionFurtherCode.calculateFactorial(1); + Assert.assertEquals(1, factorial); + } + + @Test + void givenArrayWithNegative_whenStopExecutionInLoopCalled_thenSumIsCalculatedIgnoringNegatives() { + StopExecutionFurtherCode stopExecutionFurtherCode = new StopExecutionFurtherCode(); + int[] nums = { 1, 2, 3, -1, 1, 2, 3 }; + int sum = stopExecutionFurtherCode.calculateSum(nums); + Assert.assertEquals(6, sum); + } + + @Test + void givenThreadRunning_whenInterrupted_thenThreadExecutionIsStopped() throws InterruptedException { + InterruptThread stopExecution = new InterruptThread(); + stopExecution.start(); + Thread.sleep(2000); + stopExecution.interrupt(); + stopExecution.join(); + Assert.assertTrue(!stopExecution.isAlive()); + } + + @Test + void givenLinesWithStopLabel_whenStopExecutionLabeledLoopCalled_thenLoopExecutionIsStopped() { + StopExecutionFurtherCode furtherCode = new StopExecutionFurtherCode(); + final String[] lines = { "Line 1", "Line 2", "Line 3", "stop", "Line 4", "Line 5" }; + int statusCode = furtherCode.processLines(lines); + Assert.assertEquals(-1, statusCode); + } + +} From 174d19a985f87dcaff427938264f3507e4361321 Mon Sep 17 00:00:00 2001 From: Dhawal Kapil Date: Sun, 3 Sep 2023 12:20:47 +0530 Subject: [PATCH 49/51] Revert "JAVA-24559 moved bookstore-monolith to heavy profile" (#14702) This reverts commit 66bee175a72090c564374d7bf1911d51e2548698. --- pom.xml | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/pom.xml b/pom.xml index f39559ed28..a8c4416117 100644 --- a/pom.xml +++ b/pom.xml @@ -474,7 +474,6 @@ apache-spark jenkins-modules - jhipster-6 jhipster-modules @@ -633,7 +632,6 @@ apache-spark jenkins-modules - jhipster-6 jhipster-modules @@ -788,6 +786,7 @@ guava-modules kubernetes-modules libraries-concurrency + jhipster-6 libraries-testing maven-modules optaplanner @@ -1059,6 +1058,7 @@ guava-modules kubernetes-modules libraries-concurrency + jhipster-6 libraries-testing maven-modules optaplanner From 23bfd3b1de98897217439cec435218f1ca0aeaef Mon Sep 17 00:00:00 2001 From: timis1 <12120641+timis1@users.noreply.github.com> Date: Sun, 3 Sep 2023 11:46:35 +0300 Subject: [PATCH 50/51] JAVA-24676 GitHub Issue: Incorrect reference? (#14687) Co-authored-by: timis1 --- testing-modules/testng/pom.xml | 8 +------- 1 file changed, 1 insertion(+), 7 deletions(-) diff --git a/testing-modules/testng/pom.xml b/testing-modules/testng/pom.xml index 62e2b2e578..b0a10b131c 100644 --- a/testing-modules/testng/pom.xml +++ b/testing-modules/testng/pom.xml @@ -25,15 +25,9 @@ testng - - - src/main/resources - true - - - src/main/resources + src/test/resources true From 02a680c9d6436c8830604b8a0dd8e717a4d19816 Mon Sep 17 00:00:00 2001 From: Ehsan Sasanianno Date: Sun, 3 Sep 2023 10:50:29 +0200 Subject: [PATCH 51/51] java-18762: move wildfly-mdb module to spring-ejb-modules (#14680) --- spring-ejb-modules/pom.xml | 3 +- .../{wildfly => }/wildfly-mdb/README.md | 0 .../{wildfly => }/wildfly-mdb/pom.xml | 6 +- .../baeldung/wildfly/mdb/ReadMessageMDB.java | 0 .../wildfly/mdb/SendMessageServlet.java | 0 spring-ejb-modules/wildfly/pom.xml | 89 ------------------- 6 files changed, 5 insertions(+), 93 deletions(-) rename spring-ejb-modules/{wildfly => }/wildfly-mdb/README.md (100%) rename spring-ejb-modules/{wildfly => }/wildfly-mdb/pom.xml (81%) rename spring-ejb-modules/{wildfly => }/wildfly-mdb/src/com/baeldung/wildfly/mdb/ReadMessageMDB.java (100%) rename spring-ejb-modules/{wildfly => }/wildfly-mdb/src/com/baeldung/wildfly/mdb/SendMessageServlet.java (100%) delete mode 100644 spring-ejb-modules/wildfly/pom.xml diff --git a/spring-ejb-modules/pom.xml b/spring-ejb-modules/pom.xml index c5d04dab25..1b6c0ffc30 100755 --- a/spring-ejb-modules/pom.xml +++ b/spring-ejb-modules/pom.xml @@ -20,7 +20,7 @@ spring-ejb-remote spring-ejb-client - wildfly + wildfly-mdb @@ -76,6 +76,7 @@ 12.0.0.Final 2.4 3.2 + 7.0 \ No newline at end of file diff --git a/spring-ejb-modules/wildfly/wildfly-mdb/README.md b/spring-ejb-modules/wildfly-mdb/README.md similarity index 100% rename from spring-ejb-modules/wildfly/wildfly-mdb/README.md rename to spring-ejb-modules/wildfly-mdb/README.md diff --git a/spring-ejb-modules/wildfly/wildfly-mdb/pom.xml b/spring-ejb-modules/wildfly-mdb/pom.xml similarity index 81% rename from spring-ejb-modules/wildfly/wildfly-mdb/pom.xml rename to spring-ejb-modules/wildfly-mdb/pom.xml index 0784725cde..7498379ef9 100644 --- a/spring-ejb-modules/wildfly/wildfly-mdb/pom.xml +++ b/spring-ejb-modules/wildfly-mdb/pom.xml @@ -7,9 +7,9 @@ wildfly-mdb - com.baeldung.wildfly - wildfly - 0.0.1-SNAPSHOT + com.baeldung.spring.ejb + spring-ejb-modules + 1.0.0-SNAPSHOT diff --git a/spring-ejb-modules/wildfly/wildfly-mdb/src/com/baeldung/wildfly/mdb/ReadMessageMDB.java b/spring-ejb-modules/wildfly-mdb/src/com/baeldung/wildfly/mdb/ReadMessageMDB.java similarity index 100% rename from spring-ejb-modules/wildfly/wildfly-mdb/src/com/baeldung/wildfly/mdb/ReadMessageMDB.java rename to spring-ejb-modules/wildfly-mdb/src/com/baeldung/wildfly/mdb/ReadMessageMDB.java diff --git a/spring-ejb-modules/wildfly/wildfly-mdb/src/com/baeldung/wildfly/mdb/SendMessageServlet.java b/spring-ejb-modules/wildfly-mdb/src/com/baeldung/wildfly/mdb/SendMessageServlet.java similarity index 100% rename from spring-ejb-modules/wildfly/wildfly-mdb/src/com/baeldung/wildfly/mdb/SendMessageServlet.java rename to spring-ejb-modules/wildfly-mdb/src/com/baeldung/wildfly/mdb/SendMessageServlet.java diff --git a/spring-ejb-modules/wildfly/pom.xml b/spring-ejb-modules/wildfly/pom.xml deleted file mode 100644 index 412fa1b244..0000000000 --- a/spring-ejb-modules/wildfly/pom.xml +++ /dev/null @@ -1,89 +0,0 @@ - - - 4.0.0 - com.baeldung.wildfly - wildfly - 0.0.1-SNAPSHOT - wildfly - pom - - - com.baeldung.spring.ejb - spring-ejb-modules - 1.0.0-SNAPSHOT - - - - wildfly-mdb - - - - - - - - javax - javaee-api - ${javaee-api.version} - provided - - - - org.wildfly.bom - wildfly-javaee7 - ${wildfly-javaee7.version} - import - pom - - - - org.hibernate - hibernate-core - ${hibernate-core.version} - provided - - - - com.baeldung.wildfly - wildlfy-ear - ${wildlfy.version} - ear - - - - com.baeldung.wildfly - wildlfy-web - ${wildlfy.version} - war - - - - com.baeldung.wildfly - wildlfy-jpa - ${wildlfy.version} - - - - com.baeldung.wildfly - wildfly-ejb - ${wildlfy.version} - - - - com.baeldung.wildfly - wildfly-ejb-interfaces - ${wildlfy.version} - - - - - - 7.0 - 10.1.0.Final - 5.2.3.Final - 0.0.1-SNAPSHOT - - - \ No newline at end of file