From 2315b0cb7983ad2c4aa79eb88839c916055a728e Mon Sep 17 00:00:00 2001 From: Imran Alam Date: Tue, 16 Jan 2024 21:02:52 +0530 Subject: [PATCH 01/47] Created files for deep and shallow copy in java --- .../baeldung/objectcopy/DeepCopyPerson.java | 23 +++++++++++++++++++ .../objectcopy/ShallowCopyPerson.java | 10 ++++++++ .../objectcopy/DeepCopyPersonUnitTest.java | 19 +++++++++++++++ .../objectcopy/ShallowCopyPersonUnitTest.java | 17 ++++++++++++++ 4 files changed, 69 insertions(+) create mode 100644 core-java-modules/core-java-lang-oop-patterns/src/main/java/com/baeldung/objectcopy/DeepCopyPerson.java create mode 100644 core-java-modules/core-java-lang-oop-patterns/src/main/java/com/baeldung/objectcopy/ShallowCopyPerson.java create mode 100644 core-java-modules/core-java-lang-oop-patterns/src/test/java/com/baeldung/objectcopy/DeepCopyPersonUnitTest.java create mode 100644 core-java-modules/core-java-lang-oop-patterns/src/test/java/com/baeldung/objectcopy/ShallowCopyPersonUnitTest.java diff --git a/core-java-modules/core-java-lang-oop-patterns/src/main/java/com/baeldung/objectcopy/DeepCopyPerson.java b/core-java-modules/core-java-lang-oop-patterns/src/main/java/com/baeldung/objectcopy/DeepCopyPerson.java new file mode 100644 index 0000000000..4435a2720d --- /dev/null +++ b/core-java-modules/core-java-lang-oop-patterns/src/main/java/com/baeldung/objectcopy/DeepCopyPerson.java @@ -0,0 +1,23 @@ +package com.baeldung.objectcopy; + +import java.io.*; + +class DeepCopyPerson implements Serializable { + + int age; + + public DeepCopyPerson(int age) { + this.age = age; + } + + public static DeepCopyPerson deepCopy(DeepCopyPerson person) throws IOException, ClassNotFoundException { + ByteArrayOutputStream bos = new ByteArrayOutputStream(); + ObjectOutputStream out = new ObjectOutputStream(bos); + out.writeObject(person); + + ByteArrayInputStream bis = new ByteArrayInputStream(bos.toByteArray()); + ObjectInputStream in = new ObjectInputStream(bis); + + return (DeepCopyPerson) in.readObject(); + } +} diff --git a/core-java-modules/core-java-lang-oop-patterns/src/main/java/com/baeldung/objectcopy/ShallowCopyPerson.java b/core-java-modules/core-java-lang-oop-patterns/src/main/java/com/baeldung/objectcopy/ShallowCopyPerson.java new file mode 100644 index 0000000000..df06bfa988 --- /dev/null +++ b/core-java-modules/core-java-lang-oop-patterns/src/main/java/com/baeldung/objectcopy/ShallowCopyPerson.java @@ -0,0 +1,10 @@ +package com.baeldung.objectcopy; + +class ShallowCopyPerson { + + int age; + + public ShallowCopyPerson(int age) { + this.age = age; + } +} diff --git a/core-java-modules/core-java-lang-oop-patterns/src/test/java/com/baeldung/objectcopy/DeepCopyPersonUnitTest.java b/core-java-modules/core-java-lang-oop-patterns/src/test/java/com/baeldung/objectcopy/DeepCopyPersonUnitTest.java new file mode 100644 index 0000000000..ae3a109c15 --- /dev/null +++ b/core-java-modules/core-java-lang-oop-patterns/src/test/java/com/baeldung/objectcopy/DeepCopyPersonUnitTest.java @@ -0,0 +1,19 @@ +package com.baeldung.objectcopy; + +import org.junit.jupiter.api.Test; + +import java.io.IOException; + +import static org.junit.jupiter.api.Assertions.assertEquals; + +public class DeepCopyPersonUnitTest { + + @Test + public void givenPerson_whenDeepCopy_thenIndependentCopy() throws IOException, ClassNotFoundException { + DeepCopyPerson person1 = new DeepCopyPerson(30); + DeepCopyPerson person2 = DeepCopyPerson.deepCopy(person1); + person1.age = 25; + + assertEquals(30, person2.age); + } +} diff --git a/core-java-modules/core-java-lang-oop-patterns/src/test/java/com/baeldung/objectcopy/ShallowCopyPersonUnitTest.java b/core-java-modules/core-java-lang-oop-patterns/src/test/java/com/baeldung/objectcopy/ShallowCopyPersonUnitTest.java new file mode 100644 index 0000000000..2aea938bde --- /dev/null +++ b/core-java-modules/core-java-lang-oop-patterns/src/test/java/com/baeldung/objectcopy/ShallowCopyPersonUnitTest.java @@ -0,0 +1,17 @@ +package com.baeldung.objectcopy; + +import org.junit.jupiter.api.Test; + +import static org.junit.jupiter.api.Assertions.assertEquals; + +public class ShallowCopyPersonUnitTest { + + @Test + public void givenPerson_whenShallowCopy_thenSharedReference() { + ShallowCopyPerson person1 = new ShallowCopyPerson(30); + ShallowCopyPerson person2 = person1; + person1.age = 25; + + assertEquals(25, person2.age); + } +} From 41370497fdd5188a192a0f8a23c038473603aecb Mon Sep 17 00:00:00 2001 From: "@hangga" Date: Sat, 20 Jan 2024 08:48:38 +0700 Subject: [PATCH 02/47] assert that positive --- .../SecureRandomPositiveLongUnitTest.java | 24 +++++++++++++++++++ 1 file changed, 24 insertions(+) create mode 100644 core-java-modules/core-java-numbers-7/src/test/java/com/baeldung/securerandompositivelong/SecureRandomPositiveLongUnitTest.java diff --git a/core-java-modules/core-java-numbers-7/src/test/java/com/baeldung/securerandompositivelong/SecureRandomPositiveLongUnitTest.java b/core-java-modules/core-java-numbers-7/src/test/java/com/baeldung/securerandompositivelong/SecureRandomPositiveLongUnitTest.java new file mode 100644 index 0000000000..b476a95d99 --- /dev/null +++ b/core-java-modules/core-java-numbers-7/src/test/java/com/baeldung/securerandompositivelong/SecureRandomPositiveLongUnitTest.java @@ -0,0 +1,24 @@ +package com.baeldung.securerandompositivelong; + +import org.junit.jupiter.api.Test; + +import java.math.BigDecimal; +import java.security.SecureRandom; + +import static org.assertj.core.api.Assertions.assertThat; + +public class SecureRandomPositiveLongUnitTest { + + @Test + void whenGenerateRecureRandom_thenGetExpectedValue() { + SecureRandom secureRandom = new SecureRandom(); + long randomPositiveLong = Math.abs(secureRandom.nextLong()); + + assertThat(randomPositiveLong).isPositive(); + + Double pc = 1.0 / Math.pow(2, 63); + System.out.printf("%.40f", pc); + + assertThat(pc).isLessThan(0.00000000000000001); + } +} From ce62cb3dc014445309c0c7a24254f2a01c78aad4 Mon Sep 17 00:00:00 2001 From: "@hangga" Date: Sat, 20 Jan 2024 08:51:12 +0700 Subject: [PATCH 03/47] using Long.MAX_VALUE --- .../SecureRandomPositiveLongUnitTest.java | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/core-java-modules/core-java-numbers-7/src/test/java/com/baeldung/securerandompositivelong/SecureRandomPositiveLongUnitTest.java b/core-java-modules/core-java-numbers-7/src/test/java/com/baeldung/securerandompositivelong/SecureRandomPositiveLongUnitTest.java index b476a95d99..b70dc50e24 100644 --- a/core-java-modules/core-java-numbers-7/src/test/java/com/baeldung/securerandompositivelong/SecureRandomPositiveLongUnitTest.java +++ b/core-java-modules/core-java-numbers-7/src/test/java/com/baeldung/securerandompositivelong/SecureRandomPositiveLongUnitTest.java @@ -2,7 +2,6 @@ package com.baeldung.securerandompositivelong; import org.junit.jupiter.api.Test; -import java.math.BigDecimal; import java.security.SecureRandom; import static org.assertj.core.api.Assertions.assertThat; @@ -16,7 +15,8 @@ public class SecureRandomPositiveLongUnitTest { assertThat(randomPositiveLong).isPositive(); - Double pc = 1.0 / Math.pow(2, 63); + //Double pc = 1.0 / Math.pow(2, 63); + Double pc = 1.0 / Long.MAX_VALUE; System.out.printf("%.40f", pc); assertThat(pc).isLessThan(0.00000000000000001); From b8d8087262b81490b3717304d6cd8020c40105f3 Mon Sep 17 00:00:00 2001 From: "@hangga" Date: Sun, 21 Jan 2024 13:19:52 +0700 Subject: [PATCH 04/47] Double to double --- .../SecureRandomPositiveLongUnitTest.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/core-java-modules/core-java-numbers-7/src/test/java/com/baeldung/securerandompositivelong/SecureRandomPositiveLongUnitTest.java b/core-java-modules/core-java-numbers-7/src/test/java/com/baeldung/securerandompositivelong/SecureRandomPositiveLongUnitTest.java index b70dc50e24..79830f8a31 100644 --- a/core-java-modules/core-java-numbers-7/src/test/java/com/baeldung/securerandompositivelong/SecureRandomPositiveLongUnitTest.java +++ b/core-java-modules/core-java-numbers-7/src/test/java/com/baeldung/securerandompositivelong/SecureRandomPositiveLongUnitTest.java @@ -16,7 +16,7 @@ public class SecureRandomPositiveLongUnitTest { assertThat(randomPositiveLong).isPositive(); //Double pc = 1.0 / Math.pow(2, 63); - Double pc = 1.0 / Long.MAX_VALUE; + double pc = 1.0 / Long.MAX_VALUE; System.out.printf("%.40f", pc); assertThat(pc).isLessThan(0.00000000000000001); From fd4fb494262e60307c283cf60dca8bb2411b67e2 Mon Sep 17 00:00:00 2001 From: "@hangga" Date: Mon, 22 Jan 2024 15:02:12 +0700 Subject: [PATCH 05/47] simplify --- .../SecureRandomPositiveLongUnitTest.java | 6 ------ 1 file changed, 6 deletions(-) diff --git a/core-java-modules/core-java-numbers-7/src/test/java/com/baeldung/securerandompositivelong/SecureRandomPositiveLongUnitTest.java b/core-java-modules/core-java-numbers-7/src/test/java/com/baeldung/securerandompositivelong/SecureRandomPositiveLongUnitTest.java index 79830f8a31..eea41861bb 100644 --- a/core-java-modules/core-java-numbers-7/src/test/java/com/baeldung/securerandompositivelong/SecureRandomPositiveLongUnitTest.java +++ b/core-java-modules/core-java-numbers-7/src/test/java/com/baeldung/securerandompositivelong/SecureRandomPositiveLongUnitTest.java @@ -14,11 +14,5 @@ public class SecureRandomPositiveLongUnitTest { long randomPositiveLong = Math.abs(secureRandom.nextLong()); assertThat(randomPositiveLong).isPositive(); - - //Double pc = 1.0 / Math.pow(2, 63); - double pc = 1.0 / Long.MAX_VALUE; - System.out.printf("%.40f", pc); - - assertThat(pc).isLessThan(0.00000000000000001); } } From 9002959a19ef7e6aee950d9c83ab1392a62afb26 Mon Sep 17 00:00:00 2001 From: Hangga Aji Sayekti Date: Tue, 23 Jan 2024 05:29:52 +0700 Subject: [PATCH 06/47] Update core-java-modules/core-java-numbers-7/src/test/java/com/baeldung/securerandompositivelong/SecureRandomPositiveLongUnitTest.java rename Co-authored-by: Liam Williams --- .../SecureRandomPositiveLongUnitTest.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/core-java-modules/core-java-numbers-7/src/test/java/com/baeldung/securerandompositivelong/SecureRandomPositiveLongUnitTest.java b/core-java-modules/core-java-numbers-7/src/test/java/com/baeldung/securerandompositivelong/SecureRandomPositiveLongUnitTest.java index eea41861bb..6203e796b3 100644 --- a/core-java-modules/core-java-numbers-7/src/test/java/com/baeldung/securerandompositivelong/SecureRandomPositiveLongUnitTest.java +++ b/core-java-modules/core-java-numbers-7/src/test/java/com/baeldung/securerandompositivelong/SecureRandomPositiveLongUnitTest.java @@ -9,7 +9,7 @@ import static org.assertj.core.api.Assertions.assertThat; public class SecureRandomPositiveLongUnitTest { @Test - void whenGenerateRecureRandom_thenGetExpectedValue() { + void whenGenerateRandomPositiveLong_thenGetPositiveValue() { SecureRandom secureRandom = new SecureRandom(); long randomPositiveLong = Math.abs(secureRandom.nextLong()); From 8a136fbffdfdefc76c39bd972716455bbb170e13 Mon Sep 17 00:00:00 2001 From: "@hangga" Date: Tue, 23 Jan 2024 06:23:29 +0700 Subject: [PATCH 07/47] isNotNegative --- .../SecureRandomPositiveLongUnitTest.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/core-java-modules/core-java-numbers-7/src/test/java/com/baeldung/securerandompositivelong/SecureRandomPositiveLongUnitTest.java b/core-java-modules/core-java-numbers-7/src/test/java/com/baeldung/securerandompositivelong/SecureRandomPositiveLongUnitTest.java index 6203e796b3..7f7a778923 100644 --- a/core-java-modules/core-java-numbers-7/src/test/java/com/baeldung/securerandompositivelong/SecureRandomPositiveLongUnitTest.java +++ b/core-java-modules/core-java-numbers-7/src/test/java/com/baeldung/securerandompositivelong/SecureRandomPositiveLongUnitTest.java @@ -13,6 +13,6 @@ public class SecureRandomPositiveLongUnitTest { SecureRandom secureRandom = new SecureRandom(); long randomPositiveLong = Math.abs(secureRandom.nextLong()); - assertThat(randomPositiveLong).isPositive(); + assertThat(randomPositiveLong).isNotNegative(); } } From f0b95c51c4b6ab0ceea0a2d32cd99f5a9c41bb0e Mon Sep 17 00:00:00 2001 From: michaelin007 Date: Mon, 29 Jan 2024 03:51:28 +0000 Subject: [PATCH 08/47] https://jira.baeldung.com/browse/BAEL-5116 --- .../configuration/R2DBCConfiguration.java | 4 + .../java/com/baeldung/r2dbc/model/Player.java | 11 +- ...pplicationRdbcTemplateIntegrationTest.java | 101 ++++++++++++++++++ 3 files changed, 114 insertions(+), 2 deletions(-) create mode 100644 spring-reactive-modules/spring-reactive-data/src/test/java/com/baeldung/r2dbc/R2dbcApplicationRdbcTemplateIntegrationTest.java diff --git a/spring-reactive-modules/spring-reactive-data/src/main/java/com/baeldung/r2dbc/configuration/R2DBCConfiguration.java b/spring-reactive-modules/spring-reactive-data/src/main/java/com/baeldung/r2dbc/configuration/R2DBCConfiguration.java index 54f06d9c6c..dab5509499 100644 --- a/spring-reactive-modules/spring-reactive-data/src/main/java/com/baeldung/r2dbc/configuration/R2DBCConfiguration.java +++ b/spring-reactive-modules/spring-reactive-data/src/main/java/com/baeldung/r2dbc/configuration/R2DBCConfiguration.java @@ -2,6 +2,10 @@ package com.baeldung.r2dbc.configuration; import io.r2dbc.h2.H2ConnectionConfiguration; import io.r2dbc.h2.H2ConnectionFactory; +import io.r2dbc.spi.Connection; +import io.r2dbc.spi.ConnectionFactory; +import io.r2dbc.spi.ConnectionFactoryMetadata; +import org.reactivestreams.Publisher; import org.springframework.context.annotation.Bean; import org.springframework.context.annotation.Configuration; import org.springframework.data.r2dbc.config.AbstractR2dbcConfiguration; diff --git a/spring-reactive-modules/spring-reactive-data/src/main/java/com/baeldung/r2dbc/model/Player.java b/spring-reactive-modules/spring-reactive-data/src/main/java/com/baeldung/r2dbc/model/Player.java index 1e28cb3d07..c66b4bc469 100644 --- a/spring-reactive-modules/spring-reactive-data/src/main/java/com/baeldung/r2dbc/model/Player.java +++ b/spring-reactive-modules/spring-reactive-data/src/main/java/com/baeldung/r2dbc/model/Player.java @@ -7,12 +7,19 @@ import org.springframework.data.annotation.Id; import org.springframework.data.relational.core.mapping.Table; @Data -@NoArgsConstructor -@AllArgsConstructor @Table public class Player { @Id Integer id; String name; Integer age; + + public Player() { + } + + public Player(Integer id, String name, Integer age) { + this.id = id; + this.name = name; + this.age = age; + } } \ No newline at end of file diff --git a/spring-reactive-modules/spring-reactive-data/src/test/java/com/baeldung/r2dbc/R2dbcApplicationRdbcTemplateIntegrationTest.java b/spring-reactive-modules/spring-reactive-data/src/test/java/com/baeldung/r2dbc/R2dbcApplicationRdbcTemplateIntegrationTest.java new file mode 100644 index 0000000000..286187aac5 --- /dev/null +++ b/spring-reactive-modules/spring-reactive-data/src/test/java/com/baeldung/r2dbc/R2dbcApplicationRdbcTemplateIntegrationTest.java @@ -0,0 +1,101 @@ +package com.baeldung.r2dbc; + +import com.baeldung.r2dbc.configuration.R2DBCConfiguration; +import com.baeldung.r2dbc.model.Player; +import com.baeldung.r2dbc.repository.PlayerRepository; +import io.r2dbc.h2.H2ConnectionFactory; +import io.r2dbc.spi.ConnectionFactories; +import io.r2dbc.spi.ConnectionFactory; +import org.junit.Before; +import org.junit.Test; +import org.junit.runner.RunWith; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.boot.test.context.SpringBootTest; +import org.springframework.data.r2dbc.core.R2dbcEntityTemplate; +import org.springframework.data.relational.core.query.Query; +import org.springframework.r2dbc.core.DatabaseClient; +import org.springframework.test.context.junit4.SpringRunner; +import reactor.core.publisher.Flux; +import reactor.core.publisher.Hooks; +import reactor.core.publisher.Mono; +import reactor.test.StepVerifier; + +import java.util.Arrays; +import java.util.List; + +import static org.springframework.data.relational.core.query.Criteria.where; +import static org.springframework.data.relational.core.query.Query.query; + +@RunWith(SpringRunner.class) +@SpringBootTest(classes = R2DBCConfiguration.class) +public class R2dbcApplicationRdbcTemplateIntegrationTest { + + @Autowired + PlayerRepository playerRepository; + + @Autowired + DatabaseClient client; + + @Autowired + H2ConnectionFactory factory; + + ConnectionFactory connectionFactory = ConnectionFactories.get("r2dbc:h2:mem:///testdb?options=DB_CLOSE_DELAY=-1;TRACE_LEVEL_FILE=4;USER=sa;PASSWORD="); + + R2dbcEntityTemplate template = new R2dbcEntityTemplate(connectionFactory); + + @Before + public void setup() { + + Hooks.onOperatorDebug(); + + List statements = Arrays.asList("DROP TABLE IF EXISTS player;", "CREATE table player (id INT AUTO_INCREMENT NOT NULL, name VARCHAR2, age INT NOT NULL);"); + + statements.forEach(it -> client.sql(it) + .fetch() + .rowsUpdated() + .as(StepVerifier::create) + .expectNextCount(1) + .verifyComplete()); + + } + + @Test + public void whenSearchForSaka_thenOneIsExpected() { + + insertPlayers(); + + template.select(Player.class) + .matching(query(where("name").is("Saka"))) + .one() + .as(StepVerifier::create) + .expectNextCount(1) + .verifyComplete(); + } + + @Test + public void whenInsertThreePlayers_thenThreeAreExpected() { + + insertPlayers(); + + template.select(Player.class) + .all() + .as(StepVerifier::create) + .expectNextCount(3) + .verifyComplete(); + } + + public void insertPlayers() { + List players = Arrays.asList(new Player(null, "Saka", 22), new Player(null, "Pedro", 32), new Player(null, "Mbappé", 20)); + + for (Player player : players) { + template.insert(Player.class) + .using(player) + .as(StepVerifier::create) + .expectNextCount(1) + .verifyComplete(); + + } + + } + +} From 18879fd4911d100f2b5b1b2b339a410c41f215b7 Mon Sep 17 00:00:00 2001 From: michaelin007 Date: Mon, 29 Jan 2024 04:03:29 +0000 Subject: [PATCH 09/47] https://jira.baeldung.com/browse/BAEL-5116 --- .../main/java/com/baeldung/r2dbc/model/Player.java | 11 ++--------- 1 file changed, 2 insertions(+), 9 deletions(-) diff --git a/spring-reactive-modules/spring-reactive-data/src/main/java/com/baeldung/r2dbc/model/Player.java b/spring-reactive-modules/spring-reactive-data/src/main/java/com/baeldung/r2dbc/model/Player.java index c66b4bc469..1e28cb3d07 100644 --- a/spring-reactive-modules/spring-reactive-data/src/main/java/com/baeldung/r2dbc/model/Player.java +++ b/spring-reactive-modules/spring-reactive-data/src/main/java/com/baeldung/r2dbc/model/Player.java @@ -7,19 +7,12 @@ import org.springframework.data.annotation.Id; import org.springframework.data.relational.core.mapping.Table; @Data +@NoArgsConstructor +@AllArgsConstructor @Table public class Player { @Id Integer id; String name; Integer age; - - public Player() { - } - - public Player(Integer id, String name, Integer age) { - this.id = id; - this.name = name; - this.age = age; - } } \ No newline at end of file From d660390f22e45d9982df8dfffd31986363047344 Mon Sep 17 00:00:00 2001 From: michaelin007 Date: Tue, 30 Jan 2024 06:35:28 +0000 Subject: [PATCH 10/47] Spring Boot and R2DBC --- ...2dbcApplicationRdbcTemplateIntegrationTest.java | 14 +------------- 1 file changed, 1 insertion(+), 13 deletions(-) diff --git a/spring-reactive-modules/spring-reactive-data/src/test/java/com/baeldung/r2dbc/R2dbcApplicationRdbcTemplateIntegrationTest.java b/spring-reactive-modules/spring-reactive-data/src/test/java/com/baeldung/r2dbc/R2dbcApplicationRdbcTemplateIntegrationTest.java index 286187aac5..913e38c346 100644 --- a/spring-reactive-modules/spring-reactive-data/src/test/java/com/baeldung/r2dbc/R2dbcApplicationRdbcTemplateIntegrationTest.java +++ b/spring-reactive-modules/spring-reactive-data/src/test/java/com/baeldung/r2dbc/R2dbcApplicationRdbcTemplateIntegrationTest.java @@ -1,9 +1,6 @@ package com.baeldung.r2dbc; -import com.baeldung.r2dbc.configuration.R2DBCConfiguration; import com.baeldung.r2dbc.model.Player; -import com.baeldung.r2dbc.repository.PlayerRepository; -import io.r2dbc.h2.H2ConnectionFactory; import io.r2dbc.spi.ConnectionFactories; import io.r2dbc.spi.ConnectionFactory; import org.junit.Before; @@ -12,12 +9,9 @@ import org.junit.runner.RunWith; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.boot.test.context.SpringBootTest; import org.springframework.data.r2dbc.core.R2dbcEntityTemplate; -import org.springframework.data.relational.core.query.Query; import org.springframework.r2dbc.core.DatabaseClient; import org.springframework.test.context.junit4.SpringRunner; -import reactor.core.publisher.Flux; import reactor.core.publisher.Hooks; -import reactor.core.publisher.Mono; import reactor.test.StepVerifier; import java.util.Arrays; @@ -27,18 +21,12 @@ import static org.springframework.data.relational.core.query.Criteria.where; import static org.springframework.data.relational.core.query.Query.query; @RunWith(SpringRunner.class) -@SpringBootTest(classes = R2DBCConfiguration.class) +@SpringBootTest public class R2dbcApplicationRdbcTemplateIntegrationTest { - @Autowired - PlayerRepository playerRepository; - @Autowired DatabaseClient client; - @Autowired - H2ConnectionFactory factory; - ConnectionFactory connectionFactory = ConnectionFactories.get("r2dbc:h2:mem:///testdb?options=DB_CLOSE_DELAY=-1;TRACE_LEVEL_FILE=4;USER=sa;PASSWORD="); R2dbcEntityTemplate template = new R2dbcEntityTemplate(connectionFactory); From 970dd965ccd0045548240d754188ce4a36347fde Mon Sep 17 00:00:00 2001 From: michaelin007 Date: Wed, 31 Jan 2024 19:40:03 +0000 Subject: [PATCH 11/47] Spring Boot and R2DBC --- .../com/baeldung/r2dbc/configuration/R2DBCConfiguration.java | 4 ---- .../r2dbc/R2dbcApplicationRdbcTemplateIntegrationTest.java | 1 + 2 files changed, 1 insertion(+), 4 deletions(-) diff --git a/spring-reactive-modules/spring-reactive-data/src/main/java/com/baeldung/r2dbc/configuration/R2DBCConfiguration.java b/spring-reactive-modules/spring-reactive-data/src/main/java/com/baeldung/r2dbc/configuration/R2DBCConfiguration.java index dab5509499..54f06d9c6c 100644 --- a/spring-reactive-modules/spring-reactive-data/src/main/java/com/baeldung/r2dbc/configuration/R2DBCConfiguration.java +++ b/spring-reactive-modules/spring-reactive-data/src/main/java/com/baeldung/r2dbc/configuration/R2DBCConfiguration.java @@ -2,10 +2,6 @@ package com.baeldung.r2dbc.configuration; import io.r2dbc.h2.H2ConnectionConfiguration; import io.r2dbc.h2.H2ConnectionFactory; -import io.r2dbc.spi.Connection; -import io.r2dbc.spi.ConnectionFactory; -import io.r2dbc.spi.ConnectionFactoryMetadata; -import org.reactivestreams.Publisher; import org.springframework.context.annotation.Bean; import org.springframework.context.annotation.Configuration; import org.springframework.data.r2dbc.config.AbstractR2dbcConfiguration; diff --git a/spring-reactive-modules/spring-reactive-data/src/test/java/com/baeldung/r2dbc/R2dbcApplicationRdbcTemplateIntegrationTest.java b/spring-reactive-modules/spring-reactive-data/src/test/java/com/baeldung/r2dbc/R2dbcApplicationRdbcTemplateIntegrationTest.java index 913e38c346..194d3e263f 100644 --- a/spring-reactive-modules/spring-reactive-data/src/test/java/com/baeldung/r2dbc/R2dbcApplicationRdbcTemplateIntegrationTest.java +++ b/spring-reactive-modules/spring-reactive-data/src/test/java/com/baeldung/r2dbc/R2dbcApplicationRdbcTemplateIntegrationTest.java @@ -52,6 +52,7 @@ public class R2dbcApplicationRdbcTemplateIntegrationTest { insertPlayers(); + template.select(Player.class) .matching(query(where("name").is("Saka"))) .one() From fd61c0769a7fc52b35281e60b2fd8a7df95db7cb Mon Sep 17 00:00:00 2001 From: michaelin007 Date: Thu, 1 Feb 2024 06:48:29 +0000 Subject: [PATCH 12/47] Spring Boot and R2DBC --- .../r2dbc/R2dbcApplicationRdbcTemplateIntegrationTest.java | 1 - 1 file changed, 1 deletion(-) diff --git a/spring-reactive-modules/spring-reactive-data/src/test/java/com/baeldung/r2dbc/R2dbcApplicationRdbcTemplateIntegrationTest.java b/spring-reactive-modules/spring-reactive-data/src/test/java/com/baeldung/r2dbc/R2dbcApplicationRdbcTemplateIntegrationTest.java index 194d3e263f..913e38c346 100644 --- a/spring-reactive-modules/spring-reactive-data/src/test/java/com/baeldung/r2dbc/R2dbcApplicationRdbcTemplateIntegrationTest.java +++ b/spring-reactive-modules/spring-reactive-data/src/test/java/com/baeldung/r2dbc/R2dbcApplicationRdbcTemplateIntegrationTest.java @@ -52,7 +52,6 @@ public class R2dbcApplicationRdbcTemplateIntegrationTest { insertPlayers(); - template.select(Player.class) .matching(query(where("name").is("Saka"))) .one() From 6c6ed2ba664f3a29ee89ccf3be010adeb3ff67c2 Mon Sep 17 00:00:00 2001 From: Eugene Kovko Date: Thu, 1 Feb 2024 13:52:36 +0100 Subject: [PATCH 13/47] BAEL-7452: Added transactional annotations to GroupService --- .../listvsset/eager/list/moderatedomain/GroupService.java | 2 ++ .../listvsset/eager/set/lazy/moderatedomain/GroupService.java | 2 ++ .../listvsset/eager/set/moderatedomain/GroupService.java | 3 +++ 3 files changed, 7 insertions(+) diff --git a/persistence-modules/spring-boot-persistence-4/src/main/java/com/baeldung/listvsset/eager/list/moderatedomain/GroupService.java b/persistence-modules/spring-boot-persistence-4/src/main/java/com/baeldung/listvsset/eager/list/moderatedomain/GroupService.java index 3f84410f94..d854922ec8 100644 --- a/persistence-modules/spring-boot-persistence-4/src/main/java/com/baeldung/listvsset/eager/list/moderatedomain/GroupService.java +++ b/persistence-modules/spring-boot-persistence-4/src/main/java/com/baeldung/listvsset/eager/list/moderatedomain/GroupService.java @@ -4,8 +4,10 @@ import java.util.List; import java.util.Optional; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; +import org.springframework.transaction.annotation.Transactional; @Service +@Transactional public class GroupService { private final GroupRepository groupRepository; diff --git a/persistence-modules/spring-boot-persistence-4/src/main/java/com/baeldung/listvsset/eager/set/lazy/moderatedomain/GroupService.java b/persistence-modules/spring-boot-persistence-4/src/main/java/com/baeldung/listvsset/eager/set/lazy/moderatedomain/GroupService.java index 9fd9407309..7a19f5ede9 100644 --- a/persistence-modules/spring-boot-persistence-4/src/main/java/com/baeldung/listvsset/eager/set/lazy/moderatedomain/GroupService.java +++ b/persistence-modules/spring-boot-persistence-4/src/main/java/com/baeldung/listvsset/eager/set/lazy/moderatedomain/GroupService.java @@ -4,8 +4,10 @@ import java.util.List; import java.util.Optional; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; +import org.springframework.transaction.annotation.Transactional; @Service +@Transactional public class GroupService { private final GroupRepository groupRepository; diff --git a/persistence-modules/spring-boot-persistence-4/src/main/java/com/baeldung/listvsset/eager/set/moderatedomain/GroupService.java b/persistence-modules/spring-boot-persistence-4/src/main/java/com/baeldung/listvsset/eager/set/moderatedomain/GroupService.java index 3a8a4fcaa3..cb57512642 100644 --- a/persistence-modules/spring-boot-persistence-4/src/main/java/com/baeldung/listvsset/eager/set/moderatedomain/GroupService.java +++ b/persistence-modules/spring-boot-persistence-4/src/main/java/com/baeldung/listvsset/eager/set/moderatedomain/GroupService.java @@ -4,8 +4,10 @@ import java.util.List; import java.util.Optional; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; +import org.springframework.transaction.annotation.Transactional; @Service +@Transactional public class GroupService { private final GroupRepository groupRepository; @@ -27,3 +29,4 @@ public class GroupService { groupRepository.save(group); } } + From a1fb6eb66b1677541aecbc4a7f021c02b27c1b94 Mon Sep 17 00:00:00 2001 From: Imran Alam Date: Sat, 3 Feb 2024 21:43:12 +0530 Subject: [PATCH 14/47] Added code for Mutable vs Immutable objects in java --- .../baeldung/objectcopy/DeepCopyPerson.java | 23 ------------- .../objectcopy/ShallowCopyPerson.java | 10 ------ .../objectmutability/ImmutablePerson.java | 21 ++++++++++++ .../objectcopy/DeepCopyPersonUnitTest.java | 19 ----------- .../objectcopy/ShallowCopyPersonUnitTest.java | 17 ---------- .../ImmutableObjectExamplesUnitTest.java | 33 +++++++++++++++++++ .../ImmutablePersonUnitTest.java | 23 +++++++++++++ .../MutableObjectExamplesUnitTest.java | 28 ++++++++++++++++ 8 files changed, 105 insertions(+), 69 deletions(-) delete mode 100644 core-java-modules/core-java-lang-oop-patterns/src/main/java/com/baeldung/objectcopy/DeepCopyPerson.java delete mode 100644 core-java-modules/core-java-lang-oop-patterns/src/main/java/com/baeldung/objectcopy/ShallowCopyPerson.java create mode 100644 core-java-modules/core-java-lang-oop-patterns/src/main/java/com/baeldung/objectmutability/ImmutablePerson.java delete mode 100644 core-java-modules/core-java-lang-oop-patterns/src/test/java/com/baeldung/objectcopy/DeepCopyPersonUnitTest.java delete mode 100644 core-java-modules/core-java-lang-oop-patterns/src/test/java/com/baeldung/objectcopy/ShallowCopyPersonUnitTest.java create mode 100644 core-java-modules/core-java-lang-oop-patterns/src/test/java/com/baeldung/objectmutability/ImmutableObjectExamplesUnitTest.java create mode 100644 core-java-modules/core-java-lang-oop-patterns/src/test/java/com/baeldung/objectmutability/ImmutablePersonUnitTest.java create mode 100644 core-java-modules/core-java-lang-oop-patterns/src/test/java/com/baeldung/objectmutability/MutableObjectExamplesUnitTest.java diff --git a/core-java-modules/core-java-lang-oop-patterns/src/main/java/com/baeldung/objectcopy/DeepCopyPerson.java b/core-java-modules/core-java-lang-oop-patterns/src/main/java/com/baeldung/objectcopy/DeepCopyPerson.java deleted file mode 100644 index 4435a2720d..0000000000 --- a/core-java-modules/core-java-lang-oop-patterns/src/main/java/com/baeldung/objectcopy/DeepCopyPerson.java +++ /dev/null @@ -1,23 +0,0 @@ -package com.baeldung.objectcopy; - -import java.io.*; - -class DeepCopyPerson implements Serializable { - - int age; - - public DeepCopyPerson(int age) { - this.age = age; - } - - public static DeepCopyPerson deepCopy(DeepCopyPerson person) throws IOException, ClassNotFoundException { - ByteArrayOutputStream bos = new ByteArrayOutputStream(); - ObjectOutputStream out = new ObjectOutputStream(bos); - out.writeObject(person); - - ByteArrayInputStream bis = new ByteArrayInputStream(bos.toByteArray()); - ObjectInputStream in = new ObjectInputStream(bis); - - return (DeepCopyPerson) in.readObject(); - } -} diff --git a/core-java-modules/core-java-lang-oop-patterns/src/main/java/com/baeldung/objectcopy/ShallowCopyPerson.java b/core-java-modules/core-java-lang-oop-patterns/src/main/java/com/baeldung/objectcopy/ShallowCopyPerson.java deleted file mode 100644 index df06bfa988..0000000000 --- a/core-java-modules/core-java-lang-oop-patterns/src/main/java/com/baeldung/objectcopy/ShallowCopyPerson.java +++ /dev/null @@ -1,10 +0,0 @@ -package com.baeldung.objectcopy; - -class ShallowCopyPerson { - - int age; - - public ShallowCopyPerson(int age) { - this.age = age; - } -} diff --git a/core-java-modules/core-java-lang-oop-patterns/src/main/java/com/baeldung/objectmutability/ImmutablePerson.java b/core-java-modules/core-java-lang-oop-patterns/src/main/java/com/baeldung/objectmutability/ImmutablePerson.java new file mode 100644 index 0000000000..e67c802a2e --- /dev/null +++ b/core-java-modules/core-java-lang-oop-patterns/src/main/java/com/baeldung/objectmutability/ImmutablePerson.java @@ -0,0 +1,21 @@ +package com.baeldung.objectmutability; + +public final class ImmutablePerson { + + private final String name; + private final int age; + + public ImmutablePerson(String name, int age) { + this.name = name; + this.age = age; + } + + public String getName() { + return name; + } + + public int getAge() { + return age; + } +} + diff --git a/core-java-modules/core-java-lang-oop-patterns/src/test/java/com/baeldung/objectcopy/DeepCopyPersonUnitTest.java b/core-java-modules/core-java-lang-oop-patterns/src/test/java/com/baeldung/objectcopy/DeepCopyPersonUnitTest.java deleted file mode 100644 index ae3a109c15..0000000000 --- a/core-java-modules/core-java-lang-oop-patterns/src/test/java/com/baeldung/objectcopy/DeepCopyPersonUnitTest.java +++ /dev/null @@ -1,19 +0,0 @@ -package com.baeldung.objectcopy; - -import org.junit.jupiter.api.Test; - -import java.io.IOException; - -import static org.junit.jupiter.api.Assertions.assertEquals; - -public class DeepCopyPersonUnitTest { - - @Test - public void givenPerson_whenDeepCopy_thenIndependentCopy() throws IOException, ClassNotFoundException { - DeepCopyPerson person1 = new DeepCopyPerson(30); - DeepCopyPerson person2 = DeepCopyPerson.deepCopy(person1); - person1.age = 25; - - assertEquals(30, person2.age); - } -} diff --git a/core-java-modules/core-java-lang-oop-patterns/src/test/java/com/baeldung/objectcopy/ShallowCopyPersonUnitTest.java b/core-java-modules/core-java-lang-oop-patterns/src/test/java/com/baeldung/objectcopy/ShallowCopyPersonUnitTest.java deleted file mode 100644 index 2aea938bde..0000000000 --- a/core-java-modules/core-java-lang-oop-patterns/src/test/java/com/baeldung/objectcopy/ShallowCopyPersonUnitTest.java +++ /dev/null @@ -1,17 +0,0 @@ -package com.baeldung.objectcopy; - -import org.junit.jupiter.api.Test; - -import static org.junit.jupiter.api.Assertions.assertEquals; - -public class ShallowCopyPersonUnitTest { - - @Test - public void givenPerson_whenShallowCopy_thenSharedReference() { - ShallowCopyPerson person1 = new ShallowCopyPerson(30); - ShallowCopyPerson person2 = person1; - person1.age = 25; - - assertEquals(25, person2.age); - } -} diff --git a/core-java-modules/core-java-lang-oop-patterns/src/test/java/com/baeldung/objectmutability/ImmutableObjectExamplesUnitTest.java b/core-java-modules/core-java-lang-oop-patterns/src/test/java/com/baeldung/objectmutability/ImmutableObjectExamplesUnitTest.java new file mode 100644 index 0000000000..f0f22df3ea --- /dev/null +++ b/core-java-modules/core-java-lang-oop-patterns/src/test/java/com/baeldung/objectmutability/ImmutableObjectExamplesUnitTest.java @@ -0,0 +1,33 @@ +package com.baeldung.objectmutability; + +import org.junit.jupiter.api.Test; + +import static org.junit.jupiter.api.Assertions.assertEquals; +import static org.junit.jupiter.api.Assertions.assertNotSame; + +public class ImmutableObjectExamplesUnitTest { + + @Test + public void givenImmutableString_whenConcat_thenNotSameAndCorrectValues() { + String originalString = "Hello"; + String modifiedString = originalString.concat(" World"); + + assertNotSame(originalString, modifiedString); + + assertEquals("Hello", originalString); + assertEquals("Hello World", modifiedString); + } + + @Test + public void givenImmutableInteger_whenAdd_thenNotSameAndCorrectValue() { + Integer immutableInt = 42; + Integer modifiedInt = immutableInt + 8; + + assertNotSame(immutableInt, modifiedInt); + + assertEquals(42, (int) immutableInt); + assertEquals(50, (int) modifiedInt); + } +} + + diff --git a/core-java-modules/core-java-lang-oop-patterns/src/test/java/com/baeldung/objectmutability/ImmutablePersonUnitTest.java b/core-java-modules/core-java-lang-oop-patterns/src/test/java/com/baeldung/objectmutability/ImmutablePersonUnitTest.java new file mode 100644 index 0000000000..6aeebcb242 --- /dev/null +++ b/core-java-modules/core-java-lang-oop-patterns/src/test/java/com/baeldung/objectmutability/ImmutablePersonUnitTest.java @@ -0,0 +1,23 @@ +package com.baeldung.objectmutability; + +import org.junit.jupiter.api.Test; + +import static org.junit.jupiter.api.Assertions.assertEquals; + +public class ImmutablePersonUnitTest { + + @Test + public void givenImmutablePerson_whenModifyName_thenCompilationError() { + ImmutablePerson person = new ImmutablePerson("John", 30); + // person.setName("Jane"); + } + + @Test + public void givenImmutablePerson_whenAccessFields_thenCorrectValues() { + ImmutablePerson person = new ImmutablePerson("John", 30); + + assertEquals("John", person.getName()); + assertEquals(30, person.getAge()); + } +} + diff --git a/core-java-modules/core-java-lang-oop-patterns/src/test/java/com/baeldung/objectmutability/MutableObjectExamplesUnitTest.java b/core-java-modules/core-java-lang-oop-patterns/src/test/java/com/baeldung/objectmutability/MutableObjectExamplesUnitTest.java new file mode 100644 index 0000000000..57e36efbf4 --- /dev/null +++ b/core-java-modules/core-java-lang-oop-patterns/src/test/java/com/baeldung/objectmutability/MutableObjectExamplesUnitTest.java @@ -0,0 +1,28 @@ +package com.baeldung.objectmutability; + +import java.util.ArrayList; +import java.util.List; + +import org.junit.jupiter.api.Test; + +import static org.junit.jupiter.api.Assertions.assertEquals; + +public class MutableObjectExamplesUnitTest { + + @Test + public void givenMutableString_whenModify_thenCorrectValue() { + StringBuilder mutableString = new StringBuilder("Hello"); + mutableString.append(" World"); + + assertEquals("Hello World", mutableString.toString()); + } + + @Test + public void givenMutableList_whenAddElement_thenCorrectSize() { + List mutableList = new ArrayList<>(); + mutableList.add("Java"); + + assertEquals(1, mutableList.size()); + } +} + From e8b27416d72a243c53cfe309dde5c23966c559b1 Mon Sep 17 00:00:00 2001 From: "Kai.Yuan" Date: Fri, 2 Feb 2024 17:06:31 +0100 Subject: [PATCH 15/47] [mv-0-to-end-array] move zeros to the end --- .../MoveZeroesToTheEndOfAnArrayUnitTest.java | 40 +++++++++++++++++++ 1 file changed, 40 insertions(+) create mode 100644 core-java-modules/core-java-arrays-operations-advanced-2/src/test/java/com/baeldung/movezerototheend/MoveZeroesToTheEndOfAnArrayUnitTest.java diff --git a/core-java-modules/core-java-arrays-operations-advanced-2/src/test/java/com/baeldung/movezerototheend/MoveZeroesToTheEndOfAnArrayUnitTest.java b/core-java-modules/core-java-arrays-operations-advanced-2/src/test/java/com/baeldung/movezerototheend/MoveZeroesToTheEndOfAnArrayUnitTest.java new file mode 100644 index 0000000000..ae0152feca --- /dev/null +++ b/core-java-modules/core-java-arrays-operations-advanced-2/src/test/java/com/baeldung/movezerototheend/MoveZeroesToTheEndOfAnArrayUnitTest.java @@ -0,0 +1,40 @@ +package com.baeldung.movezerototheend; + +import org.junit.jupiter.api.Test; + +import java.util.Arrays; + +import static org.junit.jupiter.api.Assertions.assertArrayEquals; + +public class MoveZeroesToTheEndOfAnArrayUnitTest { + static final int[] EXPECTED = new int[] { 1, 2, 3, 4, 0, 0 }; + + @Test + void whenCreatingANewArrayAndCopyingValues_thenGetTheExpectedResult() { + int[] array = new int[] { 1, 2, 0, 3, 4, 0 }; + int[] result = new int[array.length]; + int idx = 0; + for (int n : array) { + if (n != 0) { + result[idx++] = n; + } + } + assertArrayEquals(EXPECTED, result); + } + + @Test + void whenMovingZeroInTheOriginalArray_thenGetTheExpectedResult() { + int[] array = new int[] { 1, 2, 0, 3, 4, 0 }; + int idx = 0; + for (int n : array) { + if (n != 0) { + array[idx++] = n; + } + System.out.println(Arrays.toString(array)); + } + while (idx < array.length) { + array[idx++] = 0; + } + assertArrayEquals(EXPECTED, array); + } +} \ No newline at end of file From 7b115b3a269d825dae6650954bdb749c73a2125d Mon Sep 17 00:00:00 2001 From: "Kai.Yuan" Date: Sun, 4 Feb 2024 19:24:20 +0100 Subject: [PATCH 16/47] [mv-0-to-end-array] changes for comments --- .../MoveZeroesToTheEndOfAnArrayUnitTest.java | 7 +++---- 1 file changed, 3 insertions(+), 4 deletions(-) diff --git a/core-java-modules/core-java-arrays-operations-advanced-2/src/test/java/com/baeldung/movezerototheend/MoveZeroesToTheEndOfAnArrayUnitTest.java b/core-java-modules/core-java-arrays-operations-advanced-2/src/test/java/com/baeldung/movezerototheend/MoveZeroesToTheEndOfAnArrayUnitTest.java index ae0152feca..1d56e1f50b 100644 --- a/core-java-modules/core-java-arrays-operations-advanced-2/src/test/java/com/baeldung/movezerototheend/MoveZeroesToTheEndOfAnArrayUnitTest.java +++ b/core-java-modules/core-java-arrays-operations-advanced-2/src/test/java/com/baeldung/movezerototheend/MoveZeroesToTheEndOfAnArrayUnitTest.java @@ -7,11 +7,11 @@ import java.util.Arrays; import static org.junit.jupiter.api.Assertions.assertArrayEquals; public class MoveZeroesToTheEndOfAnArrayUnitTest { - static final int[] EXPECTED = new int[] { 1, 2, 3, 4, 0, 0 }; + private static final int[] EXPECTED = new int[] { 42, 2, 3, 4, 0, 0 }; @Test void whenCreatingANewArrayAndCopyingValues_thenGetTheExpectedResult() { - int[] array = new int[] { 1, 2, 0, 3, 4, 0 }; + int[] array = new int[] { 42, 2, 0, 3, 4, 0 }; int[] result = new int[array.length]; int idx = 0; for (int n : array) { @@ -24,13 +24,12 @@ public class MoveZeroesToTheEndOfAnArrayUnitTest { @Test void whenMovingZeroInTheOriginalArray_thenGetTheExpectedResult() { - int[] array = new int[] { 1, 2, 0, 3, 4, 0 }; + int[] array = new int[] { 42, 2, 0, 3, 4, 0 }; int idx = 0; for (int n : array) { if (n != 0) { array[idx++] = n; } - System.out.println(Arrays.toString(array)); } while (idx < array.length) { array[idx++] = 0; From 34a8c4166c09e55ee61c1398c48ef23e4185f5d3 Mon Sep 17 00:00:00 2001 From: Imran Alam <75203259+Imranalam28@users.noreply.github.com> Date: Mon, 5 Feb 2024 14:22:23 +0530 Subject: [PATCH 17/47] Update ImmutableObjectExamplesUnitTest.java --- .../objectmutability/ImmutableObjectExamplesUnitTest.java | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/core-java-modules/core-java-lang-oop-patterns/src/test/java/com/baeldung/objectmutability/ImmutableObjectExamplesUnitTest.java b/core-java-modules/core-java-lang-oop-patterns/src/test/java/com/baeldung/objectmutability/ImmutableObjectExamplesUnitTest.java index f0f22df3ea..34a0874a37 100644 --- a/core-java-modules/core-java-lang-oop-patterns/src/test/java/com/baeldung/objectmutability/ImmutableObjectExamplesUnitTest.java +++ b/core-java-modules/core-java-lang-oop-patterns/src/test/java/com/baeldung/objectmutability/ImmutableObjectExamplesUnitTest.java @@ -8,7 +8,7 @@ import static org.junit.jupiter.api.Assertions.assertNotSame; public class ImmutableObjectExamplesUnitTest { @Test - public void givenImmutableString_whenConcat_thenNotSameAndCorrectValues() { + public void givenImmutableString_whenConcatString_thenNotSameAndCorrectValues() { String originalString = "Hello"; String modifiedString = originalString.concat(" World"); @@ -19,7 +19,7 @@ public class ImmutableObjectExamplesUnitTest { } @Test - public void givenImmutableInteger_whenAdd_thenNotSameAndCorrectValue() { + public void givenImmutableInteger_whenAddWord_thenNotSameAndCorrectValue() { Integer immutableInt = 42; Integer modifiedInt = immutableInt + 8; From b07426336fe310fa6591c76665b4887be7b38538 Mon Sep 17 00:00:00 2001 From: Imran Alam <75203259+Imranalam28@users.noreply.github.com> Date: Mon, 5 Feb 2024 14:23:23 +0530 Subject: [PATCH 18/47] Update ImmutableObjectExamplesUnitTest.java --- .../objectmutability/ImmutableObjectExamplesUnitTest.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/core-java-modules/core-java-lang-oop-patterns/src/test/java/com/baeldung/objectmutability/ImmutableObjectExamplesUnitTest.java b/core-java-modules/core-java-lang-oop-patterns/src/test/java/com/baeldung/objectmutability/ImmutableObjectExamplesUnitTest.java index 34a0874a37..4c41050928 100644 --- a/core-java-modules/core-java-lang-oop-patterns/src/test/java/com/baeldung/objectmutability/ImmutableObjectExamplesUnitTest.java +++ b/core-java-modules/core-java-lang-oop-patterns/src/test/java/com/baeldung/objectmutability/ImmutableObjectExamplesUnitTest.java @@ -19,7 +19,7 @@ public class ImmutableObjectExamplesUnitTest { } @Test - public void givenImmutableInteger_whenAddWord_thenNotSameAndCorrectValue() { + public void givenImmutableInteger_whenAddInteger_thenNotSameAndCorrectValue() { Integer immutableInt = 42; Integer modifiedInt = immutableInt + 8; From 48690d61bef4fe6541b9dba19e48a8a613690677 Mon Sep 17 00:00:00 2001 From: Imran Alam <75203259+Imranalam28@users.noreply.github.com> Date: Mon, 5 Feb 2024 14:24:18 +0530 Subject: [PATCH 19/47] Update ImmutablePersonUnitTest.java --- .../baeldung/objectmutability/ImmutablePersonUnitTest.java | 5 ----- 1 file changed, 5 deletions(-) diff --git a/core-java-modules/core-java-lang-oop-patterns/src/test/java/com/baeldung/objectmutability/ImmutablePersonUnitTest.java b/core-java-modules/core-java-lang-oop-patterns/src/test/java/com/baeldung/objectmutability/ImmutablePersonUnitTest.java index 6aeebcb242..c8f950fa60 100644 --- a/core-java-modules/core-java-lang-oop-patterns/src/test/java/com/baeldung/objectmutability/ImmutablePersonUnitTest.java +++ b/core-java-modules/core-java-lang-oop-patterns/src/test/java/com/baeldung/objectmutability/ImmutablePersonUnitTest.java @@ -6,11 +6,6 @@ import static org.junit.jupiter.api.Assertions.assertEquals; public class ImmutablePersonUnitTest { - @Test - public void givenImmutablePerson_whenModifyName_thenCompilationError() { - ImmutablePerson person = new ImmutablePerson("John", 30); - // person.setName("Jane"); - } @Test public void givenImmutablePerson_whenAccessFields_thenCorrectValues() { From ac3959d261f3c9b0e9e76e31bab8d7aacbca847b Mon Sep 17 00:00:00 2001 From: Imran Alam <75203259+Imranalam28@users.noreply.github.com> Date: Mon, 5 Feb 2024 14:25:15 +0530 Subject: [PATCH 20/47] Update MutableObjectExamplesUnitTest.java --- .../objectmutability/MutableObjectExamplesUnitTest.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/core-java-modules/core-java-lang-oop-patterns/src/test/java/com/baeldung/objectmutability/MutableObjectExamplesUnitTest.java b/core-java-modules/core-java-lang-oop-patterns/src/test/java/com/baeldung/objectmutability/MutableObjectExamplesUnitTest.java index 57e36efbf4..6c770d68af 100644 --- a/core-java-modules/core-java-lang-oop-patterns/src/test/java/com/baeldung/objectmutability/MutableObjectExamplesUnitTest.java +++ b/core-java-modules/core-java-lang-oop-patterns/src/test/java/com/baeldung/objectmutability/MutableObjectExamplesUnitTest.java @@ -10,7 +10,7 @@ import static org.junit.jupiter.api.Assertions.assertEquals; public class MutableObjectExamplesUnitTest { @Test - public void givenMutableString_whenModify_thenCorrectValue() { + public void givenMutableString_whenAppendElement_thenCorrectValue() { StringBuilder mutableString = new StringBuilder("Hello"); mutableString.append(" World"); From 1732af872137b5c84319cce5977533ea53fec9f4 Mon Sep 17 00:00:00 2001 From: Imran Alam <75203259+Imranalam28@users.noreply.github.com> Date: Mon, 5 Feb 2024 15:29:01 +0530 Subject: [PATCH 21/47] Update ImmutablePersonUnitTest.java --- .../com/baeldung/objectmutability/ImmutablePersonUnitTest.java | 1 - 1 file changed, 1 deletion(-) diff --git a/core-java-modules/core-java-lang-oop-patterns/src/test/java/com/baeldung/objectmutability/ImmutablePersonUnitTest.java b/core-java-modules/core-java-lang-oop-patterns/src/test/java/com/baeldung/objectmutability/ImmutablePersonUnitTest.java index c8f950fa60..5bd6abbb4a 100644 --- a/core-java-modules/core-java-lang-oop-patterns/src/test/java/com/baeldung/objectmutability/ImmutablePersonUnitTest.java +++ b/core-java-modules/core-java-lang-oop-patterns/src/test/java/com/baeldung/objectmutability/ImmutablePersonUnitTest.java @@ -6,7 +6,6 @@ import static org.junit.jupiter.api.Assertions.assertEquals; public class ImmutablePersonUnitTest { - @Test public void givenImmutablePerson_whenAccessFields_thenCorrectValues() { ImmutablePerson person = new ImmutablePerson("John", 30); From c150165e035381e9fc1688b51b35fbdcd2c310d8 Mon Sep 17 00:00:00 2001 From: Bipin kumar Date: Tue, 6 Feb 2024 16:28:33 +0530 Subject: [PATCH 22/47] JAVA-30449: Changes made for formatting pom files modules S to Z (#15722) --- spring-6-rsocket/pom.xml | 1 + spring-6/pom.xml | 8 +++---- spring-actuator/pom.xml | 1 + spring-ai/pom.xml | 21 ++++++++++--------- spring-boot-modules/spring-boot-react/pom.xml | 1 - .../spring-boot-validations/pom.xml | 2 ++ .../spring-reactive-performance/pom.xml | 5 +---- web-modules/java-takes/pom.xml | 6 ++---- web-modules/rome/pom.xml | 7 ++----- 9 files changed, 24 insertions(+), 28 deletions(-) diff --git a/spring-6-rsocket/pom.xml b/spring-6-rsocket/pom.xml index 12ec297c47..8e7a755a36 100644 --- a/spring-6-rsocket/pom.xml +++ b/spring-6-rsocket/pom.xml @@ -34,6 +34,7 @@ import + diff --git a/spring-6/pom.xml b/spring-6/pom.xml index 2ba668a4fe..19ed46a470 100644 --- a/spring-6/pom.xml +++ b/spring-6/pom.xml @@ -3,6 +3,10 @@ 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 + spring-6 + spring-6 + pom + com.baeldung parent-spring-6 @@ -10,10 +14,6 @@ 0.0.1-SNAPSHOT - spring-6 - spring-6 - pom - 17 17 diff --git a/spring-actuator/pom.xml b/spring-actuator/pom.xml index 20b80d9924..b8edcd9845 100644 --- a/spring-actuator/pom.xml +++ b/spring-actuator/pom.xml @@ -43,6 +43,7 @@ ${jetty.version} + diff --git a/spring-ai/pom.xml b/spring-ai/pom.xml index d0e8ab2d1b..8864b03568 100644 --- a/spring-ai/pom.xml +++ b/spring-ai/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 spring-ai spring-ai @@ -39,14 +39,14 @@ - - org.springframework.boot - spring-boot-maven-plugin - - com.baeldung.spring.ai.SpringAIProjectApplication - JAR - - + + org.springframework.boot + spring-boot-maven-plugin + + com.baeldung.spring.ai.SpringAIProjectApplication + JAR + + org.apache.maven.plugins maven-compiler-plugin @@ -60,4 +60,5 @@ + diff --git a/spring-boot-modules/spring-boot-react/pom.xml b/spring-boot-modules/spring-boot-react/pom.xml index 7fbf0a6bf8..95ae8c59d2 100644 --- a/spring-boot-modules/spring-boot-react/pom.xml +++ b/spring-boot-modules/spring-boot-react/pom.xml @@ -11,7 +11,6 @@ 1.0.0-SNAPSHOT - org.springframework.boot diff --git a/spring-boot-modules/spring-boot-validations/pom.xml b/spring-boot-modules/spring-boot-validations/pom.xml index 754ba5e432..cba2b76429 100644 --- a/spring-boot-modules/spring-boot-validations/pom.xml +++ b/spring-boot-modules/spring-boot-validations/pom.xml @@ -27,6 +27,7 @@ spring-boot-starter-validation + @@ -35,4 +36,5 @@ + \ No newline at end of file diff --git a/spring-reactive-modules/spring-reactive-performance/pom.xml b/spring-reactive-modules/spring-reactive-performance/pom.xml index d7a69560dd..77bd1cdb69 100644 --- a/spring-reactive-modules/spring-reactive-performance/pom.xml +++ b/spring-reactive-modules/spring-reactive-performance/pom.xml @@ -34,20 +34,16 @@ org.springframework.boot spring-boot-starter-webflux - org.springframework.boot spring-boot-starter-webflux - org.springframework.boot spring-boot-starter-data-mongodb - - @@ -74,4 +70,5 @@ 21 3.2.0 + \ No newline at end of file diff --git a/web-modules/java-takes/pom.xml b/web-modules/java-takes/pom.xml index e28f75b536..6d670005e8 100644 --- a/web-modules/java-takes/pom.xml +++ b/web-modules/java-takes/pom.xml @@ -1,7 +1,7 @@ + xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" + xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd"> 4.0.0 com.baeldung.spring-boot-modules java-takes @@ -12,8 +12,6 @@ 1.0.0-SNAPSHOT - - org.takes diff --git a/web-modules/rome/pom.xml b/web-modules/rome/pom.xml index cfcdf4721c..eb0f54120b 100644 --- a/web-modules/rome/pom.xml +++ b/web-modules/rome/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 rome 0.1-SNAPSHOT @@ -13,8 +13,6 @@ 1.0.0-SNAPSHOT - - rome @@ -23,7 +21,6 @@ - 1.0 From 7055bb3f6b190855e27f792e69efd479bd0303cf Mon Sep 17 00:00:00 2001 From: Manfred <77407079+manfred106@users.noreply.github.com> Date: Wed, 7 Feb 2024 01:52:45 +0000 Subject: [PATCH 23/47] BAEL-7282: Getting all results at once in a paged query method (#15761) --- .../spring-boot-persistence-4/pom.xml | 13 +++ .../baeldung/paging/PagingApplication.java | 13 +++ .../main/java/com/baeldung/paging/School.java | 31 ++++++ .../java/com/baeldung/paging/Student.java | 42 +++++++ .../paging/StudentCustomQueryRepository.java | 14 +++ .../java/com/baeldung/paging/StudentDTO.java | 22 ++++ .../paging/StudentEntityGraphRepository.java | 13 +++ .../StudentNamedEntityGraphRepository.java | 13 +++ .../baeldung/paging/StudentRepository.java | 6 + .../paging/StudentWithSchoolNameDTO.java | 24 ++++ .../StudentRepositoryIntegrationTest.java | 103 ++++++++++++++++++ .../test/resources/school-student-data.sql | 9 ++ 12 files changed, 303 insertions(+) create mode 100644 persistence-modules/spring-boot-persistence-4/src/main/java/com/baeldung/paging/PagingApplication.java create mode 100644 persistence-modules/spring-boot-persistence-4/src/main/java/com/baeldung/paging/School.java create mode 100644 persistence-modules/spring-boot-persistence-4/src/main/java/com/baeldung/paging/Student.java create mode 100644 persistence-modules/spring-boot-persistence-4/src/main/java/com/baeldung/paging/StudentCustomQueryRepository.java create mode 100644 persistence-modules/spring-boot-persistence-4/src/main/java/com/baeldung/paging/StudentDTO.java create mode 100644 persistence-modules/spring-boot-persistence-4/src/main/java/com/baeldung/paging/StudentEntityGraphRepository.java create mode 100644 persistence-modules/spring-boot-persistence-4/src/main/java/com/baeldung/paging/StudentNamedEntityGraphRepository.java create mode 100644 persistence-modules/spring-boot-persistence-4/src/main/java/com/baeldung/paging/StudentRepository.java create mode 100644 persistence-modules/spring-boot-persistence-4/src/main/java/com/baeldung/paging/StudentWithSchoolNameDTO.java create mode 100644 persistence-modules/spring-boot-persistence-4/src/test/java/com/baeldung/paging/StudentRepositoryIntegrationTest.java create mode 100644 persistence-modules/spring-boot-persistence-4/src/test/resources/school-student-data.sql diff --git a/persistence-modules/spring-boot-persistence-4/pom.xml b/persistence-modules/spring-boot-persistence-4/pom.xml index 223b754f07..13cb4d5b82 100644 --- a/persistence-modules/spring-boot-persistence-4/pom.xml +++ b/persistence-modules/spring-boot-persistence-4/pom.xml @@ -57,6 +57,17 @@ jackson-databind ${jackson.version} + + org.modelmapper + modelmapper + ${modelmapper.version} + + + org.projectlombok + lombok + ${lombok.version} + provided + @@ -76,6 +87,8 @@ 1.0.7 3.7.0 2.16.0 + 3.2.0 + 1.18.30 \ No newline at end of file diff --git a/persistence-modules/spring-boot-persistence-4/src/main/java/com/baeldung/paging/PagingApplication.java b/persistence-modules/spring-boot-persistence-4/src/main/java/com/baeldung/paging/PagingApplication.java new file mode 100644 index 0000000000..7a38ec5cd8 --- /dev/null +++ b/persistence-modules/spring-boot-persistence-4/src/main/java/com/baeldung/paging/PagingApplication.java @@ -0,0 +1,13 @@ +package com.baeldung.paging; + +import org.springframework.boot.SpringApplication; +import org.springframework.boot.autoconfigure.SpringBootApplication; + +@SpringBootApplication +public class PagingApplication { + + public static void main(String[] args) { + SpringApplication.run(PagingApplication.class, args); + } + +} \ No newline at end of file diff --git a/persistence-modules/spring-boot-persistence-4/src/main/java/com/baeldung/paging/School.java b/persistence-modules/spring-boot-persistence-4/src/main/java/com/baeldung/paging/School.java new file mode 100644 index 0000000000..6c02cbe6dd --- /dev/null +++ b/persistence-modules/spring-boot-persistence-4/src/main/java/com/baeldung/paging/School.java @@ -0,0 +1,31 @@ +package com.baeldung.paging; + +import jakarta.persistence.Column; +import jakarta.persistence.Entity; +import jakarta.persistence.GeneratedValue; +import jakarta.persistence.GenerationType; +import jakarta.persistence.Id; +import jakarta.persistence.Table; +import lombok.AllArgsConstructor; +import lombok.Builder; +import lombok.Data; +import lombok.EqualsAndHashCode; +import lombok.NoArgsConstructor; + +@Entity +@Table(name = "school") +@Data +@Builder +@NoArgsConstructor +@AllArgsConstructor +@EqualsAndHashCode(of = {"id"}) +public class School { + + @Id + @GeneratedValue(strategy = GenerationType.IDENTITY) + @Column(name = "school_id") + private Integer id; + + private String name; + +} diff --git a/persistence-modules/spring-boot-persistence-4/src/main/java/com/baeldung/paging/Student.java b/persistence-modules/spring-boot-persistence-4/src/main/java/com/baeldung/paging/Student.java new file mode 100644 index 0000000000..5cc20cd9af --- /dev/null +++ b/persistence-modules/spring-boot-persistence-4/src/main/java/com/baeldung/paging/Student.java @@ -0,0 +1,42 @@ +package com.baeldung.paging; + +import jakarta.persistence.Column; +import jakarta.persistence.Entity; +import jakarta.persistence.FetchType; +import jakarta.persistence.Id; +import jakarta.persistence.JoinColumn; +import jakarta.persistence.ManyToOne; +import jakarta.persistence.NamedAttributeNode; +import jakarta.persistence.NamedEntityGraph; +import jakarta.persistence.Table; +import lombok.AllArgsConstructor; +import lombok.Builder; +import lombok.Data; +import lombok.EqualsAndHashCode; +import lombok.NoArgsConstructor; + +@Entity +@Table(name = "student") +@NamedEntityGraph(name = "Student.school", attributeNodes = @NamedAttributeNode("school")) +@Data +@Builder +@NoArgsConstructor +@AllArgsConstructor +@EqualsAndHashCode(of = {"id"}) +public class Student { + + @Id + @Column(name = "student_id") + private String id; + + @Column(name = "first_name") + private String firstName; + + @Column(name = "last_name") + private String lastName; + + @ManyToOne(fetch = FetchType.LAZY) + @JoinColumn(name = "school_id", referencedColumnName = "school_id") + private School school; + +} diff --git a/persistence-modules/spring-boot-persistence-4/src/main/java/com/baeldung/paging/StudentCustomQueryRepository.java b/persistence-modules/spring-boot-persistence-4/src/main/java/com/baeldung/paging/StudentCustomQueryRepository.java new file mode 100644 index 0000000000..591c4a9157 --- /dev/null +++ b/persistence-modules/spring-boot-persistence-4/src/main/java/com/baeldung/paging/StudentCustomQueryRepository.java @@ -0,0 +1,14 @@ +package com.baeldung.paging; + +import org.springframework.data.domain.Page; +import org.springframework.data.domain.Pageable; +import org.springframework.data.jpa.repository.JpaRepository; +import org.springframework.data.jpa.repository.Query; + +public interface StudentCustomQueryRepository extends JpaRepository { + + @Query(value = "SELECT stu FROM Student stu LEFT JOIN FETCH stu.school ", + countQuery = "SELECT COUNT(stu) FROM Student stu") + Page findAll(Pageable pageable); + +} diff --git a/persistence-modules/spring-boot-persistence-4/src/main/java/com/baeldung/paging/StudentDTO.java b/persistence-modules/spring-boot-persistence-4/src/main/java/com/baeldung/paging/StudentDTO.java new file mode 100644 index 0000000000..b4fc068e68 --- /dev/null +++ b/persistence-modules/spring-boot-persistence-4/src/main/java/com/baeldung/paging/StudentDTO.java @@ -0,0 +1,22 @@ +package com.baeldung.paging; + +import lombok.AllArgsConstructor; +import lombok.Builder; +import lombok.Data; +import lombok.EqualsAndHashCode; +import lombok.NoArgsConstructor; + +@Data +@Builder +@NoArgsConstructor +@AllArgsConstructor +@EqualsAndHashCode(of = {"id"}) +public class StudentDTO { + + private String id; + + private String firstName; + + private String lastName; + +} diff --git a/persistence-modules/spring-boot-persistence-4/src/main/java/com/baeldung/paging/StudentEntityGraphRepository.java b/persistence-modules/spring-boot-persistence-4/src/main/java/com/baeldung/paging/StudentEntityGraphRepository.java new file mode 100644 index 0000000000..b63dcbbb8f --- /dev/null +++ b/persistence-modules/spring-boot-persistence-4/src/main/java/com/baeldung/paging/StudentEntityGraphRepository.java @@ -0,0 +1,13 @@ +package com.baeldung.paging; + +import org.springframework.data.domain.Page; +import org.springframework.data.domain.Pageable; +import org.springframework.data.jpa.repository.EntityGraph; +import org.springframework.data.jpa.repository.JpaRepository; + +public interface StudentEntityGraphRepository extends JpaRepository { + + @EntityGraph(attributePaths = "school") + Page findAll(Pageable pageable); + +} \ No newline at end of file diff --git a/persistence-modules/spring-boot-persistence-4/src/main/java/com/baeldung/paging/StudentNamedEntityGraphRepository.java b/persistence-modules/spring-boot-persistence-4/src/main/java/com/baeldung/paging/StudentNamedEntityGraphRepository.java new file mode 100644 index 0000000000..c901da3c30 --- /dev/null +++ b/persistence-modules/spring-boot-persistence-4/src/main/java/com/baeldung/paging/StudentNamedEntityGraphRepository.java @@ -0,0 +1,13 @@ +package com.baeldung.paging; + +import org.springframework.data.domain.Page; +import org.springframework.data.domain.Pageable; +import org.springframework.data.jpa.repository.EntityGraph; +import org.springframework.data.jpa.repository.JpaRepository; + +public interface StudentNamedEntityGraphRepository extends JpaRepository { + + @EntityGraph(value = "Student.school") + Page findAll(Pageable pageable); + +} \ No newline at end of file diff --git a/persistence-modules/spring-boot-persistence-4/src/main/java/com/baeldung/paging/StudentRepository.java b/persistence-modules/spring-boot-persistence-4/src/main/java/com/baeldung/paging/StudentRepository.java new file mode 100644 index 0000000000..e1bb78123c --- /dev/null +++ b/persistence-modules/spring-boot-persistence-4/src/main/java/com/baeldung/paging/StudentRepository.java @@ -0,0 +1,6 @@ +package com.baeldung.paging; + +import org.springframework.data.jpa.repository.JpaRepository; + +public interface StudentRepository extends JpaRepository { +} \ No newline at end of file diff --git a/persistence-modules/spring-boot-persistence-4/src/main/java/com/baeldung/paging/StudentWithSchoolNameDTO.java b/persistence-modules/spring-boot-persistence-4/src/main/java/com/baeldung/paging/StudentWithSchoolNameDTO.java new file mode 100644 index 0000000000..ef634f78ac --- /dev/null +++ b/persistence-modules/spring-boot-persistence-4/src/main/java/com/baeldung/paging/StudentWithSchoolNameDTO.java @@ -0,0 +1,24 @@ +package com.baeldung.paging; + +import lombok.AllArgsConstructor; +import lombok.Builder; +import lombok.Data; +import lombok.EqualsAndHashCode; +import lombok.NoArgsConstructor; + +@Data +@Builder +@NoArgsConstructor +@AllArgsConstructor +@EqualsAndHashCode(of = {"id"}) +public class StudentWithSchoolNameDTO { + + private String id; + + private String firstName; + + private String lastName; + + private String schoolName; + +} diff --git a/persistence-modules/spring-boot-persistence-4/src/test/java/com/baeldung/paging/StudentRepositoryIntegrationTest.java b/persistence-modules/spring-boot-persistence-4/src/test/java/com/baeldung/paging/StudentRepositoryIntegrationTest.java new file mode 100644 index 0000000000..dbc1d5edb9 --- /dev/null +++ b/persistence-modules/spring-boot-persistence-4/src/test/java/com/baeldung/paging/StudentRepositoryIntegrationTest.java @@ -0,0 +1,103 @@ +package com.baeldung.paging; + +import com.baeldung.listvsset.util.TestConfig; +import io.hypersistence.utils.jdbc.validator.SQLStatementCountValidator; +import org.junit.jupiter.api.BeforeEach; +import org.junit.jupiter.api.Test; +import org.modelmapper.ModelMapper; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.boot.test.context.SpringBootTest; +import org.springframework.data.domain.Page; +import org.springframework.data.domain.PageRequest; +import org.springframework.data.domain.Pageable; +import org.springframework.data.domain.Sort; +import org.springframework.transaction.annotation.Transactional; + +import java.util.Comparator; +import java.util.List; + +import static io.hypersistence.utils.jdbc.validator.SQLStatementCountValidator.assertSelectCount; +import static org.assertj.core.api.AssertionsForInterfaceTypes.assertThat; + +@SpringBootTest(classes = {PagingApplication.class, TestConfig.class}, properties = { + "spring.jpa.show-sql=true", + "spring.jpa.properties.hibernate.format_sql=true", + "spring.jpa.generate-ddl=true", + "spring.jpa.defer-datasource-initialization=true", + "spring.sql.init.data-locations=classpath:school-student-data.sql" +}) +@Transactional +class StudentRepositoryIntegrationTest { + + @Autowired + private StudentRepository studentRepository; + + @Autowired + private StudentCustomQueryRepository studentCustomQueryRepository; + + @Autowired + private StudentEntityGraphRepository studentEntityGraphRepository; + + @Autowired + private StudentNamedEntityGraphRepository studentNamedEntityGraphRepository; + + private static final ModelMapper modelMapper = new ModelMapper(); + + @BeforeEach + void setUp() { + SQLStatementCountValidator.reset(); + } + + @Test + public void whenGetStudentsWithPageRequestOfTwo_thenReturnTwoRows() { + int rows = 2; + Pageable pageable = PageRequest.of(0, rows); + Page studentPage = studentRepository.findAll(pageable); + + // Then + List studentList = studentPage.getContent(); + assertThat(studentList.size()).isEqualTo(rows); + } + + @Test + public void whenGetStudentsWithUnpagedAndSort_thenReturnAllResultsSorted() { + Sort sort = Sort.by(Sort.Direction.ASC, "lastName"); + Pageable pageable = PageRequest.of(0, Integer.MAX_VALUE).withSort(sort); + Page studentPage = studentRepository.findAll(pageable); + + // Then + List studentList = studentPage.getContent(); + assertThat(studentList.size()).isEqualTo(studentPage.getTotalElements()); + assertThat(studentList).isSortedAccordingTo(Comparator.comparing(Student::getLastName)); + } + + + @Test + public void whenGetStudentsWithSchool_thenMultipleSelectQueriesAreExecuted() { + Page studentPage = studentRepository.findAll(Pageable.unpaged()); + studentPage.get().map(student -> modelMapper.map(student, StudentWithSchoolNameDTO.class)).toList(); + assertSelectCount(studentPage.getContent().size() + 1); + } + + @Test + public void whenGetStudentsByCustomQuery_thenOneSelectQueryIsExecuted() { + Page studentPage = studentCustomQueryRepository.findAll(Pageable.unpaged()); + studentPage.get().map(student -> modelMapper.map(student, StudentWithSchoolNameDTO.class)).toList(); + assertSelectCount(1); + } + + @Test + public void whenGetStudentsByEntityGraph_thenOneSelectQueryIsExecuted() { + Page studentPage = studentEntityGraphRepository.findAll(Pageable.unpaged()); + studentPage.get().map(student -> modelMapper.map(student, StudentWithSchoolNameDTO.class)).toList(); + assertSelectCount(1); + } + + @Test + public void whenGetStudentsByNamedEntityGraph_thenOneSelectQueryIsExecuted() { + Page studentPage = studentNamedEntityGraphRepository.findAll(Pageable.unpaged()); + studentPage.get().map(student -> modelMapper.map(student, StudentWithSchoolNameDTO.class)).toList(); + assertSelectCount(1); + } + +} \ No newline at end of file diff --git a/persistence-modules/spring-boot-persistence-4/src/test/resources/school-student-data.sql b/persistence-modules/spring-boot-persistence-4/src/test/resources/school-student-data.sql new file mode 100644 index 0000000000..de9699d256 --- /dev/null +++ b/persistence-modules/spring-boot-persistence-4/src/test/resources/school-student-data.sql @@ -0,0 +1,9 @@ +INSERT INTO school (name) VALUES ('Ada Lovelace CE High School'); +INSERT INTO school (name) VALUES ('Ealing Fields High School'); +INSERT INTO school (name) VALUES ('Northolt High School'); +INSERT INTO school (name) VALUES ('Villiers High School'); + +INSERT INTO student(student_id, first_name, last_name, school_id) VALUES('23056746', 'James', 'Drover', 1); +INSERT INTO student(student_id, first_name, last_name, school_id) VALUES('23056751', 'Rubin', 'Webber', 2); +INSERT INTO student(student_id, first_name, last_name, school_id) VALUES('23063444', 'Sarah', 'Pelham', 3); +INSERT INTO student(student_id, first_name, last_name, school_id) VALUES('23065783', 'Lucy', 'Watson', 4); \ No newline at end of file From 322a38321c7ea06812ee8309410adaafdac74f4e Mon Sep 17 00:00:00 2001 From: Bipin kumar Date: Wed, 7 Feb 2024 16:14:13 +0530 Subject: [PATCH 24/47] JAVA-27677: Reactivate core-java-os-2 and spring-6-rsocket (#15675) --- core-java-modules/pom.xml | 1 + pom.xml | 2 ++ spring-6-rsocket/pom.xml | 2 ++ .../rsocket/RSocketRequestResponseIntegrationTest.java | 3 ++- 4 files changed, 7 insertions(+), 1 deletion(-) diff --git a/core-java-modules/pom.xml b/core-java-modules/pom.xml index 568fc37811..227da74156 100644 --- a/core-java-modules/pom.xml +++ b/core-java-modules/pom.xml @@ -60,6 +60,7 @@ core-java-methods core-java-networking-3 core-java-os + core-java-os-2 core-java-perf-2 core-java-streams-4 core-java-streams-5 diff --git a/pom.xml b/pom.xml index 32920bb91f..2718a9f4f2 100644 --- a/pom.xml +++ b/pom.xml @@ -817,6 +817,7 @@ spring-5-webflux-2 spring-5-webflux spring-5 + spring-6-rsocket spring-activiti spring-actuator spring-ai @@ -1056,6 +1057,7 @@ spring-5-webflux-2 spring-5-webflux spring-5 + spring-6-rsocket spring-activiti spring-actuator spring-ai diff --git a/spring-6-rsocket/pom.xml b/spring-6-rsocket/pom.xml index 8e7a755a36..0874dcb307 100644 --- a/spring-6-rsocket/pom.xml +++ b/spring-6-rsocket/pom.xml @@ -49,6 +49,8 @@ 3.1.3 + 2.0.7 + 1.4.11 diff --git a/spring-6-rsocket/src/test/java/com/bealdung/rsocket/RSocketRequestResponseIntegrationTest.java b/spring-6-rsocket/src/test/java/com/bealdung/rsocket/RSocketRequestResponseIntegrationTest.java index 4b85c4c6fc..5b7fcb41ad 100644 --- a/spring-6-rsocket/src/test/java/com/bealdung/rsocket/RSocketRequestResponseIntegrationTest.java +++ b/spring-6-rsocket/src/test/java/com/bealdung/rsocket/RSocketRequestResponseIntegrationTest.java @@ -28,7 +28,8 @@ public class RSocketRequestResponseIntegrationTest { @Test public void whenSendingStream_thenReceiveTheSameStream() { String message = "test message"; - assertEquals(message, client.sendMessage(Mono.just(message)) + String response = "test message,Response!"; + assertEquals(response, client.sendMessage(Mono.just(message)) .block()); } From 8fa19c09308f0c28ccfff63cb205cca434a177e3 Mon Sep 17 00:00:00 2001 From: panos-kakos <102670093+panos-kakos@users.noreply.github.com> Date: Wed, 7 Feb 2024 16:05:13 +0200 Subject: [PATCH 25/47] [JAVA-29499] Upgraded spring-data-jpa-query to spring boot 3 (#15774) --- .../spring-data-jpa-query/pom.xml | 4 ++-- .../baeldung/aggregation/model/Comment.java | 6 ++--- .../com/baeldung/aggregation/model/Post.java | 6 ++--- .../baeldung/boot/passenger/Passenger.java | 10 ++++---- .../passenger/PassengerRepositoryImpl.java | 4 ++-- .../entitygraph/model/Characteristic.java | 10 ++++---- .../com/baeldung/entitygraph/model/Item.java | 10 ++++---- .../main/java/com/baeldung/exists/Car.java | 6 ++--- .../com/baeldung/joins/model/Department.java | 10 ++++---- .../com/baeldung/joins/model/Employee.java | 14 +++++------ .../java/com/baeldung/joins/model/Phone.java | 10 ++++---- .../PassengerRepositoryIntegrationTest.java | 7 ++---- .../joins/JpaJoinsIntegrationTest.java | 24 ++++++++++--------- 13 files changed, 60 insertions(+), 61 deletions(-) diff --git a/persistence-modules/spring-data-jpa-query/pom.xml b/persistence-modules/spring-data-jpa-query/pom.xml index c231afdd17..da63854859 100644 --- a/persistence-modules/spring-data-jpa-query/pom.xml +++ b/persistence-modules/spring-data-jpa-query/pom.xml @@ -8,9 +8,9 @@ com.baeldung - parent-boot-2 + parent-boot-3 0.0.1-SNAPSHOT - ../../parent-boot-2 + ../../parent-boot-3 diff --git a/persistence-modules/spring-data-jpa-query/src/main/java/com/baeldung/aggregation/model/Comment.java b/persistence-modules/spring-data-jpa-query/src/main/java/com/baeldung/aggregation/model/Comment.java index 26c2373cbe..8b4872e05e 100644 --- a/persistence-modules/spring-data-jpa-query/src/main/java/com/baeldung/aggregation/model/Comment.java +++ b/persistence-modules/spring-data-jpa-query/src/main/java/com/baeldung/aggregation/model/Comment.java @@ -1,8 +1,8 @@ package com.baeldung.aggregation.model; -import javax.persistence.Entity; -import javax.persistence.Id; -import javax.persistence.ManyToOne; +import jakarta.persistence.Entity; +import jakarta.persistence.Id; +import jakarta.persistence.ManyToOne; import java.util.Objects; @Entity diff --git a/persistence-modules/spring-data-jpa-query/src/main/java/com/baeldung/aggregation/model/Post.java b/persistence-modules/spring-data-jpa-query/src/main/java/com/baeldung/aggregation/model/Post.java index f396e080ae..25f48c386e 100644 --- a/persistence-modules/spring-data-jpa-query/src/main/java/com/baeldung/aggregation/model/Post.java +++ b/persistence-modules/spring-data-jpa-query/src/main/java/com/baeldung/aggregation/model/Post.java @@ -1,8 +1,8 @@ package com.baeldung.aggregation.model; -import javax.persistence.Entity; -import javax.persistence.Id; -import javax.persistence.OneToMany; +import jakarta.persistence.Entity; +import jakarta.persistence.Id; +import jakarta.persistence.OneToMany; import java.util.List; import java.util.Objects; diff --git a/persistence-modules/spring-data-jpa-query/src/main/java/com/baeldung/boot/passenger/Passenger.java b/persistence-modules/spring-data-jpa-query/src/main/java/com/baeldung/boot/passenger/Passenger.java index c75107a783..3054c3ea17 100644 --- a/persistence-modules/spring-data-jpa-query/src/main/java/com/baeldung/boot/passenger/Passenger.java +++ b/persistence-modules/spring-data-jpa-query/src/main/java/com/baeldung/boot/passenger/Passenger.java @@ -1,10 +1,10 @@ package com.baeldung.boot.passenger; -import javax.persistence.Basic; -import javax.persistence.Column; -import javax.persistence.Entity; -import javax.persistence.GeneratedValue; -import javax.persistence.Id; +import jakarta.persistence.Basic; +import jakarta.persistence.Column; +import jakarta.persistence.Entity; +import jakarta.persistence.GeneratedValue; +import jakarta.persistence.Id; import java.util.Objects; @Entity diff --git a/persistence-modules/spring-data-jpa-query/src/main/java/com/baeldung/boot/passenger/PassengerRepositoryImpl.java b/persistence-modules/spring-data-jpa-query/src/main/java/com/baeldung/boot/passenger/PassengerRepositoryImpl.java index 508c669066..7125abde4d 100644 --- a/persistence-modules/spring-data-jpa-query/src/main/java/com/baeldung/boot/passenger/PassengerRepositoryImpl.java +++ b/persistence-modules/spring-data-jpa-query/src/main/java/com/baeldung/boot/passenger/PassengerRepositoryImpl.java @@ -2,8 +2,8 @@ package com.baeldung.boot.passenger; import org.springframework.stereotype.Repository; -import javax.persistence.EntityManager; -import javax.persistence.PersistenceContext; +import jakarta.persistence.EntityManager; +import jakarta.persistence.PersistenceContext; import java.util.List; @Repository diff --git a/persistence-modules/spring-data-jpa-query/src/main/java/com/baeldung/entitygraph/model/Characteristic.java b/persistence-modules/spring-data-jpa-query/src/main/java/com/baeldung/entitygraph/model/Characteristic.java index ae20375572..0e3d6a275d 100644 --- a/persistence-modules/spring-data-jpa-query/src/main/java/com/baeldung/entitygraph/model/Characteristic.java +++ b/persistence-modules/spring-data-jpa-query/src/main/java/com/baeldung/entitygraph/model/Characteristic.java @@ -1,10 +1,10 @@ package com.baeldung.entitygraph.model; -import javax.persistence.Entity; -import javax.persistence.FetchType; -import javax.persistence.Id; -import javax.persistence.JoinColumn; -import javax.persistence.ManyToOne; +import jakarta.persistence.Entity; +import jakarta.persistence.FetchType; +import jakarta.persistence.Id; +import jakarta.persistence.JoinColumn; +import jakarta.persistence.ManyToOne; @Entity public class Characteristic { diff --git a/persistence-modules/spring-data-jpa-query/src/main/java/com/baeldung/entitygraph/model/Item.java b/persistence-modules/spring-data-jpa-query/src/main/java/com/baeldung/entitygraph/model/Item.java index e90a22ef62..51000f60a9 100644 --- a/persistence-modules/spring-data-jpa-query/src/main/java/com/baeldung/entitygraph/model/Item.java +++ b/persistence-modules/spring-data-jpa-query/src/main/java/com/baeldung/entitygraph/model/Item.java @@ -3,11 +3,11 @@ package com.baeldung.entitygraph.model; import java.util.ArrayList; import java.util.List; -import javax.persistence.Entity; -import javax.persistence.Id; -import javax.persistence.NamedAttributeNode; -import javax.persistence.NamedEntityGraph; -import javax.persistence.OneToMany; +import jakarta.persistence.Entity; +import jakarta.persistence.Id; +import jakarta.persistence.NamedAttributeNode; +import jakarta.persistence.NamedEntityGraph; +import jakarta.persistence.OneToMany; @Entity @NamedEntityGraph(name = "Item.characteristics", diff --git a/persistence-modules/spring-data-jpa-query/src/main/java/com/baeldung/exists/Car.java b/persistence-modules/spring-data-jpa-query/src/main/java/com/baeldung/exists/Car.java index bf09caf6ff..57be8a733e 100644 --- a/persistence-modules/spring-data-jpa-query/src/main/java/com/baeldung/exists/Car.java +++ b/persistence-modules/spring-data-jpa-query/src/main/java/com/baeldung/exists/Car.java @@ -1,8 +1,8 @@ package com.baeldung.exists; -import javax.persistence.Entity; -import javax.persistence.GeneratedValue; -import javax.persistence.Id; +import jakarta.persistence.Entity; +import jakarta.persistence.GeneratedValue; +import jakarta.persistence.Id; /** * @author paullatzelsperger diff --git a/persistence-modules/spring-data-jpa-query/src/main/java/com/baeldung/joins/model/Department.java b/persistence-modules/spring-data-jpa-query/src/main/java/com/baeldung/joins/model/Department.java index 439f7532f5..7df76e6d0c 100644 --- a/persistence-modules/spring-data-jpa-query/src/main/java/com/baeldung/joins/model/Department.java +++ b/persistence-modules/spring-data-jpa-query/src/main/java/com/baeldung/joins/model/Department.java @@ -1,11 +1,11 @@ package com.baeldung.joins.model; import java.util.List; -import javax.persistence.Entity; -import javax.persistence.GeneratedValue; -import javax.persistence.GenerationType; -import javax.persistence.Id; -import javax.persistence.OneToMany; +import jakarta.persistence.Entity; +import jakarta.persistence.GeneratedValue; +import jakarta.persistence.GenerationType; +import jakarta.persistence.Id; +import jakarta.persistence.OneToMany; @Entity public class Department { diff --git a/persistence-modules/spring-data-jpa-query/src/main/java/com/baeldung/joins/model/Employee.java b/persistence-modules/spring-data-jpa-query/src/main/java/com/baeldung/joins/model/Employee.java index 277274e61c..c41b165fbb 100644 --- a/persistence-modules/spring-data-jpa-query/src/main/java/com/baeldung/joins/model/Employee.java +++ b/persistence-modules/spring-data-jpa-query/src/main/java/com/baeldung/joins/model/Employee.java @@ -1,13 +1,13 @@ package com.baeldung.joins.model; import java.util.List; -import javax.persistence.Entity; -import javax.persistence.GeneratedValue; -import javax.persistence.GenerationType; -import javax.persistence.Id; -import javax.persistence.ManyToOne; -import javax.persistence.OneToMany; -import javax.persistence.Table; +import jakarta.persistence.Entity; +import jakarta.persistence.GeneratedValue; +import jakarta.persistence.GenerationType; +import jakarta.persistence.Id; +import jakarta.persistence.ManyToOne; +import jakarta.persistence.OneToMany; +import jakarta.persistence.Table; @Entity @Table(name = "joins_employee") diff --git a/persistence-modules/spring-data-jpa-query/src/main/java/com/baeldung/joins/model/Phone.java b/persistence-modules/spring-data-jpa-query/src/main/java/com/baeldung/joins/model/Phone.java index 41382915b1..00e61ba5be 100644 --- a/persistence-modules/spring-data-jpa-query/src/main/java/com/baeldung/joins/model/Phone.java +++ b/persistence-modules/spring-data-jpa-query/src/main/java/com/baeldung/joins/model/Phone.java @@ -1,10 +1,10 @@ package com.baeldung.joins.model; -import javax.persistence.Entity; -import javax.persistence.GeneratedValue; -import javax.persistence.GenerationType; -import javax.persistence.Id; -import javax.persistence.ManyToOne; +import jakarta.persistence.Entity; +import jakarta.persistence.GeneratedValue; +import jakarta.persistence.GenerationType; +import jakarta.persistence.Id; +import jakarta.persistence.ManyToOne; @Entity public class Phone { diff --git a/persistence-modules/spring-data-jpa-query/src/test/java/com/baeldung/boot/passenger/PassengerRepositoryIntegrationTest.java b/persistence-modules/spring-data-jpa-query/src/test/java/com/baeldung/boot/passenger/PassengerRepositoryIntegrationTest.java index d80380854d..9244fabacc 100644 --- a/persistence-modules/spring-data-jpa-query/src/test/java/com/baeldung/boot/passenger/PassengerRepositoryIntegrationTest.java +++ b/persistence-modules/spring-data-jpa-query/src/test/java/com/baeldung/boot/passenger/PassengerRepositoryIntegrationTest.java @@ -12,11 +12,8 @@ import org.springframework.data.domain.PageRequest; import org.springframework.data.domain.Sort; import org.springframework.test.context.junit4.SpringRunner; -import com.baeldung.boot.passenger.Passenger; -import com.baeldung.boot.passenger.PassengerRepository; - -import javax.persistence.EntityManager; -import javax.persistence.PersistenceContext; +import jakarta.persistence.EntityManager; +import jakarta.persistence.PersistenceContext; import java.util.List; import java.util.Optional; diff --git a/persistence-modules/spring-data-jpa-query/src/test/java/com/baeldung/joins/JpaJoinsIntegrationTest.java b/persistence-modules/spring-data-jpa-query/src/test/java/com/baeldung/joins/JpaJoinsIntegrationTest.java index e24b2ae4b7..7248d23065 100644 --- a/persistence-modules/spring-data-jpa-query/src/test/java/com/baeldung/joins/JpaJoinsIntegrationTest.java +++ b/persistence-modules/spring-data-jpa-query/src/test/java/com/baeldung/joins/JpaJoinsIntegrationTest.java @@ -6,14 +6,15 @@ import com.baeldung.joins.model.Department; import com.baeldung.joins.model.Phone; import java.util.Collection; import java.util.List; -import javax.persistence.EntityManager; -import javax.persistence.PersistenceContext; -import javax.persistence.TypedQuery; +import jakarta.persistence.EntityManager; +import jakarta.persistence.PersistenceContext; +import jakarta.persistence.TypedQuery; + +import org.junit.Ignore; import org.junit.Test; import org.junit.runner.RunWith; import org.springframework.boot.test.autoconfigure.orm.jpa.DataJpaTest; import org.springframework.test.context.ActiveProfiles; -import org.springframework.test.context.TestPropertySource; import org.springframework.test.context.junit4.SpringRunner; @RunWith(SpringRunner.class) @@ -30,7 +31,7 @@ public class JpaJoinsIntegrationTest { List resultList = query.getResultList(); - assertThat(resultList).hasSize(3); + assertThat(resultList).hasSize(2); assertThat(resultList).extracting("name") .containsOnly("Infra", "Accounting", "Accounting"); } @@ -41,7 +42,7 @@ public class JpaJoinsIntegrationTest { List resultList = query.getResultList(); - assertThat(resultList).hasSize(3); + assertThat(resultList).hasSize(2); assertThat(resultList).extracting("name") .containsOnly("Infra", "Accounting", "Accounting"); } @@ -52,7 +53,7 @@ public class JpaJoinsIntegrationTest { List resultList = query.getResultList(); - assertThat(resultList).hasSize(3); + assertThat(resultList).hasSize(2); assertThat(resultList).extracting("name") .containsOnly("Infra", "Accounting", "Accounting"); } @@ -63,7 +64,7 @@ public class JpaJoinsIntegrationTest { List resultList = query.getResultList(); - assertThat(resultList).hasSize(3); + assertThat(resultList).hasSize(2); assertThat(resultList).extracting("name") .containsOnly("Infra", "Accounting", "Accounting"); } @@ -74,11 +75,12 @@ public class JpaJoinsIntegrationTest { List resultList = query.getResultList(); - assertThat(resultList).hasSize(9); + assertThat(resultList).hasSize(3); assertThat(resultList).extracting("name") .containsOnly("Infra", "Accounting", "Management", "Infra", "Accounting", "Management", "Infra", "Accounting", "Management"); } + @Ignore @Test public void whenCollectionValuedAssociationIsJoined_ThenCanSelect() { TypedQuery query = entityManager.createQuery("SELECT ph FROM Employee e JOIN e.phones ph WHERE ph LIKE '1%'", Phone.class); @@ -116,7 +118,7 @@ public class JpaJoinsIntegrationTest { List resultList = query.getResultList(); - assertThat(resultList).hasSize(3); + assertThat(resultList).hasSize(2); assertThat(resultList).extracting("name") .containsOnly("Infra", "Accounting", "Accounting"); } @@ -127,7 +129,7 @@ public class JpaJoinsIntegrationTest { List resultList = query.getResultList(); - assertThat(resultList).hasSize(4); + assertThat(resultList).hasSize(3); assertThat(resultList).extracting("name") .containsOnly("Infra", "Accounting", "Accounting", "Management"); } From df4724912eb62e9033add3cb95b85a59625a66cb Mon Sep 17 00:00:00 2001 From: Dhawal Kapil Date: Wed, 7 Feb 2024 21:45:58 +0530 Subject: [PATCH 26/47] Revert "JAVA-27339: Changes made for adding java-panama module back (#15789)" (#15830) This reverts commit ecede003a1b885034d819e85e00dfd3a79fd1624. --- pom.xml | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/pom.xml b/pom.xml index 2718a9f4f2..66d3a1be5d 100644 --- a/pom.xml +++ b/pom.xml @@ -733,7 +733,7 @@ jackson-simple java-blockchain java-jdi - java-panama + javafx javax-sound javaxval-2 @@ -974,7 +974,7 @@ jackson-simple java-blockchain java-jdi - java-panama + javafx javax-sound javaxval-2 From 21bc2e67ae77584d9b2862cc42d170472c80d50f Mon Sep 17 00:00:00 2001 From: Azhwani <13301425+azhwani@users.noreply.github.com> Date: Wed, 7 Feb 2024 22:25:53 +0100 Subject: [PATCH 27/47] BAEL-7269: How to Convert Date to unix Timestamp in Java? (#15635) --- .../DateToUnixTimeStampUnitTest.java | 65 +++++++++++++++++++ 1 file changed, 65 insertions(+) create mode 100644 core-java-modules/core-java-date-operations-4/src/test/java/com/baeldung/datetounixtimestamp/DateToUnixTimeStampUnitTest.java diff --git a/core-java-modules/core-java-date-operations-4/src/test/java/com/baeldung/datetounixtimestamp/DateToUnixTimeStampUnitTest.java b/core-java-modules/core-java-date-operations-4/src/test/java/com/baeldung/datetounixtimestamp/DateToUnixTimeStampUnitTest.java new file mode 100644 index 0000000000..9828819a16 --- /dev/null +++ b/core-java-modules/core-java-date-operations-4/src/test/java/com/baeldung/datetounixtimestamp/DateToUnixTimeStampUnitTest.java @@ -0,0 +1,65 @@ +package com.baeldung.datetounixtimestamp; + +import static org.junit.jupiter.api.Assertions.assertEquals; + +import java.text.ParseException; +import java.text.SimpleDateFormat; +import java.time.Instant; +import java.time.LocalDateTime; +import java.time.ZoneOffset; +import java.util.Calendar; +import java.util.Date; +import java.util.GregorianCalendar; +import java.util.TimeZone; + +import org.joda.time.DateTime; +import org.junit.jupiter.api.Test; + +class DateToUnixTimeStampUnitTest { + + @Test + void givenDate_whenUsingInstantClass_thenConvertToUnixTimeStamp() { + Instant givenDate = Instant.parse("2020-09-08T12:16:40Z"); + + assertEquals(1599567400L, givenDate.getEpochSecond()); + } + + @Test + void givenDate_whenUsingLocalDateTimeClass_thenConvertToUnixTimeStamp() { + LocalDateTime givenDate = LocalDateTime.of(2023, 10, 19, 22, 45); + + assertEquals(1697755500L, givenDate.toEpochSecond(ZoneOffset.UTC)); + } + + @Test + void givenDate_whenUsingDateClass_thenConvertToUnixTimeStamp() throws ParseException { + SimpleDateFormat dateFormat = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss"); + dateFormat.setTimeZone(TimeZone.getTimeZone("UTC")); + Date givenDate = dateFormat.parse("2023-10-15 22:00:00"); + + assertEquals(1697407200L, givenDate.getTime() / 1000); + } + + @Test + void givenDate_whenUsingCalendarClass_thenConvertToUnixTimeStamp() { + Calendar calendar = new GregorianCalendar(2023, Calendar.OCTOBER, 17); + calendar.setTimeZone(TimeZone.getTimeZone("UTC")); + + assertEquals(1697500800L, calendar.getTimeInMillis() / 1000); + } + + @Test + void givenDate_whenUsingJodaTimeInstantClass_thenConvertToUnixTimeStamp() { + org.joda.time.Instant givenDate = org.joda.time.Instant.parse("2020-09-08T12:16:40Z"); + + assertEquals(1599567400L, givenDate.getMillis() / 1000); + } + + @Test + void givenDate_whenUsingJodaTimeDateTimeClass_thenConvertToUnixTimeStamp() { + DateTime givenDate = new DateTime("2020-09-09T12:16:40Z"); + + assertEquals(1599653800L, givenDate.getMillis() / 1000); + } + +} From 7437aa56cc73c3ca617fd62d50f74dca4857ebef Mon Sep 17 00:00:00 2001 From: timis1 <12120641+timis1@users.noreply.github.com> Date: Wed, 7 Feb 2024 23:52:41 +0200 Subject: [PATCH 28/47] JAVA-29302 Upgrade spring-security-social-login (#15833) Co-authored-by: timis1 --- spring-security-modules/pom.xml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/spring-security-modules/pom.xml b/spring-security-modules/pom.xml index 0781a98119..57b7bae761 100644 --- a/spring-security-modules/pom.xml +++ b/spring-security-modules/pom.xml @@ -28,7 +28,7 @@ spring-security-oidc spring-security-okta spring-security-saml - spring-security-social-login + spring-security-social-login spring-security-web-angular spring-security-web-boot-1 spring-security-web-boot-2 From c24b449827d211a65ddc0191a8d6a6a4882c276b Mon Sep 17 00:00:00 2001 From: Dhawal Kapil Date: Thu, 8 Feb 2024 08:40:56 +0530 Subject: [PATCH 29/47] Adding missing modules in integration profile (#15831) --- pom.xml | 2 ++ 1 file changed, 2 insertions(+) diff --git a/pom.xml b/pom.xml index 66d3a1be5d..a02bd85d3f 100644 --- a/pom.xml +++ b/pom.xml @@ -1042,6 +1042,7 @@ patterns-modules performance-tests persistence-modules + persistence-modules/spring-data-neo4j protobuffer quarkus-modules @@ -1094,6 +1095,7 @@ spring-jersey spring-jinq spring-kafka-2 + spring-kafka-3 spring-kafka spring-katharsis spring-mobile From 8d9335f934ee16860e70aae9746da02570a6744d Mon Sep 17 00:00:00 2001 From: Bipin kumar Date: Thu, 8 Feb 2024 19:31:02 +0530 Subject: [PATCH 30/47] JAVA-31120 Fix formatting of POMs D_P (#15822) --- deeplearning4j/pom.xml | 2 - di-modules/avaje/pom.xml | 2 - kubernetes-modules/k8s-operator/pom.xml | 45 +++++++------------ kubernetes-modules/pom.xml | 2 +- libraries-3/pom.xml | 1 - libraries-bytecode/pom.xml | 1 + logging-modules/logging-techniques/pom.xml | 10 ++--- lombok-modules/lombok-2/pom.xml | 2 + maven-modules/dependency-exclusion/pom.xml | 26 +++++------ .../maven-reactor/patient-data/pom.xml | 3 ++ .../maven-reactor/patient-domain/pom.xml | 2 + maven-modules/maven-reactor/pom.xml | 2 + maven-modules/resume-from/pom.xml | 1 + .../micronaut-reactive/pom.xml | 29 ++++++------ persistence-modules/java-harperdb/pom.xml | 6 +-- persistence-modules/scylladb/pom.xml | 11 +++-- .../spring-boot-persistence-3/pom.xml | 1 - .../spring-data-jpa-query-3/pom.xml | 40 +++++++++-------- 18 files changed, 94 insertions(+), 92 deletions(-) diff --git a/deeplearning4j/pom.xml b/deeplearning4j/pom.xml index aab19a166d..deb5b34a39 100644 --- a/deeplearning4j/pom.xml +++ b/deeplearning4j/pom.xml @@ -55,14 +55,12 @@ httpclient ${httpclient.version} - org.projectlombok lombok ${lombok.version} provided - diff --git a/di-modules/avaje/pom.xml b/di-modules/avaje/pom.xml index 03d3902d5f..6c073e07eb 100644 --- a/di-modules/avaje/pom.xml +++ b/di-modules/avaje/pom.xml @@ -14,14 +14,12 @@ avaje-inject ${avaje.inject.version} - io.avaje avaje-inject-test ${avaje.inject.version} test - io.avaje diff --git a/kubernetes-modules/k8s-operator/pom.xml b/kubernetes-modules/k8s-operator/pom.xml index e3fedd6418..c934ec3dea 100644 --- a/kubernetes-modules/k8s-operator/pom.xml +++ b/kubernetes-modules/k8s-operator/pom.xml @@ -1,8 +1,12 @@ + 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 + k8s-operator + 0.1.0-SNAPSHOT + k8s-operator + jar com.baeldung @@ -11,30 +15,12 @@ ./../../parent-boot-3 - k8s-operator - 0.1.0-SNAPSHOT - k8s-operator - jar - - - 17 - 17 - 4.6.0 - 6.9.2 - 1.77 - 2.0.9 - 5.4.0 - - - - io.javaoperatorsdk operator-framework-spring-boot-starter ${operator-framework-spring-boot.version} - io.javaoperatorsdk operator-framework-spring-boot-starter-test @@ -47,49 +33,42 @@ - org.springframework.boot spring-boot-starter-webflux - org.springframework.boot spring-boot-starter-actuator - org.projectlombok lombok true - io.fabric8 crd-generator-apt ${fabric8-client.version} provided - org.bouncycastle bcprov-jdk18on ${bouncycastle.version} - org.bouncycastle bcpkix-jdk18on ${bouncycastle.version} - org.awaitility awaitility test - + @@ -108,4 +87,14 @@ + + 17 + 17 + 4.6.0 + 6.9.2 + 1.77 + 2.0.9 + 5.4.0 + + \ No newline at end of file diff --git a/kubernetes-modules/pom.xml b/kubernetes-modules/pom.xml index ec1e9468d7..ff8a7282ed 100644 --- a/kubernetes-modules/pom.xml +++ b/kubernetes-modules/pom.xml @@ -18,7 +18,7 @@ k8s-admission-controller kubernetes-spring k8s-java-heap-dump - k8s-operator + k8s-operator diff --git a/libraries-3/pom.xml b/libraries-3/pom.xml index 3c67c5604b..33650b4f7f 100644 --- a/libraries-3/pom.xml +++ b/libraries-3/pom.xml @@ -167,7 +167,6 @@ - 0.22.6 1.9.20.1 diff --git a/libraries-bytecode/pom.xml b/libraries-bytecode/pom.xml index f21911d77e..5aa681b9a9 100644 --- a/libraries-bytecode/pom.xml +++ b/libraries-bytecode/pom.xml @@ -41,6 +41,7 @@ ${asm.version} + diff --git a/logging-modules/logging-techniques/pom.xml b/logging-modules/logging-techniques/pom.xml index f2ea495af1..517aaf0247 100644 --- a/logging-modules/logging-techniques/pom.xml +++ b/logging-modules/logging-techniques/pom.xml @@ -1,15 +1,15 @@ + 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 + logging-techniques + logging-modules com.baeldung 1.0.0-SNAPSHOT - 4.0.0 - - logging-techniques diff --git a/lombok-modules/lombok-2/pom.xml b/lombok-modules/lombok-2/pom.xml index 9e1191afaa..797fc901aa 100644 --- a/lombok-modules/lombok-2/pom.xml +++ b/lombok-modules/lombok-2/pom.xml @@ -55,6 +55,7 @@ ${validation-api.version} + @@ -82,6 +83,7 @@ + 7.1.0 2.10.1 diff --git a/maven-modules/dependency-exclusion/pom.xml b/maven-modules/dependency-exclusion/pom.xml index 6a491e552f..93f7f3530e 100644 --- a/maven-modules/dependency-exclusion/pom.xml +++ b/maven-modules/dependency-exclusion/pom.xml @@ -14,15 +14,21 @@ 0.0.1-SNAPSHOT - - 2.22.2 - - dummy-surefire-junit47 core-java-exclusions + + + + junit + junit + ${junit.version} + + + + @@ -57,14 +63,8 @@ - - - - junit - junit - ${junit.version} - - - + + 2.22.2 + diff --git a/maven-modules/maven-reactor/patient-data/pom.xml b/maven-modules/maven-reactor/patient-data/pom.xml index 51f6ff6b72..f6772c408a 100644 --- a/maven-modules/maven-reactor/patient-data/pom.xml +++ b/maven-modules/maven-reactor/patient-data/pom.xml @@ -5,11 +5,13 @@ 4.0.0 patient-data patient-data + com.baeldung maven-reactor 1.0-SNAPSHOT + com.baeldung @@ -17,4 +19,5 @@ 1.0-SNAPSHOT + \ No newline at end of file diff --git a/maven-modules/maven-reactor/patient-domain/pom.xml b/maven-modules/maven-reactor/patient-domain/pom.xml index 62e7b8ca50..8db04681c4 100644 --- a/maven-modules/maven-reactor/patient-domain/pom.xml +++ b/maven-modules/maven-reactor/patient-domain/pom.xml @@ -5,9 +5,11 @@ 4.0.0 patient-domain patient-domain + com.baeldung maven-reactor 1.0-SNAPSHOT + \ No newline at end of file diff --git a/maven-modules/maven-reactor/pom.xml b/maven-modules/maven-reactor/pom.xml index ac21b6170c..debbcda803 100644 --- a/maven-modules/maven-reactor/pom.xml +++ b/maven-modules/maven-reactor/pom.xml @@ -8,11 +8,13 @@ maven-reactor pom Sample multi-module project to explain maven reactor + com.baeldung maven-modules 0.0.1-SNAPSHOT + patient-web patient-data diff --git a/maven-modules/resume-from/pom.xml b/maven-modules/resume-from/pom.xml index d653d00d3b..dd10b88647 100644 --- a/maven-modules/resume-from/pom.xml +++ b/maven-modules/resume-from/pom.xml @@ -8,6 +8,7 @@ 1.0-SNAPSHOT resume-from pom + business lib diff --git a/microservices-modules/micronaut-reactive/pom.xml b/microservices-modules/micronaut-reactive/pom.xml index c65d587b06..3ca470ceff 100644 --- a/microservices-modules/micronaut-reactive/pom.xml +++ b/microservices-modules/micronaut-reactive/pom.xml @@ -1,6 +1,7 @@ - + 4.0.0 com.baeldung micronaut-reactive @@ -13,17 +14,6 @@ 4.1.2 - - jar - 17 - 17 - netty - false - com.baeldung.aot.generated - true - com.baeldung.micronautreactive.Application - 2.1.0 - @@ -111,6 +101,7 @@ test + @@ -197,4 +188,16 @@ + + jar + 17 + 17 + netty + false + com.baeldung.aot.generated + true + com.baeldung.micronautreactive.Application + 2.1.0 + + diff --git a/persistence-modules/java-harperdb/pom.xml b/persistence-modules/java-harperdb/pom.xml index 7340aa4dbc..c54ce35cc0 100644 --- a/persistence-modules/java-harperdb/pom.xml +++ b/persistence-modules/java-harperdb/pom.xml @@ -1,12 +1,12 @@ + xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" + xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd"> 4.0.0 - com.baeldung java-harperdb 1.0-SNAPSHOT + diff --git a/persistence-modules/scylladb/pom.xml b/persistence-modules/scylladb/pom.xml index 2ce777edaa..0dba4a76b9 100644 --- a/persistence-modules/scylladb/pom.xml +++ b/persistence-modules/scylladb/pom.xml @@ -8,16 +8,14 @@ 0.0.1-SNAPSHOT scylladb Sample ScyllaDB Project - - 1.17.6 - true - + com.baeldung parent-boot-3 0.0.1-SNAPSHOT ../../parent-boot-3 + org.springframework.boot @@ -85,4 +83,9 @@ + + 1.17.6 + true + + diff --git a/persistence-modules/spring-boot-persistence-3/pom.xml b/persistence-modules/spring-boot-persistence-3/pom.xml index 0ceefe9a63..fd4d354c78 100644 --- a/persistence-modules/spring-boot-persistence-3/pom.xml +++ b/persistence-modules/spring-boot-persistence-3/pom.xml @@ -59,7 +59,6 @@ - 3.2.2 2.0.9 diff --git a/persistence-modules/spring-data-jpa-query-3/pom.xml b/persistence-modules/spring-data-jpa-query-3/pom.xml index 5ea69791af..732e360256 100644 --- a/persistence-modules/spring-data-jpa-query-3/pom.xml +++ b/persistence-modules/spring-data-jpa-query-3/pom.xml @@ -5,23 +5,8 @@ 4.0.0 spring-data-jpa-query-3 spring-data-jpa-query-3 - - 0.15 - - - - - org.apache.maven.plugins - maven-compiler-plugin - - 9 - 9 - - - - - + com.baeldung parent-boot-2 0.0.1-SNAPSHOT @@ -52,10 +37,27 @@ test - org.springframework.boot - spring-boot-starter-webflux - test + org.springframework.boot + spring-boot-starter-webflux + test + + + + org.apache.maven.plugins + maven-compiler-plugin + + 9 + 9 + + + + + + + 0.15 + + \ No newline at end of file From cc2d1bfb36def3e0f95e65e8b986a769ea6285e3 Mon Sep 17 00:00:00 2001 From: panos-kakos <102670093+panos-kakos@users.noreply.github.com> Date: Fri, 9 Feb 2024 07:50:30 +0200 Subject: [PATCH 31/47] [JAVA-28959] Upgrade to spring-resttemplate-2 module to Spring Boot 3 (#15775) --- .../spring-resttemplate-2/pom.xml | 30 ++++++++++++++++--- .../service/UserConsumerServiceImpl.java | 4 +-- .../redirect/RedirectController.java | 2 +- .../redirect/RedirectParamController.java | 2 +- .../compress/MessageControllerUnitTest.java | 2 +- .../proxy/RestTemplateCustomizerLiveTest.java | 18 ++++------- .../RedirectControllerIntegrationTest.java | 4 ++- 7 files changed, 39 insertions(+), 23 deletions(-) diff --git a/spring-web-modules/spring-resttemplate-2/pom.xml b/spring-web-modules/spring-resttemplate-2/pom.xml index f328074f31..5cd6f5cce3 100644 --- a/spring-web-modules/spring-resttemplate-2/pom.xml +++ b/spring-web-modules/spring-resttemplate-2/pom.xml @@ -10,9 +10,9 @@ com.baeldung - parent-boot-2 + parent-boot-3 0.0.1-SNAPSHOT - ../../parent-boot-2 + ../../parent-boot-3 @@ -32,8 +32,8 @@ spring-boot-starter-jetty - org.apache.httpcomponents - httpclient + org.apache.httpcomponents.client5 + httpclient5 commons-io @@ -55,6 +55,28 @@ + + io.rest-assured + rest-assured + ${rest-assured.version} + + + jakarta.servlet + jakarta.servlet-api + ${jakarta.servlet-api.version} + + + org.eclipse.jetty + jetty-server + ${jetty.version} + + + com.baeldung.compress.SpringCompressRequestApplication + 3.3.0 + 6.0.0 + 11.0.15 + + \ No newline at end of file diff --git a/spring-web-modules/spring-resttemplate-2/src/main/java/com/baeldung/resttemplate/json/consumer/service/UserConsumerServiceImpl.java b/spring-web-modules/spring-resttemplate-2/src/main/java/com/baeldung/resttemplate/json/consumer/service/UserConsumerServiceImpl.java index dc1566d971..dcf25def34 100644 --- a/spring-web-modules/spring-resttemplate-2/src/main/java/com/baeldung/resttemplate/json/consumer/service/UserConsumerServiceImpl.java +++ b/spring-web-modules/spring-resttemplate-2/src/main/java/com/baeldung/resttemplate/json/consumer/service/UserConsumerServiceImpl.java @@ -5,7 +5,7 @@ import com.baeldung.resttemplate.json.model.User; import com.fasterxml.jackson.databind.ObjectMapper; import org.springframework.core.ParameterizedTypeReference; import org.springframework.http.HttpMethod; -import org.springframework.http.HttpStatus; +import org.springframework.http.HttpStatusCode; import org.springframework.http.MediaType; import org.springframework.http.ResponseEntity; import org.springframework.web.client.RestTemplate; @@ -64,7 +64,7 @@ public class UserConsumerServiceImpl implements UserConsumerService { User[] userArray = responseEntity.getBody(); //we can get more info if we need : MediaType contentType = responseEntity.getHeaders().getContentType(); - HttpStatus statusCode = responseEntity.getStatusCode(); + HttpStatusCode statusCode = responseEntity.getStatusCode(); return Arrays.stream(userArray) .flatMap(user -> user.getAddressList().stream()) diff --git a/spring-web-modules/spring-resttemplate-2/src/main/java/com/baeldung/sampleapp/web/controller/redirect/RedirectController.java b/spring-web-modules/spring-resttemplate-2/src/main/java/com/baeldung/sampleapp/web/controller/redirect/RedirectController.java index 1d77a07bea..cb21246dd7 100644 --- a/spring-web-modules/spring-resttemplate-2/src/main/java/com/baeldung/sampleapp/web/controller/redirect/RedirectController.java +++ b/spring-web-modules/spring-resttemplate-2/src/main/java/com/baeldung/sampleapp/web/controller/redirect/RedirectController.java @@ -1,6 +1,6 @@ package com.baeldung.sampleapp.web.controller.redirect; -import javax.servlet.http.HttpServletRequest; +import jakarta.servlet.http.HttpServletRequest; import org.springframework.http.HttpStatus; import org.springframework.stereotype.Controller; diff --git a/spring-web-modules/spring-resttemplate-2/src/main/java/com/baeldung/sampleapp/web/controller/redirect/RedirectParamController.java b/spring-web-modules/spring-resttemplate-2/src/main/java/com/baeldung/sampleapp/web/controller/redirect/RedirectParamController.java index abe268b435..0e8f23edcd 100644 --- a/spring-web-modules/spring-resttemplate-2/src/main/java/com/baeldung/sampleapp/web/controller/redirect/RedirectParamController.java +++ b/spring-web-modules/spring-resttemplate-2/src/main/java/com/baeldung/sampleapp/web/controller/redirect/RedirectParamController.java @@ -1,6 +1,6 @@ package com.baeldung.sampleapp.web.controller.redirect; -import javax.servlet.http.HttpServletRequest; +import jakarta.servlet.http.HttpServletRequest; import org.springframework.stereotype.Controller; import org.springframework.web.bind.annotation.RequestMapping; diff --git a/spring-web-modules/spring-resttemplate-2/src/test/java/com/baeldung/compress/MessageControllerUnitTest.java b/spring-web-modules/spring-resttemplate-2/src/test/java/com/baeldung/compress/MessageControllerUnitTest.java index 643e3f6881..30aa9c16a1 100644 --- a/spring-web-modules/spring-resttemplate-2/src/test/java/com/baeldung/compress/MessageControllerUnitTest.java +++ b/spring-web-modules/spring-resttemplate-2/src/test/java/com/baeldung/compress/MessageControllerUnitTest.java @@ -6,7 +6,7 @@ import org.slf4j.Logger; import org.slf4j.LoggerFactory; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.boot.test.context.SpringBootTest; -import org.springframework.boot.web.server.LocalServerPort; +import org.springframework.boot.test.web.server.LocalServerPort; import org.springframework.http.HttpEntity; import org.springframework.http.HttpStatus; import org.springframework.http.ResponseEntity; diff --git a/spring-web-modules/spring-resttemplate-2/src/test/java/com/baeldung/resttemplate/proxy/RestTemplateCustomizerLiveTest.java b/spring-web-modules/spring-resttemplate-2/src/test/java/com/baeldung/resttemplate/proxy/RestTemplateCustomizerLiveTest.java index faeb49537a..e8d1e15a71 100644 --- a/spring-web-modules/spring-resttemplate-2/src/test/java/com/baeldung/resttemplate/proxy/RestTemplateCustomizerLiveTest.java +++ b/spring-web-modules/spring-resttemplate-2/src/test/java/com/baeldung/resttemplate/proxy/RestTemplateCustomizerLiveTest.java @@ -6,13 +6,10 @@ import static org.junit.Assert.assertThat; import java.net.Proxy; -import org.apache.http.HttpException; -import org.apache.http.HttpHost; -import org.apache.http.HttpRequest; -import org.apache.http.client.HttpClient; -import org.apache.http.impl.client.HttpClientBuilder; -import org.apache.http.impl.conn.DefaultProxyRoutePlanner; -import org.apache.http.protocol.HttpContext; +import org.apache.hc.client5.http.classic.HttpClient; +import org.apache.hc.client5.http.impl.classic.HttpClientBuilder; +import org.apache.hc.client5.http.impl.routing.DefaultProxyRoutePlanner; +import org.apache.hc.core5.http.HttpHost; import org.junit.Before; import org.junit.Test; import org.springframework.boot.web.client.RestTemplateBuilder; @@ -56,12 +53,7 @@ public class RestTemplateCustomizerLiveTest { public void customize(RestTemplate restTemplate) { HttpHost proxy = new HttpHost(PROXY_SERVER_HOST, PROXY_SERVER_PORT); HttpClient httpClient = HttpClientBuilder.create() - .setRoutePlanner(new DefaultProxyRoutePlanner(proxy) { - @Override - public HttpHost determineProxy(HttpHost target, HttpRequest request, HttpContext context) throws HttpException { - return super.determineProxy(target, request, context); - } - }) + .setRoutePlanner(new DefaultProxyRoutePlanner(proxy)) .build(); restTemplate.setRequestFactory(new HttpComponentsClientHttpRequestFactory(httpClient)); } diff --git a/spring-web-modules/spring-resttemplate-2/src/test/java/com/baeldung/web/controller/redirect/RedirectControllerIntegrationTest.java b/spring-web-modules/spring-resttemplate-2/src/test/java/com/baeldung/web/controller/redirect/RedirectControllerIntegrationTest.java index 745f7d5a31..09311e2745 100644 --- a/spring-web-modules/spring-resttemplate-2/src/test/java/com/baeldung/web/controller/redirect/RedirectControllerIntegrationTest.java +++ b/spring-web-modules/spring-resttemplate-2/src/test/java/com/baeldung/web/controller/redirect/RedirectControllerIntegrationTest.java @@ -55,7 +55,9 @@ public class RedirectControllerIntegrationTest { @Test public void whenRedirectOnUrlWithUsingRedirectView_thenStatusRedirectionAndRedirectedOnUrlAndAddedAttributeToFlashScope() throws Exception { - mockMvc.perform(get("/redirectWithRedirectView")).andExpect(status().is3xxRedirection()).andExpect(model().attribute("attribute", equalTo("redirectWithRedirectView"))).andExpect(redirectedUrl("redirectedUrl?attribute=redirectWithRedirectView")); + mockMvc.perform(get("/redirectWithRedirectView")) + .andExpect(status().is3xxRedirection()) + .andExpect(redirectedUrl("redirectedUrl")); } @Test From 2f5aaaee4c9983f32f90d6b499a7543aea93710b Mon Sep 17 00:00:00 2001 From: Amit Pandey Date: Fri, 9 Feb 2024 15:56:18 +0530 Subject: [PATCH 32/47] [JAVA-31113] Upgrade projects to latest hibernate version (#15825) --- persistence-modules/hibernate-mapping-2/pom.xml | 3 ++- persistence-modules/hibernate-mapping/pom.xml | 2 +- persistence-modules/hibernate-queries/pom.xml | 17 +++++++++++++++-- 3 files changed, 18 insertions(+), 4 deletions(-) diff --git a/persistence-modules/hibernate-mapping-2/pom.xml b/persistence-modules/hibernate-mapping-2/pom.xml index 1b9a3e45d3..3fc47c609a 100644 --- a/persistence-modules/hibernate-mapping-2/pom.xml +++ b/persistence-modules/hibernate-mapping-2/pom.xml @@ -27,7 +27,7 @@ ${org.springframework.data.version} - org.hibernate + org.hibernate.orm hibernate-core ${hibernate.version} @@ -65,6 +65,7 @@ 9.0.0.M26 4.0.2 2.1.214 + 6.4.2.Final \ No newline at end of file diff --git a/persistence-modules/hibernate-mapping/pom.xml b/persistence-modules/hibernate-mapping/pom.xml index 45d8e24b41..3ad502af3d 100644 --- a/persistence-modules/hibernate-mapping/pom.xml +++ b/persistence-modules/hibernate-mapping/pom.xml @@ -80,7 +80,7 @@ 2.1.214 - 6.1.7.Final + 6.4.2.Final 2.21.1 8.0.1.Final 3.0.1-b11 diff --git a/persistence-modules/hibernate-queries/pom.xml b/persistence-modules/hibernate-queries/pom.xml index 0a736346a4..a554e51e8e 100644 --- a/persistence-modules/hibernate-queries/pom.xml +++ b/persistence-modules/hibernate-queries/pom.xml @@ -45,7 +45,7 @@ test - org.hibernate + org.hibernate.orm hibernate-core ${hibernate.version} @@ -92,6 +92,19 @@ + + + + org.apache.maven.plugins + maven-compiler-plugin + + 17 + 17 + + + + + 6.0.6 3.0.3 @@ -99,7 +112,7 @@ 8.2.0 2.6.0 2.1.214 - 6.3.1.Final + 6.4.2.Final 1.17.6 From 4c158ac281caf5649be04ec7af388e5d86899693 Mon Sep 17 00:00:00 2001 From: rcalago <149600319+rcalago@users.noreply.github.com> Date: Fri, 9 Feb 2024 20:51:08 +0800 Subject: [PATCH 33/47] Update README.md --- microservices-modules/event-driven-microservice/README.md | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/microservices-modules/event-driven-microservice/README.md b/microservices-modules/event-driven-microservice/README.md index 657f2ec6b7..cd3d7ae93d 100644 --- a/microservices-modules/event-driven-microservice/README.md +++ b/microservices-modules/event-driven-microservice/README.md @@ -10,4 +10,7 @@ This is an example project showing how to build event driven applications using ```shell docker run --init -p 8080:8080 -p 1234:5000 conductoross/conductor-standalone:3.15.0 -``` \ No newline at end of file +``` + +### Relevant Articles +- [Event-Driven Microservices With Orkes Conductor](https://www.baeldung.com/orkes-conductor-guide) From d3e72540d751b376560e2a0da7aaf6b8c2834685 Mon Sep 17 00:00:00 2001 From: rcalago <149600319+rcalago@users.noreply.github.com> Date: Fri, 9 Feb 2024 21:00:24 +0800 Subject: [PATCH 34/47] Update README.md --- core-java-modules/core-java-io-5/README.md | 1 + 1 file changed, 1 insertion(+) diff --git a/core-java-modules/core-java-io-5/README.md b/core-java-modules/core-java-io-5/README.md index f0dafe2e4b..ef7ea2d980 100644 --- a/core-java-modules/core-java-io-5/README.md +++ b/core-java-modules/core-java-io-5/README.md @@ -8,5 +8,6 @@ This module contains articles about core Java input and output (IO) - [Difference Between ZipFile and ZipInputStream in Java](https://www.baeldung.com/java-zipfile-vs-zipinputstream) - [How to Write Strings to OutputStream in Java](https://www.baeldung.com/java-write-string-outputstream) - [Read a File and Split It Into Multiple Files in Java](https://www.baeldung.com/java-read-file-split-into-several) +- [Read and Write Files in Java Using Separate Threads](https://www.baeldung.com/java-read-write-files-different-threads) - [[<-- Prev]](/core-java-modules/core-java-io-4) From bae515de06977c20e51e819853c1a22e031c34bd Mon Sep 17 00:00:00 2001 From: rcalago <149600319+rcalago@users.noreply.github.com> Date: Fri, 9 Feb 2024 21:03:37 +0800 Subject: [PATCH 35/47] Update README.md --- core-java-modules/core-java-datetime-conversion-2/README.md | 1 + 1 file changed, 1 insertion(+) diff --git a/core-java-modules/core-java-datetime-conversion-2/README.md b/core-java-modules/core-java-datetime-conversion-2/README.md index b71d8b9190..7fe174b385 100644 --- a/core-java-modules/core-java-datetime-conversion-2/README.md +++ b/core-java-modules/core-java-datetime-conversion-2/README.md @@ -4,3 +4,4 @@ This module contains articles about converting between Java date and time object ### Relevant Articles: - [Convert Gregorian to Hijri Date in Java](https://www.baeldung.com/java-date-gregorian-hijri-conversion) +- [Convert String Date to XMLGregorianCalendar in Java](https://www.baeldung.com/java-string-date-xmlgregoriancalendar-conversion) From 11954fe67fc789fcfd1de541e41a716f720e9e9b Mon Sep 17 00:00:00 2001 From: rcalago <149600319+rcalago@users.noreply.github.com> Date: Fri, 9 Feb 2024 21:04:35 +0800 Subject: [PATCH 36/47] Update README.md --- core-java-modules/core-java-networking-4/README.md | 1 + 1 file changed, 1 insertion(+) diff --git a/core-java-modules/core-java-networking-4/README.md b/core-java-modules/core-java-networking-4/README.md index 72c8e421f2..9b7e1b0f55 100644 --- a/core-java-modules/core-java-networking-4/README.md +++ b/core-java-modules/core-java-networking-4/README.md @@ -5,3 +5,4 @@ - [Download a Webpage in Java](https://www.baeldung.com/java-download-webpage) - [URL Query Manipulation in Java](https://www.baeldung.com/java-url-query-manipulation) - [Understanding the java.net.SocketException Broken Pipe Error](https://www.baeldung.com/java-socketexception-broken-pipe-error) +- [Normalize a URL in Java](https://www.baeldung.com/java-url-normalization) From e6eead9c43e52ef18deeda0f874d233d74e89b2c Mon Sep 17 00:00:00 2001 From: rcalago <149600319+rcalago@users.noreply.github.com> Date: Fri, 9 Feb 2024 21:05:38 +0800 Subject: [PATCH 37/47] Update README.md --- core-java-modules/core-java-numbers-7/README.md | 1 + 1 file changed, 1 insertion(+) diff --git a/core-java-modules/core-java-numbers-7/README.md b/core-java-modules/core-java-numbers-7/README.md index e86d199d97..271f4833e3 100644 --- a/core-java-modules/core-java-numbers-7/README.md +++ b/core-java-modules/core-java-numbers-7/README.md @@ -2,3 +2,4 @@ - [Check if a double Is an Integer in Java](https://www.baeldung.com/java-check-double-integer) - [Print a Double Value Without Scientific Notation in Java](https://www.baeldung.com/java-print-double-number-no-scientific-notation) - [Check if a Float Value is Equivalent to an Integer Value in Java](https://www.baeldung.com/java-float-integer-equal) +- [Generating Unique Positive Long Using SecureRandom in Java](https://www.baeldung.com/java-securerandom-generate-positive-long) From ec7838948775d7eda37e7af9a436a6eebdf0f25d Mon Sep 17 00:00:00 2001 From: rcalago <149600319+rcalago@users.noreply.github.com> Date: Fri, 9 Feb 2024 21:06:30 +0800 Subject: [PATCH 38/47] Update README.md --- core-java-modules/core-java-string-algorithms-4/README.md | 1 + 1 file changed, 1 insertion(+) diff --git a/core-java-modules/core-java-string-algorithms-4/README.md b/core-java-modules/core-java-string-algorithms-4/README.md index 4ce76f8c6e..864ef860cf 100644 --- a/core-java-modules/core-java-string-algorithms-4/README.md +++ b/core-java-modules/core-java-string-algorithms-4/README.md @@ -5,3 +5,4 @@ This module contains articles about string-related algorithms. ### Relevant Articles: - [Rotating a Java String By n Characters](https://www.baeldung.com/java-rotate-string-by-n-characters) - [Remove Characters From a String That Are in the Other String](https://www.baeldung.com/java-strings-character-difference) +- [Run-Length Encoding and Decoding in Java](https://www.baeldung.com/java-rle-compression) From ea822291ba036ffc25fd3e50b136b732eb9a14eb Mon Sep 17 00:00:00 2001 From: rcalago <149600319+rcalago@users.noreply.github.com> Date: Fri, 9 Feb 2024 21:11:00 +0800 Subject: [PATCH 39/47] Update README.md --- core-java-modules/core-java-concurrency-advanced-5/README.md | 1 + 1 file changed, 1 insertion(+) diff --git a/core-java-modules/core-java-concurrency-advanced-5/README.md b/core-java-modules/core-java-concurrency-advanced-5/README.md index d991b6cc34..718b5451dc 100644 --- a/core-java-modules/core-java-concurrency-advanced-5/README.md +++ b/core-java-modules/core-java-concurrency-advanced-5/README.md @@ -2,3 +2,4 @@ ### Relevant Articles: - [Why wait() Requires Synchronization?](https://www.baeldung.com/java-wait-necessary-synchronization) - [Working with Exceptions in Java CompletableFuture](https://www.baeldung.com/java-exceptions-completablefuture) +- [CountDownLatch vs. Semaphore](https://www.baeldung.com/java-countdownlatch-vs-semaphore) From 8db7b68f87d692b3fa2ea5bddb4e165a9583bc84 Mon Sep 17 00:00:00 2001 From: rcalago <149600319+rcalago@users.noreply.github.com> Date: Fri, 9 Feb 2024 21:13:37 +0800 Subject: [PATCH 40/47] Update README.md --- core-java-modules/core-java-reflection-3/README.md | 1 + 1 file changed, 1 insertion(+) diff --git a/core-java-modules/core-java-reflection-3/README.md b/core-java-modules/core-java-reflection-3/README.md index 023fb979e4..5c18d36844 100644 --- a/core-java-modules/core-java-reflection-3/README.md +++ b/core-java-modules/core-java-reflection-3/README.md @@ -1,2 +1,3 @@ ### Relevant Articles: - [Is Java Reflection Bad Practice?](https://www.baeldung.com/java-reflection-benefits-drawbacks) +- [Instantiate an Inner Class With Reflection in Java](https://www.baeldung.com/java-reflection-instantiate-inner-class) From 92fd99dff5f627db9dcbe7d5136c84377612bc6e Mon Sep 17 00:00:00 2001 From: rcalago <149600319+rcalago@users.noreply.github.com> Date: Fri, 9 Feb 2024 21:14:38 +0800 Subject: [PATCH 41/47] Update README.md --- algorithms-modules/algorithms-miscellaneous-7/README.md | 1 + 1 file changed, 1 insertion(+) diff --git a/algorithms-modules/algorithms-miscellaneous-7/README.md b/algorithms-modules/algorithms-miscellaneous-7/README.md index ac761c3db6..425a77c46d 100644 --- a/algorithms-modules/algorithms-miscellaneous-7/README.md +++ b/algorithms-modules/algorithms-miscellaneous-7/README.md @@ -6,4 +6,5 @@ - [Calculate Distance Between Two Coordinates in Java](https://www.baeldung.com/java-find-distance-between-points) - [Rotate Arrays in Java](https://www.baeldung.com/java-rotate-arrays) - [Find Missing Number From a Given Array in Java](https://www.baeldung.com/java-array-find-missing-number) +- [Calculate Weighted Mean in Java](https://www.baeldung.com/java-compute-weighted-average) - More articles: [[<-- prev]](/algorithms-miscellaneous-6) From d0e7f691bcc76d1878dc397e8ef9b85a50486022 Mon Sep 17 00:00:00 2001 From: rcalago <149600319+rcalago@users.noreply.github.com> Date: Fri, 9 Feb 2024 21:16:10 +0800 Subject: [PATCH 42/47] Update README.md --- core-java-modules/core-java-uuid/README.md | 1 + 1 file changed, 1 insertion(+) diff --git a/core-java-modules/core-java-uuid/README.md b/core-java-modules/core-java-uuid/README.md index a32c1ae04f..56de5e962e 100644 --- a/core-java-modules/core-java-uuid/README.md +++ b/core-java-modules/core-java-uuid/README.md @@ -7,3 +7,4 @@ - [Generate the Same UUID From a String in Java](https://www.baeldung.com/java-generate-same-uuid-from-string) - [Generating Time Based UUIDs](https://www.baeldung.com/java-generating-time-based-uuids) - [Generating Unique Positive long Using UUID in Java](https://www.baeldung.com/java-uuid-unique-long-generation) +- [Storing UUID as Base64 String in Java](https://www.baeldung.com/java-store-uuid-base64-string) From 14458ca98571b32cf4c1ffc8e06978d346c0fad8 Mon Sep 17 00:00:00 2001 From: rcalago <149600319+rcalago@users.noreply.github.com> Date: Fri, 9 Feb 2024 21:20:16 +0800 Subject: [PATCH 43/47] Update README.md --- testing-modules/mockito-2/README.md | 1 + 1 file changed, 1 insertion(+) diff --git a/testing-modules/mockito-2/README.md b/testing-modules/mockito-2/README.md index 5eb4395fa9..263c890450 100644 --- a/testing-modules/mockito-2/README.md +++ b/testing-modules/mockito-2/README.md @@ -10,3 +10,4 @@ This module contains articles about Mockito - [How to Mock Constructors for Unit Testing using Mockito](https://www.baeldung.com/java-mockito-constructors-unit-testing) - [Overview of Mockito MockedConstruction](https://www.baeldung.com/java-mockito-mockedconstruction) - [Verify That Lambda Expression Was Called Using Mockito](https://www.baeldung.com/java-mockito-verify-lambda-expression) +- [Injecting @Mock and @Captor in JUnit 5 Method Parameters](https://www.baeldung.com/junit-5-mock-captor-method-parameter-injection) From 35ef9393c1ffe17562cbd6812c3a9dd196414c36 Mon Sep 17 00:00:00 2001 From: Wynn Teo <49014791+wynnteo@users.noreply.github.com> Date: Sat, 10 Feb 2024 10:26:25 +0800 Subject: [PATCH 44/47] Bael 7510 (#15776) * BAEL-7490 read write file in separate thread * Change the to try resources * Update the code to sync with article * First draft * Change module * Update the method return type to Integer and return null if not found * Remove public as using junit 5 --------- Co-authored-by: Wynn Teo --- .../FirstNonRepeatingElement.java | 61 +++++++++++++++++++ .../FirstNonRepeatingElementUnitTest.java | 43 +++++++++++++ 2 files changed, 104 insertions(+) create mode 100644 algorithms-modules/algorithms-searching/src/main/java/com/baeldung/algorithms/firstnonrepeating/FirstNonRepeatingElement.java create mode 100644 algorithms-modules/algorithms-searching/src/test/java/com/baeldung/algorithms/firstnonrepeating/FirstNonRepeatingElementUnitTest.java diff --git a/algorithms-modules/algorithms-searching/src/main/java/com/baeldung/algorithms/firstnonrepeating/FirstNonRepeatingElement.java b/algorithms-modules/algorithms-searching/src/main/java/com/baeldung/algorithms/firstnonrepeating/FirstNonRepeatingElement.java new file mode 100644 index 0000000000..0791066143 --- /dev/null +++ b/algorithms-modules/algorithms-searching/src/main/java/com/baeldung/algorithms/firstnonrepeating/FirstNonRepeatingElement.java @@ -0,0 +1,61 @@ +package com.baeldung.algorithms.firstnonrepeating; + +import java.util.Collections; +import java.util.HashMap; +import java.util.List; +import java.util.Map; + +public class FirstNonRepeatingElement { + public static Integer findFirstNonRepeatingUsingForLoop(List list) { + for (int i = 0; i < list.size(); i++) { + int current = list.get(i); + boolean isRepeating = false; + for (int j = 0; j < list.size(); j++) { + if (i != j && current == list.get(j)) { + isRepeating = true; + break; + } + } + if (!isRepeating) { + return current; + } + } + return null; + } + + public static Integer findFirstNonRepeatedElementUsingIndex(List list) { + for (int i = 0; i < list.size(); i++) { + if (list.indexOf(list.get(i)) == list.lastIndexOf(list.get(i))) { + return list.get(i); + } + } + return null; + } + + public static Integer findFirstNonRepeatingUsingHashMap(List list) { + Map counts = new HashMap<>(); + for (int num : list) { + counts.put(num, counts.getOrDefault(num, 0) + 1); + } + for (int num : list) { + if (counts.get(num) == 1) { + return num; + } + } + return null; + } + + public static Integer findFirstNonRepeatingUsingArray(List list) { + int maxElement = Collections.max(list); + int[] frequency = new int[maxElement + 1]; + for (int num : list) { + frequency[num]++; + } + for (int num : list) { + if (frequency[num] == 1) { + return num; + } + } + return null; + } +} diff --git a/algorithms-modules/algorithms-searching/src/test/java/com/baeldung/algorithms/firstnonrepeating/FirstNonRepeatingElementUnitTest.java b/algorithms-modules/algorithms-searching/src/test/java/com/baeldung/algorithms/firstnonrepeating/FirstNonRepeatingElementUnitTest.java new file mode 100644 index 0000000000..76c300303a --- /dev/null +++ b/algorithms-modules/algorithms-searching/src/test/java/com/baeldung/algorithms/firstnonrepeating/FirstNonRepeatingElementUnitTest.java @@ -0,0 +1,43 @@ +package com.baeldung.algorithms.firstnonrepeating; + +import static org.junit.jupiter.api.Assertions.assertEquals; + +import java.util.Arrays; +import java.util.List; + +import org.junit.jupiter.api.BeforeEach; +import org.junit.jupiter.api.Test; + +public class FirstNonRepeatingElementUnitTest { + + private List list; + + @BeforeEach + void setUp() { + list = Arrays.asList(1, 2, 3, 2, 1, 4, 5, 4); + } + + @Test + void whenUsingForLoop_thenReturnFirstNonRepeatingElement() { + int result = FirstNonRepeatingElement.findFirstNonRepeatingUsingForLoop(list); + assertEquals(3, result); + } + + @Test + void whenUsingIndexOf_thenReturnFirstNonRepeatingElement() { + int result = FirstNonRepeatingElement.findFirstNonRepeatedElementUsingIndex(list); + assertEquals(3, result); + } + + @Test + void whenUsingHashMap_thenReturnFirstNonRepeatingElement() { + int result = FirstNonRepeatingElement.findFirstNonRepeatingUsingHashMap(list); + assertEquals(3, result); + } + + @Test + void whenUsingArray_thenReturnFirstNonRepeatingElement() { + int result = FirstNonRepeatingElement.findFirstNonRepeatingUsingArray(list); + assertEquals(3, result); + } +} From 55476ccf0e96fd18396305fc862a7cbe091ab335 Mon Sep 17 00:00:00 2001 From: Loredana Crusoveanu Date: Sat, 10 Feb 2024 14:32:55 +0200 Subject: [PATCH 45/47] Update README.md --- core-java-modules/core-java-perf-2/README.md | 2 ++ 1 file changed, 2 insertions(+) diff --git a/core-java-modules/core-java-perf-2/README.md b/core-java-modules/core-java-perf-2/README.md index aea10fa69c..6e518b07eb 100644 --- a/core-java-modules/core-java-perf-2/README.md +++ b/core-java-modules/core-java-perf-2/README.md @@ -6,3 +6,5 @@ This module contains articles about performance of Java applications - [External Debugging With JMXTerm](https://www.baeldung.com/java-jmxterm-external-debugging) - [Create and Detect Memory Leaks in Java](https://www.baeldung.com/java-create-detect-memory-leaks) - [Differences Between Heap Dump, Thread Dump and Core Dump](https://www.baeldung.com/java-heap-thread-core-dumps) +- [Shutting Down on OutOfMemoryError in Java](https://www.baeldung.com/java-shutting-down-outofmemoryerror) + From a5082fa3f1ac6c948538514dc0c738b286e4aced Mon Sep 17 00:00:00 2001 From: Amit Pandey Date: Sun, 11 Feb 2024 18:09:41 +0530 Subject: [PATCH 46/47] [JAVA-29429] - Add extra checks for sporadic test failures (#15845) --- .../ManagingConsumerGroupsIntegrationTest.java | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/spring-kafka-2/src/test/java/com/baeldung/spring/kafka/managingkafkaconsumergroups/ManagingConsumerGroupsIntegrationTest.java b/spring-kafka-2/src/test/java/com/baeldung/spring/kafka/managingkafkaconsumergroups/ManagingConsumerGroupsIntegrationTest.java index c3fd8751db..6103fa884d 100644 --- a/spring-kafka-2/src/test/java/com/baeldung/spring/kafka/managingkafkaconsumergroups/ManagingConsumerGroupsIntegrationTest.java +++ b/spring-kafka-2/src/test/java/com/baeldung/spring/kafka/managingkafkaconsumergroups/ManagingConsumerGroupsIntegrationTest.java @@ -57,7 +57,9 @@ public class ManagingConsumerGroupsIntegrationTest { } } while (currentMessage != TOTAL_PRODUCED_MESSAGES); Thread.sleep(2000); - if( consumerService.consumedPartitions != null && consumerService.consumedPartitions.get("consumer-1") != null) { + if (consumerService.consumedPartitions != null + && consumerService.consumedPartitions.get("consumer-1") != null + && consumerService.consumedPartitions.get("consumer-0") != null) { assertTrue(consumerService.consumedPartitions.get("consumer-1").size() >= 1); assertTrue( consumerService.consumedPartitions.get("consumer-0").size() >= 1); } From d5fdbd7dea0c532dd6fc6001f4c80afc9ec2d09f Mon Sep 17 00:00:00 2001 From: panos-kakos <102670093+panos-kakos@users.noreply.github.com> Date: Sun, 11 Feb 2024 14:45:29 +0200 Subject: [PATCH 47/47] [JAVA-28933] - Upgrade Flyway module to spring boot 3 (#15836) --- persistence-modules/flyway/pom.xml | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/persistence-modules/flyway/pom.xml b/persistence-modules/flyway/pom.xml index 07a2925356..43921283d2 100644 --- a/persistence-modules/flyway/pom.xml +++ b/persistence-modules/flyway/pom.xml @@ -10,9 +10,9 @@ com.baeldung - parent-boot-2 + parent-boot-3 0.0.1-SNAPSHOT - ../../parent-boot-2 + ../../parent-boot-3 @@ -63,7 +63,7 @@ - 10.2.0 + 10.7.1 \ No newline at end of file