diff --git a/algorithms-miscellaneous-3/README.md b/algorithms-miscellaneous-3/README.md
index a1456c6b20..93426b3e0d 100644
--- a/algorithms-miscellaneous-3/README.md
+++ b/algorithms-miscellaneous-3/README.md
@@ -16,4 +16,6 @@ This module contains articles about algorithms. Some classes of algorithms, e.g.
- [Efficient Word Frequency Calculator in Java](https://www.baeldung.com/java-word-frequency)
- [Interpolation Search in Java](https://www.baeldung.com/java-interpolation-search)
- [The K-Means Clustering Algorithm in Java](https://www.baeldung.com/java-k-means-clustering-algorithm)
+- [Creating a Custom Annotation in Java](https://www.baeldung.com/java-custom-annotation)
+- [Breadth-First Search Algorithm in Java](https://www.baeldung.com/java-breadth-first-search)
- More articles: [[<-- prev]](/algorithms-miscellaneous-2) [[next -->]](/algorithms-miscellaneous-4)
diff --git a/algorithms-miscellaneous-4/README.md b/algorithms-miscellaneous-4/README.md
index 6aad9a43e4..df2eafb733 100644
--- a/algorithms-miscellaneous-4/README.md
+++ b/algorithms-miscellaneous-4/README.md
@@ -1,7 +1,6 @@
## Algorithms - Miscellaneous
-This module contains articles about algorithms. Some classes of algorithms, e.g., [sorting](/../algorithms-sorting) and
-[genetic algorithms](/../algorithms-genetic), have their own dedicated modules.
+This module contains articles about algorithms. Some classes of algorithms, e.g., [sorting](https://github.com/eugenp/tutorials/blob/algorithms-sorting) and [genetic algorithms](https://github.com/eugenp/tutorials/blob/algorithms-genetic), have their own dedicated modules.
### Relevant articles:
@@ -12,4 +11,4 @@ This module contains articles about algorithms. Some classes of algorithms, e.g.
- [Find Substrings That Are Palindromes in Java](https://www.baeldung.com/java-palindrome-substrings)
- [Find the Longest Substring without Repeating Characters](https://www.baeldung.com/java-longest-substring-without-repeated-characters)
- [Permutations of an Array in Java](https://www.baeldung.com/java-array-permutations)
-- More articles: [[<-- prev]](/../algorithms-miscellaneous-3) [[next -->]](/../algorithms-miscellaneous-5)
+- More articles: [[<-- prev]](/algorithms-miscellaneous-3) [[next -->]](/algorithms-miscellaneous-5)
diff --git a/algorithms-sorting/README.md b/algorithms-sorting/README.md
index 3f27cfea49..15a5ec6e02 100644
--- a/algorithms-sorting/README.md
+++ b/algorithms-sorting/README.md
@@ -17,3 +17,4 @@ This module contains articles about sorting algorithms.
- [Sorting Strings by Contained Numbers in Java](https://www.baeldung.com/java-sort-strings-contained-numbers)
- [Radix Sort in Java](https://www.baeldung.com/java-radix-sort)
- [Sorting a String Alphabetically in Java](https://www.baeldung.com/java-sort-string-alphabetically)
+- [Bucket Sort in Java](https://www.baeldung.com/java-bucket-sort)
diff --git a/core-groovy-2/README.md b/core-groovy-2/README.md
index f1984f18f4..95a00a1f5b 100644
--- a/core-groovy-2/README.md
+++ b/core-groovy-2/README.md
@@ -12,4 +12,5 @@ This module contains articles about core Groovy concepts
- [Concatenate Strings with Groovy](https://www.baeldung.com/groovy-concatenate-strings)
- [Metaprogramming in Groovy](https://www.baeldung.com/groovy-metaprogramming)
- [A Quick Guide to Working with Web Services in Groovy](https://www.baeldung.com/groovy-web-services)
+- [Categories in Groovy](https://www.baeldung.com/groovy-categories)
- [[<-- Prev]](/core-groovy)
diff --git a/core-java-modules/core-java-annotations/README.md b/core-java-modules/core-java-annotations/README.md
index a125e8abd5..93da3aea62 100644
--- a/core-java-modules/core-java-annotations/README.md
+++ b/core-java-modules/core-java-annotations/README.md
@@ -8,4 +8,5 @@
- [Java @SafeVarargs Annotation](https://www.baeldung.com/java-safevarargs)
- [Java @Deprecated Annotation](https://www.baeldung.com/java-deprecated)
- [Overview of Java Built-in Annotations](https://www.baeldung.com/java-default-annotations)
-- [Creating a Custom Annotation in Java](https://www.baeldung.com/java-custom-annotation)
\ No newline at end of file
+- [Creating a Custom Annotation in Java](https://www.baeldung.com/java-custom-annotation)
+- [Efficient Word Frequency Calculator in Java](https://www.baeldung.com/java-word-frequency)
diff --git a/core-java-modules/core-java-collections-2/README.md b/core-java-modules/core-java-collections-2/README.md
index 13ca191edb..de5daddb38 100644
--- a/core-java-modules/core-java-collections-2/README.md
+++ b/core-java-modules/core-java-collections-2/README.md
@@ -12,4 +12,4 @@
- [Sorting in Java](https://www.baeldung.com/java-sorting)
- [Getting the Size of an Iterable in Java](https://www.baeldung.com/java-iterable-size)
- [Java Null-Safe Streams from Collections](https://www.baeldung.com/java-null-safe-streams-from-collections)
-
+- [Operating on and Removing an Item from Stream](https://www.baeldung.com/java-use-remove-item-stream)
diff --git a/core-java-modules/core-java-collections-list-2/README.md b/core-java-modules/core-java-collections-list-2/README.md
index fada9d96ac..0d2da41b41 100644
--- a/core-java-modules/core-java-collections-list-2/README.md
+++ b/core-java-modules/core-java-collections-list-2/README.md
@@ -11,4 +11,5 @@ This module contains articles about the Java List collection
- [Ways to Iterate Over a List in Java](https://www.baeldung.com/java-iterate-list)
- [Flattening Nested Collections in Java](http://www.baeldung.com/java-flatten-nested-collections)
- [Intersection of Two Lists in Java](https://www.baeldung.com/java-lists-intersection)
-- [[<-- Prev]](/core-java-modules/core-java-collections-list)[[Next -->]](/core-java-modules/core-java-collections-list-3)
\ No newline at end of file
+- [Searching for a String in an ArrayList](https://www.baeldung.com/java-search-string-arraylist)
+- [[<-- Prev]](/core-java-modules/core-java-collections-list)[[Next -->]](/core-java-modules/core-java-collections-list-3)
diff --git a/core-java-modules/core-java-exceptions/README.md b/core-java-modules/core-java-exceptions/README.md
index ba327b06f2..f7b0c37e73 100644
--- a/core-java-modules/core-java-exceptions/README.md
+++ b/core-java-modules/core-java-exceptions/README.md
@@ -12,4 +12,8 @@ This module contains articles about core java exceptions
- [“Sneaky Throws” in Java](https://www.baeldung.com/java-sneaky-throws)
- [The StackOverflowError in Java](https://www.baeldung.com/java-stack-overflow-error)
- [Checked and Unchecked Exceptions in Java](https://www.baeldung.com/java-checked-unchecked-exceptions)
-
+- [Java – Try with Resources](https://www.baeldung.com/java-try-with-resources)
+- [Java Global Exception Handler](https://www.baeldung.com/java-global-exception-handler)
+- [Common Java Exceptions](https://www.baeldung.com/java-common-exceptions)
+- [Throw Exception in Optional in Java 8](https://www.baeldung.com/java-optional-throw-exception)
+- [How to Find an Exception’s Root Cause in Java](https://www.baeldung.com/java-exception-root-cause)
diff --git a/core-java-modules/core-java-io-2/README.md b/core-java-modules/core-java-io-2/README.md
index 2299320f32..867b7ad732 100644
--- a/core-java-modules/core-java-io-2/README.md
+++ b/core-java-modules/core-java-io-2/README.md
@@ -3,4 +3,5 @@
- [Create a File in a Specific Directory in Java](https://www.baeldung.com/java-create-file-in-directory)
- [A Guide to the Java FileReader Class](https://www.baeldung.com/java-filereader)
-
+- [The Java File Class](https://www.baeldung.com/java-io-file)
+- [Java FileWriter](https://www.baeldung.com/java-filewriter)
diff --git a/core-java-modules/core-java-lang-oop-3/README.md b/core-java-modules/core-java-lang-oop-3/README.md
index 4ac6c3ffe9..f8efcb737f 100644
--- a/core-java-modules/core-java-lang-oop-3/README.md
+++ b/core-java-modules/core-java-lang-oop-3/README.md
@@ -7,11 +7,12 @@ This module contains articles about Object-oriented programming (OOP) in Java
- [Access Modifiers in Java](https://www.baeldung.com/java-access-modifiers)
- [Guide to the super Java Keyword](https://www.baeldung.com/java-super)
- [Guide to the this Java Keyword](https://www.baeldung.com/java-this)
-- [Java Public Access Modifier](https://www.baeldung.com/java-public-keyword)
+- [Java ‘public’ Access Modifier](https://www.baeldung.com/java-public-keyword)
- [Composition, Aggregation and Association in Java](https://www.baeldung.com/java-composition-aggregation-association)
- [Nested Classes in Java](https://www.baeldung.com/java-nested-classes)
- [A Guide to Inner Interfaces in Java](https://www.baeldung.com/java-inner-interfaces)
- [Java Classes and Objects](https://www.baeldung.com/java-classes-objects)
- [Java Interfaces](https://www.baeldung.com/java-interfaces)
- [Static and Dynamic Binding in Java](https://www.baeldung.com/java-static-dynamic-binding)
-- [[<-- Prev]](/core-java-modules/core-java-lang-oop-2)
\ No newline at end of file
+- [Methods in Java](https://www.baeldung.com/java-methods)
+- [[<-- Prev]](/core-java-modules/core-java-lang-oop-2)
diff --git a/core-java-modules/core-java-lang/README.md b/core-java-modules/core-java-lang/README.md
index 9b485d80e9..9e98bb849b 100644
--- a/core-java-modules/core-java-lang/README.md
+++ b/core-java-modules/core-java-lang/README.md
@@ -13,4 +13,7 @@ This module contains articles about core features in the Java language
- [Synthetic Constructs in Java](https://www.baeldung.com/java-synthetic)
- [Retrieving a Class Name in Java](https://www.baeldung.com/java-class-name)
- [Attaching Values to Java Enum](https://www.baeldung.com/java-enum-values)
-- [[More --> ]](/core-java-modules/core-java-lang-2)
\ No newline at end of file
+- [The Java continue and break Keywords](https://www.baeldung.com/java-continue-and-break)
+- [A Guide to Java Enums](https://www.baeldung.com/a-guide-to-java-enums)
+- [Infinite Loops in Java](https://www.baeldung.com/infinite-loops-java)
+- [[More --> ]](/core-java-modules/core-java-lang-2)
diff --git a/core-java-modules/core-java-networking-2/README.md b/core-java-modules/core-java-networking-2/README.md
index c384a28b64..7dc33b5e11 100644
--- a/core-java-modules/core-java-networking-2/README.md
+++ b/core-java-modules/core-java-networking-2/README.md
@@ -9,4 +9,5 @@ This module contains articles about networking in Java
- [Using Curl in Java](https://www.baeldung.com/java-curl)
- [Do a Simple HTTP Request in Java](http://www.baeldung.com/java-http-request)
- [Sending Emails with Java](http://www.baeldung.com/java-email)
+- [Authentication with HttpUrlConnection](https://www.baeldung.com/java-http-url-connection)
- [[<-- Prev]](/core-java-modules/core-java-networking)
diff --git a/core-java-modules/core-java-security-manager/README.md b/core-java-modules/core-java-security-manager/README.md
new file mode 100644
index 0000000000..a4abe7f80a
--- /dev/null
+++ b/core-java-modules/core-java-security-manager/README.md
@@ -0,0 +1,3 @@
+### Relevant Articles:
+
+- [Intro to the Java SecurityManager](https://www.baeldung.com/java-security-manager)
diff --git a/core-java-modules/core-java-string-conversions-2/README.md b/core-java-modules/core-java-string-conversions-2/README.md
index b4da1b8bad..afdd7e5760 100644
--- a/core-java-modules/core-java-string-conversions-2/README.md
+++ b/core-java-modules/core-java-string-conversions-2/README.md
@@ -5,5 +5,5 @@ This module contains articles about string conversions from/to another type.
### Relevant Articles:
- [Java String Conversions](https://www.baeldung.com/java-string-conversions)
- [Convert String to Byte Array and Reverse in Java](https://www.baeldung.com/java-string-to-byte-array)
-- [Convert Char Array to String](https://www.baeldung.com/java-char-array-to-string)
+- [Convert Character Array to String in Java](https://www.baeldung.com/java-char-array-to-string)
- More articles: [[<-- prev]](/core-java-string-conversions)
diff --git a/core-java-modules/core-java-string-operations-2/README.md b/core-java-modules/core-java-string-operations-2/README.md
new file mode 100644
index 0000000000..50f40ac2af
--- /dev/null
+++ b/core-java-modules/core-java-string-operations-2/README.md
@@ -0,0 +1,11 @@
+## Java String Operations
+
+This module contains articles about string operations.
+
+### Relevant Articles:
+- [Concatenating Strings In Java](https://www.baeldung.com/java-strings-concatenation)
+- [Checking for Empty or Blank Strings in Java](https://www.baeldung.com/java-blank-empty-strings)
+- [String Initialization in Java](https://www.baeldung.com/java-string-initialization)
+- [String toLowerCase and toUpperCase Methods in Java](https://www.baeldung.com/java-string-convert-case)
+- [Java String equalsIgnoreCase()](https://www.baeldung.com/java-string-equalsignorecase)
+- More articles: [[<-- prev]](../core-java-string-operations)
diff --git a/core-java-modules/core-java-string-operations-2/pom.xml b/core-java-modules/core-java-string-operations-2/pom.xml
new file mode 100644
index 0000000000..95aeec8fcb
--- /dev/null
+++ b/core-java-modules/core-java-string-operations-2/pom.xml
@@ -0,0 +1,81 @@
+
+ 4.0.0
+ core-java-string-operations-2
+ 0.1.0-SNAPSHOT
+ jar
+ core-java-string-operations-2
+
+
+ com.baeldung
+ parent-java
+ 0.0.1-SNAPSHOT
+ ../../parent-java
+
+
+
+
+ javax.validation
+ validation-api
+ ${validation-api.version}
+
+
+ com.google.guava
+ guava
+ ${guava.version}
+
+
+ org.apache.commons
+ commons-lang3
+ ${commons-lang3.version}
+
+
+ org.hibernate.validator
+ hibernate-validator
+ ${hibernate-validator.version}
+
+
+ javax.el
+ javax.el-api
+ ${javax.el-api.version}
+
+
+ org.glassfish.web
+ javax.el
+ ${javax.el.version}
+
+
+ org.hamcrest
+ hamcrest-library
+ ${org.hamcrest.version}
+ test
+
+
+ org.assertj
+ assertj-core
+ ${assertj.version}
+ test
+
+
+
+
+ core-java-string-operations-2
+
+
+ src/main/resources
+ true
+
+
+
+
+
+ 3.6.1
+ 2.0.0.Final
+ 3.8.1
+ 27.0.1-jre
+ 6.0.2.Final
+ 3.0.0
+ 2.2.6
+
+
+
diff --git a/java-strings-2/src/main/java/com/baeldung/string/emptystrings/EmptyStringCheck.java b/core-java-modules/core-java-string-operations-2/src/main/java/com/baeldung/emptystrings/EmptyStringCheck.java
similarity index 75%
rename from java-strings-2/src/main/java/com/baeldung/string/emptystrings/EmptyStringCheck.java
rename to core-java-modules/core-java-string-operations-2/src/main/java/com/baeldung/emptystrings/EmptyStringCheck.java
index 6d3234a4ec..85689eff99 100644
--- a/java-strings-2/src/main/java/com/baeldung/string/emptystrings/EmptyStringCheck.java
+++ b/core-java-modules/core-java-string-operations-2/src/main/java/com/baeldung/emptystrings/EmptyStringCheck.java
@@ -1,4 +1,4 @@
-package com.baeldung.string.emptystrings;
+package com.baeldung.emptystrings;
class EmptyStringCheck {
diff --git a/java-strings-2/src/main/java/com/baeldung/string/emptystrings/Java5EmptyStringCheck.java b/core-java-modules/core-java-string-operations-2/src/main/java/com/baeldung/emptystrings/Java5EmptyStringCheck.java
similarity index 76%
rename from java-strings-2/src/main/java/com/baeldung/string/emptystrings/Java5EmptyStringCheck.java
rename to core-java-modules/core-java-string-operations-2/src/main/java/com/baeldung/emptystrings/Java5EmptyStringCheck.java
index 096b83acea..0c7997c075 100644
--- a/java-strings-2/src/main/java/com/baeldung/string/emptystrings/Java5EmptyStringCheck.java
+++ b/core-java-modules/core-java-string-operations-2/src/main/java/com/baeldung/emptystrings/Java5EmptyStringCheck.java
@@ -1,4 +1,4 @@
-package com.baeldung.string.emptystrings;
+package com.baeldung.emptystrings;
class Java5EmptyStringCheck {
diff --git a/java-strings-2/src/main/java/com/baeldung/string/emptystrings/PlainJavaBlankStringCheck.java b/core-java-modules/core-java-string-operations-2/src/main/java/com/baeldung/emptystrings/PlainJavaBlankStringCheck.java
similarity index 77%
rename from java-strings-2/src/main/java/com/baeldung/string/emptystrings/PlainJavaBlankStringCheck.java
rename to core-java-modules/core-java-string-operations-2/src/main/java/com/baeldung/emptystrings/PlainJavaBlankStringCheck.java
index 26e281c9b7..315ce4613a 100644
--- a/java-strings-2/src/main/java/com/baeldung/string/emptystrings/PlainJavaBlankStringCheck.java
+++ b/core-java-modules/core-java-string-operations-2/src/main/java/com/baeldung/emptystrings/PlainJavaBlankStringCheck.java
@@ -1,4 +1,4 @@
-package com.baeldung.string.emptystrings;
+package com.baeldung.emptystrings;
class PlainJavaBlankStringCheck {
diff --git a/java-strings-2/src/main/java/com/baeldung/string/emptystrings/SomeClassWithValidations.java b/core-java-modules/core-java-string-operations-2/src/main/java/com/baeldung/emptystrings/SomeClassWithValidations.java
similarity index 87%
rename from java-strings-2/src/main/java/com/baeldung/string/emptystrings/SomeClassWithValidations.java
rename to core-java-modules/core-java-string-operations-2/src/main/java/com/baeldung/emptystrings/SomeClassWithValidations.java
index 8c484efb43..058d53ba82 100644
--- a/java-strings-2/src/main/java/com/baeldung/string/emptystrings/SomeClassWithValidations.java
+++ b/core-java-modules/core-java-string-operations-2/src/main/java/com/baeldung/emptystrings/SomeClassWithValidations.java
@@ -1,4 +1,4 @@
-package com.baeldung.string.emptystrings;
+package com.baeldung.emptystrings;
import javax.validation.constraints.Pattern;
diff --git a/java-strings-2/src/test/java/com/baeldung/string/changecase/ToLowerCaseUnitTest.java b/core-java-modules/core-java-string-operations-2/src/test/java/com/baeldung/changecase/ToLowerCaseUnitTest.java
similarity index 91%
rename from java-strings-2/src/test/java/com/baeldung/string/changecase/ToLowerCaseUnitTest.java
rename to core-java-modules/core-java-string-operations-2/src/test/java/com/baeldung/changecase/ToLowerCaseUnitTest.java
index c395b61068..4826ba2ef7 100644
--- a/java-strings-2/src/test/java/com/baeldung/string/changecase/ToLowerCaseUnitTest.java
+++ b/core-java-modules/core-java-string-operations-2/src/test/java/com/baeldung/changecase/ToLowerCaseUnitTest.java
@@ -1,29 +1,29 @@
-package com.baeldung.string.changecase;
-
-import static org.junit.Assert.assertEquals;
-
-import java.util.Locale;
-
-import org.junit.Test;
-
-public class ToLowerCaseUnitTest {
-
- private static final Locale TURKISH = new Locale("tr");
- private String name = "John Doe";
- private String foreignUppercase = "\u0049";
-
- @Test
- public void givenMixedCaseString_WhenToLowerCase_ThenResultIsLowerCase() {
- assertEquals("john doe", name.toLowerCase());
- }
-
- @Test
- public void givenForeignString_WhenToLowerCaseWithoutLocale_ThenResultIsLowerCase() {
- assertEquals("\u0069", foreignUppercase.toLowerCase());
- }
-
- @Test
- public void givenForeignString_WhenToLowerCaseWithLocale_ThenResultIsLowerCase() {
- assertEquals("\u0131", foreignUppercase.toLowerCase(TURKISH));
- }
-}
+package com.baeldung.changecase;
+
+import org.junit.Test;
+
+import java.util.Locale;
+
+import static org.junit.Assert.assertEquals;
+
+public class ToLowerCaseUnitTest {
+
+ private static final Locale TURKISH = new Locale("tr");
+ private String name = "John Doe";
+ private String foreignUppercase = "\u0049";
+
+ @Test
+ public void givenMixedCaseString_WhenToLowerCase_ThenResultIsLowerCase() {
+ assertEquals("john doe", name.toLowerCase());
+ }
+
+ @Test
+ public void givenForeignString_WhenToLowerCaseWithoutLocale_ThenResultIsLowerCase() {
+ assertEquals("\u0069", foreignUppercase.toLowerCase());
+ }
+
+ @Test
+ public void givenForeignString_WhenToLowerCaseWithLocale_ThenResultIsLowerCase() {
+ assertEquals("\u0131", foreignUppercase.toLowerCase(TURKISH));
+ }
+}
diff --git a/java-strings-2/src/test/java/com/baeldung/string/changecase/ToUpperCaseUnitTest.java b/core-java-modules/core-java-string-operations-2/src/test/java/com/baeldung/changecase/ToUpperCaseUnitTest.java
similarity index 91%
rename from java-strings-2/src/test/java/com/baeldung/string/changecase/ToUpperCaseUnitTest.java
rename to core-java-modules/core-java-string-operations-2/src/test/java/com/baeldung/changecase/ToUpperCaseUnitTest.java
index 1807f854b2..ab740f19b1 100644
--- a/java-strings-2/src/test/java/com/baeldung/string/changecase/ToUpperCaseUnitTest.java
+++ b/core-java-modules/core-java-string-operations-2/src/test/java/com/baeldung/changecase/ToUpperCaseUnitTest.java
@@ -1,29 +1,29 @@
-package com.baeldung.string.changecase;
-
-import static org.junit.Assert.assertEquals;
-
-import java.util.Locale;
-
-import org.junit.Test;
-
-public class ToUpperCaseUnitTest {
-
- private static final Locale TURKISH = new Locale("tr");
- private String name = "John Doe";
- private String foreignLowercase = "\u0069";
-
- @Test
- public void givenMixedCaseString_WhenToUpperCase_ThenResultIsUpperCase() {
- assertEquals("JOHN DOE", name.toUpperCase());
- }
-
- @Test
- public void givenForeignString_WhenToUpperCaseWithoutLocale_ThenResultIsUpperCase() {
- assertEquals("\u0049", foreignLowercase.toUpperCase());
- }
-
- @Test
- public void givenForeignString_WhenToUpperCaseWithLocale_ThenResultIsUpperCase() {
- assertEquals("\u0130", foreignLowercase.toUpperCase(TURKISH));
- }
-}
+package com.baeldung.changecase;
+
+import org.junit.Test;
+
+import java.util.Locale;
+
+import static org.junit.Assert.assertEquals;
+
+public class ToUpperCaseUnitTest {
+
+ private static final Locale TURKISH = new Locale("tr");
+ private String name = "John Doe";
+ private String foreignLowercase = "\u0069";
+
+ @Test
+ public void givenMixedCaseString_WhenToUpperCase_ThenResultIsUpperCase() {
+ assertEquals("JOHN DOE", name.toUpperCase());
+ }
+
+ @Test
+ public void givenForeignString_WhenToUpperCaseWithoutLocale_ThenResultIsUpperCase() {
+ assertEquals("\u0049", foreignLowercase.toUpperCase());
+ }
+
+ @Test
+ public void givenForeignString_WhenToUpperCaseWithLocale_ThenResultIsUpperCase() {
+ assertEquals("\u0130", foreignLowercase.toUpperCase(TURKISH));
+ }
+}
diff --git a/java-strings-2/src/test/java/com/baeldung/string/emptystrings/EmptyStringsUnitTest.java b/core-java-modules/core-java-string-operations-2/src/test/java/com/baeldung/emptystrings/EmptyStringsUnitTest.java
similarity index 96%
rename from java-strings-2/src/test/java/com/baeldung/string/emptystrings/EmptyStringsUnitTest.java
rename to core-java-modules/core-java-string-operations-2/src/test/java/com/baeldung/emptystrings/EmptyStringsUnitTest.java
index 96b1d681dd..d772c38341 100644
--- a/java-strings-2/src/test/java/com/baeldung/string/emptystrings/EmptyStringsUnitTest.java
+++ b/core-java-modules/core-java-string-operations-2/src/test/java/com/baeldung/emptystrings/EmptyStringsUnitTest.java
@@ -1,21 +1,17 @@
-package com.baeldung.string.emptystrings;
+package com.baeldung.emptystrings;
-import static org.hamcrest.Matchers.iterableWithSize;
-import static org.junit.Assert.assertFalse;
-import static org.junit.Assert.assertThat;
-import static org.junit.Assert.assertTrue;
-
-import java.util.Set;
+import com.google.common.base.Strings;
+import org.apache.commons.lang3.StringUtils;
+import org.junit.Test;
import javax.validation.ConstraintViolation;
import javax.validation.Validation;
import javax.validation.Validator;
import javax.validation.ValidatorFactory;
+import java.util.Set;
-import org.apache.commons.lang3.StringUtils;
-import org.junit.Test;
-
-import com.google.common.base.Strings;
+import static org.hamcrest.Matchers.iterableWithSize;
+import static org.junit.Assert.*;
public class EmptyStringsUnitTest {
diff --git a/java-strings-3/src/test/java/com/baeldung/string/equalsIgnoreCase/StringEqualsIgnoreCaseUnitTest.java b/core-java-modules/core-java-string-operations-2/src/test/java/com/baeldung/equalsIgnoreCase/StringEqualsIgnoreCaseUnitTest.java
similarity index 94%
rename from java-strings-3/src/test/java/com/baeldung/string/equalsIgnoreCase/StringEqualsIgnoreCaseUnitTest.java
rename to core-java-modules/core-java-string-operations-2/src/test/java/com/baeldung/equalsIgnoreCase/StringEqualsIgnoreCaseUnitTest.java
index 5aab63db94..14fbf20c1d 100644
--- a/java-strings-3/src/test/java/com/baeldung/string/equalsIgnoreCase/StringEqualsIgnoreCaseUnitTest.java
+++ b/core-java-modules/core-java-string-operations-2/src/test/java/com/baeldung/equalsIgnoreCase/StringEqualsIgnoreCaseUnitTest.java
@@ -1,4 +1,4 @@
-package com.baeldung.string.equalsIgnoreCase;
+package com.baeldung.equalsIgnoreCase;
import org.apache.commons.lang3.StringUtils;
import org.junit.Test;
diff --git a/java-strings-2/src/test/java/com/baeldung/initialization/StringInitializationUnitTest.java b/core-java-modules/core-java-string-operations-2/src/test/java/com/baeldung/initialization/StringInitializationUnitTest.java
similarity index 91%
rename from java-strings-2/src/test/java/com/baeldung/initialization/StringInitializationUnitTest.java
rename to core-java-modules/core-java-string-operations-2/src/test/java/com/baeldung/initialization/StringInitializationUnitTest.java
index 50d9a2b058..02beaa690a 100644
--- a/java-strings-2/src/test/java/com/baeldung/initialization/StringInitializationUnitTest.java
+++ b/core-java-modules/core-java-string-operations-2/src/test/java/com/baeldung/initialization/StringInitializationUnitTest.java
@@ -1,11 +1,9 @@
package com.baeldung.initialization;
-import static org.junit.Assert.assertEquals;
-import static org.junit.Assert.assertTrue;
-import static org.junit.Assert.assertFalse;
-
import org.junit.Test;
+import static org.junit.Assert.*;
+
public class StringInitializationUnitTest {
private String fieldString;
diff --git a/java-strings-2/src/test/java/com/baeldung/StringConcatenationUnitTest.java b/core-java-modules/core-java-string-operations-2/src/test/java/com/baeldung/stringconcatenation/StringConcatenationUnitTest.java
similarity index 98%
rename from java-strings-2/src/test/java/com/baeldung/StringConcatenationUnitTest.java
rename to core-java-modules/core-java-string-operations-2/src/test/java/com/baeldung/stringconcatenation/StringConcatenationUnitTest.java
index c25d4ce8f9..9a444e8229 100644
--- a/java-strings-2/src/test/java/com/baeldung/StringConcatenationUnitTest.java
+++ b/core-java-modules/core-java-string-operations-2/src/test/java/com/baeldung/stringconcatenation/StringConcatenationUnitTest.java
@@ -1,4 +1,4 @@
-package com.baeldung;
+package com.baeldung.stringconcatenation;
import org.junit.Test;
diff --git a/core-java-modules/core-java-string-operations/README.md b/core-java-modules/core-java-string-operations/README.md
new file mode 100644
index 0000000000..18a2649a6a
--- /dev/null
+++ b/core-java-modules/core-java-string-operations/README.md
@@ -0,0 +1,16 @@
+## Java String Operations
+
+This module contains articles about string operations.
+
+### Relevant Articles:
+- [Comparing Strings in Java](https://www.baeldung.com/java-compare-strings)
+- [Check If a String Is Numeric in Java](https://www.baeldung.com/java-check-string-number)
+- [Get Substring from String in Java](https://www.baeldung.com/java-substring)
+- [Split a String in Java](https://www.baeldung.com/java-split-string)
+- [Common String Operations in Java](https://www.baeldung.com/java-string-operations)
+- [Java toString() Method](https://www.baeldung.com/java-tostring)
+- [String Operations with Java Streams](https://www.baeldung.com/java-stream-operations-on-strings)
+- [Adding a Newline Character to a String in Java](https://www.baeldung.com/java-string-newline)
+- [Check If a String Contains a Substring](https://www.baeldung.com/java-string-contains-substring)
+- [Java Base64 Encoding and Decoding](https://www.baeldung.com/java-base64-encode-and-decode)
+- More articles: [[next -->]](../core-java-string-operations-2)
diff --git a/core-java-modules/core-java-string-operations/pom.xml b/core-java-modules/core-java-string-operations/pom.xml
new file mode 100644
index 0000000000..fdddd99433
--- /dev/null
+++ b/core-java-modules/core-java-string-operations/pom.xml
@@ -0,0 +1,66 @@
+
+ 4.0.0
+ core-java-string-operations
+ 0.1.0-SNAPSHOT
+ jar
+ core-java-string-operations
+
+
+ com.baeldung
+ parent-java
+ 0.0.1-SNAPSHOT
+ ../../parent-java
+
+
+
+
+ org.apache.commons
+ commons-lang3
+ ${commons-lang3.version}
+
+
+ org.openjdk.jmh
+ jmh-core
+ ${jmh-core.version}
+
+
+ log4j
+ log4j
+ ${log4j.version}
+
+
+ org.openjdk.jmh
+ jmh-generator-annprocess
+ ${jmh-generator.version}
+
+
+ commons-codec
+ commons-codec
+ ${commons-codec.version}
+
+
+ org.assertj
+ assertj-core
+ ${assertj.version}
+ test
+
+
+
+
+ core-java-string-operations
+
+
+ src/main/resources
+ true
+
+
+
+
+
+ 3.8.1
+ 3.6.1
+ 1.10
+
+
+
diff --git a/java-strings-ops/src/main/java/com/baeldung/string/isnumeric/Benchmarking.java b/core-java-modules/core-java-string-operations/src/main/java/com/baeldung/isnumeric/Benchmarking.java
similarity index 98%
rename from java-strings-ops/src/main/java/com/baeldung/string/isnumeric/Benchmarking.java
rename to core-java-modules/core-java-string-operations/src/main/java/com/baeldung/isnumeric/Benchmarking.java
index c4e2742da6..97e7a46757 100644
--- a/java-strings-ops/src/main/java/com/baeldung/string/isnumeric/Benchmarking.java
+++ b/core-java-modules/core-java-string-operations/src/main/java/com/baeldung/isnumeric/Benchmarking.java
@@ -1,4 +1,4 @@
-package com.baeldung.string.isnumeric;
+package com.baeldung.isnumeric;
import java.util.concurrent.TimeUnit;
diff --git a/java-strings-ops/src/main/java/com/baeldung/string/isnumeric/CheckIntegerInput.java b/core-java-modules/core-java-string-operations/src/main/java/com/baeldung/isnumeric/CheckIntegerInput.java
similarity index 92%
rename from java-strings-ops/src/main/java/com/baeldung/string/isnumeric/CheckIntegerInput.java
rename to core-java-modules/core-java-string-operations/src/main/java/com/baeldung/isnumeric/CheckIntegerInput.java
index 2785df0c9b..6c08615c74 100644
--- a/java-strings-ops/src/main/java/com/baeldung/string/isnumeric/CheckIntegerInput.java
+++ b/core-java-modules/core-java-string-operations/src/main/java/com/baeldung/isnumeric/CheckIntegerInput.java
@@ -1,4 +1,4 @@
-package com.baeldung.string.isnumeric;
+package com.baeldung.isnumeric;
import java.util.Scanner;
diff --git a/java-strings-ops/src/main/java/com/baeldung/string/isnumeric/IsNumeric.java b/core-java-modules/core-java-string-operations/src/main/java/com/baeldung/isnumeric/IsNumeric.java
similarity index 96%
rename from java-strings-ops/src/main/java/com/baeldung/string/isnumeric/IsNumeric.java
rename to core-java-modules/core-java-string-operations/src/main/java/com/baeldung/isnumeric/IsNumeric.java
index 508cedd168..6eed0d777d 100644
--- a/java-strings-ops/src/main/java/com/baeldung/string/isnumeric/IsNumeric.java
+++ b/core-java-modules/core-java-string-operations/src/main/java/com/baeldung/isnumeric/IsNumeric.java
@@ -1,4 +1,4 @@
-package com.baeldung.string.isnumeric;
+package com.baeldung.isnumeric;
import org.apache.commons.lang3.StringUtils;
import org.apache.commons.lang3.math.NumberUtils;
diff --git a/java-strings-ops/src/main/java/com/baeldung/string/isnumeric/IsNumericDriver.java b/core-java-modules/core-java-string-operations/src/main/java/com/baeldung/isnumeric/IsNumericDriver.java
similarity index 96%
rename from java-strings-ops/src/main/java/com/baeldung/string/isnumeric/IsNumericDriver.java
rename to core-java-modules/core-java-string-operations/src/main/java/com/baeldung/isnumeric/IsNumericDriver.java
index bb3c96c06e..a6c5449696 100644
--- a/java-strings-ops/src/main/java/com/baeldung/string/isnumeric/IsNumericDriver.java
+++ b/core-java-modules/core-java-string-operations/src/main/java/com/baeldung/isnumeric/IsNumericDriver.java
@@ -1,4 +1,4 @@
-package com.baeldung.string.isnumeric;
+package com.baeldung.isnumeric;
import org.apache.log4j.Logger;
diff --git a/java-strings/src/main/java/com/baeldung/string/newline/AddingNewLineToString.java b/core-java-modules/core-java-string-operations/src/main/java/com/baeldung/newline/AddingNewLineToString.java
similarity index 98%
rename from java-strings/src/main/java/com/baeldung/string/newline/AddingNewLineToString.java
rename to core-java-modules/core-java-string-operations/src/main/java/com/baeldung/newline/AddingNewLineToString.java
index 48b71eed12..f701ab2e45 100644
--- a/java-strings/src/main/java/com/baeldung/string/newline/AddingNewLineToString.java
+++ b/core-java-modules/core-java-string-operations/src/main/java/com/baeldung/newline/AddingNewLineToString.java
@@ -1,4 +1,4 @@
-package com.baeldung.string.newline;
+package com.baeldung.newline;
public class AddingNewLineToString {
diff --git a/java-strings/src/main/java/com/baeldung/string/JoinerSplitter.java b/core-java-modules/core-java-string-operations/src/main/java/com/baeldung/streamoperations/JoinerSplitter.java
similarity index 96%
rename from java-strings/src/main/java/com/baeldung/string/JoinerSplitter.java
rename to core-java-modules/core-java-string-operations/src/main/java/com/baeldung/streamoperations/JoinerSplitter.java
index cdbba1ef53..8a105188ad 100644
--- a/java-strings/src/main/java/com/baeldung/string/JoinerSplitter.java
+++ b/core-java-modules/core-java-string-operations/src/main/java/com/baeldung/streamoperations/JoinerSplitter.java
@@ -1,4 +1,4 @@
-package com.baeldung.string;
+package com.baeldung.streamoperations;
import java.util.Arrays;
import java.util.List;
diff --git a/java-strings-2/src/main/java/com/baeldung/string/search/performance/SubstringSearchPerformanceComparison.java b/core-java-modules/core-java-string-operations/src/main/java/com/baeldung/substringsearch/SubstringSearchPerformanceComparison.java
similarity index 79%
rename from java-strings-2/src/main/java/com/baeldung/string/search/performance/SubstringSearchPerformanceComparison.java
rename to core-java-modules/core-java-string-operations/src/main/java/com/baeldung/substringsearch/SubstringSearchPerformanceComparison.java
index bf33c47a7e..92aef0b879 100644
--- a/java-strings-2/src/main/java/com/baeldung/string/search/performance/SubstringSearchPerformanceComparison.java
+++ b/core-java-modules/core-java-string-operations/src/main/java/com/baeldung/substringsearch/SubstringSearchPerformanceComparison.java
@@ -1,18 +1,11 @@
-package com.baeldung.string.search.performance;
+package com.baeldung.substringsearch;
+
+import org.apache.commons.lang3.StringUtils;
+import org.openjdk.jmh.annotations.*;
import java.util.concurrent.TimeUnit;
import java.util.regex.Pattern;
-import org.apache.commons.lang3.StringUtils;
-import org.openjdk.jmh.annotations.Benchmark;
-import org.openjdk.jmh.annotations.BenchmarkMode;
-import org.openjdk.jmh.annotations.Fork;
-import org.openjdk.jmh.annotations.Mode;
-import org.openjdk.jmh.annotations.OutputTimeUnit;
-import org.openjdk.jmh.annotations.Scope;
-import org.openjdk.jmh.annotations.Setup;
-import org.openjdk.jmh.annotations.State;
-
/**
* Based on https://github.com/tedyoung/indexof-contains-benchmark
*/
diff --git a/java-strings-ops/src/main/java/com/baeldung/string/tostring/Customer.java b/core-java-modules/core-java-string-operations/src/main/java/com/baeldung/tostring/Customer.java
similarity index 91%
rename from java-strings-ops/src/main/java/com/baeldung/string/tostring/Customer.java
rename to core-java-modules/core-java-string-operations/src/main/java/com/baeldung/tostring/Customer.java
index 7ab3936cb9..16e2b05a7c 100644
--- a/java-strings-ops/src/main/java/com/baeldung/string/tostring/Customer.java
+++ b/core-java-modules/core-java-string-operations/src/main/java/com/baeldung/tostring/Customer.java
@@ -1,4 +1,4 @@
-package com.baeldung.string.tostring;
+package com.baeldung.tostring;
public class Customer {
private String firstName;
diff --git a/java-strings-ops/src/main/java/com/baeldung/string/tostring/CustomerArrayToString.java b/core-java-modules/core-java-string-operations/src/main/java/com/baeldung/tostring/CustomerArrayToString.java
similarity index 92%
rename from java-strings-ops/src/main/java/com/baeldung/string/tostring/CustomerArrayToString.java
rename to core-java-modules/core-java-string-operations/src/main/java/com/baeldung/tostring/CustomerArrayToString.java
index 391ced61d3..c942f978da 100644
--- a/java-strings-ops/src/main/java/com/baeldung/string/tostring/CustomerArrayToString.java
+++ b/core-java-modules/core-java-string-operations/src/main/java/com/baeldung/tostring/CustomerArrayToString.java
@@ -1,4 +1,4 @@
-package com.baeldung.string.tostring;
+package com.baeldung.tostring;
import java.util.Arrays;
diff --git a/java-strings-ops/src/main/java/com/baeldung/string/tostring/CustomerComplexObjectToString.java b/core-java-modules/core-java-string-operations/src/main/java/com/baeldung/tostring/CustomerComplexObjectToString.java
similarity index 91%
rename from java-strings-ops/src/main/java/com/baeldung/string/tostring/CustomerComplexObjectToString.java
rename to core-java-modules/core-java-string-operations/src/main/java/com/baeldung/tostring/CustomerComplexObjectToString.java
index ae3d999b12..3ca11779c4 100644
--- a/java-strings-ops/src/main/java/com/baeldung/string/tostring/CustomerComplexObjectToString.java
+++ b/core-java-modules/core-java-string-operations/src/main/java/com/baeldung/tostring/CustomerComplexObjectToString.java
@@ -1,4 +1,4 @@
-package com.baeldung.string.tostring;
+package com.baeldung.tostring;
public class CustomerComplexObjectToString extends Customer {
private Order order;
diff --git a/java-strings-ops/src/main/java/com/baeldung/string/tostring/CustomerPrimitiveToString.java b/core-java-modules/core-java-string-operations/src/main/java/com/baeldung/tostring/CustomerPrimitiveToString.java
similarity index 91%
rename from java-strings-ops/src/main/java/com/baeldung/string/tostring/CustomerPrimitiveToString.java
rename to core-java-modules/core-java-string-operations/src/main/java/com/baeldung/tostring/CustomerPrimitiveToString.java
index 01fe4c8b09..38555aa236 100644
--- a/java-strings-ops/src/main/java/com/baeldung/string/tostring/CustomerPrimitiveToString.java
+++ b/core-java-modules/core-java-string-operations/src/main/java/com/baeldung/tostring/CustomerPrimitiveToString.java
@@ -1,4 +1,4 @@
-package com.baeldung.string.tostring;
+package com.baeldung.tostring;
public class CustomerPrimitiveToString extends Customer {
private long balance;
diff --git a/java-strings-ops/src/main/java/com/baeldung/string/tostring/CustomerReflectionToString.java b/core-java-modules/core-java-string-operations/src/main/java/com/baeldung/tostring/CustomerReflectionToString.java
similarity index 95%
rename from java-strings-ops/src/main/java/com/baeldung/string/tostring/CustomerReflectionToString.java
rename to core-java-modules/core-java-string-operations/src/main/java/com/baeldung/tostring/CustomerReflectionToString.java
index 2a9e3700ec..ad0c57351a 100644
--- a/java-strings-ops/src/main/java/com/baeldung/string/tostring/CustomerReflectionToString.java
+++ b/core-java-modules/core-java-string-operations/src/main/java/com/baeldung/tostring/CustomerReflectionToString.java
@@ -1,4 +1,4 @@
-package com.baeldung.string.tostring;
+package com.baeldung.tostring;
import java.util.List;
diff --git a/java-strings-ops/src/main/java/com/baeldung/string/tostring/CustomerWrapperCollectionToString.java b/core-java-modules/core-java-string-operations/src/main/java/com/baeldung/tostring/CustomerWrapperCollectionToString.java
similarity index 95%
rename from java-strings-ops/src/main/java/com/baeldung/string/tostring/CustomerWrapperCollectionToString.java
rename to core-java-modules/core-java-string-operations/src/main/java/com/baeldung/tostring/CustomerWrapperCollectionToString.java
index b3ff97dc07..7b7d9e4e7d 100644
--- a/java-strings-ops/src/main/java/com/baeldung/string/tostring/CustomerWrapperCollectionToString.java
+++ b/core-java-modules/core-java-string-operations/src/main/java/com/baeldung/tostring/CustomerWrapperCollectionToString.java
@@ -1,4 +1,4 @@
-package com.baeldung.string.tostring;
+package com.baeldung.tostring;
import java.util.List;
diff --git a/java-strings-ops/src/main/java/com/baeldung/string/tostring/Order.java b/core-java-modules/core-java-string-operations/src/main/java/com/baeldung/tostring/Order.java
similarity index 95%
rename from java-strings-ops/src/main/java/com/baeldung/string/tostring/Order.java
rename to core-java-modules/core-java-string-operations/src/main/java/com/baeldung/tostring/Order.java
index 58e0fcce5a..85a5dd169f 100644
--- a/java-strings-ops/src/main/java/com/baeldung/string/tostring/Order.java
+++ b/core-java-modules/core-java-string-operations/src/main/java/com/baeldung/tostring/Order.java
@@ -1,4 +1,4 @@
-package com.baeldung.string.tostring;
+package com.baeldung.tostring;
public class Order {
diff --git a/core-java-modules/core-java-string-operations/src/main/resources/log4j.properties b/core-java-modules/core-java-string-operations/src/main/resources/log4j.properties
new file mode 100644
index 0000000000..2ea9fa9209
--- /dev/null
+++ b/core-java-modules/core-java-string-operations/src/main/resources/log4j.properties
@@ -0,0 +1,8 @@
+# Root logger option
+log4j.rootLogger=DEBUG, stdout
+
+# Redirect log messages to console
+log4j.appender.stdout=org.apache.log4j.ConsoleAppender
+log4j.appender.stdout.Target=System.out
+log4j.appender.stdout.layout=org.apache.log4j.PatternLayout
+log4j.appender.stdout.layout.ConversionPattern=%d{yyyy-MM-dd HH:mm:ss} %-5p %c{1}:%L - %m%n
\ No newline at end of file
diff --git a/java-strings-2/src/test/java/com/baeldung/base64encodinganddecoding/ApacheCommonsEncodeDecodeUnitTest.java b/core-java-modules/core-java-string-operations/src/test/java/com/baeldung/base64encodinganddecoding/ApacheCommonsEncodeDecodeUnitTest.java
similarity index 100%
rename from java-strings-2/src/test/java/com/baeldung/base64encodinganddecoding/ApacheCommonsEncodeDecodeUnitTest.java
rename to core-java-modules/core-java-string-operations/src/test/java/com/baeldung/base64encodinganddecoding/ApacheCommonsEncodeDecodeUnitTest.java
diff --git a/java-strings-2/src/test/java/com/baeldung/base64encodinganddecoding/Java8EncodeDecodeUnitTest.java b/core-java-modules/core-java-string-operations/src/test/java/com/baeldung/base64encodinganddecoding/Java8EncodeDecodeUnitTest.java
similarity index 100%
rename from java-strings-2/src/test/java/com/baeldung/base64encodinganddecoding/Java8EncodeDecodeUnitTest.java
rename to core-java-modules/core-java-string-operations/src/test/java/com/baeldung/base64encodinganddecoding/Java8EncodeDecodeUnitTest.java
diff --git a/java-strings-2/src/test/java/com/baeldung/base64encodinganddecoding/StringToByteArrayUnitTest.java b/core-java-modules/core-java-string-operations/src/test/java/com/baeldung/base64encodinganddecoding/StringToByteArrayUnitTest.java
similarity index 99%
rename from java-strings-2/src/test/java/com/baeldung/base64encodinganddecoding/StringToByteArrayUnitTest.java
rename to core-java-modules/core-java-string-operations/src/test/java/com/baeldung/base64encodinganddecoding/StringToByteArrayUnitTest.java
index e2bb7bb64d..6f8a17e316 100644
--- a/java-strings-2/src/test/java/com/baeldung/base64encodinganddecoding/StringToByteArrayUnitTest.java
+++ b/core-java-modules/core-java-string-operations/src/test/java/com/baeldung/base64encodinganddecoding/StringToByteArrayUnitTest.java
@@ -1,16 +1,15 @@
package com.baeldung.base64encodinganddecoding;
-import static org.junit.Assert.assertEquals;
-import static org.junit.Assert.assertTrue;
+import org.junit.Test;
+import javax.xml.bind.DatatypeConverter;
import java.io.UnsupportedEncodingException;
import java.nio.charset.StandardCharsets;
import java.util.Arrays;
import java.util.Base64;
-import javax.xml.bind.DatatypeConverter;
-
-import org.junit.Test;
+import static org.junit.Assert.assertEquals;
+import static org.junit.Assert.assertTrue;
public class StringToByteArrayUnitTest {
diff --git a/java-strings-ops/src/test/java/com/baeldung/string/isnumeric/CoreJavaIsNumericUnitTest.java b/core-java-modules/core-java-string-operations/src/test/java/com/baeldung/isnumeric/CoreJavaIsNumericUnitTest.java
similarity index 95%
rename from java-strings-ops/src/test/java/com/baeldung/string/isnumeric/CoreJavaIsNumericUnitTest.java
rename to core-java-modules/core-java-string-operations/src/test/java/com/baeldung/isnumeric/CoreJavaIsNumericUnitTest.java
index 6228fdb5af..6c03b00e69 100644
--- a/java-strings-ops/src/test/java/com/baeldung/string/isnumeric/CoreJavaIsNumericUnitTest.java
+++ b/core-java-modules/core-java-string-operations/src/test/java/com/baeldung/isnumeric/CoreJavaIsNumericUnitTest.java
@@ -1,4 +1,4 @@
-package com.baeldung.string.isnumeric;
+package com.baeldung.isnumeric;
import static org.assertj.core.api.Assertions.assertThat;
diff --git a/java-strings-ops/src/test/java/com/baeldung/string/isnumeric/NumberUtilsIsCreatableUnitTest.java b/core-java-modules/core-java-string-operations/src/test/java/com/baeldung/isnumeric/NumberUtilsIsCreatableUnitTest.java
similarity index 96%
rename from java-strings-ops/src/test/java/com/baeldung/string/isnumeric/NumberUtilsIsCreatableUnitTest.java
rename to core-java-modules/core-java-string-operations/src/test/java/com/baeldung/isnumeric/NumberUtilsIsCreatableUnitTest.java
index 346248cb40..3b88721ad4 100644
--- a/java-strings-ops/src/test/java/com/baeldung/string/isnumeric/NumberUtilsIsCreatableUnitTest.java
+++ b/core-java-modules/core-java-string-operations/src/test/java/com/baeldung/isnumeric/NumberUtilsIsCreatableUnitTest.java
@@ -1,4 +1,4 @@
-package com.baeldung.string.isnumeric;
+package com.baeldung.isnumeric;
import static org.assertj.core.api.Assertions.assertThat;
diff --git a/java-strings-ops/src/test/java/com/baeldung/string/isnumeric/NumberUtilsIsParsableUnitTest.java b/core-java-modules/core-java-string-operations/src/test/java/com/baeldung/isnumeric/NumberUtilsIsParsableUnitTest.java
similarity index 96%
rename from java-strings-ops/src/test/java/com/baeldung/string/isnumeric/NumberUtilsIsParsableUnitTest.java
rename to core-java-modules/core-java-string-operations/src/test/java/com/baeldung/isnumeric/NumberUtilsIsParsableUnitTest.java
index fa2f2aec6d..6b96a6efa1 100644
--- a/java-strings-ops/src/test/java/com/baeldung/string/isnumeric/NumberUtilsIsParsableUnitTest.java
+++ b/core-java-modules/core-java-string-operations/src/test/java/com/baeldung/isnumeric/NumberUtilsIsParsableUnitTest.java
@@ -1,4 +1,4 @@
-package com.baeldung.string.isnumeric;
+package com.baeldung.isnumeric;
import static org.assertj.core.api.Assertions.assertThat;
diff --git a/java-strings-ops/src/test/java/com/baeldung/string/isnumeric/RegularExpressionsUnitTest.java b/core-java-modules/core-java-string-operations/src/test/java/com/baeldung/isnumeric/RegularExpressionsUnitTest.java
similarity index 93%
rename from java-strings-ops/src/test/java/com/baeldung/string/isnumeric/RegularExpressionsUnitTest.java
rename to core-java-modules/core-java-string-operations/src/test/java/com/baeldung/isnumeric/RegularExpressionsUnitTest.java
index 0f7f0eb081..04f3de8dc5 100644
--- a/java-strings-ops/src/test/java/com/baeldung/string/isnumeric/RegularExpressionsUnitTest.java
+++ b/core-java-modules/core-java-string-operations/src/test/java/com/baeldung/isnumeric/RegularExpressionsUnitTest.java
@@ -1,4 +1,4 @@
-package com.baeldung.string.isnumeric;
+package com.baeldung.isnumeric;
import static org.assertj.core.api.Assertions.assertThat;
diff --git a/java-strings-ops/src/test/java/com/baeldung/string/isnumeric/StringUtilsIsNumericSpaceUnitTest.java b/core-java-modules/core-java-string-operations/src/test/java/com/baeldung/isnumeric/StringUtilsIsNumericSpaceUnitTest.java
similarity index 95%
rename from java-strings-ops/src/test/java/com/baeldung/string/isnumeric/StringUtilsIsNumericSpaceUnitTest.java
rename to core-java-modules/core-java-string-operations/src/test/java/com/baeldung/isnumeric/StringUtilsIsNumericSpaceUnitTest.java
index 05651cc567..0c5e52580f 100644
--- a/java-strings-ops/src/test/java/com/baeldung/string/isnumeric/StringUtilsIsNumericSpaceUnitTest.java
+++ b/core-java-modules/core-java-string-operations/src/test/java/com/baeldung/isnumeric/StringUtilsIsNumericSpaceUnitTest.java
@@ -1,4 +1,4 @@
-package com.baeldung.string.isnumeric;
+package com.baeldung.isnumeric;
import static org.assertj.core.api.Assertions.assertThat;
diff --git a/java-strings-ops/src/test/java/com/baeldung/string/isnumeric/StringUtilsIsNumericUnitTest.java b/core-java-modules/core-java-string-operations/src/test/java/com/baeldung/isnumeric/StringUtilsIsNumericUnitTest.java
similarity index 95%
rename from java-strings-ops/src/test/java/com/baeldung/string/isnumeric/StringUtilsIsNumericUnitTest.java
rename to core-java-modules/core-java-string-operations/src/test/java/com/baeldung/isnumeric/StringUtilsIsNumericUnitTest.java
index cae08874da..660426cdbb 100644
--- a/java-strings-ops/src/test/java/com/baeldung/string/isnumeric/StringUtilsIsNumericUnitTest.java
+++ b/core-java-modules/core-java-string-operations/src/test/java/com/baeldung/isnumeric/StringUtilsIsNumericUnitTest.java
@@ -1,4 +1,4 @@
-package com.baeldung.string.isnumeric;
+package com.baeldung.isnumeric;
import static org.assertj.core.api.Assertions.assertThat;
diff --git a/java-strings-ops/src/test/java/com/baeldung/string/SplitUnitTest.java b/core-java-modules/core-java-string-operations/src/test/java/com/baeldung/split/SplitUnitTest.java
similarity index 98%
rename from java-strings-ops/src/test/java/com/baeldung/string/SplitUnitTest.java
rename to core-java-modules/core-java-string-operations/src/test/java/com/baeldung/split/SplitUnitTest.java
index 1936bfb6fb..eaa61e5041 100644
--- a/java-strings-ops/src/test/java/com/baeldung/string/SplitUnitTest.java
+++ b/core-java-modules/core-java-string-operations/src/test/java/com/baeldung/split/SplitUnitTest.java
@@ -1,4 +1,4 @@
-package com.baeldung.string;
+package com.baeldung.split;
import static org.assertj.core.api.Assertions.assertThat;
diff --git a/java-strings/src/test/java/com/baeldung/string/JoinerSplitterUnitTest.java b/core-java-modules/core-java-string-operations/src/test/java/com/baeldung/streamoperations/JoinerSplitterUnitTest.java
similarity index 98%
rename from java-strings/src/test/java/com/baeldung/string/JoinerSplitterUnitTest.java
rename to core-java-modules/core-java-string-operations/src/test/java/com/baeldung/streamoperations/JoinerSplitterUnitTest.java
index a9488e27a4..2a0f03d3a8 100644
--- a/java-strings/src/test/java/com/baeldung/string/JoinerSplitterUnitTest.java
+++ b/core-java-modules/core-java-string-operations/src/test/java/com/baeldung/streamoperations/JoinerSplitterUnitTest.java
@@ -1,4 +1,4 @@
-package com.baeldung.string;
+package com.baeldung.streamoperations;
import org.junit.Test;
diff --git a/java-strings-ops/src/test/java/com/baeldung/string/StringComparisonUnitTest.java b/core-java-modules/core-java-string-operations/src/test/java/com/baeldung/stringcomparison/StringComparisonUnitTest.java
similarity index 99%
rename from java-strings-ops/src/test/java/com/baeldung/string/StringComparisonUnitTest.java
rename to core-java-modules/core-java-string-operations/src/test/java/com/baeldung/stringcomparison/StringComparisonUnitTest.java
index 5339a0c72e..0bab708fde 100644
--- a/java-strings-ops/src/test/java/com/baeldung/string/StringComparisonUnitTest.java
+++ b/core-java-modules/core-java-string-operations/src/test/java/com/baeldung/stringcomparison/StringComparisonUnitTest.java
@@ -1,4 +1,4 @@
-package com.baeldung.string;
+package com.baeldung.stringcomparison;
import static org.assertj.core.api.Assertions.assertThat;
diff --git a/java-strings-ops/src/test/java/com/baeldung/string/SubstringUnitTest.java b/core-java-modules/core-java-string-operations/src/test/java/com/baeldung/substring/SubstringUnitTest.java
similarity index 98%
rename from java-strings-ops/src/test/java/com/baeldung/string/SubstringUnitTest.java
rename to core-java-modules/core-java-string-operations/src/test/java/com/baeldung/substring/SubstringUnitTest.java
index eb397f2a3f..00340ba7cc 100644
--- a/java-strings-ops/src/test/java/com/baeldung/string/SubstringUnitTest.java
+++ b/core-java-modules/core-java-string-operations/src/test/java/com/baeldung/substring/SubstringUnitTest.java
@@ -1,4 +1,4 @@
-package com.baeldung.string;
+package com.baeldung.substring;
import java.util.Scanner;
import java.util.regex.Matcher;
diff --git a/java-strings-2/src/test/java/com/baeldung/string/search/SubstringSearchUnitTest.java b/core-java-modules/core-java-string-operations/src/test/java/com/baeldung/substringsearch/SubstringSearchUnitTest.java
similarity index 98%
rename from java-strings-2/src/test/java/com/baeldung/string/search/SubstringSearchUnitTest.java
rename to core-java-modules/core-java-string-operations/src/test/java/com/baeldung/substringsearch/SubstringSearchUnitTest.java
index 293e6d2125..c641ccbe07 100644
--- a/java-strings-2/src/test/java/com/baeldung/string/search/SubstringSearchUnitTest.java
+++ b/core-java-modules/core-java-string-operations/src/test/java/com/baeldung/substringsearch/SubstringSearchUnitTest.java
@@ -1,12 +1,12 @@
-package com.baeldung.string.search;
-
-import java.util.regex.Matcher;
-import java.util.regex.Pattern;
+package com.baeldung.substringsearch;
import org.apache.commons.lang3.StringUtils;
import org.junit.Assert;
import org.junit.Test;
+import java.util.regex.Matcher;
+import java.util.regex.Pattern;
+
/**
* BAEL-2832: Different ways to check if a Substring could be found in a String.
*/
diff --git a/java-strings-ops/src/test/java/com/baeldung/string/tostring/CustomerArrayToStringUnitTest.java b/core-java-modules/core-java-string-operations/src/test/java/com/baeldung/tostring/CustomerArrayToStringUnitTest.java
similarity index 95%
rename from java-strings-ops/src/test/java/com/baeldung/string/tostring/CustomerArrayToStringUnitTest.java
rename to core-java-modules/core-java-string-operations/src/test/java/com/baeldung/tostring/CustomerArrayToStringUnitTest.java
index ced8b15f2e..a754ed3c68 100644
--- a/java-strings-ops/src/test/java/com/baeldung/string/tostring/CustomerArrayToStringUnitTest.java
+++ b/core-java-modules/core-java-string-operations/src/test/java/com/baeldung/tostring/CustomerArrayToStringUnitTest.java
@@ -1,4 +1,4 @@
-package com.baeldung.string.tostring;
+package com.baeldung.tostring;
import static org.junit.jupiter.api.Assertions.assertEquals;
diff --git a/java-strings-ops/src/test/java/com/baeldung/string/tostring/CustomerComplexObjectToStringUnitTest.java b/core-java-modules/core-java-string-operations/src/test/java/com/baeldung/tostring/CustomerComplexObjectToStringUnitTest.java
similarity index 95%
rename from java-strings-ops/src/test/java/com/baeldung/string/tostring/CustomerComplexObjectToStringUnitTest.java
rename to core-java-modules/core-java-string-operations/src/test/java/com/baeldung/tostring/CustomerComplexObjectToStringUnitTest.java
index 564fde8766..1b26d3e0a2 100644
--- a/java-strings-ops/src/test/java/com/baeldung/string/tostring/CustomerComplexObjectToStringUnitTest.java
+++ b/core-java-modules/core-java-string-operations/src/test/java/com/baeldung/tostring/CustomerComplexObjectToStringUnitTest.java
@@ -1,4 +1,4 @@
-package com.baeldung.string.tostring;
+package com.baeldung.tostring;
import static org.junit.jupiter.api.Assertions.assertEquals;
diff --git a/java-strings-ops/src/test/java/com/baeldung/string/tostring/CustomerPrimitiveToStringUnitTest.java b/core-java-modules/core-java-string-operations/src/test/java/com/baeldung/tostring/CustomerPrimitiveToStringUnitTest.java
similarity index 94%
rename from java-strings-ops/src/test/java/com/baeldung/string/tostring/CustomerPrimitiveToStringUnitTest.java
rename to core-java-modules/core-java-string-operations/src/test/java/com/baeldung/tostring/CustomerPrimitiveToStringUnitTest.java
index f585a8a26c..a21ab1616f 100644
--- a/java-strings-ops/src/test/java/com/baeldung/string/tostring/CustomerPrimitiveToStringUnitTest.java
+++ b/core-java-modules/core-java-string-operations/src/test/java/com/baeldung/tostring/CustomerPrimitiveToStringUnitTest.java
@@ -1,4 +1,4 @@
-package com.baeldung.string.tostring;
+package com.baeldung.tostring;
import static org.junit.jupiter.api.Assertions.assertEquals;
diff --git a/java-strings-ops/src/test/java/com/baeldung/string/tostring/CustomerWrapperCollectionToStringUnitTest.java b/core-java-modules/core-java-string-operations/src/test/java/com/baeldung/tostring/CustomerWrapperCollectionToStringUnitTest.java
similarity index 96%
rename from java-strings-ops/src/test/java/com/baeldung/string/tostring/CustomerWrapperCollectionToStringUnitTest.java
rename to core-java-modules/core-java-string-operations/src/test/java/com/baeldung/tostring/CustomerWrapperCollectionToStringUnitTest.java
index 9b3f8a1a6f..da4937ccdd 100644
--- a/java-strings-ops/src/test/java/com/baeldung/string/tostring/CustomerWrapperCollectionToStringUnitTest.java
+++ b/core-java-modules/core-java-string-operations/src/test/java/com/baeldung/tostring/CustomerWrapperCollectionToStringUnitTest.java
@@ -1,4 +1,4 @@
-package com.baeldung.string.tostring;
+package com.baeldung.tostring;
import static org.junit.jupiter.api.Assertions.assertEquals;
diff --git a/core-java-modules/core-java/README.md b/core-java-modules/core-java/README.md
index 54110d9362..c65428c6af 100644
--- a/core-java-modules/core-java/README.md
+++ b/core-java-modules/core-java/README.md
@@ -31,7 +31,7 @@
- [Abstract Classes in Java](https://www.baeldung.com/java-abstract-class)
- [Guide to Character Encoding](https://www.baeldung.com/java-char-encoding)
- [Graphs in Java](https://www.baeldung.com/java-graphs)
-- [Console I/O in Java](http://www.baeldung.com/java-console-input-output)
+- [Read and Write User Input in Java](http://www.baeldung.com/java-console-input-output)
- [Formatting with printf() in Java](https://www.baeldung.com/java-printstream-printf)
- [Retrieve Fields from a Java Class Using Reflection](https://www.baeldung.com/java-reflection-class-fields)
- [Introduction to Basic Syntax in Java](https://www.baeldung.com/java-syntax)
diff --git a/core-kotlin-2/README.md b/core-kotlin-2/README.md
index ecf16c2c91..06dda396d9 100644
--- a/core-kotlin-2/README.md
+++ b/core-kotlin-2/README.md
@@ -12,4 +12,5 @@ This module contains articles about core Kotlin.
- [Split a List into Parts in Kotlin](https://www.baeldung.com/kotlin-split-list-into-parts)
- [String Comparison in Kotlin](https://www.baeldung.com/kotlin-string-comparison)
- [Guide to JVM Platform Annotations in Kotlin](https://www.baeldung.com/kotlin-jvm-annotations)
+- [Finding an Element in a List Using Kotlin](https://www.baeldung.com/kotlin-finding-element-in-list)
- More articles: [[<-- prev]](/core-kotlin)
diff --git a/ethereum/pom.xml b/ethereum/pom.xml
index f4850df844..148909e787 100644
--- a/ethereum/pom.xml
+++ b/ethereum/pom.xml
@@ -1,5 +1,5 @@
+ xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
4.0.0
com.baeldung.ethereum
ethereum
@@ -215,5 +215,4 @@
1.7.25
2.0.4.RELEASE
-
diff --git a/gradle-5/README.md b/gradle-5/README.md
index 73b6b7e12a..7c9aeff07e 100644
--- a/gradle-5/README.md
+++ b/gradle-5/README.md
@@ -1,5 +1,3 @@
-
### Relevant Articles:
- [Run a Java main Method Using Gradle](https://www.baeldung.com/gradle-run-java-main)
-
diff --git a/java-collections-maps-2/README.md b/java-collections-maps-2/README.md
index 0db83fbae7..8b33276f56 100644
--- a/java-collections-maps-2/README.md
+++ b/java-collections-maps-2/README.md
@@ -5,7 +5,7 @@ This module contains articles about Map data structures in Java.
### Relevant Articles:
- [Map of Primitives in Java](https://www.baeldung.com/java-map-primitives)
- [Copying a HashMap in Java](https://www.baeldung.com/java-copy-hashmap)
-- [Guide to Java HashMap]()
+- [A Guide to Java HashMap](https://www.baeldung.com/java-hashmap)
- [Guide to WeakHashMap in Java](https://www.baeldung.com/java-weakhashmap)
- [Map to String Conversion in Java](https://www.baeldung.com/java-map-to-string-conversion)
- [Iterate over a Map in Java](https://www.baeldung.com/java-iterate-map)
diff --git a/java-collections-maps/README.md b/java-collections-maps/README.md
index 87fefe1b9d..dfd0d47dbc 100644
--- a/java-collections-maps/README.md
+++ b/java-collections-maps/README.md
@@ -4,7 +4,7 @@ This module contains articles about Map data structures in Java.
### Relevant Articles:
- [Guide to the Guava BiMap](https://www.baeldung.com/guava-bimap)
-- [The Java HashMap Under the Hood](https://www.baeldung.com/java-hashmap)
+- [A Guide to Java HashMap](https://www.baeldung.com/java-hashmap)
- [A Guide to LinkedHashMap in Java](https://www.baeldung.com/java-linked-hashmap)
- [A Guide to TreeMap in Java](https://www.baeldung.com/java-treemap)
- [How to Store Duplicate Keys in a Map in Java?](https://www.baeldung.com/java-map-duplicate-keys)
@@ -13,4 +13,5 @@ This module contains articles about Map data structures in Java.
- [Comparing Two HashMaps in Java](https://www.baeldung.com/java-compare-hashmaps)
- [Immutable Map Implementations in Java](https://www.baeldung.com/java-immutable-maps)
- [Guide to Apache Commons MultiValuedMap](https://www.baeldung.com/apache-commons-multi-valued-map)
+- [The Java HashMap Under the Hood](https://www.baeldung.com/java-hashmap-advanced)
- More articles: [[next -->]](/../java-collections-maps-2)
diff --git a/java-strings-2/README.md b/java-strings-2/README.md
index b97df7c969..ecbdb7def9 100644
--- a/java-strings-2/README.md
+++ b/java-strings-2/README.md
@@ -5,13 +5,7 @@ This module contains articles about strings in Java.
### Relevant Articles:
- [Java Localization – Formatting Messages](https://www.baeldung.com/java-localization-messages-formatting)
-- [Check If a String Contains a Substring](https://www.baeldung.com/java-string-contains-substring)
- [Java – Generate Random String](https://www.baeldung.com/java-random-string)
-- [Java Base64 Encoding and Decoding](https://www.baeldung.com/java-base64-encode-and-decode)
-- [Concatenating Strings In Java](https://www.baeldung.com/java-strings-concatenation)
- [Java String Interview Questions and Answers](https://www.baeldung.com/java-string-interview-questions)
-- [Checking for Empty or Blank Strings in Java](https://www.baeldung.com/java-blank-empty-strings)
-- [String Initialization in Java](https://www.baeldung.com/java-string-initialization)
- [Java Multi-line String](https://www.baeldung.com/java-multiline-string)
-- [String toLowerCase and toUpperCase Methods in Java](https://www.baeldung.com/java-string-convert-case)
-- More articles: [[<-- prev>]](/java-strings) [[next -->]](/java-strings-3)
+- More articles: [[<-- prev>]](/java-strings)
diff --git a/java-strings-3/README.md b/java-strings-3/README.md
deleted file mode 100644
index 721ea5523b..0000000000
--- a/java-strings-3/README.md
+++ /dev/null
@@ -1,7 +0,0 @@
-## Java Strings Cookbooks and Examples
-
-This module contains articles about strings in Java.
-
-### Relevant Articles:
-- [Java String equalsIgnoreCase()](https://www.baeldung.com/java-string-equalsignorecase)
-- More articles: [[<-- prev>]](/java-strings-2)
diff --git a/java-strings-3/pom.xml b/java-strings-3/pom.xml
deleted file mode 100644
index 4589780c15..0000000000
--- a/java-strings-3/pom.xml
+++ /dev/null
@@ -1,161 +0,0 @@
-
- 4.0.0
- java-strings-3
- 0.1.0-SNAPSHOT
- jar
- java-strings-3
-
-
- com.baeldung
- parent-java
- 0.0.1-SNAPSHOT
- ../parent-java
-
-
-
-
- org.openjdk.jmh
- jmh-core
- ${jmh-core.version}
-
-
- org.openjdk.jmh
- jmh-generator-annprocess
- ${jmh-core.version}
-
-
- com.ibm.icu
- icu4j
- ${icu4j.version}
-
-
- com.google.guava
- guava
- ${guava.version}
-
-
- org.apache.commons
- commons-lang3
- ${commons-lang3.version}
-
-
- commons-io
- commons-io
- ${commons-io.version}
-
-
- commons-codec
- commons-codec
- ${commons-codec.version}
-
-
- junit
- junit
- ${junit.version}
- test
-
-
- org.hamcrest
- hamcrest-library
- ${org.hamcrest.version}
- test
-
-
- org.assertj
- assertj-core
- ${assertj.version}
- test
-
-
- org.bitbucket.cowwoc
- diff-match-patch
- 1.2
- test
-
-
-
-
- org.passay
- passay
- ${passay.version}
-
-
- org.apache.commons
- commons-text
- ${commons-text.version}
-
-
- com.vdurmont
- emoji-java
- ${emoji-java.version}
-
-
- org.ahocorasick
- ahocorasick
- ${ahocorasick.version}
-
-
- javax.validation
- validation-api
- ${validation-api.version}
-
-
- org.hibernate.validator
- hibernate-validator
- ${hibernate-validator.version}
-
-
- javax.el
- javax.el-api
- ${javax.el-api.version}
-
-
- org.glassfish.web
- javax.el
- ${javax.el.version}
-
-
-
-
- java-strings-3
-
-
- src/main/resources
- true
-
-
-
-
-
- org.apache.maven.plugins
- maven-compiler-plugin
- ${maven-compiler-plugin.version}
-
- ${java.version}
- ${java.version}
- -parameters
-
-
-
-
-
-
- 3.8.1
- 1.10
- 1.3.1
-
- 3.6.1
- 4.0.0
- 0.4.0
- 61.1
- 28.0-jre
- 1.4
- 2.0.0.Final
- 6.0.2.Final
- 3.0.0
- 2.2.6
-
-
-
\ No newline at end of file
diff --git a/java-strings-3/src/main/resources/.gitignore b/java-strings-3/src/main/resources/.gitignore
deleted file mode 100644
index 83c05e60c8..0000000000
--- a/java-strings-3/src/main/resources/.gitignore
+++ /dev/null
@@ -1,13 +0,0 @@
-*.class
-
-#folders#
-/target
-/neoDb*
-/data
-/src/main/webapp/WEB-INF/classes
-*/META-INF/*
-
-# Packaged files #
-*.jar
-*.war
-*.ear
\ No newline at end of file
diff --git a/java-strings-3/src/test/resources/.gitignore b/java-strings-3/src/test/resources/.gitignore
deleted file mode 100644
index 83c05e60c8..0000000000
--- a/java-strings-3/src/test/resources/.gitignore
+++ /dev/null
@@ -1,13 +0,0 @@
-*.class
-
-#folders#
-/target
-/neoDb*
-/data
-/src/main/webapp/WEB-INF/classes
-*/META-INF/*
-
-# Packaged files #
-*.jar
-*.war
-*.ear
\ No newline at end of file
diff --git a/java-strings-ops/README.md b/java-strings-ops/README.md
index e35a3808f0..4c618585f3 100644
--- a/java-strings-ops/README.md
+++ b/java-strings-ops/README.md
@@ -3,10 +3,4 @@
This module contains articles about operations on strings in Java.
### Relevant Articles:
-- [Comparing Strings in Java](https://www.baeldung.com/java-compare-strings)
-- [Check If a String Is Numeric in Java](https://www.baeldung.com/java-check-string-number)
-- [Get Substring from String in Java](https://www.baeldung.com/java-substring)
- [Guide to Java String Pool](https://www.baeldung.com/java-string-pool)
-- [Split a String in Java](https://www.baeldung.com/java-split-string)
-- [Common String Operations in Java](https://www.baeldung.com/java-string-operations)
-- [Java toString() Method](https://www.baeldung.com/java-tostring)
diff --git a/java-strings/README.md b/java-strings/README.md
index e2ffbe6453..4668ad014e 100644
--- a/java-strings/README.md
+++ b/java-strings/README.md
@@ -3,10 +3,8 @@
This module contains articles about strings in Java.
### Relevant Articles:
-- [String Operations with Java Streams](https://www.baeldung.com/java-stream-operations-on-strings)
- [Use char[] Array Over a String for Manipulating Passwords in Java?](https://www.baeldung.com/java-storing-passwords)
- [Compact Strings in Java 9](https://www.baeldung.com/java-9-compact-string)
- [String Not Empty Test Assertions in Java](https://www.baeldung.com/java-assert-string-not-empty)
- [String Performance Hints](https://www.baeldung.com/java-string-performance)
-- [Adding a Newline Character to a String in Java](https://www.baeldung.com/java-string-newline)
- More articles: [[next -->]](/java-strings-2)
diff --git a/jaxb/README.md b/jaxb/README.md
index d9d16ab70b..a471ccd39d 100644
--- a/jaxb/README.md
+++ b/jaxb/README.md
@@ -5,4 +5,3 @@ This module contains articles about JAXB.
### Relevant Articles:
- [Guide to JAXB](https://www.baeldung.com/jaxb)
- [Unmarshalling Dates Using JAXB](https://www.baeldung.com/jaxb-unmarshalling-dates)
-
diff --git a/jersey/README.md b/jersey/README.md
index 8537e07358..366e7665f3 100644
--- a/jersey/README.md
+++ b/jersey/README.md
@@ -10,4 +10,3 @@ This module contains articles about Jersey.
- [Exploring the Jersey Test Framework](https://www.baeldung.com/jersey-test)
- [Explore Jersey Request Parameters](https://www.baeldung.com/jersey-request-parameters)
- [Add a Header to a Jersey SSE Client Request](https://www.baeldung.com/jersey-sse-client-request-headers)
-
diff --git a/jhipster-5/README.md b/jhipster-5/README.md
index ba05641af0..e4a6b3c3a0 100644
--- a/jhipster-5/README.md
+++ b/jhipster-5/README.md
@@ -1,3 +1,6 @@
## JHipster 5
This module contains articles about JHipster 5. This is an aggregator module, articles are in the relevant submodules.
+
+### Relevant Articles:
+- [JHipster Authentication with an External Service](https://www.baeldung.com/jhipster-authentication-external-service)
diff --git a/jta/pom.xml b/jta/pom.xml
index b7e39c66e1..1e86a0144c 100644
--- a/jta/pom.xml
+++ b/jta/pom.xml
@@ -30,12 +30,6 @@
spring-boot-starter
-
- org.springframework.boot
- spring-boot-starter-test
- test
-
-
org.hsqldb
hsqldb
diff --git a/libraries-2/README.md b/libraries-2/README.md
index fd1f73c386..95c454edbb 100644
--- a/libraries-2/README.md
+++ b/libraries-2/README.md
@@ -18,6 +18,7 @@ Remember, for advanced libraries like [Jackson](/jackson) and [JUnit](/testing-m
- [Key Value Store with Chronicle Map](https://www.baeldung.com/java-chronicle-map)
- [Guide to MapDB](https://www.baeldung.com/mapdb)
- [A Guide to Apache Mesos](https://www.baeldung.com/apache-mesos)
-- [JasperReports with Spring](https://www.baeldung.com/spring-jasper)
+- [JasperReports with Spring](https://www.baeldung.com/spring-jasper)]
+- [Jetty ReactiveStreams HTTP Client](https://www.baeldung.com/jetty-reactivestreams-http-client)
- More articles [[<-- prev]](/libraries)
diff --git a/libraries-primitive/README.MD b/libraries-primitive/README.MD
index 086cdc0d2d..9cb89f3552 100644
--- a/libraries-primitive/README.MD
+++ b/libraries-primitive/README.MD
@@ -2,4 +2,3 @@
- [Guide to FastUtil](https://www.baeldung.com/fastutil)
- [Primitive Collections in Eclipse Collections](https://www.baeldung.com/java-eclipse-primitive-collections)
-
diff --git a/libraries-security/README.md b/libraries-security/README.md
index 68badcf12d..819bc866cf 100644
--- a/libraries-security/README.md
+++ b/libraries-security/README.md
@@ -9,3 +9,4 @@ This module contains articles about security libraries.
- [Guide to Google Tink](https://www.baeldung.com/google-tink)
- [Introduction to BouncyCastle with Java](https://www.baeldung.com/java-bouncy-castle)
- [Intro to Jasypt](https://www.baeldung.com/jasypt)
+- [Digital Signature in Java](https://www.baeldung.com/java-digital-signature)
diff --git a/libraries-testing/pom.xml b/libraries-testing/pom.xml
index a2fbed31b2..86c9bd52e1 100644
--- a/libraries-testing/pom.xml
+++ b/libraries-testing/pom.xml
@@ -125,19 +125,6 @@
${java-hamcrest.version}
test
-
-
- net.serenity-bdd
- serenity-core
- ${serenity.version}
- test
-
-
- org.asciidoctor
- asciidoctorj
-
-
-
org.asciidoctor
asciidoctor-maven-plugin
diff --git a/linux-bash/loops/README.md b/linux-bash/loops/README.md
new file mode 100644
index 0000000000..8a0514f6f0
--- /dev/null
+++ b/linux-bash/loops/README.md
@@ -0,0 +1,3 @@
+### Relevant Articles:
+
+- [Linux Commands – Looping Through Directories](https://www.baeldung.com/linux/loop-directories)
diff --git a/linux-bash/text/README.md b/linux-bash/text/README.md
new file mode 100644
index 0000000000..e0ee0c1600
--- /dev/null
+++ b/linux-bash/text/README.md
@@ -0,0 +1,3 @@
+### Relevant Articles:
+
+- [Linux Commands – Remove All Text After X](https://www.baeldung.com/linux/remove-text-after-x-in-file)
diff --git a/logging-modules/flogger/README.md b/logging-modules/flogger/README.md
new file mode 100644
index 0000000000..ad7a25e24f
--- /dev/null
+++ b/logging-modules/flogger/README.md
@@ -0,0 +1,3 @@
+### Relevant Articles:
+
+- [Flogger Fluent Logging](https://www.baeldung.com/flogger-logging)
diff --git a/logging-modules/log4j2/README.md b/logging-modules/log4j2/README.md
index dd326bc7a1..6a65ae9c02 100644
--- a/logging-modules/log4j2/README.md
+++ b/logging-modules/log4j2/README.md
@@ -5,3 +5,4 @@
- [Programmatic Configuration with Log4j 2](http://www.baeldung.com/log4j2-programmatic-config)
- [Creating a Custom Log4j2 Appender](https://www.baeldung.com/log4j2-custom-appender)
- [Get Log Output in JSON](http://www.baeldung.com/java-log-json-output)
+- [System.out.println vs Loggers](https://www.baeldung.com/java-system-out-println-vs-loggers)
diff --git a/mapstruct/README.md b/mapstruct/README.md
index be02c1186b..f5a1e1a092 100644
--- a/mapstruct/README.md
+++ b/mapstruct/README.md
@@ -5,4 +5,5 @@ This module contains articles about MapStruct.
###Relevant Articles:
- [Quick Guide to MapStruct](https://www.baeldung.com/mapstruct)
- [Custom Mapper with MapStruct](https://www.baeldung.com/mapstruct-custom-mapper)
-
+- [Using Multiple Source Objects with MapStruct](https://www.baeldung.com/mapstruct-multiple-source-objects)
+- [Ignoring Unmapped Properties with MapStruct](https://www.baeldung.com/mapstruct-ignore-unmapped-properties)
diff --git a/metrics/README.md b/metrics/README.md
index b8a1bf026f..6050b2b310 100644
--- a/metrics/README.md
+++ b/metrics/README.md
@@ -8,4 +8,3 @@ This module contains articles about metrics.
- [Introduction to Netflix Servo](https://www.baeldung.com/netflix-servo)
- [Quick Guide to Micrometer](https://www.baeldung.com/micrometer)
- [@Timed Annotation Using Metrics and AspectJ](https://www.baeldung.com/timed-metrics-aspectj)
-
diff --git a/parent-boot-2/pom.xml b/parent-boot-2/pom.xml
index edc115d186..fe272b56a3 100644
--- a/parent-boot-2/pom.xml
+++ b/parent-boot-2/pom.xml
@@ -78,6 +78,6 @@
3.3.0
1.0.22.RELEASE
- 2.1.7.RELEASE
+ 2.1.9.RELEASE
diff --git a/parent-kotlin/pom.xml b/parent-kotlin/pom.xml
index bda5fb70e7..84844dbb8b 100644
--- a/parent-kotlin/pom.xml
+++ b/parent-kotlin/pom.xml
@@ -1,6 +1,6 @@
+ xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
4.0.0
parent-kotlin
parent-kotlin
@@ -13,34 +13,34 @@
1.0.0-SNAPSHOT
-
-
- jcenter
- http://jcenter.bintray.com
-
-
- kotlin-ktor
- https://dl.bintray.com/kotlin/ktor/
-
-
- kotlin-eap
- http://dl.bintray.com/kotlin/kotlin-eap
-
-
- spring-milestone
- Spring Milestone Repository
- http://repo.spring.io/milestone
-
-
-
-
-
- kotlin-eap
- http://dl.bintray.com/kotlin/kotlin-eap
-
-
-
-
+
+
+ jcenter
+ http://jcenter.bintray.com
+
+
+ kotlin-ktor
+ https://dl.bintray.com/kotlin/ktor/
+
+
+ kotlin-eap
+ http://dl.bintray.com/kotlin/kotlin-eap
+
+
+ spring-milestone
+ Spring Milestone Repository
+ http://repo.spring.io/milestone
+
+
+
+
+
+ kotlin-eap
+ http://dl.bintray.com/kotlin/kotlin-eap
+
+
+
+
org.springframework.boot
@@ -56,15 +56,15 @@
org.jetbrains.kotlin
kotlin-stdlib-jdk8
-
-
- org.jetbrains.kotlin
- kotlin-stdlib
-
+
+
+ org.jetbrains.kotlin
+ kotlin-stdlib
+
org.jetbrains.kotlin
kotlin-reflect
-
+
org.jetbrains.kotlinx
@@ -113,9 +113,9 @@
${project.basedir}/src/main/java
${java.version}
-
- -Xjvm-default=enable
-
+
+ -Xjvm-default=enable
+
diff --git a/persistence-modules/hibernate-mapping/README.md b/persistence-modules/hibernate-mapping/README.md
index 3271f0c1b6..5bbdeecbea 100644
--- a/persistence-modules/hibernate-mapping/README.md
+++ b/persistence-modules/hibernate-mapping/README.md
@@ -8,3 +8,4 @@ This module contains articles about Object-relational Mapping (ORM) with Hiberna
- [Difference Between @Size, @Length, and @Column(length=value)](https://www.baeldung.com/jpa-size-length-column-differences)
- [Hibernate Validator Specific Constraints](https://www.baeldung.com/hibernate-validator-constraints)
- [Hibernate One to Many Annotation Tutorial](http://www.baeldung.com/hibernate-one-to-many)
+- [Hibernate @WhereJoinTable Annotation](https://www.baeldung.com/hibernate-wherejointable)
diff --git a/persistence-modules/sirix/README.md b/persistence-modules/sirix/README.md
index 161e60c2cb..ab7fb65e44 100644
--- a/persistence-modules/sirix/README.md
+++ b/persistence-modules/sirix/README.md
@@ -2,4 +2,3 @@
- [Introduction to Sirix](https://www.baeldung.com/introduction-to-sirix)
- [A Guide to SirixDB](https://www.baeldung.com/sirix)
-
diff --git a/persistence-modules/spring-boot-jdbi/README.md b/persistence-modules/spring-boot-jdbi/README.md
new file mode 100644
index 0000000000..5d171fb2ca
--- /dev/null
+++ b/persistence-modules/spring-boot-jdbi/README.md
@@ -0,0 +1,3 @@
+### Relevant Articles:
+
+- [Using JDBI with Spring Boot](https://www.baeldung.com/spring-boot-jdbi)
diff --git a/persistence-modules/spring-boot-persistence-h2/pom.xml b/persistence-modules/spring-boot-persistence-h2/pom.xml
index bd36a46144..30c727bfc8 100644
--- a/persistence-modules/spring-boot-persistence-h2/pom.xml
+++ b/persistence-modules/spring-boot-persistence-h2/pom.xml
@@ -26,11 +26,6 @@
com.h2database
h2
-
- org.springframework.boot
- spring-boot-starter-test
- test
-
diff --git a/persistence-modules/spring-boot-persistence/pom.xml b/persistence-modules/spring-boot-persistence/pom.xml
index c7cda07a1a..3ad925f16b 100644
--- a/persistence-modules/spring-boot-persistence/pom.xml
+++ b/persistence-modules/spring-boot-persistence/pom.xml
@@ -17,14 +17,17 @@
org.springframework.boot
spring-boot-starter-web
+ ${spring-boot.version}
org.springframework.boot
spring-boot-starter-thymeleaf
+ ${spring-boot.version}
org.springframework.boot
spring-boot-starter-data-jpa
+ ${spring-boot.version}
com.zaxxer
@@ -35,6 +38,7 @@
org.springframework.boot
spring-boot-starter-test
+ ${spring-boot.version}
org.mockito
@@ -99,6 +103,7 @@
2.0.1.Final
10.13.1.1
2.3.4
+ 2.1.7.RELEASE
diff --git a/persistence-modules/spring-data-jpa-2/src/main/java/com/baeldung/aggregation/model/Comment.java b/persistence-modules/spring-data-jpa-2/src/main/java/com/baeldung/aggregation/model/Comment.java
new file mode 100644
index 0000000000..26c2373cbe
--- /dev/null
+++ b/persistence-modules/spring-data-jpa-2/src/main/java/com/baeldung/aggregation/model/Comment.java
@@ -0,0 +1,85 @@
+package com.baeldung.aggregation.model;
+
+import javax.persistence.Entity;
+import javax.persistence.Id;
+import javax.persistence.ManyToOne;
+import java.util.Objects;
+
+@Entity
+public class Comment {
+ @Id
+ private Integer id;
+ private Integer year;
+ private boolean approved;
+ private String content;
+ @ManyToOne
+ private Post post;
+
+ public Comment() {
+ }
+
+ public Comment(int id, int year, boolean approved, String content, Post post) {
+ this.id = id;
+ this.year = year;
+ this.approved = approved;
+ this.content = content;
+ this.post = post;
+ }
+
+ public Integer getId() {
+ return id;
+ }
+
+ public void setId(Integer id) {
+ this.id = id;
+ }
+
+ public Integer getYear() {
+ return year;
+ }
+
+ public void setYear(Integer year) {
+ this.year = year;
+ }
+
+ public boolean isApproved() {
+ return approved;
+ }
+
+ public void setApproved(boolean approved) {
+ this.approved = approved;
+ }
+
+ public String getContent() {
+ return content;
+ }
+
+ public void setContent(String content) {
+ this.content = content;
+ }
+
+ public Post getPost() {
+ return post;
+ }
+
+ public void setPost(Post post) {
+ this.post = post;
+ }
+
+ @Override
+ public boolean equals(Object o) {
+ if (this == o) {
+ return true;
+ }
+ if (!(o instanceof Comment)) {
+ return false;
+ }
+ Comment comment = (Comment) o;
+ return getId().equals(comment.getId());
+ }
+
+ @Override
+ public int hashCode() {
+ return Objects.hash(getId());
+ }
+}
diff --git a/persistence-modules/spring-data-jpa-2/src/main/java/com/baeldung/aggregation/model/Post.java b/persistence-modules/spring-data-jpa-2/src/main/java/com/baeldung/aggregation/model/Post.java
new file mode 100644
index 0000000000..f396e080ae
--- /dev/null
+++ b/persistence-modules/spring-data-jpa-2/src/main/java/com/baeldung/aggregation/model/Post.java
@@ -0,0 +1,75 @@
+package com.baeldung.aggregation.model;
+
+import javax.persistence.Entity;
+import javax.persistence.Id;
+import javax.persistence.OneToMany;
+import java.util.List;
+import java.util.Objects;
+
+@Entity
+public class Post {
+ @Id
+ private Integer id;
+ private String title;
+ private String content;
+ @OneToMany(mappedBy = "post")
+ private List comments;
+
+ public Post() {
+ }
+
+ public Post(Integer id, String title, String content) {
+ this.id = id;
+ this.title = title;
+ this.content = content;
+ }
+
+ public Integer getId() {
+ return id;
+ }
+
+ public void setId(Integer id) {
+ this.id = id;
+ }
+
+ public String getTitle() {
+ return title;
+ }
+
+ public void setTitle(String title) {
+ this.title = title;
+ }
+
+ public String getContent() {
+ return content;
+ }
+
+ public void setContent(String content) {
+ this.content = content;
+ }
+
+ public List getComments() {
+ return comments;
+ }
+
+ public void setComments(List comments) {
+ this.comments = comments;
+ }
+
+ @Override
+ public boolean equals(Object o) {
+ if (this == o) {
+ return true;
+ }
+ if (!(o instanceof Post)) {
+ return false;
+ }
+ Post post = (Post) o;
+ return getId().equals(post.getId());
+ }
+
+ @Override
+ public int hashCode() {
+ return Objects.hash(getId());
+ }
+}
diff --git a/persistence-modules/spring-data-jpa-2/src/main/java/com/baeldung/aggregation/model/custom/CommentCount.java b/persistence-modules/spring-data-jpa-2/src/main/java/com/baeldung/aggregation/model/custom/CommentCount.java
new file mode 100644
index 0000000000..510b52a47c
--- /dev/null
+++ b/persistence-modules/spring-data-jpa-2/src/main/java/com/baeldung/aggregation/model/custom/CommentCount.java
@@ -0,0 +1,27 @@
+package com.baeldung.aggregation.model.custom;
+
+public class CommentCount {
+ private Integer year;
+ private Long total;
+
+ public CommentCount(Integer year, Long total) {
+ this.year = year;
+ this.total = total;
+ }
+
+ public Integer getYear() {
+ return year;
+ }
+
+ public void setYear(Integer year) {
+ this.year = year;
+ }
+
+ public Long getTotal() {
+ return total;
+ }
+
+ public void setTotal(Long total) {
+ this.total = total;
+ }
+}
diff --git a/persistence-modules/spring-data-jpa-2/src/main/java/com/baeldung/aggregation/model/custom/ICommentCount.java b/persistence-modules/spring-data-jpa-2/src/main/java/com/baeldung/aggregation/model/custom/ICommentCount.java
new file mode 100644
index 0000000000..acb25cfd49
--- /dev/null
+++ b/persistence-modules/spring-data-jpa-2/src/main/java/com/baeldung/aggregation/model/custom/ICommentCount.java
@@ -0,0 +1,8 @@
+package com.baeldung.aggregation.model.custom;
+
+public interface ICommentCount {
+
+ Integer getYearComment();
+
+ Long getTotalComment();
+}
diff --git a/persistence-modules/spring-data-jpa-2/src/main/java/com/baeldung/aggregation/repository/CommentRepository.java b/persistence-modules/spring-data-jpa-2/src/main/java/com/baeldung/aggregation/repository/CommentRepository.java
new file mode 100644
index 0000000000..89e9345e94
--- /dev/null
+++ b/persistence-modules/spring-data-jpa-2/src/main/java/com/baeldung/aggregation/repository/CommentRepository.java
@@ -0,0 +1,27 @@
+package com.baeldung.aggregation.repository;
+
+import com.baeldung.aggregation.model.Comment;
+import com.baeldung.aggregation.model.custom.CommentCount;
+import com.baeldung.aggregation.model.custom.ICommentCount;
+import org.springframework.data.jpa.repository.JpaRepository;
+import org.springframework.data.jpa.repository.Query;
+import org.springframework.stereotype.Repository;
+
+import java.util.List;
+
+@Repository
+public interface CommentRepository extends JpaRepository {
+
+ @Query("SELECT c.year, COUNT(c.year) FROM Comment AS c GROUP BY c.year ORDER BY c.year DESC")
+ List
- 1.5.15.RELEASE
0.0.1-SNAPSHOT
-
\ No newline at end of file
+
diff --git a/spring-boot-data/README.md b/spring-boot-data/README.md
index 513c5fed18..eb3cd5bbaa 100644
--- a/spring-boot-data/README.md
+++ b/spring-boot-data/README.md
@@ -7,3 +7,4 @@ This module contains articles about Spring Boot with Spring Data
- [Formatting JSON Dates in Spring Boot](https://www.baeldung.com/spring-boot-formatting-json-dates)
- [Rendering Exceptions in JSON with Spring](https://www.baeldung.com/spring-exceptions-json)
- [Disable Spring Data Auto Configuration](https://www.baeldung.com/spring-data-disable-auto-config)
+- [Repositories with Multiple Spring Data Modules](https://www.baeldung.com/spring-multiple-data-modules)
diff --git a/spring-boot-data/src/main/java/com/baeldung/javers/README.md b/spring-boot-data/src/main/java/com/baeldung/javers/README.md
new file mode 100644
index 0000000000..4f8dd4abff
--- /dev/null
+++ b/spring-boot-data/src/main/java/com/baeldung/javers/README.md
@@ -0,0 +1,3 @@
+### Relevant Articles
+
+- [Using JaVers for Data Model Auditing in Spring Data](https://www.baeldung.com/spring-data-javers-audit)
diff --git a/spring-boot-deployment/README.md b/spring-boot-deployment/README.md
index 6171decf2d..b6aa468098 100644
--- a/spring-boot-deployment/README.md
+++ b/spring-boot-deployment/README.md
@@ -6,4 +6,5 @@ This module contains articles about deployment of a Spring Boot Application
- [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)
\ No newline at end of file
+ - [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-kotlin/pom.xml b/spring-boot-kotlin/pom.xml
index 25508c52b9..ccb1585a75 100644
--- a/spring-boot-kotlin/pom.xml
+++ b/spring-boot-kotlin/pom.xml
@@ -30,19 +30,6 @@
-
-
-
-
- org.springframework.boot
- spring-boot-dependencies
- ${spring-boot.version}
- pom
- import
-
-
-
-
spring-snapshots
@@ -81,7 +68,6 @@
org.springframework.boot
spring-boot-starter-webflux
- ${spring-boot.version}
com.fasterxml.jackson.module
@@ -160,7 +146,6 @@
1.0.0.M7
1.0.0.BUILD-SNAPSHOT
1.2.1
- 2.2.0.M2
diff --git a/spring-boot-parent/spring-boot-with-custom-parent/pom.xml b/spring-boot-parent/spring-boot-with-custom-parent/pom.xml
index de2946fbb2..a64ebc246a 100644
--- a/spring-boot-parent/spring-boot-with-custom-parent/pom.xml
+++ b/spring-boot-parent/spring-boot-with-custom-parent/pom.xml
@@ -10,22 +10,10 @@
com.baeldung
- spring-boot-parent
- 1.0.0-SNAPSHOT
+ parent-boot-2
+ 0.0.1-SNAPSHOT
-
-
-
- org.springframework.boot
- spring-boot-dependencies
- ${spring-boot.version}
- pom
- import
-
-
-
-
org.springframework.boot
@@ -35,7 +23,6 @@
1.8
- 2.1.5.RELEASE
diff --git a/spring-boot-properties/pom.xml b/spring-boot-properties/pom.xml
index ccb9204d96..5e65aadc28 100644
--- a/spring-boot-properties/pom.xml
+++ b/spring-boot-properties/pom.xml
@@ -32,11 +32,6 @@
org.springframework.cloud
spring-cloud-starter
-
- org.springframework.boot
- spring-boot-starter-test
- test
-
com.google.guava
guava
diff --git a/spring-boot-rest/README.md b/spring-boot-rest/README.md
index ffac9335fd..3909a99c65 100644
--- a/spring-boot-rest/README.md
+++ b/spring-boot-rest/README.md
@@ -10,6 +10,7 @@ This module contains articles about Spring Boot RESTful APIs.
- [Testing REST with multiple MIME types](https://www.baeldung.com/testing-rest-api-with-multiple-media-types)
- [Testing Web APIs with Postman Collections](https://www.baeldung.com/postman-testing-collections)
- [Spring Boot Consuming and Producing JSON](https://www.baeldung.com/spring-boot-json)
+- [Error Handling for REST with Spring](https://www.baeldung.com/exception-handling-for-rest-with-spring)
### E-book
diff --git a/spring-cloud/spring-cloud-stream/README.md b/spring-cloud/spring-cloud-stream/README.md
index fd1eeccfda..1fb0647ee3 100644
--- a/spring-cloud/spring-cloud-stream/README.md
+++ b/spring-cloud/spring-cloud-stream/README.md
@@ -4,3 +4,4 @@ This module contains articles about Spring Cloud Stream
## Relevant Articles
- [Introduction to Spring Cloud Stream](http://www.baeldung.com/spring-cloud-stream)
+- [Integrating Spring with AWS Kinesis](https://www.baeldung.com/spring-aws-kinesis)
diff --git a/spring-core-2/README.md b/spring-core-2/README.md
index bcb1ce1fb4..ec6eb91306 100644
--- a/spring-core-2/README.md
+++ b/spring-core-2/README.md
@@ -15,4 +15,5 @@ This module contains articles about core Spring functionality
- [Spring Events](https://www.baeldung.com/spring-events)
- [Spring Null-Safety Annotations](https://www.baeldung.com/spring-null-safety-annotations)
- [Using @Autowired in Abstract Classes](https://www.baeldung.com/spring-autowired-abstract-class)
-- More articles: [[<-- prev]](/spring-core)
\ No newline at end of file
+- [Guide to the Spring BeanFactory](https://www.baeldung.com/spring-beanfactory)
+- More articles: [[<-- prev]](/spring-core)
diff --git a/spring-core/README.md b/spring-core/README.md
index 6d274e89f0..1f3dcb783b 100644
--- a/spring-core/README.md
+++ b/spring-core/README.md
@@ -4,9 +4,9 @@ This module contains articles about core Spring functionality
### Relevant Articles:
- [Wiring in Spring: @Autowired, @Resource and @Inject](https://www.baeldung.com/spring-annotations-resource-inject-autowire)
-- [Constructor Injection in Spring with Lombok](httsp://www.baeldung.com/spring-injection-lombok)
+- [Constructor Injection in Spring with Lombok](https://www.baeldung.com/spring-injection-lombok)
- [Introduction to Spring’s StreamUtils](https://www.baeldung.com/spring-stream-utils)
-- [XML-Based Injection in Spring](httsp://www.baeldung.com/spring-xml-injection)
+- [XML-Based Injection in Spring](https://www.baeldung.com/spring-xml-injection)
- [A Quick Guide to the Spring @Lazy Annotation](https://www.baeldung.com/spring-lazy-annotation)
- [BeanNameAware and BeanFactoryAware Interfaces in Spring](https://www.baeldung.com/spring-bean-name-factory-aware)
- [Access a File from the Classpath in a Spring Application](https://www.baeldung.com/spring-classpath-file-access)
diff --git a/spring-ejb/README.md b/spring-ejb/README.md
index 6c63c2709f..423d55ea22 100644
--- a/spring-ejb/README.md
+++ b/spring-ejb/README.md
@@ -6,7 +6,6 @@ This module contains articles about Spring with EJB
- [Guide to EJB Set-up](https://www.baeldung.com/ejb-intro)
- [Java EE Session Beans](https://www.baeldung.com/ejb-session-beans)
-- [Introduction to EJB JNDI Lookup on WildFly Application Server](httpss://www.baeldung.com/wildfly-ejb-jndi)
- [A Guide to Message Driven Beans in EJB](https://www.baeldung.com/ejb-message-driven-beans)
- [Integration Guide for Spring and EJB](https://www.baeldung.com/spring-ejb)
- [Singleton Session Bean in Java EE](https://www.baeldung.com/java-ee-singleton-session-bean)
diff --git a/spring-ejb/pom.xml b/spring-ejb/pom.xml
index 712bfc66ab..4422223c6f 100755
--- a/spring-ejb/pom.xml
+++ b/spring-ejb/pom.xml
@@ -4,6 +4,7 @@
4.0.0
com.baeldung.spring.ejb
spring-ejb
+ 1.0.0-SNAPSHOT
spring-ejb
pom
Spring EJB Tutorial
@@ -12,6 +13,7 @@
com.baeldung
parent-modules
1.0.0-SNAPSHOT
+ ../
diff --git a/spring-ejb/spring-ejb-client/README.md b/spring-ejb/spring-ejb-client/README.md
new file mode 100644
index 0000000000..9addac7867
--- /dev/null
+++ b/spring-ejb/spring-ejb-client/README.md
@@ -0,0 +1,3 @@
+### Relevant Articles:
+
+- [Introduction to EJB JNDI Lookup on WildFly Application Server](https://www.baeldung.com/wildfly-ejb-jndi)
diff --git a/spring-ejb/spring-ejb-client/pom.xml b/spring-ejb/spring-ejb-client/pom.xml
index e0348d5ae3..2dd3120532 100644
--- a/spring-ejb/spring-ejb-client/pom.xml
+++ b/spring-ejb/spring-ejb-client/pom.xml
@@ -12,13 +12,13 @@
spring-ejb
1.0.0-SNAPSHOT
-
-
+
+
org.springframework.boot
spring-boot-dependencies
- 2.0.4.RELEASE
+ ${spring-boot.version}
pom
import
@@ -61,9 +61,13 @@
org.springframework.boot
spring-boot-maven-plugin
- 2.0.4.RELEASE
+ ${spring-boot.version}
+
+ 2.0.4.RELEASE
+
+
diff --git a/spring-ejb/spring-ejb-remote/README.md b/spring-ejb/spring-ejb-remote/README.md
new file mode 100644
index 0000000000..9addac7867
--- /dev/null
+++ b/spring-ejb/spring-ejb-remote/README.md
@@ -0,0 +1,3 @@
+### Relevant Articles:
+
+- [Introduction to EJB JNDI Lookup on WildFly Application Server](https://www.baeldung.com/wildfly-ejb-jndi)
diff --git a/spring-freemarker/README.md b/spring-freemarker/README.md
index d9dfe16fbe..941777207f 100644
--- a/spring-freemarker/README.md
+++ b/spring-freemarker/README.md
@@ -5,4 +5,3 @@ This module contains articles about Spring with FreeMarker
### Relevant Articles:
- [Introduction to Using FreeMarker in Spring MVC](https://www.baeldung.com/freemarker-in-spring-mvc-tutorial)
- [FreeMarker Common Operations](https://www.baeldung.com/freemarker-operations)
-
diff --git a/spring-jinq/pom.xml b/spring-jinq/pom.xml
index f142b3ee2f..1661614fa0 100644
--- a/spring-jinq/pom.xml
+++ b/spring-jinq/pom.xml
@@ -9,8 +9,8 @@
com.baeldung
- parent-modules
- 1.0.0-SNAPSHOT
+ parent-boot-1
+ 0.0.1-SNAPSHOT
@@ -59,20 +59,7 @@
-
-
-
- org.springframework.boot
- spring-boot-dependencies
- ${spring-boot.version}
- pom
- import
-
-
-
-
- 1.5.9.RELEASE
1.8.22
diff --git a/spring-mvc-simple-2/README.md b/spring-mvc-simple-2/README.md
index c03fa6363a..cff8891a1a 100644
--- a/spring-mvc-simple-2/README.md
+++ b/spring-mvc-simple-2/README.md
@@ -6,4 +6,8 @@ This module contains articles about Spring MVC
- [How to Read HTTP Headers in Spring REST Controllers](https://www.baeldung.com/spring-rest-http-headers)
- [A Custom Data Binder in Spring MVC](https://www.baeldung.com/spring-mvc-custom-data-binder)
- [Validating Lists in a Spring Controller](https://www.baeldung.com/spring-validate-list-controller)
+- [Spring Validation Message Interpolation](https://www.baeldung.com/spring-validation-message-interpolation)
+- [Using a Slash Character in Spring URLs](https://www.baeldung.com/spring-slash-character-in-url)
+- [Using Enums as Request Parameters in Spring](https://www.baeldung.com/spring-enum-request-param)
+- [Excluding URLs for a Filter in a Spring Web Application](https://www.baeldung.com/spring-exclude-filter)
- More articles: [[<-- prev]](/spring-mvc-simple)
diff --git a/spring-mvc-xml/README.md b/spring-mvc-xml/README.md
index bc530ba295..44a20e1527 100644
--- a/spring-mvc-xml/README.md
+++ b/spring-mvc-xml/README.md
@@ -15,5 +15,6 @@ The "REST With Spring" Classes: http://bit.ly/restwithspring
- [A Java Web Application Without a web.xml](https://www.baeldung.com/java-web-app-without-web-xml)
- [Validating RequestParams and PathVariables in Spring](https://www.baeldung.com/spring-validate-requestparam-pathvariable)
- [Debugging the Spring MVC 404 “No mapping found for HTTP request” Error](https://www.baeldung.com/spring-mvc-404-error)
+
## Spring MVC with XML Configuration Example Project
- access a sample jsp page at: `http://localhost:8080/spring-mvc-xml/sample.html`
diff --git a/spring-rest-full/pom.xml b/spring-rest-full/pom.xml
index 5bc3a70ed5..a2736ba03c 100644
--- a/spring-rest-full/pom.xml
+++ b/spring-rest-full/pom.xml
@@ -125,6 +125,7 @@
xml-apis
xml-apis
+ ${xml-apis.version}
org.javassist
@@ -284,6 +285,7 @@
1.4.9
+ 1.4.01
19.0
@@ -294,4 +296,4 @@
1.1.3
-
\ No newline at end of file
+
diff --git a/spring-rest-query-language/pom.xml b/spring-rest-query-language/pom.xml
index 7ee658d8ba..293bac9479 100644
--- a/spring-rest-query-language/pom.xml
+++ b/spring-rest-query-language/pom.xml
@@ -144,6 +144,7 @@
xml-apis
xml-apis
+ ${xml-apis.version}
org.javassist
@@ -350,6 +351,7 @@
1.4.9
3.21.0-GA
+ 1.4.01
19.0
@@ -359,4 +361,4 @@
1.1.3
-
\ No newline at end of file
+
diff --git a/spring-resttemplate/README.md b/spring-resttemplate/README.md
index e98af0e787..82d8234908 100644
--- a/spring-resttemplate/README.md
+++ b/spring-resttemplate/README.md
@@ -13,3 +13,4 @@ The "REST With Spring" Classes: http://bit.ly/restwithspring
- [Mocking a RestTemplate in Spring](https://www.baeldung.com/spring-mock-rest-template)
- [RestTemplate Post Request with JSON](https://www.baeldung.com/spring-resttemplate-post-json)
- [Download a Large File Through a Spring RestTemplate](https://www.baeldung.com/spring-resttemplate-download-large-file)
+- [Copy of RestTemplate Post Request with JSON](https://www.baeldung.com/spring-resttemplate-post-json-test)
diff --git a/spring-thymeleaf-2/README.md b/spring-thymeleaf-2/README.md
index 22a73f06e1..9f727f30ca 100644
--- a/spring-thymeleaf-2/README.md
+++ b/spring-thymeleaf-2/README.md
@@ -1,7 +1,16 @@
+## Spring Thymeleaf
+
+This module contains articles about Spring with Thymeleaf
+
## Relevant Articles:
- [Working with Enums in Thymeleaf](https://www.baeldung.com/thymeleaf-enums)
- [Changing the Thymeleaf Template Directory in Spring Boot](https://www.baeldung.com/spring-thymeleaf-template-directory)
- [Spring Request Parameters with Thymeleaf](https://www.baeldung.com/spring-thymeleaf-request-parameters)
- [Thymeleaf lists Utility Object](https://www.baeldung.com/thymeleaf-lists-utility)
-
+- [Working with Arrays in Thymeleaf](https://www.baeldung.com/thymeleaf-arrays)
+- [Spring Path Variables with Thymeleaf](https://www.baeldung.com/spring-thymeleaf-path-variables)
+- [Working with Boolean in Thymeleaf](https://www.baeldung.com/thymeleaf-boolean)
+- [Working With Custom HTML Attributes in Thymeleaf](https://www.baeldung.com/thymeleaf-custom-html-attributes)
+- [How to Create an Executable JAR with Maven](https://www.baeldung.com/executable-jar-with-maven)
+- [[<-- prev]](/spring-thymeleaf)
\ No newline at end of file
diff --git a/spring-thymeleaf-2/pom.xml b/spring-thymeleaf-2/pom.xml
index d31e5fa7f6..d53bb8ab1a 100644
--- a/spring-thymeleaf-2/pom.xml
+++ b/spring-thymeleaf-2/pom.xml
@@ -35,6 +35,27 @@
org.apache.maven.plugins
maven-war-plugin
+
+
+ org.apache.tomcat.maven
+ tomcat7-maven-plugin
+ ${tomcat7-maven-plugin.version}
+
+
+ tomcat-run
+
+ exec-war-only
+
+ package
+
+ /
+ false
+ webapp.jar
+ utf-8
+
+
+
+
spring-thymeleaf-2
@@ -42,5 +63,6 @@
1.8
1.8
+ 2.2
diff --git a/spring-thymeleaf/src/main/java/com/baeldung/thymeleaf/controller/ThymeleafArrayController.java b/spring-thymeleaf-2/src/main/java/com/baeldung/thymeleaf/arrays/ThymeleafArrayController.java
similarity index 92%
rename from spring-thymeleaf/src/main/java/com/baeldung/thymeleaf/controller/ThymeleafArrayController.java
rename to spring-thymeleaf-2/src/main/java/com/baeldung/thymeleaf/arrays/ThymeleafArrayController.java
index 8276cc4376..d137cbdf94 100644
--- a/spring-thymeleaf/src/main/java/com/baeldung/thymeleaf/controller/ThymeleafArrayController.java
+++ b/spring-thymeleaf-2/src/main/java/com/baeldung/thymeleaf/arrays/ThymeleafArrayController.java
@@ -1,4 +1,4 @@
-package com.baeldung.thymeleaf.controller;
+package com.baeldung.thymeleaf.arrays;
import org.springframework.stereotype.Controller;
import org.springframework.ui.Model;
diff --git a/spring-thymeleaf/src/main/java/com/baeldung/thymeleaf/controller/BooleanExpressionsController.java b/spring-thymeleaf-2/src/main/java/com/baeldung/thymeleaf/booleanexpressions/BooleanExpressionsController.java
similarity index 96%
rename from spring-thymeleaf/src/main/java/com/baeldung/thymeleaf/controller/BooleanExpressionsController.java
rename to spring-thymeleaf-2/src/main/java/com/baeldung/thymeleaf/booleanexpressions/BooleanExpressionsController.java
index 3a640e1499..e43e08334a 100644
--- a/spring-thymeleaf/src/main/java/com/baeldung/thymeleaf/controller/BooleanExpressionsController.java
+++ b/spring-thymeleaf-2/src/main/java/com/baeldung/thymeleaf/booleanexpressions/BooleanExpressionsController.java
@@ -1,4 +1,4 @@
-package com.baeldung.thymeleaf.controller;
+package com.baeldung.thymeleaf.booleanexpressions;
import org.springframework.stereotype.Controller;
import org.springframework.ui.Model;
diff --git a/spring-thymeleaf/src/main/java/com/baeldung/thymeleaf/model/Course.java b/spring-thymeleaf-2/src/main/java/com/baeldung/thymeleaf/customhtml/Course.java
similarity index 95%
rename from spring-thymeleaf/src/main/java/com/baeldung/thymeleaf/model/Course.java
rename to spring-thymeleaf-2/src/main/java/com/baeldung/thymeleaf/customhtml/Course.java
index df2e9cd097..9bf8e5e52c 100644
--- a/spring-thymeleaf/src/main/java/com/baeldung/thymeleaf/model/Course.java
+++ b/spring-thymeleaf-2/src/main/java/com/baeldung/thymeleaf/customhtml/Course.java
@@ -1,4 +1,4 @@
-package com.baeldung.thymeleaf.model;
+package com.baeldung.thymeleaf.customhtml;
import java.util.Date;
diff --git a/spring-thymeleaf/src/main/java/com/baeldung/thymeleaf/controller/CourseRegistrationController.java b/spring-thymeleaf-2/src/main/java/com/baeldung/thymeleaf/customhtml/CourseRegistrationController.java
similarity index 83%
rename from spring-thymeleaf/src/main/java/com/baeldung/thymeleaf/controller/CourseRegistrationController.java
rename to spring-thymeleaf-2/src/main/java/com/baeldung/thymeleaf/customhtml/CourseRegistrationController.java
index 2d2b5906e1..06e81ecba8 100644
--- a/spring-thymeleaf/src/main/java/com/baeldung/thymeleaf/controller/CourseRegistrationController.java
+++ b/spring-thymeleaf-2/src/main/java/com/baeldung/thymeleaf/customhtml/CourseRegistrationController.java
@@ -1,4 +1,4 @@
-package com.baeldung.thymeleaf.controller;
+package com.baeldung.thymeleaf.customhtml;
import org.springframework.stereotype.Controller;
import org.springframework.ui.Model;
@@ -6,8 +6,6 @@ import org.springframework.web.bind.annotation.ModelAttribute;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestMethod;
-import com.baeldung.thymeleaf.model.Course;
-
/**
* Handles requests for the student model.
*
@@ -18,13 +16,13 @@ public class CourseRegistrationController {
@RequestMapping(value = "/registerCourse", method = RequestMethod.POST)
public String register(@ModelAttribute Course course, Model model) {
model.addAttribute("successMessage", "You have successfully registered for course: " + course.getName() + ".");
- return "courseRegistration.html";
+ return "templates/courseRegistration.html";
}
@RequestMapping(value = "/registerCourse", method = RequestMethod.GET)
public String register(Model model) {
model.addAttribute("course", new Course());
- return "courseRegistration.html";
+ return "templates/courseRegistration.html";
}
}
diff --git a/spring-thymeleaf-2/src/main/java/com/baeldung/thymeleaf/controller/ParticipantController.java b/spring-thymeleaf-2/src/main/java/com/baeldung/thymeleaf/requestparameters/ParticipantController.java
similarity index 94%
rename from spring-thymeleaf-2/src/main/java/com/baeldung/thymeleaf/controller/ParticipantController.java
rename to spring-thymeleaf-2/src/main/java/com/baeldung/thymeleaf/requestparameters/ParticipantController.java
index 9a354e709c..faa4ae0cf9 100644
--- a/spring-thymeleaf-2/src/main/java/com/baeldung/thymeleaf/controller/ParticipantController.java
+++ b/spring-thymeleaf-2/src/main/java/com/baeldung/thymeleaf/requestparameters/ParticipantController.java
@@ -1,4 +1,4 @@
-package com.baeldung.thymeleaf.controller;
+package com.baeldung.thymeleaf.requestparameters;
import org.springframework.stereotype.Controller;
import org.springframework.ui.Model;
diff --git a/spring-thymeleaf/src/main/webapp/WEB-INF/views/booleans.html b/spring-thymeleaf-2/src/main/resources/templates/booleans.html
similarity index 100%
rename from spring-thymeleaf/src/main/webapp/WEB-INF/views/booleans.html
rename to spring-thymeleaf-2/src/main/resources/templates/booleans.html
diff --git a/spring-thymeleaf/src/main/resources/templates/continents.html b/spring-thymeleaf-2/src/main/resources/templates/continents.html
similarity index 100%
rename from spring-thymeleaf/src/main/resources/templates/continents.html
rename to spring-thymeleaf-2/src/main/resources/templates/continents.html
diff --git a/spring-thymeleaf/src/main/webapp/WEB-INF/views/courseRegistration.html b/spring-thymeleaf-2/src/main/resources/templates/courseRegistration.html
similarity index 100%
rename from spring-thymeleaf/src/main/webapp/WEB-INF/views/courseRegistration.html
rename to spring-thymeleaf-2/src/main/resources/templates/courseRegistration.html
diff --git a/spring-thymeleaf/.gitignore b/spring-thymeleaf/.gitignore
deleted file mode 100644
index b83d22266a..0000000000
--- a/spring-thymeleaf/.gitignore
+++ /dev/null
@@ -1 +0,0 @@
-/target/
diff --git a/spring-thymeleaf/README.md b/spring-thymeleaf/README.md
index 329ef8580c..a5c6791609 100644
--- a/spring-thymeleaf/README.md
+++ b/spring-thymeleaf/README.md
@@ -9,16 +9,11 @@ This module contains articles about Spring with Thymeleaf
- [Spring and Thymeleaf 3: Expressions](https://www.baeldung.com/spring-thymeleaf-3-expressions)
- [Spring MVC + Thymeleaf 3.0: New Features](https://www.baeldung.com/spring-thymeleaf-3)
- [How to Work with Dates in Thymeleaf](https://www.baeldung.com/dates-in-thymeleaf)
-- [How to Create an Executable JAR with Maven](https://www.baeldung.com/executable-jar-with-maven)
-- [Working with Boolean in Thymeleaf](https://www.baeldung.com/thymeleaf-boolean)
- [Working with Fragments in Thymeleaf](https://www.baeldung.com/spring-thymeleaf-fragments)
- [Conditionals in Thymeleaf](https://www.baeldung.com/spring-thymeleaf-conditionals)
- [Iteration in Thymeleaf](https://www.baeldung.com/thymeleaf-iteration)
-- [Working With Arrays in Thymeleaf](https://www.baeldung.com/thymeleaf-arrays)
- [Spring with Thymeleaf Pagination for a List](https://www.baeldung.com/spring-thymeleaf-pagination)
- [Working with Select and Option in Thymeleaf](https://www.baeldung.com/thymeleaf-select-option)
-- [Working With Custom HTML Attributes in Thymeleaf](https://www.baeldung.com/thymeleaf-custom-html-attributes)
-- [Spring Request Parameters with Thymeleaf](https://www.baeldung.com/spring-thymeleaf-request-parameters)
- [[next -->]](/spring-thymeleaf-2)
### Build the Project
@@ -35,7 +30,6 @@ Access the pages using the URLs:
- http://localhost:8082/spring-thymeleaf/
- http://localhost:8082/spring-thymeleaf/addStudent/
- http://localhost:8082/spring-thymeleaf/listStudents/
- - http://localhost:8082/spring-thymeleaf/booleans/
The first URL is the home page of the application. The home page has links to the second and third pages.
diff --git a/spring-thymeleaf/pom.xml b/spring-thymeleaf/pom.xml
index cdc2ed25ae..d260a78d76 100644
--- a/spring-thymeleaf/pom.xml
+++ b/spring-thymeleaf/pom.xml
@@ -141,26 +141,6 @@
-
- org.apache.tomcat.maven
- tomcat7-maven-plugin
- ${tomcat7-maven-plugin.version}
-
-
- tomcat-run
-
- exec-war-only
-
- package
-
- /
- false
- webapp.jar
- utf-8
-
-
-
-
@@ -174,7 +154,6 @@
1.6.1
- 2.2
diff --git a/spring-thymeleaf/src/main/java/com/baeldung/thymeleaf/WorkingWithArraysInThymeleafApplication.java b/spring-thymeleaf/src/main/java/com/baeldung/thymeleaf/WorkingWithArraysInThymeleafApplication.java
deleted file mode 100644
index bce0660fda..0000000000
--- a/spring-thymeleaf/src/main/java/com/baeldung/thymeleaf/WorkingWithArraysInThymeleafApplication.java
+++ /dev/null
@@ -1,12 +0,0 @@
-// package com.baeldung.thymeleaf;
-
-// import org.springframework.boot.SpringApplication;
-// import org.springframework.boot.autoconfigure.SpringBootApplication;
-
-// @SpringBootApplication
-// public class WorkingWithArraysInThymeleafApplication {
-
-// public static void main(String[] args) {
-// SpringApplication.run(WorkingWithArraysInThymeleafApplication.class, args);
-// }
-// }
diff --git a/spring-thymeleaf/src/main/webapp/WEB-INF/views/home.html b/spring-thymeleaf/src/main/webapp/WEB-INF/views/home.html
index 25ff6a19bb..b458f7270c 100644
--- a/spring-thymeleaf/src/main/webapp/WEB-INF/views/home.html
+++ b/spring-thymeleaf/src/main/webapp/WEB-INF/views/home.html
@@ -24,9 +24,6 @@
|
-
- |
-