diff --git a/core-java-modules/core-java-io-apis-2/README.md b/core-java-modules/core-java-io-apis-2/README.md
index f3d72fe8b5..bbaf7d9584 100644
--- a/core-java-modules/core-java-io-apis-2/README.md
+++ b/core-java-modules/core-java-io-apis-2/README.md
@@ -5,3 +5,5 @@ This module contains articles about core Java input/output(IO) APIs.
### Relevant Articles:
- [Constructing a Relative Path From Two Absolute Paths in Java](https://www.baeldung.com/java-relative-path-absolute)
- [Java Scanner Taking a Character Input](https://www.baeldung.com/java-scanner-character-input)
+- [Get the Desktop Path in Java](https://www.baeldung.com/java-desktop-path)
+
diff --git a/core-java-modules/core-java-io-apis-2/src/test/java/com/baeldung/scanner/NextLineVsNextIntUnitTest.java b/core-java-modules/core-java-io-apis-2/src/test/java/com/baeldung/scanner/NextLineVsNextIntUnitTest.java
new file mode 100644
index 0000000000..8fab7c62e9
--- /dev/null
+++ b/core-java-modules/core-java-io-apis-2/src/test/java/com/baeldung/scanner/NextLineVsNextIntUnitTest.java
@@ -0,0 +1,85 @@
+package com.baeldung.scanner;
+
+import static org.junit.jupiter.api.Assertions.assertEquals;
+import static org.junit.jupiter.api.Assertions.assertThrows;
+
+import java.util.InputMismatchException;
+import java.util.Scanner;
+
+import org.junit.jupiter.api.Test;
+
+public class NextLineVsNextIntUnitTest {
+
+ @Test
+ void whenInputLineIsNumber_thenNextLineAndNextIntBothWork() {
+ String input = "42\n";
+
+ //nextLine()
+ Scanner sc1 = new Scanner(input);
+ int num1 = Integer.parseInt(sc1.nextLine());
+ assertEquals(42, num1);
+
+ //nextInt()
+ Scanner sc2 = new Scanner(input);
+ int num2 = sc2.nextInt();
+ assertEquals(42, num2);
+
+ }
+
+ @Test
+ void whenInputIsNotValidNumber_thenNextLineAndNextIntThrowDifferentException() {
+ String input = "Nan\n";
+
+ //nextLine() -> NumberFormatException
+ Scanner sc1 = new Scanner(input);
+ assertThrows(NumberFormatException.class, () -> Integer.parseInt(sc1.nextLine()));
+
+ //nextInt() -> InputMismatchException
+ Scanner sc2 = new Scanner(input);
+ assertThrows(InputMismatchException.class, sc2::nextInt);
+ }
+
+ @Test
+ void whenUsingNextInt_thenTheNextTokenAfterItFailsToParseIsNotConsumed() {
+ String input = "42 is a magic number\n";
+
+ //nextInt() to read '42'
+ Scanner sc2 = new Scanner(input);
+ int num2 = sc2.nextInt();
+ assertEquals(42, num2);
+
+ // call nextInt() again on "is"
+ assertThrows(InputMismatchException.class, sc2::nextInt);
+
+ String theNextToken = sc2.next();
+ assertEquals("is", theNextToken);
+
+ theNextToken = sc2.next();
+ assertEquals("a", theNextToken);
+ }
+
+ @Test
+ void whenReadingTwoInputLines_thenNextLineAndNextIntBehaveDifferently() {
+
+ String input = new StringBuilder().append("42\n")
+ .append("It is a magic number.\n")
+ .toString();
+
+ //nextLine()
+ Scanner sc1 = new Scanner(input);
+ int num1 = Integer.parseInt(sc1.nextLine());
+ String nextLineText1 = sc1.nextLine();
+ assertEquals(42, num1);
+ assertEquals("It is a magic number.", nextLineText1);
+
+ //nextInt()
+ Scanner sc2 = new Scanner(input);
+ int num2 = sc2.nextInt();
+ assertEquals(42, num2);
+
+ // nextInt() leaves the newline character (\n) behind
+ String nextLineText2 = sc2.nextLine();
+ assertEquals("", nextLineText2);
+ }
+
+}
\ No newline at end of file
diff --git a/core-java-modules/core-java-nio-2/README.md b/core-java-modules/core-java-nio-2/README.md
index 308356cf8b..527600779a 100644
--- a/core-java-modules/core-java-nio-2/README.md
+++ b/core-java-modules/core-java-nio-2/README.md
@@ -14,5 +14,4 @@ This module contains articles about core Java non-blocking input and output (IO)
- [What Is the Difference Between NIO and NIO.2?](https://www.baeldung.com/java-nio-vs-nio-2)
- [Guide to ByteBuffer](https://www.baeldung.com/java-bytebuffer)
- [Find Files that Match Wildcard Strings in Java](https://www.baeldung.com/java-files-match-wildcard-strings)
-- [Get the Desktop Path in Java](https://www.baeldung.com/java-desktop-path)
- [[<-- Prev]](/core-java-modules/core-java-nio)
diff --git a/core-java-modules/core-java-streams-4/README.md b/core-java-modules/core-java-streams-4/README.md
index 4175fb1f70..c6717ec5fe 100644
--- a/core-java-modules/core-java-streams-4/README.md
+++ b/core-java-modules/core-java-streams-4/README.md
@@ -10,4 +10,3 @@
- [Understanding the Difference Between Stream.of() and IntStream.range()](https://www.baeldung.com/java-stream-of-and-intstream-range)
- [Check if Object Is an Array in Java](https://www.baeldung.com/java-check-if-object-is-an-array)
- [Mapping an Array of Integers to Strings Using Java Streams](https://www.baeldung.com/java-stream-integer-array-to-strings)
-- [Difference Between parallelStream() and stream().parallel() in Java](https://www.baeldung.com/java-parallelstream-vs-stream-parallel)
diff --git a/core-java-modules/core-java-streams-5/README.md b/core-java-modules/core-java-streams-5/README.md
new file mode 100644
index 0000000000..4f367799f2
--- /dev/null
+++ b/core-java-modules/core-java-streams-5/README.md
@@ -0,0 +1 @@
+- [Difference Between parallelStream() and stream().parallel() in Java](https://www.baeldung.com/java-parallelstream-vs-stream-parallel)
diff --git a/core-java-modules/core-java-streams-5/pom.xml b/core-java-modules/core-java-streams-5/pom.xml
new file mode 100644
index 0000000000..d1f8af6461
--- /dev/null
+++ b/core-java-modules/core-java-streams-5/pom.xml
@@ -0,0 +1,72 @@
+
+
+ 4.0.0
+ core-java-streams-5
+ core-java-streams-5
+ jar
+
+
+ com.baeldung.core-java-modules
+ core-java-modules
+ 0.0.1-SNAPSHOT
+
+
+
+
+ log4j
+ log4j
+ ${log4j.version}
+
+
+ org.junit
+ junit-bom
+ ${junit-jupiter.version}
+ pom
+ import
+
+
+ org.assertj
+ assertj-core
+ 3.23.1
+ test
+
+
+ org.apache.commons
+ commons-lang3
+ 3.12.0
+ test
+
+
+
+
+ core-java-streams-4
+
+
+ ../core-java-streams-4/src/main
+ true
+
+
+
+
+ org.apache.maven.plugins
+ maven-compiler-plugin
+ ${maven-compiler-plugin.version}
+
+ ${maven.compiler.source}
+ ${maven.compiler.target}
+ -parameters
+
+
+
+
+
+
+
+ 3.1
+ 12
+ 12
+
+
+
\ No newline at end of file
diff --git a/core-java-modules/core-java-streams-4/src/main/java/com/baeldung/streams/parallelstream/Book.java b/core-java-modules/core-java-streams-5/src/main/java/com/baeldung/streams/parallelstream/Book.java
similarity index 99%
rename from core-java-modules/core-java-streams-4/src/main/java/com/baeldung/streams/parallelstream/Book.java
rename to core-java-modules/core-java-streams-5/src/main/java/com/baeldung/streams/parallelstream/Book.java
index 165df55166..d52a31aac9 100644
--- a/core-java-modules/core-java-streams-4/src/main/java/com/baeldung/streams/parallelstream/Book.java
+++ b/core-java-modules/core-java-streams-5/src/main/java/com/baeldung/streams/parallelstream/Book.java
@@ -34,4 +34,4 @@ public class Book {
public void setYearPublished(int yearPublished) {
this.yearPublished = yearPublished;
}
-}
+}
\ No newline at end of file
diff --git a/core-java-modules/core-java-streams-4/src/main/java/com/baeldung/streams/parallelstream/BookSpliterator.java b/core-java-modules/core-java-streams-5/src/main/java/com/baeldung/streams/parallelstream/BookSpliterator.java
similarity index 99%
rename from core-java-modules/core-java-streams-4/src/main/java/com/baeldung/streams/parallelstream/BookSpliterator.java
rename to core-java-modules/core-java-streams-5/src/main/java/com/baeldung/streams/parallelstream/BookSpliterator.java
index 14e87e0b07..7460e1372b 100644
--- a/core-java-modules/core-java-streams-4/src/main/java/com/baeldung/streams/parallelstream/BookSpliterator.java
+++ b/core-java-modules/core-java-streams-5/src/main/java/com/baeldung/streams/parallelstream/BookSpliterator.java
@@ -37,4 +37,4 @@ public class BookSpliterator implements Spliterator {
public int characteristics() {
return CONCURRENT;
}
-}
+}
\ No newline at end of file
diff --git a/core-java-modules/core-java-streams-4/src/main/java/com/baeldung/streams/parallelstream/MyBookContainer.java b/core-java-modules/core-java-streams-5/src/main/java/com/baeldung/streams/parallelstream/MyBookContainer.java
similarity index 99%
rename from core-java-modules/core-java-streams-4/src/main/java/com/baeldung/streams/parallelstream/MyBookContainer.java
rename to core-java-modules/core-java-streams-5/src/main/java/com/baeldung/streams/parallelstream/MyBookContainer.java
index dc4b0e2623..d7e3adc5f1 100644
--- a/core-java-modules/core-java-streams-4/src/main/java/com/baeldung/streams/parallelstream/MyBookContainer.java
+++ b/core-java-modules/core-java-streams-5/src/main/java/com/baeldung/streams/parallelstream/MyBookContainer.java
@@ -90,4 +90,4 @@ public class MyBookContainer implements Collection {
public void clear() {
}
-}
+}
\ No newline at end of file
diff --git a/core-java-modules/core-java-streams-4/src/main/java/com/baeldung/streams/parallelstream/ParallelStreamApplication.java b/core-java-modules/core-java-streams-5/src/main/java/com/baeldung/streams/parallelstream/ParallelStreamApplication.java
similarity index 99%
rename from core-java-modules/core-java-streams-4/src/main/java/com/baeldung/streams/parallelstream/ParallelStreamApplication.java
rename to core-java-modules/core-java-streams-5/src/main/java/com/baeldung/streams/parallelstream/ParallelStreamApplication.java
index 9cdaf58bfb..4297bdd3ed 100644
--- a/core-java-modules/core-java-streams-4/src/main/java/com/baeldung/streams/parallelstream/ParallelStreamApplication.java
+++ b/core-java-modules/core-java-streams-5/src/main/java/com/baeldung/streams/parallelstream/ParallelStreamApplication.java
@@ -38,4 +38,4 @@ public class ParallelStreamApplication {
});
return countOfBooks.get();
}
-}
+}
\ No newline at end of file
diff --git a/core-java-modules/core-java-streams-4/src/test/java/parallelstream/ParallelStreamUnitTest.java b/core-java-modules/core-java-streams-5/src/test/java/com/baeldung/parallelstream/ParallelStreamUnitTest.java
similarity index 97%
rename from core-java-modules/core-java-streams-4/src/test/java/parallelstream/ParallelStreamUnitTest.java
rename to core-java-modules/core-java-streams-5/src/test/java/com/baeldung/parallelstream/ParallelStreamUnitTest.java
index 5542a21020..af8172a10d 100644
--- a/core-java-modules/core-java-streams-4/src/test/java/parallelstream/ParallelStreamUnitTest.java
+++ b/core-java-modules/core-java-streams-5/src/test/java/com/baeldung/parallelstream/ParallelStreamUnitTest.java
@@ -1,6 +1,5 @@
-package parallelstream;
+package com.baeldung.parallelstream;
-import java.util.ArrayList;
import java.util.List;
import org.junit.Assert;
diff --git a/java-jdi/pom.xml b/java-jdi/pom.xml
index b4c11c1bfe..dded13896f 100644
--- a/java-jdi/pom.xml
+++ b/java-jdi/pom.xml
@@ -15,13 +15,7 @@
-
- com.sun
- tools
- ${tools.version}
- system
- ${java.home}/../lib/tools.jar
-
+
@@ -32,10 +26,25 @@
true
+
+
+ org.apache.maven.plugins
+ maven-compiler-plugin
+
+ ${maven.compiler.source.version}
+ ${maven.compiler.target.version}
+
+ --add-exports=jdk.jdi/com.sun.jdi=ALL-UNNAMED
+
+
+
+
+
- 1.8
+ 17
+ 17
\ No newline at end of file
diff --git a/libraries-ai/README.md b/libraries-ai/README.md
new file mode 100644
index 0000000000..8b13789179
--- /dev/null
+++ b/libraries-ai/README.md
@@ -0,0 +1 @@
+
diff --git a/libraries-ai/pom.xml b/libraries-ai/pom.xml
new file mode 100644
index 0000000000..2c1490440f
--- /dev/null
+++ b/libraries-ai/pom.xml
@@ -0,0 +1,33 @@
+
+
+ 4.0.0
+ libraries-ai
+ libraries-ai
+
+
+ com.baeldung
+ parent-modules
+ 1.0.0-SNAPSHOT
+
+
+
+
+ edu.stanford.nlp
+ stanford-corenlp
+ ${stanford-corenlp.version}
+
+
+ org.apache.opennlp
+ opennlp-tools
+ ${opennlp-tools.version}
+
+
+
+
+ 4.5.3
+ 2.1.1
+
+
+
\ No newline at end of file
diff --git a/libraries-ai/src/test/java/com/baeldung/nlp/CoreNLPTokenizerUnitTest.java b/libraries-ai/src/test/java/com/baeldung/nlp/CoreNLPTokenizerUnitTest.java
new file mode 100644
index 0000000000..11c5cd0be8
--- /dev/null
+++ b/libraries-ai/src/test/java/com/baeldung/nlp/CoreNLPTokenizerUnitTest.java
@@ -0,0 +1,41 @@
+package com.baeldung.nlp;
+
+import edu.stanford.nlp.ling.CoreAnnotations;
+import edu.stanford.nlp.ling.CoreLabel;
+import edu.stanford.nlp.pipeline.Annotation;
+import edu.stanford.nlp.pipeline.StanfordCoreNLP;
+import edu.stanford.nlp.util.CoreMap;
+import org.junit.Test;
+
+import java.util.List;
+import java.util.Properties;
+
+import static org.junit.Assert.assertEquals;
+
+public class CoreNLPTokenizerUnitTest {
+ @Test
+ public void givenSampleText_whenTokenize_thenExpectedTokensReturned() {
+
+ Properties props = new Properties();
+ props.setProperty("annotators", "tokenize");
+
+ StanfordCoreNLP pipeline = new StanfordCoreNLP(props);
+ String text = "The german shepard display an act of kindness";
+
+ Annotation document = new Annotation(text);
+ pipeline.annotate(document);
+
+ List sentences = document.get(CoreAnnotations.SentencesAnnotation.class);
+ StringBuilder tokens = new StringBuilder();
+
+ for (CoreMap sentence : sentences) {
+ for (CoreLabel token : sentence.get(CoreAnnotations.TokensAnnotation.class)) {
+ String word = token.get(CoreAnnotations.TextAnnotation.class);
+ tokens.append(word)
+ .append(" ");
+ }
+ }
+ assertEquals("The german shepard display an act of kindness", tokens.toString()
+ .trim());
+ }
+}
diff --git a/libraries-ai/src/test/java/com/baeldung/nlp/OpenNLPLanguageDetector.java b/libraries-ai/src/test/java/com/baeldung/nlp/OpenNLPLanguageDetector.java
new file mode 100644
index 0000000000..00792b4875
--- /dev/null
+++ b/libraries-ai/src/test/java/com/baeldung/nlp/OpenNLPLanguageDetector.java
@@ -0,0 +1,33 @@
+package com.baeldung.nlp;
+
+import opennlp.tools.langdetect.Language;
+import opennlp.tools.langdetect.LanguageDetectorME;
+import opennlp.tools.langdetect.LanguageDetectorModel;
+import org.junit.jupiter.api.Test;
+
+import java.io.FileInputStream;
+import java.io.IOException;
+import java.io.InputStream;
+
+import static org.junit.jupiter.api.Assertions.assertEquals;
+
+class OpenNLPLanguageDetector {
+
+ @Test
+ public void givenTextInEnglish_whenDetectLanguage_thenReturnsEnglishLanguageCode() {
+
+ String text = "the dream my father told me";
+ LanguageDetectorModel model;
+
+ try (InputStream modelIn = new FileInputStream("langdetect-183.bin")) {
+ model = new LanguageDetectorModel(modelIn);
+ } catch (IOException e) {
+ return;
+ }
+
+ LanguageDetectorME detector = new LanguageDetectorME(model);
+ Language language = detector.predictLanguage(text);
+
+ assertEquals("eng", language.getLang());
+ }
+}
\ No newline at end of file
diff --git a/libraries-data-2/pom.xml b/libraries-data-2/pom.xml
index f673ebd470..655bad2e2b 100644
--- a/libraries-data-2/pom.xml
+++ b/libraries-data-2/pom.xml
@@ -134,6 +134,11 @@
${byte-buddy.version}
test
+
+ io.swagger.parser.v3
+ swagger-parser
+ ${swagger-parser.version}
+
@@ -171,6 +176,7 @@
1.1.0
3.0.0
2.8.4
+ 2.1.13
\ No newline at end of file
diff --git a/libraries-data-2/src/main/java/com/baeldung/swaggerparser/SwaggerParser.java b/libraries-data-2/src/main/java/com/baeldung/swaggerparser/SwaggerParser.java
new file mode 100644
index 0000000000..d1f04e680a
--- /dev/null
+++ b/libraries-data-2/src/main/java/com/baeldung/swaggerparser/SwaggerParser.java
@@ -0,0 +1,92 @@
+package com.baeldung.swaggerparser;
+
+import java.util.List;
+
+import io.swagger.parser.OpenAPIParser;
+import io.swagger.v3.oas.models.OpenAPI;
+import io.swagger.v3.oas.models.PathItem;
+import io.swagger.v3.oas.models.Paths;
+import io.swagger.v3.oas.models.info.Info;
+import io.swagger.v3.oas.models.responses.ApiResponse;
+import io.swagger.v3.oas.models.responses.ApiResponses;
+import io.swagger.v3.oas.models.servers.Server;
+import io.swagger.v3.parser.core.models.SwaggerParseResult;
+
+public class SwaggerParser {
+
+ private static String OPENAPI_SPECIFICATION_STRING = "{\"openapi\":\"3.0.0\",\"info\":{\"title\":\"User APIs\",\"version\":\"1.0\"},\"servers\":[{\"url\":\"https://jsonplaceholder.typicode.com\",\"description\":\"Json Place Holder Service\"}],\"paths\":{\"/users/{id}\":{\"parameters\":[{\"schema\":{\"type\":\"integer\"},\"name\":\"id\",\"in\":\"path\",\"required\":true}],\"get\":{\"summary\":\"Fetch user by ID\",\"tags\":[\"User\"],\"responses\":{\"200\":{\"description\":\"OK\",\"content\":{\"application/json\":{\"schema\":{\"type\":\"object\",\"properties\":{\"id\":{\"type\":\"integer\"},\"name\":{\"type\":\"string\"}}}}}}},\"operationId\":\"get-users-user_id\",\"description\":\"Retrieve a specific user by ID\"}}}}";
+
+ public static void main(String[] args) {
+ parseYAMLFile();
+ parseJSONFile();
+ parseString();
+ }
+
+ private static void parseString() {
+ SwaggerParseResult result = new OpenAPIParser().readContents(OPENAPI_SPECIFICATION_STRING, null, null);
+
+ OpenAPI openAPI = result.getOpenAPI();
+
+ if (openAPI != null) {
+ printData(openAPI);
+ }
+ }
+
+ private static void parseJSONFile() {
+ SwaggerParseResult result = new OpenAPIParser().readLocation("sample.yml", null, null);
+
+ OpenAPI openAPI = result.getOpenAPI();
+
+ if (openAPI != null) {
+ printData(openAPI);
+ }
+ }
+
+ private static void parseYAMLFile() {
+ SwaggerParseResult result = new OpenAPIParser().readLocation("sample.json", null, null);
+
+ OpenAPI openAPI = result.getOpenAPI();
+
+ if (openAPI != null) {
+ printData(openAPI);
+ }
+ }
+
+ private static void printData(OpenAPI openAPI) {
+ System.out.println(openAPI.getSpecVersion());
+
+ Info info = openAPI.getInfo();
+ System.out.println(info.getTitle());
+ System.out.println(info.getVersion());
+
+ List servers = openAPI.getServers();
+ for (Server server : servers) {
+ System.out.println(server.getUrl());
+ System.out.println(server.getDescription());
+ }
+
+ Paths paths = openAPI.getPaths();
+ paths.entrySet()
+ .forEach(pathEntry -> {
+ System.out.println(pathEntry.getKey());
+
+ PathItem path = pathEntry.getValue();
+ System.out.println(path.getGet()
+ .getSummary());
+ System.out.println(path.getGet()
+ .getDescription());
+ System.out.println(path.getGet()
+ .getOperationId());
+
+ ApiResponses responses = path.getGet()
+ .getResponses();
+ responses.entrySet()
+ .forEach(responseEntry -> {
+ System.out.println(responseEntry.getKey());
+
+ ApiResponse response = responseEntry.getValue();
+ System.out.println(response.getDescription());
+ });
+ });
+ }
+}
diff --git a/libraries-data-2/src/main/resources/sample.json b/libraries-data-2/src/main/resources/sample.json
new file mode 100644
index 0000000000..8b59bbb42a
--- /dev/null
+++ b/libraries-data-2/src/main/resources/sample.json
@@ -0,0 +1,55 @@
+{
+ "openapi": "3.0.0",
+ "info": {
+ "title": "User APIs",
+ "version": "1.0"
+ },
+ "servers": [
+ {
+ "url": "https://jsonplaceholder.typicode.com",
+ "description": "Json Place Holder Service"
+ }
+ ],
+ "paths": {
+ "/users/{id}": {
+ "parameters": [
+ {
+ "schema": {
+ "type": "integer"
+ },
+ "name": "id",
+ "in": "path",
+ "required": true
+ }
+ ],
+ "get": {
+ "summary": "Fetch user by ID",
+ "tags": [
+ "User"
+ ],
+ "responses": {
+ "200": {
+ "description": "OK",
+ "content": {
+ "application/json": {
+ "schema": {
+ "type": "object",
+ "properties": {
+ "id": {
+ "type": "integer"
+ },
+ "name": {
+ "type": "string"
+ }
+ }
+ }
+ }
+ }
+ }
+ },
+ "operationId": "get-users-user_id",
+ "description": "Retrieve a specific user by ID"
+ }
+ }
+ }
+}
\ No newline at end of file
diff --git a/libraries-data-2/src/main/resources/sample.yml b/libraries-data-2/src/main/resources/sample.yml
new file mode 100644
index 0000000000..ddfa064393
--- /dev/null
+++ b/libraries-data-2/src/main/resources/sample.yml
@@ -0,0 +1,33 @@
+openapi: 3.0.0
+info:
+ title: User APIs
+ version: '1.0'
+servers:
+ - url: https://jsonplaceholder.typicode.com
+ description: Json Place Holder Service
+paths:
+ /users/{id}:
+ parameters:
+ - schema:
+ type: integer
+ name: id
+ in: path
+ required: true
+ get:
+ summary: Fetch user by ID
+ tags:
+ - User
+ responses:
+ '200':
+ description: OK
+ content:
+ application/json:
+ schema:
+ type: object
+ properties:
+ id:
+ type: integer
+ name:
+ type: string
+ operationId: get-users-user_id
+ description: Retrieve a specific user by ID
\ No newline at end of file
diff --git a/libraries-data-2/src/test/java/com/baeldung/swaggerparser/SwaggerParserUnitTest.java b/libraries-data-2/src/test/java/com/baeldung/swaggerparser/SwaggerParserUnitTest.java
new file mode 100644
index 0000000000..615bd917cb
--- /dev/null
+++ b/libraries-data-2/src/test/java/com/baeldung/swaggerparser/SwaggerParserUnitTest.java
@@ -0,0 +1,65 @@
+package com.baeldung.swaggerparser;
+
+import static org.junit.jupiter.api.Assertions.assertFalse;
+import static org.junit.jupiter.api.Assertions.assertNotNull;
+import static org.junit.jupiter.api.Assertions.assertNull;
+import static org.junit.jupiter.api.Assertions.assertTrue;
+
+import java.util.List;
+
+import org.junit.jupiter.api.Test;
+
+import io.swagger.parser.OpenAPIParser;
+import io.swagger.v3.oas.models.OpenAPI;
+import io.swagger.v3.parser.core.models.SwaggerParseResult;
+
+public class SwaggerParserUnitTest {
+
+ private static String OPENAPI_SPECIFICATION_STRING = "{\"openapi\":\"3.0.0\",\"info\":{\"title\":\"User APIs\",\"version\":\"1.0\"},\"servers\":[{\"url\":\"https://jsonplaceholder.typicode.com\",\"description\":\"Json Place Holder Service\"}],\"paths\":{\"/users/{id}\":{\"parameters\":[{\"schema\":{\"type\":\"integer\"},\"name\":\"id\",\"in\":\"path\",\"required\":true}],\"get\":{\"summary\":\"Fetch user by ID\",\"tags\":[\"User\"],\"responses\":{\"200\":{\"description\":\"OK\",\"content\":{\"application/json\":{\"schema\":{\"type\":\"object\",\"properties\":{\"id\":{\"type\":\"integer\"},\"name\":{\"type\":\"string\"}}}}}}},\"operationId\":\"get-users-user_id\",\"description\":\"Retrieve a specific user by ID\"}}}}";
+
+ @Test
+ public void givenAValidOpenAPIYAMLFile_whenParsing_thenCheckIfParsed() {
+ SwaggerParseResult result = new OpenAPIParser().readLocation("valid-openapi-sample.yml", null, null);
+
+ OpenAPI openAPI = result.getOpenAPI();
+
+ assertNotNull(openAPI);
+ }
+
+ @Test
+ public void givenAValidOpenAPIYAMLFile_whenParsing_thenCheckIfNotErrors() {
+ SwaggerParseResult result = new OpenAPIParser().readLocation("valid-openapi-sample.yml", null, null);
+
+ List messages = result.getMessages();
+
+ assertTrue(messages.isEmpty());
+ }
+
+ @Test
+ public void givenAnInvalidOpenAPIYAMLFile_whenParsing_thenCheckIfErrors() {
+ SwaggerParseResult result = new OpenAPIParser().readLocation("invalid-openapi-sample.yml", null, null);
+
+ List messages = result.getMessages();
+
+ assertFalse(messages.isEmpty());
+ }
+
+ @Test
+ public void givenAValidOpenAPISpecificationString_whenParsing_thenCheckIfParsed() {
+ SwaggerParseResult result = new OpenAPIParser().readContents(OPENAPI_SPECIFICATION_STRING, null, null);
+
+ OpenAPI openAPI = result.getOpenAPI();
+
+ assertNotNull(openAPI);
+ }
+
+ @Test
+ public void givenAValidOpenAPISpecificationString_whenParsing_thenCheckIfNotErrors() {
+ SwaggerParseResult result = new OpenAPIParser().readLocation(OPENAPI_SPECIFICATION_STRING, null, null);
+
+ List messages = result.getMessages();
+
+ assertNull(messages);
+ }
+
+}
diff --git a/libraries-data-2/src/test/resources/invalid-openapi-sample.yml b/libraries-data-2/src/test/resources/invalid-openapi-sample.yml
new file mode 100644
index 0000000000..eaac64c9a9
--- /dev/null
+++ b/libraries-data-2/src/test/resources/invalid-openapi-sample.yml
@@ -0,0 +1,32 @@
+openapi: 3.0.0
+info:
+ title: User APIs
+ version: '1.0'
+servers:
+ - description: Json Place Holder Service
+paths:
+ /users/{id}:
+ parameters:
+ - schema:
+ type: integer
+ name: id
+ in: path
+ required: true
+ get:
+ summary: Fetch user by ID
+ tags:
+ - User
+ responses:
+ '200':
+ description: OK
+ content:
+ application/json:
+ schema:
+ type: object
+ properties:
+ id:
+ type: integer
+ name:
+ type: string
+ operationId: get-users-user_id
+ description: Retrieve a specific user by ID
\ No newline at end of file
diff --git a/libraries-data-2/src/test/resources/valid-openapi-sample.yml b/libraries-data-2/src/test/resources/valid-openapi-sample.yml
new file mode 100644
index 0000000000..ddfa064393
--- /dev/null
+++ b/libraries-data-2/src/test/resources/valid-openapi-sample.yml
@@ -0,0 +1,33 @@
+openapi: 3.0.0
+info:
+ title: User APIs
+ version: '1.0'
+servers:
+ - url: https://jsonplaceholder.typicode.com
+ description: Json Place Holder Service
+paths:
+ /users/{id}:
+ parameters:
+ - schema:
+ type: integer
+ name: id
+ in: path
+ required: true
+ get:
+ summary: Fetch user by ID
+ tags:
+ - User
+ responses:
+ '200':
+ description: OK
+ content:
+ application/json:
+ schema:
+ type: object
+ properties:
+ id:
+ type: integer
+ name:
+ type: string
+ operationId: get-users-user_id
+ description: Retrieve a specific user by ID
\ No newline at end of file
diff --git a/pom.xml b/pom.xml
index 428aa1d268..bef7603cff 100644
--- a/pom.xml
+++ b/pom.xml
@@ -354,8 +354,6 @@
- java-jdi
-
jetbrains
language-interop
@@ -547,8 +545,6 @@
- java-jdi
-
language-interop
@@ -800,7 +796,6 @@
custom-pmd
- spring-core-6
data-structures
ddd-contexts
jackson-modules
@@ -868,7 +863,7 @@
hystrix
jackson-simple
java-blockchain
-
+ java-jdi
java-rmi
java-spi
javax-sound
@@ -923,7 +918,6 @@
spring-activiti
spring-core-2
spring-core-3
- spring-core-5
spring-di-3
spring-cucumber
@@ -1053,7 +1047,6 @@
spring-aop
spring-aop-2
custom-pmd
- spring-core-6
data-structures
ddd-contexts
jackson-modules
@@ -1123,7 +1116,7 @@
hystrix
jackson-simple
java-blockchain
-
+ java-jdi
java-rmi
java-spi
javax-sound
@@ -1152,6 +1145,7 @@
libraries-http
libraries-http-2
libraries-io
+ libraries-ai
libraries-primitive
libraries-rpc
libraries-server
@@ -1178,7 +1172,6 @@
spring-activiti
spring-core-2
spring-core-3
- spring-core-5
spring-di-3
spring-cucumber
diff --git a/spring-core-2/.gitignore b/spring-core-2/.gitignore
deleted file mode 100644
index 83c05e60c8..0000000000
--- a/spring-core-2/.gitignore
+++ /dev/null
@@ -1,13 +0,0 @@
-*.class
-
-#folders#
-/target
-/neoDb*
-/data
-/src/main/webapp/WEB-INF/classes
-*/META-INF/*
-
-# Packaged files #
-*.jar
-*.war
-*.ear
\ No newline at end of file
diff --git a/spring-core-2/README.md b/spring-core-2/README.md
index 18e4e32d1f..80ae54b2a4 100644
--- a/spring-core-2/README.md
+++ b/spring-core-2/README.md
@@ -6,4 +6,9 @@ This module contains articles about core Spring functionality
- [Quick Guide to Spring Bean Scopes](http://www.baeldung.com/spring-bean-scopes)
- [Spring Events](https://www.baeldung.com/spring-events)
+- [Solving Spring’s “not eligible for auto-proxying” Warning](https://www.baeldung.com/spring-not-eligible-for-auto-proxying)
+- [Finding the Spring Version](https://www.baeldung.com/spring-find-version)
+- [How Does the Spring Singleton Bean Serve Concurrent Requests?](https://www.baeldung.com/spring-singleton-concurrent-requests)
+- [Reinitialize Singleton Bean in Spring Context](https://www.baeldung.com/spring-reinitialize-singleton-bean)
+- [Getting the Current ApplicationContext in Spring](https://www.baeldung.com/spring-get-current-applicationcontext)
- More articles: [[<-- prev]](/spring-core)[[next -->]](/spring-core-3)
diff --git a/spring-core-2/pom.xml b/spring-core-2/pom.xml
index d05090fa6b..bab47cb70c 100644
--- a/spring-core-2/pom.xml
+++ b/spring-core-2/pom.xml
@@ -15,29 +15,15 @@
../parent-boot-2
-
-
-
- org.springframework
- spring-framework-bom
- ${org.springframework.version}
- pom
- import
-
-
- org.springframework
- spring-core
- ${org.springframework.version}
-
-
- org.springframework.boot
- spring-boot-starter-thymeleaf
- ${org.springframework.version}
-
-
-
-
+
+ org.springframework.boot
+ spring-boot-starter
+
+
+ org.springframework.boot
+ spring-boot-starter-web
+
com.fasterxml.jackson.core
jackson-databind
@@ -129,6 +115,11 @@
spring-test
test
+
+ org.springframework.boot
+ spring-boot-starter-test
+ test
+
net.javacrumbs.shedlock
@@ -140,6 +131,10 @@
shedlock-provider-jdbc-template
${shedlock.version}
+
+ org.projectlombok
+ lombok
+
@@ -164,8 +159,6 @@
com.baeldung.sample.App
-
- 5.3.0
1.3.2
5.2.5.Final
diff --git a/spring-core-6/src/main/java/com/baeldung/applicationcontext/ApplicationContextProvider.java b/spring-core-2/src/main/java/com/baeldung/applicationcontext/ApplicationContextProvider.java
similarity index 100%
rename from spring-core-6/src/main/java/com/baeldung/applicationcontext/ApplicationContextProvider.java
rename to spring-core-2/src/main/java/com/baeldung/applicationcontext/ApplicationContextProvider.java
diff --git a/spring-core-6/src/main/java/com/baeldung/applicationcontext/ItemService.java b/spring-core-2/src/main/java/com/baeldung/applicationcontext/ItemService.java
similarity index 100%
rename from spring-core-6/src/main/java/com/baeldung/applicationcontext/ItemService.java
rename to spring-core-2/src/main/java/com/baeldung/applicationcontext/ItemService.java
diff --git a/spring-core-6/src/main/java/com/baeldung/applicationcontext/MyBean.java b/spring-core-2/src/main/java/com/baeldung/applicationcontext/MyBean.java
similarity index 100%
rename from spring-core-6/src/main/java/com/baeldung/applicationcontext/MyBean.java
rename to spring-core-2/src/main/java/com/baeldung/applicationcontext/MyBean.java
diff --git a/spring-core-5/src/main/java/com/baeldung/component/autoproxying/DataCache.java b/spring-core-2/src/main/java/com/baeldung/component/autoproxying/DataCache.java
similarity index 100%
rename from spring-core-5/src/main/java/com/baeldung/component/autoproxying/DataCache.java
rename to spring-core-2/src/main/java/com/baeldung/component/autoproxying/DataCache.java
diff --git a/spring-core-5/src/main/java/com/baeldung/component/autoproxying/EligibleForAutoProxyRandomIntProcessor.java b/spring-core-2/src/main/java/com/baeldung/component/autoproxying/EligibleForAutoProxyRandomIntProcessor.java
similarity index 100%
rename from spring-core-5/src/main/java/com/baeldung/component/autoproxying/EligibleForAutoProxyRandomIntProcessor.java
rename to spring-core-2/src/main/java/com/baeldung/component/autoproxying/EligibleForAutoProxyRandomIntProcessor.java
diff --git a/spring-core-5/src/main/java/com/baeldung/component/autoproxying/NotEligibleForAutoProxyRandomIntProcessor.java b/spring-core-2/src/main/java/com/baeldung/component/autoproxying/NotEligibleForAutoProxyRandomIntProcessor.java
similarity index 100%
rename from spring-core-5/src/main/java/com/baeldung/component/autoproxying/NotEligibleForAutoProxyRandomIntProcessor.java
rename to spring-core-2/src/main/java/com/baeldung/component/autoproxying/NotEligibleForAutoProxyRandomIntProcessor.java
diff --git a/spring-core-5/src/main/java/com/baeldung/component/autoproxying/RandomInt.java b/spring-core-2/src/main/java/com/baeldung/component/autoproxying/RandomInt.java
similarity index 100%
rename from spring-core-5/src/main/java/com/baeldung/component/autoproxying/RandomInt.java
rename to spring-core-2/src/main/java/com/baeldung/component/autoproxying/RandomInt.java
diff --git a/spring-core-5/src/main/java/com/baeldung/component/autoproxying/RandomIntGenerator.java b/spring-core-2/src/main/java/com/baeldung/component/autoproxying/RandomIntGenerator.java
similarity index 100%
rename from spring-core-5/src/main/java/com/baeldung/component/autoproxying/RandomIntGenerator.java
rename to spring-core-2/src/main/java/com/baeldung/component/autoproxying/RandomIntGenerator.java
diff --git a/spring-core-5/src/main/java/com/baeldung/concurrentrequest/ConcurrentRequestApplication.java b/spring-core-2/src/main/java/com/baeldung/concurrentrequest/ConcurrentRequestApplication.java
similarity index 100%
rename from spring-core-5/src/main/java/com/baeldung/concurrentrequest/ConcurrentRequestApplication.java
rename to spring-core-2/src/main/java/com/baeldung/concurrentrequest/ConcurrentRequestApplication.java
diff --git a/spring-core-5/src/main/java/com/baeldung/concurrentrequest/Product.java b/spring-core-2/src/main/java/com/baeldung/concurrentrequest/Product.java
similarity index 100%
rename from spring-core-5/src/main/java/com/baeldung/concurrentrequest/Product.java
rename to spring-core-2/src/main/java/com/baeldung/concurrentrequest/Product.java
diff --git a/spring-core-5/src/main/java/com/baeldung/concurrentrequest/ProductController.java b/spring-core-2/src/main/java/com/baeldung/concurrentrequest/ProductController.java
similarity index 100%
rename from spring-core-5/src/main/java/com/baeldung/concurrentrequest/ProductController.java
rename to spring-core-2/src/main/java/com/baeldung/concurrentrequest/ProductController.java
diff --git a/spring-core-5/src/main/java/com/baeldung/concurrentrequest/ProductService.java b/spring-core-2/src/main/java/com/baeldung/concurrentrequest/ProductService.java
similarity index 100%
rename from spring-core-5/src/main/java/com/baeldung/concurrentrequest/ProductService.java
rename to spring-core-2/src/main/java/com/baeldung/concurrentrequest/ProductService.java
diff --git a/spring-core-5/src/main/java/com/baeldung/concurrentrequest/Stock.java b/spring-core-2/src/main/java/com/baeldung/concurrentrequest/Stock.java
similarity index 100%
rename from spring-core-5/src/main/java/com/baeldung/concurrentrequest/Stock.java
rename to spring-core-2/src/main/java/com/baeldung/concurrentrequest/Stock.java
diff --git a/spring-core-6/src/main/java/com/baeldung/reinitializebean/ReinitializeBeanApp.java b/spring-core-2/src/main/java/com/baeldung/reinitializebean/ReinitializeBeanApp.java
similarity index 100%
rename from spring-core-6/src/main/java/com/baeldung/reinitializebean/ReinitializeBeanApp.java
rename to spring-core-2/src/main/java/com/baeldung/reinitializebean/ReinitializeBeanApp.java
diff --git a/spring-core-6/src/main/java/com/baeldung/reinitializebean/cache/ConfigManager.java b/spring-core-2/src/main/java/com/baeldung/reinitializebean/cache/ConfigManager.java
similarity index 100%
rename from spring-core-6/src/main/java/com/baeldung/reinitializebean/cache/ConfigManager.java
rename to spring-core-2/src/main/java/com/baeldung/reinitializebean/cache/ConfigManager.java
diff --git a/spring-core-6/src/main/java/com/baeldung/reinitializebean/controller/ConfigController.java b/spring-core-2/src/main/java/com/baeldung/reinitializebean/controller/ConfigController.java
similarity index 100%
rename from spring-core-6/src/main/java/com/baeldung/reinitializebean/controller/ConfigController.java
rename to spring-core-2/src/main/java/com/baeldung/reinitializebean/controller/ConfigController.java
diff --git a/spring-core-5/src/main/java/com/baeldung/version/VersionObtainer.java b/spring-core-2/src/main/java/com/baeldung/version/VersionObtainer.java
similarity index 96%
rename from spring-core-5/src/main/java/com/baeldung/version/VersionObtainer.java
rename to spring-core-2/src/main/java/com/baeldung/version/VersionObtainer.java
index 392cc44a72..e0e28c6181 100644
--- a/spring-core-5/src/main/java/com/baeldung/version/VersionObtainer.java
+++ b/spring-core-2/src/main/java/com/baeldung/version/VersionObtainer.java
@@ -1,20 +1,20 @@
-package com.baeldung.version;
-
-import org.springframework.boot.system.JavaVersion;
-import org.springframework.boot.system.SystemProperties;
-import org.springframework.core.SpringVersion;
-
-public class VersionObtainer {
-
- public String getSpringVersion() {
- return SpringVersion.getVersion();
- }
-
- public String getJavaVersion() {
- return JavaVersion.getJavaVersion().toString();
- }
-
- public String getJdkVersion() {
- return SystemProperties.get("java.version");
- }
-}
+package com.baeldung.version;
+
+import org.springframework.boot.system.JavaVersion;
+import org.springframework.boot.system.SystemProperties;
+import org.springframework.core.SpringVersion;
+
+public class VersionObtainer {
+
+ public String getSpringVersion() {
+ return SpringVersion.getVersion();
+ }
+
+ public String getJavaVersion() {
+ return JavaVersion.getJavaVersion().toString();
+ }
+
+ public String getJdkVersion() {
+ return SystemProperties.get("java.version");
+ }
+}
diff --git a/spring-core-2/src/main/resources/application.properties b/spring-core-2/src/main/resources/application.properties
index e69de29bb2..97916eec19 100644
--- a/spring-core-2/src/main/resources/application.properties
+++ b/spring-core-2/src/main/resources/application.properties
@@ -0,0 +1 @@
+config.file.path=./spring-core-2/src/main/resources/config.properties
\ No newline at end of file
diff --git a/spring-core-6/src/main/resources/config.properties b/spring-core-2/src/main/resources/config.properties
similarity index 100%
rename from spring-core-6/src/main/resources/config.properties
rename to spring-core-2/src/main/resources/config.properties
diff --git a/spring-core-6/src/test/java/com/baeldung/applicationcontext/ApplicationContextProviderUnitTest.java b/spring-core-2/src/test/java/com/baeldung/applicationcontext/ApplicationContextProviderUnitTest.java
similarity index 100%
rename from spring-core-6/src/test/java/com/baeldung/applicationcontext/ApplicationContextProviderUnitTest.java
rename to spring-core-2/src/test/java/com/baeldung/applicationcontext/ApplicationContextProviderUnitTest.java
diff --git a/spring-core-6/src/test/java/com/baeldung/applicationcontext/MyBeanUnitTest.java b/spring-core-2/src/test/java/com/baeldung/applicationcontext/MyBeanUnitTest.java
similarity index 100%
rename from spring-core-6/src/test/java/com/baeldung/applicationcontext/MyBeanUnitTest.java
rename to spring-core-2/src/test/java/com/baeldung/applicationcontext/MyBeanUnitTest.java
diff --git a/spring-core-6/src/test/java/com/baeldung/applicationcontext/TestContextConfig.java b/spring-core-2/src/test/java/com/baeldung/applicationcontext/TestContextConfig.java
similarity index 100%
rename from spring-core-6/src/test/java/com/baeldung/applicationcontext/TestContextConfig.java
rename to spring-core-2/src/test/java/com/baeldung/applicationcontext/TestContextConfig.java
diff --git a/spring-core-5/src/test/java/com/baeldung/component/autoproxying/EligibleForAutoProxyingIntegrationTest.java b/spring-core-2/src/test/java/com/baeldung/component/autoproxying/EligibleForAutoProxyingIntegrationTest.java
similarity index 100%
rename from spring-core-5/src/test/java/com/baeldung/component/autoproxying/EligibleForAutoProxyingIntegrationTest.java
rename to spring-core-2/src/test/java/com/baeldung/component/autoproxying/EligibleForAutoProxyingIntegrationTest.java
diff --git a/spring-core-5/src/test/java/com/baeldung/component/autoproxying/MemoryLogAppender.java b/spring-core-2/src/test/java/com/baeldung/component/autoproxying/MemoryLogAppender.java
similarity index 100%
rename from spring-core-5/src/test/java/com/baeldung/component/autoproxying/MemoryLogAppender.java
rename to spring-core-2/src/test/java/com/baeldung/component/autoproxying/MemoryLogAppender.java
diff --git a/spring-core-5/src/test/java/com/baeldung/component/autoproxying/NotEligibleForAutoProxyingIntegrationTest.java b/spring-core-2/src/test/java/com/baeldung/component/autoproxying/NotEligibleForAutoProxyingIntegrationTest.java
similarity index 100%
rename from spring-core-5/src/test/java/com/baeldung/component/autoproxying/NotEligibleForAutoProxyingIntegrationTest.java
rename to spring-core-2/src/test/java/com/baeldung/component/autoproxying/NotEligibleForAutoProxyingIntegrationTest.java
diff --git a/spring-core-5/src/test/java/com/baeldung/concurrentrequest/ConcurrentRequestManualTest.java b/spring-core-2/src/test/java/com/baeldung/concurrentrequest/ConcurrentRequestManualTest.java
similarity index 100%
rename from spring-core-5/src/test/java/com/baeldung/concurrentrequest/ConcurrentRequestManualTest.java
rename to spring-core-2/src/test/java/com/baeldung/concurrentrequest/ConcurrentRequestManualTest.java
diff --git a/spring-core-5/src/test/java/com/baeldung/version/VersionObtainerUnitTest.java b/spring-core-2/src/test/java/com/baeldung/version/VersionObtainerUnitTest.java
similarity index 96%
rename from spring-core-5/src/test/java/com/baeldung/version/VersionObtainerUnitTest.java
rename to spring-core-2/src/test/java/com/baeldung/version/VersionObtainerUnitTest.java
index 6d77cd1403..af074d5783 100644
--- a/spring-core-5/src/test/java/com/baeldung/version/VersionObtainerUnitTest.java
+++ b/spring-core-2/src/test/java/com/baeldung/version/VersionObtainerUnitTest.java
@@ -1,30 +1,30 @@
-package com.baeldung.version;
-
-import static org.assertj.core.api.Assertions.assertThat;
-
-import org.junit.Test;
-import org.springframework.boot.test.context.SpringBootTest;
-
-@SpringBootTest(classes = VersionObtainer.class)
-public class VersionObtainerUnitTest {
-
- public VersionObtainer version = new VersionObtainer();
-
- @Test
- public void testGetSpringVersion() {
- String res = version.getSpringVersion();
- assertThat(res).isNotEmpty();
- }
-
- @Test
- public void testGetJdkVersion() {
- String res = version.getJdkVersion();
- assertThat(res).isNotEmpty();
- }
-
- @Test
- public void testGetJavaVersion() {
- String res = version.getJavaVersion();
- assertThat(res).isNotEmpty();
- }
-}
+package com.baeldung.version;
+
+import static org.assertj.core.api.Assertions.assertThat;
+
+import org.junit.Test;
+import org.springframework.boot.test.context.SpringBootTest;
+
+@SpringBootTest(classes = VersionObtainer.class)
+public class VersionObtainerUnitTest {
+
+ public VersionObtainer version = new VersionObtainer();
+
+ @Test
+ public void testGetSpringVersion() {
+ String res = version.getSpringVersion();
+ assertThat(res).isNotEmpty();
+ }
+
+ @Test
+ public void testGetJdkVersion() {
+ String res = version.getJdkVersion();
+ assertThat(res).isNotEmpty();
+ }
+
+ @Test
+ public void testGetJavaVersion() {
+ String res = version.getJavaVersion();
+ assertThat(res).isNotEmpty();
+ }
+}
diff --git a/spring-core-3/README.md b/spring-core-3/README.md
index 394f6e1857..ed88561e10 100644
--- a/spring-core-3/README.md
+++ b/spring-core-3/README.md
@@ -10,4 +10,5 @@ This module contains articles about core Spring functionality
- [Design Patterns in the Spring Framework](https://www.baeldung.com/spring-framework-design-patterns)
- [Difference Between BeanFactory and ApplicationContext](https://www.baeldung.com/spring-beanfactory-vs-applicationcontext)
- [Custom Scope in Spring](http://www.baeldung.com/spring-custom-scope)
+- [The Spring ApplicationContext](https://www.baeldung.com/spring-application-context)
- More articles: [[<-- prev]](/spring-core-2) [[next -->]](/spring-core-4)
diff --git a/spring-core-4/src/main/java/com/baeldung/applicationcontext/AccountConfig.java b/spring-core-3/src/main/java/com/baeldung/applicationcontext/AccountConfig.java
similarity index 100%
rename from spring-core-4/src/main/java/com/baeldung/applicationcontext/AccountConfig.java
rename to spring-core-3/src/main/java/com/baeldung/applicationcontext/AccountConfig.java
diff --git a/spring-core-4/src/main/java/com/baeldung/applicationcontext/AccountRepository.java b/spring-core-3/src/main/java/com/baeldung/applicationcontext/AccountRepository.java
similarity index 100%
rename from spring-core-4/src/main/java/com/baeldung/applicationcontext/AccountRepository.java
rename to spring-core-3/src/main/java/com/baeldung/applicationcontext/AccountRepository.java
diff --git a/spring-core-4/src/main/java/com/baeldung/applicationcontext/AccountService.java b/spring-core-3/src/main/java/com/baeldung/applicationcontext/AccountService.java
similarity index 100%
rename from spring-core-4/src/main/java/com/baeldung/applicationcontext/AccountService.java
rename to spring-core-3/src/main/java/com/baeldung/applicationcontext/AccountService.java
diff --git a/spring-core-4/src/main/java/com/baeldung/applicationcontext/MyWebApplicationInitializer.java b/spring-core-3/src/main/java/com/baeldung/applicationcontext/MyWebApplicationInitializer.java
similarity index 100%
rename from spring-core-4/src/main/java/com/baeldung/applicationcontext/MyWebApplicationInitializer.java
rename to spring-core-3/src/main/java/com/baeldung/applicationcontext/MyWebApplicationInitializer.java
diff --git a/spring-core-4/src/main/java/com/baeldung/applicationcontext/MyXmlWebApplicationInitializer.java b/spring-core-3/src/main/java/com/baeldung/applicationcontext/MyXmlWebApplicationInitializer.java
similarity index 100%
rename from spring-core-4/src/main/java/com/baeldung/applicationcontext/MyXmlWebApplicationInitializer.java
rename to spring-core-3/src/main/java/com/baeldung/applicationcontext/MyXmlWebApplicationInitializer.java
diff --git a/spring-core-4/src/main/java/com/baeldung/applicationcontext/UserService.java b/spring-core-3/src/main/java/com/baeldung/applicationcontext/UserService.java
similarity index 100%
rename from spring-core-4/src/main/java/com/baeldung/applicationcontext/UserService.java
rename to spring-core-3/src/main/java/com/baeldung/applicationcontext/UserService.java
diff --git a/spring-core-4/src/test/java/com/baeldung/applicationcontext/ApplicationContextUnitTest.java b/spring-core-3/src/test/java/com/baeldung/applicationcontext/ApplicationContextUnitTest.java
similarity index 100%
rename from spring-core-4/src/test/java/com/baeldung/applicationcontext/ApplicationContextUnitTest.java
rename to spring-core-3/src/test/java/com/baeldung/applicationcontext/ApplicationContextUnitTest.java
diff --git a/spring-core-4/src/test/resources/applicationcontext/account-bean-config.xml b/spring-core-3/src/test/resources/applicationcontext/account-bean-config.xml
similarity index 100%
rename from spring-core-4/src/test/resources/applicationcontext/account-bean-config.xml
rename to spring-core-3/src/test/resources/applicationcontext/account-bean-config.xml
diff --git a/spring-core-4/src/test/resources/applicationcontext/user-bean-config.xml b/spring-core-3/src/test/resources/applicationcontext/user-bean-config.xml
similarity index 100%
rename from spring-core-4/src/test/resources/applicationcontext/user-bean-config.xml
rename to spring-core-3/src/test/resources/applicationcontext/user-bean-config.xml
diff --git a/spring-core-4/src/test/resources/config/messages.properties b/spring-core-3/src/test/resources/config/messages.properties
similarity index 100%
rename from spring-core-4/src/test/resources/config/messages.properties
rename to spring-core-3/src/test/resources/config/messages.properties
diff --git a/spring-core-4/README.md b/spring-core-4/README.md
index 6ade284e2e..a0f5ac97f9 100644
--- a/spring-core-4/README.md
+++ b/spring-core-4/README.md
@@ -6,5 +6,4 @@ This module contains articles about core Spring functionality
- [Creating Spring Beans Through Factory Methods](https://www.baeldung.com/spring-beans-factory-methods)
- [Spring BeanPostProcessor](https://www.baeldung.com/spring-beanpostprocessor)
-- [The Spring ApplicationContext](https://www.baeldung.com/spring-application-context)
-- More articles: [[<-- prev]](/spring-core-3) [[next -->]](/spring-core-5)
+- More articles: [[<-- prev]](/spring-core-3)
diff --git a/spring-core-5/README.md b/spring-core-5/README.md
deleted file mode 100644
index cfcbf5380a..0000000000
--- a/spring-core-5/README.md
+++ /dev/null
@@ -1,10 +0,0 @@
-## Spring Core
-
-This module contains articles about core Spring functionality.
-
-## Relevant Articles:
-
-- [Solving Spring’s “not eligible for auto-proxying” Warning](https://www.baeldung.com/spring-not-eligible-for-auto-proxying)
-- [Finding the Spring Version](https://www.baeldung.com/spring-find-version)
-- [How Does the Spring Singleton Bean Serve Concurrent Requests?](https://www.baeldung.com/spring-singleton-concurrent-requests)
-- More articles: [[<-- prev]](../spring-core-4)
diff --git a/spring-core-5/pom.xml b/spring-core-5/pom.xml
deleted file mode 100644
index 1c2e80be44..0000000000
--- a/spring-core-5/pom.xml
+++ /dev/null
@@ -1,45 +0,0 @@
-
-
- 4.0.0
- spring-core-5
- spring-core-5
-
-
- com.baeldung
- parent-spring-5
- 0.0.1-SNAPSHOT
- ../parent-spring-5
-
-
-
-
- org.springframework.boot
- spring-boot-starter
- ${spring-boot-starter.version}
-
-
- org.springframework.boot
- spring-boot-starter-web
- ${spring-boot-starter.version}
-
-
- org.springframework.boot
- spring-boot-starter-test
- ${spring-boot-starter.version}
- test
-
-
- org.projectlombok
- lombok
- ${lombok.version}
-
-
-
-
- 5.3.3
- 2.4.2
-
-
-
\ No newline at end of file
diff --git a/spring-core-5/src/main/resources/application.yml b/spring-core-5/src/main/resources/application.yml
deleted file mode 100644
index e69de29bb2..0000000000
diff --git a/spring-core-5/src/test/resources/application.yml b/spring-core-5/src/test/resources/application.yml
deleted file mode 100644
index e69de29bb2..0000000000
diff --git a/spring-core-5/src/test/resources/logback-test.xml b/spring-core-5/src/test/resources/logback-test.xml
deleted file mode 100644
index 8d4771e308..0000000000
--- a/spring-core-5/src/test/resources/logback-test.xml
+++ /dev/null
@@ -1,12 +0,0 @@
-
-
-
-
- [%d{ISO8601}]-[%thread] %-5level %logger - %msg%n
-
-
-
-
-
-
-
\ No newline at end of file
diff --git a/spring-core-6/README.md b/spring-core-6/README.md
deleted file mode 100644
index 1879ff9a68..0000000000
--- a/spring-core-6/README.md
+++ /dev/null
@@ -1,5 +0,0 @@
-
-### Relevant Articles:
-- [Reinitialize Singleton Bean in Spring Context](https://www.baeldung.com/spring-reinitialize-singleton-bean)
-- [Getting the Current ApplicationContext in Spring](https://www.baeldung.com/spring-get-current-applicationcontext)
-- More articles: [[<-- prev]](../spring-core-5)
\ No newline at end of file
diff --git a/spring-core-6/pom.xml b/spring-core-6/pom.xml
deleted file mode 100644
index 736fa283e7..0000000000
--- a/spring-core-6/pom.xml
+++ /dev/null
@@ -1,95 +0,0 @@
-
-
- 4.0.0
- com.baeldung
- spring-core-6
- 0.0.1-SNAPSHOT
- spring-core-6
- http://www.baeldung.com
-
-
- com.baeldung
- parent-boot-3
- 0.0.1-SNAPSHOT
- ../parent-boot-3
-
-
-
-
- org.springframework.boot
- spring-boot-starter-web
-
-
- org.springframework.boot
- spring-boot-starter-test
- test
-
-
- io.projectreactor
- reactor-test
- test
-
-
-
-
-
-
-
- maven-clean-plugin
- 3.1.0
-
-
- maven-resources-plugin
- 3.0.2
-
-
- maven-compiler-plugin
- 3.8.0
-
-
- maven-surefire-plugin
- 2.22.1
-
-
- maven-jar-plugin
- 3.0.2
-
-
- maven-install-plugin
- 2.5.2
-
-
- maven-deploy-plugin
- 2.8.2
-
-
- maven-site-plugin
- 3.7.1
-
-
- maven-project-info-reports-plugin
- 3.0.0
-
-
-
-
-
- org.apache.maven.plugins
- maven-compiler-plugin
-
- 17
- 17
-
-
-
-
-
-
- UTF-8
- 17
- 17
-
-
-
\ No newline at end of file
diff --git a/spring-core-6/src/main/resources/application.properties b/spring-core-6/src/main/resources/application.properties
deleted file mode 100644
index 6545cd1097..0000000000
--- a/spring-core-6/src/main/resources/application.properties
+++ /dev/null
@@ -1 +0,0 @@
-config.file.path=./spring-core-6/src/main/resources/config.properties
\ No newline at end of file