diff --git a/core-java-modules/core-java-datetime-java8/src/main/java/com/baeldung/random/LegacyRandomDateTimes.java b/core-java-modules/core-java-datetime-java8/src/main/java/com/baeldung/random/LegacyRandomDateTimes.java
new file mode 100644
index 0000000000..3f965dbac7
--- /dev/null
+++ b/core-java-modules/core-java-datetime-java8/src/main/java/com/baeldung/random/LegacyRandomDateTimes.java
@@ -0,0 +1,19 @@
+package com.baeldung.random;
+
+import java.util.Date;
+import java.util.concurrent.ThreadLocalRandom;
+
+public class LegacyRandomDateTimes {
+
+ public static Date between(Date startInclusive, Date endExclusive) {
+ long startMillis = startInclusive.getTime();
+ long endMillis = endExclusive.getTime();
+ long randomMillisSinceEpoch = ThreadLocalRandom.current().nextLong(startMillis, endMillis);
+
+ return new Date(randomMillisSinceEpoch);
+ }
+
+ public static Date timestamp() {
+ return new Date(ThreadLocalRandom.current().nextInt() * 1000L);
+ }
+}
diff --git a/core-java-modules/core-java-datetime-java8/src/main/java/com/baeldung/random/RandomDateTimes.java b/core-java-modules/core-java-datetime-java8/src/main/java/com/baeldung/random/RandomDateTimes.java
new file mode 100644
index 0000000000..a40299e515
--- /dev/null
+++ b/core-java-modules/core-java-datetime-java8/src/main/java/com/baeldung/random/RandomDateTimes.java
@@ -0,0 +1,27 @@
+package com.baeldung.random;
+
+import java.time.Instant;
+import java.util.concurrent.ThreadLocalRandom;
+
+public class RandomDateTimes {
+
+ public static Instant timestamp() {
+ return Instant.ofEpochSecond(ThreadLocalRandom.current().nextInt());
+ }
+
+ public static Instant between(Instant startInclusive, Instant endExclusive) {
+ long startSeconds = startInclusive.getEpochSecond();
+ long endSeconds = endExclusive.getEpochSecond();
+ long random = ThreadLocalRandom.current().nextLong(startSeconds, endSeconds);
+
+ return Instant.ofEpochSecond(random);
+ }
+
+ public static Instant after(Instant startInclusive) {
+ return between(startInclusive, Instant.MAX);
+ }
+
+ public static Instant before(Instant upperExclusive) {
+ return between(Instant.MIN, upperExclusive);
+ }
+}
diff --git a/core-java-modules/core-java-datetime-java8/src/main/java/com/baeldung/random/RandomDates.java b/core-java-modules/core-java-datetime-java8/src/main/java/com/baeldung/random/RandomDates.java
new file mode 100644
index 0000000000..f0b76873f9
--- /dev/null
+++ b/core-java-modules/core-java-datetime-java8/src/main/java/com/baeldung/random/RandomDates.java
@@ -0,0 +1,20 @@
+package com.baeldung.random;
+
+import java.time.LocalDate;
+import java.util.concurrent.ThreadLocalRandom;
+
+public class RandomDates {
+
+ public static LocalDate between(LocalDate startInclusive, LocalDate endExclusive) {
+ long startEpochDay = startInclusive.toEpochDay();
+ long endEpochDay = endExclusive.toEpochDay();
+ long randomDay = ThreadLocalRandom.current().nextLong(startEpochDay, endEpochDay);
+
+ return LocalDate.ofEpochDay(randomDay);
+ }
+
+ public static LocalDate date() {
+ int hundredYears = 100 * 365;
+ return LocalDate.ofEpochDay(ThreadLocalRandom.current().nextInt(-hundredYears, hundredYears));
+ }
+}
diff --git a/core-java-modules/core-java-datetime-java8/src/main/java/com/baeldung/random/RandomTimes.java b/core-java-modules/core-java-datetime-java8/src/main/java/com/baeldung/random/RandomTimes.java
new file mode 100644
index 0000000000..92818b2390
--- /dev/null
+++ b/core-java-modules/core-java-datetime-java8/src/main/java/com/baeldung/random/RandomTimes.java
@@ -0,0 +1,19 @@
+package com.baeldung.random;
+
+import java.time.LocalTime;
+import java.util.concurrent.ThreadLocalRandom;
+
+public class RandomTimes {
+
+ public static LocalTime between(LocalTime startTime, LocalTime endTime) {
+ int startSeconds = startTime.toSecondOfDay();
+ int endSeconds = endTime.toSecondOfDay();
+ int randomTime = ThreadLocalRandom.current().nextInt(startSeconds, endSeconds);
+
+ return LocalTime.ofSecondOfDay(randomTime);
+ }
+
+ public static LocalTime time() {
+ return between(LocalTime.MIN, LocalTime.MAX);
+ }
+}
diff --git a/core-java-modules/core-java-datetime-java8/src/test/java/com/baeldung/random/LegacyRandomDateTimesUnitTest.java b/core-java-modules/core-java-datetime-java8/src/test/java/com/baeldung/random/LegacyRandomDateTimesUnitTest.java
new file mode 100644
index 0000000000..26fcaa942f
--- /dev/null
+++ b/core-java-modules/core-java-datetime-java8/src/test/java/com/baeldung/random/LegacyRandomDateTimesUnitTest.java
@@ -0,0 +1,36 @@
+package com.baeldung.random;
+
+import org.junit.jupiter.api.RepeatedTest;
+
+import java.util.Date;
+import java.util.concurrent.TimeUnit;
+
+import static org.assertj.core.api.Assertions.assertThat;
+
+class LegacyRandomDateTimesUnitTest {
+
+ private static final Date MIN_DATE = new Date(Long.MIN_VALUE);
+ private static final Date MAX_DATE = new Date(Long.MAX_VALUE);
+
+ @RepeatedTest(100)
+ void givenARange_WhenGenTimestamp_ShouldBeInRange() {
+ long aDay = TimeUnit.DAYS.toMillis(1);
+ long now = new Date().getTime();
+
+ Date hundredYearsAgo = new Date(now - aDay * 365 * 100);
+ Date tenDaysAgo = new Date(now - aDay * 10);
+
+ Date random = LegacyRandomDateTimes.between(hundredYearsAgo, tenDaysAgo);
+ assertThat(random).isBetween(hundredYearsAgo, tenDaysAgo);
+ }
+
+ @RepeatedTest(100)
+ void givenNoRange_WhenGenTimestamp_ShouldGenerateRandomTimestamps() {
+ Date random = LegacyRandomDateTimes.timestamp();
+
+ assertThat(random)
+ .isNotNull()
+ .isBetween(MIN_DATE, MAX_DATE);
+ }
+
+}
\ No newline at end of file
diff --git a/core-java-modules/core-java-datetime-java8/src/test/java/com/baeldung/random/RandomDateTimesUnitTest.java b/core-java-modules/core-java-datetime-java8/src/test/java/com/baeldung/random/RandomDateTimesUnitTest.java
new file mode 100644
index 0000000000..c801afa4e2
--- /dev/null
+++ b/core-java-modules/core-java-datetime-java8/src/test/java/com/baeldung/random/RandomDateTimesUnitTest.java
@@ -0,0 +1,27 @@
+package com.baeldung.random;
+
+import org.junit.jupiter.api.RepeatedTest;
+
+import java.time.Duration;
+import java.time.Instant;
+
+import static org.assertj.core.api.Assertions.assertThat;
+
+class RandomDateTimesUnitTest {
+
+ @RepeatedTest(100)
+ void givenNoRange_WhenGenTimestamp_ShouldGenerateRandomTimestamps() {
+ Instant random = RandomDateTimes.timestamp();
+
+ assertThat(random).isBetween(Instant.MIN, Instant.MAX);
+ }
+
+ @RepeatedTest(100)
+ void givenARange_WhenGenTimestamp_ShouldBeInRange() {
+ Instant hundredYearsAgo = Instant.now().minus(Duration.ofDays(100 * 365));
+ Instant tenDaysAgo = Instant.now().minus(Duration.ofDays(10));
+
+ Instant random = RandomDateTimes.between(hundredYearsAgo, tenDaysAgo);
+ assertThat(random).isBetween(hundredYearsAgo, tenDaysAgo);
+ }
+}
diff --git a/core-java-modules/core-java-datetime-java8/src/test/java/com/baeldung/random/RandomDatesUnitTest.java b/core-java-modules/core-java-datetime-java8/src/test/java/com/baeldung/random/RandomDatesUnitTest.java
new file mode 100644
index 0000000000..6005cf93c2
--- /dev/null
+++ b/core-java-modules/core-java-datetime-java8/src/test/java/com/baeldung/random/RandomDatesUnitTest.java
@@ -0,0 +1,27 @@
+package com.baeldung.random;
+
+import org.junit.jupiter.api.RepeatedTest;
+
+import java.time.LocalDate;
+import java.time.Month;
+
+import static org.assertj.core.api.Assertions.assertThat;
+
+class RandomDatesUnitTest {
+
+ @RepeatedTest(100)
+ void givenNoRange_WhenGenDate_ShouldGenerateRandomDates() {
+ LocalDate randomDay = RandomDates.date();
+
+ assertThat(randomDay).isAfter(LocalDate.MIN).isBefore(LocalDate.MAX);
+ }
+
+ @RepeatedTest(100)
+ void givenARange_WhenGenDate_ShouldBeInRange() {
+ LocalDate start = LocalDate.of(1989, Month.OCTOBER, 14);
+ LocalDate end = LocalDate.now();
+
+ LocalDate random = RandomDates.between(start, end);
+ assertThat(random).isAfter(start).isBefore(end);
+ }
+}
diff --git a/core-java-modules/core-java-datetime-java8/src/test/java/com/baeldung/random/RandomTimesUnitTest.java b/core-java-modules/core-java-datetime-java8/src/test/java/com/baeldung/random/RandomTimesUnitTest.java
new file mode 100644
index 0000000000..a346d0df20
--- /dev/null
+++ b/core-java-modules/core-java-datetime-java8/src/test/java/com/baeldung/random/RandomTimesUnitTest.java
@@ -0,0 +1,20 @@
+package com.baeldung.random;
+
+import org.junit.jupiter.api.RepeatedTest;
+
+import java.time.LocalTime;
+
+import static org.assertj.core.api.Assertions.assertThat;
+
+class RandomTimesUnitTest {
+
+ @RepeatedTest(100)
+ void givenARange_WhenGenTime_ShouldBeInRange() {
+ LocalTime morning = LocalTime.of(8, 30);
+ LocalTime randomTime = RandomTimes.between(LocalTime.MIDNIGHT, morning);
+
+ assertThat(randomTime)
+ .isAfter(LocalTime.MIDNIGHT).isBefore(morning)
+ .isAfter(LocalTime.MIN).isBefore(LocalTime.MAX);
+ }
+}
diff --git a/core-java-modules/core-java-exceptions/src/main/java/com/baeldung/trywithresource/AutoCloseableMain.java b/core-java-modules/core-java-exceptions/src/main/java/com/baeldung/trywithresource/AutoCloseableMain.java
new file mode 100644
index 0000000000..fee52fe2bc
--- /dev/null
+++ b/core-java-modules/core-java-exceptions/src/main/java/com/baeldung/trywithresource/AutoCloseableMain.java
@@ -0,0 +1,16 @@
+package com.baeldung.trywithresource;
+
+public class AutoCloseableMain {
+
+ public static void main(String[] args) throws Exception {
+ orderOfClosingResources();
+ }
+
+ private static void orderOfClosingResources() throws Exception {
+ try (AutoCloseableResourcesFirst af = new AutoCloseableResourcesFirst();
+ AutoCloseableResourcesSecond as = new AutoCloseableResourcesSecond()) {
+ af.doSomething();
+ as.doSomething();
+ }
+ }
+}
\ No newline at end of file
diff --git a/core-java-modules/core-java-exceptions/src/main/java/com/baeldung/trywithresource/AutoCloseableResourcesFirst.java b/core-java-modules/core-java-exceptions/src/main/java/com/baeldung/trywithresource/AutoCloseableResourcesFirst.java
new file mode 100644
index 0000000000..b001244d93
--- /dev/null
+++ b/core-java-modules/core-java-exceptions/src/main/java/com/baeldung/trywithresource/AutoCloseableResourcesFirst.java
@@ -0,0 +1,17 @@
+package com.baeldung.trywithresource;
+
+public class AutoCloseableResourcesFirst implements AutoCloseable {
+
+ public AutoCloseableResourcesFirst() {
+ System.out.println("Constructor -> AutoCloseableResources_First");
+ }
+
+ public void doSomething() {
+ System.out.println("Something -> AutoCloseableResources_First");
+ }
+
+ @Override
+ public void close() throws Exception {
+ System.out.println("Closed AutoCloseableResources_First");
+ }
+}
\ No newline at end of file
diff --git a/core-java-modules/core-java-exceptions/src/main/java/com/baeldung/trywithresource/AutoCloseableResourcesSecond.java b/core-java-modules/core-java-exceptions/src/main/java/com/baeldung/trywithresource/AutoCloseableResourcesSecond.java
new file mode 100644
index 0000000000..ef8bcd7166
--- /dev/null
+++ b/core-java-modules/core-java-exceptions/src/main/java/com/baeldung/trywithresource/AutoCloseableResourcesSecond.java
@@ -0,0 +1,17 @@
+package com.baeldung.trywithresource;
+
+public class AutoCloseableResourcesSecond implements AutoCloseable {
+
+ public AutoCloseableResourcesSecond() {
+ System.out.println("Constructor -> AutoCloseableResources_Second");
+ }
+
+ public void doSomething() {
+ System.out.println("Something -> AutoCloseableResources_Second");
+ }
+
+ @Override
+ public void close() throws Exception {
+ System.out.println("Closed AutoCloseableResources_Second");
+ }
+}
diff --git a/core-java-modules/core-java-exceptions/src/main/java/com/baeldung/trywithresource/MyResource.java b/core-java-modules/core-java-exceptions/src/main/java/com/baeldung/trywithresource/MyResource.java
new file mode 100644
index 0000000000..3ddf0f52e0
--- /dev/null
+++ b/core-java-modules/core-java-exceptions/src/main/java/com/baeldung/trywithresource/MyResource.java
@@ -0,0 +1,8 @@
+package com.baeldung.trywithresource;
+
+public class MyResource implements AutoCloseable {
+ @Override
+ public void close() throws Exception {
+ System.out.println("Closed MyResource");
+ }
+}
\ No newline at end of file
diff --git a/core-java-modules/core-java-io-2/src/test/java/com/baeldung/scanner/JavaScannerUnitTest.java b/core-java-modules/core-java-io-2/src/test/java/com/baeldung/scanner/JavaScannerUnitTest.java
new file mode 100644
index 0000000000..471c0ea1c7
--- /dev/null
+++ b/core-java-modules/core-java-io-2/src/test/java/com/baeldung/scanner/JavaScannerUnitTest.java
@@ -0,0 +1,44 @@
+package com.baeldung.scanner;
+
+import static org.junit.Assert.assertEquals;
+
+import java.util.NoSuchElementException;
+import java.util.Scanner;
+
+import org.junit.Test;
+
+public class JavaScannerUnitTest {
+
+ @Test
+ public void whenReadingLines_thenCorrect() {
+ String input = "Scanner\nTest\n";
+ try (Scanner scanner = new Scanner(input)) {
+ assertEquals("Scanner", scanner.nextLine());
+ assertEquals("Test", scanner.nextLine());
+ }
+ }
+
+ @Test
+ public void whenReadingPartialLines_thenCorrect() {
+ String input = "Scanner\n";
+ try (Scanner scanner = new Scanner(input)) {
+ scanner.useDelimiter("");
+ scanner.next();
+ assertEquals("canner", scanner.nextLine());
+ }
+ }
+
+ @Test(expected = NoSuchElementException.class)
+ public void givenNoNewLine_whenReadingNextLine_thenThrowNoSuchElementException() {
+ try (Scanner scanner = new Scanner("")) {
+ String result = scanner.nextLine();
+ }
+ }
+
+ @Test(expected = IllegalStateException.class)
+ public void givenScannerIsClosed_whenReadingNextLine_thenThrowIllegalStateException() {
+ Scanner scanner = new Scanner("");
+ scanner.close();
+ String result = scanner.nextLine();
+ }
+}
diff --git a/core-java-modules/core-java-string-operations-2/README.md b/core-java-modules/core-java-string-operations-2/README.md
new file mode 100644
index 0000000000..50f40ac2af
--- /dev/null
+++ b/core-java-modules/core-java-string-operations-2/README.md
@@ -0,0 +1,11 @@
+## Java String Operations
+
+This module contains articles about string operations.
+
+### Relevant Articles:
+- [Concatenating Strings In Java](https://www.baeldung.com/java-strings-concatenation)
+- [Checking for Empty or Blank Strings in Java](https://www.baeldung.com/java-blank-empty-strings)
+- [String Initialization in Java](https://www.baeldung.com/java-string-initialization)
+- [String toLowerCase and toUpperCase Methods in Java](https://www.baeldung.com/java-string-convert-case)
+- [Java String equalsIgnoreCase()](https://www.baeldung.com/java-string-equalsignorecase)
+- More articles: [[<-- prev]](../core-java-string-operations)
diff --git a/core-java-modules/core-java-string-operations-2/pom.xml b/core-java-modules/core-java-string-operations-2/pom.xml
new file mode 100644
index 0000000000..95aeec8fcb
--- /dev/null
+++ b/core-java-modules/core-java-string-operations-2/pom.xml
@@ -0,0 +1,81 @@
+
+ 4.0.0
+ core-java-string-operations-2
+ 0.1.0-SNAPSHOT
+ jar
+ core-java-string-operations-2
+
+
+ com.baeldung
+ parent-java
+ 0.0.1-SNAPSHOT
+ ../../parent-java
+
+
+
+
+ javax.validation
+ validation-api
+ ${validation-api.version}
+
+
+ com.google.guava
+ guava
+ ${guava.version}
+
+
+ org.apache.commons
+ commons-lang3
+ ${commons-lang3.version}
+
+
+ org.hibernate.validator
+ hibernate-validator
+ ${hibernate-validator.version}
+
+
+ javax.el
+ javax.el-api
+ ${javax.el-api.version}
+
+
+ org.glassfish.web
+ javax.el
+ ${javax.el.version}
+
+
+ org.hamcrest
+ hamcrest-library
+ ${org.hamcrest.version}
+ test
+
+
+ org.assertj
+ assertj-core
+ ${assertj.version}
+ test
+
+
+
+
+ core-java-string-operations-2
+
+
+ src/main/resources
+ true
+
+
+
+
+
+ 3.6.1
+ 2.0.0.Final
+ 3.8.1
+ 27.0.1-jre
+ 6.0.2.Final
+ 3.0.0
+ 2.2.6
+
+
+
diff --git a/java-strings-2/src/main/java/com/baeldung/string/emptystrings/EmptyStringCheck.java b/core-java-modules/core-java-string-operations-2/src/main/java/com/baeldung/emptystrings/EmptyStringCheck.java
similarity index 75%
rename from java-strings-2/src/main/java/com/baeldung/string/emptystrings/EmptyStringCheck.java
rename to core-java-modules/core-java-string-operations-2/src/main/java/com/baeldung/emptystrings/EmptyStringCheck.java
index 6d3234a4ec..85689eff99 100644
--- a/java-strings-2/src/main/java/com/baeldung/string/emptystrings/EmptyStringCheck.java
+++ b/core-java-modules/core-java-string-operations-2/src/main/java/com/baeldung/emptystrings/EmptyStringCheck.java
@@ -1,4 +1,4 @@
-package com.baeldung.string.emptystrings;
+package com.baeldung.emptystrings;
class EmptyStringCheck {
diff --git a/java-strings-2/src/main/java/com/baeldung/string/emptystrings/Java5EmptyStringCheck.java b/core-java-modules/core-java-string-operations-2/src/main/java/com/baeldung/emptystrings/Java5EmptyStringCheck.java
similarity index 76%
rename from java-strings-2/src/main/java/com/baeldung/string/emptystrings/Java5EmptyStringCheck.java
rename to core-java-modules/core-java-string-operations-2/src/main/java/com/baeldung/emptystrings/Java5EmptyStringCheck.java
index 096b83acea..0c7997c075 100644
--- a/java-strings-2/src/main/java/com/baeldung/string/emptystrings/Java5EmptyStringCheck.java
+++ b/core-java-modules/core-java-string-operations-2/src/main/java/com/baeldung/emptystrings/Java5EmptyStringCheck.java
@@ -1,4 +1,4 @@
-package com.baeldung.string.emptystrings;
+package com.baeldung.emptystrings;
class Java5EmptyStringCheck {
diff --git a/java-strings-2/src/main/java/com/baeldung/string/emptystrings/PlainJavaBlankStringCheck.java b/core-java-modules/core-java-string-operations-2/src/main/java/com/baeldung/emptystrings/PlainJavaBlankStringCheck.java
similarity index 77%
rename from java-strings-2/src/main/java/com/baeldung/string/emptystrings/PlainJavaBlankStringCheck.java
rename to core-java-modules/core-java-string-operations-2/src/main/java/com/baeldung/emptystrings/PlainJavaBlankStringCheck.java
index 26e281c9b7..315ce4613a 100644
--- a/java-strings-2/src/main/java/com/baeldung/string/emptystrings/PlainJavaBlankStringCheck.java
+++ b/core-java-modules/core-java-string-operations-2/src/main/java/com/baeldung/emptystrings/PlainJavaBlankStringCheck.java
@@ -1,4 +1,4 @@
-package com.baeldung.string.emptystrings;
+package com.baeldung.emptystrings;
class PlainJavaBlankStringCheck {
diff --git a/java-strings-2/src/main/java/com/baeldung/string/emptystrings/SomeClassWithValidations.java b/core-java-modules/core-java-string-operations-2/src/main/java/com/baeldung/emptystrings/SomeClassWithValidations.java
similarity index 87%
rename from java-strings-2/src/main/java/com/baeldung/string/emptystrings/SomeClassWithValidations.java
rename to core-java-modules/core-java-string-operations-2/src/main/java/com/baeldung/emptystrings/SomeClassWithValidations.java
index 8c484efb43..058d53ba82 100644
--- a/java-strings-2/src/main/java/com/baeldung/string/emptystrings/SomeClassWithValidations.java
+++ b/core-java-modules/core-java-string-operations-2/src/main/java/com/baeldung/emptystrings/SomeClassWithValidations.java
@@ -1,4 +1,4 @@
-package com.baeldung.string.emptystrings;
+package com.baeldung.emptystrings;
import javax.validation.constraints.Pattern;
diff --git a/java-strings-2/src/test/java/com/baeldung/string/changecase/ToLowerCaseUnitTest.java b/core-java-modules/core-java-string-operations-2/src/test/java/com/baeldung/changecase/ToLowerCaseUnitTest.java
similarity index 91%
rename from java-strings-2/src/test/java/com/baeldung/string/changecase/ToLowerCaseUnitTest.java
rename to core-java-modules/core-java-string-operations-2/src/test/java/com/baeldung/changecase/ToLowerCaseUnitTest.java
index c395b61068..4826ba2ef7 100644
--- a/java-strings-2/src/test/java/com/baeldung/string/changecase/ToLowerCaseUnitTest.java
+++ b/core-java-modules/core-java-string-operations-2/src/test/java/com/baeldung/changecase/ToLowerCaseUnitTest.java
@@ -1,29 +1,29 @@
-package com.baeldung.string.changecase;
-
-import static org.junit.Assert.assertEquals;
-
-import java.util.Locale;
-
-import org.junit.Test;
-
-public class ToLowerCaseUnitTest {
-
- private static final Locale TURKISH = new Locale("tr");
- private String name = "John Doe";
- private String foreignUppercase = "\u0049";
-
- @Test
- public void givenMixedCaseString_WhenToLowerCase_ThenResultIsLowerCase() {
- assertEquals("john doe", name.toLowerCase());
- }
-
- @Test
- public void givenForeignString_WhenToLowerCaseWithoutLocale_ThenResultIsLowerCase() {
- assertEquals("\u0069", foreignUppercase.toLowerCase());
- }
-
- @Test
- public void givenForeignString_WhenToLowerCaseWithLocale_ThenResultIsLowerCase() {
- assertEquals("\u0131", foreignUppercase.toLowerCase(TURKISH));
- }
-}
+package com.baeldung.changecase;
+
+import org.junit.Test;
+
+import java.util.Locale;
+
+import static org.junit.Assert.assertEquals;
+
+public class ToLowerCaseUnitTest {
+
+ private static final Locale TURKISH = new Locale("tr");
+ private String name = "John Doe";
+ private String foreignUppercase = "\u0049";
+
+ @Test
+ public void givenMixedCaseString_WhenToLowerCase_ThenResultIsLowerCase() {
+ assertEquals("john doe", name.toLowerCase());
+ }
+
+ @Test
+ public void givenForeignString_WhenToLowerCaseWithoutLocale_ThenResultIsLowerCase() {
+ assertEquals("\u0069", foreignUppercase.toLowerCase());
+ }
+
+ @Test
+ public void givenForeignString_WhenToLowerCaseWithLocale_ThenResultIsLowerCase() {
+ assertEquals("\u0131", foreignUppercase.toLowerCase(TURKISH));
+ }
+}
diff --git a/java-strings-2/src/test/java/com/baeldung/string/changecase/ToUpperCaseUnitTest.java b/core-java-modules/core-java-string-operations-2/src/test/java/com/baeldung/changecase/ToUpperCaseUnitTest.java
similarity index 91%
rename from java-strings-2/src/test/java/com/baeldung/string/changecase/ToUpperCaseUnitTest.java
rename to core-java-modules/core-java-string-operations-2/src/test/java/com/baeldung/changecase/ToUpperCaseUnitTest.java
index 1807f854b2..ab740f19b1 100644
--- a/java-strings-2/src/test/java/com/baeldung/string/changecase/ToUpperCaseUnitTest.java
+++ b/core-java-modules/core-java-string-operations-2/src/test/java/com/baeldung/changecase/ToUpperCaseUnitTest.java
@@ -1,29 +1,29 @@
-package com.baeldung.string.changecase;
-
-import static org.junit.Assert.assertEquals;
-
-import java.util.Locale;
-
-import org.junit.Test;
-
-public class ToUpperCaseUnitTest {
-
- private static final Locale TURKISH = new Locale("tr");
- private String name = "John Doe";
- private String foreignLowercase = "\u0069";
-
- @Test
- public void givenMixedCaseString_WhenToUpperCase_ThenResultIsUpperCase() {
- assertEquals("JOHN DOE", name.toUpperCase());
- }
-
- @Test
- public void givenForeignString_WhenToUpperCaseWithoutLocale_ThenResultIsUpperCase() {
- assertEquals("\u0049", foreignLowercase.toUpperCase());
- }
-
- @Test
- public void givenForeignString_WhenToUpperCaseWithLocale_ThenResultIsUpperCase() {
- assertEquals("\u0130", foreignLowercase.toUpperCase(TURKISH));
- }
-}
+package com.baeldung.changecase;
+
+import org.junit.Test;
+
+import java.util.Locale;
+
+import static org.junit.Assert.assertEquals;
+
+public class ToUpperCaseUnitTest {
+
+ private static final Locale TURKISH = new Locale("tr");
+ private String name = "John Doe";
+ private String foreignLowercase = "\u0069";
+
+ @Test
+ public void givenMixedCaseString_WhenToUpperCase_ThenResultIsUpperCase() {
+ assertEquals("JOHN DOE", name.toUpperCase());
+ }
+
+ @Test
+ public void givenForeignString_WhenToUpperCaseWithoutLocale_ThenResultIsUpperCase() {
+ assertEquals("\u0049", foreignLowercase.toUpperCase());
+ }
+
+ @Test
+ public void givenForeignString_WhenToUpperCaseWithLocale_ThenResultIsUpperCase() {
+ assertEquals("\u0130", foreignLowercase.toUpperCase(TURKISH));
+ }
+}
diff --git a/java-strings-2/src/test/java/com/baeldung/string/emptystrings/EmptyStringsUnitTest.java b/core-java-modules/core-java-string-operations-2/src/test/java/com/baeldung/emptystrings/EmptyStringsUnitTest.java
similarity index 96%
rename from java-strings-2/src/test/java/com/baeldung/string/emptystrings/EmptyStringsUnitTest.java
rename to core-java-modules/core-java-string-operations-2/src/test/java/com/baeldung/emptystrings/EmptyStringsUnitTest.java
index 96b1d681dd..d772c38341 100644
--- a/java-strings-2/src/test/java/com/baeldung/string/emptystrings/EmptyStringsUnitTest.java
+++ b/core-java-modules/core-java-string-operations-2/src/test/java/com/baeldung/emptystrings/EmptyStringsUnitTest.java
@@ -1,21 +1,17 @@
-package com.baeldung.string.emptystrings;
+package com.baeldung.emptystrings;
-import static org.hamcrest.Matchers.iterableWithSize;
-import static org.junit.Assert.assertFalse;
-import static org.junit.Assert.assertThat;
-import static org.junit.Assert.assertTrue;
-
-import java.util.Set;
+import com.google.common.base.Strings;
+import org.apache.commons.lang3.StringUtils;
+import org.junit.Test;
import javax.validation.ConstraintViolation;
import javax.validation.Validation;
import javax.validation.Validator;
import javax.validation.ValidatorFactory;
+import java.util.Set;
-import org.apache.commons.lang3.StringUtils;
-import org.junit.Test;
-
-import com.google.common.base.Strings;
+import static org.hamcrest.Matchers.iterableWithSize;
+import static org.junit.Assert.*;
public class EmptyStringsUnitTest {
diff --git a/java-strings-3/src/test/java/com/baeldung/string/equalsIgnoreCase/StringEqualsIgnoreCaseUnitTest.java b/core-java-modules/core-java-string-operations-2/src/test/java/com/baeldung/equalsIgnoreCase/StringEqualsIgnoreCaseUnitTest.java
similarity index 94%
rename from java-strings-3/src/test/java/com/baeldung/string/equalsIgnoreCase/StringEqualsIgnoreCaseUnitTest.java
rename to core-java-modules/core-java-string-operations-2/src/test/java/com/baeldung/equalsIgnoreCase/StringEqualsIgnoreCaseUnitTest.java
index 5aab63db94..14fbf20c1d 100644
--- a/java-strings-3/src/test/java/com/baeldung/string/equalsIgnoreCase/StringEqualsIgnoreCaseUnitTest.java
+++ b/core-java-modules/core-java-string-operations-2/src/test/java/com/baeldung/equalsIgnoreCase/StringEqualsIgnoreCaseUnitTest.java
@@ -1,4 +1,4 @@
-package com.baeldung.string.equalsIgnoreCase;
+package com.baeldung.equalsIgnoreCase;
import org.apache.commons.lang3.StringUtils;
import org.junit.Test;
diff --git a/java-strings-2/src/test/java/com/baeldung/initialization/StringInitializationUnitTest.java b/core-java-modules/core-java-string-operations-2/src/test/java/com/baeldung/initialization/StringInitializationUnitTest.java
similarity index 91%
rename from java-strings-2/src/test/java/com/baeldung/initialization/StringInitializationUnitTest.java
rename to core-java-modules/core-java-string-operations-2/src/test/java/com/baeldung/initialization/StringInitializationUnitTest.java
index 50d9a2b058..02beaa690a 100644
--- a/java-strings-2/src/test/java/com/baeldung/initialization/StringInitializationUnitTest.java
+++ b/core-java-modules/core-java-string-operations-2/src/test/java/com/baeldung/initialization/StringInitializationUnitTest.java
@@ -1,11 +1,9 @@
package com.baeldung.initialization;
-import static org.junit.Assert.assertEquals;
-import static org.junit.Assert.assertTrue;
-import static org.junit.Assert.assertFalse;
-
import org.junit.Test;
+import static org.junit.Assert.*;
+
public class StringInitializationUnitTest {
private String fieldString;
diff --git a/java-strings-2/src/test/java/com/baeldung/StringConcatenationUnitTest.java b/core-java-modules/core-java-string-operations-2/src/test/java/com/baeldung/stringconcatenation/StringConcatenationUnitTest.java
similarity index 98%
rename from java-strings-2/src/test/java/com/baeldung/StringConcatenationUnitTest.java
rename to core-java-modules/core-java-string-operations-2/src/test/java/com/baeldung/stringconcatenation/StringConcatenationUnitTest.java
index c25d4ce8f9..9a444e8229 100644
--- a/java-strings-2/src/test/java/com/baeldung/StringConcatenationUnitTest.java
+++ b/core-java-modules/core-java-string-operations-2/src/test/java/com/baeldung/stringconcatenation/StringConcatenationUnitTest.java
@@ -1,4 +1,4 @@
-package com.baeldung;
+package com.baeldung.stringconcatenation;
import org.junit.Test;
diff --git a/core-java-modules/core-java-string-operations/README.md b/core-java-modules/core-java-string-operations/README.md
new file mode 100644
index 0000000000..18a2649a6a
--- /dev/null
+++ b/core-java-modules/core-java-string-operations/README.md
@@ -0,0 +1,16 @@
+## Java String Operations
+
+This module contains articles about string operations.
+
+### Relevant Articles:
+- [Comparing Strings in Java](https://www.baeldung.com/java-compare-strings)
+- [Check If a String Is Numeric in Java](https://www.baeldung.com/java-check-string-number)
+- [Get Substring from String in Java](https://www.baeldung.com/java-substring)
+- [Split a String in Java](https://www.baeldung.com/java-split-string)
+- [Common String Operations in Java](https://www.baeldung.com/java-string-operations)
+- [Java toString() Method](https://www.baeldung.com/java-tostring)
+- [String Operations with Java Streams](https://www.baeldung.com/java-stream-operations-on-strings)
+- [Adding a Newline Character to a String in Java](https://www.baeldung.com/java-string-newline)
+- [Check If a String Contains a Substring](https://www.baeldung.com/java-string-contains-substring)
+- [Java Base64 Encoding and Decoding](https://www.baeldung.com/java-base64-encode-and-decode)
+- More articles: [[next -->]](../core-java-string-operations-2)
diff --git a/core-java-modules/core-java-string-operations/pom.xml b/core-java-modules/core-java-string-operations/pom.xml
new file mode 100644
index 0000000000..fdddd99433
--- /dev/null
+++ b/core-java-modules/core-java-string-operations/pom.xml
@@ -0,0 +1,66 @@
+
+ 4.0.0
+ core-java-string-operations
+ 0.1.0-SNAPSHOT
+ jar
+ core-java-string-operations
+
+
+ com.baeldung
+ parent-java
+ 0.0.1-SNAPSHOT
+ ../../parent-java
+
+
+
+
+ org.apache.commons
+ commons-lang3
+ ${commons-lang3.version}
+
+
+ org.openjdk.jmh
+ jmh-core
+ ${jmh-core.version}
+
+
+ log4j
+ log4j
+ ${log4j.version}
+
+
+ org.openjdk.jmh
+ jmh-generator-annprocess
+ ${jmh-generator.version}
+
+
+ commons-codec
+ commons-codec
+ ${commons-codec.version}
+
+
+ org.assertj
+ assertj-core
+ ${assertj.version}
+ test
+
+
+
+
+ core-java-string-operations
+
+
+ src/main/resources
+ true
+
+
+
+
+
+ 3.8.1
+ 3.6.1
+ 1.10
+
+
+
diff --git a/java-strings-ops/src/main/java/com/baeldung/string/isnumeric/Benchmarking.java b/core-java-modules/core-java-string-operations/src/main/java/com/baeldung/isnumeric/Benchmarking.java
similarity index 98%
rename from java-strings-ops/src/main/java/com/baeldung/string/isnumeric/Benchmarking.java
rename to core-java-modules/core-java-string-operations/src/main/java/com/baeldung/isnumeric/Benchmarking.java
index c4e2742da6..97e7a46757 100644
--- a/java-strings-ops/src/main/java/com/baeldung/string/isnumeric/Benchmarking.java
+++ b/core-java-modules/core-java-string-operations/src/main/java/com/baeldung/isnumeric/Benchmarking.java
@@ -1,4 +1,4 @@
-package com.baeldung.string.isnumeric;
+package com.baeldung.isnumeric;
import java.util.concurrent.TimeUnit;
diff --git a/java-strings-ops/src/main/java/com/baeldung/string/isnumeric/CheckIntegerInput.java b/core-java-modules/core-java-string-operations/src/main/java/com/baeldung/isnumeric/CheckIntegerInput.java
similarity index 91%
rename from java-strings-ops/src/main/java/com/baeldung/string/isnumeric/CheckIntegerInput.java
rename to core-java-modules/core-java-string-operations/src/main/java/com/baeldung/isnumeric/CheckIntegerInput.java
index 2785df0c9b..6c08615c74 100644
--- a/java-strings-ops/src/main/java/com/baeldung/string/isnumeric/CheckIntegerInput.java
+++ b/core-java-modules/core-java-string-operations/src/main/java/com/baeldung/isnumeric/CheckIntegerInput.java
@@ -1,4 +1,4 @@
-package com.baeldung.string.isnumeric;
+package com.baeldung.isnumeric;
import java.util.Scanner;
diff --git a/java-strings-ops/src/main/java/com/baeldung/string/isnumeric/IsNumeric.java b/core-java-modules/core-java-string-operations/src/main/java/com/baeldung/isnumeric/IsNumeric.java
similarity index 96%
rename from java-strings-ops/src/main/java/com/baeldung/string/isnumeric/IsNumeric.java
rename to core-java-modules/core-java-string-operations/src/main/java/com/baeldung/isnumeric/IsNumeric.java
index 508cedd168..6eed0d777d 100644
--- a/java-strings-ops/src/main/java/com/baeldung/string/isnumeric/IsNumeric.java
+++ b/core-java-modules/core-java-string-operations/src/main/java/com/baeldung/isnumeric/IsNumeric.java
@@ -1,4 +1,4 @@
-package com.baeldung.string.isnumeric;
+package com.baeldung.isnumeric;
import org.apache.commons.lang3.StringUtils;
import org.apache.commons.lang3.math.NumberUtils;
diff --git a/java-strings-ops/src/main/java/com/baeldung/string/isnumeric/IsNumericDriver.java b/core-java-modules/core-java-string-operations/src/main/java/com/baeldung/isnumeric/IsNumericDriver.java
similarity index 96%
rename from java-strings-ops/src/main/java/com/baeldung/string/isnumeric/IsNumericDriver.java
rename to core-java-modules/core-java-string-operations/src/main/java/com/baeldung/isnumeric/IsNumericDriver.java
index bb3c96c06e..a6c5449696 100644
--- a/java-strings-ops/src/main/java/com/baeldung/string/isnumeric/IsNumericDriver.java
+++ b/core-java-modules/core-java-string-operations/src/main/java/com/baeldung/isnumeric/IsNumericDriver.java
@@ -1,4 +1,4 @@
-package com.baeldung.string.isnumeric;
+package com.baeldung.isnumeric;
import org.apache.log4j.Logger;
diff --git a/java-strings/src/main/java/com/baeldung/string/newline/AddingNewLineToString.java b/core-java-modules/core-java-string-operations/src/main/java/com/baeldung/newline/AddingNewLineToString.java
similarity index 98%
rename from java-strings/src/main/java/com/baeldung/string/newline/AddingNewLineToString.java
rename to core-java-modules/core-java-string-operations/src/main/java/com/baeldung/newline/AddingNewLineToString.java
index 48b71eed12..f701ab2e45 100644
--- a/java-strings/src/main/java/com/baeldung/string/newline/AddingNewLineToString.java
+++ b/core-java-modules/core-java-string-operations/src/main/java/com/baeldung/newline/AddingNewLineToString.java
@@ -1,4 +1,4 @@
-package com.baeldung.string.newline;
+package com.baeldung.newline;
public class AddingNewLineToString {
diff --git a/java-strings/src/main/java/com/baeldung/string/JoinerSplitter.java b/core-java-modules/core-java-string-operations/src/main/java/com/baeldung/streamoperations/JoinerSplitter.java
similarity index 96%
rename from java-strings/src/main/java/com/baeldung/string/JoinerSplitter.java
rename to core-java-modules/core-java-string-operations/src/main/java/com/baeldung/streamoperations/JoinerSplitter.java
index cdbba1ef53..8a105188ad 100644
--- a/java-strings/src/main/java/com/baeldung/string/JoinerSplitter.java
+++ b/core-java-modules/core-java-string-operations/src/main/java/com/baeldung/streamoperations/JoinerSplitter.java
@@ -1,4 +1,4 @@
-package com.baeldung.string;
+package com.baeldung.streamoperations;
import java.util.Arrays;
import java.util.List;
diff --git a/java-strings-2/src/main/java/com/baeldung/string/search/performance/SubstringSearchPerformanceComparison.java b/core-java-modules/core-java-string-operations/src/main/java/com/baeldung/substringsearch/SubstringSearchPerformanceComparison.java
similarity index 79%
rename from java-strings-2/src/main/java/com/baeldung/string/search/performance/SubstringSearchPerformanceComparison.java
rename to core-java-modules/core-java-string-operations/src/main/java/com/baeldung/substringsearch/SubstringSearchPerformanceComparison.java
index bf33c47a7e..92aef0b879 100644
--- a/java-strings-2/src/main/java/com/baeldung/string/search/performance/SubstringSearchPerformanceComparison.java
+++ b/core-java-modules/core-java-string-operations/src/main/java/com/baeldung/substringsearch/SubstringSearchPerformanceComparison.java
@@ -1,18 +1,11 @@
-package com.baeldung.string.search.performance;
+package com.baeldung.substringsearch;
+
+import org.apache.commons.lang3.StringUtils;
+import org.openjdk.jmh.annotations.*;
import java.util.concurrent.TimeUnit;
import java.util.regex.Pattern;
-import org.apache.commons.lang3.StringUtils;
-import org.openjdk.jmh.annotations.Benchmark;
-import org.openjdk.jmh.annotations.BenchmarkMode;
-import org.openjdk.jmh.annotations.Fork;
-import org.openjdk.jmh.annotations.Mode;
-import org.openjdk.jmh.annotations.OutputTimeUnit;
-import org.openjdk.jmh.annotations.Scope;
-import org.openjdk.jmh.annotations.Setup;
-import org.openjdk.jmh.annotations.State;
-
/**
* Based on https://github.com/tedyoung/indexof-contains-benchmark
*/
diff --git a/java-strings-ops/src/main/java/com/baeldung/string/tostring/Customer.java b/core-java-modules/core-java-string-operations/src/main/java/com/baeldung/tostring/Customer.java
similarity index 91%
rename from java-strings-ops/src/main/java/com/baeldung/string/tostring/Customer.java
rename to core-java-modules/core-java-string-operations/src/main/java/com/baeldung/tostring/Customer.java
index 7ab3936cb9..16e2b05a7c 100644
--- a/java-strings-ops/src/main/java/com/baeldung/string/tostring/Customer.java
+++ b/core-java-modules/core-java-string-operations/src/main/java/com/baeldung/tostring/Customer.java
@@ -1,4 +1,4 @@
-package com.baeldung.string.tostring;
+package com.baeldung.tostring;
public class Customer {
private String firstName;
diff --git a/java-strings-ops/src/main/java/com/baeldung/string/tostring/CustomerArrayToString.java b/core-java-modules/core-java-string-operations/src/main/java/com/baeldung/tostring/CustomerArrayToString.java
similarity index 92%
rename from java-strings-ops/src/main/java/com/baeldung/string/tostring/CustomerArrayToString.java
rename to core-java-modules/core-java-string-operations/src/main/java/com/baeldung/tostring/CustomerArrayToString.java
index 391ced61d3..c942f978da 100644
--- a/java-strings-ops/src/main/java/com/baeldung/string/tostring/CustomerArrayToString.java
+++ b/core-java-modules/core-java-string-operations/src/main/java/com/baeldung/tostring/CustomerArrayToString.java
@@ -1,4 +1,4 @@
-package com.baeldung.string.tostring;
+package com.baeldung.tostring;
import java.util.Arrays;
diff --git a/java-strings-ops/src/main/java/com/baeldung/string/tostring/CustomerComplexObjectToString.java b/core-java-modules/core-java-string-operations/src/main/java/com/baeldung/tostring/CustomerComplexObjectToString.java
similarity index 91%
rename from java-strings-ops/src/main/java/com/baeldung/string/tostring/CustomerComplexObjectToString.java
rename to core-java-modules/core-java-string-operations/src/main/java/com/baeldung/tostring/CustomerComplexObjectToString.java
index ae3d999b12..3ca11779c4 100644
--- a/java-strings-ops/src/main/java/com/baeldung/string/tostring/CustomerComplexObjectToString.java
+++ b/core-java-modules/core-java-string-operations/src/main/java/com/baeldung/tostring/CustomerComplexObjectToString.java
@@ -1,4 +1,4 @@
-package com.baeldung.string.tostring;
+package com.baeldung.tostring;
public class CustomerComplexObjectToString extends Customer {
private Order order;
diff --git a/java-strings-ops/src/main/java/com/baeldung/string/tostring/CustomerPrimitiveToString.java b/core-java-modules/core-java-string-operations/src/main/java/com/baeldung/tostring/CustomerPrimitiveToString.java
similarity index 91%
rename from java-strings-ops/src/main/java/com/baeldung/string/tostring/CustomerPrimitiveToString.java
rename to core-java-modules/core-java-string-operations/src/main/java/com/baeldung/tostring/CustomerPrimitiveToString.java
index 01fe4c8b09..38555aa236 100644
--- a/java-strings-ops/src/main/java/com/baeldung/string/tostring/CustomerPrimitiveToString.java
+++ b/core-java-modules/core-java-string-operations/src/main/java/com/baeldung/tostring/CustomerPrimitiveToString.java
@@ -1,4 +1,4 @@
-package com.baeldung.string.tostring;
+package com.baeldung.tostring;
public class CustomerPrimitiveToString extends Customer {
private long balance;
diff --git a/java-strings-ops/src/main/java/com/baeldung/string/tostring/CustomerReflectionToString.java b/core-java-modules/core-java-string-operations/src/main/java/com/baeldung/tostring/CustomerReflectionToString.java
similarity index 95%
rename from java-strings-ops/src/main/java/com/baeldung/string/tostring/CustomerReflectionToString.java
rename to core-java-modules/core-java-string-operations/src/main/java/com/baeldung/tostring/CustomerReflectionToString.java
index 2a9e3700ec..ad0c57351a 100644
--- a/java-strings-ops/src/main/java/com/baeldung/string/tostring/CustomerReflectionToString.java
+++ b/core-java-modules/core-java-string-operations/src/main/java/com/baeldung/tostring/CustomerReflectionToString.java
@@ -1,4 +1,4 @@
-package com.baeldung.string.tostring;
+package com.baeldung.tostring;
import java.util.List;
diff --git a/java-strings-ops/src/main/java/com/baeldung/string/tostring/CustomerWrapperCollectionToString.java b/core-java-modules/core-java-string-operations/src/main/java/com/baeldung/tostring/CustomerWrapperCollectionToString.java
similarity index 95%
rename from java-strings-ops/src/main/java/com/baeldung/string/tostring/CustomerWrapperCollectionToString.java
rename to core-java-modules/core-java-string-operations/src/main/java/com/baeldung/tostring/CustomerWrapperCollectionToString.java
index b3ff97dc07..7b7d9e4e7d 100644
--- a/java-strings-ops/src/main/java/com/baeldung/string/tostring/CustomerWrapperCollectionToString.java
+++ b/core-java-modules/core-java-string-operations/src/main/java/com/baeldung/tostring/CustomerWrapperCollectionToString.java
@@ -1,4 +1,4 @@
-package com.baeldung.string.tostring;
+package com.baeldung.tostring;
import java.util.List;
diff --git a/java-strings-ops/src/main/java/com/baeldung/string/tostring/Order.java b/core-java-modules/core-java-string-operations/src/main/java/com/baeldung/tostring/Order.java
similarity index 95%
rename from java-strings-ops/src/main/java/com/baeldung/string/tostring/Order.java
rename to core-java-modules/core-java-string-operations/src/main/java/com/baeldung/tostring/Order.java
index 58e0fcce5a..85a5dd169f 100644
--- a/java-strings-ops/src/main/java/com/baeldung/string/tostring/Order.java
+++ b/core-java-modules/core-java-string-operations/src/main/java/com/baeldung/tostring/Order.java
@@ -1,4 +1,4 @@
-package com.baeldung.string.tostring;
+package com.baeldung.tostring;
public class Order {
diff --git a/core-java-modules/core-java-string-operations/src/main/resources/log4j.properties b/core-java-modules/core-java-string-operations/src/main/resources/log4j.properties
new file mode 100644
index 0000000000..2ea9fa9209
--- /dev/null
+++ b/core-java-modules/core-java-string-operations/src/main/resources/log4j.properties
@@ -0,0 +1,8 @@
+# Root logger option
+log4j.rootLogger=DEBUG, stdout
+
+# Redirect log messages to console
+log4j.appender.stdout=org.apache.log4j.ConsoleAppender
+log4j.appender.stdout.Target=System.out
+log4j.appender.stdout.layout=org.apache.log4j.PatternLayout
+log4j.appender.stdout.layout.ConversionPattern=%d{yyyy-MM-dd HH:mm:ss} %-5p %c{1}:%L - %m%n
\ No newline at end of file
diff --git a/java-strings-2/src/test/java/com/baeldung/base64encodinganddecoding/ApacheCommonsEncodeDecodeUnitTest.java b/core-java-modules/core-java-string-operations/src/test/java/com/baeldung/base64encodinganddecoding/ApacheCommonsEncodeDecodeUnitTest.java
similarity index 100%
rename from java-strings-2/src/test/java/com/baeldung/base64encodinganddecoding/ApacheCommonsEncodeDecodeUnitTest.java
rename to core-java-modules/core-java-string-operations/src/test/java/com/baeldung/base64encodinganddecoding/ApacheCommonsEncodeDecodeUnitTest.java
diff --git a/java-strings-2/src/test/java/com/baeldung/base64encodinganddecoding/Java8EncodeDecodeUnitTest.java b/core-java-modules/core-java-string-operations/src/test/java/com/baeldung/base64encodinganddecoding/Java8EncodeDecodeUnitTest.java
similarity index 100%
rename from java-strings-2/src/test/java/com/baeldung/base64encodinganddecoding/Java8EncodeDecodeUnitTest.java
rename to core-java-modules/core-java-string-operations/src/test/java/com/baeldung/base64encodinganddecoding/Java8EncodeDecodeUnitTest.java
diff --git a/java-strings-2/src/test/java/com/baeldung/base64encodinganddecoding/StringToByteArrayUnitTest.java b/core-java-modules/core-java-string-operations/src/test/java/com/baeldung/base64encodinganddecoding/StringToByteArrayUnitTest.java
similarity index 99%
rename from java-strings-2/src/test/java/com/baeldung/base64encodinganddecoding/StringToByteArrayUnitTest.java
rename to core-java-modules/core-java-string-operations/src/test/java/com/baeldung/base64encodinganddecoding/StringToByteArrayUnitTest.java
index e2bb7bb64d..6f8a17e316 100644
--- a/java-strings-2/src/test/java/com/baeldung/base64encodinganddecoding/StringToByteArrayUnitTest.java
+++ b/core-java-modules/core-java-string-operations/src/test/java/com/baeldung/base64encodinganddecoding/StringToByteArrayUnitTest.java
@@ -1,16 +1,15 @@
package com.baeldung.base64encodinganddecoding;
-import static org.junit.Assert.assertEquals;
-import static org.junit.Assert.assertTrue;
+import org.junit.Test;
+import javax.xml.bind.DatatypeConverter;
import java.io.UnsupportedEncodingException;
import java.nio.charset.StandardCharsets;
import java.util.Arrays;
import java.util.Base64;
-import javax.xml.bind.DatatypeConverter;
-
-import org.junit.Test;
+import static org.junit.Assert.assertEquals;
+import static org.junit.Assert.assertTrue;
public class StringToByteArrayUnitTest {
diff --git a/java-strings-ops/src/test/java/com/baeldung/string/isnumeric/CoreJavaIsNumericUnitTest.java b/core-java-modules/core-java-string-operations/src/test/java/com/baeldung/isnumeric/CoreJavaIsNumericUnitTest.java
similarity index 95%
rename from java-strings-ops/src/test/java/com/baeldung/string/isnumeric/CoreJavaIsNumericUnitTest.java
rename to core-java-modules/core-java-string-operations/src/test/java/com/baeldung/isnumeric/CoreJavaIsNumericUnitTest.java
index 6228fdb5af..6c03b00e69 100644
--- a/java-strings-ops/src/test/java/com/baeldung/string/isnumeric/CoreJavaIsNumericUnitTest.java
+++ b/core-java-modules/core-java-string-operations/src/test/java/com/baeldung/isnumeric/CoreJavaIsNumericUnitTest.java
@@ -1,4 +1,4 @@
-package com.baeldung.string.isnumeric;
+package com.baeldung.isnumeric;
import static org.assertj.core.api.Assertions.assertThat;
diff --git a/java-strings-ops/src/test/java/com/baeldung/string/isnumeric/NumberUtilsIsCreatableUnitTest.java b/core-java-modules/core-java-string-operations/src/test/java/com/baeldung/isnumeric/NumberUtilsIsCreatableUnitTest.java
similarity index 96%
rename from java-strings-ops/src/test/java/com/baeldung/string/isnumeric/NumberUtilsIsCreatableUnitTest.java
rename to core-java-modules/core-java-string-operations/src/test/java/com/baeldung/isnumeric/NumberUtilsIsCreatableUnitTest.java
index 346248cb40..3b88721ad4 100644
--- a/java-strings-ops/src/test/java/com/baeldung/string/isnumeric/NumberUtilsIsCreatableUnitTest.java
+++ b/core-java-modules/core-java-string-operations/src/test/java/com/baeldung/isnumeric/NumberUtilsIsCreatableUnitTest.java
@@ -1,4 +1,4 @@
-package com.baeldung.string.isnumeric;
+package com.baeldung.isnumeric;
import static org.assertj.core.api.Assertions.assertThat;
diff --git a/java-strings-ops/src/test/java/com/baeldung/string/isnumeric/NumberUtilsIsParsableUnitTest.java b/core-java-modules/core-java-string-operations/src/test/java/com/baeldung/isnumeric/NumberUtilsIsParsableUnitTest.java
similarity index 96%
rename from java-strings-ops/src/test/java/com/baeldung/string/isnumeric/NumberUtilsIsParsableUnitTest.java
rename to core-java-modules/core-java-string-operations/src/test/java/com/baeldung/isnumeric/NumberUtilsIsParsableUnitTest.java
index fa2f2aec6d..6b96a6efa1 100644
--- a/java-strings-ops/src/test/java/com/baeldung/string/isnumeric/NumberUtilsIsParsableUnitTest.java
+++ b/core-java-modules/core-java-string-operations/src/test/java/com/baeldung/isnumeric/NumberUtilsIsParsableUnitTest.java
@@ -1,4 +1,4 @@
-package com.baeldung.string.isnumeric;
+package com.baeldung.isnumeric;
import static org.assertj.core.api.Assertions.assertThat;
diff --git a/java-strings-ops/src/test/java/com/baeldung/string/isnumeric/RegularExpressionsUnitTest.java b/core-java-modules/core-java-string-operations/src/test/java/com/baeldung/isnumeric/RegularExpressionsUnitTest.java
similarity index 93%
rename from java-strings-ops/src/test/java/com/baeldung/string/isnumeric/RegularExpressionsUnitTest.java
rename to core-java-modules/core-java-string-operations/src/test/java/com/baeldung/isnumeric/RegularExpressionsUnitTest.java
index 0f7f0eb081..04f3de8dc5 100644
--- a/java-strings-ops/src/test/java/com/baeldung/string/isnumeric/RegularExpressionsUnitTest.java
+++ b/core-java-modules/core-java-string-operations/src/test/java/com/baeldung/isnumeric/RegularExpressionsUnitTest.java
@@ -1,4 +1,4 @@
-package com.baeldung.string.isnumeric;
+package com.baeldung.isnumeric;
import static org.assertj.core.api.Assertions.assertThat;
diff --git a/java-strings-ops/src/test/java/com/baeldung/string/isnumeric/StringUtilsIsNumericSpaceUnitTest.java b/core-java-modules/core-java-string-operations/src/test/java/com/baeldung/isnumeric/StringUtilsIsNumericSpaceUnitTest.java
similarity index 95%
rename from java-strings-ops/src/test/java/com/baeldung/string/isnumeric/StringUtilsIsNumericSpaceUnitTest.java
rename to core-java-modules/core-java-string-operations/src/test/java/com/baeldung/isnumeric/StringUtilsIsNumericSpaceUnitTest.java
index 05651cc567..0c5e52580f 100644
--- a/java-strings-ops/src/test/java/com/baeldung/string/isnumeric/StringUtilsIsNumericSpaceUnitTest.java
+++ b/core-java-modules/core-java-string-operations/src/test/java/com/baeldung/isnumeric/StringUtilsIsNumericSpaceUnitTest.java
@@ -1,4 +1,4 @@
-package com.baeldung.string.isnumeric;
+package com.baeldung.isnumeric;
import static org.assertj.core.api.Assertions.assertThat;
diff --git a/java-strings-ops/src/test/java/com/baeldung/string/isnumeric/StringUtilsIsNumericUnitTest.java b/core-java-modules/core-java-string-operations/src/test/java/com/baeldung/isnumeric/StringUtilsIsNumericUnitTest.java
similarity index 95%
rename from java-strings-ops/src/test/java/com/baeldung/string/isnumeric/StringUtilsIsNumericUnitTest.java
rename to core-java-modules/core-java-string-operations/src/test/java/com/baeldung/isnumeric/StringUtilsIsNumericUnitTest.java
index cae08874da..660426cdbb 100644
--- a/java-strings-ops/src/test/java/com/baeldung/string/isnumeric/StringUtilsIsNumericUnitTest.java
+++ b/core-java-modules/core-java-string-operations/src/test/java/com/baeldung/isnumeric/StringUtilsIsNumericUnitTest.java
@@ -1,4 +1,4 @@
-package com.baeldung.string.isnumeric;
+package com.baeldung.isnumeric;
import static org.assertj.core.api.Assertions.assertThat;
diff --git a/java-strings-ops/src/test/java/com/baeldung/string/SplitUnitTest.java b/core-java-modules/core-java-string-operations/src/test/java/com/baeldung/split/SplitUnitTest.java
similarity index 98%
rename from java-strings-ops/src/test/java/com/baeldung/string/SplitUnitTest.java
rename to core-java-modules/core-java-string-operations/src/test/java/com/baeldung/split/SplitUnitTest.java
index 1936bfb6fb..eaa61e5041 100644
--- a/java-strings-ops/src/test/java/com/baeldung/string/SplitUnitTest.java
+++ b/core-java-modules/core-java-string-operations/src/test/java/com/baeldung/split/SplitUnitTest.java
@@ -1,4 +1,4 @@
-package com.baeldung.string;
+package com.baeldung.split;
import static org.assertj.core.api.Assertions.assertThat;
diff --git a/java-strings/src/test/java/com/baeldung/string/JoinerSplitterUnitTest.java b/core-java-modules/core-java-string-operations/src/test/java/com/baeldung/streamoperations/JoinerSplitterUnitTest.java
similarity index 98%
rename from java-strings/src/test/java/com/baeldung/string/JoinerSplitterUnitTest.java
rename to core-java-modules/core-java-string-operations/src/test/java/com/baeldung/streamoperations/JoinerSplitterUnitTest.java
index a9488e27a4..2a0f03d3a8 100644
--- a/java-strings/src/test/java/com/baeldung/string/JoinerSplitterUnitTest.java
+++ b/core-java-modules/core-java-string-operations/src/test/java/com/baeldung/streamoperations/JoinerSplitterUnitTest.java
@@ -1,4 +1,4 @@
-package com.baeldung.string;
+package com.baeldung.streamoperations;
import org.junit.Test;
diff --git a/java-strings-ops/src/test/java/com/baeldung/string/StringComparisonUnitTest.java b/core-java-modules/core-java-string-operations/src/test/java/com/baeldung/stringcomparison/StringComparisonUnitTest.java
similarity index 99%
rename from java-strings-ops/src/test/java/com/baeldung/string/StringComparisonUnitTest.java
rename to core-java-modules/core-java-string-operations/src/test/java/com/baeldung/stringcomparison/StringComparisonUnitTest.java
index 5339a0c72e..0bab708fde 100644
--- a/java-strings-ops/src/test/java/com/baeldung/string/StringComparisonUnitTest.java
+++ b/core-java-modules/core-java-string-operations/src/test/java/com/baeldung/stringcomparison/StringComparisonUnitTest.java
@@ -1,4 +1,4 @@
-package com.baeldung.string;
+package com.baeldung.stringcomparison;
import static org.assertj.core.api.Assertions.assertThat;
diff --git a/java-strings-ops/src/test/java/com/baeldung/string/SubstringUnitTest.java b/core-java-modules/core-java-string-operations/src/test/java/com/baeldung/substring/SubstringUnitTest.java
similarity index 98%
rename from java-strings-ops/src/test/java/com/baeldung/string/SubstringUnitTest.java
rename to core-java-modules/core-java-string-operations/src/test/java/com/baeldung/substring/SubstringUnitTest.java
index eb397f2a3f..00340ba7cc 100644
--- a/java-strings-ops/src/test/java/com/baeldung/string/SubstringUnitTest.java
+++ b/core-java-modules/core-java-string-operations/src/test/java/com/baeldung/substring/SubstringUnitTest.java
@@ -1,4 +1,4 @@
-package com.baeldung.string;
+package com.baeldung.substring;
import java.util.Scanner;
import java.util.regex.Matcher;
diff --git a/java-strings-2/src/test/java/com/baeldung/string/search/SubstringSearchUnitTest.java b/core-java-modules/core-java-string-operations/src/test/java/com/baeldung/substringsearch/SubstringSearchUnitTest.java
similarity index 98%
rename from java-strings-2/src/test/java/com/baeldung/string/search/SubstringSearchUnitTest.java
rename to core-java-modules/core-java-string-operations/src/test/java/com/baeldung/substringsearch/SubstringSearchUnitTest.java
index 293e6d2125..c641ccbe07 100644
--- a/java-strings-2/src/test/java/com/baeldung/string/search/SubstringSearchUnitTest.java
+++ b/core-java-modules/core-java-string-operations/src/test/java/com/baeldung/substringsearch/SubstringSearchUnitTest.java
@@ -1,12 +1,12 @@
-package com.baeldung.string.search;
-
-import java.util.regex.Matcher;
-import java.util.regex.Pattern;
+package com.baeldung.substringsearch;
import org.apache.commons.lang3.StringUtils;
import org.junit.Assert;
import org.junit.Test;
+import java.util.regex.Matcher;
+import java.util.regex.Pattern;
+
/**
* BAEL-2832: Different ways to check if a Substring could be found in a String.
*/
diff --git a/java-strings-ops/src/test/java/com/baeldung/string/tostring/CustomerArrayToStringUnitTest.java b/core-java-modules/core-java-string-operations/src/test/java/com/baeldung/tostring/CustomerArrayToStringUnitTest.java
similarity index 95%
rename from java-strings-ops/src/test/java/com/baeldung/string/tostring/CustomerArrayToStringUnitTest.java
rename to core-java-modules/core-java-string-operations/src/test/java/com/baeldung/tostring/CustomerArrayToStringUnitTest.java
index ced8b15f2e..a754ed3c68 100644
--- a/java-strings-ops/src/test/java/com/baeldung/string/tostring/CustomerArrayToStringUnitTest.java
+++ b/core-java-modules/core-java-string-operations/src/test/java/com/baeldung/tostring/CustomerArrayToStringUnitTest.java
@@ -1,4 +1,4 @@
-package com.baeldung.string.tostring;
+package com.baeldung.tostring;
import static org.junit.jupiter.api.Assertions.assertEquals;
diff --git a/java-strings-ops/src/test/java/com/baeldung/string/tostring/CustomerComplexObjectToStringUnitTest.java b/core-java-modules/core-java-string-operations/src/test/java/com/baeldung/tostring/CustomerComplexObjectToStringUnitTest.java
similarity index 95%
rename from java-strings-ops/src/test/java/com/baeldung/string/tostring/CustomerComplexObjectToStringUnitTest.java
rename to core-java-modules/core-java-string-operations/src/test/java/com/baeldung/tostring/CustomerComplexObjectToStringUnitTest.java
index 564fde8766..1b26d3e0a2 100644
--- a/java-strings-ops/src/test/java/com/baeldung/string/tostring/CustomerComplexObjectToStringUnitTest.java
+++ b/core-java-modules/core-java-string-operations/src/test/java/com/baeldung/tostring/CustomerComplexObjectToStringUnitTest.java
@@ -1,4 +1,4 @@
-package com.baeldung.string.tostring;
+package com.baeldung.tostring;
import static org.junit.jupiter.api.Assertions.assertEquals;
diff --git a/java-strings-ops/src/test/java/com/baeldung/string/tostring/CustomerPrimitiveToStringUnitTest.java b/core-java-modules/core-java-string-operations/src/test/java/com/baeldung/tostring/CustomerPrimitiveToStringUnitTest.java
similarity index 94%
rename from java-strings-ops/src/test/java/com/baeldung/string/tostring/CustomerPrimitiveToStringUnitTest.java
rename to core-java-modules/core-java-string-operations/src/test/java/com/baeldung/tostring/CustomerPrimitiveToStringUnitTest.java
index f585a8a26c..a21ab1616f 100644
--- a/java-strings-ops/src/test/java/com/baeldung/string/tostring/CustomerPrimitiveToStringUnitTest.java
+++ b/core-java-modules/core-java-string-operations/src/test/java/com/baeldung/tostring/CustomerPrimitiveToStringUnitTest.java
@@ -1,4 +1,4 @@
-package com.baeldung.string.tostring;
+package com.baeldung.tostring;
import static org.junit.jupiter.api.Assertions.assertEquals;
diff --git a/java-strings-ops/src/test/java/com/baeldung/string/tostring/CustomerWrapperCollectionToStringUnitTest.java b/core-java-modules/core-java-string-operations/src/test/java/com/baeldung/tostring/CustomerWrapperCollectionToStringUnitTest.java
similarity index 96%
rename from java-strings-ops/src/test/java/com/baeldung/string/tostring/CustomerWrapperCollectionToStringUnitTest.java
rename to core-java-modules/core-java-string-operations/src/test/java/com/baeldung/tostring/CustomerWrapperCollectionToStringUnitTest.java
index 9b3f8a1a6f..da4937ccdd 100644
--- a/java-strings-ops/src/test/java/com/baeldung/string/tostring/CustomerWrapperCollectionToStringUnitTest.java
+++ b/core-java-modules/core-java-string-operations/src/test/java/com/baeldung/tostring/CustomerWrapperCollectionToStringUnitTest.java
@@ -1,4 +1,4 @@
-package com.baeldung.string.tostring;
+package com.baeldung.tostring;
import static org.junit.jupiter.api.Assertions.assertEquals;
diff --git a/ethereum/pom.xml b/ethereum/pom.xml
index f4850df844..148909e787 100644
--- a/ethereum/pom.xml
+++ b/ethereum/pom.xml
@@ -1,5 +1,5 @@
+ xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
4.0.0
com.baeldung.ethereum
ethereum
@@ -215,5 +215,4 @@
1.7.25
2.0.4.RELEASE
-
diff --git a/hystrix/src/test/java/com/baeldung/hystrix/SpringAndHystrixIntegrationTest.java b/hystrix/src/test/java/com/baeldung/hystrix/SpringAndHystrixIntegrationTest.java
index 004314b0ed..c8910878a9 100644
--- a/hystrix/src/test/java/com/baeldung/hystrix/SpringAndHystrixIntegrationTest.java
+++ b/hystrix/src/test/java/com/baeldung/hystrix/SpringAndHystrixIntegrationTest.java
@@ -13,7 +13,7 @@ import static org.hamcrest.MatcherAssert.assertThat;
import static org.hamcrest.Matchers.equalTo;
@RunWith(SpringRunner.class)
-@SpringBootTest(webEnvironment = SpringBootTest.WebEnvironment.DEFINED_PORT, classes = AppConfig.class)
+@SpringBootTest(webEnvironment = SpringBootTest.WebEnvironment.RANDOM_PORT, classes = AppConfig.class)
public class SpringAndHystrixIntegrationTest {
@Autowired
diff --git a/jackson-simple/src/test/java/com/baeldung/jackson/annotation/MyBean.java b/jackson-simple/src/test/java/com/baeldung/jackson/annotation/MyBean.java
index 5d4ce4202c..e4e78ce445 100644
--- a/jackson-simple/src/test/java/com/baeldung/jackson/annotation/MyBean.java
+++ b/jackson-simple/src/test/java/com/baeldung/jackson/annotation/MyBean.java
@@ -1,8 +1,10 @@
package com.baeldung.jackson.annotation;
+import com.fasterxml.jackson.annotation.JsonGetter;
import com.fasterxml.jackson.annotation.JsonInclude;
import com.fasterxml.jackson.annotation.JsonInclude.Include;
import com.fasterxml.jackson.annotation.JsonPropertyOrder;
+import com.fasterxml.jackson.annotation.JsonSetter;
@JsonInclude(Include.NON_NULL)
@JsonPropertyOrder({ "name", "id" })
@@ -18,4 +20,14 @@ public class MyBean {
this.id = id;
this.name = name;
}
+
+ @JsonGetter("name")
+ public String getTheName() {
+ return name;
+ }
+
+ @JsonSetter("name")
+ public void setTheName(String name) {
+ this.name = name;
+ }
}
diff --git a/java-strings-2/README.md b/java-strings-2/README.md
index b97df7c969..ecbdb7def9 100644
--- a/java-strings-2/README.md
+++ b/java-strings-2/README.md
@@ -5,13 +5,7 @@ This module contains articles about strings in Java.
### Relevant Articles:
- [Java Localization – Formatting Messages](https://www.baeldung.com/java-localization-messages-formatting)
-- [Check If a String Contains a Substring](https://www.baeldung.com/java-string-contains-substring)
- [Java – Generate Random String](https://www.baeldung.com/java-random-string)
-- [Java Base64 Encoding and Decoding](https://www.baeldung.com/java-base64-encode-and-decode)
-- [Concatenating Strings In Java](https://www.baeldung.com/java-strings-concatenation)
- [Java String Interview Questions and Answers](https://www.baeldung.com/java-string-interview-questions)
-- [Checking for Empty or Blank Strings in Java](https://www.baeldung.com/java-blank-empty-strings)
-- [String Initialization in Java](https://www.baeldung.com/java-string-initialization)
- [Java Multi-line String](https://www.baeldung.com/java-multiline-string)
-- [String toLowerCase and toUpperCase Methods in Java](https://www.baeldung.com/java-string-convert-case)
-- More articles: [[<-- prev>]](/java-strings) [[next -->]](/java-strings-3)
+- More articles: [[<-- prev>]](/java-strings)
diff --git a/java-numbers/src/test/java/com/baeldung/random/JavaRandomUnitTest.java b/java-strings-2/src/test/java/com/baeldung/random/JavaRandomUnitTest.java
similarity index 100%
rename from java-numbers/src/test/java/com/baeldung/random/JavaRandomUnitTest.java
rename to java-strings-2/src/test/java/com/baeldung/random/JavaRandomUnitTest.java
diff --git a/java-strings-3/README.md b/java-strings-3/README.md
deleted file mode 100644
index 642752182f..0000000000
--- a/java-strings-3/README.md
+++ /dev/null
@@ -1,10 +0,0 @@
-## Java Strings Cookbooks and Examples
-
-This module contains articles about strings in Java.
-
-### Relevant Articles:
-- [Java String equalsIgnoreCase()](https://www.baeldung.com/java-string-equalsignorecase)
-- [Finding the Difference Between Two Strings in Java](https://www.baeldung.com/java-difference-between-two-strings)
-- [Counting Words in a String](https://www.baeldung.com/java-word-counting)
-- [Convert Character Array to String in Java](https://www.baeldung.com/java-char-array-to-string)
-- More articles: [[<-- prev>]](/java-strings-2)
diff --git a/java-strings-3/pom.xml b/java-strings-3/pom.xml
deleted file mode 100644
index 4589780c15..0000000000
--- a/java-strings-3/pom.xml
+++ /dev/null
@@ -1,161 +0,0 @@
-
- 4.0.0
- java-strings-3
- 0.1.0-SNAPSHOT
- jar
- java-strings-3
-
-
- com.baeldung
- parent-java
- 0.0.1-SNAPSHOT
- ../parent-java
-
-
-
-
- org.openjdk.jmh
- jmh-core
- ${jmh-core.version}
-
-
- org.openjdk.jmh
- jmh-generator-annprocess
- ${jmh-core.version}
-
-
- com.ibm.icu
- icu4j
- ${icu4j.version}
-
-
- com.google.guava
- guava
- ${guava.version}
-
-
- org.apache.commons
- commons-lang3
- ${commons-lang3.version}
-
-
- commons-io
- commons-io
- ${commons-io.version}
-
-
- commons-codec
- commons-codec
- ${commons-codec.version}
-
-
- junit
- junit
- ${junit.version}
- test
-
-
- org.hamcrest
- hamcrest-library
- ${org.hamcrest.version}
- test
-
-
- org.assertj
- assertj-core
- ${assertj.version}
- test
-
-
- org.bitbucket.cowwoc
- diff-match-patch
- 1.2
- test
-
-
-
-
- org.passay
- passay
- ${passay.version}
-
-
- org.apache.commons
- commons-text
- ${commons-text.version}
-
-
- com.vdurmont
- emoji-java
- ${emoji-java.version}
-
-
- org.ahocorasick
- ahocorasick
- ${ahocorasick.version}
-
-
- javax.validation
- validation-api
- ${validation-api.version}
-
-
- org.hibernate.validator
- hibernate-validator
- ${hibernate-validator.version}
-
-
- javax.el
- javax.el-api
- ${javax.el-api.version}
-
-
- org.glassfish.web
- javax.el
- ${javax.el.version}
-
-
-
-
- java-strings-3
-
-
- src/main/resources
- true
-
-
-
-
-
- org.apache.maven.plugins
- maven-compiler-plugin
- ${maven-compiler-plugin.version}
-
- ${java.version}
- ${java.version}
- -parameters
-
-
-
-
-
-
- 3.8.1
- 1.10
- 1.3.1
-
- 3.6.1
- 4.0.0
- 0.4.0
- 61.1
- 28.0-jre
- 1.4
- 2.0.0.Final
- 6.0.2.Final
- 3.0.0
- 2.2.6
-
-
-
\ No newline at end of file
diff --git a/java-strings-3/src/main/resources/.gitignore b/java-strings-3/src/main/resources/.gitignore
deleted file mode 100644
index 83c05e60c8..0000000000
--- a/java-strings-3/src/main/resources/.gitignore
+++ /dev/null
@@ -1,13 +0,0 @@
-*.class
-
-#folders#
-/target
-/neoDb*
-/data
-/src/main/webapp/WEB-INF/classes
-*/META-INF/*
-
-# Packaged files #
-*.jar
-*.war
-*.ear
\ No newline at end of file
diff --git a/java-strings-3/src/test/resources/.gitignore b/java-strings-3/src/test/resources/.gitignore
deleted file mode 100644
index 83c05e60c8..0000000000
--- a/java-strings-3/src/test/resources/.gitignore
+++ /dev/null
@@ -1,13 +0,0 @@
-*.class
-
-#folders#
-/target
-/neoDb*
-/data
-/src/main/webapp/WEB-INF/classes
-*/META-INF/*
-
-# Packaged files #
-*.jar
-*.war
-*.ear
\ No newline at end of file
diff --git a/java-strings-ops/README.md b/java-strings-ops/README.md
index e35a3808f0..4c618585f3 100644
--- a/java-strings-ops/README.md
+++ b/java-strings-ops/README.md
@@ -3,10 +3,4 @@
This module contains articles about operations on strings in Java.
### Relevant Articles:
-- [Comparing Strings in Java](https://www.baeldung.com/java-compare-strings)
-- [Check If a String Is Numeric in Java](https://www.baeldung.com/java-check-string-number)
-- [Get Substring from String in Java](https://www.baeldung.com/java-substring)
- [Guide to Java String Pool](https://www.baeldung.com/java-string-pool)
-- [Split a String in Java](https://www.baeldung.com/java-split-string)
-- [Common String Operations in Java](https://www.baeldung.com/java-string-operations)
-- [Java toString() Method](https://www.baeldung.com/java-tostring)
diff --git a/java-strings/README.md b/java-strings/README.md
index e2ffbe6453..4668ad014e 100644
--- a/java-strings/README.md
+++ b/java-strings/README.md
@@ -3,10 +3,8 @@
This module contains articles about strings in Java.
### Relevant Articles:
-- [String Operations with Java Streams](https://www.baeldung.com/java-stream-operations-on-strings)
- [Use char[] Array Over a String for Manipulating Passwords in Java?](https://www.baeldung.com/java-storing-passwords)
- [Compact Strings in Java 9](https://www.baeldung.com/java-9-compact-string)
- [String Not Empty Test Assertions in Java](https://www.baeldung.com/java-assert-string-not-empty)
- [String Performance Hints](https://www.baeldung.com/java-string-performance)
-- [Adding a Newline Character to a String in Java](https://www.baeldung.com/java-string-newline)
- More articles: [[next -->]](/java-strings-2)
diff --git a/javaxval/src/main/java/org/baeldung/javaxval/messageinterpolator/Person.java b/javaxval/src/main/java/org/baeldung/javaxval/messageinterpolator/Person.java
new file mode 100644
index 0000000000..b9fcfdf4d4
--- /dev/null
+++ b/javaxval/src/main/java/org/baeldung/javaxval/messageinterpolator/Person.java
@@ -0,0 +1,42 @@
+package org.baeldung.javaxval.messageinterpolator;
+
+import javax.validation.constraints.Email;
+import javax.validation.constraints.Min;
+import javax.validation.constraints.Size;
+
+public class Person {
+
+ @Size(min = 10, max = 100, message = "Name should be between {min} and {max} characters")
+ private String name;
+
+ @Min(value = 18, message = "Age should not be less than {value}")
+ private int age;
+
+ @Email(message = "Email address should be in a correct format: ${validatedValue}")
+ private String email;
+
+ public String getName() {
+ return name;
+ }
+
+ public void setName(String name) {
+ this.name = name;
+ }
+
+ public int getAge() {
+ return age;
+ }
+
+ public void setAge(int age) {
+ this.age = age;
+ }
+
+ public String getEmail() {
+ return email;
+ }
+
+ public void setEmail(String email) {
+ this.email = email;
+ }
+
+}
diff --git a/javaxval/src/test/java/org/baeldung/javaxval/messageinterpolator/ParameterMessageInterpolaterIntegrationTest.java b/javaxval/src/test/java/org/baeldung/javaxval/messageinterpolator/ParameterMessageInterpolaterIntegrationTest.java
new file mode 100644
index 0000000000..6ecb916ab4
--- /dev/null
+++ b/javaxval/src/test/java/org/baeldung/javaxval/messageinterpolator/ParameterMessageInterpolaterIntegrationTest.java
@@ -0,0 +1,70 @@
+package org.baeldung.javaxval.messageinterpolator;
+
+import static org.junit.jupiter.api.Assertions.assertEquals;
+
+import java.util.Set;
+
+import javax.validation.ConstraintViolation;
+import javax.validation.Validation;
+import javax.validation.Validator;
+import javax.validation.ValidatorFactory;
+
+import org.hibernate.validator.messageinterpolation.ParameterMessageInterpolator;
+import org.junit.BeforeClass;
+import org.junit.Test;
+
+public class ParameterMessageInterpolaterIntegrationTest {
+
+ private static Validator validator;
+
+ @BeforeClass
+ public static void beforeClass() {
+ ValidatorFactory validatorFactory = Validation.byDefaultProvider()
+ .configure()
+ .messageInterpolator(new ParameterMessageInterpolator())
+ .buildValidatorFactory();
+
+ validator = validatorFactory.getValidator();
+ }
+
+ @Test
+ public void givenNameLengthLessThanMin_whenValidate_thenValidationFails() {
+ Person person = new Person();
+ person.setName("John Doe");
+ person.setAge(18);
+
+ Set> violations = validator.validate(person);
+ assertEquals(1, violations.size());
+
+ ConstraintViolation violation = violations.iterator().next();
+ assertEquals("Name should be between 10 and 100 characters", violation.getMessage());
+ }
+
+ @Test
+ public void givenAgeIsLessThanMin_whenValidate_thenValidationFails() {
+ Person person = new Person();
+ person.setName("John Stephaner Doe");
+ person.setAge(16);
+
+ Set> violations = validator.validate(person);
+ assertEquals(1, violations.size());
+
+ ConstraintViolation violation = violations.iterator().next();
+ assertEquals("Age should not be less than 18", violation.getMessage());
+ }
+
+ @Test
+ public void givenEmailIsMalformed_whenValidate_thenValidationFails() {
+ Person person = new Person();
+ person.setName("John Stephaner Doe");
+ person.setAge(18);
+ person.setEmail("johndoe.dev");
+
+ Set> violations = validator.validate(person);
+ assertEquals(1, violations.size());
+
+ ConstraintViolation violation = violations.iterator().next();
+ assertEquals("Email address should be in a correct format: ${validatedValue}", violation.getMessage());
+ }
+
+}
diff --git a/jee-kotlin/pom.xml b/jee-kotlin/pom.xml
index 17163ba23c..60765f6bc2 100644
--- a/jee-kotlin/pom.xml
+++ b/jee-kotlin/pom.xml
@@ -230,7 +230,7 @@
- wildfly-remote-arquillian
+ wildfly-remote-arquillian-disabled
org.jboss.resteasy
diff --git a/jta/pom.xml b/jta/pom.xml
index b7e39c66e1..1e86a0144c 100644
--- a/jta/pom.xml
+++ b/jta/pom.xml
@@ -30,12 +30,6 @@
spring-boot-starter
-
- org.springframework.boot
- spring-boot-starter-test
- test
-
-
org.hsqldb
hsqldb
diff --git a/libraries-data-io/src/main/resources/csv/twoColumn.csv b/libraries-data-io/src/main/resources/csv/twoColumn.csv
new file mode 100644
index 0000000000..56d8fa1901
--- /dev/null
+++ b/libraries-data-io/src/main/resources/csv/twoColumn.csv
@@ -0,0 +1,5 @@
+colA, ColB
+A, B
+C, D
+G, G
+G, F
\ No newline at end of file
diff --git a/libraries-data-io/src/main/resources/csv/writtenAll.csv b/libraries-data-io/src/main/resources/csv/writtenAll.csv
new file mode 100644
index 0000000000..e69de29bb2
diff --git a/libraries-data-io/src/main/resources/csv/writtenBean.csv b/libraries-data-io/src/main/resources/csv/writtenBean.csv
new file mode 100644
index 0000000000..e69de29bb2
diff --git a/libraries-data-io/src/main/resources/csv/writtenOneByOne.csv b/libraries-data-io/src/main/resources/csv/writtenOneByOne.csv
new file mode 100644
index 0000000000..e69de29bb2
diff --git a/libraries-testing/pom.xml b/libraries-testing/pom.xml
index a2fbed31b2..86c9bd52e1 100644
--- a/libraries-testing/pom.xml
+++ b/libraries-testing/pom.xml
@@ -125,19 +125,6 @@
${java-hamcrest.version}
test
-
-
- net.serenity-bdd
- serenity-core
- ${serenity.version}
- test
-
-
- org.asciidoctor
- asciidoctorj
-
-
-
org.asciidoctor
asciidoctor-maven-plugin
diff --git a/parent-boot-2/pom.xml b/parent-boot-2/pom.xml
index edc115d186..fe272b56a3 100644
--- a/parent-boot-2/pom.xml
+++ b/parent-boot-2/pom.xml
@@ -78,6 +78,6 @@
3.3.0
1.0.22.RELEASE
- 2.1.7.RELEASE
+ 2.1.9.RELEASE
diff --git a/parent-kotlin/pom.xml b/parent-kotlin/pom.xml
index bda5fb70e7..84844dbb8b 100644
--- a/parent-kotlin/pom.xml
+++ b/parent-kotlin/pom.xml
@@ -1,6 +1,6 @@
+ xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
4.0.0
parent-kotlin
parent-kotlin
@@ -13,34 +13,34 @@
1.0.0-SNAPSHOT
-
-
- jcenter
- http://jcenter.bintray.com
-
-
- kotlin-ktor
- https://dl.bintray.com/kotlin/ktor/
-
-
- kotlin-eap
- http://dl.bintray.com/kotlin/kotlin-eap
-
-
- spring-milestone
- Spring Milestone Repository
- http://repo.spring.io/milestone
-
-
-
-
-
- kotlin-eap
- http://dl.bintray.com/kotlin/kotlin-eap
-
-
-
-
+
+
+ jcenter
+ http://jcenter.bintray.com
+
+
+ kotlin-ktor
+ https://dl.bintray.com/kotlin/ktor/
+
+
+ kotlin-eap
+ http://dl.bintray.com/kotlin/kotlin-eap
+
+
+ spring-milestone
+ Spring Milestone Repository
+ http://repo.spring.io/milestone
+
+
+
+
+
+ kotlin-eap
+ http://dl.bintray.com/kotlin/kotlin-eap
+
+
+
+
org.springframework.boot
@@ -56,15 +56,15 @@
org.jetbrains.kotlin
kotlin-stdlib-jdk8
-
-
- org.jetbrains.kotlin
- kotlin-stdlib
-
+
+
+ org.jetbrains.kotlin
+ kotlin-stdlib
+
org.jetbrains.kotlin
kotlin-reflect
-
+
org.jetbrains.kotlinx
@@ -113,9 +113,9 @@
${project.basedir}/src/main/java
${java.version}
-
- -Xjvm-default=enable
-
+
+ -Xjvm-default=enable
+
diff --git a/persistence-modules/spring-boot-persistence-h2/pom.xml b/persistence-modules/spring-boot-persistence-h2/pom.xml
index bd36a46144..30c727bfc8 100644
--- a/persistence-modules/spring-boot-persistence-h2/pom.xml
+++ b/persistence-modules/spring-boot-persistence-h2/pom.xml
@@ -26,11 +26,6 @@
com.h2database
h2
-
- org.springframework.boot
- spring-boot-starter-test
- test
-
diff --git a/persistence-modules/spring-boot-persistence/pom.xml b/persistence-modules/spring-boot-persistence/pom.xml
index c7cda07a1a..3ad925f16b 100644
--- a/persistence-modules/spring-boot-persistence/pom.xml
+++ b/persistence-modules/spring-boot-persistence/pom.xml
@@ -17,14 +17,17 @@
org.springframework.boot
spring-boot-starter-web
+ ${spring-boot.version}
org.springframework.boot
spring-boot-starter-thymeleaf
+ ${spring-boot.version}
org.springframework.boot
spring-boot-starter-data-jpa
+ ${spring-boot.version}
com.zaxxer
@@ -35,6 +38,7 @@
org.springframework.boot
spring-boot-starter-test
+ ${spring-boot.version}
org.mockito
@@ -99,6 +103,7 @@
2.0.1.Final
10.13.1.1
2.3.4
+ 2.1.7.RELEASE
diff --git a/persistence-modules/spring-data-redis/pom.xml b/persistence-modules/spring-data-redis/pom.xml
index 4ae8ac0a87..cd8c729844 100644
--- a/persistence-modules/spring-data-redis/pom.xml
+++ b/persistence-modules/spring-data-redis/pom.xml
@@ -87,7 +87,8 @@
${maven-surefire-plugin.version}
true
- true
+ false
+ 0
-Xmx1024m
diff --git a/persistence-modules/spring-data-redis/src/test/java/com/baeldung/spring/data/reactive/redis/template/RedisKeyCommandsIntegrationTest.java b/persistence-modules/spring-data-redis/src/test/java/com/baeldung/spring/data/reactive/redis/template/RedisKeyCommandsIntegrationTest.java
index 1333f94653..af790c99b7 100644
--- a/persistence-modules/spring-data-redis/src/test/java/com/baeldung/spring/data/reactive/redis/template/RedisKeyCommandsIntegrationTest.java
+++ b/persistence-modules/spring-data-redis/src/test/java/com/baeldung/spring/data/reactive/redis/template/RedisKeyCommandsIntegrationTest.java
@@ -38,7 +38,7 @@ public class RedisKeyCommandsIntegrationTest {
@BeforeClass
public static void startRedisServer() throws IOException {
- redisServer = new RedisServerBuilder().port(6379).setting("maxheap 256M").build();
+ redisServer = new RedisServerBuilder().port(6379).setting("maxmemory 256M").build();
redisServer.start();
}
diff --git a/persistence-modules/spring-data-redis/src/test/java/com/baeldung/spring/data/reactive/redis/template/RedisTemplateListOpsIntegrationTest.java b/persistence-modules/spring-data-redis/src/test/java/com/baeldung/spring/data/reactive/redis/template/RedisTemplateListOpsIntegrationTest.java
index 88c4fa6eed..58846d7c27 100644
--- a/persistence-modules/spring-data-redis/src/test/java/com/baeldung/spring/data/reactive/redis/template/RedisTemplateListOpsIntegrationTest.java
+++ b/persistence-modules/spring-data-redis/src/test/java/com/baeldung/spring/data/reactive/redis/template/RedisTemplateListOpsIntegrationTest.java
@@ -36,7 +36,7 @@ public class RedisTemplateListOpsIntegrationTest {
@BeforeClass
public static void startRedisServer() throws IOException {
- redisServer = new RedisServerBuilder().port(6379).setting("maxheap 128M").build();
+ redisServer = new RedisServerBuilder().port(6379).setting("maxmemory 128M").build();
redisServer.start();
}
diff --git a/persistence-modules/spring-data-redis/src/test/java/com/baeldung/spring/data/reactive/redis/template/RedisTemplateValueOpsIntegrationTest.java b/persistence-modules/spring-data-redis/src/test/java/com/baeldung/spring/data/reactive/redis/template/RedisTemplateValueOpsIntegrationTest.java
index afa5267582..5d12f90f34 100644
--- a/persistence-modules/spring-data-redis/src/test/java/com/baeldung/spring/data/reactive/redis/template/RedisTemplateValueOpsIntegrationTest.java
+++ b/persistence-modules/spring-data-redis/src/test/java/com/baeldung/spring/data/reactive/redis/template/RedisTemplateValueOpsIntegrationTest.java
@@ -38,7 +38,7 @@ public class RedisTemplateValueOpsIntegrationTest {
@BeforeClass
public static void startRedisServer() throws IOException {
- redisServer = new RedisServerBuilder().port(6379).setting("maxheap 256M").build();
+ redisServer = new RedisServerBuilder().port(6379).setting("maxmemory 256M").build();
redisServer.start();
}
diff --git a/persistence-modules/spring-data-redis/src/test/java/com/baeldung/spring/data/redis/RedisMessageListenerIntegrationTest.java b/persistence-modules/spring-data-redis/src/test/java/com/baeldung/spring/data/redis/RedisMessageListenerIntegrationTest.java
index 1c69b63c09..6f9e6a8757 100644
--- a/persistence-modules/spring-data-redis/src/test/java/com/baeldung/spring/data/redis/RedisMessageListenerIntegrationTest.java
+++ b/persistence-modules/spring-data-redis/src/test/java/com/baeldung/spring/data/redis/RedisMessageListenerIntegrationTest.java
@@ -33,7 +33,7 @@ public class RedisMessageListenerIntegrationTest {
@BeforeClass
public static void startRedisServer() throws IOException {
- redisServer = new RedisServerBuilder().port(6379).setting("maxheap 256M").build();
+ redisServer = new RedisServerBuilder().port(6379).setting("maxmemory 256M").build();
redisServer.start();
}
@@ -46,7 +46,7 @@ public class RedisMessageListenerIntegrationTest {
public void testOnMessage() throws Exception {
String message = "Message " + UUID.randomUUID();
redisMessagePublisher.publish(message);
- Thread.sleep(100);
+ Thread.sleep(1000);
assertTrue(RedisMessageSubscriber.messageList.get(0).contains(message));
}
}
\ No newline at end of file
diff --git a/persistence-modules/spring-data-redis/src/test/java/com/baeldung/spring/data/redis/repo/StudentRepositoryIntegrationTest.java b/persistence-modules/spring-data-redis/src/test/java/com/baeldung/spring/data/redis/repo/StudentRepositoryIntegrationTest.java
index b1a36475c3..24191a42b9 100644
--- a/persistence-modules/spring-data-redis/src/test/java/com/baeldung/spring/data/redis/repo/StudentRepositoryIntegrationTest.java
+++ b/persistence-modules/spring-data-redis/src/test/java/com/baeldung/spring/data/redis/repo/StudentRepositoryIntegrationTest.java
@@ -34,7 +34,7 @@ public class StudentRepositoryIntegrationTest {
@BeforeClass
public static void startRedisServer() throws IOException {
- redisServer = new RedisServerBuilder().port(6379).setting("maxheap 128M").build();
+ redisServer = new RedisServerBuilder().port(6379).setting("maxmemory 128M").build();
redisServer.start();
}
diff --git a/persistence-modules/spring-data-redis/src/test/java/org/baeldung/SpringContextIntegrationTest.java b/persistence-modules/spring-data-redis/src/test/java/org/baeldung/SpringContextIntegrationTest.java
index e093892365..f5c8177cbe 100644
--- a/persistence-modules/spring-data-redis/src/test/java/org/baeldung/SpringContextIntegrationTest.java
+++ b/persistence-modules/spring-data-redis/src/test/java/org/baeldung/SpringContextIntegrationTest.java
@@ -1,16 +1,35 @@
package org.baeldung;
+import com.baeldung.spring.data.redis.config.RedisConfig;
+import org.junit.AfterClass;
+import org.junit.BeforeClass;
import org.junit.Test;
import org.junit.runner.RunWith;
+import org.springframework.test.annotation.DirtiesContext;
import org.springframework.test.context.ContextConfiguration;
import org.springframework.test.context.junit4.SpringJUnit4ClassRunner;
+import redis.embedded.RedisServerBuilder;
-import com.baeldung.spring.data.redis.config.RedisConfig;
+import static org.springframework.test.annotation.DirtiesContext.ClassMode.BEFORE_CLASS;
@RunWith(SpringJUnit4ClassRunner.class)
+@DirtiesContext(classMode = BEFORE_CLASS)
@ContextConfiguration(classes = RedisConfig.class)
public class SpringContextIntegrationTest {
+ private static redis.embedded.RedisServer redisServer;
+
+ @BeforeClass
+ public static void startRedisServer() {
+ redisServer = new RedisServerBuilder().port(6379).setting("maxmemory 256M").build();
+ redisServer.start();
+ }
+
+ @AfterClass
+ public static void stopRedisServer() {
+ redisServer.stop();
+ }
+
@Test
public void whenSpringContextIsBootstrapped_thenNoExceptions() {
}
diff --git a/pom.xml b/pom.xml
index 14eb9e842e..f5776731c9 100644
--- a/pom.xml
+++ b/pom.xml
@@ -440,6 +440,8 @@
core-java-modules/core-java-sun
core-java-modules/core-java-string-conversions
core-java-modules/core-java-string-conversions-2
+ core-java-modules/core-java-string-operations
+ core-java-modules/core-java-string-operations-2
core-java-modules/core-java-string-algorithms
core-java-modules/core-java-string-algorithms-2
core-java-modules/core-java-string-apis
@@ -507,7 +509,6 @@
java-spi
java-strings
java-strings-2
- java-strings-3
java-strings-ops
java-vavr-stream
java-websocket
@@ -1211,6 +1212,8 @@
core-java-modules/core-java-sun
core-java-modules/core-java-string-conversions
core-java-modules/core-java-string-conversions-2
+ core-java-modules/core-java-string-operations
+ core-java-modules/core-java-string-operations-2
core-java-modules/core-java-string-algorithms
core-java-modules/core-java-string-algorithms-2
core-java-modules/core-java-string-apis
@@ -1276,7 +1279,6 @@
java-spi
java-strings
java-strings-2
- java-strings-3
java-strings-ops
java-vavr-stream
java-websocket
diff --git a/spring-5-data-reactive/src/main/java/com/baeldung/r2dbc/configuration/R2DBCConfiguration.java b/spring-5-data-reactive/src/main/java/com/baeldung/r2dbc/configuration/R2DBCConfiguration.java
index 17eac7fee2..54f06d9c6c 100644
--- a/spring-5-data-reactive/src/main/java/com/baeldung/r2dbc/configuration/R2DBCConfiguration.java
+++ b/spring-5-data-reactive/src/main/java/com/baeldung/r2dbc/configuration/R2DBCConfiguration.java
@@ -8,7 +8,7 @@ import org.springframework.data.r2dbc.config.AbstractR2dbcConfiguration;
import org.springframework.data.r2dbc.repository.config.EnableR2dbcRepositories;
@Configuration
-//@EnableR2dbcRepositories(basePackages = "com.baeldung.r2dbc.repository")
+@EnableR2dbcRepositories(basePackages = "com.baeldung.r2dbc.repository")
public class R2DBCConfiguration extends AbstractR2dbcConfiguration {
@Bean
public H2ConnectionFactory connectionFactory() {
diff --git a/spring-5-data-reactive/src/main/java/com/baeldung/r2dbc/model/Player.java b/spring-5-data-reactive/src/main/java/com/baeldung/r2dbc/model/Player.java
index 1926997e97..1e28cb3d07 100644
--- a/spring-5-data-reactive/src/main/java/com/baeldung/r2dbc/model/Player.java
+++ b/spring-5-data-reactive/src/main/java/com/baeldung/r2dbc/model/Player.java
@@ -4,10 +4,12 @@ import lombok.AllArgsConstructor;
import lombok.Data;
import lombok.NoArgsConstructor;
import org.springframework.data.annotation.Id;
+import org.springframework.data.relational.core.mapping.Table;
@Data
@NoArgsConstructor
@AllArgsConstructor
+@Table
public class Player {
@Id
Integer id;
diff --git a/spring-5-data-reactive/src/test/java/com/baeldung/r2dbc/R2dbcApplicationIntegrationTest.java b/spring-5-data-reactive/src/test/java/com/baeldung/r2dbc/R2dbcApplicationIntegrationTest.java
index a31ef4458d..ffd2e98f8e 100644
--- a/spring-5-data-reactive/src/test/java/com/baeldung/r2dbc/R2dbcApplicationIntegrationTest.java
+++ b/spring-5-data-reactive/src/test/java/com/baeldung/r2dbc/R2dbcApplicationIntegrationTest.java
@@ -111,12 +111,12 @@ public class R2dbcApplicationIntegrationTest {
private void insertPlayers() {
List players = Arrays.asList(
- new Player(1, "Kaka", 37),
- new Player(2, "Messi", 32),
- new Player(3, "Mbappé", 20),
- new Player(4, "CR7", 34),
- new Player(5, "Lewandowski", 30),
- new Player(6, "Cavani", 32)
+ new Player(null, "Kaka", 37),
+ new Player(null, "Messi", 32),
+ new Player(null, "Mbappé", 20),
+ new Player(null, "CR7", 34),
+ new Player(null, "Lewandowski", 30),
+ new Player(null, "Cavani", 32)
);
playerRepository.saveAll(players).subscribe();
diff --git a/spring-5-mvc/pom.xml b/spring-5-mvc/pom.xml
index be21db481a..7417f39c21 100644
--- a/spring-5-mvc/pom.xml
+++ b/spring-5-mvc/pom.xml
@@ -46,14 +46,17 @@
org.jetbrains.kotlin
kotlin-stdlib-jre8
+ ${kotlin.version}
org.jetbrains.kotlin
kotlin-reflect
+ ${kotlin.version}
com.fasterxml.jackson.module
jackson-module-kotlin
+ ${jackson.version}
@@ -170,7 +173,8 @@
2.9.0
- 1.1.2
+ 2.9.9
+ 1.2.71
com.baeldung.Spring5Application
4.5.8
diff --git a/spring-5-security-oauth/src/main/java/com/baeldung/oauth2/LoginController.java b/spring-5-security-oauth/src/main/java/com/baeldung/oauth2/LoginController.java
index 5d6c13bb0e..e2629053f1 100644
--- a/spring-5-security-oauth/src/main/java/com/baeldung/oauth2/LoginController.java
+++ b/spring-5-security-oauth/src/main/java/com/baeldung/oauth2/LoginController.java
@@ -71,5 +71,4 @@ public class LoginController {
return "loginSuccess";
}
-
}
diff --git a/spring-5-webflux/pom.xml b/spring-5-webflux/pom.xml
index 6887f01753..91272593d3 100644
--- a/spring-5-webflux/pom.xml
+++ b/spring-5-webflux/pom.xml
@@ -99,6 +99,6 @@
- 2.2.0.M3
+ 2.2.0.RELEASE
diff --git a/spring-5-webflux/src/main/java/com/baeldung/spring/rsocket/client/ClientConfiguration.java b/spring-5-webflux/src/main/java/com/baeldung/spring/rsocket/client/ClientConfiguration.java
index 7dd3591cd6..abfe2e7807 100644
--- a/spring-5-webflux/src/main/java/com/baeldung/spring/rsocket/client/ClientConfiguration.java
+++ b/spring-5-webflux/src/main/java/com/baeldung/spring/rsocket/client/ClientConfiguration.java
@@ -25,6 +25,6 @@ public class ClientConfiguration {
@Bean
RSocketRequester rSocketRequester(RSocketStrategies rSocketStrategies) {
- return RSocketRequester.wrap(rSocket(), MimeTypeUtils.APPLICATION_JSON, rSocketStrategies);
+ return RSocketRequester.wrap(rSocket(), MimeTypeUtils.APPLICATION_JSON, MimeTypeUtils.APPLICATION_JSON, rSocketStrategies);
}
}
diff --git a/spring-5-webflux/src/test/java/com/baeldung/spring/rsocket/client/MarketDataRestControllerIntegrationTest.java b/spring-5-webflux/src/test/java/com/baeldung/spring/rsocket/client/MarketDataRestControllerIntegrationTest.java
index ff00d5ec24..d22832b0fb 100644
--- a/spring-5-webflux/src/test/java/com/baeldung/spring/rsocket/client/MarketDataRestControllerIntegrationTest.java
+++ b/spring-5-webflux/src/test/java/com/baeldung/spring/rsocket/client/MarketDataRestControllerIntegrationTest.java
@@ -13,7 +13,6 @@ import org.springframework.boot.test.autoconfigure.web.reactive.WebFluxTest;
import org.springframework.boot.test.mock.mockito.MockBean;
import org.springframework.messaging.rsocket.RSocketRequester;
import org.springframework.messaging.rsocket.RSocketRequester.RequestSpec;
-import org.springframework.messaging.rsocket.RSocketRequester.ResponseSpec;
import org.springframework.test.context.junit4.SpringRunner;
import org.springframework.test.web.reactive.server.FluxExchangeResult;
import org.springframework.test.web.reactive.server.WebTestClient;
@@ -34,15 +33,12 @@ public class MarketDataRestControllerIntegrationTest {
@Mock
private RequestSpec requestSpec;
- @Mock
- private ResponseSpec responseSpec;
-
@Test
public void whenInitiatesRequest_ThenGetsResponse() throws Exception {
when(rSocketRequester.route("currentMarketData")).thenReturn(requestSpec);
- when(requestSpec.data(any())).thenReturn(responseSpec);
+ when(requestSpec.data(any())).thenReturn(requestSpec);
MarketData marketData = new MarketData("X", 1);
- when(responseSpec.retrieveMono(MarketData.class)).thenReturn(Mono.just(marketData));
+ when(requestSpec.retrieveMono(MarketData.class)).thenReturn(Mono.just(marketData));
testClient.get()
.uri("/current/{stock}", "X")
@@ -56,8 +52,8 @@ public class MarketDataRestControllerIntegrationTest {
@Test
public void whenInitiatesFireAndForget_ThenGetsNoResponse() throws Exception {
when(rSocketRequester.route("collectMarketData")).thenReturn(requestSpec);
- when(requestSpec.data(any())).thenReturn(responseSpec);
- when(responseSpec.send()).thenReturn(Mono.empty());
+ when(requestSpec.data(any())).thenReturn(requestSpec);
+ when(requestSpec.send()).thenReturn(Mono.empty());
testClient.get()
.uri("/collect")
@@ -70,10 +66,10 @@ public class MarketDataRestControllerIntegrationTest {
@Test
public void whenInitiatesRequest_ThenGetsStream() throws Exception {
when(rSocketRequester.route("feedMarketData")).thenReturn(requestSpec);
- when(requestSpec.data(any())).thenReturn(responseSpec);
+ when(requestSpec.data(any())).thenReturn(requestSpec);
MarketData firstMarketData = new MarketData("X", 1);
MarketData secondMarketData = new MarketData("X", 2);
- when(responseSpec.retrieveFlux(MarketData.class)).thenReturn(Flux.just(firstMarketData, secondMarketData));
+ when(requestSpec.retrieveFlux(MarketData.class)).thenReturn(Flux.just(firstMarketData, secondMarketData));
FluxExchangeResult result = testClient.get()
.uri("/feed/{stock}", "X")
@@ -89,4 +85,4 @@ public class MarketDataRestControllerIntegrationTest {
.thenCancel()
.verify();
}
-}
\ No newline at end of file
+}
diff --git a/spring-5-webflux/src/test/java/com/baeldung/spring/rsocket/server/MarketDataRSocketControllerLiveTest.java b/spring-5-webflux/src/test/java/com/baeldung/spring/rsocket/server/MarketDataRSocketControllerLiveTest.java
index dcf3b82730..40ddc732ac 100644
--- a/spring-5-webflux/src/test/java/com/baeldung/spring/rsocket/server/MarketDataRSocketControllerLiveTest.java
+++ b/spring-5-webflux/src/test/java/com/baeldung/spring/rsocket/server/MarketDataRSocketControllerLiveTest.java
@@ -92,7 +92,7 @@ public class MarketDataRSocketControllerLiveTest {
@Bean
@Lazy
RSocketRequester rSocketRequester(RSocketStrategies rSocketStrategies) {
- return RSocketRequester.wrap(rSocket(), MimeTypeUtils.APPLICATION_JSON, rSocketStrategies);
+ return RSocketRequester.wrap(rSocket(), MimeTypeUtils.APPLICATION_JSON, MimeTypeUtils.APPLICATION_JSON, rSocketStrategies);
}
}
-}
\ No newline at end of file
+}
diff --git a/spring-batch/pom.xml b/spring-batch/pom.xml
index 48d3baeae3..e6d7cee6f2 100644
--- a/spring-batch/pom.xml
+++ b/spring-batch/pom.xml
@@ -10,8 +10,9 @@
com.baeldung
- parent-modules
- 1.0.0-SNAPSHOT
+ parent-boot-2
+ 0.0.1-SNAPSHOT
+ ../parent-boot-2
@@ -78,36 +79,25 @@
org.springframework.boot
spring-boot-starter-batch
- ${spring.boot.version}
org.hsqldb
hsqldb
- 2.5.0
runtime
-
+
org.awaitility
awaitility
${awaitility.version}
test
-
-
- org.springframework.boot
- spring-boot-starter-test
- ${spring.boot.version}
- test
-
-
5.2.0.RELEASE
4.2.0.RELEASE
- 2.1.9.RELEASE
3.15.1
4.1
2.3.1
diff --git a/spring-boot-admin/pom.xml b/spring-boot-admin/pom.xml
index 1c933723e7..c553790359 100644
--- a/spring-boot-admin/pom.xml
+++ b/spring-boot-admin/pom.xml
@@ -8,8 +8,8 @@
com.baeldung
- parent-modules
- 1.0.0-SNAPSHOT
+ parent-boot-2
+ 0.0.1-SNAPSHOT
@@ -17,20 +17,4 @@
spring-boot-admin-client
-
-
-
- org.springframework.boot
- spring-boot-dependencies
- ${spring.boot.version}
- pom
- import
-
-
-
-
-
- 2.1.8.RELEASE
-
-
-
\ No newline at end of file
+
diff --git a/spring-boot-custom-starter/greeter-spring-boot-sample-app/pom.xml b/spring-boot-custom-starter/greeter-spring-boot-sample-app/pom.xml
index 91cc41d669..1528853b0c 100644
--- a/spring-boot-custom-starter/greeter-spring-boot-sample-app/pom.xml
+++ b/spring-boot-custom-starter/greeter-spring-boot-sample-app/pom.xml
@@ -7,24 +7,12 @@
greeter-spring-boot-sample-app
- spring-boot-custom-starter
+ parent-boot-1
com.baeldung
0.0.1-SNAPSHOT
../../spring-boot-custom-starter
-
-
-
- org.springframework.boot
- spring-boot-dependencies
- ${spring-boot.version}
- pom
- import
-
-
-
-
com.baeldung
@@ -51,8 +39,7 @@
- 1.5.15.RELEASE
0.0.1-SNAPSHOT
-
\ No newline at end of file
+
diff --git a/spring-boot-kotlin/pom.xml b/spring-boot-kotlin/pom.xml
index 25508c52b9..ccb1585a75 100644
--- a/spring-boot-kotlin/pom.xml
+++ b/spring-boot-kotlin/pom.xml
@@ -30,19 +30,6 @@
-
-
-
-
- org.springframework.boot
- spring-boot-dependencies
- ${spring-boot.version}
- pom
- import
-
-
-
-
spring-snapshots
@@ -81,7 +68,6 @@
org.springframework.boot
spring-boot-starter-webflux
- ${spring-boot.version}
com.fasterxml.jackson.module
@@ -160,7 +146,6 @@
1.0.0.M7
1.0.0.BUILD-SNAPSHOT
1.2.1
- 2.2.0.M2
diff --git a/spring-boot-parent/spring-boot-with-custom-parent/pom.xml b/spring-boot-parent/spring-boot-with-custom-parent/pom.xml
index de2946fbb2..a64ebc246a 100644
--- a/spring-boot-parent/spring-boot-with-custom-parent/pom.xml
+++ b/spring-boot-parent/spring-boot-with-custom-parent/pom.xml
@@ -10,22 +10,10 @@
com.baeldung
- spring-boot-parent
- 1.0.0-SNAPSHOT
+ parent-boot-2
+ 0.0.1-SNAPSHOT
-
-
-
- org.springframework.boot
- spring-boot-dependencies
- ${spring-boot.version}
- pom
- import
-
-
-
-
org.springframework.boot
@@ -35,7 +23,6 @@
1.8
- 2.1.5.RELEASE
diff --git a/spring-boot-properties/pom.xml b/spring-boot-properties/pom.xml
index ccb9204d96..5e65aadc28 100644
--- a/spring-boot-properties/pom.xml
+++ b/spring-boot-properties/pom.xml
@@ -32,11 +32,6 @@
org.springframework.cloud
spring-cloud-starter
-
- org.springframework.boot
- spring-boot-starter-test
- test
-
com.google.guava
guava
diff --git a/spring-boot-properties/src/test/java/com/baeldung/properties/parentchild/config/ChildConfig2.java b/spring-boot-properties/src/test/java/com/baeldung/properties/parentchild/config/ChildConfig2.java
index c15fcbd352..a506060d1c 100644
--- a/spring-boot-properties/src/test/java/com/baeldung/properties/parentchild/config/ChildConfig2.java
+++ b/spring-boot-properties/src/test/java/com/baeldung/properties/parentchild/config/ChildConfig2.java
@@ -16,7 +16,7 @@ public class ChildConfig2 {
}
@Bean
- public static PropertyPlaceholderConfigurer configurer() {
+ public static PropertyPlaceholderConfigurer properties() {
final PropertyPlaceholderConfigurer ppc = new PropertyPlaceholderConfigurer();
ppc.setLocations(new ClassPathResource("child.properties"));
return ppc;
diff --git a/spring-boot-properties/src/test/java/com/baeldung/properties/parentchild/config/ParentConfig2.java b/spring-boot-properties/src/test/java/com/baeldung/properties/parentchild/config/ParentConfig2.java
index ddb59a5309..f5376e0c8e 100644
--- a/spring-boot-properties/src/test/java/com/baeldung/properties/parentchild/config/ParentConfig2.java
+++ b/spring-boot-properties/src/test/java/com/baeldung/properties/parentchild/config/ParentConfig2.java
@@ -16,7 +16,7 @@ public class ParentConfig2 {
}
@Bean
- public static PropertyPlaceholderConfigurer configurer() {
+ public static PropertyPlaceholderConfigurer properties() {
final PropertyPlaceholderConfigurer ppc = new PropertyPlaceholderConfigurer();
ppc.setLocations(new ClassPathResource("parent.properties"));
return ppc;
diff --git a/spring-data-rest-querydsl/src/test/java/com/baeldung/springdatarestquerydsl/IntegrationTest.java b/spring-data-rest-querydsl/src/test/java/com/baeldung/springdatarestquerydsl/IntegrationTest.java
index ef86c2f36d..2d3dbc4c74 100644
--- a/spring-data-rest-querydsl/src/test/java/com/baeldung/springdatarestquerydsl/IntegrationTest.java
+++ b/spring-data-rest-querydsl/src/test/java/com/baeldung/springdatarestquerydsl/IntegrationTest.java
@@ -36,17 +36,17 @@ public class IntegrationTest {
@Test public void givenRequestHasBeenMade_whenQueryOverNameAttribute_thenGetJohn() throws Exception {
// Get John
- mockMvc.perform(get("/personQuery?name=John")).andExpect(status().isOk()).andExpect(content().contentType(contentType))
+ mockMvc.perform(get("/users?name=John")).andExpect(status().isOk()).andExpect(content().contentType(contentType))
.andExpect(jsonPath("$", hasSize(1))).andExpect(jsonPath("$[0].name", is("John")))
.andExpect(jsonPath("$[0].address.address", is("Fake Street 1")))
- .andExpect(jsonPath("$[0].address.country", is("Fake Country")));
+ .andExpect(jsonPath("$[0].address.country", is("Spain")));
}
@Test public void givenRequestHasBeenMade_whenQueryOverNameAttribute_thenGetLisa() throws Exception {
// Get Lisa
- mockMvc.perform(get("/personQuery?name=Lisa")).andExpect(status().isOk()).andExpect(content().contentType(contentType))
+ mockMvc.perform(get("/users?name=Lisa")).andExpect(status().isOk()).andExpect(content().contentType(contentType))
.andExpect(jsonPath("$", hasSize(1))).andExpect(jsonPath("$[0].name", is("Lisa")))
.andExpect(jsonPath("$[0].address.address", is("Real Street 1")))
- .andExpect(jsonPath("$[0].address.country", is("Real Country")));
+ .andExpect(jsonPath("$[0].address.country", is("Germany")));
}
}
diff --git a/spring-ejb/pom.xml b/spring-ejb/pom.xml
index 712bfc66ab..4422223c6f 100755
--- a/spring-ejb/pom.xml
+++ b/spring-ejb/pom.xml
@@ -4,6 +4,7 @@
4.0.0
com.baeldung.spring.ejb
spring-ejb
+ 1.0.0-SNAPSHOT
spring-ejb
pom
Spring EJB Tutorial
@@ -12,6 +13,7 @@
com.baeldung
parent-modules
1.0.0-SNAPSHOT
+ ../
diff --git a/spring-ejb/spring-ejb-client/pom.xml b/spring-ejb/spring-ejb-client/pom.xml
index e0348d5ae3..2dd3120532 100644
--- a/spring-ejb/spring-ejb-client/pom.xml
+++ b/spring-ejb/spring-ejb-client/pom.xml
@@ -12,13 +12,13 @@
spring-ejb
1.0.0-SNAPSHOT
-
-
+
+
org.springframework.boot
spring-boot-dependencies
- 2.0.4.RELEASE
+ ${spring-boot.version}
pom
import
@@ -61,9 +61,13 @@
org.springframework.boot
spring-boot-maven-plugin
- 2.0.4.RELEASE
+ ${spring-boot.version}
+
+ 2.0.4.RELEASE
+
+
diff --git a/spring-jersey/pom.xml b/spring-jersey/pom.xml
index e053ee7b4b..cf80ac4069 100644
--- a/spring-jersey/pom.xml
+++ b/spring-jersey/pom.xml
@@ -222,12 +222,12 @@
- 2.27
+ 2.29.1
1.6.1
4.4.9
4.5.5
4.0.0
- 1.58
+ 2.25.1
3.10.0
1.5.10.RELEASE
diff --git a/spring-jersey/src/test/java/com/baeldung/clientrx/ClientOrchestrationIntegrationTest.java b/spring-jersey/src/test/java/com/baeldung/clientrx/ClientOrchestrationIntegrationTest.java
index 990279a481..8f40636d01 100644
--- a/spring-jersey/src/test/java/com/baeldung/clientrx/ClientOrchestrationIntegrationTest.java
+++ b/spring-jersey/src/test/java/com/baeldung/clientrx/ClientOrchestrationIntegrationTest.java
@@ -41,9 +41,9 @@ public class ClientOrchestrationIntegrationTest {
private Client client = ClientBuilder.newClient();
- private WebTarget userIdService = client.target("http://localhost:8080/id-service/ids");
- private WebTarget nameService = client.target("http://localhost:8080/name-service/users/{userId}/name");
- private WebTarget hashService = client.target("http://localhost:8080/hash-service/{rawValue}");
+ private WebTarget userIdService = client.target("http://localhost:{port}/id-service/ids");
+ private WebTarget nameService = client.target("http://localhost:{port}/name-service/users/{userId}/name");
+ private WebTarget hashService = client.target("http://localhost:{port}/hash-service/{rawValue}");
private Logger logger = LoggerFactory.getLogger(ClientOrchestrationIntegrationTest.class);
@@ -54,7 +54,7 @@ public class ClientOrchestrationIntegrationTest {
private List expectedHashValues = Arrays.asList("roht1", "kluh2", "WodiwKcalb3", "RehtnapKclab4", "kciteht5", "eyekwah6");
@Rule
- public WireMockRule wireMockServer = new WireMockRule();
+ public WireMockRule wireMockServer = new WireMockRule(0);
@Before
public void setup() {
@@ -83,19 +83,19 @@ public class ClientOrchestrationIntegrationTest {
final CountDownLatch completionTracker = new CountDownLatch(expectedHashValues.size()); // used to keep track of the progress of the subsequent calls
- userIdService.request().accept(MediaType.APPLICATION_JSON).async().get(new InvocationCallback>() {
+ getUserIdService().request().accept(MediaType.APPLICATION_JSON).async().get(new InvocationCallback>() {
@Override
public void completed(List employeeIds) {
logger.info("[CallbackExample] id-service result: {}", employeeIds);
employeeIds.forEach((id) -> {
// for each employee ID, get the name
- nameService.resolveTemplate("userId", id).request().async().get(new InvocationCallback() {
+ getNameService().resolveTemplate("userId", id).request().async().get(new InvocationCallback() {
@Override
public void completed(String response) {
logger.info("[CallbackExample] name-service result: {}", response);
- hashService.resolveTemplate("rawValue", response + id).request().async().get(new InvocationCallback() {
+ getHashService().resolveTemplate("rawValue", response + id).request().async().get(new InvocationCallback() {
@Override
public void completed(String response) {
logger.info("[CallbackExample] hash-service result: {}", response);
@@ -144,7 +144,7 @@ public class ClientOrchestrationIntegrationTest {
final CountDownLatch completionTracker = new CountDownLatch(expectedHashValues.size()); // used to keep track of the progress of the subsequent calls
- CompletionStage> userIdStage = userIdService.request().accept(MediaType.APPLICATION_JSON).rx().get(new GenericType>() {
+ CompletionStage> userIdStage = getUserIdService().request().accept(MediaType.APPLICATION_JSON).rx().get(new GenericType>() {
}).exceptionally((throwable) -> {
logger.warn("[CompletionStageExample] An error has occurred");
return null;
@@ -153,11 +153,11 @@ public class ClientOrchestrationIntegrationTest {
userIdStage.thenAcceptAsync(employeeIds -> {
logger.info("[CompletionStageExample] id-service result: {}", employeeIds);
employeeIds.forEach((Long id) -> {
- CompletableFuture completable = nameService.resolveTemplate("userId", id).request().rx().get(String.class).toCompletableFuture();
+ CompletableFuture completable = getNameService().resolveTemplate("userId", id).request().rx().get(String.class).toCompletableFuture();
completable.thenAccept((String userName) -> {
logger.info("[CompletionStageExample] name-service result: {}", userName);
- hashService.resolveTemplate("rawValue", userName + id).request().rx().get(String.class).toCompletableFuture().thenAcceptAsync(hashValue -> {
+ getHashService().resolveTemplate("rawValue", userName + id).request().rx().get(String.class).toCompletableFuture().thenAcceptAsync(hashValue -> {
logger.info("[CompletionStageExample] hash-service result: {}", hashValue);
receivedHashValues.add(hashValue);
completionTracker.countDown();
@@ -191,18 +191,18 @@ public class ClientOrchestrationIntegrationTest {
final CountDownLatch completionTracker = new CountDownLatch(expectedHashValues.size()); // used to keep track of the progress of the subsequent calls
- Observable> observableUserIdService = userIdService.register(RxObservableInvokerProvider.class).request().accept(MediaType.APPLICATION_JSON).rx(RxObservableInvoker.class).get(new GenericType>() {
+ Observable> observableUserIdService = getUserIdService().register(RxObservableInvokerProvider.class).request().accept(MediaType.APPLICATION_JSON).rx(RxObservableInvoker.class).get(new GenericType>() {
}).asObservable();
observableUserIdService.subscribe((List employeeIds) -> {
logger.info("[ObservableExample] id-service result: {}", employeeIds);
- Observable.from(employeeIds).subscribe(id -> nameService.register(RxObservableInvokerProvider.class).resolveTemplate("userId", id).request().rx(RxObservableInvoker.class).get(String.class).asObservable() // gotten the name for the given
+ Observable.from(employeeIds).subscribe(id -> getNameService().register(RxObservableInvokerProvider.class).resolveTemplate("userId", id).request().rx(RxObservableInvoker.class).get(String.class).asObservable() // gotten the name for the given
// userId
.doOnError((throwable) -> {
logger.warn("[ObservableExample] An error has occurred in the username request step {}", throwable.getMessage());
}).subscribe(userName -> {
logger.info("[ObservableExample] name-service result: {}", userName);
- hashService.register(RxObservableInvokerProvider.class).resolveTemplate("rawValue", userName + id).request().rx(RxObservableInvoker.class).get(String.class).asObservable() // gotten the hash value for
+ getHashService().register(RxObservableInvokerProvider.class).resolveTemplate("rawValue", userName + id).request().rx(RxObservableInvoker.class).get(String.class).asObservable() // gotten the hash value for
// userId+username
.doOnError((throwable) -> {
logger.warn("[ObservableExample] An error has occurred in the hashing request step {}", throwable.getMessage());
@@ -233,18 +233,18 @@ public class ClientOrchestrationIntegrationTest {
final CountDownLatch completionTracker = new CountDownLatch(expectedHashValues.size()); // used to keep track of the progress of the subsequent calls
- Flowable> userIdFlowable = userIdService.register(RxFlowableInvokerProvider.class).request().rx(RxFlowableInvoker.class).get(new GenericType>() {
+ Flowable> userIdFlowable = getUserIdService().register(RxFlowableInvokerProvider.class).request().rx(RxFlowableInvoker.class).get(new GenericType>() {
});
userIdFlowable.subscribe((List employeeIds) -> {
logger.info("[FlowableExample] id-service result: {}", employeeIds);
Flowable.fromIterable(employeeIds).subscribe(id -> {
- nameService.register(RxFlowableInvokerProvider.class).resolveTemplate("userId", id).request().rx(RxFlowableInvoker.class).get(String.class) // gotten the name for the given userId
+ getNameService().register(RxFlowableInvokerProvider.class).resolveTemplate("userId", id).request().rx(RxFlowableInvoker.class).get(String.class) // gotten the name for the given userId
.doOnError((throwable) -> {
logger.warn("[FlowableExample] An error has occurred in the username request step {}", throwable.getMessage());
}).subscribe(userName -> {
logger.info("[FlowableExample] name-service result: {}", userName);
- hashService.register(RxFlowableInvokerProvider.class).resolveTemplate("rawValue", userName + id).request().rx(RxFlowableInvoker.class).get(String.class) // gotten the hash value for userId+username
+ getHashService().register(RxFlowableInvokerProvider.class).resolveTemplate("rawValue", userName + id).request().rx(RxFlowableInvoker.class).get(String.class) // gotten the hash value for userId+username
.doOnError((throwable) -> {
logger.warn(" [FlowableExample] An error has occurred in the hashing request step!", throwable);
}).subscribe(hashValue -> {
@@ -269,4 +269,20 @@ public class ClientOrchestrationIntegrationTest {
assertThat(receivedHashValues).containsAll(expectedHashValues);
}
+ private int getPort() {
+ return wireMockServer.port();
+ }
+
+ private WebTarget getUserIdService() {
+ return userIdService.resolveTemplate("port", getPort());
+ }
+
+ private WebTarget getNameService() {
+ return nameService.resolveTemplate("port", getPort());
+ }
+
+ private WebTarget getHashService() {
+ return hashService.resolveTemplate("port", getPort());
+ }
+
}
diff --git a/spring-jinq/pom.xml b/spring-jinq/pom.xml
index f142b3ee2f..1661614fa0 100644
--- a/spring-jinq/pom.xml
+++ b/spring-jinq/pom.xml
@@ -9,8 +9,8 @@
com.baeldung
- parent-modules
- 1.0.0-SNAPSHOT
+ parent-boot-1
+ 0.0.1-SNAPSHOT
@@ -59,20 +59,7 @@
-
-
-
- org.springframework.boot
- spring-boot-dependencies
- ${spring-boot.version}
- pom
- import
-
-
-
-
- 1.5.9.RELEASE
1.8.22
diff --git a/spring-mockito/src/test/java/com/baeldung/UserServiceIntegrationUnitTest.java b/spring-mockito/src/test/java/com/baeldung/UserServiceUnitTest.java
similarity index 95%
rename from spring-mockito/src/test/java/com/baeldung/UserServiceIntegrationUnitTest.java
rename to spring-mockito/src/test/java/com/baeldung/UserServiceUnitTest.java
index 573a37a9a4..11c7b4d8a8 100644
--- a/spring-mockito/src/test/java/com/baeldung/UserServiceIntegrationUnitTest.java
+++ b/spring-mockito/src/test/java/com/baeldung/UserServiceUnitTest.java
@@ -12,7 +12,7 @@ import org.springframework.test.context.junit4.SpringJUnit4ClassRunner;
@ActiveProfiles("test")
@RunWith(SpringJUnit4ClassRunner.class)
@SpringBootTest(classes = MocksApplication.class)
-public class UserServiceIntegrationUnitTest {
+public class UserServiceUnitTest {
@Autowired
private UserService userService;
diff --git a/spring-protobuf/src/test/java/com/baeldung/protobuf/ApplicationIntegrationTest.java b/spring-protobuf/src/test/java/com/baeldung/protobuf/ApplicationIntegrationTest.java
index f0e2473ec4..df750db1db 100644
--- a/spring-protobuf/src/test/java/com/baeldung/protobuf/ApplicationIntegrationTest.java
+++ b/spring-protobuf/src/test/java/com/baeldung/protobuf/ApplicationIntegrationTest.java
@@ -1,11 +1,7 @@
package com.baeldung.protobuf;
-import static org.hamcrest.CoreMatchers.containsString;
-import static org.junit.Assert.assertThat;
-
-import java.io.IOException;
-import java.io.InputStream;
-
+import com.baeldung.protobuf.BaeldungTraining.Course;
+import com.googlecode.protobuf.format.JsonFormat;
import org.apache.http.HttpResponse;
import org.apache.http.client.methods.HttpGet;
import org.apache.http.impl.client.CloseableHttpClient;
@@ -15,33 +11,38 @@ import org.junit.runner.RunWith;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.boot.test.context.SpringBootTest;
import org.springframework.boot.test.context.SpringBootTest.WebEnvironment;
+import org.springframework.boot.web.server.LocalServerPort;
import org.springframework.http.ResponseEntity;
import org.springframework.test.annotation.DirtiesContext;
import org.springframework.test.context.junit4.SpringJUnit4ClassRunner;
import org.springframework.web.client.RestTemplate;
-import com.baeldung.protobuf.BaeldungTraining.Course;
-import com.googlecode.protobuf.format.JsonFormat;
+import java.io.IOException;
+import java.io.InputStream;
+
+import static org.hamcrest.CoreMatchers.containsString;
+import static org.junit.Assert.assertThat;
@DirtiesContext
@RunWith(SpringJUnit4ClassRunner.class)
-@SpringBootTest(classes = Application.class, webEnvironment = WebEnvironment.DEFINED_PORT)
+@SpringBootTest(classes = Application.class, webEnvironment = WebEnvironment.RANDOM_PORT)
public class ApplicationIntegrationTest {
- private static final String COURSE1_URL = "http://localhost:8080/courses/1";
-
@Autowired
private RestTemplate restTemplate;
+ @LocalServerPort
+ private int port;
+
@Test
public void whenUsingRestTemplate_thenSucceed() {
- ResponseEntity course = restTemplate.getForEntity(COURSE1_URL, Course.class);
+ ResponseEntity course = restTemplate.getForEntity(getUrl(), Course.class);
assertResponse(course.toString());
}
@Test
public void whenUsingHttpClient_thenSucceed() throws IOException {
- InputStream responseStream = executeHttpRequest(COURSE1_URL);
+ InputStream responseStream = executeHttpRequest(getUrl());
String jsonOutput = convertProtobufMessageStreamToJsonString(responseStream);
assertResponse(jsonOutput);
}
@@ -74,4 +75,8 @@ public class ApplicationIntegrationTest {
assertThat(response, containsString("number"));
assertThat(response, containsString("type"));
}
+
+ private String getUrl() {
+ return "http://localhost:" + port + "/courses/1";
+ }
}
\ No newline at end of file
diff --git a/spring-protobuf/src/test/java/org/baeldung/SpringContextIntegrationTest.java b/spring-protobuf/src/test/java/org/baeldung/SpringContextIntegrationTest.java
index 6d021eb400..8315d0ff6c 100644
--- a/spring-protobuf/src/test/java/org/baeldung/SpringContextIntegrationTest.java
+++ b/spring-protobuf/src/test/java/org/baeldung/SpringContextIntegrationTest.java
@@ -1,16 +1,15 @@
package org.baeldung;
+import com.baeldung.protobuf.Application;
import org.junit.Test;
import org.junit.runner.RunWith;
import org.springframework.boot.test.context.SpringBootTest;
import org.springframework.test.annotation.DirtiesContext;
import org.springframework.test.context.junit4.SpringRunner;
-import com.baeldung.protobuf.Application;
-
@DirtiesContext
@RunWith(SpringRunner.class)
-@SpringBootTest(classes = Application.class)
+@SpringBootTest(classes = Application.class, webEnvironment = SpringBootTest.WebEnvironment.RANDOM_PORT)
public class SpringContextIntegrationTest {
@Test
diff --git a/spring-protobuf/src/test/java/org/baeldung/SpringContextTest.java b/spring-protobuf/src/test/java/org/baeldung/SpringContextTest.java
index 4f655277b7..62a708b60a 100644
--- a/spring-protobuf/src/test/java/org/baeldung/SpringContextTest.java
+++ b/spring-protobuf/src/test/java/org/baeldung/SpringContextTest.java
@@ -1,16 +1,15 @@
package org.baeldung;
+import com.baeldung.protobuf.Application;
import org.junit.Test;
import org.junit.runner.RunWith;
import org.springframework.boot.test.context.SpringBootTest;
import org.springframework.test.annotation.DirtiesContext;
import org.springframework.test.context.junit4.SpringRunner;
-import com.baeldung.protobuf.Application;
-
@DirtiesContext
@RunWith(SpringRunner.class)
-@SpringBootTest(classes = Application.class)
+@SpringBootTest(classes = Application.class, webEnvironment = SpringBootTest.WebEnvironment.RANDOM_PORT)
public class SpringContextTest {
@Test
diff --git a/spring-rest-full/pom.xml b/spring-rest-full/pom.xml
index 5bc3a70ed5..a2736ba03c 100644
--- a/spring-rest-full/pom.xml
+++ b/spring-rest-full/pom.xml
@@ -125,6 +125,7 @@
xml-apis
xml-apis
+ ${xml-apis.version}
org.javassist
@@ -284,6 +285,7 @@
1.4.9
+ 1.4.01
19.0
@@ -294,4 +296,4 @@
1.1.3
-
\ No newline at end of file
+
diff --git a/spring-rest-query-language/pom.xml b/spring-rest-query-language/pom.xml
index 7ee658d8ba..293bac9479 100644
--- a/spring-rest-query-language/pom.xml
+++ b/spring-rest-query-language/pom.xml
@@ -144,6 +144,7 @@
xml-apis
xml-apis
+ ${xml-apis.version}
org.javassist
@@ -350,6 +351,7 @@
1.4.9
3.21.0-GA
+ 1.4.01
19.0
@@ -359,4 +361,4 @@
1.1.3
-
\ No newline at end of file
+
diff --git a/spring-security-rest-basic-auth/src/main/java/org/baeldung/web/controller/BarController.java b/spring-security-rest-basic-auth/src/main/java/org/baeldung/web/controller/BarController.java
index 2bc314baa2..5f32b9f73b 100644
--- a/spring-security-rest-basic-auth/src/main/java/org/baeldung/web/controller/BarController.java
+++ b/spring-security-rest-basic-auth/src/main/java/org/baeldung/web/controller/BarController.java
@@ -1,8 +1,12 @@
package org.baeldung.web.controller;
+import java.nio.charset.Charset;
+
+import org.apache.commons.codec.binary.Base64;
import org.baeldung.web.dto.Bar;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.context.ApplicationEventPublisher;
+import org.springframework.http.HttpHeaders;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.PathVariable;
import org.springframework.web.bind.annotation.RequestMapping;
@@ -28,4 +32,13 @@ public class BarController {
return new Bar();
}
+ public HttpHeaders createHeaders(String username, String password){
+ return new HttpHeaders() {{
+ String auth = username + ":" + password;
+ byte[] encodedAuth = Base64.encodeBase64(
+ auth.getBytes(Charset.forName("US-ASCII")) );
+ String authHeader = "Basic " + new String( encodedAuth );
+ set( "Authorization", authHeader );
+ }};
+ }
}
diff --git a/spring-thymeleaf-2/README.md b/spring-thymeleaf-2/README.md
index fa871465f9..d5c5ead43d 100644
--- a/spring-thymeleaf-2/README.md
+++ b/spring-thymeleaf-2/README.md
@@ -1,3 +1,7 @@
+## Spring Thymeleaf
+
+This module contains articles about Spring with Thymeleaf
+
## Relevant Articles:
- [Working with Enums in Thymeleaf](https://www.baeldung.com/thymeleaf-enums)
@@ -5,3 +9,8 @@
- [Spring Request Parameters with Thymeleaf](https://www.baeldung.com/spring-thymeleaf-request-parameters)
- [Thymeleaf lists Utility Object](https://www.baeldung.com/thymeleaf-lists-utility)
- [Spring Path Variables with Thymeleaf](https://www.baeldung.com/spring-thymeleaf-path-variables)
+- [Working with Arrays in Thymeleaf](https://www.baeldung.com/thymeleaf-arrays)
+- [Working with Boolean in Thymeleaf](https://www.baeldung.com/thymeleaf-boolean)
+- [Working With Custom HTML Attributes in Thymeleaf](https://www.baeldung.com/thymeleaf-custom-html-attributes)
+- [How to Create an Executable JAR with Maven](https://www.baeldung.com/executable-jar-with-maven)
+- [[<-- prev]](/spring-thymeleaf)
diff --git a/spring-thymeleaf-2/pom.xml b/spring-thymeleaf-2/pom.xml
index d31e5fa7f6..d53bb8ab1a 100644
--- a/spring-thymeleaf-2/pom.xml
+++ b/spring-thymeleaf-2/pom.xml
@@ -35,6 +35,27 @@
org.apache.maven.plugins
maven-war-plugin
+
+
+ org.apache.tomcat.maven
+ tomcat7-maven-plugin
+ ${tomcat7-maven-plugin.version}
+
+
+ tomcat-run
+
+ exec-war-only
+
+ package
+
+ /
+ false
+ webapp.jar
+ utf-8
+
+
+
+
spring-thymeleaf-2
@@ -42,5 +63,6 @@
1.8
1.8
+ 2.2
diff --git a/spring-thymeleaf/src/main/java/com/baeldung/thymeleaf/controller/ThymeleafArrayController.java b/spring-thymeleaf-2/src/main/java/com/baeldung/thymeleaf/arrays/ThymeleafArrayController.java
similarity index 92%
rename from spring-thymeleaf/src/main/java/com/baeldung/thymeleaf/controller/ThymeleafArrayController.java
rename to spring-thymeleaf-2/src/main/java/com/baeldung/thymeleaf/arrays/ThymeleafArrayController.java
index 8276cc4376..d137cbdf94 100644
--- a/spring-thymeleaf/src/main/java/com/baeldung/thymeleaf/controller/ThymeleafArrayController.java
+++ b/spring-thymeleaf-2/src/main/java/com/baeldung/thymeleaf/arrays/ThymeleafArrayController.java
@@ -1,4 +1,4 @@
-package com.baeldung.thymeleaf.controller;
+package com.baeldung.thymeleaf.arrays;
import org.springframework.stereotype.Controller;
import org.springframework.ui.Model;
diff --git a/spring-thymeleaf/src/main/java/com/baeldung/thymeleaf/controller/BooleanExpressionsController.java b/spring-thymeleaf-2/src/main/java/com/baeldung/thymeleaf/booleanexpressions/BooleanExpressionsController.java
similarity index 96%
rename from spring-thymeleaf/src/main/java/com/baeldung/thymeleaf/controller/BooleanExpressionsController.java
rename to spring-thymeleaf-2/src/main/java/com/baeldung/thymeleaf/booleanexpressions/BooleanExpressionsController.java
index 3a640e1499..e43e08334a 100644
--- a/spring-thymeleaf/src/main/java/com/baeldung/thymeleaf/controller/BooleanExpressionsController.java
+++ b/spring-thymeleaf-2/src/main/java/com/baeldung/thymeleaf/booleanexpressions/BooleanExpressionsController.java
@@ -1,4 +1,4 @@
-package com.baeldung.thymeleaf.controller;
+package com.baeldung.thymeleaf.booleanexpressions;
import org.springframework.stereotype.Controller;
import org.springframework.ui.Model;
diff --git a/spring-thymeleaf/src/main/java/com/baeldung/thymeleaf/model/Course.java b/spring-thymeleaf-2/src/main/java/com/baeldung/thymeleaf/customhtml/Course.java
similarity index 95%
rename from spring-thymeleaf/src/main/java/com/baeldung/thymeleaf/model/Course.java
rename to spring-thymeleaf-2/src/main/java/com/baeldung/thymeleaf/customhtml/Course.java
index df2e9cd097..9bf8e5e52c 100644
--- a/spring-thymeleaf/src/main/java/com/baeldung/thymeleaf/model/Course.java
+++ b/spring-thymeleaf-2/src/main/java/com/baeldung/thymeleaf/customhtml/Course.java
@@ -1,4 +1,4 @@
-package com.baeldung.thymeleaf.model;
+package com.baeldung.thymeleaf.customhtml;
import java.util.Date;
diff --git a/spring-thymeleaf/src/main/java/com/baeldung/thymeleaf/controller/CourseRegistrationController.java b/spring-thymeleaf-2/src/main/java/com/baeldung/thymeleaf/customhtml/CourseRegistrationController.java
similarity index 83%
rename from spring-thymeleaf/src/main/java/com/baeldung/thymeleaf/controller/CourseRegistrationController.java
rename to spring-thymeleaf-2/src/main/java/com/baeldung/thymeleaf/customhtml/CourseRegistrationController.java
index 2d2b5906e1..06e81ecba8 100644
--- a/spring-thymeleaf/src/main/java/com/baeldung/thymeleaf/controller/CourseRegistrationController.java
+++ b/spring-thymeleaf-2/src/main/java/com/baeldung/thymeleaf/customhtml/CourseRegistrationController.java
@@ -1,4 +1,4 @@
-package com.baeldung.thymeleaf.controller;
+package com.baeldung.thymeleaf.customhtml;
import org.springframework.stereotype.Controller;
import org.springframework.ui.Model;
@@ -6,8 +6,6 @@ import org.springframework.web.bind.annotation.ModelAttribute;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestMethod;
-import com.baeldung.thymeleaf.model.Course;
-
/**
* Handles requests for the student model.
*
@@ -18,13 +16,13 @@ public class CourseRegistrationController {
@RequestMapping(value = "/registerCourse", method = RequestMethod.POST)
public String register(@ModelAttribute Course course, Model model) {
model.addAttribute("successMessage", "You have successfully registered for course: " + course.getName() + ".");
- return "courseRegistration.html";
+ return "templates/courseRegistration.html";
}
@RequestMapping(value = "/registerCourse", method = RequestMethod.GET)
public String register(Model model) {
model.addAttribute("course", new Course());
- return "courseRegistration.html";
+ return "templates/courseRegistration.html";
}
}
diff --git a/spring-thymeleaf-2/src/main/java/com/baeldung/thymeleaf/controller/ParticipantController.java b/spring-thymeleaf-2/src/main/java/com/baeldung/thymeleaf/requestparameters/ParticipantController.java
similarity index 94%
rename from spring-thymeleaf-2/src/main/java/com/baeldung/thymeleaf/controller/ParticipantController.java
rename to spring-thymeleaf-2/src/main/java/com/baeldung/thymeleaf/requestparameters/ParticipantController.java
index 9a354e709c..faa4ae0cf9 100644
--- a/spring-thymeleaf-2/src/main/java/com/baeldung/thymeleaf/controller/ParticipantController.java
+++ b/spring-thymeleaf-2/src/main/java/com/baeldung/thymeleaf/requestparameters/ParticipantController.java
@@ -1,4 +1,4 @@
-package com.baeldung.thymeleaf.controller;
+package com.baeldung.thymeleaf.requestparameters;
import org.springframework.stereotype.Controller;
import org.springframework.ui.Model;
diff --git a/spring-thymeleaf/src/main/webapp/WEB-INF/views/booleans.html b/spring-thymeleaf-2/src/main/resources/templates/booleans.html
similarity index 100%
rename from spring-thymeleaf/src/main/webapp/WEB-INF/views/booleans.html
rename to spring-thymeleaf-2/src/main/resources/templates/booleans.html
diff --git a/spring-thymeleaf/src/main/resources/templates/continents.html b/spring-thymeleaf-2/src/main/resources/templates/continents.html
similarity index 100%
rename from spring-thymeleaf/src/main/resources/templates/continents.html
rename to spring-thymeleaf-2/src/main/resources/templates/continents.html
diff --git a/spring-thymeleaf/src/main/webapp/WEB-INF/views/courseRegistration.html b/spring-thymeleaf-2/src/main/resources/templates/courseRegistration.html
similarity index 100%
rename from spring-thymeleaf/src/main/webapp/WEB-INF/views/courseRegistration.html
rename to spring-thymeleaf-2/src/main/resources/templates/courseRegistration.html
diff --git a/spring-thymeleaf/.gitignore b/spring-thymeleaf/.gitignore
deleted file mode 100644
index b83d22266a..0000000000
--- a/spring-thymeleaf/.gitignore
+++ /dev/null
@@ -1 +0,0 @@
-/target/
diff --git a/spring-thymeleaf/README.md b/spring-thymeleaf/README.md
index 329ef8580c..a5c6791609 100644
--- a/spring-thymeleaf/README.md
+++ b/spring-thymeleaf/README.md
@@ -9,16 +9,11 @@ This module contains articles about Spring with Thymeleaf
- [Spring and Thymeleaf 3: Expressions](https://www.baeldung.com/spring-thymeleaf-3-expressions)
- [Spring MVC + Thymeleaf 3.0: New Features](https://www.baeldung.com/spring-thymeleaf-3)
- [How to Work with Dates in Thymeleaf](https://www.baeldung.com/dates-in-thymeleaf)
-- [How to Create an Executable JAR with Maven](https://www.baeldung.com/executable-jar-with-maven)
-- [Working with Boolean in Thymeleaf](https://www.baeldung.com/thymeleaf-boolean)
- [Working with Fragments in Thymeleaf](https://www.baeldung.com/spring-thymeleaf-fragments)
- [Conditionals in Thymeleaf](https://www.baeldung.com/spring-thymeleaf-conditionals)
- [Iteration in Thymeleaf](https://www.baeldung.com/thymeleaf-iteration)
-- [Working With Arrays in Thymeleaf](https://www.baeldung.com/thymeleaf-arrays)
- [Spring with Thymeleaf Pagination for a List](https://www.baeldung.com/spring-thymeleaf-pagination)
- [Working with Select and Option in Thymeleaf](https://www.baeldung.com/thymeleaf-select-option)
-- [Working With Custom HTML Attributes in Thymeleaf](https://www.baeldung.com/thymeleaf-custom-html-attributes)
-- [Spring Request Parameters with Thymeleaf](https://www.baeldung.com/spring-thymeleaf-request-parameters)
- [[next -->]](/spring-thymeleaf-2)
### Build the Project
@@ -35,7 +30,6 @@ Access the pages using the URLs:
- http://localhost:8082/spring-thymeleaf/
- http://localhost:8082/spring-thymeleaf/addStudent/
- http://localhost:8082/spring-thymeleaf/listStudents/
- - http://localhost:8082/spring-thymeleaf/booleans/
The first URL is the home page of the application. The home page has links to the second and third pages.
diff --git a/spring-thymeleaf/pom.xml b/spring-thymeleaf/pom.xml
index cdc2ed25ae..d260a78d76 100644
--- a/spring-thymeleaf/pom.xml
+++ b/spring-thymeleaf/pom.xml
@@ -141,26 +141,6 @@
-
- org.apache.tomcat.maven
- tomcat7-maven-plugin
- ${tomcat7-maven-plugin.version}
-
-
- tomcat-run
-
- exec-war-only
-
- package
-
- /
- false
- webapp.jar
- utf-8
-
-
-
-
@@ -174,7 +154,6 @@
1.6.1
- 2.2
diff --git a/spring-thymeleaf/src/main/java/com/baeldung/thymeleaf/WorkingWithArraysInThymeleafApplication.java b/spring-thymeleaf/src/main/java/com/baeldung/thymeleaf/WorkingWithArraysInThymeleafApplication.java
deleted file mode 100644
index bce0660fda..0000000000
--- a/spring-thymeleaf/src/main/java/com/baeldung/thymeleaf/WorkingWithArraysInThymeleafApplication.java
+++ /dev/null
@@ -1,12 +0,0 @@
-// package com.baeldung.thymeleaf;
-
-// import org.springframework.boot.SpringApplication;
-// import org.springframework.boot.autoconfigure.SpringBootApplication;
-
-// @SpringBootApplication
-// public class WorkingWithArraysInThymeleafApplication {
-
-// public static void main(String[] args) {
-// SpringApplication.run(WorkingWithArraysInThymeleafApplication.class, args);
-// }
-// }
diff --git a/spring-thymeleaf/src/main/webapp/WEB-INF/views/home.html b/spring-thymeleaf/src/main/webapp/WEB-INF/views/home.html
index 25ff6a19bb..b458f7270c 100644
--- a/spring-thymeleaf/src/main/webapp/WEB-INF/views/home.html
+++ b/spring-thymeleaf/src/main/webapp/WEB-INF/views/home.html
@@ -24,9 +24,6 @@
|
-
- |
-