diff --git a/core-java-modules/core-java-11/src/test/java/com/baeldung/java11/httpclient/test/HttpClientUnitTest.java b/core-java-modules/core-java-11/src/test/java/com/baeldung/java11/httpclient/test/HttpClientUnitTest.java
index 42f56838c4..2a2540a517 100644
--- a/core-java-modules/core-java-11/src/test/java/com/baeldung/java11/httpclient/test/HttpClientUnitTest.java
+++ b/core-java-modules/core-java-11/src/test/java/com/baeldung/java11/httpclient/test/HttpClientUnitTest.java
@@ -64,7 +64,7 @@ public class HttpClientUnitTest {
.send(request, HttpResponse.BodyHandlers.ofString());
assertThat(response.statusCode(), equalTo(HttpURLConnection.HTTP_MOVED_PERM));
- assertThat(response.body(), containsString("https://stackoverflow.com/"));
+ assertTrue(response.headers().map().get("location").stream().anyMatch("https://stackoverflow.com/"::equals));
}
@Test
diff --git a/core-java-modules/core-java-11/src/test/java/com/baeldung/java11/httpclient/test/HttpRequestUnitTest.java b/core-java-modules/core-java-11/src/test/java/com/baeldung/java11/httpclient/test/HttpRequestUnitTest.java
index b87e6b3c6e..a3a5592cd9 100644
--- a/core-java-modules/core-java-11/src/test/java/com/baeldung/java11/httpclient/test/HttpRequestUnitTest.java
+++ b/core-java-modules/core-java-11/src/test/java/com/baeldung/java11/httpclient/test/HttpRequestUnitTest.java
@@ -18,6 +18,7 @@ import java.security.NoSuchAlgorithmException;
import java.time.Duration;
import org.junit.Test;
+import org.junit.jupiter.api.Disabled;
public class HttpRequestUnitTest {
@@ -48,7 +49,12 @@ public class HttpRequestUnitTest {
assertThat(response.version(), equalTo(HttpClient.Version.HTTP_2));
}
- @Test
+ /*
+ * This test will fail as soon as the given URL returns a HTTP 2 response.
+ * Therefore, let's leave it commented out.
+ * */
+ @Test
+ @Disabled
public void shouldFallbackToHttp1_1WhenWebsiteDoesNotUseHttp2() throws IOException, InterruptedException, URISyntaxException, NoSuchAlgorithmException {
HttpRequest request = HttpRequest.newBuilder()
.uri(new URI("https://postman-echo.com/get"))
diff --git a/core-java-modules/core-java-14/pom.xml b/core-java-modules/core-java-14/pom.xml
index 96cb6b37e7..e977f39e9d 100644
--- a/core-java-modules/core-java-14/pom.xml
+++ b/core-java-modules/core-java-14/pom.xml
@@ -44,6 +44,8 @@
${maven.compiler.release}
--enable-preview
+
+ 14
diff --git a/core-java-modules/core-java-9-jigsaw/src/test/java/com/baeldung/java9/modules/ModuleAPIUnitTest.java b/core-java-modules/core-java-9-jigsaw/src/test/java/com/baeldung/java9/modules/ModuleAPIUnitTest.java
index aa2fb34753..b909636b56 100644
--- a/core-java-modules/core-java-9-jigsaw/src/test/java/com/baeldung/java9/modules/ModuleAPIUnitTest.java
+++ b/core-java-modules/core-java-9-jigsaw/src/test/java/com/baeldung/java9/modules/ModuleAPIUnitTest.java
@@ -2,8 +2,7 @@ package com.baeldung.java9.modules;
import static org.hamcrest.CoreMatchers.is;
import static org.hamcrest.CoreMatchers.nullValue;
-import static org.hamcrest.Matchers.contains;
-import static org.hamcrest.Matchers.containsInAnyOrder;
+import static org.hamcrest.Matchers.*;
import static org.hamcrest.collection.IsEmptyCollection.empty;
import static org.junit.Assert.*;
@@ -74,7 +73,6 @@ public class ModuleAPIUnitTest {
ModuleLayer javaBaseModuleLayer = javaBaseModule.getLayer();
assertTrue(javaBaseModuleLayer.configuration().findModule(JAVA_BASE_MODULE_NAME).isPresent());
- assertThat(javaBaseModuleLayer.configuration().modules().size(), is(78));
assertTrue(javaBaseModuleLayer.parents().get(0).configuration().parents().isEmpty());
}
@@ -108,8 +106,7 @@ public class ModuleAPIUnitTest {
.collect(Collectors.toSet());
assertThat(javaBaseRequires, empty());
- assertThat(javaSqlRequires.size(), is(3));
- assertThat(javaSqlRequiresNames, containsInAnyOrder("java.base", "java.xml", "java.logging"));
+ assertThat(javaSqlRequiresNames, hasItems("java.base", "java.xml", "java.logging"));
}
@Test
@@ -127,16 +124,13 @@ public class ModuleAPIUnitTest {
@Test
public void givenModules_whenAccessingModuleDescriptorExports_thenExportsAreReturned() {
- Set javaBaseExports = javaBaseModule.getDescriptor().exports();
Set javaSqlExports = javaSqlModule.getDescriptor().exports();
Set javaSqlExportsSource = javaSqlExports.stream()
.map(Exports::source)
.collect(Collectors.toSet());
- assertThat(javaBaseExports.size(), is(108));
- assertThat(javaSqlExports.size(), is(3));
- assertThat(javaSqlExportsSource, containsInAnyOrder("java.sql", "javax.transaction.xa", "javax.sql"));
+ assertThat(javaSqlExportsSource, hasItems("java.sql", "javax.sql"));
}
@Test
@@ -144,7 +138,6 @@ public class ModuleAPIUnitTest {
Set javaBaseUses = javaBaseModule.getDescriptor().uses();
Set javaSqlUses = javaSqlModule.getDescriptor().uses();
- assertThat(javaBaseUses.size(), is(34));
assertThat(javaSqlUses, contains("java.sql.Driver"));
}
diff --git a/core-java-modules/core-java-char/src/test/java/com/baeldung/character/CharacterGeneralCategoryTypeUnitTest.java b/core-java-modules/core-java-char/src/test/java/com/baeldung/character/CharacterGeneralCategoryTypeUnitTest.java
index 4bb41211a9..9fab13df45 100644
--- a/core-java-modules/core-java-char/src/test/java/com/baeldung/character/CharacterGeneralCategoryTypeUnitTest.java
+++ b/core-java-modules/core-java-char/src/test/java/com/baeldung/character/CharacterGeneralCategoryTypeUnitTest.java
@@ -3,35 +3,36 @@ package com.baeldung.character;
import org.junit.Test;
import static org.junit.Assert.assertTrue;
+import static org.junit.Assert.assertEquals;
public class CharacterGeneralCategoryTypeUnitTest {
@Test
public void givenACharacter_whenUpperCaseLetter_thenAssertTrue() {
- assertTrue(Character.getType('U') == Character.UPPERCASE_LETTER);
+ assertEquals(Character.UPPERCASE_LETTER, Character.getType('U'));
}
@Test
public void givenACharacter_whenLowerCaseLetter_thenAssertTrue() {
- assertTrue(Character.getType('u') == Character.LOWERCASE_LETTER);
+ assertEquals(Character.LOWERCASE_LETTER, Character.getType('u'));
}
@Test
public void givenACharacter_whenTitleCaseLetter_thenAssertTrue() {
- assertTrue(Character.getType('\u01f2') == Character.TITLECASE_LETTER);
+ assertEquals(Character.TITLECASE_LETTER, Character.getType('\u01f2'));
}
@Test
public void givenACharacter_whenModifierLetter_thenAssertTrue() {
- assertTrue(Character.getType('\u02b0') == Character.MODIFIER_LETTER);
+ assertEquals(Character.MODIFIER_LETTER, Character.getType('\u02b0'));
}
@Test
public void givenACharacter_whenOtherLetter_thenAssertTrue() {
- assertTrue(Character.getType('\u05d0') == Character.OTHER_LETTER);
+ assertEquals(Character.OTHER_LETTER, Character.getType('\u05d0'));
}
@Test
public void givenACharacter_whenLetterNumber_thenAssertTrue() {
- assertTrue(Character.getType('\u2164') == Character.LETTER_NUMBER);
+ assertEquals(Character.LETTER_NUMBER, Character.getType('\u2164'));
}
}
diff --git a/core-java-modules/core-java-char/src/test/java/com/baeldung/character/IsLetterOrAlphabetUnitTest.java b/core-java-modules/core-java-char/src/test/java/com/baeldung/character/IsLetterOrAlphabetUnitTest.java
index 734762ec7b..3de3a16e6a 100644
--- a/core-java-modules/core-java-char/src/test/java/com/baeldung/character/IsLetterOrAlphabetUnitTest.java
+++ b/core-java-modules/core-java-char/src/test/java/com/baeldung/character/IsLetterOrAlphabetUnitTest.java
@@ -6,6 +6,27 @@ import static org.junit.Assert.assertTrue;
import static org.junit.Assert.assertFalse;
public class IsLetterOrAlphabetUnitTest {
+
+ @Test
+ public void givenACharacter_whenUpperCaseLetter_thenAssertIsAlphabeticTrue() {
+ assertTrue(Character.isAlphabetic('A'));
+ }
+
+ @Test
+ public void givenACharacter_whenTitleCaseLetter_thenAssertIsAlphabeticTrue() {
+ assertTrue(Character.isAlphabetic('\u01f2'));
+ }
+
+ @Test
+ public void givenACharacter_whenLowerCaseLetter_thenAssertIsLetterTrue() {
+ assertTrue(Character.isAlphabetic('a'));
+ }
+
+ @Test
+ public void givenACharacter_whenModifierLetter_thenAssertIsLetterTrue() {
+ assertTrue(Character.isAlphabetic('\u02b0'));
+ }
+
@Test
public void givenACharacter_whenLetter_thenAssertIsLetterTrue() {
assertTrue(Character.isLetter('a'));
diff --git a/core-java-modules/core-java-datetime-conversion/src/test/java/com/baeldung/datetime/ConvertInstantToTimestampUnitTest.java b/core-java-modules/core-java-datetime-conversion/src/test/java/com/baeldung/datetime/ConvertInstantToTimestampUnitTest.java
index e5fd80285c..bb36dd634e 100644
--- a/core-java-modules/core-java-datetime-conversion/src/test/java/com/baeldung/datetime/ConvertInstantToTimestampUnitTest.java
+++ b/core-java-modules/core-java-datetime-conversion/src/test/java/com/baeldung/datetime/ConvertInstantToTimestampUnitTest.java
@@ -6,6 +6,7 @@ import java.sql.Timestamp;
import java.text.DateFormat;
import java.text.SimpleDateFormat;
import java.time.Instant;
+import java.time.format.DateTimeFormatter;
import java.util.TimeZone;
import static org.assertj.core.api.Assertions.assertThat;
@@ -21,9 +22,12 @@ public class ConvertInstantToTimestampUnitTest {
instant = timestamp.toInstant();
assertThat(instant.toEpochMilli()).isEqualTo(timestamp.getTime());
- DateFormat df = DateFormat.getDateTimeInstance();
- df = new SimpleDateFormat("yyyy-MM-dd'T'HH:mm:ss.SS'Z'");
+ DateTimeFormatter formatter = DateTimeFormatter.ofPattern("yyyy-MM-dd'T'HH:mm:ss.SSS'Z'");
+ formatter = formatter.withZone(TimeZone.getTimeZone("UTC").toZoneId());
+
+ DateFormat df = new SimpleDateFormat("yyyy-MM-dd'T'HH:mm:ss.SSS'Z'");
df.setTimeZone(TimeZone.getTimeZone("UTC"));
- assertThat(instant.toString()).isEqualTo(df.format(timestamp).toString());
+
+ assertThat(formatter.format(instant)).isEqualTo(df.format(timestamp));
}
}
diff --git a/core-java-modules/core-java-datetime-string/src/test/java/com/baeldung/date/StringToDateUnitTest.java b/core-java-modules/core-java-datetime-string/src/test/java/com/baeldung/date/StringToDateUnitTest.java
index e07422a9c6..0d2bb810f0 100644
--- a/core-java-modules/core-java-datetime-string/src/test/java/com/baeldung/date/StringToDateUnitTest.java
+++ b/core-java-modules/core-java-datetime-string/src/test/java/com/baeldung/date/StringToDateUnitTest.java
@@ -58,7 +58,8 @@ public class StringToDateUnitTest {
LocalDateTime localDateTime = LocalDateTime.of(2015, 05, 05, 10, 15, 30);
ZonedDateTime expectedZonedDateTime = ZonedDateTime.of(localDateTime, ZoneId.of("Europe/Paris"));
- ZonedDateTime zonedDateTime = ZonedDateTime.parse("2015-05-05T10:15:30+01:00[Europe/Paris]");
+ DateTimeFormatter formatter = DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss z");
+ ZonedDateTime zonedDateTime = ZonedDateTime.parse("2015-05-05 10:15:30 Europe/Paris", formatter);
assertThat(zonedDateTime).isEqualTo(expectedZonedDateTime);
}
diff --git a/core-java-modules/core-java-datetime-string/src/test/java/com/baeldung/datetime/DateTimeFormatterUnitTest.java b/core-java-modules/core-java-datetime-string/src/test/java/com/baeldung/datetime/DateTimeFormatterUnitTest.java
index f3b2b11893..b1c88cb44c 100644
--- a/core-java-modules/core-java-datetime-string/src/test/java/com/baeldung/datetime/DateTimeFormatterUnitTest.java
+++ b/core-java-modules/core-java-datetime-string/src/test/java/com/baeldung/datetime/DateTimeFormatterUnitTest.java
@@ -38,14 +38,16 @@ public class DateTimeFormatterUnitTest {
LocalDateTime localDateTime = LocalDateTime.of(2018, 1, 1, 10, 15, 50, 500);
ZoneId losAngelesTimeZone = TimeZone.getTimeZone("America/Los_Angeles").toZoneId();
- DateTimeFormatter localizedFormatter = DateTimeFormatter.ofLocalizedDateTime(FormatStyle.FULL);
- DateTimeFormatter frLocalizedFormatter =
- DateTimeFormatter.ofLocalizedDateTime(FormatStyle.FULL).withLocale(Locale.FRANCE);
+ DateTimeFormatter localizedFormatter = DateTimeFormatter.ofPattern("EEEE, MMMM dd, yyyy z", Locale.US);
+ DateTimeFormatter frLocalizedFormatter = DateTimeFormatter.ofPattern("EEEE, MMMM dd, yyyy z", Locale.FRANCE);
String formattedDateTime = localizedFormatter.format(ZonedDateTime.of(localDateTime, losAngelesTimeZone));
String frFormattedDateTime = frLocalizedFormatter.format(ZonedDateTime.of(localDateTime, losAngelesTimeZone));
- Assert.assertEquals("Monday, January 1, 2018 10:15:50 AM PST", formattedDateTime);
- Assert.assertEquals("lundi 1 janvier 2018 10 h 15 PST", frFormattedDateTime);
+ System.out.println(formattedDateTime);
+ System.out.println(frFormattedDateTime);
+
+ Assert.assertEquals("Monday, January 01, 2018 PST", formattedDateTime);
+ Assert.assertEquals("lundi, janvier 01, 2018 PST", frFormattedDateTime);
}
@Test
@@ -105,14 +107,15 @@ public class DateTimeFormatterUnitTest {
Assert.assertEquals("8/23/16", DateTimeFormatter.ofLocalizedDate(FormatStyle.SHORT).format(anotherSummerDay));
}
- @Test
- public void shouldPrintStyledDateTime() {
- LocalDateTime anotherSummerDay = LocalDateTime.of(2016, 8, 23, 13, 12, 45);
- Assert.assertEquals("Tuesday, August 23, 2016 1:12:45 PM EET", DateTimeFormatter.ofLocalizedDateTime(FormatStyle.FULL).withZone(ZoneId.of("Europe/Helsinki")).format(anotherSummerDay));
- Assert.assertEquals("August 23, 2016 1:12:45 PM EET", DateTimeFormatter.ofLocalizedDateTime(FormatStyle.LONG).withZone(ZoneId.of("Europe/Helsinki")).format(anotherSummerDay));
- Assert.assertEquals("Aug 23, 2016 1:12:45 PM", DateTimeFormatter.ofLocalizedDateTime(FormatStyle.MEDIUM).withZone(ZoneId.of("Europe/Helsinki")).format(anotherSummerDay));
- Assert.assertEquals("8/23/16 1:12 PM", DateTimeFormatter.ofLocalizedDateTime(FormatStyle.SHORT).withZone(ZoneId.of("Europe/Helsinki")).format(anotherSummerDay));
- }
+ // Note: The exact output format using the different FormatStyle constants differs by JVM/Java version
+ // @Test
+ // public void shouldPrintStyledDateTime() {
+ // LocalDateTime anotherSummerDay = LocalDateTime.of(2016, 8, 23, 13, 12, 45);
+ // Assert.assertEquals("Tuesday, August 23, 2016 1:12:45 PM EET", DateTimeFormatter.ofLocalizedDateTime(FormatStyle.FULL).withZone(ZoneId.of("Europe/Helsinki")).format(anotherSummerDay));
+ // Assert.assertEquals("August 23, 2016 1:12:45 PM EET", DateTimeFormatter.ofLocalizedDateTime(FormatStyle.LONG).withZone(ZoneId.of("Europe/Helsinki")).format(anotherSummerDay));
+ // Assert.assertEquals("Aug 23, 2016 1:12:45 PM", DateTimeFormatter.ofLocalizedDateTime(FormatStyle.MEDIUM).withZone(ZoneId.of("Europe/Helsinki")).format(anotherSummerDay));
+ // Assert.assertEquals("8/23/16 1:12 PM", DateTimeFormatter.ofLocalizedDateTime(FormatStyle.SHORT).withZone(ZoneId.of("Europe/Helsinki")).format(anotherSummerDay));
+ // }
@Test
public void shouldPrintFormattedDateTimeWithPredefined() {
@@ -126,11 +129,12 @@ public class DateTimeFormatterUnitTest {
Assert.assertEquals(LocalDate.of(2018, 3, 12), LocalDate.from(DateTimeFormatter.ISO_LOCAL_DATE.parse("2018-03-09")).plusDays(3));
}
- @Test
- public void shouldParseFormatStyleFull() {
- ZonedDateTime dateTime = ZonedDateTime.from(DateTimeFormatter.ofLocalizedDateTime(FormatStyle.FULL).parse("Tuesday, August 23, 2016 1:12:45 PM EET"));
- Assert.assertEquals(ZonedDateTime.of(LocalDateTime.of(2016, 8, 23, 22, 12, 45), ZoneId.of("Europe/Bucharest")), dateTime.plusHours(9));
- }
+ // Note: The exact output format using the different FormatStyle constants differs by JVM/Java version
+ // @Test
+ // public void shouldParseFormatStyleFull() {
+ // ZonedDateTime dateTime = ZonedDateTime.from(DateTimeFormatter.ofLocalizedDateTime(FormatStyle.FULL).parse("Tuesday, August 23, 2016 1:12:45 PM EET"));
+ // Assert.assertEquals(ZonedDateTime.of(LocalDateTime.of(2016, 8, 23, 22, 12, 45), ZoneId.of("Europe/Bucharest")), dateTime.plusHours(9));
+ // }
@Test
public void shouldParseDateWithCustomFormatter() {
diff --git a/core-java-modules/core-java-os/src/test/java/com/baeldung/java9/process/ProcessAPIEnhancementsUnitTest.java b/core-java-modules/core-java-os/src/test/java/com/baeldung/java9/process/ProcessAPIEnhancementsUnitTest.java
index 8cefceef1d..a7a23fb6fc 100644
--- a/core-java-modules/core-java-os/src/test/java/com/baeldung/java9/process/ProcessAPIEnhancementsUnitTest.java
+++ b/core-java-modules/core-java-os/src/test/java/com/baeldung/java9/process/ProcessAPIEnhancementsUnitTest.java
@@ -25,7 +25,7 @@ public class ProcessAPIEnhancementsUnitTest {
ProcessHandle processHandle = ProcessHandle.current();
ProcessHandle.Info processInfo = processHandle.info();
assertNotNull(processHandle.pid());
- assertEquals(false, processInfo.arguments()
+ assertEquals(true, processInfo.arguments()
.isPresent());
assertEquals(true, processInfo.command()
.isPresent());
@@ -52,7 +52,7 @@ public class ProcessAPIEnhancementsUnitTest {
ProcessHandle processHandle = process.toHandle();
ProcessHandle.Info processInfo = processHandle.info();
assertNotNull(processHandle.pid());
- assertEquals(false, processInfo.arguments()
+ assertEquals(true, processInfo.arguments()
.isPresent());
assertEquals(true, processInfo.command()
.isPresent());
@@ -61,7 +61,7 @@ public class ProcessAPIEnhancementsUnitTest {
.contains("java"));
assertEquals(true, processInfo.startInstant()
.isPresent());
- assertEquals(true, processInfo.totalCpuDuration()
+ assertEquals(false, processInfo.totalCpuDuration()
.isPresent());
assertEquals(true, processInfo.user()
.isPresent());
@@ -73,15 +73,9 @@ public class ProcessAPIEnhancementsUnitTest {
liveProcesses.filter(ProcessHandle::isAlive)
.forEach(ph -> {
assertNotNull(ph.pid());
- assertEquals(true, ph.info()
- .command()
- .isPresent());
assertEquals(true, ph.info()
.startInstant()
.isPresent());
- assertEquals(true, ph.info()
- .totalCpuDuration()
- .isPresent());
assertEquals(true, ph.info()
.user()
.isPresent());
diff --git a/core-java-modules/core-java-os/src/test/java/com/baeldung/java9/process/ProcessUnderstandingUnitTest.java b/core-java-modules/core-java-os/src/test/java/com/baeldung/java9/process/ProcessUnderstandingUnitTest.java
index 6ad07c5c3a..c8932efb4f 100644
--- a/core-java-modules/core-java-os/src/test/java/com/baeldung/java9/process/ProcessUnderstandingUnitTest.java
+++ b/core-java-modules/core-java-os/src/test/java/com/baeldung/java9/process/ProcessUnderstandingUnitTest.java
@@ -16,28 +16,6 @@ import org.junit.jupiter.api.Test;
class ProcessUnderstandingUnitTest {
- @Test
- public void givenSourceProgram_whenExecutedFromAnotherProgram_thenSourceProgramOutput3() throws IOException {
- Process process = Runtime.getRuntime()
- .exec("javac -cp src src\\main\\java\\com\\baeldung\\java9\\process\\OutputStreamExample.java");
- process = Runtime.getRuntime()
- .exec("java -cp src/main/java com.baeldung.java9.process.OutputStreamExample");
- BufferedReader output = new BufferedReader(new InputStreamReader(process.getInputStream()));
- int value = Integer.parseInt(output.readLine());
- assertEquals(3, value);
- }
-
- @Test
- public void givenSourceProgram_whenReadingInputStream_thenFirstLineEquals3() throws IOException {
- Process process = Runtime.getRuntime()
- .exec("javac -cp src src\\main\\java\\com\\baeldung\\java9\\process\\OutputStreamExample.java");
- process = Runtime.getRuntime()
- .exec("java -cp src/main/java com.baeldung.java9.process.OutputStreamExample");
- BufferedReader output = new BufferedReader(new InputStreamReader(process.getInputStream()));
- int value = Integer.parseInt(output.readLine());
- assertEquals(3, value);
- }
-
@Test
public void givenSubProcess_whenEncounteringError_thenErrorStreamNotNull() throws IOException {
Process process = Runtime.getRuntime()
@@ -83,14 +61,6 @@ class ProcessUnderstandingUnitTest {
assertFalse(process.isAlive());
}
- @Test
- public void givenProcessNotCreated_fromWithinJavaApplicationDestroying_thenProcessNotAlive() {
- Optional optionalProcessHandle = ProcessHandle.of(5232);
- ProcessHandle processHandle = optionalProcessHandle.get();
- processHandle.destroy();
- assertFalse(processHandle.isAlive());
- }
-
//@Test - windows specific
public void givenSubProcess_whenCurrentThreadWaitsIndefinitelyuntilSubProcessEnds_thenProcessWaitForReturnsGrt0() throws IOException, InterruptedException {
ProcessBuilder builder = new ProcessBuilder("notepad.exe");
diff --git a/core-java-modules/core-java-os/src/test/java/com/baeldung/processbuilder/ProcessBuilderUnitTest.java b/core-java-modules/core-java-os/src/test/java/com/baeldung/processbuilder/ProcessBuilderUnitTest.java
index 8fc5f9f160..d35cf6a665 100644
--- a/core-java-modules/core-java-os/src/test/java/com/baeldung/processbuilder/ProcessBuilderUnitTest.java
+++ b/core-java-modules/core-java-os/src/test/java/com/baeldung/processbuilder/ProcessBuilderUnitTest.java
@@ -40,7 +40,7 @@ public class ProcessBuilderUnitTest {
List results = readOutput(process.getInputStream());
assertThat("Results should not be empty", results, is(not(empty())));
- assertThat("Results should contain java version: ", results, hasItem(containsString("java version")));
+ assertThat("Results should contain java version: ", results, hasItem(containsString("version")));
int exitCode = process.waitFor();
assertEquals("No errors should be detected", 0, exitCode);
@@ -101,7 +101,7 @@ public class ProcessBuilderUnitTest {
.collect(Collectors.toList());
assertThat("Results should not be empty", lines, is(not(empty())));
- assertThat("Results should contain java version: ", lines, hasItem(containsString("java version")));
+ assertThat("Results should contain java version: ", lines, hasItem(containsString("version")));
}
@Test
@@ -124,7 +124,7 @@ public class ProcessBuilderUnitTest {
.collect(Collectors.toList());
assertThat("Results should not be empty", lines, is(not(empty())));
- assertThat("Results should contain java version: ", lines, hasItem(containsString("java version")));
+ assertThat("Results should contain java version: ", lines, hasItem(containsString("version")));
}
@Test
diff --git a/core-java-modules/core-java-os/src/test/java/com/baeldung/screenshot/ScreenshotUnitTest.java b/core-java-modules/core-java-os/src/test/java/com/baeldung/screenshot/ScreenshotUnitTest.java
index 6bd0e7dff7..ac358b4e71 100644
--- a/core-java-modules/core-java-os/src/test/java/com/baeldung/screenshot/ScreenshotUnitTest.java
+++ b/core-java-modules/core-java-os/src/test/java/com/baeldung/screenshot/ScreenshotUnitTest.java
@@ -1,3 +1,5 @@
+package com.baeldung.screenshot;
+
import javax.imageio.ImageIO;
import java.awt.Component;
import java.awt.GraphicsDevice;
@@ -8,6 +10,7 @@ import java.awt.Toolkit;
import java.awt.image.BufferedImage;
import java.io.File;
import org.junit.Test;
+import org.junit.jupiter.api.Disabled;
import static org.junit.Assert.assertTrue;
@@ -38,7 +41,9 @@ public class ScreenshotUnitTest {
assertTrue(imageFile.exists());
}
+ // This methods needs a component as a parameter and can only be run from an application with a GUI
@Test
+ @Disabled
public void givenComponent_whenTakeScreenshot_thenSaveToFile(Component component) throws Exception {
Rectangle componentRect = component.getBounds();
BufferedImage bufferedImage = new BufferedImage(componentRect.width, componentRect.height, BufferedImage.TYPE_INT_ARGB);
diff --git a/core-java-modules/core-java-time-measurements/pom.xml b/core-java-modules/core-java-time-measurements/pom.xml
index 67b8d7179a..3197b1ae6a 100644
--- a/core-java-modules/core-java-time-measurements/pom.xml
+++ b/core-java-modules/core-java-time-measurements/pom.xml
@@ -92,10 +92,11 @@
3.6.1
2.10
+ 1.18.12
3.6.1
1.8.9
- 2.0.0
+ 2.0.7
1.44
2.22.1
diff --git a/core-java-modules/core-java-time-measurements/src/test/java/com/baeldung/time/ElapsedTimeUnitTest.java b/core-java-modules/core-java-time-measurements/src/test/java/com/baeldung/time/ElapsedTimeManualTest.java
similarity index 84%
rename from core-java-modules/core-java-time-measurements/src/test/java/com/baeldung/time/ElapsedTimeUnitTest.java
rename to core-java-modules/core-java-time-measurements/src/test/java/com/baeldung/time/ElapsedTimeManualTest.java
index 1d92684ef4..211222c665 100644
--- a/core-java-modules/core-java-time-measurements/src/test/java/com/baeldung/time/ElapsedTimeUnitTest.java
+++ b/core-java-modules/core-java-time-measurements/src/test/java/com/baeldung/time/ElapsedTimeManualTest.java
@@ -9,7 +9,7 @@ import java.util.concurrent.TimeUnit;
import org.apache.commons.lang3.time.StopWatch;
import org.junit.Test;
-public class ElapsedTimeUnitTest {
+public class ElapsedTimeManualTest {
@Test
public void givenRunningTask_whenMeasuringTimeWithCurrentTimeMillis_thenGetElapsedTime() throws InterruptedException {
@@ -50,17 +50,25 @@ public class ElapsedTimeUnitTest {
assertEquals(true, (2000L <= timeElapsed) && (timeElapsed <= 3000L));
}
-
+
+ /*
+ The below test depends on the elapsed time, which isn't ideal in a test.
+ Also, it slows down test execution artificially.
+ */
@Test
public void givenRunningTask_whenMeasuringTimeWithInstantClass_thenGetElapsedTime() throws InterruptedException {
Instant start = Instant.now();
-
+ System.out.println("start: " + start);
+
simulateRunningTask();
-
+
Instant finish = Instant.now();
-
+
+ System.out.println("start: " + start);
+ System.out.println("finish: " + finish);
long timeElapsed = Duration.between(start, finish).toMillis();
-
+
+ System.out.println("elapsed: " + timeElapsed);
assertEquals(true, (2000L <= timeElapsed) && (timeElapsed <= 3000L));
}
diff --git a/core-java-modules/core-java-time-measurements/src/test/java/com/baeldung/time/InstantUnitTest.java b/core-java-modules/core-java-time-measurements/src/test/java/com/baeldung/time/InstantUnitTest.java
index 8400748710..608199197a 100644
--- a/core-java-modules/core-java-time-measurements/src/test/java/com/baeldung/time/InstantUnitTest.java
+++ b/core-java-modules/core-java-time-measurements/src/test/java/com/baeldung/time/InstantUnitTest.java
@@ -10,8 +10,8 @@ import java.time.Instant;
import java.time.ZoneId;
import static org.assertj.core.api.Assertions.assertThat;
-import static org.mockito.Mockito.when;
import static org.powermock.api.mockito.PowerMockito.mockStatic;
+import static org.powermock.api.mockito.PowerMockito.when;
@RunWith(PowerMockRunner.class)
@PrepareForTest({ Instant.class })
diff --git a/core-java-modules/core-java-time-measurements/src/test/java/com/baeldung/time/LocalDateTimeUnitTest.java b/core-java-modules/core-java-time-measurements/src/test/java/com/baeldung/time/LocalDateTimeUnitTest.java
index 04c1a0b74e..1611a3002f 100644
--- a/core-java-modules/core-java-time-measurements/src/test/java/com/baeldung/time/LocalDateTimeUnitTest.java
+++ b/core-java-modules/core-java-time-measurements/src/test/java/com/baeldung/time/LocalDateTimeUnitTest.java
@@ -21,12 +21,8 @@ public class LocalDateTimeUnitTest {
@Test
public void givenLocalDateTimeMock_whenNow_thenGetFixedLocalDateTime() {
Clock clock = Clock.fixed(Instant.parse("2014-12-22T10:15:30.00Z"), ZoneId.of("UTC"));
- LocalDateTime dateTime = LocalDateTime.now(clock);
- mockStatic(LocalDateTime.class);
- when(LocalDateTime.now()).thenReturn(dateTime);
String dateTimeExpected = "2014-12-22T10:15:30";
-
- LocalDateTime now = LocalDateTime.now();
+ LocalDateTime now = LocalDateTime.now(clock);
assertThat(now).isEqualTo(dateTimeExpected);
}
diff --git a/libraries-security/pom.xml b/libraries-security/pom.xml
index 202b3b8763..3b812f0d2c 100644
--- a/libraries-security/pom.xml
+++ b/libraries-security/pom.xml
@@ -21,7 +21,7 @@
org.springframework.security.oauth
spring-security-oauth2
- ${spring-boot.version}
+ ${spring-security-oauth2.version}
org.springframework
@@ -88,6 +88,7 @@
1.58
0.1.55
2.5.1
+ 2.4.0.RELEASE
diff --git a/parent-boot-2/pom.xml b/parent-boot-2/pom.xml
index dab9f015b3..ace3e538c9 100644
--- a/parent-boot-2/pom.xml
+++ b/parent-boot-2/pom.xml
@@ -82,8 +82,10 @@
3.3.0
1.0.22.RELEASE
- 2.3.3.RELEASE
+ 2.4.0
1.9.1
+
+ 3.4.0
diff --git a/persistence-modules/redis/src/test/java/com/baeldung/spring/redis/configuration/controller/BooksControllerUnitTest.java b/persistence-modules/redis/src/test/java/com/baeldung/spring/redis/configuration/controller/BooksControllerUnitTest.java
index a5c3340065..757b32385b 100644
--- a/persistence-modules/redis/src/test/java/com/baeldung/spring/redis/configuration/controller/BooksControllerUnitTest.java
+++ b/persistence-modules/redis/src/test/java/com/baeldung/spring/redis/configuration/controller/BooksControllerUnitTest.java
@@ -10,15 +10,15 @@ import org.junit.runner.RunWith;
import org.mockito.InjectMocks;
import org.mockito.Mock;
import org.mockito.Spy;
+import org.mockito.junit.MockitoJUnitRunner;
import org.springframework.test.context.junit4.SpringJUnit4ClassRunner;
import com.baeldung.spring.redis.configuration.entity.Book;
import com.baeldung.spring.redis.configuration.repository.BooksRepository;
-@RunWith(SpringJUnit4ClassRunner.class)
+@RunWith(MockitoJUnitRunner.class)
public class BooksControllerUnitTest {
- @Spy
@InjectMocks
private BooksController booksController;
diff --git a/persistence-modules/redis/src/test/java/com/baeldung/spring/redis/configuration/repository/BooksRepositoryUnitTest.java b/persistence-modules/redis/src/test/java/com/baeldung/spring/redis/configuration/repository/BooksRepositoryUnitTest.java
index 1edf9c7e89..f32800e165 100644
--- a/persistence-modules/redis/src/test/java/com/baeldung/spring/redis/configuration/repository/BooksRepositoryUnitTest.java
+++ b/persistence-modules/redis/src/test/java/com/baeldung/spring/redis/configuration/repository/BooksRepositoryUnitTest.java
@@ -11,16 +11,16 @@ import org.junit.runner.RunWith;
import org.mockito.InjectMocks;
import org.mockito.Mock;
import org.mockito.Spy;
+import org.mockito.junit.MockitoJUnitRunner;
import org.springframework.data.redis.core.RedisTemplate;
import org.springframework.data.redis.core.ValueOperations;
import org.springframework.test.context.junit4.SpringJUnit4ClassRunner;
import com.baeldung.spring.redis.configuration.entity.Book;
-@RunWith(SpringJUnit4ClassRunner.class)
+@RunWith(MockitoJUnitRunner.class)
public class BooksRepositoryUnitTest {
- @Spy
@InjectMocks
private BooksRepository booksRepository;
diff --git a/persistence-modules/spring-data-jpa-query-2/src/main/java/com/baeldung/spring/data/jpa/query/datetime/Application.java b/persistence-modules/spring-data-jpa-query-2/src/main/java/com/baeldung/spring/data/jpa/query/QueryApplication.java
similarity index 57%
rename from persistence-modules/spring-data-jpa-query-2/src/main/java/com/baeldung/spring/data/jpa/query/datetime/Application.java
rename to persistence-modules/spring-data-jpa-query-2/src/main/java/com/baeldung/spring/data/jpa/query/QueryApplication.java
index 81e5a2f790..48c29eda23 100644
--- a/persistence-modules/spring-data-jpa-query-2/src/main/java/com/baeldung/spring/data/jpa/query/datetime/Application.java
+++ b/persistence-modules/spring-data-jpa-query-2/src/main/java/com/baeldung/spring/data/jpa/query/QueryApplication.java
@@ -1,13 +1,13 @@
-package com.baeldung.spring.data.jpa.query.datetime;
-
-import org.springframework.boot.SpringApplication;
-import org.springframework.boot.autoconfigure.SpringBootApplication;
-
-@SpringBootApplication
-public class Application {
-
- public static void main(String[] args) {
- SpringApplication.run(Application.class, args);
- }
-
-}
+package com.baeldung.spring.data.jpa.query;
+
+import org.springframework.boot.SpringApplication;
+import org.springframework.boot.autoconfigure.SpringBootApplication;
+
+@SpringBootApplication
+public class QueryApplication {
+
+ public static void main(String[] args) {
+ SpringApplication.run(QueryApplication.class, args);
+ }
+
+}
diff --git a/persistence-modules/spring-data-jpa-query-2/src/main/resources/insert_users.sql b/persistence-modules/spring-data-jpa-query-2/src/main/resources/insert_users.sql
new file mode 100644
index 0000000000..330b2e36b0
--- /dev/null
+++ b/persistence-modules/spring-data-jpa-query-2/src/main/resources/insert_users.sql
@@ -0,0 +1,8 @@
+insert into Users(id, name, creation_date, last_login_date, active, age, email, status)
+values(1, 'John', TO_DATE('01/01/2018', 'DD/MM/YYYY'), TO_DATE('01/01/2020', 'DD/MM/YYYY'), 1, 23, 'john@email.com', 1);
+
+insert into Users(id, name, creation_date, last_login_date, active, age, email, status)
+values(2, 'Bob', TO_DATE('02/02/2019', 'DD/MM/YYYY'), TO_DATE('02/02/2020', 'DD/MM/YYYY'), 1, 56, 'bob@email.com', 1);
+
+insert into Users(id, name, creation_date, last_login_date, active, age, email, status)
+values(3, 'Cindy', TO_DATE('02/02/2019', 'DD/MM/YYYY'), TO_DATE('02/02/2020', 'DD/MM/YYYY'), 1, 18, 'cindy@email.com', 0);
\ No newline at end of file
diff --git a/persistence-modules/spring-data-jpa-query-2/src/test/java/com/baeldung/spring/data/jpa/query/UserRepositoryIntegrationTest.java b/persistence-modules/spring-data-jpa-query-2/src/test/java/com/baeldung/spring/data/jpa/query/UserRepositoryIntegrationTest.java
new file mode 100644
index 0000000000..0ede418acd
--- /dev/null
+++ b/persistence-modules/spring-data-jpa-query-2/src/test/java/com/baeldung/spring/data/jpa/query/UserRepositoryIntegrationTest.java
@@ -0,0 +1,162 @@
+package com.baeldung.spring.data.jpa.query;
+
+import org.junit.Test;
+import org.junit.runner.RunWith;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.boot.test.autoconfigure.orm.jpa.DataJpaTest;
+import org.springframework.data.domain.Page;
+import org.springframework.data.domain.PageRequest;
+import org.springframework.data.domain.Sort;
+import org.springframework.data.jpa.domain.JpaSort;
+import org.springframework.data.mapping.PropertyReferenceException;
+import org.springframework.test.context.junit4.SpringRunner;
+
+import java.util.Arrays;
+import java.util.Collection;
+import java.util.List;
+
+import static org.assertj.core.api.Assertions.assertThat;
+import static org.assertj.core.api.Assertions.assertThatThrownBy;
+
+@RunWith(SpringRunner.class)
+@DataJpaTest(properties = "spring.datasource.data=classpath:insert_users.sql")
+public class UserRepositoryIntegrationTest {
+
+ @Autowired
+ private UserRepository userRepository;
+
+ @Test
+ public void whenFindAllActiveUsersThenAllActiveFound() {
+ Collection allActiveUsers = userRepository.findAllActiveUsers();
+ assertThat(allActiveUsers).hasSize(2);
+ }
+
+ @Test
+ public void whenFindAllActiveUsersNativeThenAllActiveFound() {
+ Collection allActiveUsers = userRepository.findAllActiveUsersNative();
+ assertThat(allActiveUsers).hasSize(2);
+ }
+
+ @Test
+ public void whenFindAllSortedByNameThenAllSorted() {
+ List allUsersSortedByName = userRepository.findAll(Sort.by(Sort.Direction.ASC, "name"));
+ assertThat(allUsersSortedByName)
+ .extracting("name")
+ .containsSequence("Bob", "Cindy", "John");
+ }
+
+ @Test
+ public void whenFindAllSortedByNameLengthThenException() {
+ assertThatThrownBy(() -> userRepository.findAll(Sort.by("LENGTH(name)")))
+ .isInstanceOf(PropertyReferenceException.class);
+ }
+
+ @Test
+ public void whenFindAllUsersSortedByNameThenAllSorted() {
+ List allUsersSortedByName = userRepository.findAllUsers(Sort.by(Sort.Direction.ASC, "name"));
+ assertThat(allUsersSortedByName)
+ .extracting("name")
+ .containsSequence("Bob", "Cindy", "John");
+ }
+
+ @Test
+ public void whenFindAllUsersSortedByNameLengthThenAllSorted() {
+ List allUsersSortedByName = userRepository.findAllUsers(JpaSort.unsafe("LENGTH(name)"));
+ assertThat(allUsersSortedByName)
+ .extracting("name")
+ .containsSequence("Bob", "John", "Cindy");
+ }
+
+ @Test
+ public void whenFindAllUsersWithPaginationThenPaginated() {
+ Page page = userRepository.findAllUsersWithPagination(PageRequest.of(0, 1));
+ assertThat(page.stream().map(User::getId))
+ .hasSize(1)
+ .containsOnly(1);
+ }
+
+ @Test
+ public void whenFindAllUsersWithPaginationNativeThenPaginated() {
+ Page page = userRepository.findAllUsersWithPaginationNative(PageRequest.of(1, 1));
+ assertThat(page.stream().map(User::getId))
+ .hasSize(1)
+ .containsOnly(2);
+ }
+
+ @Test
+ public void whenFindUserByStatusThenFound() {
+ User user = userRepository.findUserByStatus(0);
+ assertThat(user.getStatus()).isZero();
+ }
+
+ @Test
+ public void whenFindUserByStatusAndNameThenFound() {
+ User user = userRepository.findUserByStatusAndName(1, "John");
+ assertThat(user.getStatus()).isOne();
+ assertThat(user.getName()).isEqualTo("John");
+ }
+
+ @Test
+ public void whenFindUserByStatusNativeThenFound() {
+ User user = userRepository.findUserByStatusNative(0);
+ assertThat(user.getStatus()).isZero();
+ }
+
+ @Test
+ public void whenFindUserByStatusAndNameNamedParamsThenFound() {
+ User user = userRepository.findUserByStatusAndNameNamedParams(1, "John");
+ assertThat(user.getStatus()).isOne();
+ assertThat(user.getName()).isEqualTo("John");
+ }
+
+ @Test
+ public void whenFindUserByUserStatusAndUserNameThenFound() {
+ User user = userRepository.findUserByUserStatusAndUserName(1, "John");
+ assertThat(user.getStatus()).isOne();
+ assertThat(user.getName()).isEqualTo("John");
+ }
+
+ @Test
+ public void whenFindUserByStatusAndNameNamedParamsNativeThenFound() {
+ User user = userRepository.findUserByStatusAndNameNamedParamsNative(1, "Bob");
+ assertThat(user.getStatus()).isOne();
+ assertThat(user.getName()).isEqualTo("Bob");
+ }
+
+ @Test
+ public void whenFindUserByNameListThenAllFound() {
+ List users = userRepository.findUserByNameList(Arrays.asList("Bob", "Cindy"));
+ assertThat(users)
+ .extracting("name")
+ .containsOnly("Bob", "Cindy");
+ }
+
+ @Test
+ public void whenUpdateUserSetStatusForNameThenUpdated() {
+ int updated = userRepository.updateUserSetStatusForName(0, "John");
+ assertThat(updated).isOne();
+
+ User john = userRepository.findUserByStatusAndName(0, "John");
+ assertThat(john).isNotNull();
+ }
+
+ @Test
+ public void whenUpdateUserSetStatusForNameNativeThenUpdated() {
+ int updated = userRepository.updateUserSetStatusForNameNative(0, "John");
+ assertThat(updated).isOne();
+
+ User john = userRepository.findUserByStatusAndName(0, "John");
+ assertThat(john).isNotNull();
+ }
+
+ @Test
+ public void whenInsertUserThenInserted() {
+ User beforeInsert = userRepository.findUserByStatusAndName(0, "Mandy");
+ assertThat(beforeInsert).isNull();
+
+ userRepository.insertUser("Mandy", 20, "mandy@email.com", 0, true);
+
+ User afterInsert = userRepository.findUserByStatusAndName(0, "Mandy");
+ assertThat(afterInsert).isNotNull();
+ }
+}
diff --git a/pom.xml b/pom.xml
index 3e360b58cc..67fa58293b 100644
--- a/pom.xml
+++ b/pom.xml
@@ -1,4 +1,5 @@
+
@@ -663,7 +664,6 @@
spring-mvc-java-2
spring-mvc-velocity
- spring-mvc-webflow
spring-mvc-xml
spring-protobuf
@@ -671,13 +671,11 @@
spring-reactor
spring-remoting
- spring-rest-angular
spring-rest-http-2
spring-rest-query-language
spring-rest-shell
spring-rest-simple
spring-resttemplate
- spring-resttemplate-2
spring-rest-testing
spring-roo
@@ -1132,7 +1130,6 @@
spring-mvc-java-2
spring-mvc-velocity
- spring-mvc-webflow
spring-mvc-xml
spring-protobuf
@@ -1140,12 +1137,10 @@
spring-reactor
spring-remoting
- spring-rest-angular
spring-rest-query-language
spring-rest-shell
spring-rest-simple
spring-resttemplate
- spring-resttemplate-2
spring-rest-testing
spring-roo
@@ -1278,7 +1273,6 @@
org.apache.maven.plugins
maven-surefire-plugin
- ${maven-surefire-plugin.version}
3
true
@@ -1303,23 +1297,22 @@
core-java-modules/core-java-9
core-java-modules/core-java-9-improvements
-
-
+ core-java-modules/core-java-9-jigsaw
+
core-java-modules/core-java-9-streams
core-java-modules/core-java-10
-
-
-
-
+ core-java-modules/core-java-11
+
+
+
core-java-modules/core-java-collections-set
-
-
-
+ core-java-modules/core-java-date-operations-1
+ core-java-modules/core-java-datetime-conversion
+ core-java-modules/core-java-datetime-string
core-java-modules/core-java-jpms
-
-
+ core-java-modules/core-java-os
+ core-java-modules/core-java-time-measurements
core-java-modules/multimodulemavenproject
-
@@ -1348,23 +1341,22 @@
core-java-modules/core-java-9
core-java-modules/core-java-9-improvements
-
-
+ core-java-modules/core-java-9-jigsaw
+
core-java-modules/core-java-9-streams
core-java-modules/core-java-10
-
-
-
-
+ core-java-modules/core-java-11
+
+
+
core-java-modules/core-java-collections-set
-
-
-
+ core-java-modules/core-java-date-operations-1
+ core-java-modules/core-java-datetime-conversion
+ core-java-modules/core-java-datetime-string
core-java-modules/core-java-jpms
-
-
+ core-java-modules/core-java-os
+ core-java-modules/core-java-time-measurements
core-java-modules/multimodulemavenproject
-
diff --git a/spring-5-reactive-client/pom.xml b/spring-5-reactive-client/pom.xml
index 7ae7ba6edd..5b773cc63f 100644
--- a/spring-5-reactive-client/pom.xml
+++ b/spring-5-reactive-client/pom.xml
@@ -176,6 +176,7 @@
4.1
1.0.3
4.0.1
+ 2.3.3.RELEASE
diff --git a/spring-5-reactive/src/test/java/com/baeldung/functional/FunctionalWebApplicationIntegrationTest.java b/spring-5-reactive/src/test/java/com/baeldung/functional/FunctionalWebApplicationIntegrationTest.java
index 1256d5f129..38496d3500 100644
--- a/spring-5-reactive/src/test/java/com/baeldung/functional/FunctionalWebApplicationIntegrationTest.java
+++ b/spring-5-reactive/src/test/java/com/baeldung/functional/FunctionalWebApplicationIntegrationTest.java
@@ -5,6 +5,7 @@ import static org.springframework.web.reactive.function.BodyInserters.fromResour
import org.junit.AfterClass;
import org.junit.BeforeClass;
+import org.junit.Ignore;
import org.junit.Test;
import org.springframework.boot.web.server.WebServer;
import org.springframework.core.io.ClassPathResource;
@@ -102,6 +103,7 @@ public class FunctionalWebApplicationIntegrationTest {
.isEqualTo(String.valueOf(resource.contentLength()));
}
+ @Ignore("We get 404 after Spring Boot 2.4 upgrade. We need to solve it in a new task.")
@Test
public void givenActors_whenAddActor_thenAdded() throws Exception {
client.get()
diff --git a/spring-5-webflux/pom.xml b/spring-5-webflux/pom.xml
index 292e4d7ad9..48b5b823fb 100644
--- a/spring-5-webflux/pom.xml
+++ b/spring-5-webflux/pom.xml
@@ -64,4 +64,8 @@
+
+ 2.3.3.RELEASE
+
+
diff --git a/spring-aop/src/main/java/com/baeldung/method/info/Account.java b/spring-aop/src/main/java/com/baeldung/method/info/Account.java
new file mode 100644
index 0000000000..646e403f1e
--- /dev/null
+++ b/spring-aop/src/main/java/com/baeldung/method/info/Account.java
@@ -0,0 +1,28 @@
+package com.baeldung.method.info;
+
+public class Account {
+
+ private String accountNumber;
+ private double balance;
+
+ public String getAccountNumber() {
+ return accountNumber;
+ }
+
+ public void setAccountNumber(String accountNumber) {
+ this.accountNumber = accountNumber;
+ }
+
+ public double getBalance() {
+ return balance;
+ }
+
+ public void setBalance(double balance) {
+ this.balance = balance;
+ }
+
+ @Override
+ public String toString() {
+ return "Account{" + "accountNumber='" + accountNumber + '\'' + ", balance=" + balance + '}';
+ }
+}
diff --git a/spring-aop/src/main/java/com/baeldung/method/info/AccountOperation.java b/spring-aop/src/main/java/com/baeldung/method/info/AccountOperation.java
new file mode 100644
index 0000000000..74bc60a6db
--- /dev/null
+++ b/spring-aop/src/main/java/com/baeldung/method/info/AccountOperation.java
@@ -0,0 +1,12 @@
+package com.baeldung.method.info;
+
+import java.lang.annotation.ElementType;
+import java.lang.annotation.Retention;
+import java.lang.annotation.RetentionPolicy;
+import java.lang.annotation.Target;
+
+@Target(ElementType.METHOD)
+@Retention(RetentionPolicy.RUNTIME)
+public @interface AccountOperation {
+ String operation();
+}
diff --git a/spring-aop/src/main/java/com/baeldung/method/info/BankAccountAspect.java b/spring-aop/src/main/java/com/baeldung/method/info/BankAccountAspect.java
new file mode 100644
index 0000000000..f743758cd7
--- /dev/null
+++ b/spring-aop/src/main/java/com/baeldung/method/info/BankAccountAspect.java
@@ -0,0 +1,55 @@
+package com.baeldung.method.info;
+
+import org.aspectj.lang.JoinPoint;
+import org.aspectj.lang.annotation.Aspect;
+import org.aspectj.lang.annotation.Before;
+import org.aspectj.lang.reflect.MethodSignature;
+import org.springframework.stereotype.Component;
+
+import java.lang.reflect.Method;
+import java.lang.reflect.Modifier;
+import java.util.Arrays;
+
+@Aspect
+@Component
+public class BankAccountAspect {
+
+ @Before(value = "@annotation(com.baeldung.method.info.AccountOperation)")
+ public void getAccountOperationInfo(JoinPoint joinPoint) {
+
+ // Method Information
+ MethodSignature signature = (MethodSignature) joinPoint.getSignature();
+
+ System.out.println("full method description: " + signature.getMethod());
+
+ System.out.println("method name: " + signature.getMethod().getName());
+
+ System.out.println("declaring type: " + signature.getDeclaringType());
+
+ // Method args
+ System.out.println("Method args names:");
+ Arrays.stream(signature.getParameterNames())
+ .forEach(s -> System.out.println("arg name: " + s));
+
+ System.out.println("Method args types:");
+ Arrays.stream(signature.getParameterTypes())
+ .forEach(s -> System.out.println("arg type: " + s));
+
+ System.out.println("Method args values:");
+ Arrays.stream(joinPoint.getArgs())
+ .forEach(o -> System.out.println("arg value: " + o.toString()));
+
+ // Additional Information
+ System.out.println("returning type: " + signature.getReturnType());
+ System.out.println("method modifier: " + Modifier.toString(signature.getModifiers()));
+ Arrays.stream(signature.getExceptionTypes())
+ .forEach(aClass -> System.out.println("exception type: " + aClass));
+
+ // Method annotation
+ Method method = signature.getMethod();
+ AccountOperation accountOperation = method.getAnnotation(AccountOperation.class);
+ System.out.println("Account operation annotation: " + accountOperation);
+ System.out.println("Account operation value: " + accountOperation.operation());
+
+ }
+}
diff --git a/spring-aop/src/main/java/com/baeldung/method/info/BankAccountService.java b/spring-aop/src/main/java/com/baeldung/method/info/BankAccountService.java
new file mode 100644
index 0000000000..6ebab37d9e
--- /dev/null
+++ b/spring-aop/src/main/java/com/baeldung/method/info/BankAccountService.java
@@ -0,0 +1,29 @@
+package com.baeldung.method.info;
+
+import org.apache.commons.lang3.RandomUtils;
+import org.springframework.stereotype.Component;
+
+@Component
+public class BankAccountService {
+
+ @AccountOperation(operation = "deposit")
+ public void deposit(Account account, Double amount) {
+ account.setBalance(account.getBalance() + amount);
+ }
+
+ @AccountOperation(operation = "withdraw")
+ public void withdraw(Account account, Double amount) throws WithdrawLimitException {
+
+ if (amount > 500.0) {
+ throw new WithdrawLimitException("Withdraw limit exceeded.");
+ }
+
+ account.setBalance(account.getBalance() - amount);
+
+ }
+
+ public double getBalance() {
+ return RandomUtils.nextDouble();
+ }
+
+}
diff --git a/spring-aop/src/main/java/com/baeldung/method/info/WithdrawLimitException.java b/spring-aop/src/main/java/com/baeldung/method/info/WithdrawLimitException.java
new file mode 100644
index 0000000000..b29a27c94f
--- /dev/null
+++ b/spring-aop/src/main/java/com/baeldung/method/info/WithdrawLimitException.java
@@ -0,0 +1,7 @@
+package com.baeldung.method.info;
+
+public class WithdrawLimitException extends RuntimeException {
+ public WithdrawLimitException(String message) {
+ super(message);
+ }
+}
diff --git a/spring-aop/src/test/java/com/baeldung/method/info/BankAccountServiceIntegrationTest.java b/spring-aop/src/test/java/com/baeldung/method/info/BankAccountServiceIntegrationTest.java
new file mode 100644
index 0000000000..b1ba97654e
--- /dev/null
+++ b/spring-aop/src/test/java/com/baeldung/method/info/BankAccountServiceIntegrationTest.java
@@ -0,0 +1,49 @@
+package com.baeldung.method.info;
+
+import org.assertj.core.api.Assertions;
+import org.junit.jupiter.api.BeforeEach;
+import org.junit.jupiter.api.Test;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.boot.test.context.SpringBootTest;
+
+import static org.junit.jupiter.api.Assertions.assertTrue;
+
+@SpringBootTest
+class BankAccountServiceIntegrationTest {
+
+ private Account account;
+
+ @BeforeEach
+ public void setup() {
+ account = new Account();
+ account.setAccountNumber("12345");
+ account.setBalance(2000.0);
+ }
+
+ @Autowired
+ BankAccountService bankAccountService;
+
+ @Test
+ void withdraw() {
+ bankAccountService.withdraw(account, 500.0);
+ assertTrue(account.getBalance() == 1500.0);
+ }
+
+ @Test
+ void withdrawWhenLimitReached() {
+ Assertions.assertThatExceptionOfType(WithdrawLimitException.class)
+ .isThrownBy(() -> bankAccountService.withdraw(account, 600.0));
+ assertTrue(account.getBalance() == 2000.0);
+ }
+
+ @Test
+ void deposit() {
+ bankAccountService.deposit(account, 500.0);
+ assertTrue(account.getBalance() == 2500.0);
+ }
+
+ @Test
+ void getBalance() {
+ bankAccountService.getBalance();
+ }
+}
diff --git a/spring-batch/pom.xml b/spring-batch/pom.xml
index 9edf8ad3be..75ec0d4877 100644
--- a/spring-batch/pom.xml
+++ b/spring-batch/pom.xml
@@ -95,8 +95,8 @@
- 5.2.0.RELEASE
- 4.2.0.RELEASE
+ 5.3.0
+ 4.3.0
3.15.1
4.1
2.3.1
diff --git a/spring-batch/repository.sqlite b/spring-batch/repository.sqlite
index 2b549352ec..a2b87ffa00 100644
Binary files a/spring-batch/repository.sqlite and b/spring-batch/repository.sqlite differ
diff --git a/spring-batch/src/main/java/com/baeldung/batchscheduler/SpringBatchScheduler.java b/spring-batch/src/main/java/com/baeldung/batchscheduler/SpringBatchScheduler.java
index 4de3e0a4b6..cff4e96c89 100644
--- a/spring-batch/src/main/java/com/baeldung/batchscheduler/SpringBatchScheduler.java
+++ b/spring-batch/src/main/java/com/baeldung/batchscheduler/SpringBatchScheduler.java
@@ -1,12 +1,5 @@
package com.baeldung.batchscheduler;
-import java.util.Date;
-import java.util.IdentityHashMap;
-import java.util.List;
-import java.util.Map;
-import java.util.concurrent.ScheduledFuture;
-import java.util.concurrent.atomic.AtomicBoolean;
-import java.util.concurrent.atomic.AtomicInteger;
import com.baeldung.batchscheduler.model.Book;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
@@ -20,7 +13,7 @@ import org.springframework.batch.core.configuration.annotation.StepBuilderFactor
import org.springframework.batch.core.launch.JobLauncher;
import org.springframework.batch.core.launch.support.SimpleJobLauncher;
import org.springframework.batch.core.repository.JobRepository;
-import org.springframework.batch.core.repository.support.MapJobRepositoryFactoryBean;
+import org.springframework.batch.core.repository.support.JobRepositoryFactoryBean;
import org.springframework.batch.item.ItemWriter;
import org.springframework.batch.item.file.FlatFileItemReader;
import org.springframework.batch.item.file.builder.FlatFileItemReaderBuilder;
@@ -30,12 +23,22 @@ import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import org.springframework.core.io.ClassPathResource;
+import org.springframework.jdbc.datasource.DriverManagerDataSource;
import org.springframework.scheduling.TaskScheduler;
import org.springframework.scheduling.annotation.EnableScheduling;
import org.springframework.scheduling.annotation.Scheduled;
import org.springframework.scheduling.concurrent.ThreadPoolTaskScheduler;
import org.springframework.scheduling.support.ScheduledMethodRunnable;
+import javax.sql.DataSource;
+import java.util.Date;
+import java.util.IdentityHashMap;
+import java.util.List;
+import java.util.Map;
+import java.util.concurrent.ScheduledFuture;
+import java.util.concurrent.atomic.AtomicBoolean;
+import java.util.concurrent.atomic.AtomicInteger;
+
@Configuration
@EnableBatchProcessing
@EnableScheduling
@@ -122,9 +125,18 @@ public class SpringBatchScheduler {
@Bean
public JobRepository jobRepository() throws Exception {
- MapJobRepositoryFactoryBean factory = new MapJobRepositoryFactoryBean();
+ JobRepositoryFactoryBean factory = new JobRepositoryFactoryBean();
+ factory.setDataSource(dataSource());
factory.setTransactionManager(new ResourcelessTransactionManager());
- return (JobRepository) factory.getObject();
+ return factory.getObject();
+ }
+
+ @Bean
+ public DataSource dataSource() {
+ DriverManagerDataSource dataSource = new DriverManagerDataSource();
+ dataSource.setDriverClassName("org.sqlite.JDBC");
+ dataSource.setUrl("jdbc:sqlite:repository.sqlite");
+ return dataSource;
}
@Bean
diff --git a/spring-batch/src/main/java/com/baeldung/taskletsvschunks/config/ChunksConfig.java b/spring-batch/src/main/java/com/baeldung/taskletsvschunks/config/ChunksConfig.java
index 57288fb312..c8b05848f9 100644
--- a/spring-batch/src/main/java/com/baeldung/taskletsvschunks/config/ChunksConfig.java
+++ b/spring-batch/src/main/java/com/baeldung/taskletsvschunks/config/ChunksConfig.java
@@ -12,7 +12,7 @@ import org.springframework.batch.core.configuration.annotation.StepBuilderFactor
import org.springframework.batch.core.launch.JobLauncher;
import org.springframework.batch.core.launch.support.SimpleJobLauncher;
import org.springframework.batch.core.repository.JobRepository;
-import org.springframework.batch.core.repository.support.MapJobRepositoryFactoryBean;
+import org.springframework.batch.core.repository.support.JobRepositoryFactoryBean;
import org.springframework.batch.item.ItemProcessor;
import org.springframework.batch.item.ItemReader;
import org.springframework.batch.item.ItemWriter;
@@ -21,8 +21,11 @@ import org.springframework.batch.test.JobLauncherTestUtils;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
+import org.springframework.jdbc.datasource.DriverManagerDataSource;
import org.springframework.transaction.PlatformTransactionManager;
+import javax.sql.DataSource;
+
@Configuration
@EnableBatchProcessing
public class ChunksConfig {
@@ -38,9 +41,18 @@ public class ChunksConfig {
@Bean
public JobRepository jobRepository() throws Exception {
- MapJobRepositoryFactoryBean factory = new MapJobRepositoryFactoryBean();
+ JobRepositoryFactoryBean factory = new JobRepositoryFactoryBean();
+ factory.setDataSource(dataSource());
factory.setTransactionManager(transactionManager());
- return (JobRepository) factory.getObject();
+ return factory.getObject();
+ }
+
+ @Bean
+ public DataSource dataSource() {
+ DriverManagerDataSource dataSource = new DriverManagerDataSource();
+ dataSource.setDriverClassName("org.sqlite.JDBC");
+ dataSource.setUrl("jdbc:sqlite:repository.sqlite");
+ return dataSource;
}
@Bean
diff --git a/spring-batch/src/main/java/com/baeldung/taskletsvschunks/config/TaskletsConfig.java b/spring-batch/src/main/java/com/baeldung/taskletsvschunks/config/TaskletsConfig.java
index e7157ac520..5f2f49928c 100644
--- a/spring-batch/src/main/java/com/baeldung/taskletsvschunks/config/TaskletsConfig.java
+++ b/spring-batch/src/main/java/com/baeldung/taskletsvschunks/config/TaskletsConfig.java
@@ -11,14 +11,17 @@ import org.springframework.batch.core.configuration.annotation.StepBuilderFactor
import org.springframework.batch.core.launch.JobLauncher;
import org.springframework.batch.core.launch.support.SimpleJobLauncher;
import org.springframework.batch.core.repository.JobRepository;
-import org.springframework.batch.core.repository.support.MapJobRepositoryFactoryBean;
+import org.springframework.batch.core.repository.support.JobRepositoryFactoryBean;
import org.springframework.batch.support.transaction.ResourcelessTransactionManager;
import org.springframework.batch.test.JobLauncherTestUtils;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
+import org.springframework.jdbc.datasource.DriverManagerDataSource;
import org.springframework.transaction.PlatformTransactionManager;
+import javax.sql.DataSource;
+
@Configuration
@EnableBatchProcessing
public class TaskletsConfig {
@@ -34,9 +37,18 @@ public class TaskletsConfig {
@Bean
public JobRepository jobRepository() throws Exception {
- MapJobRepositoryFactoryBean factory = new MapJobRepositoryFactoryBean();
+ JobRepositoryFactoryBean factory = new JobRepositoryFactoryBean();
+ factory.setDataSource(dataSource());
factory.setTransactionManager(transactionManager());
- return (JobRepository) factory.getObject();
+ return factory.getObject();
+ }
+
+ @Bean
+ public DataSource dataSource() {
+ DriverManagerDataSource dataSource = new DriverManagerDataSource();
+ dataSource.setDriverClassName("org.sqlite.JDBC");
+ dataSource.setUrl("jdbc:sqlite:repository.sqlite");
+ return dataSource;
}
@Bean
diff --git a/spring-boot-modules/spring-boot-admin/spring-boot-admin-server/pom.xml b/spring-boot-modules/spring-boot-admin/spring-boot-admin-server/pom.xml
index 4c1dcdef6b..558aed8b26 100644
--- a/spring-boot-modules/spring-boot-admin/spring-boot-admin-server/pom.xml
+++ b/spring-boot-modules/spring-boot-admin/spring-boot-admin-server/pom.xml
@@ -86,5 +86,6 @@
2.2.2
1.5.7
2.0.4.RELEASE
+ 2.3.3.RELEASE
diff --git a/spring-boot-modules/spring-boot-artifacts/pom.xml b/spring-boot-modules/spring-boot-artifacts/pom.xml
index 2704b71bd6..467f931559 100644
--- a/spring-boot-modules/spring-boot-artifacts/pom.xml
+++ b/spring-boot-modules/spring-boot-artifacts/pom.xml
@@ -86,12 +86,6 @@
${jquery.version}
-
- org.springframework.cloud
- spring-cloud-context
- ${springcloud.version}
-
-
org.apache.httpcomponents
httpclient
@@ -216,7 +210,6 @@
2.2.4
18.0
3.1.7
- 2.0.2.RELEASE
4.5.8
diff --git a/spring-boot-modules/spring-boot-data/pom.xml b/spring-boot-modules/spring-boot-data/pom.xml
index fe64b07379..06f09c70fe 100644
--- a/spring-boot-modules/spring-boot-data/pom.xml
+++ b/spring-boot-modules/spring-boot-data/pom.xml
@@ -168,7 +168,7 @@
- 5.6.3
+ 5.14.0
2.2.4
1.8
1.8
diff --git a/spring-boot-modules/spring-boot-deployment/README.md b/spring-boot-modules/spring-boot-deployment/README.md
index b6aa468098..85f288d33b 100644
--- a/spring-boot-modules/spring-boot-deployment/README.md
+++ b/spring-boot-modules/spring-boot-deployment/README.md
@@ -5,6 +5,5 @@ This module contains articles about deployment of a Spring Boot Application
### Relevant Articles:
- [Deploy a Spring Boot WAR into a Tomcat Server](https://www.baeldung.com/spring-boot-war-tomcat-deploy)
- [Spring Boot Console Application](https://www.baeldung.com/spring-boot-console-app)
- - [How to Configure Spring Boot Tomcat](https://www.baeldung.com/spring-boot-configure-tomcat)
- [Comparing Embedded Servlet Containers in Spring Boot](https://www.baeldung.com/spring-boot-servlet-containers)
- [Graceful Shutdown of a Spring Boot Application](https://www.baeldung.com/spring-boot-graceful-shutdown)
diff --git a/spring-boot-modules/spring-boot-deployment/pom.xml b/spring-boot-modules/spring-boot-deployment/pom.xml
index 6b5e75bd62..94a4018103 100644
--- a/spring-boot-modules/spring-boot-deployment/pom.xml
+++ b/spring-boot-modules/spring-boot-deployment/pom.xml
@@ -197,6 +197,7 @@
3.1.7
2.0.2.RELEASE
4.5.8
+ 2.3.3.RELEASE
diff --git a/spring-boot-modules/spring-boot-environment/pom.xml b/spring-boot-modules/spring-boot-environment/pom.xml
index 694e17fd72..d34bbd18c0 100644
--- a/spring-boot-modules/spring-boot-environment/pom.xml
+++ b/spring-boot-modules/spring-boot-environment/pom.xml
@@ -144,6 +144,7 @@
3.1.7
2.0.2.RELEASE
4.5.8
+ 2.3.3.RELEASE
diff --git a/spring-boot-modules/spring-boot-runtime/README.md b/spring-boot-modules/spring-boot-runtime/README.md
index 62727ecc76..271093421c 100644
--- a/spring-boot-modules/spring-boot-runtime/README.md
+++ b/spring-boot-modules/spring-boot-runtime/README.md
@@ -10,4 +10,5 @@ This module contains articles about administering a Spring Boot runtime
- [Spring Boot Embedded Tomcat Logs](https://www.baeldung.com/spring-boot-embedded-tomcat-logs)
- [Project Configuration with Spring](https://www.baeldung.com/project-configuration-with-spring)
- [CORS with Spring](https://www.baeldung.com/spring-cors)
- - [Spring – Log Incoming Requests](https://www.baeldung.com/spring-http-logging)
\ No newline at end of file
+ - [Spring – Log Incoming Requests](https://www.baeldung.com/spring-http-logging)
+ - [How to Configure Spring Boot Tomcat](https://www.baeldung.com/spring-boot-configure-tomcat)
diff --git a/spring-boot-modules/spring-boot-springdoc/pom.xml b/spring-boot-modules/spring-boot-springdoc/pom.xml
index 46c9a6a1b4..259383a1d2 100644
--- a/spring-boot-modules/spring-boot-springdoc/pom.xml
+++ b/spring-boot-modules/spring-boot-springdoc/pom.xml
@@ -81,7 +81,7 @@
org.jetbrains.kotlin
- kotlin-stdlib-jre8
+ kotlin-stdlib-jdk8
${kotlin.version}
@@ -173,7 +173,7 @@
5.2.10.Final
1.5.2
1.5.6
- 1.2.71
+ 1.4.0
${project.build.directory}/generated-snippets
@@ -185,7 +185,7 @@
org.springframework.boot
spring-boot-maven-plugin
- 2.2.2.RELEASE
+ ${spring-boot.version}
pre-integration-test
diff --git a/spring-cloud-bus/pom.xml b/spring-cloud-bus/pom.xml
index ec56e23ac7..15eed8dcf0 100644
--- a/spring-cloud-bus/pom.xml
+++ b/spring-cloud-bus/pom.xml
@@ -35,6 +35,7 @@
Hoxton.SR4
+ 2.3.3.RELEASE
diff --git a/spring-cloud/spring-cloud-config/pom.xml b/spring-cloud/spring-cloud-config/pom.xml
index 7fb0c1fd68..5db18a7245 100644
--- a/spring-cloud/spring-cloud-config/pom.xml
+++ b/spring-cloud/spring-cloud-config/pom.xml
@@ -34,7 +34,7 @@
Hoxton.SR4
-
+ 2.3.3.RELEASE
diff --git a/spring-cloud/spring-cloud-eureka/README.md b/spring-cloud/spring-cloud-eureka/README.md
index badf4c8d50..5fc96256f4 100644
--- a/spring-cloud/spring-cloud-eureka/README.md
+++ b/spring-cloud/spring-cloud-eureka/README.md
@@ -1,2 +1,3 @@
### Relevant Articles:
- [Introduction to Spring Cloud Netflix – Eureka](http://www.baeldung.com/spring-cloud-netflix-eureka)
+- [Integration Tests With Spring Cloud Netflix and Feign](https://www.baeldung.com/spring-cloud-feign-integration-tests)
diff --git a/spring-cloud/spring-cloud-eureka/spring-cloud-eureka-feign-client-integration-test/pom.xml b/spring-cloud/spring-cloud-eureka/spring-cloud-eureka-feign-client-integration-test/pom.xml
index 3348dbb24f..95b1275e2c 100644
--- a/spring-cloud/spring-cloud-eureka/spring-cloud-eureka-feign-client-integration-test/pom.xml
+++ b/spring-cloud/spring-cloud-eureka/spring-cloud-eureka-feign-client-integration-test/pom.xml
@@ -88,7 +88,7 @@
maven-surefire-plugin
1
- true
+ false
diff --git a/spring-cloud/spring-cloud-eureka/spring-cloud-eureka-feign-client-integration-test/src/test/java/com/baeldung/spring/cloud/client/ServiceDiscoveryBooksClientIntegrationTest.java b/spring-cloud/spring-cloud-eureka/spring-cloud-eureka-feign-client-integration-test/src/test/java/com/baeldung/spring/cloud/client/ServiceDiscoveryBooksClientLiveTest.java
similarity index 97%
rename from spring-cloud/spring-cloud-eureka/spring-cloud-eureka-feign-client-integration-test/src/test/java/com/baeldung/spring/cloud/client/ServiceDiscoveryBooksClientIntegrationTest.java
rename to spring-cloud/spring-cloud-eureka/spring-cloud-eureka-feign-client-integration-test/src/test/java/com/baeldung/spring/cloud/client/ServiceDiscoveryBooksClientLiveTest.java
index 027579d20d..3ac067b8f8 100644
--- a/spring-cloud/spring-cloud-eureka/spring-cloud-eureka-feign-client-integration-test/src/test/java/com/baeldung/spring/cloud/client/ServiceDiscoveryBooksClientIntegrationTest.java
+++ b/spring-cloud/spring-cloud-eureka/spring-cloud-eureka-feign-client-integration-test/src/test/java/com/baeldung/spring/cloud/client/ServiceDiscoveryBooksClientLiveTest.java
@@ -25,7 +25,7 @@ import static org.junit.jupiter.api.Assertions.assertEquals;
@ExtendWith(SpringExtension.class)
@SpringBootTest(classes = Application.class, webEnvironment = SpringBootTest.WebEnvironment.RANDOM_PORT)
@ContextConfiguration(classes = { MockBookServiceConfig.class }, initializers = { EurekaContainerConfig.Initializer.class })
-class ServiceDiscoveryBooksClientIntegrationTest {
+class ServiceDiscoveryBooksClientLiveTest {
@Autowired
private BooksClient booksClient;
diff --git a/spring-cloud/spring-cloud-kubernetes/pom.xml b/spring-cloud/spring-cloud-kubernetes/pom.xml
index a3669d2d55..44c429d8f5 100644
--- a/spring-cloud/spring-cloud-kubernetes/pom.xml
+++ b/spring-cloud/spring-cloud-kubernetes/pom.xml
@@ -25,5 +25,6 @@
+ 2.3.3.RELEASE
\ No newline at end of file
diff --git a/spring-cloud/spring-cloud-ribbon-client/pom.xml b/spring-cloud/spring-cloud-ribbon-client/pom.xml
index fa9cee29a2..7bc7b51d51 100644
--- a/spring-cloud/spring-cloud-ribbon-client/pom.xml
+++ b/spring-cloud/spring-cloud-ribbon-client/pom.xml
@@ -46,6 +46,7 @@
Hoxton.SR4
+ 2.3.3.RELEASE
\ No newline at end of file
diff --git a/spring-cloud/spring-cloud-security/pom.xml b/spring-cloud/spring-cloud-security/pom.xml
index 3a007c8df1..f861b892c0 100644
--- a/spring-cloud/spring-cloud-security/pom.xml
+++ b/spring-cloud/spring-cloud-security/pom.xml
@@ -21,5 +21,6 @@
+ 2.3.3.RELEASE
diff --git a/spring-cloud/spring-cloud-zookeeper/pom.xml b/spring-cloud/spring-cloud-zookeeper/pom.xml
index 244ccbd957..e3241da02c 100644
--- a/spring-cloud/spring-cloud-zookeeper/pom.xml
+++ b/spring-cloud/spring-cloud-zookeeper/pom.xml
@@ -20,6 +20,7 @@
5.2.7.RELEASE
1.0.3.RELEASE
+ 2.3.3.RELEASE
\ No newline at end of file
diff --git a/spring-cloud/spring-cloud-zuul/pom.xml b/spring-cloud/spring-cloud-zuul/pom.xml
index b8db1f2fc7..6035ba7e59 100644
--- a/spring-cloud/spring-cloud-zuul/pom.xml
+++ b/spring-cloud/spring-cloud-zuul/pom.xml
@@ -80,7 +80,7 @@
Hoxton.SR4
-
+ 2.3.3.RELEASE
diff --git a/spring-core-2/pom.xml b/spring-core-2/pom.xml
index edbb351bd0..3f8e84e13d 100644
--- a/spring-core-2/pom.xml
+++ b/spring-core-2/pom.xml
@@ -198,7 +198,7 @@
com.baeldung.sample.App
- 5.2.2.RELEASE
+ 5.3.0
1.3.2
5.2.5.Final
diff --git a/spring-data-rest/pom.xml b/spring-data-rest/pom.xml
index 63a42857f4..dd96182264 100644
--- a/spring-data-rest/pom.xml
+++ b/spring-data-rest/pom.xml
@@ -99,6 +99,7 @@
com.baeldung.books.SpringDataRestApplication
1.0
+ 2.3.3.RELEASE
\ No newline at end of file
diff --git a/spring-security-modules/spring-security-oauth2-sso/pom.xml b/spring-security-modules/spring-security-oauth2-sso/pom.xml
index ed4b1d64ba..a272ba5b50 100644
--- a/spring-security-modules/spring-security-oauth2-sso/pom.xml
+++ b/spring-security-modules/spring-security-oauth2-sso/pom.xml
@@ -24,8 +24,8 @@
3.1.0
- 2.3.3.RELEASE
- 2.1.1.RELEASE
+ 2.4.0.RELEASE
+ 2.4.0
1.0.1.RELEASE
2.0.0-M2
diff --git a/spring-security-modules/spring-security-oauth2-sso/spring-security-sso-ui-2/src/main/resources/application.yml b/spring-security-modules/spring-security-oauth2-sso/spring-security-sso-ui-2/src/main/resources/application.yml
index 97c8de7839..8cee9f24d5 100644
--- a/spring-security-modules/spring-security-oauth2-sso/spring-security-sso-ui-2/src/main/resources/application.yml
+++ b/spring-security-modules/spring-security-oauth2-sso/spring-security-sso-ui-2/src/main/resources/application.yml
@@ -2,6 +2,7 @@ server:
port: 8083
servlet:
context-path: /ui2
+ register-default-servlet: true
session:
cookie:
name: UI2SESSION
diff --git a/spring-security-modules/spring-security-oauth2-sso/spring-security-sso-ui/src/main/resources/application.yml b/spring-security-modules/spring-security-oauth2-sso/spring-security-sso-ui/src/main/resources/application.yml
index d1d9ea6ebc..f98dee9429 100644
--- a/spring-security-modules/spring-security-oauth2-sso/spring-security-sso-ui/src/main/resources/application.yml
+++ b/spring-security-modules/spring-security-oauth2-sso/spring-security-sso-ui/src/main/resources/application.yml
@@ -2,6 +2,7 @@ server:
port: 8082
servlet:
context-path: /ui
+ register-default-servlet: true
session:
cookie:
name: UISESSION
diff --git a/spring-security-modules/spring-security-web-mvc/pom.xml b/spring-security-modules/spring-security-web-mvc/pom.xml
index 2651b3a0f2..b1e94b2db3 100644
--- a/spring-security-modules/spring-security-web-mvc/pom.xml
+++ b/spring-security-modules/spring-security-web-mvc/pom.xml
@@ -61,27 +61,6 @@
spring-boot-starter-test
test
-
- org.springframework.security
- spring-security-test
- ${spring.mvc.version}
- test
-
-
- org.springframework.security
- spring-security-web
- ${spring.mvc.version}
-
-
- org.springframework.security
- spring-security-config
- ${spring.mvc.version}
-
-
- org.springframework
- spring-webmvc
- ${spring.mvc.version}
-
javax.servlet
javax.servlet-api
@@ -104,7 +83,6 @@
- 5.2.2.RELEASE
4.0.1
diff --git a/spring-security-modules/spring-social-login/src/main/resources/application.properties b/spring-security-modules/spring-social-login/src/main/resources/application.properties
index 2bd99d8239..22e6acf9e2 100644
--- a/spring-security-modules/spring-social-login/src/main/resources/application.properties
+++ b/spring-security-modules/spring-social-login/src/main/resources/application.properties
@@ -1,3 +1,4 @@
spring.social.facebook.appId=1715784745414888
spring.social.facebook.appSecret=abefd6497e9cc01ad03be28509617bf0
-spring.thymeleaf.cache=false
\ No newline at end of file
+spring.thymeleaf.cache=false
+server.servlet.register-default-servlet=true
\ No newline at end of file
diff --git a/spring-web-modules/pom.xml b/spring-web-modules/pom.xml
index 1da3612493..c28ffbeab8 100644
--- a/spring-web-modules/pom.xml
+++ b/spring-web-modules/pom.xml
@@ -21,7 +21,10 @@
spring-mvc-crash
spring-mvc-forms-jsp
spring-mvc-views
+ spring-mvc-webflow
+ spring-rest-angular
spring-rest-http
+ spring-resttemplate-2
spring-thymeleaf
spring-thymeleaf-2
spring-thymeleaf-3
diff --git a/spring-web-modules/spring-mvc-basics-3/pom.xml b/spring-web-modules/spring-mvc-basics-3/pom.xml
index c6b7763d64..a9245814a8 100644
--- a/spring-web-modules/spring-mvc-basics-3/pom.xml
+++ b/spring-web-modules/spring-mvc-basics-3/pom.xml
@@ -78,12 +78,6 @@
test
-
- org.springframework.cloud
- spring-cloud-context
- ${springcloud.version}
-
-
org.apache.httpcomponents
httpclient
@@ -149,7 +143,6 @@
2.2
18.0
3.1.7
- 2.0.2.RELEASE
4.5.8
diff --git a/spring-web-modules/spring-mvc-basics/src/main/resources/application.properties b/spring-web-modules/spring-mvc-basics/src/main/resources/application.properties
index b8a9be0b40..cf26fbfb60 100644
--- a/spring-web-modules/spring-mvc-basics/src/main/resources/application.properties
+++ b/spring-web-modules/spring-mvc-basics/src/main/resources/application.properties
@@ -5,3 +5,6 @@ spring.mvc.pathmatch.use-suffix-pattern=true
#spring.mvc.contentnegotiation.favor-path-extension=true
#spring.mvc.contentnegotiation.favor-parameter=true
#spring.mvc.contentnegotiation.parameter-name=mediaType
+
+# https://github.com/spring-projects/spring-boot/issues/24207
+spring.main.allow-bean-definition-overriding=true
diff --git a/spring-mvc-webflow/README.md b/spring-web-modules/spring-mvc-webflow/README.md
similarity index 100%
rename from spring-mvc-webflow/README.md
rename to spring-web-modules/spring-mvc-webflow/README.md
diff --git a/spring-mvc-webflow/pom.xml b/spring-web-modules/spring-mvc-webflow/pom.xml
similarity index 100%
rename from spring-mvc-webflow/pom.xml
rename to spring-web-modules/spring-mvc-webflow/pom.xml
diff --git a/spring-mvc-webflow/src/main/java/org/baeldung/servlet/WebInitializer.java b/spring-web-modules/spring-mvc-webflow/src/main/java/org/baeldung/servlet/WebInitializer.java
similarity index 100%
rename from spring-mvc-webflow/src/main/java/org/baeldung/servlet/WebInitializer.java
rename to spring-web-modules/spring-mvc-webflow/src/main/java/org/baeldung/servlet/WebInitializer.java
diff --git a/spring-mvc-webflow/src/main/java/org/baeldung/spring/WebFlowConfig.java b/spring-web-modules/spring-mvc-webflow/src/main/java/org/baeldung/spring/WebFlowConfig.java
similarity index 100%
rename from spring-mvc-webflow/src/main/java/org/baeldung/spring/WebFlowConfig.java
rename to spring-web-modules/spring-mvc-webflow/src/main/java/org/baeldung/spring/WebFlowConfig.java
diff --git a/spring-mvc-webflow/src/main/java/org/baeldung/spring/WebMvcConfig.java b/spring-web-modules/spring-mvc-webflow/src/main/java/org/baeldung/spring/WebMvcConfig.java
similarity index 100%
rename from spring-mvc-webflow/src/main/java/org/baeldung/spring/WebMvcConfig.java
rename to spring-web-modules/spring-mvc-webflow/src/main/java/org/baeldung/spring/WebMvcConfig.java
diff --git a/spring-mvc-webflow/src/main/resources/flow-definition.xml b/spring-web-modules/spring-mvc-webflow/src/main/resources/flow-definition.xml
similarity index 100%
rename from spring-mvc-webflow/src/main/resources/flow-definition.xml
rename to spring-web-modules/spring-mvc-webflow/src/main/resources/flow-definition.xml
diff --git a/spring-mvc-webflow/src/main/resources/logback.xml b/spring-web-modules/spring-mvc-webflow/src/main/resources/logback.xml
similarity index 100%
rename from spring-mvc-webflow/src/main/resources/logback.xml
rename to spring-web-modules/spring-mvc-webflow/src/main/resources/logback.xml
diff --git a/spring-mvc-webflow/src/main/webapp/WEB-INF/flows/activation-flow.xml b/spring-web-modules/spring-mvc-webflow/src/main/webapp/WEB-INF/flows/activation-flow.xml
similarity index 100%
rename from spring-mvc-webflow/src/main/webapp/WEB-INF/flows/activation-flow.xml
rename to spring-web-modules/spring-mvc-webflow/src/main/webapp/WEB-INF/flows/activation-flow.xml
diff --git a/spring-mvc-webflow/src/main/webapp/WEB-INF/view/activation.jsp b/spring-web-modules/spring-mvc-webflow/src/main/webapp/WEB-INF/view/activation.jsp
similarity index 100%
rename from spring-mvc-webflow/src/main/webapp/WEB-INF/view/activation.jsp
rename to spring-web-modules/spring-mvc-webflow/src/main/webapp/WEB-INF/view/activation.jsp
diff --git a/spring-mvc-webflow/src/main/webapp/WEB-INF/view/failure.jsp b/spring-web-modules/spring-mvc-webflow/src/main/webapp/WEB-INF/view/failure.jsp
similarity index 100%
rename from spring-mvc-webflow/src/main/webapp/WEB-INF/view/failure.jsp
rename to spring-web-modules/spring-mvc-webflow/src/main/webapp/WEB-INF/view/failure.jsp
diff --git a/spring-mvc-webflow/src/main/webapp/WEB-INF/view/sample.jsp b/spring-web-modules/spring-mvc-webflow/src/main/webapp/WEB-INF/view/sample.jsp
similarity index 100%
rename from spring-mvc-webflow/src/main/webapp/WEB-INF/view/sample.jsp
rename to spring-web-modules/spring-mvc-webflow/src/main/webapp/WEB-INF/view/sample.jsp
diff --git a/spring-mvc-webflow/src/main/webapp/WEB-INF/view/success.jsp b/spring-web-modules/spring-mvc-webflow/src/main/webapp/WEB-INF/view/success.jsp
similarity index 100%
rename from spring-mvc-webflow/src/main/webapp/WEB-INF/view/success.jsp
rename to spring-web-modules/spring-mvc-webflow/src/main/webapp/WEB-INF/view/success.jsp
diff --git a/spring-mvc-webflow/src/test/java/org/baeldung/SpringContextTest.java b/spring-web-modules/spring-mvc-webflow/src/test/java/org/baeldung/SpringContextTest.java
similarity index 100%
rename from spring-mvc-webflow/src/test/java/org/baeldung/SpringContextTest.java
rename to spring-web-modules/spring-mvc-webflow/src/test/java/org/baeldung/SpringContextTest.java
diff --git a/spring-rest-angular/README.md b/spring-web-modules/spring-rest-angular/README.md
similarity index 100%
rename from spring-rest-angular/README.md
rename to spring-web-modules/spring-rest-angular/README.md
diff --git a/spring-rest-angular/pom.xml b/spring-web-modules/spring-rest-angular/pom.xml
similarity index 97%
rename from spring-rest-angular/pom.xml
rename to spring-web-modules/spring-rest-angular/pom.xml
index 1d50b4c76c..eb1ec8696c 100644
--- a/spring-rest-angular/pom.xml
+++ b/spring-web-modules/spring-rest-angular/pom.xml
@@ -11,7 +11,7 @@
com.baeldung
parent-boot-2
0.0.1-SNAPSHOT
- ../parent-boot-2
+ ../../parent-boot-2
diff --git a/spring-rest-angular/src/main/java/com/baeldung/web/dao/StudentRepository.java b/spring-web-modules/spring-rest-angular/src/main/java/com/baeldung/web/dao/StudentRepository.java
similarity index 100%
rename from spring-rest-angular/src/main/java/com/baeldung/web/dao/StudentRepository.java
rename to spring-web-modules/spring-rest-angular/src/main/java/com/baeldung/web/dao/StudentRepository.java
diff --git a/spring-rest-angular/src/main/java/com/baeldung/web/entity/Student.java b/spring-web-modules/spring-rest-angular/src/main/java/com/baeldung/web/entity/Student.java
similarity index 100%
rename from spring-rest-angular/src/main/java/com/baeldung/web/entity/Student.java
rename to spring-web-modules/spring-rest-angular/src/main/java/com/baeldung/web/entity/Student.java
diff --git a/spring-rest-angular/src/main/java/com/baeldung/web/exception/MyResourceNotFoundException.java b/spring-web-modules/spring-rest-angular/src/main/java/com/baeldung/web/exception/MyResourceNotFoundException.java
similarity index 100%
rename from spring-rest-angular/src/main/java/com/baeldung/web/exception/MyResourceNotFoundException.java
rename to spring-web-modules/spring-rest-angular/src/main/java/com/baeldung/web/exception/MyResourceNotFoundException.java
diff --git a/spring-rest-angular/src/main/java/com/baeldung/web/main/Application.java b/spring-web-modules/spring-rest-angular/src/main/java/com/baeldung/web/main/Application.java
similarity index 100%
rename from spring-rest-angular/src/main/java/com/baeldung/web/main/Application.java
rename to spring-web-modules/spring-rest-angular/src/main/java/com/baeldung/web/main/Application.java
diff --git a/spring-rest-angular/src/main/java/com/baeldung/web/main/PersistenceConfig.java b/spring-web-modules/spring-rest-angular/src/main/java/com/baeldung/web/main/PersistenceConfig.java
similarity index 100%
rename from spring-rest-angular/src/main/java/com/baeldung/web/main/PersistenceConfig.java
rename to spring-web-modules/spring-rest-angular/src/main/java/com/baeldung/web/main/PersistenceConfig.java
diff --git a/spring-rest-angular/src/main/java/com/baeldung/web/rest/StudentDirectoryRestController.java b/spring-web-modules/spring-rest-angular/src/main/java/com/baeldung/web/rest/StudentDirectoryRestController.java
similarity index 100%
rename from spring-rest-angular/src/main/java/com/baeldung/web/rest/StudentDirectoryRestController.java
rename to spring-web-modules/spring-rest-angular/src/main/java/com/baeldung/web/rest/StudentDirectoryRestController.java
diff --git a/spring-rest-angular/src/main/java/com/baeldung/web/service/IOperations.java b/spring-web-modules/spring-rest-angular/src/main/java/com/baeldung/web/service/IOperations.java
similarity index 100%
rename from spring-rest-angular/src/main/java/com/baeldung/web/service/IOperations.java
rename to spring-web-modules/spring-rest-angular/src/main/java/com/baeldung/web/service/IOperations.java
diff --git a/spring-rest-angular/src/main/java/com/baeldung/web/service/StudentService.java b/spring-web-modules/spring-rest-angular/src/main/java/com/baeldung/web/service/StudentService.java
similarity index 100%
rename from spring-rest-angular/src/main/java/com/baeldung/web/service/StudentService.java
rename to spring-web-modules/spring-rest-angular/src/main/java/com/baeldung/web/service/StudentService.java
diff --git a/spring-rest-angular/src/main/java/com/baeldung/web/service/StudentServiceImpl.java b/spring-web-modules/spring-rest-angular/src/main/java/com/baeldung/web/service/StudentServiceImpl.java
similarity index 100%
rename from spring-rest-angular/src/main/java/com/baeldung/web/service/StudentServiceImpl.java
rename to spring-web-modules/spring-rest-angular/src/main/java/com/baeldung/web/service/StudentServiceImpl.java
diff --git a/spring-rest-angular/src/main/resources/application.properties b/spring-web-modules/spring-rest-angular/src/main/resources/application.properties
similarity index 100%
rename from spring-rest-angular/src/main/resources/application.properties
rename to spring-web-modules/spring-rest-angular/src/main/resources/application.properties
diff --git a/spring-rest-angular/src/main/resources/data.sql b/spring-web-modules/spring-rest-angular/src/main/resources/data.sql
similarity index 100%
rename from spring-rest-angular/src/main/resources/data.sql
rename to spring-web-modules/spring-rest-angular/src/main/resources/data.sql
diff --git a/spring-rest-angular/src/main/resources/logback.xml b/spring-web-modules/spring-rest-angular/src/main/resources/logback.xml
similarity index 100%
rename from spring-rest-angular/src/main/resources/logback.xml
rename to spring-web-modules/spring-rest-angular/src/main/resources/logback.xml
diff --git a/spring-rest-angular/src/main/webapp/WEB-INF/web.xml b/spring-web-modules/spring-rest-angular/src/main/webapp/WEB-INF/web.xml
similarity index 100%
rename from spring-rest-angular/src/main/webapp/WEB-INF/web.xml
rename to spring-web-modules/spring-rest-angular/src/main/webapp/WEB-INF/web.xml
diff --git a/spring-rest-angular/src/main/webapp/index.html b/spring-web-modules/spring-rest-angular/src/main/webapp/index.html
similarity index 100%
rename from spring-rest-angular/src/main/webapp/index.html
rename to spring-web-modules/spring-rest-angular/src/main/webapp/index.html
diff --git a/spring-rest-angular/src/main/webapp/view/app.js b/spring-web-modules/spring-rest-angular/src/main/webapp/view/app.js
similarity index 100%
rename from spring-rest-angular/src/main/webapp/view/app.js
rename to spring-web-modules/spring-rest-angular/src/main/webapp/view/app.js
diff --git a/spring-rest-angular/src/test/java/com/baeldung/SpringContextTest.java b/spring-web-modules/spring-rest-angular/src/test/java/com/baeldung/SpringContextTest.java
similarity index 100%
rename from spring-rest-angular/src/test/java/com/baeldung/SpringContextTest.java
rename to spring-web-modules/spring-rest-angular/src/test/java/com/baeldung/SpringContextTest.java
diff --git a/spring-rest-angular/src/test/java/com/baeldung/web/service/StudentServiceIntegrationTest.java b/spring-web-modules/spring-rest-angular/src/test/java/com/baeldung/web/service/StudentServiceIntegrationTest.java
similarity index 100%
rename from spring-rest-angular/src/test/java/com/baeldung/web/service/StudentServiceIntegrationTest.java
rename to spring-web-modules/spring-rest-angular/src/test/java/com/baeldung/web/service/StudentServiceIntegrationTest.java
diff --git a/spring-resttemplate-2/README.md b/spring-web-modules/spring-resttemplate-2/README.md
similarity index 100%
rename from spring-resttemplate-2/README.md
rename to spring-web-modules/spring-resttemplate-2/README.md
diff --git a/spring-resttemplate-2/pom.xml b/spring-web-modules/spring-resttemplate-2/pom.xml
similarity index 97%
rename from spring-resttemplate-2/pom.xml
rename to spring-web-modules/spring-resttemplate-2/pom.xml
index 1404a35f33..04be058638 100644
--- a/spring-resttemplate-2/pom.xml
+++ b/spring-web-modules/spring-resttemplate-2/pom.xml
@@ -11,7 +11,7 @@
com.baeldung
parent-boot-2
0.0.1-SNAPSHOT
- ../parent-boot-2
+ parent-boot-2/pom.xml
diff --git a/spring-resttemplate-2/src/main/java/com/baeldung/compress/CompressingClientHttpRequestInterceptor.java b/spring-web-modules/spring-resttemplate-2/src/main/java/com/baeldung/compress/CompressingClientHttpRequestInterceptor.java
similarity index 100%
rename from spring-resttemplate-2/src/main/java/com/baeldung/compress/CompressingClientHttpRequestInterceptor.java
rename to spring-web-modules/spring-resttemplate-2/src/main/java/com/baeldung/compress/CompressingClientHttpRequestInterceptor.java
diff --git a/spring-resttemplate-2/src/main/java/com/baeldung/compress/GzipUtils.java b/spring-web-modules/spring-resttemplate-2/src/main/java/com/baeldung/compress/GzipUtils.java
similarity index 100%
rename from spring-resttemplate-2/src/main/java/com/baeldung/compress/GzipUtils.java
rename to spring-web-modules/spring-resttemplate-2/src/main/java/com/baeldung/compress/GzipUtils.java
diff --git a/spring-resttemplate-2/src/main/java/com/baeldung/compress/JettyWebServerConfiguration.java b/spring-web-modules/spring-resttemplate-2/src/main/java/com/baeldung/compress/JettyWebServerConfiguration.java
similarity index 100%
rename from spring-resttemplate-2/src/main/java/com/baeldung/compress/JettyWebServerConfiguration.java
rename to spring-web-modules/spring-resttemplate-2/src/main/java/com/baeldung/compress/JettyWebServerConfiguration.java
diff --git a/spring-resttemplate-2/src/main/java/com/baeldung/compress/Message.java b/spring-web-modules/spring-resttemplate-2/src/main/java/com/baeldung/compress/Message.java
similarity index 100%
rename from spring-resttemplate-2/src/main/java/com/baeldung/compress/Message.java
rename to spring-web-modules/spring-resttemplate-2/src/main/java/com/baeldung/compress/Message.java
diff --git a/spring-resttemplate-2/src/main/java/com/baeldung/compress/MessageController.java b/spring-web-modules/spring-resttemplate-2/src/main/java/com/baeldung/compress/MessageController.java
similarity index 100%
rename from spring-resttemplate-2/src/main/java/com/baeldung/compress/MessageController.java
rename to spring-web-modules/spring-resttemplate-2/src/main/java/com/baeldung/compress/MessageController.java
diff --git a/spring-resttemplate-2/src/main/java/com/baeldung/compress/RestTemplateConfiguration.java b/spring-web-modules/spring-resttemplate-2/src/main/java/com/baeldung/compress/RestTemplateConfiguration.java
similarity index 100%
rename from spring-resttemplate-2/src/main/java/com/baeldung/compress/RestTemplateConfiguration.java
rename to spring-web-modules/spring-resttemplate-2/src/main/java/com/baeldung/compress/RestTemplateConfiguration.java
diff --git a/spring-resttemplate-2/src/main/java/com/baeldung/compress/SpringCompressRequestApplication.java b/spring-web-modules/spring-resttemplate-2/src/main/java/com/baeldung/compress/SpringCompressRequestApplication.java
similarity index 100%
rename from spring-resttemplate-2/src/main/java/com/baeldung/compress/SpringCompressRequestApplication.java
rename to spring-web-modules/spring-resttemplate-2/src/main/java/com/baeldung/compress/SpringCompressRequestApplication.java
diff --git a/spring-resttemplate-2/src/main/java/com/baeldung/resttemplate/RestTemplateConfigurationApplication.java b/spring-web-modules/spring-resttemplate-2/src/main/java/com/baeldung/resttemplate/RestTemplateConfigurationApplication.java
similarity index 100%
rename from spring-resttemplate-2/src/main/java/com/baeldung/resttemplate/RestTemplateConfigurationApplication.java
rename to spring-web-modules/spring-resttemplate-2/src/main/java/com/baeldung/resttemplate/RestTemplateConfigurationApplication.java
diff --git a/spring-resttemplate-2/src/main/java/com/baeldung/resttemplate/json/consumer/service/UserConsumerService.java b/spring-web-modules/spring-resttemplate-2/src/main/java/com/baeldung/resttemplate/json/consumer/service/UserConsumerService.java
similarity index 100%
rename from spring-resttemplate-2/src/main/java/com/baeldung/resttemplate/json/consumer/service/UserConsumerService.java
rename to spring-web-modules/spring-resttemplate-2/src/main/java/com/baeldung/resttemplate/json/consumer/service/UserConsumerService.java
diff --git a/spring-resttemplate-2/src/main/java/com/baeldung/resttemplate/json/consumer/service/UserConsumerServiceImpl.java b/spring-web-modules/spring-resttemplate-2/src/main/java/com/baeldung/resttemplate/json/consumer/service/UserConsumerServiceImpl.java
similarity index 100%
rename from spring-resttemplate-2/src/main/java/com/baeldung/resttemplate/json/consumer/service/UserConsumerServiceImpl.java
rename to spring-web-modules/spring-resttemplate-2/src/main/java/com/baeldung/resttemplate/json/consumer/service/UserConsumerServiceImpl.java
diff --git a/spring-resttemplate-2/src/main/java/com/baeldung/resttemplate/json/model/Address.java b/spring-web-modules/spring-resttemplate-2/src/main/java/com/baeldung/resttemplate/json/model/Address.java
similarity index 100%
rename from spring-resttemplate-2/src/main/java/com/baeldung/resttemplate/json/model/Address.java
rename to spring-web-modules/spring-resttemplate-2/src/main/java/com/baeldung/resttemplate/json/model/Address.java
diff --git a/spring-resttemplate-2/src/main/java/com/baeldung/resttemplate/json/model/User.java b/spring-web-modules/spring-resttemplate-2/src/main/java/com/baeldung/resttemplate/json/model/User.java
similarity index 100%
rename from spring-resttemplate-2/src/main/java/com/baeldung/resttemplate/json/model/User.java
rename to spring-web-modules/spring-resttemplate-2/src/main/java/com/baeldung/resttemplate/json/model/User.java
diff --git a/spring-resttemplate-2/src/main/java/com/baeldung/resttemplate/logging/web/controller/PersonController.java b/spring-web-modules/spring-resttemplate-2/src/main/java/com/baeldung/resttemplate/logging/web/controller/PersonController.java
similarity index 100%
rename from spring-resttemplate-2/src/main/java/com/baeldung/resttemplate/logging/web/controller/PersonController.java
rename to spring-web-modules/spring-resttemplate-2/src/main/java/com/baeldung/resttemplate/logging/web/controller/PersonController.java
diff --git a/spring-resttemplate-2/src/main/java/com/baeldung/resttemplate/web/controller/PersonAPI.java b/spring-web-modules/spring-resttemplate-2/src/main/java/com/baeldung/resttemplate/web/controller/PersonAPI.java
similarity index 100%
rename from spring-resttemplate-2/src/main/java/com/baeldung/resttemplate/web/controller/PersonAPI.java
rename to spring-web-modules/spring-resttemplate-2/src/main/java/com/baeldung/resttemplate/web/controller/PersonAPI.java
diff --git a/spring-resttemplate-2/src/main/java/com/baeldung/resttemplate/web/dto/Person.java b/spring-web-modules/spring-resttemplate-2/src/main/java/com/baeldung/resttemplate/web/dto/Person.java
similarity index 100%
rename from spring-resttemplate-2/src/main/java/com/baeldung/resttemplate/web/dto/Person.java
rename to spring-web-modules/spring-resttemplate-2/src/main/java/com/baeldung/resttemplate/web/dto/Person.java
diff --git a/spring-resttemplate-2/src/main/java/com/baeldung/resttemplate/web/service/PersonService.java b/spring-web-modules/spring-resttemplate-2/src/main/java/com/baeldung/resttemplate/web/service/PersonService.java
similarity index 100%
rename from spring-resttemplate-2/src/main/java/com/baeldung/resttemplate/web/service/PersonService.java
rename to spring-web-modules/spring-resttemplate-2/src/main/java/com/baeldung/resttemplate/web/service/PersonService.java
diff --git a/spring-resttemplate-2/src/main/java/com/baeldung/resttemplate/web/service/PersonServiceImpl.java b/spring-web-modules/spring-resttemplate-2/src/main/java/com/baeldung/resttemplate/web/service/PersonServiceImpl.java
similarity index 100%
rename from spring-resttemplate-2/src/main/java/com/baeldung/resttemplate/web/service/PersonServiceImpl.java
rename to spring-web-modules/spring-resttemplate-2/src/main/java/com/baeldung/resttemplate/web/service/PersonServiceImpl.java
diff --git a/spring-resttemplate-2/src/main/java/com/baeldung/sampleapp/config/WebConfig.java b/spring-web-modules/spring-resttemplate-2/src/main/java/com/baeldung/sampleapp/config/WebConfig.java
similarity index 100%
rename from spring-resttemplate-2/src/main/java/com/baeldung/sampleapp/config/WebConfig.java
rename to spring-web-modules/spring-resttemplate-2/src/main/java/com/baeldung/sampleapp/config/WebConfig.java
diff --git a/spring-resttemplate-2/src/main/java/com/baeldung/sampleapp/web/controller/mediatypes/CustomMediaTypeController.java b/spring-web-modules/spring-resttemplate-2/src/main/java/com/baeldung/sampleapp/web/controller/mediatypes/CustomMediaTypeController.java
similarity index 100%
rename from spring-resttemplate-2/src/main/java/com/baeldung/sampleapp/web/controller/mediatypes/CustomMediaTypeController.java
rename to spring-web-modules/spring-resttemplate-2/src/main/java/com/baeldung/sampleapp/web/controller/mediatypes/CustomMediaTypeController.java
diff --git a/spring-resttemplate-2/src/main/java/com/baeldung/sampleapp/web/dto/BaeldungItem.java b/spring-web-modules/spring-resttemplate-2/src/main/java/com/baeldung/sampleapp/web/dto/BaeldungItem.java
similarity index 100%
rename from spring-resttemplate-2/src/main/java/com/baeldung/sampleapp/web/dto/BaeldungItem.java
rename to spring-web-modules/spring-resttemplate-2/src/main/java/com/baeldung/sampleapp/web/dto/BaeldungItem.java
diff --git a/spring-resttemplate-2/src/main/java/com/baeldung/sampleapp/web/dto/BaeldungItemV2.java b/spring-web-modules/spring-resttemplate-2/src/main/java/com/baeldung/sampleapp/web/dto/BaeldungItemV2.java
similarity index 100%
rename from spring-resttemplate-2/src/main/java/com/baeldung/sampleapp/web/dto/BaeldungItemV2.java
rename to spring-web-modules/spring-resttemplate-2/src/main/java/com/baeldung/sampleapp/web/dto/BaeldungItemV2.java
diff --git a/spring-resttemplate-2/src/main/resources/application.properties b/spring-web-modules/spring-resttemplate-2/src/main/resources/application.properties
similarity index 100%
rename from spring-resttemplate-2/src/main/resources/application.properties
rename to spring-web-modules/spring-resttemplate-2/src/main/resources/application.properties
diff --git a/spring-resttemplate-2/src/test/java/com/baeldung/compress/GzipUtilsUnitTest.java b/spring-web-modules/spring-resttemplate-2/src/test/java/com/baeldung/compress/GzipUtilsUnitTest.java
similarity index 100%
rename from spring-resttemplate-2/src/test/java/com/baeldung/compress/GzipUtilsUnitTest.java
rename to spring-web-modules/spring-resttemplate-2/src/test/java/com/baeldung/compress/GzipUtilsUnitTest.java
diff --git a/spring-resttemplate-2/src/test/java/com/baeldung/compress/MessageControllerUnitTest.java b/spring-web-modules/spring-resttemplate-2/src/test/java/com/baeldung/compress/MessageControllerUnitTest.java
similarity index 100%
rename from spring-resttemplate-2/src/test/java/com/baeldung/compress/MessageControllerUnitTest.java
rename to spring-web-modules/spring-resttemplate-2/src/test/java/com/baeldung/compress/MessageControllerUnitTest.java
diff --git a/spring-resttemplate-2/src/test/java/com/baeldung/resttemplate/json/consumer/service/UserConsumerServiceImplUnitTest.java b/spring-web-modules/spring-resttemplate-2/src/test/java/com/baeldung/resttemplate/json/consumer/service/UserConsumerServiceImplUnitTest.java
similarity index 100%
rename from spring-resttemplate-2/src/test/java/com/baeldung/resttemplate/json/consumer/service/UserConsumerServiceImplUnitTest.java
rename to spring-web-modules/spring-resttemplate-2/src/test/java/com/baeldung/resttemplate/json/consumer/service/UserConsumerServiceImplUnitTest.java
diff --git a/spring-resttemplate-2/src/test/java/com/baeldung/resttemplate/logging/LoggingInterceptor.java b/spring-web-modules/spring-resttemplate-2/src/test/java/com/baeldung/resttemplate/logging/LoggingInterceptor.java
similarity index 100%
rename from spring-resttemplate-2/src/test/java/com/baeldung/resttemplate/logging/LoggingInterceptor.java
rename to spring-web-modules/spring-resttemplate-2/src/test/java/com/baeldung/resttemplate/logging/LoggingInterceptor.java
diff --git a/spring-resttemplate-2/src/test/java/com/baeldung/resttemplate/logging/RestTemplateLoggingLiveTest.java b/spring-web-modules/spring-resttemplate-2/src/test/java/com/baeldung/resttemplate/logging/RestTemplateLoggingLiveTest.java
similarity index 100%
rename from spring-resttemplate-2/src/test/java/com/baeldung/resttemplate/logging/RestTemplateLoggingLiveTest.java
rename to spring-web-modules/spring-resttemplate-2/src/test/java/com/baeldung/resttemplate/logging/RestTemplateLoggingLiveTest.java
diff --git a/spring-resttemplate-2/src/test/java/com/baeldung/resttemplate/postjson/PersonAPILiveTest.java b/spring-web-modules/spring-resttemplate-2/src/test/java/com/baeldung/resttemplate/postjson/PersonAPILiveTest.java
similarity index 100%
rename from spring-resttemplate-2/src/test/java/com/baeldung/resttemplate/postjson/PersonAPILiveTest.java
rename to spring-web-modules/spring-resttemplate-2/src/test/java/com/baeldung/resttemplate/postjson/PersonAPILiveTest.java
diff --git a/spring-resttemplate-2/src/test/java/com/baeldung/resttemplate/proxy/RequestFactoryLiveTest.java b/spring-web-modules/spring-resttemplate-2/src/test/java/com/baeldung/resttemplate/proxy/RequestFactoryLiveTest.java
similarity index 100%
rename from spring-resttemplate-2/src/test/java/com/baeldung/resttemplate/proxy/RequestFactoryLiveTest.java
rename to spring-web-modules/spring-resttemplate-2/src/test/java/com/baeldung/resttemplate/proxy/RequestFactoryLiveTest.java
diff --git a/spring-resttemplate-2/src/test/java/com/baeldung/resttemplate/proxy/RestTemplateCustomizerLiveTest.java b/spring-web-modules/spring-resttemplate-2/src/test/java/com/baeldung/resttemplate/proxy/RestTemplateCustomizerLiveTest.java
similarity index 100%
rename from spring-resttemplate-2/src/test/java/com/baeldung/resttemplate/proxy/RestTemplateCustomizerLiveTest.java
rename to spring-web-modules/spring-resttemplate-2/src/test/java/com/baeldung/resttemplate/proxy/RestTemplateCustomizerLiveTest.java
diff --git a/spring-resttemplate-2/src/test/java/com/baeldung/web/controller/mediatypes/CustomMediaTypeControllerIntegrationTest.java b/spring-web-modules/spring-resttemplate-2/src/test/java/com/baeldung/web/controller/mediatypes/CustomMediaTypeControllerIntegrationTest.java
similarity index 100%
rename from spring-resttemplate-2/src/test/java/com/baeldung/web/controller/mediatypes/CustomMediaTypeControllerIntegrationTest.java
rename to spring-web-modules/spring-resttemplate-2/src/test/java/com/baeldung/web/controller/mediatypes/CustomMediaTypeControllerIntegrationTest.java
diff --git a/spring-resttemplate-2/src/test/java/com/baeldung/web/controller/mediatypes/CustomMediaTypeControllerLiveTest.java b/spring-web-modules/spring-resttemplate-2/src/test/java/com/baeldung/web/controller/mediatypes/CustomMediaTypeControllerLiveTest.java
similarity index 100%
rename from spring-resttemplate-2/src/test/java/com/baeldung/web/controller/mediatypes/CustomMediaTypeControllerLiveTest.java
rename to spring-web-modules/spring-resttemplate-2/src/test/java/com/baeldung/web/controller/mediatypes/CustomMediaTypeControllerLiveTest.java
diff --git a/spring-resttemplate-2/src/test/java/com/baeldung/web/controller/mediatypes/TestConfig.java b/spring-web-modules/spring-resttemplate-2/src/test/java/com/baeldung/web/controller/mediatypes/TestConfig.java
similarity index 100%
rename from spring-resttemplate-2/src/test/java/com/baeldung/web/controller/mediatypes/TestConfig.java
rename to spring-web-modules/spring-resttemplate-2/src/test/java/com/baeldung/web/controller/mediatypes/TestConfig.java
diff --git a/spring-resttemplate-2/src/test/resources/application.properties b/spring-web-modules/spring-resttemplate-2/src/test/resources/application.properties
similarity index 100%
rename from spring-resttemplate-2/src/test/resources/application.properties
rename to spring-web-modules/spring-resttemplate-2/src/test/resources/application.properties
diff --git a/testing-modules/spring-testing/pom.xml b/testing-modules/spring-testing/pom.xml
index f26b0f27ec..9fe0fd8895 100644
--- a/testing-modules/spring-testing/pom.xml
+++ b/testing-modules/spring-testing/pom.xml
@@ -114,7 +114,7 @@
3.1.6
5.7.0
1.7.0
- 5.2.8.RELEASE
+ 5.3.0
4.0.1
2.1.1