diff --git a/.gitignore b/.gitignore
index 248cbeae5d..90daf38dee 100644
--- a/.gitignore
+++ b/.gitignore
@@ -30,7 +30,7 @@ out/
.DS_Store
# Maven
-log/
+log/*
target/
# Gradle
diff --git a/algorithms-miscellaneous-3/README.md b/algorithms-miscellaneous-3/README.md
index 9748595a34..a1456c6b20 100644
--- a/algorithms-miscellaneous-3/README.md
+++ b/algorithms-miscellaneous-3/README.md
@@ -14,4 +14,6 @@ This module contains articles about algorithms. Some classes of algorithms, e.g.
- [A Guide to the Folding Technique in Java](https://www.baeldung.com/folding-hashing-technique)
- [Creating a Triangle with for Loops in Java](https://www.baeldung.com/java-print-triangle)
- [Efficient Word Frequency Calculator in Java](https://www.baeldung.com/java-word-frequency)
-- More articles: [[<-- prev]](/algorithms-miscellaneous-2) [[next -->]](/algorithms-miscellaneous-4)
\ No newline at end of file
+- [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)
+- More articles: [[<-- prev]](/algorithms-miscellaneous-2) [[next -->]](/algorithms-miscellaneous-4)
diff --git a/algorithms-sorting/README.md b/algorithms-sorting/README.md
index f19705f113..4fd9d5e0c6 100644
--- a/algorithms-sorting/README.md
+++ b/algorithms-sorting/README.md
@@ -12,3 +12,7 @@ This module contains articles about sorting algorithms.
- [Shell Sort in Java](https://www.baeldung.com/java-shell-sort)
- [Counting Sort in Java](https://www.baeldung.com/java-counting-sort)
- [Sorting Strings by Contained Numbers in Java](https://www.baeldung.com/java-sort-strings-contained-numbers)
+- [How an In-Place Sorting Algorithm Works](https://www.baeldung.com/java-in-place-sorting)
+- [Selection Sort in Java](https://www.baeldung.com/java-selection-sort)
+- [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)
diff --git a/apache-shiro/README.md b/apache-shiro/README.md
index 553eeecc69..ed63c569da 100644
--- a/apache-shiro/README.md
+++ b/apache-shiro/README.md
@@ -4,4 +4,6 @@ This module contains articles about Apache Shiro
### Relevant articles:
-- [Introduction to Apache Shiro](https://www.baeldung.com/apache-shiro)
\ No newline at end of file
+- [Introduction to Apache Shiro](https://www.baeldung.com/apache-shiro)
+- [Permissions-Based Access Control with Apache Shiro](https://www.baeldung.com/apache-shiro-access-control)
+
diff --git a/apache-spark/README.md b/apache-spark/README.md
index 360a18f095..52313d66bf 100644
--- a/apache-spark/README.md
+++ b/apache-spark/README.md
@@ -6,3 +6,5 @@ This module contains articles about Apache Spark
- [Introduction to Apache Spark](https://www.baeldung.com/apache-spark)
- [Building a Data Pipeline with Kafka, Spark Streaming and Cassandra](https://www.baeldung.com/kafka-spark-data-pipeline)
+- [Machine Learning with Spark MLlib](https://www.baeldung.com/spark-mlib-machine-learning)
+
diff --git a/blade/pom.xml b/blade/pom.xml
index 37615bed01..6f8a78852d 100644
--- a/blade/pom.xml
+++ b/blade/pom.xml
@@ -3,19 +3,14 @@
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd">
4.0.0
-
- com.baeldung
blade
- 1.0.0-SNAPSHOT
blade
-
-
-
-
-
-
-
+
+ com.baeldung
+ parent-modules
+ 1.0.0-SNAPSHOT
+
@@ -45,12 +40,6 @@
-
- junit
- junit
- ${junit.version}
- test
-
org.assertj
assertj-core
@@ -79,20 +68,6 @@
sample-blade-app
-
-
- org.apache.maven.plugins
- maven-surefire-plugin
- ${maven-surefire-plugin.version}
-
- 3
- true
-
- **/*LiveTest.java
-
-
-
-
org.apache.maven.plugins
maven-failsafe-plugin
@@ -172,34 +147,19 @@
-
- org.apache.maven.plugins
- maven-compiler-plugin
- ${maven-compiler-plugin.version}
-
- ${maven.compiler.source}
- ${maven.compiler.target}
- UTF-8
-
-
- 1.8
- 1.8
2.0.14.RELEASE
4.2.1
3.8.1
1.18.4
- 4.12
4.5.6
4.5.6
4.4.10
3.11.1
3.0.0-M3
0.7
- 2.21.0
- 3.7.0
diff --git a/bootique/pom.xml b/bootique/pom.xml
index 4dd9ba4833..7601321b99 100644
--- a/bootique/pom.xml
+++ b/bootique/pom.xml
@@ -42,12 +42,6 @@
bootique-test
test
-
- junit
- junit
- ${junit.version}
- test
-
diff --git a/cas/cas-server/pom.xml b/cas/cas-server/pom.xml
index 98f5f10493..8a1e602114 100644
--- a/cas/cas-server/pom.xml
+++ b/cas/cas-server/pom.xml
@@ -198,7 +198,6 @@
0.0.4
2.6
- 3.3
0.3.0
1.1.0
diff --git a/cdi/pom.xml b/cdi/pom.xml
index c98ad57495..809622a5db 100644
--- a/cdi/pom.xml
+++ b/cdi/pom.xml
@@ -36,12 +36,6 @@
${assertj-core.version}
test
-
- junit
- junit
- ${junit.version}
- test
-
org.springframework
spring-context
diff --git a/checker-plugin/pom.xml b/checker-plugin/pom.xml
index 08408366a4..63def4dbdc 100644
--- a/checker-plugin/pom.xml
+++ b/checker-plugin/pom.xml
@@ -1,7 +1,6 @@
4.0.0
- com.baeldung
checker-plugin
1.0-SNAPSHOT
checker-plugin
diff --git a/cloud-foundry-uaa/cf-uaa-oauth2-client/pom.xml b/cloud-foundry-uaa/cf-uaa-oauth2-client/pom.xml
index c6de00dbe9..fe1b919905 100644
--- a/cloud-foundry-uaa/cf-uaa-oauth2-client/pom.xml
+++ b/cloud-foundry-uaa/cf-uaa-oauth2-client/pom.xml
@@ -4,7 +4,6 @@
4.0.0
com.example
cf-uaa-oauth2-client
- 0.0.1-SNAPSHOT
uaa-client-webapp
Demo project for Spring Boot
diff --git a/cloud-foundry-uaa/cf-uaa-oauth2-resource-server/pom.xml b/cloud-foundry-uaa/cf-uaa-oauth2-resource-server/pom.xml
index 56fb23e9d8..7cd47bb7b3 100644
--- a/cloud-foundry-uaa/cf-uaa-oauth2-resource-server/pom.xml
+++ b/cloud-foundry-uaa/cf-uaa-oauth2-resource-server/pom.xml
@@ -4,7 +4,6 @@
4.0.0
com.baeldung.cfuaa
cf-uaa-oauth2-resource-server
- 0.0.1-SNAPSHOT
cf-uaa-oauth2-resource-server
Demo project for Spring Boot
diff --git a/code-generation/pom.xml b/code-generation/pom.xml
index 7aefc1b5b3..b52e558b53 100644
--- a/code-generation/pom.xml
+++ b/code-generation/pom.xml
@@ -1,7 +1,6 @@
4.0.0
- com.baeldung
code-generation
1.0
code-generation
diff --git a/core-groovy-2/README.md b/core-groovy-2/README.md
index 6359592da6..f1984f18f4 100644
--- a/core-groovy-2/README.md
+++ b/core-groovy-2/README.md
@@ -11,4 +11,5 @@ This module contains articles about core Groovy concepts
- [Integrating Groovy into Java Applications](https://www.baeldung.com/groovy-java-applications)
- [Concatenate Strings with Groovy](https://www.baeldung.com/groovy-concatenate-strings)
- [Metaprogramming in Groovy](https://www.baeldung.com/groovy-metaprogramming)
-- [[<-- Prev]](/core-groovy)
\ No newline at end of file
+- [A Quick Guide to Working with Web Services in Groovy](https://www.baeldung.com/groovy-web-services)
+- [[<-- Prev]](/core-groovy)
diff --git a/core-groovy-2/pom.xml b/core-groovy-2/pom.xml
index 91e31d4cba..08526bac9a 100644
--- a/core-groovy-2/pom.xml
+++ b/core-groovy-2/pom.xml
@@ -181,10 +181,8 @@
2.4.0
1.1-groovy-2.4
1.1.3
- 3.8.1
1.2.3
2.5.7
- UTF-8
diff --git a/core-groovy/pom.xml b/core-groovy/pom.xml
index 029e5460ab..80d6f8d2d5 100644
--- a/core-groovy/pom.xml
+++ b/core-groovy/pom.xml
@@ -109,9 +109,6 @@
1.0.0
-
-
-
2.5.6
2.5.6
2.5.6
diff --git a/core-java-modules/core-java-8-2/pom.xml b/core-java-modules/core-java-8-2/pom.xml
index 07bb3b7543..269631e0dd 100644
--- a/core-java-modules/core-java-8-2/pom.xml
+++ b/core-java-modules/core-java-8-2/pom.xml
@@ -3,7 +3,6 @@
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
4.0.0
- com.baeldung
core-java-8-2
0.1.0-SNAPSHOT
core-java-8-2
@@ -30,24 +29,7 @@
-
-
-
- org.apache.maven.plugins
- maven-compiler-plugin
- ${maven-compiler-plugin.version}
-
- ${maven.compiler.source}
- ${maven.compiler.target}
-
-
-
-
-
- UTF-8
- 1.8
- 1.8
64.2
3.12.2
diff --git a/core-java-modules/core-java-8/pom.xml b/core-java-modules/core-java-8/pom.xml
index 9ef3cd1201..074359ae54 100644
--- a/core-java-modules/core-java-8/pom.xml
+++ b/core-java-modules/core-java-8/pom.xml
@@ -1,7 +1,6 @@
4.0.0
- com.baeldung
core-java-8
0.1.0-SNAPSHOT
core-java-8
@@ -20,31 +19,11 @@
commons-collections4
${commons-collections4.version}
-
- commons-io
- commons-io
- ${commons-io.version}
-
-
- org.apache.commons
- commons-lang3
- ${commons-lang3.version}
-
-
- org.apache.commons
- commons-math3
- ${commons-math3.version}
-
log4j
log4j
${log4j.version}
-
- commons-codec
- commons-codec
- ${commons-codec.version}
-
org.projectlombok
lombok
@@ -58,64 +37,6 @@
${assertj.version}
test
-
- com.jayway.awaitility
- awaitility
- ${avaitility.version}
- test
-
-
- org.openjdk.jmh
- jmh-core
- ${jmh-core.version}
-
-
- org.openjdk.jmh
- jmh-generator-annprocess
- ${jmh-generator.version}
-
-
- org.openjdk.jmh
- jmh-generator-bytecode
- ${jmh-generator.version}
-
-
- com.codepoetics
- protonpack
- ${protonpack.version}
-
-
- io.vavr
- vavr
- ${vavr.version}
-
-
- joda-time
- joda-time
- ${joda.version}
-
-
- org.aspectj
- aspectjrt
- ${asspectj.version}
-
-
- org.aspectj
- aspectjweaver
- ${asspectj.version}
-
-
- org.powermock
- powermock-module-junit4
- ${powermock.version}
- test
-
-
- org.powermock
- powermock-api-mockito2
- ${powermock.version}
- test
-
@@ -149,22 +70,10 @@
- 3.6.1
4.1
- 4.01
- 1.10
- 0.9.0
- 1.13
- 2.10
3.6.1
- 1.8.9
- 2.0.0-RC.4
- 1.7.0
- 1.19
- 1.19
- 2.0.4.RELEASE
- 2.22.1
+ 2.0.4.RELEASE
diff --git a/core-java-modules/core-java-annotations/pom.xml b/core-java-modules/core-java-annotations/pom.xml
index 7d7d7d4f7e..92b5afbd47 100644
--- a/core-java-modules/core-java-annotations/pom.xml
+++ b/core-java-modules/core-java-annotations/pom.xml
@@ -1,7 +1,6 @@
4.0.0
- com.baeldung
core-java-annotations
0.1.0-SNAPSHOT
core-java-annotations
@@ -14,42 +13,6 @@
../../parent-java
-
-
- org.apache.commons
- commons-lang3
- ${commons-lang3.version}
-
-
- org.projectlombok
- lombok
- ${lombok.version}
- provided
-
-
-
- org.assertj
- assertj-core
- ${assertj.version}
- test
-
-
- org.openjdk.jmh
- jmh-core
- ${jmh-core.version}
-
-
- org.openjdk.jmh
- jmh-generator-annprocess
- ${jmh-generator.version}
-
-
- org.openjdk.jmh
- jmh-generator-bytecode
- ${jmh-generator.version}
-
-
-
core-java-annotations
@@ -60,13 +23,4 @@
-
-
- 3.6.1
- 1.8.9
- 1.19
- 1.19
-
- 2.22.1
-
diff --git a/core-java-modules/core-java-arrays-2/pom.xml b/core-java-modules/core-java-arrays-2/pom.xml
index bfe8a349e1..a1da169f2f 100644
--- a/core-java-modules/core-java-arrays-2/pom.xml
+++ b/core-java-modules/core-java-arrays-2/pom.xml
@@ -1,7 +1,6 @@
4.0.0
- com.baeldung
core-java-arrays-2
0.1.0-SNAPSHOT
core-java-arrays-2
diff --git a/core-java-modules/core-java-arrays/pom.xml b/core-java-modules/core-java-arrays/pom.xml
index 23db608abc..ca4e262ff9 100644
--- a/core-java-modules/core-java-arrays/pom.xml
+++ b/core-java-modules/core-java-arrays/pom.xml
@@ -1,7 +1,6 @@
4.0.0
- com.baeldung
core-java-arrays
0.1.0-SNAPSHOT
core-java-arrays
@@ -20,16 +19,6 @@
commons-lang3
${commons-lang3.version}
-
- log4j
- log4j
- ${log4j.version}
-
-
- org.slf4j
- log4j-over-slf4j
- ${org.slf4j.version}
-
org.assertj
@@ -47,11 +36,6 @@
jmh-generator-annprocess
${jmh-generator-annprocess.version}
-
- org.springframework
- spring-web
- ${springframework.spring-web.version}
-
@@ -64,21 +48,6 @@
-
- org.apache.maven.plugins
- maven-surefire-plugin
-
-
- **/*LiveTest.java
- **/*IntegrationTest.java
- **/*IntTest.java
- **/*LongRunningUnitTest.java
- **/*ManualTest.java
-
- true
-
-
-
org.apache.maven.plugins
maven-dependency-plugin
@@ -398,8 +367,6 @@
3.10.0
- 2.21.0
- 4.3.4.RELEASE
3.0.0-M1
3.0.2
1.4.4
diff --git a/core-java-modules/core-java-collections-2/pom.xml b/core-java-modules/core-java-collections-2/pom.xml
index 0ac53ec180..217c1d9258 100644
--- a/core-java-modules/core-java-collections-2/pom.xml
+++ b/core-java-modules/core-java-collections-2/pom.xml
@@ -2,7 +2,6 @@
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
4.0.0
core-java-collections-2
- 0.0.1-SNAPSHOT
core-java-collections-2
jar
diff --git a/core-java-modules/core-java-collections-array-list/README.md b/core-java-modules/core-java-collections-array-list/README.md
index 4423a77c78..302ea82130 100644
--- a/core-java-modules/core-java-collections-array-list/README.md
+++ b/core-java-modules/core-java-collections-array-list/README.md
@@ -7,4 +7,6 @@ This module contains articles about the Java ArrayList collection
- [Guide to the Java ArrayList](http://www.baeldung.com/java-arraylist)
- [Add Multiple Items to an Java ArrayList](http://www.baeldung.com/java-add-items-array-list)
- [ClassCastException: Arrays$ArrayList cannot be cast to ArrayList](https://www.baeldung.com/java-classcastexception-arrays-arraylist)
-- [Multi Dimensional ArrayList in Java](https://www.baeldung.com/java-multi-dimensional-arraylist)
\ No newline at end of file
+- [Multi Dimensional ArrayList in Java](https://www.baeldung.com/java-multi-dimensional-arraylist)
+- [Removing an Element From an ArrayList](https://www.baeldung.com/java-arraylist-remove-element)
+
diff --git a/core-java-modules/core-java-collections-array-list/pom.xml b/core-java-modules/core-java-collections-array-list/pom.xml
index 95a5f3ea36..249103152a 100644
--- a/core-java-modules/core-java-collections-array-list/pom.xml
+++ b/core-java-modules/core-java-collections-array-list/pom.xml
@@ -19,28 +19,16 @@
commons-collections4
${commons-collections4.version}
-
- org.apache.commons
- commons-lang3
- ${commons-lang3.version}
-
org.assertj
assertj-core
${assertj.version}
test
-
- org.projectlombok
- lombok
- ${lombok.version}
- provided
-
4.1
- 3.8.1
3.11.1
diff --git a/core-java-modules/core-java-collections-list-2/pom.xml b/core-java-modules/core-java-collections-list-2/pom.xml
index 727de0818a..9652a7d79f 100644
--- a/core-java-modules/core-java-collections-list-2/pom.xml
+++ b/core-java-modules/core-java-collections-list-2/pom.xml
@@ -19,11 +19,6 @@
commons-collections4
${commons-collections4.version}
-
- org.apache.commons
- commons-lang3
- ${commons-lang3.version}
-
org.assertj
assertj-core
@@ -39,8 +34,7 @@
- 4.1
- 3.8.1
+ 4.1
3.11.1
diff --git a/core-java-modules/core-java-collections-list-3/pom.xml b/core-java-modules/core-java-collections-list-3/pom.xml
index 064b65d19e..dab5058cd3 100644
--- a/core-java-modules/core-java-collections-list-3/pom.xml
+++ b/core-java-modules/core-java-collections-list-3/pom.xml
@@ -19,23 +19,12 @@
commons-collections4
${commons-collections4.version}
-
- org.apache.commons
- commons-lang3
- ${commons-lang3.version}
-
org.assertj
assertj-core
${assertj.version}
test
-
- org.projectlombok
- lombok
- ${lombok.version}
- provided
-
net.sf.trove4j
@@ -67,7 +56,6 @@
4.1
- 3.8.1
3.11.1
3.0.2
8.1.0
diff --git a/core-java-modules/core-java-collections-list/pom.xml b/core-java-modules/core-java-collections-list/pom.xml
index 581505dc1e..c8e881110e 100644
--- a/core-java-modules/core-java-collections-list/pom.xml
+++ b/core-java-modules/core-java-collections-list/pom.xml
@@ -30,18 +30,11 @@
${assertj.version}
test
-
- org.projectlombok
- lombok
- ${lombok.version}
- provided
-
4.1
3.8.1
3.11.1
- 3.0.2
diff --git a/core-java-modules/core-java-collections-set/pom.xml b/core-java-modules/core-java-collections-set/pom.xml
index 101ed79de0..1dd1e06ca1 100644
--- a/core-java-modules/core-java-collections-set/pom.xml
+++ b/core-java-modules/core-java-collections-set/pom.xml
@@ -14,11 +14,6 @@
-
- com.google.guava
- guava
- ${guava.version}
-
org.apache.commons
commons-collections4
@@ -38,7 +33,6 @@
4.3
- 27.1-jre
2.8.5
\ No newline at end of file
diff --git a/core-java-modules/core-java-collections/pom.xml b/core-java-modules/core-java-collections/pom.xml
index 7fd702845b..62b42b53e7 100644
--- a/core-java-modules/core-java-collections/pom.xml
+++ b/core-java-modules/core-java-collections/pom.xml
@@ -30,12 +30,6 @@
jmh-generator-annprocess
${openjdk.jmh.version}
-
- org.projectlombok
- lombok
- ${lombok.version}
- provided
-
diff --git a/core-java-modules/core-java-concurrency-basic-2/pom.xml b/core-java-modules/core-java-concurrency-basic-2/pom.xml
index 7e0a160456..396447ff75 100644
--- a/core-java-modules/core-java-concurrency-basic-2/pom.xml
+++ b/core-java-modules/core-java-concurrency-basic-2/pom.xml
@@ -1,7 +1,6 @@
4.0.0
- com.baeldung
core-java-concurrency-basic-2
0.1.0-SNAPSHOT
core-java-concurrency-basic-2
@@ -27,7 +26,4 @@
-
-
-
diff --git a/core-java-modules/core-java-concurrency-basic/pom.xml b/core-java-modules/core-java-concurrency-basic/pom.xml
index 96b3ef76f7..93b8523eb4 100644
--- a/core-java-modules/core-java-concurrency-basic/pom.xml
+++ b/core-java-modules/core-java-concurrency-basic/pom.xml
@@ -1,7 +1,6 @@
4.0.0
- com.baeldung
core-java-concurrency-basic
0.1.0-SNAPSHOT
core-java-concurrency-basic
diff --git a/core-java-modules/core-java-concurrency-collections/pom.xml b/core-java-modules/core-java-concurrency-collections/pom.xml
index ea3bbe44f3..0d3a6042ac 100644
--- a/core-java-modules/core-java-concurrency-collections/pom.xml
+++ b/core-java-modules/core-java-concurrency-collections/pom.xml
@@ -1,7 +1,6 @@
4.0.0
- com.baeldung
core-java-concurrency-collections
0.1.0-SNAPSHOT
core-java-concurrency-collections
@@ -15,38 +14,12 @@
-
- org.apache.commons
- commons-collections4
- ${commons-collections4.version}
-
-
- commons-io
- commons-io
- ${commons-io.version}
-
-
- org.apache.commons
- commons-lang3
- ${commons-lang3.version}
-
-
- org.apache.commons
- commons-math3
- ${commons-math3.version}
-
org.assertj
assertj-core
${assertj.version}
test
-
- com.jayway.awaitility
- awaitility
- ${avaitility.version}
- test
-
@@ -60,14 +33,8 @@
-
- 21.0
- 3.6.1
- 4.1
- 4.01
3.6.1
- 1.7.0
diff --git a/core-java-modules/core-java-datetime/pom.xml b/core-java-modules/core-java-datetime/pom.xml
index e2f86c7254..800c29ef99 100644
--- a/core-java-modules/core-java-datetime/pom.xml
+++ b/core-java-modules/core-java-datetime/pom.xml
@@ -1,7 +1,6 @@
4.0.0
- com.baeldung
core-java-datetime
0.1.0-SNAPSHOT
core-java-datetime
@@ -15,17 +14,6 @@
-
- org.apache.commons
- commons-lang3
- ${commons-lang3.version}
-
-
- org.projectlombok
- lombok
- ${lombok.version}
- provided
-
org.assertj
@@ -38,11 +26,6 @@
joda-time
${joda.version}
-
- org.aspectj
- aspectjrt
- ${asspectj.version}
-
org.powermock
powermock-module-junit4
@@ -88,11 +71,9 @@
- 3.6.1
2.10
3.6.1
- 1.8.9
2.0.0-RC.4
1.44
diff --git a/core-java-modules/core-java-exceptions/README.md b/core-java-modules/core-java-exceptions/README.md
index 0120b970c3..ba327b06f2 100644
--- a/core-java-modules/core-java-exceptions/README.md
+++ b/core-java-modules/core-java-exceptions/README.md
@@ -11,3 +11,5 @@ This module contains articles about core java exceptions
- [Difference Between Throw and Throws in Java](https://www.baeldung.com/java-throw-throws)
- [“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)
+
diff --git a/core-java-modules/core-java-function/pom.xml b/core-java-modules/core-java-function/pom.xml
index 5ed7ca68c2..22b2fd9bda 100644
--- a/core-java-modules/core-java-function/pom.xml
+++ b/core-java-modules/core-java-function/pom.xml
@@ -1,7 +1,6 @@
4.0.0
- com.baeldung
core-java-function
0.1.0-SNAPSHOT
core-java-function
@@ -15,11 +14,6 @@
-
- org.apache.commons
- commons-lang3
- ${commons-lang3.version}
-
org.assertj
@@ -42,8 +36,5 @@
3.6.1
- 1.8.9
-
- 2.22.1
diff --git a/core-java-modules/core-java-io-2/README.md b/core-java-modules/core-java-io-2/README.md
new file mode 100644
index 0000000000..2299320f32
--- /dev/null
+++ b/core-java-modules/core-java-io-2/README.md
@@ -0,0 +1,6 @@
+
+### Relevant Articles:
+
+- [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)
+
diff --git a/core-java-modules/core-java-io-files/pom.xml b/core-java-modules/core-java-io-files/pom.xml
index 0f4b5eea1d..2aa6c7bf44 100644
--- a/core-java-modules/core-java-io-files/pom.xml
+++ b/core-java-modules/core-java-io-files/pom.xml
@@ -14,76 +14,6 @@
-
-
- net.sourceforge.collections
- collections-generic
- ${collections-generic.version}
-
-
- org.apache.commons
- commons-collections4
- ${commons-collections4.version}
-
-
- commons-io
- commons-io
- ${commons-io.version}
-
-
- org.apache.commons
- commons-lang3
- ${commons-lang3.version}
-
-
- org.apache.commons
- commons-math3
- ${commons-math3.version}
-
-
- org.decimal4j
- decimal4j
- ${decimal4j.version}
-
-
- org.bouncycastle
- bcprov-jdk15on
- ${bouncycastle.version}
-
-
- org.unix4j
- unix4j-command
- ${unix4j.version}
-
-
- com.googlecode.grep4j
- grep4j
- ${grep4j.version}
-
-
-
-
- com.fasterxml.jackson.core
- jackson-databind
- ${jackson.version}
-
-
-
- log4j
- log4j
- ${log4j.version}
-
-
- org.slf4j
- log4j-over-slf4j
- ${org.slf4j.version}
-
-
- org.projectlombok
- lombok
- ${lombok.version}
- provided
-
org.assertj
@@ -91,86 +21,12 @@
${assertj.version}
test
-
- com.jayway.awaitility
- awaitility
- ${avaitility.version}
- test
-
-
- commons-codec
- commons-codec
- ${commons-codec.version}
-
-
- org.javamoney
- moneta
- ${moneta.version}
-
-
- org.owasp.esapi
- esapi
- ${esapi.version}
-
-
- com.sun.messaging.mq
- fscontext
- ${fscontext.version}
-
-
- com.codepoetics
- protonpack
- ${protonpack.version}
-
-
- one.util
- streamex
- ${streamex.version}
-
-
- io.vavr
- vavr
- ${vavr.version}
-
-
- org.openjdk.jmh
- jmh-core
- ${jmh-core.version}
-
-
- org.openjdk.jmh
- jmh-generator-annprocess
- ${jmh-generator-annprocess.version}
-
org.hsqldb
hsqldb
${hsqldb.version}
runtime
-
-
- org.asynchttpclient
- async-http-client
- ${async-http-client.version}
-
-
- com.opencsv
- opencsv
- ${opencsv.version}
- test
-
-
-
- org.apache.tika
- tika-core
- ${tika.version}
-
-
- net.sf.jmimemagic
- jmimemagic
- ${jmime-magic.version}
-
@@ -262,33 +118,13 @@
-
- 1.55
- 1.10
- 3.6.1
- 1.0.3
- 4.1
- 4.01
- 0.4
- 1.8.7
- 4.6-b01
- 1.13
- 0.6.5
- 0.9.0
- 4.1
3.6.1
- 1.7.0
3.0.0-M1
2.4.0
- 2.1.0.1
- 1.19
- 2.4.5
- 1.18
- 0.1.5
3.1.0
diff --git a/core-java-modules/core-java-io/README.md b/core-java-modules/core-java-io/README.md
index 023d7d64b5..34b2f371e1 100644
--- a/core-java-modules/core-java-io/README.md
+++ b/core-java-modules/core-java-io/README.md
@@ -41,4 +41,5 @@ This module contains articles about core Java input and output (IO)
- [List Files in a Directory in Java](https://www.baeldung.com/java-list-directory-files)
- [Java InputStream to Byte Array and ByteBuffer](https://www.baeldung.com/convert-input-stream-to-array-of-bytes)
- [Introduction to the Java NIO Selector](https://www.baeldung.com/java-nio-selector)
+- [How to Avoid the Java FileNotFoundException When Loading Resources](https://www.baeldung.com/java-classpath-resource-cannot-be-opened)
- [[More -->]](/core-java-modules/core-java-io-2)
diff --git a/core-java-modules/core-java-io/pom.xml b/core-java-modules/core-java-io/pom.xml
index 84bf3baeed..c3c48ba679 100644
--- a/core-java-modules/core-java-io/pom.xml
+++ b/core-java-modules/core-java-io/pom.xml
@@ -14,76 +14,6 @@
-
-
- net.sourceforge.collections
- collections-generic
- ${collections-generic.version}
-
-
- org.apache.commons
- commons-collections4
- ${commons-collections4.version}
-
-
- commons-io
- commons-io
- ${commons-io.version}
-
-
- org.apache.commons
- commons-lang3
- ${commons-lang3.version}
-
-
- org.apache.commons
- commons-math3
- ${commons-math3.version}
-
-
- org.decimal4j
- decimal4j
- ${decimal4j.version}
-
-
- org.bouncycastle
- bcprov-jdk15on
- ${bouncycastle.version}
-
-
- org.unix4j
- unix4j-command
- ${unix4j.version}
-
-
- com.googlecode.grep4j
- grep4j
- ${grep4j.version}
-
-
-
-
- com.fasterxml.jackson.core
- jackson-databind
- ${jackson.version}
-
-
-
- log4j
- log4j
- ${log4j.version}
-
-
- org.slf4j
- log4j-over-slf4j
- ${org.slf4j.version}
-
-
- org.projectlombok
- lombok
- ${lombok.version}
- provided
-
org.assertj
@@ -91,57 +21,6 @@
${assertj.version}
test
-
- com.jayway.awaitility
- awaitility
- ${avaitility.version}
- test
-
-
- commons-codec
- commons-codec
- ${commons-codec.version}
-
-
- org.javamoney
- moneta
- ${moneta.version}
-
-
- org.owasp.esapi
- esapi
- ${esapi.version}
-
-
- com.sun.messaging.mq
- fscontext
- ${fscontext.version}
-
-
- com.codepoetics
- protonpack
- ${protonpack.version}
-
-
- one.util
- streamex
- ${streamex.version}
-
-
- io.vavr
- vavr
- ${vavr.version}
-
-
- org.openjdk.jmh
- jmh-core
- ${jmh-core.version}
-
-
- org.openjdk.jmh
- jmh-generator-annprocess
- ${jmh-generator-annprocess.version}
-
org.hsqldb
hsqldb
@@ -263,28 +142,13 @@
- 1.55
- 1.10
- 3.6.1
- 1.0.3
- 4.1
- 4.01
- 0.4
- 1.8.7
- 4.6-b01
- 1.13
- 0.6.5
- 0.9.0
4.1
3.6.1
- 1.7.0
3.0.0-M1
2.4.0
- 2.1.0.1
- 1.19
2.4.5
1.18
diff --git a/core-java-modules/core-java-jndi/README.md b/core-java-modules/core-java-jndi/README.md
new file mode 100644
index 0000000000..d9fb324c9a
--- /dev/null
+++ b/core-java-modules/core-java-jndi/README.md
@@ -0,0 +1,4 @@
+
+### Relevant Articles:
+
+- [Java Naming and Directory Interface Overview](https://www.baeldung.com/jndi)
diff --git a/core-java-modules/core-java-jvm/README.md b/core-java-modules/core-java-jvm/README.md
index 82067ad952..a1a57c83c5 100644
--- a/core-java-modules/core-java-jvm/README.md
+++ b/core-java-modules/core-java-jvm/README.md
@@ -4,3 +4,5 @@
### Relevant Articles:
- [Method Inlining in the JVM](https://www.baeldung.com/jvm-method-inlining)
+- [A Guide to System.exit()](https://www.baeldung.com/java-system-exit)
+- [Guide to System.gc()](https://www.baeldung.com/java-system-gc)
diff --git a/core-java-modules/core-java-jvm/pom.xml b/core-java-modules/core-java-jvm/pom.xml
index b1860322a6..8e8271f09b 100644
--- a/core-java-modules/core-java-jvm/pom.xml
+++ b/core-java-modules/core-java-jvm/pom.xml
@@ -1,7 +1,6 @@
4.0.0
- com.baeldung
core-java-jvm
0.1.0-SNAPSHOT
jar
@@ -14,27 +13,4 @@
../../
-
-
- junit
- junit
- ${junit.version}
- test
-
-
- org.apache.commons
- commons-lang3
- ${commons-lang3.version}
-
-
- org.assertj
- assertj-core
- ${assertj.version}
- test
-
-
-
-
- 3.6.1
-
diff --git a/core-java-modules/core-java-lang-2/README.md b/core-java-modules/core-java-lang-2/README.md
index 9904e59035..ee57ec6198 100644
--- a/core-java-modules/core-java-lang-2/README.md
+++ b/core-java-modules/core-java-lang-2/README.md
@@ -4,4 +4,5 @@ This module contains articles about core features in the Java language
### Relevant Articles:
- [Java Primitives versus Objects](https://www.baeldung.com/java-primitives-vs-objects)
-- [[<-- Prev]](/core-java-modules/core-java-lang)
\ No newline at end of file
+- [Command-Line Arguments in Java](https://www.baeldung.com/java-command-line-arguments)
+- [[<-- Prev]](/core-java-modules/core-java-lang)
diff --git a/core-java-modules/core-java-lang-2/pom.xml b/core-java-modules/core-java-lang-2/pom.xml
index fb4a5bd009..22df5f7951 100644
--- a/core-java-modules/core-java-lang-2/pom.xml
+++ b/core-java-modules/core-java-lang-2/pom.xml
@@ -1,7 +1,6 @@
4.0.0
- com.baeldung
core-java-lang-2
0.1.0-SNAPSHOT
core-java-lang-2
diff --git a/core-java-modules/core-java-lang-math/pom.xml b/core-java-modules/core-java-lang-math/pom.xml
index f3e5132e5b..f884aca3a9 100644
--- a/core-java-modules/core-java-lang-math/pom.xml
+++ b/core-java-modules/core-java-lang-math/pom.xml
@@ -1,7 +1,6 @@
4.0.0
- com.baeldung
core-java-lang-math
0.1.0-SNAPSHOT
core-java-lang-math
@@ -15,11 +14,6 @@
-
- org.apache.commons
- commons-lang3
- ${commons-lang3.version}
-
org.assertj
@@ -42,8 +36,5 @@
3.6.1
- 1.8.9
-
- 2.22.1
diff --git a/core-java-modules/core-java-lang-oop-2/README.md b/core-java-modules/core-java-lang-oop-2/README.md
index e2c30bbb40..f387e8d4a2 100644
--- a/core-java-modules/core-java-lang-oop-2/README.md
+++ b/core-java-modules/core-java-lang-oop-2/README.md
@@ -14,4 +14,5 @@ This module contains articles about Object-oriented programming (OOP) in Java
- [A Guide to Constructors in Java](https://www.baeldung.com/java-constructors)
- [Composition, Aggregation, and Association in Java](https://www.baeldung.com/java-composition-aggregation-association)
- [Static and Default Methods in Interfaces in Java](https://www.baeldung.com/java-static-default-methods)
-- [[<-- Prev]](/core-java-modules/core-java-lang-oop)[[More -->]](/core-java-modules/core-java-lang-oop-3)
\ No newline at end of file
+- [Java Copy Constructor](https://www.baeldung.com/java-copy-constructor)
+- [[<-- Prev]](/core-java-modules/core-java-lang-oop)[[More -->]](/core-java-modules/core-java-lang-oop-3)
diff --git a/core-java-modules/core-java-lang-oop-2/pom.xml b/core-java-modules/core-java-lang-oop-2/pom.xml
index e90b7ea4b3..5bca2f0dbf 100644
--- a/core-java-modules/core-java-lang-oop-2/pom.xml
+++ b/core-java-modules/core-java-lang-oop-2/pom.xml
@@ -1,7 +1,6 @@
4.0.0
- com.baeldung
core-java-lang-oop-2
0.1.0-SNAPSHOT
core-java-lang-oop-2
@@ -41,7 +40,6 @@
- 1.4.199
3.10.0
3.0.3
diff --git a/core-java-modules/core-java-lang-oop/pom.xml b/core-java-modules/core-java-lang-oop/pom.xml
index d86347b51f..bdd9857dfa 100644
--- a/core-java-modules/core-java-lang-oop/pom.xml
+++ b/core-java-modules/core-java-lang-oop/pom.xml
@@ -1,7 +1,6 @@
4.0.0
- com.baeldung
core-java-lang-oop
0.1.0-SNAPSHOT
core-java-lang-oop
@@ -32,23 +31,6 @@
gson
${gson.version}
-
-
- log4j
- log4j
- ${log4j.version}
-
-
- org.slf4j
- log4j-over-slf4j
- ${org.slf4j.version}
-
-
- org.projectlombok
- lombok
- ${lombok.version}
- provided
-
org.assertj
diff --git a/core-java-modules/core-java-lang-oop/src/test/java/com/baeldung/deepcopy/DeepCopyUnitTest.java b/core-java-modules/core-java-lang-oop/src/test/java/com/baeldung/deepcopy/DeepCopyUnitTest.java
index d6b1cd90b9..d60ab155dc 100644
--- a/core-java-modules/core-java-lang-oop/src/test/java/com/baeldung/deepcopy/DeepCopyUnitTest.java
+++ b/core-java-modules/core-java-lang-oop/src/test/java/com/baeldung/deepcopy/DeepCopyUnitTest.java
@@ -25,7 +25,7 @@ public class DeepCopyUnitTest {
}
@Test
- public void whenModifyingOriginalObject_thenConstructorCopyShouldNotChange() {
+ public void whenModifyingOriginalObject_thenCopyShouldNotChange() {
Address address = new Address("Downing St 10", "London", "England");
User pm = new User("Prime", "Minister", address);
User deepCopy = new User(pm);
@@ -125,4 +125,13 @@ public class DeepCopyUnitTest {
end = System.currentTimeMillis();
System.out.println("Cloning with Jackson took " + (end - start) + " milliseconds.");
}
+
+ @Test
+ public void whenModifyingOriginalObject_ThenCopyShouldChange() {
+ Address address = new Address("Downing St 10", "London", "England");
+ User pm = new User("Prime", "Minister", address);
+ User shallowCopy = new User(pm.getFirstName(), pm.getLastName(), pm.getAddress());
+ address.setCountry("Great Britain");
+ assertThat(shallowCopy.getAddress().getCountry()).isEqualTo(pm.getAddress().getCountry());
+ }
}
diff --git a/core-java-modules/core-java-lang-operators/README.md b/core-java-modules/core-java-lang-operators/README.md
index f9fa49ee0d..c4f5049d61 100644
--- a/core-java-modules/core-java-lang-operators/README.md
+++ b/core-java-modules/core-java-lang-operators/README.md
@@ -5,3 +5,5 @@
- [Java instanceof Operator](https://www.baeldung.com/java-instanceof)
- [A Guide to Increment and Decrement Unary Operators in Java](https://www.baeldung.com/java-unary-operators)
- [Java Compound Operators](https://www.baeldung.com/java-compound-operators)
+- [The XOR Operator in Java](https://www.baeldung.com/java-xor-operator)
+
diff --git a/core-java-modules/core-java-lang-operators/pom.xml b/core-java-modules/core-java-lang-operators/pom.xml
index 58cab9d507..81865552dd 100644
--- a/core-java-modules/core-java-lang-operators/pom.xml
+++ b/core-java-modules/core-java-lang-operators/pom.xml
@@ -2,7 +2,6 @@
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
4.0.0
- com.baeldung
core-java-lang-operators
0.1.0-SNAPSHOT
core-java-lang-operators
diff --git a/core-java-modules/core-java-lang-syntax-2/pom.xml b/core-java-modules/core-java-lang-syntax-2/pom.xml
index 1a8316628f..98eea99fc0 100644
--- a/core-java-modules/core-java-lang-syntax-2/pom.xml
+++ b/core-java-modules/core-java-lang-syntax-2/pom.xml
@@ -1,7 +1,6 @@
4.0.0
- com.baeldung
core-java-lang-syntax-2
0.1.0-SNAPSHOT
core-java-lang-syntax-2
diff --git a/core-java-modules/core-java-lang-syntax/pom.xml b/core-java-modules/core-java-lang-syntax/pom.xml
index 46fa8d1206..f4549b689d 100644
--- a/core-java-modules/core-java-lang-syntax/pom.xml
+++ b/core-java-modules/core-java-lang-syntax/pom.xml
@@ -1,7 +1,6 @@
4.0.0
- com.baeldung
core-java-lang-syntax
0.1.0-SNAPSHOT
core-java-lang-syntax
diff --git a/core-java-modules/core-java-lang-syntax/src/main/java/com/baeldung/generics/Generics.java b/core-java-modules/core-java-lang-syntax/src/main/java/com/baeldung/generics/Generics.java
index 1c4082c58b..b8d4aa3263 100644
--- a/core-java-modules/core-java-lang-syntax/src/main/java/com/baeldung/generics/Generics.java
+++ b/core-java-modules/core-java-lang-syntax/src/main/java/com/baeldung/generics/Generics.java
@@ -35,4 +35,11 @@ public class Generics {
return list;
}
+ public List genericMethod(List list) {
+ return list.stream().collect(Collectors.toList());
+ }
+
+ public List
diff --git a/core-java-modules/core-java-security/README.md b/core-java-modules/core-java-security/README.md
index 48fd071396..7386d04e8e 100644
--- a/core-java-modules/core-java-security/README.md
+++ b/core-java-modules/core-java-security/README.md
@@ -14,3 +14,5 @@ This module contains articles about core Java Security
- [Enabling TLS v1.2 in Java 7](https://www.baeldung.com/java-7-tls-v12)
- [The Java SecureRandom Class](https://www.baeldung.com/java-secure-random)
- [An Introduction to Java SASL](https://www.baeldung.com/java-sasl)
+- [A Guide to Java GSS API](https://www.baeldung.com/java-gss)
+
diff --git a/core-java-modules/core-java-security/pom.xml b/core-java-modules/core-java-security/pom.xml
index d3efb26fe8..e882fd823e 100644
--- a/core-java-modules/core-java-security/pom.xml
+++ b/core-java-modules/core-java-security/pom.xml
@@ -1,7 +1,6 @@
4.0.0
- com.baeldung
core-java-security
0.1.0-SNAPSHOT
core-java-security
@@ -15,11 +14,6 @@
-
- org.apache.commons
- commons-lang3
- ${commons-lang3.version}
-
org.assertj
diff --git a/core-java-modules/core-java-streams/pom.xml b/core-java-modules/core-java-streams/pom.xml
index 4ff8e8aaba..96d97f3759 100644
--- a/core-java-modules/core-java-streams/pom.xml
+++ b/core-java-modules/core-java-streams/pom.xml
@@ -1,7 +1,6 @@
4.0.0
- com.baeldung
core-java-streams
0.1.0-SNAPSHOT
core-java-streams
@@ -15,17 +14,6 @@
-
- org.apache.commons
- commons-lang3
- ${commons-lang3.version}
-
-
- org.projectlombok
- lombok
- ${lombok.version}
- provided
-
org.assertj
@@ -48,7 +36,5 @@
3.6.1
-
- 2.22.1
diff --git a/core-java-modules/core-java-string-conversions-2/README.md b/core-java-modules/core-java-string-conversions-2/README.md
new file mode 100644
index 0000000000..b4da1b8bad
--- /dev/null
+++ b/core-java-modules/core-java-string-conversions-2/README.md
@@ -0,0 +1,9 @@
+## Java String Conversions
+
+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)
+- More articles: [[<-- prev]](/core-java-string-conversions)
diff --git a/core-java-modules/core-java-string-conversions-2/pom.xml b/core-java-modules/core-java-string-conversions-2/pom.xml
new file mode 100644
index 0000000000..396d836e6b
--- /dev/null
+++ b/core-java-modules/core-java-string-conversions-2/pom.xml
@@ -0,0 +1,47 @@
+
+ 4.0.0
+ core-java-string-conversions-2
+ 0.1.0-SNAPSHOT
+ jar
+ core-java-string-conversions-2
+
+
+ com.baeldung
+ parent-java
+ 0.0.1-SNAPSHOT
+ ../../parent-java
+
+
+
+
+ com.google.guava
+ guava
+ ${guava.version}
+
+
+ junit
+ junit
+ ${junit.version}
+ test
+
+
+ org.hamcrest
+ hamcrest-library
+ ${org.hamcrest.version}
+ test
+
+
+
+
+ core-java-string-conversions-2
+
+
+ src/main/resources
+ true
+
+
+
+
+
+
diff --git a/java-strings-ops/src/main/java/com/baeldung/datetime/UseLocalDateTime.java b/core-java-modules/core-java-string-conversions-2/src/main/java/com/baeldung/stringconversions/UseLocalDateTime.java
similarity index 84%
rename from java-strings-ops/src/main/java/com/baeldung/datetime/UseLocalDateTime.java
rename to core-java-modules/core-java-string-conversions-2/src/main/java/com/baeldung/stringconversions/UseLocalDateTime.java
index 7f39ac2f91..7b43c3b588 100644
--- a/java-strings-ops/src/main/java/com/baeldung/datetime/UseLocalDateTime.java
+++ b/core-java-modules/core-java-string-conversions-2/src/main/java/com/baeldung/stringconversions/UseLocalDateTime.java
@@ -1,4 +1,4 @@
-package com.baeldung.datetime;
+package com.baeldung.stringconversions;
import java.time.LocalDateTime;
diff --git a/java-strings-3/src/test/java/com/baeldung/string/charArrayToString/CharArrayToStringConversionUnitTest.java b/core-java-modules/core-java-string-conversions-2/src/test/java/com/baeldung/chararraytostring/CharArrayToStringConversionUnitTest.java
similarity index 97%
rename from java-strings-3/src/test/java/com/baeldung/string/charArrayToString/CharArrayToStringConversionUnitTest.java
rename to core-java-modules/core-java-string-conversions-2/src/test/java/com/baeldung/chararraytostring/CharArrayToStringConversionUnitTest.java
index 1030185c3e..dc68632f0b 100644
--- a/java-strings-3/src/test/java/com/baeldung/string/charArrayToString/CharArrayToStringConversionUnitTest.java
+++ b/core-java-modules/core-java-string-conversions-2/src/test/java/com/baeldung/chararraytostring/CharArrayToStringConversionUnitTest.java
@@ -1,4 +1,4 @@
-package com.baeldung.string.charArrayToString;
+package com.baeldung.chararraytostring;
import static org.hamcrest.Matchers.is;
import static org.junit.Assert.assertThat;
diff --git a/java-strings-ops/src/test/java/com/baeldung/java/conversion/StringConversionUnitTest.java b/core-java-modules/core-java-string-conversions-2/src/test/java/com/baeldung/stringconversions/StringConversionUnitTest.java
similarity index 97%
rename from java-strings-ops/src/test/java/com/baeldung/java/conversion/StringConversionUnitTest.java
rename to core-java-modules/core-java-string-conversions-2/src/test/java/com/baeldung/stringconversions/StringConversionUnitTest.java
index fbbbb21ccd..d896b92b5c 100644
--- a/java-strings-ops/src/test/java/com/baeldung/java/conversion/StringConversionUnitTest.java
+++ b/core-java-modules/core-java-string-conversions-2/src/test/java/com/baeldung/stringconversions/StringConversionUnitTest.java
@@ -1,4 +1,4 @@
-package com.baeldung.java.conversion;
+package com.baeldung.stringconversions;
import static org.junit.Assert.assertEquals;
@@ -13,8 +13,6 @@ import java.util.GregorianCalendar;
import org.junit.Test;
-import com.baeldung.datetime.UseLocalDateTime;
-
public class StringConversionUnitTest {
@Test
diff --git a/java-strings-ops/src/test/java/com/baeldung/string/conversion/ByteArrayToStringUnitTest.java b/core-java-modules/core-java-string-conversions-2/src/test/java/com/baeldung/stringtobytearray/ByteArrayToStringUnitTest.java
similarity index 98%
rename from java-strings-ops/src/test/java/com/baeldung/string/conversion/ByteArrayToStringUnitTest.java
rename to core-java-modules/core-java-string-conversions-2/src/test/java/com/baeldung/stringtobytearray/ByteArrayToStringUnitTest.java
index a9f8a04c8d..e5efffd8f7 100644
--- a/java-strings-ops/src/test/java/com/baeldung/string/conversion/ByteArrayToStringUnitTest.java
+++ b/core-java-modules/core-java-string-conversions-2/src/test/java/com/baeldung/stringtobytearray/ByteArrayToStringUnitTest.java
@@ -1,4 +1,4 @@
-package com.baeldung.string.conversion;
+package com.baeldung.stringtobytearray;
import static org.junit.jupiter.api.Assertions.assertEquals;
import static org.junit.jupiter.api.Assertions.assertNotNull;
diff --git a/java-strings-ops/src/test/java/com/baeldung/string/conversion/StringToByteArrayUnitTest.java b/core-java-modules/core-java-string-conversions-2/src/test/java/com/baeldung/stringtobytearray/StringToByteArrayUnitTest.java
similarity index 99%
rename from java-strings-ops/src/test/java/com/baeldung/string/conversion/StringToByteArrayUnitTest.java
rename to core-java-modules/core-java-string-conversions-2/src/test/java/com/baeldung/stringtobytearray/StringToByteArrayUnitTest.java
index 5377b4b28d..961c99bbde 100644
--- a/java-strings-ops/src/test/java/com/baeldung/string/conversion/StringToByteArrayUnitTest.java
+++ b/core-java-modules/core-java-string-conversions-2/src/test/java/com/baeldung/stringtobytearray/StringToByteArrayUnitTest.java
@@ -1,4 +1,4 @@
-package com.baeldung.string.conversion;
+package com.baeldung.stringtobytearray;
import static org.junit.jupiter.api.Assertions.assertArrayEquals;
import static org.junit.jupiter.api.Assertions.assertNotNull;
diff --git a/core-java-modules/core-java-string-conversions/README.md b/core-java-modules/core-java-string-conversions/README.md
new file mode 100644
index 0000000000..849660e482
--- /dev/null
+++ b/core-java-modules/core-java-string-conversions/README.md
@@ -0,0 +1,16 @@
+## Java String Conversions
+
+This module contains articles about string conversions from/to another type.
+
+### Relevant Articles:
+- [Converting String to Stream of chars](https://www.baeldung.com/java-string-to-stream)
+- [Converting Strings to Enums in Java](https://www.baeldung.com/java-string-to-enum)
+- [Convert a String to Title Case](https://www.baeldung.com/java-string-title-case)
+- [Convert java.util.Date to String](https://www.baeldung.com/java-util-date-to-string)
+- [Converting a Stack Trace to a String in Java](https://www.baeldung.com/java-stacktrace-to-string)
+- [Image to Base64 String Conversion](https://www.baeldung.com/java-base64-image-string)
+- [Convert a Comma Separated String to a List in Java](https://www.baeldung.com/java-string-with-separator-to-list)
+- [Converting Java String to Double](https://www.baeldung.com/java-string-to-double)
+- [Convert Char to String in Java](https://www.baeldung.com/java-convert-char-to-string)
+- [Convert String to int or Integer in Java](https://www.baeldung.com/java-convert-string-to-int-or-integer)
+- More articles: [[next -->]](/core-java-string-conversions-2)
\ No newline at end of file
diff --git a/core-java-modules/core-java-string-conversions/pom.xml b/core-java-modules/core-java-string-conversions/pom.xml
new file mode 100644
index 0000000000..9c968b7f1c
--- /dev/null
+++ b/core-java-modules/core-java-string-conversions/pom.xml
@@ -0,0 +1,67 @@
+
+ 4.0.0
+ core-java-string-conversions
+ 0.1.0-SNAPSHOT
+ jar
+ core-java-string-conversions
+
+
+ com.baeldung
+ parent-java
+ 0.0.1-SNAPSHOT
+ ../../parent-java
+
+
+
+
+ com.ibm.icu
+ icu4j
+ ${icu4j.version}
+
+
+ commons-io
+ commons-io
+ ${commons-io.version}
+
+
+ org.apache.commons
+ commons-lang3
+ ${commons-lang3.version}
+
+
+ com.google.guava
+ guava
+ ${guava.version}
+
+
+
+ org.assertj
+ assertj-core
+ ${assertj.version}
+ test
+
+
+ org.hamcrest
+ hamcrest-library
+ ${org.hamcrest.version}
+ test
+
+
+
+
+ core-java-string-conversions
+
+
+ src/main/resources
+ true
+
+
+
+
+
+ 61.1
+ 3.6.1
+
+
+
diff --git a/java-strings/src/main/java/com/baeldung/enums/PizzaStatusEnum.java b/core-java-modules/core-java-string-conversions/src/main/java/com/baeldung/stringtoenum/PizzaStatusEnum.java
similarity index 95%
rename from java-strings/src/main/java/com/baeldung/enums/PizzaStatusEnum.java
rename to core-java-modules/core-java-string-conversions/src/main/java/com/baeldung/stringtoenum/PizzaStatusEnum.java
index a84829c38d..02646ef997 100644
--- a/java-strings/src/main/java/com/baeldung/enums/PizzaStatusEnum.java
+++ b/core-java-modules/core-java-string-conversions/src/main/java/com/baeldung/stringtoenum/PizzaStatusEnum.java
@@ -1,4 +1,4 @@
-package com.baeldung.enums;
+package com.baeldung.stringtoenum;
public enum PizzaStatusEnum {
ORDERED(5) {
diff --git a/java-strings/src/main/java/com/baeldung/string/TitleCaseConverter.java b/core-java-modules/core-java-string-conversions/src/main/java/com/baeldung/titlecase/TitleCaseConverter.java
similarity index 98%
rename from java-strings/src/main/java/com/baeldung/string/TitleCaseConverter.java
rename to core-java-modules/core-java-string-conversions/src/main/java/com/baeldung/titlecase/TitleCaseConverter.java
index 81043f6dac..1c35e1a2d6 100644
--- a/java-strings/src/main/java/com/baeldung/string/TitleCaseConverter.java
+++ b/core-java-modules/core-java-string-conversions/src/main/java/com/baeldung/titlecase/TitleCaseConverter.java
@@ -1,12 +1,11 @@
-package com.baeldung.string;
-
-import java.util.Arrays;
-import java.util.stream.Collectors;
-
-import org.apache.commons.lang3.text.WordUtils;
+package com.baeldung.titlecase;
import com.ibm.icu.lang.UCharacter;
import com.ibm.icu.text.BreakIterator;
+import org.apache.commons.lang3.text.WordUtils;
+
+import java.util.Arrays;
+import java.util.stream.Collectors;
public class TitleCaseConverter {
diff --git a/java-strings-ops/src/test/java/com/baeldung/CharToStringUnitTest.java b/core-java-modules/core-java-string-conversions/src/test/java/com/baeldung/chartostring/CharToStringUnitTest.java
similarity index 97%
rename from java-strings-ops/src/test/java/com/baeldung/CharToStringUnitTest.java
rename to core-java-modules/core-java-string-conversions/src/test/java/com/baeldung/chartostring/CharToStringUnitTest.java
index 78742e356d..db7c8a16ec 100644
--- a/java-strings-ops/src/test/java/com/baeldung/CharToStringUnitTest.java
+++ b/core-java-modules/core-java-string-conversions/src/test/java/com/baeldung/chartostring/CharToStringUnitTest.java
@@ -1,4 +1,4 @@
-package com.baeldung;
+package com.baeldung.chartostring;
import org.junit.Test;
diff --git a/java-strings-2/src/test/java/com/baeldung/string/formatter/DateToStringFormatterUnitTest.java b/core-java-modules/core-java-string-conversions/src/test/java/com/baeldung/datetostring/DateToStringFormatterUnitTest.java
similarity index 98%
rename from java-strings-2/src/test/java/com/baeldung/string/formatter/DateToStringFormatterUnitTest.java
rename to core-java-modules/core-java-string-conversions/src/test/java/com/baeldung/datetostring/DateToStringFormatterUnitTest.java
index d760510c73..221900fb0e 100644
--- a/java-strings-2/src/test/java/com/baeldung/string/formatter/DateToStringFormatterUnitTest.java
+++ b/core-java-modules/core-java-string-conversions/src/test/java/com/baeldung/datetostring/DateToStringFormatterUnitTest.java
@@ -1,6 +1,7 @@
-package com.baeldung.string.formatter;
+package com.baeldung.datetostring;
-import static org.junit.Assert.assertEquals;
+import org.junit.BeforeClass;
+import org.junit.Test;
import java.text.DateFormat;
import java.text.SimpleDateFormat;
@@ -13,8 +14,7 @@ import java.util.Date;
import java.util.Locale;
import java.util.TimeZone;
-import org.junit.BeforeClass;
-import org.junit.Test;
+import static org.junit.Assert.assertEquals;
public class DateToStringFormatterUnitTest {
diff --git a/java-strings-2/src/test/java/com/baeldung/fileToBase64StringConversion/FileToBase64StringConversionUnitTest.java b/core-java-modules/core-java-string-conversions/src/test/java/com/baeldung/filetobase64conversion/FileToBase64StringConversionUnitTest.java
similarity index 96%
rename from java-strings-2/src/test/java/com/baeldung/fileToBase64StringConversion/FileToBase64StringConversionUnitTest.java
rename to core-java-modules/core-java-string-conversions/src/test/java/com/baeldung/filetobase64conversion/FileToBase64StringConversionUnitTest.java
index eef21a98c9..9b165069d6 100644
--- a/java-strings-2/src/test/java/com/baeldung/fileToBase64StringConversion/FileToBase64StringConversionUnitTest.java
+++ b/core-java-modules/core-java-string-conversions/src/test/java/com/baeldung/filetobase64conversion/FileToBase64StringConversionUnitTest.java
@@ -1,13 +1,13 @@
-package com.baeldung.fileToBase64StringConversion;
+package com.baeldung.filetobase64conversion;
-import static org.junit.Assert.assertTrue;
+import org.apache.commons.io.FileUtils;
+import org.junit.Test;
import java.io.File;
import java.io.IOException;
import java.util.Base64;
-import org.apache.commons.io.FileUtils;
-import org.junit.Test;
+import static org.junit.Assert.assertTrue;
public class FileToBase64StringConversionUnitTest {
diff --git a/java-strings-3/src/test/java/com/baeldung/string/todouble/StringToDoubleConversionUnitTest.java b/core-java-modules/core-java-string-conversions/src/test/java/com/baeldung/stringtodouble/StringToDoubleConversionUnitTest.java
similarity index 97%
rename from java-strings-3/src/test/java/com/baeldung/string/todouble/StringToDoubleConversionUnitTest.java
rename to core-java-modules/core-java-string-conversions/src/test/java/com/baeldung/stringtodouble/StringToDoubleConversionUnitTest.java
index 2c87af53f8..e29b55d52a 100644
--- a/java-strings-3/src/test/java/com/baeldung/string/todouble/StringToDoubleConversionUnitTest.java
+++ b/core-java-modules/core-java-string-conversions/src/test/java/com/baeldung/stringtodouble/StringToDoubleConversionUnitTest.java
@@ -1,4 +1,4 @@
-package com.baeldung.string.todouble;
+package com.baeldung.stringtodouble;
import static org.junit.Assert.assertEquals;
diff --git a/java-strings/src/test/java/com/baeldung/enums/PizzaUnitTest.java b/core-java-modules/core-java-string-conversions/src/test/java/com/baeldung/stringtoenum/StringToEnumUnitTest.java
similarity index 92%
rename from java-strings/src/test/java/com/baeldung/enums/PizzaUnitTest.java
rename to core-java-modules/core-java-string-conversions/src/test/java/com/baeldung/stringtoenum/StringToEnumUnitTest.java
index 3e52a89bad..f6b3bf2aa6 100644
--- a/java-strings/src/test/java/com/baeldung/enums/PizzaUnitTest.java
+++ b/core-java-modules/core-java-string-conversions/src/test/java/com/baeldung/stringtoenum/StringToEnumUnitTest.java
@@ -1,10 +1,10 @@
-package com.baeldung.enums;
+package com.baeldung.stringtoenum;
import static junit.framework.TestCase.assertTrue;
import org.junit.Test;
-public class PizzaUnitTest {
+public class StringToEnumUnitTest {
@Test
public void whenConvertedIntoEnum_thenGetsConvertedCorrectly() {
diff --git a/java-strings/src/test/java/com/baeldung/StringToIntOrIntegerUnitTest.java b/core-java-modules/core-java-string-conversions/src/test/java/com/baeldung/stringtoint/StringToIntOrIntegerUnitTest.java
similarity index 97%
rename from java-strings/src/test/java/com/baeldung/StringToIntOrIntegerUnitTest.java
rename to core-java-modules/core-java-string-conversions/src/test/java/com/baeldung/stringtoint/StringToIntOrIntegerUnitTest.java
index a7ad0bf114..106f1fc974 100644
--- a/java-strings/src/test/java/com/baeldung/StringToIntOrIntegerUnitTest.java
+++ b/core-java-modules/core-java-string-conversions/src/test/java/com/baeldung/stringtoint/StringToIntOrIntegerUnitTest.java
@@ -1,4 +1,4 @@
-package com.baeldung;
+package com.baeldung.stringtoint;
import static org.assertj.core.api.Assertions.assertThat;
diff --git a/java-strings-2/src/test/java/com/baeldung/ConvertStringToListUnitTest.java b/core-java-modules/core-java-string-conversions/src/test/java/com/baeldung/stringtolist/ConvertStringToListUnitTest.java
similarity index 96%
rename from java-strings-2/src/test/java/com/baeldung/ConvertStringToListUnitTest.java
rename to core-java-modules/core-java-string-conversions/src/test/java/com/baeldung/stringtolist/ConvertStringToListUnitTest.java
index 47357a99cc..b9e0cede31 100644
--- a/java-strings-2/src/test/java/com/baeldung/ConvertStringToListUnitTest.java
+++ b/core-java-modules/core-java-string-conversions/src/test/java/com/baeldung/stringtolist/ConvertStringToListUnitTest.java
@@ -1,135 +1,134 @@
-package com.baeldung;
-
-import static org.junit.Assert.assertEquals;
-
-import java.util.ArrayList;
-import java.util.Arrays;
-import java.util.List;
-import java.util.stream.Collectors;
-import java.util.stream.Stream;
-
-import org.apache.commons.lang3.StringUtils;
-import org.junit.Test;
-
-import com.google.common.base.Function;
-import com.google.common.base.Splitter;
-import com.google.common.collect.Lists;
-
-public class ConvertStringToListUnitTest {
-
- private final String countries = "Russia,Germany,England,France,Italy";
- private final String ranks = "1,2,3,4,5, 6,7";
- private final String emptyStrings = ",,,,,";
- private final List expectedCountriesList = Arrays.asList("Russia", "Germany", "England", "France", "Italy");
- private final List expectedRanksList = Arrays.asList(1, 2, 3, 4, 5, 6, 7);
- private final List expectedEmptyStringsList = Arrays.asList("", "", "", "", "", "");
-
- @Test
- public void givenString_thenGetListOfStringByJava() {
- List convertedCountriesList = Arrays.asList(countries.split(",", -1));
-
- assertEquals(expectedCountriesList, convertedCountriesList);
- }
-
- @Test
- public void givenString_thenGetListOfStringByApache() {
- List convertedCountriesList = Arrays.asList(StringUtils.splitPreserveAllTokens(countries, ","));
-
- assertEquals(expectedCountriesList, convertedCountriesList);
- }
-
- @Test
- public void givenString_thenGetListOfStringByGuava() {
- List convertedCountriesList = Splitter.on(",")
- .trimResults()
- .splitToList(countries);
-
- assertEquals(expectedCountriesList, convertedCountriesList);
- }
-
- @Test
- public void givenString_thenGetListOfStringByJava8() {
- List convertedCountriesList = Stream.of(countries.split(",", -1))
- .collect(Collectors.toList());
-
- assertEquals(expectedCountriesList, convertedCountriesList);
- }
-
- @Test
- public void givenString_thenGetListOfIntegerByJava() {
- String[] convertedRankArray = ranks.split(",");
- List convertedRankList = new ArrayList();
- for (String number : convertedRankArray) {
- convertedRankList.add(Integer.parseInt(number.trim()));
- }
-
- assertEquals(expectedRanksList, convertedRankList);
- }
-
- @Test
- public void givenString_thenGetListOfIntegerByGuava() {
- List convertedRankList = Lists.transform(Splitter.on(",")
- .trimResults()
- .splitToList(ranks), new Function() {
- @Override
- public Integer apply(String input) {
- return Integer.parseInt(input.trim());
- }
- });
-
- assertEquals(expectedRanksList, convertedRankList);
- }
-
- @Test
- public void givenString_thenGetListOfIntegerByJava8() {
- List convertedRankList = Stream.of(ranks.split(","))
- .map(String::trim)
- .map(Integer::parseInt)
- .collect(Collectors.toList());
-
- assertEquals(expectedRanksList, convertedRankList);
- }
-
- @Test
- public void givenString_thenGetListOfIntegerByApache() {
- String[] convertedRankArray = StringUtils.split(ranks, ",");
- List convertedRankList = new ArrayList();
- for (String number : convertedRankArray) {
- convertedRankList.add(Integer.parseInt(number.trim()));
- }
-
- assertEquals(expectedRanksList, convertedRankList);
- }
-
- @Test
- public void givenEmptyStrings_thenGetListOfStringByJava() {
- List convertedEmptyStringsList = Arrays.asList(emptyStrings.split(",", -1));
-
- assertEquals(expectedEmptyStringsList, convertedEmptyStringsList);
- }
-
- @Test
- public void givenEmptyStrings_thenGetListOfStringByApache() {
- List convertedEmptyStringsList = Arrays.asList(StringUtils.splitPreserveAllTokens(emptyStrings, ","));
-
- assertEquals(expectedEmptyStringsList, convertedEmptyStringsList);
- }
-
- @Test
- public void givenEmptyStrings_thenGetListOfStringByGuava() {
- List convertedEmptyStringsList = Splitter.on(",")
- .trimResults()
- .splitToList(emptyStrings);
-
- assertEquals(expectedEmptyStringsList, convertedEmptyStringsList);
- }
-
- @Test
- public void givenEmptyStrings_thenGetListOfStringByJava8() {
- List convertedEmptyStringsList = Stream.of(emptyStrings.split(",", -1))
- .collect(Collectors.toList());
-
- assertEquals(expectedEmptyStringsList, convertedEmptyStringsList);
- }
-
-}
+package com.baeldung.stringtolist;
+
+import com.google.common.base.Function;
+import com.google.common.base.Splitter;
+import com.google.common.collect.Lists;
+import org.apache.commons.lang3.StringUtils;
+import org.junit.Test;
+
+import java.util.ArrayList;
+import java.util.Arrays;
+import java.util.List;
+import java.util.stream.Collectors;
+import java.util.stream.Stream;
+
+import static org.junit.Assert.assertEquals;
+
+public class ConvertStringToListUnitTest {
+
+ private final String countries = "Russia,Germany,England,France,Italy";
+ private final String ranks = "1,2,3,4,5, 6,7";
+ private final String emptyStrings = ",,,,,";
+ private final List expectedCountriesList = Arrays.asList("Russia", "Germany", "England", "France", "Italy");
+ private final List expectedRanksList = Arrays.asList(1, 2, 3, 4, 5, 6, 7);
+ private final List expectedEmptyStringsList = Arrays.asList("", "", "", "", "", "");
+
+ @Test
+ public void givenString_thenGetListOfStringByJava() {
+ List convertedCountriesList = Arrays.asList(countries.split(",", -1));
+
+ assertEquals(expectedCountriesList, convertedCountriesList);
+ }
+
+ @Test
+ public void givenString_thenGetListOfStringByApache() {
+ List convertedCountriesList = Arrays.asList(StringUtils.splitPreserveAllTokens(countries, ","));
+
+ assertEquals(expectedCountriesList, convertedCountriesList);
+ }
+
+ @Test
+ public void givenString_thenGetListOfStringByGuava() {
+ List convertedCountriesList = Splitter.on(",")
+ .trimResults()
+ .splitToList(countries);
+
+ assertEquals(expectedCountriesList, convertedCountriesList);
+ }
+
+ @Test
+ public void givenString_thenGetListOfStringByJava8() {
+ List convertedCountriesList = Stream.of(countries.split(",", -1))
+ .collect(Collectors.toList());
+
+ assertEquals(expectedCountriesList, convertedCountriesList);
+ }
+
+ @Test
+ public void givenString_thenGetListOfIntegerByJava() {
+ String[] convertedRankArray = ranks.split(",");
+ List convertedRankList = new ArrayList();
+ for (String number : convertedRankArray) {
+ convertedRankList.add(Integer.parseInt(number.trim()));
+ }
+
+ assertEquals(expectedRanksList, convertedRankList);
+ }
+
+ @Test
+ public void givenString_thenGetListOfIntegerByGuava() {
+ List convertedRankList = Lists.transform(Splitter.on(",")
+ .trimResults()
+ .splitToList(ranks), new Function() {
+ @Override
+ public Integer apply(String input) {
+ return Integer.parseInt(input.trim());
+ }
+ });
+
+ assertEquals(expectedRanksList, convertedRankList);
+ }
+
+ @Test
+ public void givenString_thenGetListOfIntegerByJava8() {
+ List convertedRankList = Stream.of(ranks.split(","))
+ .map(String::trim)
+ .map(Integer::parseInt)
+ .collect(Collectors.toList());
+
+ assertEquals(expectedRanksList, convertedRankList);
+ }
+
+ @Test
+ public void givenString_thenGetListOfIntegerByApache() {
+ String[] convertedRankArray = StringUtils.split(ranks, ",");
+ List convertedRankList = new ArrayList();
+ for (String number : convertedRankArray) {
+ convertedRankList.add(Integer.parseInt(number.trim()));
+ }
+
+ assertEquals(expectedRanksList, convertedRankList);
+ }
+
+ @Test
+ public void givenEmptyStrings_thenGetListOfStringByJava() {
+ List convertedEmptyStringsList = Arrays.asList(emptyStrings.split(",", -1));
+
+ assertEquals(expectedEmptyStringsList, convertedEmptyStringsList);
+ }
+
+ @Test
+ public void givenEmptyStrings_thenGetListOfStringByApache() {
+ List convertedEmptyStringsList = Arrays.asList(StringUtils.splitPreserveAllTokens(emptyStrings, ","));
+
+ assertEquals(expectedEmptyStringsList, convertedEmptyStringsList);
+ }
+
+ @Test
+ public void givenEmptyStrings_thenGetListOfStringByGuava() {
+ List convertedEmptyStringsList = Splitter.on(",")
+ .trimResults()
+ .splitToList(emptyStrings);
+
+ assertEquals(expectedEmptyStringsList, convertedEmptyStringsList);
+ }
+
+ @Test
+ public void givenEmptyStrings_thenGetListOfStringByJava8() {
+ List convertedEmptyStringsList = Stream.of(emptyStrings.split(",", -1))
+ .collect(Collectors.toList());
+
+ assertEquals(expectedEmptyStringsList, convertedEmptyStringsList);
+ }
+
+}
diff --git a/java-strings/src/test/java/com/baeldung/string/StringToCharStreamUnitTest.java b/core-java-modules/core-java-string-conversions/src/test/java/com/baeldung/stringtostream/StringToCharStreamUnitTest.java
similarity index 98%
rename from java-strings/src/test/java/com/baeldung/string/StringToCharStreamUnitTest.java
rename to core-java-modules/core-java-string-conversions/src/test/java/com/baeldung/stringtostream/StringToCharStreamUnitTest.java
index 1b02e5d291..cd5727dcf8 100644
--- a/java-strings/src/test/java/com/baeldung/string/StringToCharStreamUnitTest.java
+++ b/core-java-modules/core-java-string-conversions/src/test/java/com/baeldung/stringtostream/StringToCharStreamUnitTest.java
@@ -1,4 +1,4 @@
-package com.baeldung.string;
+package com.baeldung.stringtostream;
import org.junit.Test;
diff --git a/java-strings/src/test/java/com/baeldung/string/TitleCaseConverterUnitTest.java b/core-java-modules/core-java-string-conversions/src/test/java/com/baeldung/titlecase/TitleCaseConverterUnitTest.java
similarity index 99%
rename from java-strings/src/test/java/com/baeldung/string/TitleCaseConverterUnitTest.java
rename to core-java-modules/core-java-string-conversions/src/test/java/com/baeldung/titlecase/TitleCaseConverterUnitTest.java
index 2272565cd3..73694d2c1c 100644
--- a/java-strings/src/test/java/com/baeldung/string/TitleCaseConverterUnitTest.java
+++ b/core-java-modules/core-java-string-conversions/src/test/java/com/baeldung/titlecase/TitleCaseConverterUnitTest.java
@@ -1,4 +1,4 @@
-package com.baeldung.string;
+package com.baeldung.titlecase;
import org.junit.Assert;
import org.junit.Test;
diff --git a/java-strings-2/src/test/resources/test_image.jpg b/core-java-modules/core-java-string-conversions/src/test/resources/test_image.jpg
similarity index 100%
rename from java-strings-2/src/test/resources/test_image.jpg
rename to core-java-modules/core-java-string-conversions/src/test/resources/test_image.jpg
diff --git a/core-java-modules/core-java-sun/pom.xml b/core-java-modules/core-java-sun/pom.xml
index ab5f945114..7774d1f9b3 100644
--- a/core-java-modules/core-java-sun/pom.xml
+++ b/core-java-modules/core-java-sun/pom.xml
@@ -1,7 +1,6 @@
4.0.0
- com.baeldung
core-java-sun
0.1.0-SNAPSHOT
core-java-sun
@@ -15,76 +14,6 @@
-
-
- net.sourceforge.collections
- collections-generic
- ${collections-generic.version}
-
-
- org.apache.commons
- commons-collections4
- ${commons-collections4.version}
-
-
- commons-io
- commons-io
- ${commons-io.version}
-
-
- org.apache.commons
- commons-lang3
- ${commons-lang3.version}
-
-
- org.apache.commons
- commons-math3
- ${commons-math3.version}
-
-
- org.decimal4j
- decimal4j
- ${decimal4j.version}
-
-
- org.bouncycastle
- bcprov-jdk15on
- ${bouncycastle.version}
-
-
- org.unix4j
- unix4j-command
- ${unix4j.version}
-
-
- com.googlecode.grep4j
- grep4j
- ${grep4j.version}
-
-
-
-
- com.fasterxml.jackson.core
- jackson-databind
- ${jackson.version}
-
-
-
- log4j
- log4j
- ${log4j.version}
-
-
- org.slf4j
- log4j-over-slf4j
- ${org.slf4j.version}
-
-
- org.projectlombok
- lombok
- ${lombok.version}
- provided
-
org.assertj
@@ -92,62 +21,6 @@
${assertj.version}
test
-
- com.jayway.awaitility
- awaitility
- ${avaitility.version}
- test
-
-
- commons-codec
- commons-codec
- ${commons-codec.version}
-
-
- org.javamoney
- moneta
- ${moneta.version}
-
-
- org.owasp.esapi
- esapi
- ${esapi.version}
-
-
- com.sun.messaging.mq
- fscontext
- ${fscontext.version}
-
-
- com.codepoetics
- protonpack
- ${protonpack.version}
-
-
- one.util
- streamex
- ${streamex.version}
-
-
- io.vavr
- vavr
- ${vavr.version}
-
-
- org.openjdk.jmh
- jmh-core
- ${jmh-core.version}
-
-
- org.openjdk.jmh
- jmh-generator-annprocess
- ${jmh-generator.version}
-
-
- org.springframework
- spring-web
- ${spring-web.version}
-
com.sun
tools
@@ -204,32 +77,6 @@
integration
-
- org.apache.maven.plugins
- maven-surefire-plugin
-
-
- integration-test
-
- test
-
-
-
- **/*ManualTest.java
-
-
- **/*IntegrationTest.java
- **/*IntTest.java
-
-
-
-
-
-
- json
-
-
-
org.codehaus.mojo
exec-maven-plugin
@@ -261,29 +108,11 @@
-
-
- 23.0
- 1.55
- 1.10
- 3.6.1
- 1.0.3
- 4.1
- 4.01
- 0.4
- 1.8.7
- 4.6-b01
- 1.13
- 0.6.5
- 0.9.0
- 4.3.4.RELEASE
-
3.6.1
1.7.0
- 2.21.0
1.8.0
3.0.2
diff --git a/core-java-modules/core-java-text/pom.xml b/core-java-modules/core-java-text/pom.xml
index f831ec5f40..43b0df6309 100644
--- a/core-java-modules/core-java-text/pom.xml
+++ b/core-java-modules/core-java-text/pom.xml
@@ -1,7 +1,6 @@
4.0.0
- com.baeldung
core-java-text
0.1.0-SNAPSHOT
core-java-text
@@ -14,9 +13,6 @@
../../parent-java
-
-
-
core-java-text
@@ -27,6 +23,4 @@
-
-
diff --git a/core-java-modules/core-java/pom.xml b/core-java-modules/core-java/pom.xml
index 2a2cb3a6af..392bcaa6dc 100644
--- a/core-java-modules/core-java/pom.xml
+++ b/core-java-modules/core-java/pom.xml
@@ -14,16 +14,6 @@
-
- commons-io
- commons-io
- ${commons-io.version}
-
-
- org.apache.commons
- commons-lang3
- ${commons-lang3.version}
-
org.unix4j
unix4j-command
@@ -41,11 +31,6 @@
jackson-databind
${jackson.version}
-
- com.google.code.gson
- gson
- ${gson.version}
-
log4j
@@ -80,41 +65,6 @@
esapi
${esapi.version}
-
- com.sun.messaging.mq
- fscontext
- ${fscontext.version}
-
-
- com.codepoetics
- protonpack
- ${protonpack.version}
-
-
- one.util
- streamex
- ${streamex.version}
-
-
- io.vavr
- vavr
- ${vavr.version}
-
-
- org.openjdk.jmh
- jmh-core
- ${jmh-core.version}
-
-
- org.openjdk.jmh
- jmh-generator-annprocess
- ${jmh-generator-annprocess.version}
-
-
- com.h2database
- h2
- ${h2.version}
-
org.javassist
@@ -448,38 +398,24 @@
-
-
- 2.8.2
-
- 3.6.1
- 1.0.3
0.4
1.8.7
- 4.6-b01
- 1.13
- 0.6.5
- 0.9.0
3.10.0
-
- 2.21.0
-
+
1.1
2.1.0.1
- 1.19
- 1.19
3.0.0-M1
3.0.2
1.4.4
3.1.1
2.0.3.RELEASE
1.6.0
- 61.1
+
3.21.0-GA
diff --git a/core-java-modules/pre-jpms/pom.xml b/core-java-modules/pre-jpms/pom.xml
index 380d94fbf1..f37daed0a5 100644
--- a/core-java-modules/pre-jpms/pom.xml
+++ b/core-java-modules/pre-jpms/pom.xml
@@ -69,7 +69,4 @@
-
- UTF-8
-
diff --git a/deeplearning4j/README.md b/deeplearning4j/README.md
index 07954b1a11..47c2d8167d 100644
--- a/deeplearning4j/README.md
+++ b/deeplearning4j/README.md
@@ -1,6 +1,7 @@
## Deeplearning4j
-This module contains articles about Deeplearning4j
+This module contains articles about Deeplearning4j.
### Relevant Articles:
- [A Guide to Deeplearning4j](https://www.baeldung.com/deeplearning4j)
+- [Logistic Regression in Java](https://www.baeldung.com/java-logistic-regression)
diff --git a/deeplearning4j/pom.xml b/deeplearning4j/pom.xml
index 181dbc871c..a8663865e0 100644
--- a/deeplearning4j/pom.xml
+++ b/deeplearning4j/pom.xml
@@ -14,6 +14,11 @@
+
+ org.nd4j
+ nd4j-api
+ ${dl4j.version}
+
org.nd4j
nd4j-native-platform
@@ -24,10 +29,26 @@
deeplearning4j-core
${dl4j.version}
+
+ org.deeplearning4j
+ deeplearning4j-nn
+ ${dl4j.version}
+
+
+
+ org.datavec
+ datavec-api
+ ${dl4j.version}
+
+
+ org.apache.httpcomponents
+ httpclient
+ 4.3.5
+
- 0.9.1
+ 0.9.1
-
\ No newline at end of file
+
diff --git a/deeplearning4j/src/main/java/com/baeldung/deeplearning4j/IrisClassifier.java b/deeplearning4j/src/main/java/com/baeldung/deeplearning4j/IrisClassifier.java
index bf341209e1..dcc81eda6e 100644
--- a/deeplearning4j/src/main/java/com/baeldung/deeplearning4j/IrisClassifier.java
+++ b/deeplearning4j/src/main/java/com/baeldung/deeplearning4j/IrisClassifier.java
@@ -3,9 +3,9 @@ package com.baeldung.deeplearning4j;
import org.datavec.api.records.reader.RecordReader;
import org.datavec.api.records.reader.impl.csv.CSVRecordReader;
import org.datavec.api.split.FileSplit;
-import org.datavec.api.util.ClassPathResource;
import org.deeplearning4j.datasets.datavec.RecordReaderDataSetIterator;
import org.deeplearning4j.eval.Evaluation;
+import org.deeplearning4j.nn.conf.BackpropType;
import org.deeplearning4j.nn.conf.MultiLayerConfiguration;
import org.deeplearning4j.nn.conf.NeuralNetConfiguration;
import org.deeplearning4j.nn.conf.layers.DenseLayer;
@@ -19,6 +19,7 @@ import org.nd4j.linalg.dataset.SplitTestAndTrain;
import org.nd4j.linalg.dataset.api.iterator.DataSetIterator;
import org.nd4j.linalg.dataset.api.preprocessor.DataNormalization;
import org.nd4j.linalg.dataset.api.preprocessor.NormalizerStandardize;
+import org.nd4j.linalg.io.ClassPathResource;
import org.nd4j.linalg.lossfunctions.LossFunctions;
import java.io.IOException;
@@ -52,8 +53,8 @@ public class IrisClassifier {
.iterations(1000)
.activation(Activation.TANH)
.weightInit(WeightInit.XAVIER)
- .learningRate(0.1)
- .regularization(true).l2(0.0001)
+ .regularization(true)
+ .learningRate(0.1).l2(0.0001)
.list()
.layer(0, new DenseLayer.Builder().nIn(FEATURES_COUNT).nOut(3)
.build())
@@ -62,14 +63,14 @@ public class IrisClassifier {
.layer(2, new OutputLayer.Builder(LossFunctions.LossFunction.NEGATIVELOGLIKELIHOOD)
.activation(Activation.SOFTMAX)
.nIn(3).nOut(CLASSES_COUNT).build())
- .backprop(true).pretrain(false)
+ .backpropType(BackpropType.Standard).pretrain(false)
.build();
MultiLayerNetwork model = new MultiLayerNetwork(configuration);
model.init();
model.fit(trainingData);
- INDArray output = model.output(testData.getFeatureMatrix());
+ INDArray output = model.output(testData.getFeatures());
Evaluation eval = new Evaluation(CLASSES_COUNT);
eval.eval(testData.getLabels(), output);
diff --git a/ml/src/main/java/com/baeldung/logreg/MnistClassifier.java b/deeplearning4j/src/main/java/com/baeldung/logreg/MnistClassifier.java
similarity index 93%
rename from ml/src/main/java/com/baeldung/logreg/MnistClassifier.java
rename to deeplearning4j/src/main/java/com/baeldung/logreg/MnistClassifier.java
index 1246de973f..c8580b9c27 100644
--- a/ml/src/main/java/com/baeldung/logreg/MnistClassifier.java
+++ b/deeplearning4j/src/main/java/com/baeldung/logreg/MnistClassifier.java
@@ -10,6 +10,7 @@ import org.datavec.api.split.FileSplit;
import org.datavec.image.loader.NativeImageLoader;
import org.datavec.image.recordreader.ImageRecordReader;
import org.deeplearning4j.datasets.datavec.RecordReaderDataSetIterator;
+import org.deeplearning4j.eval.Evaluation;
import org.deeplearning4j.nn.conf.MultiLayerConfiguration;
import org.deeplearning4j.nn.conf.NeuralNetConfiguration;
import org.deeplearning4j.nn.conf.inputs.InputType;
@@ -21,15 +22,12 @@ import org.deeplearning4j.nn.multilayer.MultiLayerNetwork;
import org.deeplearning4j.nn.weights.WeightInit;
import org.deeplearning4j.optimize.listeners.ScoreIterationListener;
import org.deeplearning4j.util.ModelSerializer;
-import org.nd4j.evaluation.classification.Evaluation;
import org.nd4j.linalg.activations.Activation;
import org.nd4j.linalg.dataset.api.iterator.DataSetIterator;
import org.nd4j.linalg.dataset.api.preprocessor.DataNormalization;
import org.nd4j.linalg.dataset.api.preprocessor.ImagePreProcessingScaler;
import org.nd4j.linalg.learning.config.Nesterovs;
import org.nd4j.linalg.lossfunctions.LossFunctions;
-import org.nd4j.linalg.schedule.MapSchedule;
-import org.nd4j.linalg.schedule.ScheduleType;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
@@ -44,7 +42,7 @@ import org.slf4j.LoggerFactory;
public class MnistClassifier {
private static final Logger logger = LoggerFactory.getLogger(MnistClassifier.class);
- private static final String basePath = System.getProperty("java.io.tmpdir") + "mnist" + File.separator;
+ private static final String basePath = System.getProperty("java.io.tmpdir") + File.separator + "mnist" + File.separator;
private static final File modelPath = new File(basePath + "mnist-model.zip");
private static final String dataUrl = "http://github.com/myleott/mnist_png/raw/master/mnist_png.tar.gz";
@@ -71,8 +69,7 @@ public class MnistClassifier {
String localFilePath = basePath + "mnist_png.tar.gz";
File file = new File(localFilePath);
if (!file.exists()) {
- file.getParentFile()
- .mkdirs();
+ file.getParentFile().mkdirs();
Utils.downloadAndSave(dataUrl, file);
Utils.extractTarArchive(file, basePath);
}
@@ -135,15 +132,15 @@ public class MnistClassifier {
.build();
final MultiLayerConfiguration config = new NeuralNetConfiguration.Builder().seed(seed)
.l2(0.0005) // ridge regression value
- .updater(new Nesterovs(new MapSchedule(ScheduleType.ITERATION, learningRateSchedule)))
+ .updater(new Nesterovs()) //TODO new MapSchedule(ScheduleType.ITERATION, learningRateSchedule)
.weightInit(WeightInit.XAVIER)
.list()
- .layer(layer1)
- .layer(layer2)
- .layer(layer3)
- .layer(layer2)
- .layer(layer4)
- .layer(layer5)
+ .layer(0, layer1)
+ .layer(1, layer2)
+ .layer(2, layer3)
+ .layer(3, layer2)
+ .layer(4, layer4)
+ .layer(5, layer5)
.setInputType(InputType.convolutionalFlat(height, width, channels))
.build();
@@ -165,4 +162,4 @@ public class MnistClassifier {
ModelSerializer.writeModel(model, modelPath, true);
logger.info("The MINIST model has been saved in {}", modelPath.getPath());
}
-}
\ No newline at end of file
+}
diff --git a/ml/src/main/java/com/baeldung/logreg/MnistPrediction.java b/deeplearning4j/src/main/java/com/baeldung/logreg/MnistPrediction.java
similarity index 100%
rename from ml/src/main/java/com/baeldung/logreg/MnistPrediction.java
rename to deeplearning4j/src/main/java/com/baeldung/logreg/MnistPrediction.java
diff --git a/ml/src/main/java/com/baeldung/logreg/Utils.java b/deeplearning4j/src/main/java/com/baeldung/logreg/Utils.java
similarity index 100%
rename from ml/src/main/java/com/baeldung/logreg/Utils.java
rename to deeplearning4j/src/main/java/com/baeldung/logreg/Utils.java
diff --git a/httpclient-simple/src/test/java/com/baeldung/client/RestClientLiveManualTest.java b/httpclient-simple/src/test/java/com/baeldung/client/RestClientLiveManualTest.java
index a485641b34..d133bc376c 100644
--- a/httpclient-simple/src/test/java/com/baeldung/client/RestClientLiveManualTest.java
+++ b/httpclient-simple/src/test/java/com/baeldung/client/RestClientLiveManualTest.java
@@ -6,9 +6,9 @@ import static org.junit.Assert.assertThat;
import java.io.IOException;
import java.security.GeneralSecurityException;
-import java.security.cert.X509Certificate;
import javax.net.ssl.SSLContext;
+import javax.net.ssl.SSLPeerUnverifiedException;
import org.apache.http.HttpResponse;
import org.apache.http.client.ClientProtocolException;
@@ -46,7 +46,7 @@ public class RestClientLiveManualTest {
// old httpClient will throw UnsupportedOperationException
@Ignore
@Test
- public final void givenAcceptingAllCertificates_whenHttpsUrlIsConsumed_thenOk_1() throws GeneralSecurityException {
+ public final void givenAcceptingAllCertificates_whenHttpsUrlIsConsumed_thenOk() throws GeneralSecurityException {
final HttpComponentsClientHttpRequestFactory requestFactory = new HttpComponentsClientHttpRequestFactory();
final CloseableHttpClient httpClient = (CloseableHttpClient) requestFactory.getHttpClient();
@@ -92,7 +92,7 @@ public class RestClientLiveManualTest {
}
@Test
- public final void givenAcceptingAllCertificatesUsing4_4_whenHttpsUrlIsConsumedUsingRestTemplate_thenCorrect() throws ClientProtocolException, IOException {
+ public final void givenAcceptingAllCertificatesUsing4_4_whenUsingRestTemplate_thenCorrect() throws ClientProtocolException, IOException {
final CloseableHttpClient httpClient = HttpClients.custom().setSSLHostnameVerifier(new NoopHostnameVerifier()).build();
final HttpComponentsClientHttpRequestFactory requestFactory = new HttpComponentsClientHttpRequestFactory();
requestFactory.setHttpClient(httpClient);
@@ -101,4 +101,12 @@ public class RestClientLiveManualTest {
assertThat(response.getStatusCode().value(), equalTo(200));
}
+ @Test(expected = SSLPeerUnverifiedException.class)
+ public void whenHttpsUrlIsConsumed_thenException() throws ClientProtocolException, IOException {
+ CloseableHttpClient httpClient = HttpClients.createDefault();
+ String urlOverHttps = "https://localhost:8082/httpclient-simple";
+ HttpGet getMethod = new HttpGet(urlOverHttps);
+ HttpResponse response = httpClient.execute(getMethod);
+ assertThat(response.getStatusLine().getStatusCode(), equalTo(200));
+ }
}
diff --git a/jackson/src/main/java/com/baeldung/jackson/deserialization/dynamicobject/ProductJsonAnySetter.java b/jackson/src/main/java/com/baeldung/jackson/deserialization/dynamicobject/Product.java
similarity index 95%
rename from jackson/src/main/java/com/baeldung/jackson/deserialization/dynamicobject/ProductJsonAnySetter.java
rename to jackson/src/main/java/com/baeldung/jackson/deserialization/dynamicobject/Product.java
index 13c21e37af..9c997886e5 100644
--- a/jackson/src/main/java/com/baeldung/jackson/deserialization/dynamicobject/ProductJsonAnySetter.java
+++ b/jackson/src/main/java/com/baeldung/jackson/deserialization/dynamicobject/Product.java
@@ -5,7 +5,7 @@ import java.util.Map;
import com.fasterxml.jackson.annotation.JsonAnySetter;
-public class ProductJsonAnySetter {
+public class Product {
private String name;
private String category;
diff --git a/jackson/src/test/java/com/baeldung/jackson/deserialization/dynamicobject/DynamicObjectDeserializationUnitTest.java b/jackson/src/test/java/com/baeldung/jackson/deserialization/dynamicobject/DynamicObjectDeserializationUnitTest.java
index d49677c1a2..c9536bc35a 100644
--- a/jackson/src/test/java/com/baeldung/jackson/deserialization/dynamicobject/DynamicObjectDeserializationUnitTest.java
+++ b/jackson/src/test/java/com/baeldung/jackson/deserialization/dynamicobject/DynamicObjectDeserializationUnitTest.java
@@ -59,7 +59,7 @@ public class DynamicObjectDeserializationUnitTest {
String json = readResource("/deserialize-dynamic-object/flat.json");
// when
- ProductJsonAnySetter product = objectMapper.readValue(json, ProductJsonAnySetter.class);
+ Product product = objectMapper.readValue(json, Product.class);
// then
assertThat(product.getName()).isEqualTo("Pear yPhone 72");
diff --git a/java-ee-8-security-api/pom.xml b/java-ee-8-security-api/pom.xml
index 4d4e2ba3b3..f43f3d7c5f 100644
--- a/java-ee-8-security-api/pom.xml
+++ b/java-ee-8-security-api/pom.xml
@@ -14,6 +14,13 @@
1.0.0-SNAPSHOT
+
+ app-auth-basic-store-db
+ app-auth-form-store-ldap
+ app-auth-custom-form-store-custom
+ app-auth-custom-no-store
+
+
@@ -58,17 +65,9 @@
-
- app-auth-basic-store-db
- app-auth-form-store-ldap
- app-auth-custom-form-store-custom
- app-auth-custom-no-store
-
-
9080
9443
-
8.0
2.3
18.0.0.1
diff --git a/java-strings-2/README.md b/java-strings-2/README.md
index 82f33997c5..9865019f74 100644
--- a/java-strings-2/README.md
+++ b/java-strings-2/README.md
@@ -8,14 +8,12 @@ This module contains articles about strings in Java.
- [Check If a String Contains a Substring](https://www.baeldung.com/java-string-contains-substring)
- [Removing Stopwords from a String in Java](https://www.baeldung.com/java-string-remove-stopwords)
- [Java – Generate Random String](https://www.baeldung.com/java-random-string)
-- [Image to Base64 String Conversion](https://www.baeldung.com/java-base64-image-string)
- [Java Base64 Encoding and Decoding](https://www.baeldung.com/java-base64-encode-and-decode)
- [Generate a Secure Random Password in Java](https://www.baeldung.com/java-generate-secure-password)
- [Removing Repeated Characters from a String](https://www.baeldung.com/java-remove-repeated-char)
- [Join Array of Primitives with Separator in Java](https://www.baeldung.com/java-join-primitive-array)
- [Pad a String with Zeros or Spaces in Java](https://www.baeldung.com/java-pad-string)
- [Remove Emojis from a Java String](https://www.baeldung.com/java-string-remove-emojis)
-- [Convert a Comma Separated String to a List in Java](https://www.baeldung.com/java-string-with-separator-to-list)
- [Guide to java.util.Formatter](https://www.baeldung.com/java-string-formatter)
- [Remove Leading and Trailing Characters from a String](https://www.baeldung.com/java-remove-trailing-characters)
- [Concatenating Strings In Java](https://www.baeldung.com/java-strings-concatenation)
diff --git a/java-strings-3/README.md b/java-strings-3/README.md
index f0aaddefcb..6276dfc621 100644
--- a/java-strings-3/README.md
+++ b/java-strings-3/README.md
@@ -3,6 +3,7 @@
This module contains articles about strings in Java.
### Relevant Articles:
-
-- [Converting Java String to Double](https://www.baeldung.com/java-string-to-double)
+- [Java String equalsIgnoreCase()](https://www.baeldung.com/java-string-equalsignorecase)
+- [Finding the Difference Between Two Strings](https://www.baeldung.com/java-difference-between-two-strings)
+- [Counting Words in a String](https://www.baeldung.com/java-word-counting)
- More articles: [[<-- prev>]](/java-strings-2)
diff --git a/java-strings-ops/README.md b/java-strings-ops/README.md
index 31c5f48022..3b00cd11ed 100644
--- a/java-strings-ops/README.md
+++ b/java-strings-ops/README.md
@@ -3,10 +3,7 @@
This module contains articles about operations on strings in Java.
### Relevant Articles:
-- [Convert char to String in Java](https://www.baeldung.com/java-convert-char-to-string)
-- [Convert String to int or Integer in Java](https://www.baeldung.com/java-convert-string-to-int-or-integer)
-- [Java String Conversions](https://www.baeldung.com/java-string-conversions)
-- [Check if a String is a Palindrome](https://www.baeldung.com/java-palindrome)
+- [Check If a String Is a Palindrome](https://www.baeldung.com/java-palindrome)
- [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)
@@ -16,7 +13,6 @@ This module contains articles about operations on strings in Java.
- [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)
-- [Convert String to Byte Array and Reverse in Java](https://www.baeldung.com/java-string-to-byte-array)
- [Java toString() Method](https://www.baeldung.com/java-tostring)
- [CharSequence vs. String in Java](https://www.baeldung.com/java-char-sequence-string)
- [StringBuilder and StringBuffer in Java](https://www.baeldung.com/java-string-builder-string-buffer)
diff --git a/java-strings-ops/src/test/java/com/baeldung/java/conversion/README.md b/java-strings-ops/src/test/java/com/baeldung/java/conversion/README.md
deleted file mode 100644
index 7c81180249..0000000000
--- a/java-strings-ops/src/test/java/com/baeldung/java/conversion/README.md
+++ /dev/null
@@ -1,2 +0,0 @@
-Relevant Articles:
-- [Java String Conversions](http://www.baeldung.com/java-string-conversions)
diff --git a/java-strings/README.md b/java-strings/README.md
index 1faa11f606..3146b54fa8 100644
--- a/java-strings/README.md
+++ b/java-strings/README.md
@@ -4,21 +4,16 @@ This module contains articles about strings in Java.
### Relevant Articles:
- [String Operations with Java Streams](https://www.baeldung.com/java-stream-operations-on-strings)
-- [Converting String to Stream of chars](https://www.baeldung.com/java-string-to-stream)
- [Java 8 StringJoiner](https://www.baeldung.com/java-string-joiner)
-- [Converting Strings to Enums in Java](https://www.baeldung.com/java-string-to-enum)
- [Quick Guide to the Java StringTokenizer](https://www.baeldung.com/java-stringtokenizer)
- [Use char[] Array Over a String for Manipulating Passwords in Java?](https://www.baeldung.com/java-storing-passwords)
-- [Convert a String to Title Case](https://www.baeldung.com/java-string-title-case)
- [Compact Strings in Java 9](https://www.baeldung.com/java-9-compact-string)
- [Java Check a String for Lowercase/Uppercase Letter, Special Character and Digit](https://www.baeldung.com/java-lowercase-uppercase-special-character-digit-regex)
-- [Convert java.util.Date to String](https://www.baeldung.com/java-util-date-to-string)
-- [Converting a Stack Trace to a String in Java](https://www.baeldung.com/java-stacktrace-to-string)
- [Sorting a String Alphabetically in Java](https://www.baeldung.com/java-sort-string-alphabetically)
- [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)
- [Using indexOf to Find All Occurrences of a Word in a String](https://www.baeldung.com/java-indexOf-find-string-occurrences)
- [Adding a Newline Character to a String in Java](https://www.baeldung.com/java-string-newline)
-- [Remove or Replace part of a String in Java](https://www.baeldung.com/java-remove-replace-string-part)
+- [Remove or Replace Part of a String in Java](https://www.baeldung.com/java-remove-replace-string-part)
- [Replace a Character at a Specific Index in a String in Java](https://www.baeldung.com/java-replace-character-at-index)
- More articles: [[next -->]](/java-strings-2)
diff --git a/javaxval/README.md b/javaxval/README.md
index 64903d7463..c2c392b276 100644
--- a/javaxval/README.md
+++ b/javaxval/README.md
@@ -9,4 +9,4 @@ This module contains articles about Bean Validation.
- [Difference Between @NotNull, @NotEmpty, and @NotBlank Constraints in Bean Validation](https://www.baeldung.com/java-bean-validation-not-null-empty-blank)
- [Javax BigDecimal Validation](https://www.baeldung.com/javax-bigdecimal-validation)
- [Grouping Javax Validation Constraints](https://www.baeldung.com/javax-validation-groups)
-- [Javax Validations for Enums](https://www.baeldung.com/javax-validations-for-enums/)
+- [Javax Validations for Enums](https://www.baeldung.com/javax-validations-enums)
diff --git a/libraries-data-2/README.md b/libraries-data-2/README.md
index 25d9fe177e..24618b5e37 100644
--- a/libraries-data-2/README.md
+++ b/libraries-data-2/README.md
@@ -7,10 +7,8 @@ This module contains articles about libraries for data processing in Java.
- [Guide to the HyperLogLog Algorithm](https://www.baeldung.com/java-hyperloglog)
- [Introduction to Conflict-Free Replicated Data Types](https://www.baeldung.com/java-conflict-free-replicated-data-types)
- [Introduction to javax.measure](https://www.baeldung.com/javax-measure)
-- [Introduction To Docx4J](https://www.baeldung.com/docx4j)
-- [Interact with Google Sheets from Java](https://www.baeldung.com/google-sheets-java-client)
-- [Introduction To OpenCSV](https://www.baeldung.com/opencsv)
-- [Introduction to Smooks](https://www.baeldung.com/smooks)
- [A Guide to Infinispan in Java](https://www.baeldung.com/infinispan)
-- More articles: [[<-- prev>]](/libraries-data)
-
+- [Guide to JMapper](https://www.baeldung.com/jmapper)
+- [An Introduction to SuanShu](https://www.baeldung.com/suanshu)
+- [Intro to Derive4J](https://www.baeldung.com/derive4j)
+More articles: [[<-- prev]](/../libraries-data)
\ No newline at end of file
diff --git a/libraries-data-2/pom.xml b/libraries-data-2/pom.xml
index 87c620f438..e79a2d98e0 100644
--- a/libraries-data-2/pom.xml
+++ b/libraries-data-2/pom.xml
@@ -67,43 +67,6 @@
unit-ri
${unit-ri.version}
-
- javax.xml.bind
- jaxb-api
- ${jaxb-api.version}
-
-
- org.docx4j
- docx4j
- ${docx4j.version}
-
-
-
- com.google.api-client
- google-api-client
- ${google-api.version}
-
-
- com.google.oauth-client
- google-oauth-client-jetty
- ${google-api.version}
-
-
- com.google.apis
- google-api-services-sheets
- ${google-sheets.version}
-
-
-
- com.opencsv
- opencsv
- ${opencsv.version}
-
-
- org.milyn
- milyn-smooks-all
- ${smooks.version}
-
org.infinispan
infinispan-core
@@ -124,22 +87,78 @@
spring-web
${spring.version}
-
+
+ com.google.api-client
+ google-api-client
+ ${google-api.version}
+
+
+ com.googlecode.jmapper-framework
+ jmapper-core
+ ${jmapper.version}
+
+
+ com.numericalmethod
+ suanshu
+ ${suanshu.version}
+
+
+ org.derive4j
+ derive4j
+ ${derive4j.version}
+
+
+ org.assertj
+ assertj-core
+ ${assertj.version}
+
+
+ org.slf4j
+ slf4j-api
+ ${slf4j.version}
+
+
+ org.slf4j
+ slf4j-log4j12
+ ${slf4j.version}
+
+
+ org.awaitility
+ awaitility
+ ${awaitility.version}
+ test
+
+
+ org.awaitility
+ awaitility-proxy
+ ${awaitility.version}
+ test
+
+
+
+ nm-repo
+ Numerical Method's Maven Repository
+ http://repo.numericalmethod.com/maven/
+ default
+
+
+
1.5.0
1.6.0
0.1.0
1.0.3
- 3.3.5
- 2.1
- 1.23.0
- 4.1
- 1.7.0
9.1.5.Final
- v4-rev493-1.21.0
2.9.8
4.3.8.RELEASE
+ 1.23.0
+ 1.6.0.1
+ 4.0.0
+ 1.1.0
+ 3.6.2
+ 1.7.25
+ 3.0.0
\ No newline at end of file
diff --git a/libraries-data-3/src/main/java/com/baeldung/derive4j/adt/Either.java b/libraries-data-2/src/main/java/com/baeldung/derive4j/adt/Either.java
similarity index 100%
rename from libraries-data-3/src/main/java/com/baeldung/derive4j/adt/Either.java
rename to libraries-data-2/src/main/java/com/baeldung/derive4j/adt/Either.java
diff --git a/libraries-data-3/src/main/java/com/baeldung/derive4j/lazy/LazyRequest.java b/libraries-data-2/src/main/java/com/baeldung/derive4j/lazy/LazyRequest.java
similarity index 90%
rename from libraries-data-3/src/main/java/com/baeldung/derive4j/lazy/LazyRequest.java
rename to libraries-data-2/src/main/java/com/baeldung/derive4j/lazy/LazyRequest.java
index bee947df12..143648d67a 100644
--- a/libraries-data-3/src/main/java/com/baeldung/derive4j/lazy/LazyRequest.java
+++ b/libraries-data-2/src/main/java/com/baeldung/derive4j/lazy/LazyRequest.java
@@ -16,6 +16,6 @@ public interface LazyRequest {
R DELETE(String path);
}
- R match(LazyRequest.Cases method);
+ R match(Cases method);
}
diff --git a/libraries-data-3/src/main/java/com/baeldung/derive4j/pattern/HTTPRequest.java b/libraries-data-2/src/main/java/com/baeldung/derive4j/pattern/HTTPRequest.java
similarity index 100%
rename from libraries-data-3/src/main/java/com/baeldung/derive4j/pattern/HTTPRequest.java
rename to libraries-data-2/src/main/java/com/baeldung/derive4j/pattern/HTTPRequest.java
diff --git a/libraries-data-3/src/main/java/com/baeldung/derive4j/pattern/HTTPResponse.java b/libraries-data-2/src/main/java/com/baeldung/derive4j/pattern/HTTPResponse.java
similarity index 100%
rename from libraries-data-3/src/main/java/com/baeldung/derive4j/pattern/HTTPResponse.java
rename to libraries-data-2/src/main/java/com/baeldung/derive4j/pattern/HTTPResponse.java
diff --git a/libraries-data-3/src/main/java/com/baeldung/derive4j/pattern/HTTPServer.java b/libraries-data-2/src/main/java/com/baeldung/derive4j/pattern/HTTPServer.java
similarity index 100%
rename from libraries-data-3/src/main/java/com/baeldung/derive4j/pattern/HTTPServer.java
rename to libraries-data-2/src/main/java/com/baeldung/derive4j/pattern/HTTPServer.java
diff --git a/libraries-data-3/src/main/java/com/baeldung/jmapper/User.java b/libraries-data-2/src/main/java/com/baeldung/jmapper/User.java
similarity index 100%
rename from libraries-data-3/src/main/java/com/baeldung/jmapper/User.java
rename to libraries-data-2/src/main/java/com/baeldung/jmapper/User.java
diff --git a/libraries-data-3/src/main/java/com/baeldung/jmapper/UserDto.java b/libraries-data-2/src/main/java/com/baeldung/jmapper/UserDto.java
similarity index 100%
rename from libraries-data-3/src/main/java/com/baeldung/jmapper/UserDto.java
rename to libraries-data-2/src/main/java/com/baeldung/jmapper/UserDto.java
index 326e8f3cd5..039e78b17d 100644
--- a/libraries-data-3/src/main/java/com/baeldung/jmapper/UserDto.java
+++ b/libraries-data-2/src/main/java/com/baeldung/jmapper/UserDto.java
@@ -1,11 +1,11 @@
package com.baeldung.jmapper;
-import java.time.LocalDate;
-import java.time.Period;
-
import com.googlecode.jmapper.annotations.JMap;
import com.googlecode.jmapper.annotations.JMapConversion;
+import java.time.LocalDate;
+import java.time.Period;
+
public class UserDto {
@JMap
diff --git a/libraries-data-3/src/main/java/com/baeldung/jmapper/UserDto1.java b/libraries-data-2/src/main/java/com/baeldung/jmapper/UserDto1.java
similarity index 100%
rename from libraries-data-3/src/main/java/com/baeldung/jmapper/UserDto1.java
rename to libraries-data-2/src/main/java/com/baeldung/jmapper/UserDto1.java
diff --git a/libraries-data-3/src/main/java/com/baeldung/jmapper/relational/User.java b/libraries-data-2/src/main/java/com/baeldung/jmapper/relational/User.java
similarity index 100%
rename from libraries-data-3/src/main/java/com/baeldung/jmapper/relational/User.java
rename to libraries-data-2/src/main/java/com/baeldung/jmapper/relational/User.java
diff --git a/libraries-data-3/src/main/java/com/baeldung/jmapper/relational/UserDto1.java b/libraries-data-2/src/main/java/com/baeldung/jmapper/relational/UserDto1.java
similarity index 100%
rename from libraries-data-3/src/main/java/com/baeldung/jmapper/relational/UserDto1.java
rename to libraries-data-2/src/main/java/com/baeldung/jmapper/relational/UserDto1.java
diff --git a/libraries-data-3/src/main/java/com/baeldung/jmapper/relational/UserDto2.java b/libraries-data-2/src/main/java/com/baeldung/jmapper/relational/UserDto2.java
similarity index 100%
rename from libraries-data-3/src/main/java/com/baeldung/jmapper/relational/UserDto2.java
rename to libraries-data-2/src/main/java/com/baeldung/jmapper/relational/UserDto2.java
diff --git a/libraries-data-2/src/main/java/com/baeldung/opencsv/beans/CsvBean.java b/libraries-data-2/src/main/java/com/baeldung/opencsv/beans/CsvBean.java
deleted file mode 100644
index af9caaae12..0000000000
--- a/libraries-data-2/src/main/java/com/baeldung/opencsv/beans/CsvBean.java
+++ /dev/null
@@ -1,3 +0,0 @@
-package com.baeldung.opencsv.beans;
-
-public class CsvBean { }
diff --git a/libraries-data-3/src/main/java/com/baeldung/suanshu/SuanShuMath.java b/libraries-data-2/src/main/java/com/baeldung/suanshu/SuanShuMath.java
similarity index 99%
rename from libraries-data-3/src/main/java/com/baeldung/suanshu/SuanShuMath.java
rename to libraries-data-2/src/main/java/com/baeldung/suanshu/SuanShuMath.java
index 46af24692d..ce7bc60a3a 100644
--- a/libraries-data-3/src/main/java/com/baeldung/suanshu/SuanShuMath.java
+++ b/libraries-data-2/src/main/java/com/baeldung/suanshu/SuanShuMath.java
@@ -1,19 +1,18 @@
package com.baeldung.suanshu;
-import java.util.List;
-
-import org.slf4j.Logger;
-import org.slf4j.LoggerFactory;
-
import com.numericalmethod.suanshu.algebra.linear.matrix.doubles.Matrix;
-import com.numericalmethod.suanshu.algebra.linear.vector.doubles.Vector;
-import com.numericalmethod.suanshu.algebra.linear.vector.doubles.dense.DenseVector;
import com.numericalmethod.suanshu.algebra.linear.matrix.doubles.matrixtype.dense.DenseMatrix;
import com.numericalmethod.suanshu.algebra.linear.matrix.doubles.operation.Inverse;
+import com.numericalmethod.suanshu.algebra.linear.vector.doubles.Vector;
+import com.numericalmethod.suanshu.algebra.linear.vector.doubles.dense.DenseVector;
import com.numericalmethod.suanshu.analysis.function.polynomial.Polynomial;
import com.numericalmethod.suanshu.analysis.function.polynomial.root.PolyRoot;
import com.numericalmethod.suanshu.analysis.function.polynomial.root.PolyRootSolver;
import com.numericalmethod.suanshu.number.complex.Complex;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
+
+import java.util.List;
class SuanShuMath {
diff --git a/libraries-data-2/src/test/com/baeldung/crdt/CRDTUnitTest.java b/libraries-data-2/src/test/java/com/baeldung/crdt/CRDTUnitTest.java
similarity index 100%
rename from libraries-data-2/src/test/com/baeldung/crdt/CRDTUnitTest.java
rename to libraries-data-2/src/test/java/com/baeldung/crdt/CRDTUnitTest.java
diff --git a/libraries-data-3/src/test/java/com/baeldung/derive4j/adt/EitherUnitTest.java b/libraries-data-2/src/test/java/com/baeldung/derive4j/adt/EitherUnitTest.java
similarity index 99%
rename from libraries-data-3/src/test/java/com/baeldung/derive4j/adt/EitherUnitTest.java
rename to libraries-data-2/src/test/java/com/baeldung/derive4j/adt/EitherUnitTest.java
index 511e24961f..4e68f09f6a 100644
--- a/libraries-data-3/src/test/java/com/baeldung/derive4j/adt/EitherUnitTest.java
+++ b/libraries-data-2/src/test/java/com/baeldung/derive4j/adt/EitherUnitTest.java
@@ -8,6 +8,7 @@ import org.mockito.junit.MockitoJUnitRunner;
import java.util.Optional;
import java.util.function.Function;
+
@RunWith(MockitoJUnitRunner.class)
public class EitherUnitTest {
@Test
diff --git a/libraries-data-3/src/test/java/com/baeldung/derive4j/lazy/LazyRequestUnitTest.java b/libraries-data-2/src/test/java/com/baeldung/derive4j/lazy/LazyRequestUnitTest.java
similarity index 100%
rename from libraries-data-3/src/test/java/com/baeldung/derive4j/lazy/LazyRequestUnitTest.java
rename to libraries-data-2/src/test/java/com/baeldung/derive4j/lazy/LazyRequestUnitTest.java
diff --git a/libraries-data-3/src/test/java/com/baeldung/derive4j/pattern/HTTPRequestUnitTest.java b/libraries-data-2/src/test/java/com/baeldung/derive4j/pattern/HTTPRequestUnitTest.java
similarity index 100%
rename from libraries-data-3/src/test/java/com/baeldung/derive4j/pattern/HTTPRequestUnitTest.java
rename to libraries-data-2/src/test/java/com/baeldung/derive4j/pattern/HTTPRequestUnitTest.java
diff --git a/libraries-data-2/src/test/com/baeldung/flink/BackupCreatorIntegrationTest.java b/libraries-data-2/src/test/java/com/baeldung/flink/BackupCreatorIntegrationTest.java
similarity index 100%
rename from libraries-data-2/src/test/com/baeldung/flink/BackupCreatorIntegrationTest.java
rename to libraries-data-2/src/test/java/com/baeldung/flink/BackupCreatorIntegrationTest.java
diff --git a/libraries-data-2/src/test/com/baeldung/flink/WordCapitalizerIntegrationTest.java b/libraries-data-2/src/test/java/com/baeldung/flink/WordCapitalizerIntegrationTest.java
similarity index 100%
rename from libraries-data-2/src/test/com/baeldung/flink/WordCapitalizerIntegrationTest.java
rename to libraries-data-2/src/test/java/com/baeldung/flink/WordCapitalizerIntegrationTest.java
diff --git a/libraries-data-2/src/test/com/baeldung/flink/WordCountIntegrationTest.java b/libraries-data-2/src/test/java/com/baeldung/flink/WordCountIntegrationTest.java
similarity index 100%
rename from libraries-data-2/src/test/com/baeldung/flink/WordCountIntegrationTest.java
rename to libraries-data-2/src/test/java/com/baeldung/flink/WordCountIntegrationTest.java
diff --git a/libraries-data-2/src/test/com/baeldung/hll/HLLLongRunningManualTest.java b/libraries-data-2/src/test/java/com/baeldung/hll/HLLLongRunningManualTest.java
similarity index 100%
rename from libraries-data-2/src/test/com/baeldung/hll/HLLLongRunningManualTest.java
rename to libraries-data-2/src/test/java/com/baeldung/hll/HLLLongRunningManualTest.java
diff --git a/libraries-data-2/src/test/com/baeldung/infinispan/AbstractIntegrationTest.java b/libraries-data-2/src/test/java/com/baeldung/infinispan/AbstractIntegrationTest.java
similarity index 100%
rename from libraries-data-2/src/test/com/baeldung/infinispan/AbstractIntegrationTest.java
rename to libraries-data-2/src/test/java/com/baeldung/infinispan/AbstractIntegrationTest.java
diff --git a/libraries-data-2/src/test/com/baeldung/infinispan/service/HelloWorldServiceTemporaryLiveTest.java b/libraries-data-2/src/test/java/com/baeldung/infinispan/service/HelloWorldServiceTemporaryLiveTest.java
similarity index 100%
rename from libraries-data-2/src/test/com/baeldung/infinispan/service/HelloWorldServiceTemporaryLiveTest.java
rename to libraries-data-2/src/test/java/com/baeldung/infinispan/service/HelloWorldServiceTemporaryLiveTest.java
diff --git a/libraries-data-2/src/test/com/baeldung/infinispan/service/TransactionalServiceIntegrationTest.java b/libraries-data-2/src/test/java/com/baeldung/infinispan/service/TransactionalServiceIntegrationTest.java
similarity index 100%
rename from libraries-data-2/src/test/com/baeldung/infinispan/service/TransactionalServiceIntegrationTest.java
rename to libraries-data-2/src/test/java/com/baeldung/infinispan/service/TransactionalServiceIntegrationTest.java
diff --git a/libraries-data-3/src/test/java/com/baeldung/jmapper/JMapperIntegrationTest.java b/libraries-data-2/src/test/java/com/baeldung/jmapper/JMapperIntegrationTest.java
similarity index 95%
rename from libraries-data-3/src/test/java/com/baeldung/jmapper/JMapperIntegrationTest.java
rename to libraries-data-2/src/test/java/com/baeldung/jmapper/JMapperIntegrationTest.java
index 9db7bdb4ac..177ef08d41 100644
--- a/libraries-data-3/src/test/java/com/baeldung/jmapper/JMapperIntegrationTest.java
+++ b/libraries-data-2/src/test/java/com/baeldung/jmapper/JMapperIntegrationTest.java
@@ -1,17 +1,14 @@
package com.baeldung.jmapper;
-import static com.googlecode.jmapper.api.JMapperAPI.attribute;
-import static com.googlecode.jmapper.api.JMapperAPI.global;
-import static com.googlecode.jmapper.api.JMapperAPI.mappedClass;
-import static org.junit.Assert.assertEquals;
-import static org.junit.Assert.assertTrue;
-
-import java.time.LocalDate;
-
-import org.junit.Test;
-
import com.googlecode.jmapper.JMapper;
import com.googlecode.jmapper.api.JMapperAPI;
+import org.junit.Test;
+
+import java.time.LocalDate;
+
+import static com.googlecode.jmapper.api.JMapperAPI.*;
+import static org.junit.Assert.assertEquals;
+import static org.junit.Assert.assertTrue;
public class JMapperIntegrationTest {
diff --git a/libraries-data-3/src/test/java/com/baeldung/jmapper/JMapperRelationalIntegrationTest.java b/libraries-data-2/src/test/java/com/baeldung/jmapper/JMapperRelationalIntegrationTest.java
similarity index 99%
rename from libraries-data-3/src/test/java/com/baeldung/jmapper/JMapperRelationalIntegrationTest.java
rename to libraries-data-2/src/test/java/com/baeldung/jmapper/JMapperRelationalIntegrationTest.java
index 6af2865159..a44d608a0a 100644
--- a/libraries-data-3/src/test/java/com/baeldung/jmapper/JMapperRelationalIntegrationTest.java
+++ b/libraries-data-2/src/test/java/com/baeldung/jmapper/JMapperRelationalIntegrationTest.java
@@ -1,16 +1,15 @@
package com.baeldung.jmapper;
-import static com.googlecode.jmapper.api.JMapperAPI.attribute;
-import static com.googlecode.jmapper.api.JMapperAPI.mappedClass;
-import static org.junit.Assert.assertEquals;
-
-import org.junit.Test;
-
import com.baeldung.jmapper.relational.User;
import com.baeldung.jmapper.relational.UserDto1;
import com.baeldung.jmapper.relational.UserDto2;
import com.googlecode.jmapper.RelationalJMapper;
import com.googlecode.jmapper.api.JMapperAPI;
+import org.junit.Test;
+
+import static com.googlecode.jmapper.api.JMapperAPI.attribute;
+import static com.googlecode.jmapper.api.JMapperAPI.mappedClass;
+import static org.junit.Assert.assertEquals;
public class JMapperRelationalIntegrationTest {
diff --git a/libraries-data-2/src/test/com/baeldung/measurement/WaterTankUnitTest.java b/libraries-data-2/src/test/java/com/baeldung/measurement/WaterTankUnitTest.java
similarity index 100%
rename from libraries-data-2/src/test/com/baeldung/measurement/WaterTankUnitTest.java
rename to libraries-data-2/src/test/java/com/baeldung/measurement/WaterTankUnitTest.java
diff --git a/libraries-data-3/src/main/resources/user_jmapper.xml b/libraries-data-2/src/test/resources/user_jmapper.xml
similarity index 100%
rename from libraries-data-3/src/main/resources/user_jmapper.xml
rename to libraries-data-2/src/test/resources/user_jmapper.xml
diff --git a/libraries-data-3/src/main/resources/user_jmapper1.xml b/libraries-data-2/src/test/resources/user_jmapper1.xml
similarity index 100%
rename from libraries-data-3/src/main/resources/user_jmapper1.xml
rename to libraries-data-2/src/test/resources/user_jmapper1.xml
diff --git a/libraries-data-3/src/main/resources/user_jmapper2.xml b/libraries-data-2/src/test/resources/user_jmapper2.xml
similarity index 100%
rename from libraries-data-3/src/main/resources/user_jmapper2.xml
rename to libraries-data-2/src/test/resources/user_jmapper2.xml
diff --git a/libraries-data-3/README.md b/libraries-data-3/README.md
deleted file mode 100644
index 6be6eae4a8..0000000000
--- a/libraries-data-3/README.md
+++ /dev/null
@@ -1,5 +0,0 @@
-### Relevant articles
-- [Parsing YAML with SnakeYAML](https://www.baeldung.com/java-snake-yaml)
-- [Guide to JMapper](https://www.baeldung.com/jmapper)
-- [An Introduction to SuanShu](https://www.baeldung.com/suanshu)
-- [Intro to Derive4J](https://www.baeldung.com/derive4j)
diff --git a/libraries-data-3/pom.xml b/libraries-data-3/pom.xml
deleted file mode 100644
index f55701f51c..0000000000
--- a/libraries-data-3/pom.xml
+++ /dev/null
@@ -1,55 +0,0 @@
-
-
-
- 4.0.0
- libraries-data-3
- libraries-data-3
-
-
- com.baeldung
- parent-modules
- 1.0.0-SNAPSHOT
-
-
-
-
- org.yaml
- snakeyaml
- ${snakeyaml.version}
-
-
- com.googlecode.jmapper-framework
- jmapper-core
- ${jmapper.version}
-
-
- com.numericalmethod
- suanshu
- ${suanshu.version}
-
-
- org.derive4j
- derive4j
- ${derive4j.version}
-
-
-
-
-
-
- nm-repo
- Numerical Method's Maven Repository
- http://repo.numericalmethod.com/maven/
- default
-
-
-
-
- 1.21
- 1.6.0.1
- 4.0.0
- 1.1.0
-
-
\ No newline at end of file
diff --git a/libraries-data-3/src/test/resources/yaml/customer_with_type.yaml b/libraries-data-3/src/test/resources/yaml/customer_with_type.yaml
deleted file mode 100644
index 6e13c26cea..0000000000
--- a/libraries-data-3/src/test/resources/yaml/customer_with_type.yaml
+++ /dev/null
@@ -1,4 +0,0 @@
-!!com.baeldung.snakeyaml.Customer
-firstName: "John"
-lastName: "Doe"
-age: 20
\ No newline at end of file
diff --git a/libraries-data-db/README.md b/libraries-data-db/README.md
new file mode 100644
index 0000000000..790a3eb318
--- /dev/null
+++ b/libraries-data-db/README.md
@@ -0,0 +1,11 @@
+## DB Data Libraries
+
+This module contains articles about database-related data processing libraries.
+
+### Relevant articles
+- [Introduction to Reladomo](https://www.baeldung.com/reladomo)
+- [Introduction to ORMLite](https://www.baeldung.com/ormlite)
+- [Guide to Java Data Objects](https://www.baeldung.com/jdo)
+- [Intro to JDO Queries 2/2](https://www.baeldung.com/jdo-queries)
+- [Introduction to HikariCP](https://www.baeldung.com/hikaricp)
+- [Guide to Ebean ORM](https://www.baeldung.com/ebean-orm)
diff --git a/libraries-data-3/log4j.properties b/libraries-data-db/log4j.properties
similarity index 100%
rename from libraries-data-3/log4j.properties
rename to libraries-data-db/log4j.properties
diff --git a/libraries-data/myPersistence.xml b/libraries-data-db/myPersistence.xml
similarity index 100%
rename from libraries-data/myPersistence.xml
rename to libraries-data-db/myPersistence.xml
diff --git a/libraries-data-db/pom.xml b/libraries-data-db/pom.xml
new file mode 100644
index 0000000000..185f23124d
--- /dev/null
+++ b/libraries-data-db/pom.xml
@@ -0,0 +1,228 @@
+
+
+ 4.0.0
+ libraries-data-db
+ libraries-data-db
+
+
+ com.baeldung
+ parent-modules
+ 1.0.0-SNAPSHOT
+
+
+
+
+ com.goldmansachs.reladomo
+ reladomo
+ ${reladomo.version}
+
+
+ com.goldmansachs.reladomo
+ reladomo-test-util
+ ${reladomo.version}
+
+
+ com.j256.ormlite
+ ormlite-jdbc
+ ${ormlite.version}
+
+
+
+ org.datanucleus
+ javax.jdo
+ ${javax.jdo.version}
+
+
+ org.datanucleus
+ datanucleus-core
+ ${datanucleus.version}
+
+
+ org.datanucleus
+ datanucleus-api-jdo
+ ${datanucleus.version}
+
+
+ org.datanucleus
+ datanucleus-rdbms
+ ${datanucleus.version}
+
+
+ org.datanucleus
+ datanucleus-maven-plugin
+ ${datanucleus-maven-plugin.version}
+
+
+ org.datanucleus
+ datanucleus-xml
+ ${datanucleus-xml.version}
+
+
+ org.datanucleus
+ datanucleus-jdo-query
+ ${datanucleus-jdo-query.version}
+
+
+ org.slf4j
+ slf4j-log4j12
+ ${slf4j.version}
+
+
+ com.h2database
+ h2
+ ${h2.version}
+
+
+
+ com.zaxxer
+ HikariCP
+ ${HikariCP.version}
+ compile
+
+
+
+ io.ebean
+ ebean
+ ${ebean.version}
+
+
+
+
+ libraries-data-db
+
+
+
+ maven-antrun-plugin
+ ${maven-antrun-plugin.version}
+
+
+ generateMithra
+ generate-sources
+
+ run
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ com.goldmansachs.reladomo
+ reladomogen
+ ${reladomo.version}
+
+
+
+ com.goldmansachs.reladomo
+ reladomo-gen-util
+ ${reladomo.version}
+
+
+
+
+ org.codehaus.mojo
+ build-helper-maven-plugin
+ ${build-helper-maven-plugin.version}
+
+
+ add-source
+ generate-sources
+
+ add-source
+
+
+
+ ${project.build.directory}/generated-sources/reladomo
+
+
+
+
+ add-resource
+ generate-resources
+
+ add-resource
+
+
+
+
+ ${project.build.directory}/generated-db/
+
+
+
+
+
+
+
+
+
+
+ org.datanucleus
+ datanucleus-maven-plugin
+ ${datanucleus-maven-plugin.version}
+
+ JDO
+ ${basedir}/datanucleus.properties
+ ${basedir}/log4j.properties
+ true
+ false
+
+
+
+
+ process-classes
+
+ enhance
+
+
+
+
+
+ io.ebean
+ ebean-maven-plugin
+ 11.11.2
+
+
+
+ main
+ process-classes
+
+ debug=1
+
+
+ enhance
+
+
+
+
+
+
+
+
+ 16.5.1
+ 3.0.0
+ 1.8
+ 5.0
+ 5.1.1
+ 5.0.2
+ 5.0.0-release
+ 5.0.4
+ 3.2.0-m7
+ 1.7.25
+ 2.7.2
+ 11.22.4
+
+
\ No newline at end of file
diff --git a/libraries-data/src/main/java/com/baeldung/ebean/app/App.java b/libraries-data-db/src/main/java/com/baeldung/libraries/ebean/app/App.java
similarity index 93%
rename from libraries-data/src/main/java/com/baeldung/ebean/app/App.java
rename to libraries-data-db/src/main/java/com/baeldung/libraries/ebean/app/App.java
index 44a4fa8562..9c59cbb8c0 100644
--- a/libraries-data/src/main/java/com/baeldung/ebean/app/App.java
+++ b/libraries-data-db/src/main/java/com/baeldung/libraries/ebean/app/App.java
@@ -1,14 +1,13 @@
-package com.baeldung.ebean.app;
-
-import java.util.Arrays;
-
-import com.baeldung.ebean.model.Address;
-import com.baeldung.ebean.model.Customer;
+package com.baeldung.libraries.ebean.app;
+import com.baeldung.libraries.ebean.model.Address;
+import com.baeldung.libraries.ebean.model.Customer;
import io.ebean.Ebean;
import io.ebean.EbeanServer;
import io.ebean.annotation.Transactional;
+import java.util.Arrays;
+
public class App {
public static void main(String[] args) {
diff --git a/libraries-data/src/main/java/com/baeldung/ebean/app/App2.java b/libraries-data-db/src/main/java/com/baeldung/libraries/ebean/app/App2.java
similarity index 95%
rename from libraries-data/src/main/java/com/baeldung/ebean/app/App2.java
rename to libraries-data-db/src/main/java/com/baeldung/libraries/ebean/app/App2.java
index fba77007c6..c604f2cc25 100644
--- a/libraries-data/src/main/java/com/baeldung/ebean/app/App2.java
+++ b/libraries-data-db/src/main/java/com/baeldung/libraries/ebean/app/App2.java
@@ -1,11 +1,11 @@
-package com.baeldung.ebean.app;
-
-import java.util.Properties;
+package com.baeldung.libraries.ebean.app;
import io.ebean.EbeanServer;
import io.ebean.EbeanServerFactory;
import io.ebean.config.ServerConfig;
+import java.util.Properties;
+
public class App2 {
public static void main(String[] args) {
diff --git a/libraries-data/src/main/java/com/baeldung/ebean/model/Address.java b/libraries-data-db/src/main/java/com/baeldung/libraries/ebean/model/Address.java
similarity index 96%
rename from libraries-data/src/main/java/com/baeldung/ebean/model/Address.java
rename to libraries-data-db/src/main/java/com/baeldung/libraries/ebean/model/Address.java
index dfcd90ffa7..a5c97b9c1d 100644
--- a/libraries-data/src/main/java/com/baeldung/ebean/model/Address.java
+++ b/libraries-data-db/src/main/java/com/baeldung/libraries/ebean/model/Address.java
@@ -1,4 +1,4 @@
-package com.baeldung.ebean.model;
+package com.baeldung.libraries.ebean.model;
import javax.persistence.Entity;
diff --git a/libraries-data/src/main/java/com/baeldung/ebean/model/BaseModel.java b/libraries-data-db/src/main/java/com/baeldung/libraries/ebean/model/BaseModel.java
similarity index 95%
rename from libraries-data/src/main/java/com/baeldung/ebean/model/BaseModel.java
rename to libraries-data-db/src/main/java/com/baeldung/libraries/ebean/model/BaseModel.java
index 547d5bf075..7abd425470 100644
--- a/libraries-data/src/main/java/com/baeldung/ebean/model/BaseModel.java
+++ b/libraries-data-db/src/main/java/com/baeldung/libraries/ebean/model/BaseModel.java
@@ -1,13 +1,12 @@
-package com.baeldung.ebean.model;
+package com.baeldung.libraries.ebean.model;
-import java.time.Instant;
+import io.ebean.annotation.WhenCreated;
+import io.ebean.annotation.WhenModified;
import javax.persistence.Id;
import javax.persistence.MappedSuperclass;
import javax.persistence.Version;
-
-import io.ebean.annotation.WhenCreated;
-import io.ebean.annotation.WhenModified;
+import java.time.Instant;
@MappedSuperclass
public abstract class BaseModel {
diff --git a/libraries-data/src/main/java/com/baeldung/ebean/model/Customer.java b/libraries-data-db/src/main/java/com/baeldung/libraries/ebean/model/Customer.java
similarity index 94%
rename from libraries-data/src/main/java/com/baeldung/ebean/model/Customer.java
rename to libraries-data-db/src/main/java/com/baeldung/libraries/ebean/model/Customer.java
index 4dd629245a..f8fa9e505e 100644
--- a/libraries-data/src/main/java/com/baeldung/ebean/model/Customer.java
+++ b/libraries-data-db/src/main/java/com/baeldung/libraries/ebean/model/Customer.java
@@ -1,4 +1,4 @@
-package com.baeldung.ebean.model;
+package com.baeldung.libraries.ebean.model;
import javax.persistence.CascadeType;
import javax.persistence.Entity;
diff --git a/libraries-data/src/main/java/com/baeldung/hikaricp/DataSource.java b/libraries-data-db/src/main/java/com/baeldung/libraries/hikaricp/DataSource.java
similarity index 97%
rename from libraries-data/src/main/java/com/baeldung/hikaricp/DataSource.java
rename to libraries-data-db/src/main/java/com/baeldung/libraries/hikaricp/DataSource.java
index e8d3b4ff96..868d4b90b0 100644
--- a/libraries-data/src/main/java/com/baeldung/hikaricp/DataSource.java
+++ b/libraries-data-db/src/main/java/com/baeldung/libraries/hikaricp/DataSource.java
@@ -1,11 +1,11 @@
-package com.baeldung.hikaricp;
-
-import java.sql.Connection;
-import java.sql.SQLException;
+package com.baeldung.libraries.hikaricp;
import com.zaxxer.hikari.HikariConfig;
import com.zaxxer.hikari.HikariDataSource;
+import java.sql.Connection;
+import java.sql.SQLException;
+
public class DataSource {
private static HikariConfig config = new HikariConfig();
diff --git a/libraries-data/src/main/java/com/baeldung/hikaricp/Employee.java b/libraries-data-db/src/main/java/com/baeldung/libraries/hikaricp/Employee.java
similarity index 97%
rename from libraries-data/src/main/java/com/baeldung/hikaricp/Employee.java
rename to libraries-data-db/src/main/java/com/baeldung/libraries/hikaricp/Employee.java
index 1ea3c13a48..338599c969 100644
--- a/libraries-data/src/main/java/com/baeldung/hikaricp/Employee.java
+++ b/libraries-data-db/src/main/java/com/baeldung/libraries/hikaricp/Employee.java
@@ -1,4 +1,4 @@
-package com.baeldung.hikaricp;
+package com.baeldung.libraries.hikaricp;
import java.sql.Date;
diff --git a/libraries-data/src/main/java/com/baeldung/hikaricp/HikariCPDemo.java b/libraries-data-db/src/main/java/com/baeldung/libraries/hikaricp/HikariCPDemo.java
similarity index 97%
rename from libraries-data/src/main/java/com/baeldung/hikaricp/HikariCPDemo.java
rename to libraries-data-db/src/main/java/com/baeldung/libraries/hikaricp/HikariCPDemo.java
index 57d124fd5d..e23b583d98 100644
--- a/libraries-data/src/main/java/com/baeldung/hikaricp/HikariCPDemo.java
+++ b/libraries-data-db/src/main/java/com/baeldung/libraries/hikaricp/HikariCPDemo.java
@@ -1,4 +1,4 @@
-package com.baeldung.hikaricp;
+package com.baeldung.libraries.hikaricp;
import java.sql.Connection;
import java.sql.PreparedStatement;
diff --git a/libraries-data/src/main/java/com/baeldung/jdo/GuideToJDO.java b/libraries-data-db/src/main/java/com/baeldung/libraries/jdo/GuideToJDO.java
similarity index 98%
rename from libraries-data/src/main/java/com/baeldung/jdo/GuideToJDO.java
rename to libraries-data-db/src/main/java/com/baeldung/libraries/jdo/GuideToJDO.java
index bd459f963c..99b0a4bef7 100644
--- a/libraries-data/src/main/java/com/baeldung/jdo/GuideToJDO.java
+++ b/libraries-data-db/src/main/java/com/baeldung/libraries/jdo/GuideToJDO.java
@@ -1,5 +1,12 @@
-package com.baeldung.jdo;
+package com.baeldung.libraries.jdo;
+import org.datanucleus.api.jdo.JDOPersistenceManagerFactory;
+import org.datanucleus.metadata.PersistenceUnitMetaData;
+
+import javax.jdo.PersistenceManager;
+import javax.jdo.PersistenceManagerFactory;
+import javax.jdo.Query;
+import javax.jdo.Transaction;
import java.util.Collection;
import java.util.Iterator;
import java.util.List;
@@ -7,14 +14,6 @@ import java.util.Random;
import java.util.logging.Level;
import java.util.logging.Logger;
-import javax.jdo.PersistenceManager;
-import javax.jdo.PersistenceManagerFactory;
-import javax.jdo.Query;
-import javax.jdo.Transaction;
-
-import org.datanucleus.api.jdo.JDOPersistenceManagerFactory;
-import org.datanucleus.metadata.PersistenceUnitMetaData;
-
public class GuideToJDO {
private static final Logger LOGGER = Logger.getLogger(GuideToJDO.class.getName());
@@ -45,7 +44,7 @@ public class GuideToJDO {
public void CreateH2Properties() {
pumd = new PersistenceUnitMetaData("dynamic-unit", "RESOURCE_LOCAL", null);
- pumd.addClassName("com.baeldung.jdo.Product");
+ pumd.addClassName("com.baeldung.libraries.jdo.Product");
pumd.setExcludeUnlistedClasses();
pumd.addProperty("javax.jdo.option.ConnectionDriverName", "org.h2.Driver");
pumd.addProperty("javax.jdo.option.ConnectionURL", "jdbc:h2:mem:mypersistence");
@@ -57,7 +56,7 @@ public class GuideToJDO {
public void CreateXMLProperties() {
pumdXML = new PersistenceUnitMetaData("dynamic-unit", "RESOURCE_LOCAL", null);
- pumdXML.addClassName("com.baeldung.jdo.ProductXML");
+ pumdXML.addClassName("com.baeldung.libraries.jdo.ProductXML");
pumdXML.setExcludeUnlistedClasses();
pumdXML.addProperty("javax.jdo.option.ConnectionURL", "xml:file:myPersistence.xml");
pumdXML.addProperty("datanucleus.autoCreateSchema", "true");
diff --git a/libraries-data/src/main/java/com/baeldung/jdo/Product.java b/libraries-data-db/src/main/java/com/baeldung/libraries/jdo/Product.java
similarity index 95%
rename from libraries-data/src/main/java/com/baeldung/jdo/Product.java
rename to libraries-data-db/src/main/java/com/baeldung/libraries/jdo/Product.java
index 124428d671..3ff27732a9 100644
--- a/libraries-data/src/main/java/com/baeldung/jdo/Product.java
+++ b/libraries-data-db/src/main/java/com/baeldung/libraries/jdo/Product.java
@@ -1,4 +1,4 @@
-package com.baeldung.jdo;
+package com.baeldung.libraries.jdo;
import javax.jdo.annotations.IdGeneratorStrategy;
import javax.jdo.annotations.PersistenceCapable;
diff --git a/libraries-data/src/main/java/com/baeldung/jdo/ProductXML.java b/libraries-data-db/src/main/java/com/baeldung/libraries/jdo/ProductXML.java
similarity index 96%
rename from libraries-data/src/main/java/com/baeldung/jdo/ProductXML.java
rename to libraries-data-db/src/main/java/com/baeldung/libraries/jdo/ProductXML.java
index d702a8ac90..2679b049bb 100644
--- a/libraries-data/src/main/java/com/baeldung/jdo/ProductXML.java
+++ b/libraries-data-db/src/main/java/com/baeldung/libraries/jdo/ProductXML.java
@@ -1,4 +1,4 @@
-package com.baeldung.jdo;
+package com.baeldung.libraries.jdo;
import javax.jdo.annotations.PersistenceCapable;
import javax.jdo.annotations.PrimaryKey;
diff --git a/libraries-data/src/main/java/com/baeldung/jdo/query/MyApp.java b/libraries-data-db/src/main/java/com/baeldung/libraries/jdo/query/MyApp.java
similarity index 85%
rename from libraries-data/src/main/java/com/baeldung/jdo/query/MyApp.java
rename to libraries-data-db/src/main/java/com/baeldung/libraries/jdo/query/MyApp.java
index 30f019a79d..61f983c727 100644
--- a/libraries-data/src/main/java/com/baeldung/jdo/query/MyApp.java
+++ b/libraries-data-db/src/main/java/com/baeldung/libraries/jdo/query/MyApp.java
@@ -1,14 +1,13 @@
-package com.baeldung.jdo.query;
+package com.baeldung.libraries.jdo.query;
-import java.util.List;
+import org.datanucleus.api.jdo.JDOPersistenceManagerFactory;
+import org.datanucleus.metadata.PersistenceUnitMetaData;
import javax.jdo.JDOQLTypedQuery;
import javax.jdo.PersistenceManager;
import javax.jdo.PersistenceManagerFactory;
import javax.jdo.Query;
-
-import org.datanucleus.api.jdo.JDOPersistenceManagerFactory;
-import org.datanucleus.metadata.PersistenceUnitMetaData;
+import java.util.List;
public class MyApp {
@@ -53,14 +52,14 @@ public class MyApp {
public static void queryUsingJDOQL() {
- Query query = pm.newQuery("SELECT FROM com.baeldung.jdo.query.ProductItem " + "WHERE price < threshold PARAMETERS double threshold");
+ Query query = pm.newQuery("SELECT FROM com.baeldung.libraries.jdo.query.ProductItem " + "WHERE price < threshold PARAMETERS double threshold");
List explicitParamResults = (List) query.execute(10);
- query = pm.newQuery("SELECT FROM " + "com.baeldung.jdo.query.ProductItem WHERE price < :threshold");
+ query = pm.newQuery("SELECT FROM " + "com.baeldung.libraries.jdo.query.ProductItem WHERE price < :threshold");
query.setParameters("double threshold");
List explicitParamResults2 = (List) query.execute(10);
- query = pm.newQuery("SELECT FROM " + "com.baeldung.jdo.query.ProductItem WHERE price < :threshold");
+ query = pm.newQuery("SELECT FROM " + "com.baeldung.libraries.jdo.query.ProductItem WHERE price < :threshold");
List implicitParamResults = (List) query.execute(10);
}
@@ -83,7 +82,7 @@ public class MyApp {
}
public static void queryUsingJPQL() {
- Query query = pm.newQuery("JPQL", "select i from " + "com.baeldung.jdo.query.ProductItem i where i.price < 10" + " and i.status = 'InStock'");
+ Query query = pm.newQuery("JPQL", "select i from " + "com.baeldung.libraries.jdo.query.ProductItem i where i.price < 10" + " and i.status = 'InStock'");
List results = (List) query.execute();
}
diff --git a/libraries-data/src/main/java/com/baeldung/jdo/query/ProductItem.java b/libraries-data-db/src/main/java/com/baeldung/libraries/jdo/query/ProductItem.java
similarity index 97%
rename from libraries-data/src/main/java/com/baeldung/jdo/query/ProductItem.java
rename to libraries-data-db/src/main/java/com/baeldung/libraries/jdo/query/ProductItem.java
index 25dd8bdb98..9cefeeb44f 100644
--- a/libraries-data/src/main/java/com/baeldung/jdo/query/ProductItem.java
+++ b/libraries-data-db/src/main/java/com/baeldung/libraries/jdo/query/ProductItem.java
@@ -1,4 +1,4 @@
-package com.baeldung.jdo.query;
+package com.baeldung.libraries.jdo.query;
import javax.jdo.annotations.IdGeneratorStrategy;
import javax.jdo.annotations.PersistenceCapable;
diff --git a/libraries-data/src/main/java/com/baeldung/jdo/xml/AnnotadedPerson.java b/libraries-data-db/src/main/java/com/baeldung/libraries/jdo/xml/AnnotadedPerson.java
similarity index 97%
rename from libraries-data/src/main/java/com/baeldung/jdo/xml/AnnotadedPerson.java
rename to libraries-data-db/src/main/java/com/baeldung/libraries/jdo/xml/AnnotadedPerson.java
index 0673ff341c..0520bf1d09 100644
--- a/libraries-data/src/main/java/com/baeldung/jdo/xml/AnnotadedPerson.java
+++ b/libraries-data-db/src/main/java/com/baeldung/libraries/jdo/xml/AnnotadedPerson.java
@@ -1,7 +1,4 @@
-package com.baeldung.jdo.xml;
-
-import java.util.ArrayList;
-import java.util.List;
+package com.baeldung.libraries.jdo.xml;
import javax.jdo.annotations.Element;
import javax.jdo.annotations.PersistenceCapable;
@@ -9,6 +6,8 @@ import javax.jdo.annotations.PrimaryKey;
import javax.xml.bind.annotation.XmlAttribute;
import javax.xml.bind.annotation.XmlElement;
import javax.xml.bind.annotation.XmlElementWrapper;
+import java.util.ArrayList;
+import java.util.List;
@PersistenceCapable(schema = "/myproduct/people", table = "person")
public class AnnotadedPerson {
diff --git a/libraries-data/src/main/java/com/baeldung/jdo/xml/MyApp.java b/libraries-data-db/src/main/java/com/baeldung/libraries/jdo/xml/MyApp.java
similarity index 94%
rename from libraries-data/src/main/java/com/baeldung/jdo/xml/MyApp.java
rename to libraries-data-db/src/main/java/com/baeldung/libraries/jdo/xml/MyApp.java
index b43b45f415..513481956d 100644
--- a/libraries-data/src/main/java/com/baeldung/jdo/xml/MyApp.java
+++ b/libraries-data-db/src/main/java/com/baeldung/libraries/jdo/xml/MyApp.java
@@ -1,16 +1,11 @@
-package com.baeldung.jdo.xml;
-
-import java.util.List;
-
-import javax.jdo.JDOHelper;
-import javax.jdo.PersistenceManager;
-import javax.jdo.PersistenceManagerFactory;
-import javax.jdo.Query;
-import javax.jdo.Transaction;
+package com.baeldung.libraries.jdo.xml;
import org.datanucleus.api.jdo.JDOPersistenceManagerFactory;
import org.datanucleus.metadata.PersistenceUnitMetaData;
+import javax.jdo.*;
+import java.util.List;
+
public class MyApp {
private static PersistenceUnitMetaData pumd;
diff --git a/libraries-data/src/main/java/com/baeldung/jdo/xml/Person.java b/libraries-data-db/src/main/java/com/baeldung/libraries/jdo/xml/Person.java
similarity index 96%
rename from libraries-data/src/main/java/com/baeldung/jdo/xml/Person.java
rename to libraries-data-db/src/main/java/com/baeldung/libraries/jdo/xml/Person.java
index 4fbc81ee03..0cc3dff316 100644
--- a/libraries-data/src/main/java/com/baeldung/jdo/xml/Person.java
+++ b/libraries-data-db/src/main/java/com/baeldung/libraries/jdo/xml/Person.java
@@ -1,10 +1,9 @@
-package com.baeldung.jdo.xml;
-
-import java.util.ArrayList;
-import java.util.List;
+package com.baeldung.libraries.jdo.xml;
import javax.jdo.annotations.PersistenceCapable;
import javax.jdo.annotations.PrimaryKey;
+import java.util.ArrayList;
+import java.util.List;
@PersistenceCapable
public class Person {
diff --git a/libraries-data/src/main/java/com/baeldung/jdo/xml/Product.java b/libraries-data-db/src/main/java/com/baeldung/libraries/jdo/xml/Product.java
similarity index 96%
rename from libraries-data/src/main/java/com/baeldung/jdo/xml/Product.java
rename to libraries-data-db/src/main/java/com/baeldung/libraries/jdo/xml/Product.java
index 5aac05834d..04b81ea356 100644
--- a/libraries-data/src/main/java/com/baeldung/jdo/xml/Product.java
+++ b/libraries-data-db/src/main/java/com/baeldung/libraries/jdo/xml/Product.java
@@ -1,4 +1,4 @@
-package com.baeldung.jdo.xml;
+package com.baeldung.libraries.jdo.xml;
import javax.jdo.annotations.PersistenceCapable;
import javax.jdo.annotations.PrimaryKey;
diff --git a/libraries-data/src/main/java/com/baeldung/ormlite/Address.java b/libraries-data-db/src/main/java/com/baeldung/libraries/ormlite/Address.java
similarity index 94%
rename from libraries-data/src/main/java/com/baeldung/ormlite/Address.java
rename to libraries-data-db/src/main/java/com/baeldung/libraries/ormlite/Address.java
index 747b0b0b12..d433eba13f 100644
--- a/libraries-data/src/main/java/com/baeldung/ormlite/Address.java
+++ b/libraries-data-db/src/main/java/com/baeldung/libraries/ormlite/Address.java
@@ -1,4 +1,4 @@
-package com.baeldung.ormlite;
+package com.baeldung.libraries.ormlite;
import com.j256.ormlite.field.DatabaseField;
import com.j256.ormlite.table.DatabaseTable;
diff --git a/libraries-data/src/main/java/com/baeldung/ormlite/Book.java b/libraries-data-db/src/main/java/com/baeldung/libraries/ormlite/Book.java
similarity index 95%
rename from libraries-data/src/main/java/com/baeldung/ormlite/Book.java
rename to libraries-data-db/src/main/java/com/baeldung/libraries/ormlite/Book.java
index ed7b813b8d..b55390058b 100644
--- a/libraries-data/src/main/java/com/baeldung/ormlite/Book.java
+++ b/libraries-data-db/src/main/java/com/baeldung/libraries/ormlite/Book.java
@@ -1,4 +1,4 @@
-package com.baeldung.ormlite;
+package com.baeldung.libraries.ormlite;
import com.j256.ormlite.field.DatabaseField;
import com.j256.ormlite.table.DatabaseTable;
diff --git a/libraries-data/src/main/java/com/baeldung/ormlite/Library.java b/libraries-data-db/src/main/java/com/baeldung/libraries/ormlite/Library.java
similarity index 96%
rename from libraries-data/src/main/java/com/baeldung/ormlite/Library.java
rename to libraries-data-db/src/main/java/com/baeldung/libraries/ormlite/Library.java
index 994b4c6575..c7d0d91b46 100644
--- a/libraries-data/src/main/java/com/baeldung/ormlite/Library.java
+++ b/libraries-data-db/src/main/java/com/baeldung/libraries/ormlite/Library.java
@@ -1,4 +1,4 @@
-package com.baeldung.ormlite;
+package com.baeldung.libraries.ormlite;
import com.j256.ormlite.dao.ForeignCollection;
import com.j256.ormlite.field.DatabaseField;
diff --git a/libraries-data/src/main/java/com/baeldung/ormlite/LibraryDao.java b/libraries-data-db/src/main/java/com/baeldung/libraries/ormlite/LibraryDao.java
similarity index 84%
rename from libraries-data/src/main/java/com/baeldung/ormlite/LibraryDao.java
rename to libraries-data-db/src/main/java/com/baeldung/libraries/ormlite/LibraryDao.java
index fd8f5f40d6..12cefe0358 100644
--- a/libraries-data/src/main/java/com/baeldung/ormlite/LibraryDao.java
+++ b/libraries-data-db/src/main/java/com/baeldung/libraries/ormlite/LibraryDao.java
@@ -1,10 +1,10 @@
-package com.baeldung.ormlite;
+package com.baeldung.libraries.ormlite;
+
+import com.j256.ormlite.dao.Dao;
import java.sql.SQLException;
import java.util.List;
-import com.j256.ormlite.dao.Dao;
-
public interface LibraryDao extends Dao {
public List findByName(String name) throws SQLException;
}
diff --git a/libraries-data/src/main/java/com/baeldung/ormlite/LibraryDaoImpl.java b/libraries-data-db/src/main/java/com/baeldung/libraries/ormlite/LibraryDaoImpl.java
similarity index 92%
rename from libraries-data/src/main/java/com/baeldung/ormlite/LibraryDaoImpl.java
rename to libraries-data-db/src/main/java/com/baeldung/libraries/ormlite/LibraryDaoImpl.java
index af313101e2..fe43bf85c1 100644
--- a/libraries-data/src/main/java/com/baeldung/ormlite/LibraryDaoImpl.java
+++ b/libraries-data-db/src/main/java/com/baeldung/libraries/ormlite/LibraryDaoImpl.java
@@ -1,11 +1,11 @@
-package com.baeldung.ormlite;
-
-import java.sql.SQLException;
-import java.util.List;
+package com.baeldung.libraries.ormlite;
import com.j256.ormlite.dao.BaseDaoImpl;
import com.j256.ormlite.support.ConnectionSource;
+import java.sql.SQLException;
+import java.util.List;
+
public class LibraryDaoImpl extends BaseDaoImpl implements LibraryDao {
public LibraryDaoImpl(ConnectionSource connectionSource) throws SQLException {
diff --git a/libraries-data/src/main/java/com/baeldung/reladomo/Department.java b/libraries-data-db/src/main/java/com/baeldung/libraries/reladomo/Department.java
similarity index 90%
rename from libraries-data/src/main/java/com/baeldung/reladomo/Department.java
rename to libraries-data-db/src/main/java/com/baeldung/libraries/reladomo/Department.java
index d26ddafbf4..bc57fa6000 100644
--- a/libraries-data/src/main/java/com/baeldung/reladomo/Department.java
+++ b/libraries-data-db/src/main/java/com/baeldung/libraries/reladomo/Department.java
@@ -1,4 +1,4 @@
-package com.baeldung.reladomo;
+package com.baeldung.libraries.reladomo;
public class Department extends DepartmentAbstract {
public Department() {
diff --git a/libraries-data/src/main/java/com/baeldung/reladomo/DepartmentDatabaseObject.java b/libraries-data-db/src/main/java/com/baeldung/libraries/reladomo/DepartmentDatabaseObject.java
similarity index 66%
rename from libraries-data/src/main/java/com/baeldung/reladomo/DepartmentDatabaseObject.java
rename to libraries-data-db/src/main/java/com/baeldung/libraries/reladomo/DepartmentDatabaseObject.java
index 4cfb5cb055..23bd584914 100644
--- a/libraries-data/src/main/java/com/baeldung/reladomo/DepartmentDatabaseObject.java
+++ b/libraries-data-db/src/main/java/com/baeldung/libraries/reladomo/DepartmentDatabaseObject.java
@@ -1,4 +1,4 @@
-package com.baeldung.reladomo;
+package com.baeldung.libraries.reladomo;
public class DepartmentDatabaseObject extends DepartmentDatabaseObjectAbstract
{
}
diff --git a/libraries-data/src/main/java/com/baeldung/reladomo/DepartmentList.java b/libraries-data-db/src/main/java/com/baeldung/libraries/reladomo/DepartmentList.java
similarity index 82%
rename from libraries-data/src/main/java/com/baeldung/reladomo/DepartmentList.java
rename to libraries-data-db/src/main/java/com/baeldung/libraries/reladomo/DepartmentList.java
index edad6bc1f4..278a840553 100644
--- a/libraries-data/src/main/java/com/baeldung/reladomo/DepartmentList.java
+++ b/libraries-data-db/src/main/java/com/baeldung/libraries/reladomo/DepartmentList.java
@@ -1,6 +1,9 @@
-package com.baeldung.reladomo;
+package com.baeldung.libraries.reladomo;
+
import com.gs.fw.finder.Operation;
-import java.util.*;
+
+import java.util.Collection;
+
public class DepartmentList extends DepartmentListAbstract
{
public DepartmentList()
diff --git a/libraries-data/src/main/java/com/baeldung/reladomo/Employee.java b/libraries-data-db/src/main/java/com/baeldung/libraries/reladomo/Employee.java
similarity index 89%
rename from libraries-data/src/main/java/com/baeldung/reladomo/Employee.java
rename to libraries-data-db/src/main/java/com/baeldung/libraries/reladomo/Employee.java
index 519e841282..023dc4a3c7 100644
--- a/libraries-data/src/main/java/com/baeldung/reladomo/Employee.java
+++ b/libraries-data-db/src/main/java/com/baeldung/libraries/reladomo/Employee.java
@@ -1,4 +1,4 @@
-package com.baeldung.reladomo;
+package com.baeldung.libraries.reladomo;
public class Employee extends EmployeeAbstract
{
public Employee()
diff --git a/libraries-data/src/main/java/com/baeldung/reladomo/EmployeeDatabaseObject.java b/libraries-data-db/src/main/java/com/baeldung/libraries/reladomo/EmployeeDatabaseObject.java
similarity index 65%
rename from libraries-data/src/main/java/com/baeldung/reladomo/EmployeeDatabaseObject.java
rename to libraries-data-db/src/main/java/com/baeldung/libraries/reladomo/EmployeeDatabaseObject.java
index 407049f342..e0faced1c6 100644
--- a/libraries-data/src/main/java/com/baeldung/reladomo/EmployeeDatabaseObject.java
+++ b/libraries-data-db/src/main/java/com/baeldung/libraries/reladomo/EmployeeDatabaseObject.java
@@ -1,4 +1,4 @@
-package com.baeldung.reladomo;
+package com.baeldung.libraries.reladomo;
public class EmployeeDatabaseObject extends EmployeeDatabaseObjectAbstract
{
}
diff --git a/libraries-data/src/main/java/com/baeldung/reladomo/EmployeeList.java b/libraries-data-db/src/main/java/com/baeldung/libraries/reladomo/EmployeeList.java
similarity index 81%
rename from libraries-data/src/main/java/com/baeldung/reladomo/EmployeeList.java
rename to libraries-data-db/src/main/java/com/baeldung/libraries/reladomo/EmployeeList.java
index 4e759898c3..192356f4c9 100644
--- a/libraries-data/src/main/java/com/baeldung/reladomo/EmployeeList.java
+++ b/libraries-data-db/src/main/java/com/baeldung/libraries/reladomo/EmployeeList.java
@@ -1,6 +1,9 @@
-package com.baeldung.reladomo;
+package com.baeldung.libraries.reladomo;
+
import com.gs.fw.finder.Operation;
-import java.util.*;
+
+import java.util.Collection;
+
public class EmployeeList extends EmployeeListAbstract
{
public EmployeeList()
diff --git a/libraries-data/src/main/java/com/baeldung/reladomo/ReladomoApplication.java b/libraries-data-db/src/main/java/com/baeldung/libraries/reladomo/ReladomoApplication.java
similarity index 95%
rename from libraries-data/src/main/java/com/baeldung/reladomo/ReladomoApplication.java
rename to libraries-data-db/src/main/java/com/baeldung/libraries/reladomo/ReladomoApplication.java
index c6b242d3ae..1ccae8c59d 100644
--- a/libraries-data/src/main/java/com/baeldung/reladomo/ReladomoApplication.java
+++ b/libraries-data-db/src/main/java/com/baeldung/libraries/reladomo/ReladomoApplication.java
@@ -1,13 +1,10 @@
-package com.baeldung.reladomo;
-
-import java.io.InputStream;
-
-import org.slf4j.Logger;
-import org.slf4j.LoggerFactory;
+package com.baeldung.libraries.reladomo;
import com.gs.fw.common.mithra.MithraManager;
import com.gs.fw.common.mithra.MithraManagerProvider;
+import java.io.InputStream;
+
public class ReladomoApplication {
public static void main(String[] args) {
diff --git a/libraries-data/src/main/java/com/baeldung/reladomo/ReladomoConnectionManager.java b/libraries-data-db/src/main/java/com/baeldung/libraries/reladomo/ReladomoConnectionManager.java
similarity index 98%
rename from libraries-data/src/main/java/com/baeldung/reladomo/ReladomoConnectionManager.java
rename to libraries-data-db/src/main/java/com/baeldung/libraries/reladomo/ReladomoConnectionManager.java
index 66a8f9ff99..15f6ec5601 100644
--- a/libraries-data/src/main/java/com/baeldung/reladomo/ReladomoConnectionManager.java
+++ b/libraries-data-db/src/main/java/com/baeldung/libraries/reladomo/ReladomoConnectionManager.java
@@ -1,4 +1,12 @@
-package com.baeldung.reladomo;
+package com.baeldung.libraries.reladomo;
+
+import com.gs.fw.common.mithra.bulkloader.BulkLoader;
+import com.gs.fw.common.mithra.bulkloader.BulkLoaderException;
+import com.gs.fw.common.mithra.connectionmanager.SourcelessConnectionManager;
+import com.gs.fw.common.mithra.connectionmanager.XAConnectionManager;
+import com.gs.fw.common.mithra.databasetype.DatabaseType;
+import com.gs.fw.common.mithra.databasetype.H2DatabaseType;
+import org.h2.tools.RunScript;
import java.io.IOException;
import java.nio.file.Files;
@@ -9,15 +17,6 @@ import java.sql.SQLException;
import java.util.TimeZone;
import java.util.stream.Stream;
-import org.h2.tools.RunScript;
-
-import com.gs.fw.common.mithra.bulkloader.BulkLoader;
-import com.gs.fw.common.mithra.bulkloader.BulkLoaderException;
-import com.gs.fw.common.mithra.connectionmanager.SourcelessConnectionManager;
-import com.gs.fw.common.mithra.connectionmanager.XAConnectionManager;
-import com.gs.fw.common.mithra.databasetype.DatabaseType;
-import com.gs.fw.common.mithra.databasetype.H2DatabaseType;
-
public class ReladomoConnectionManager implements SourcelessConnectionManager {
private static ReladomoConnectionManager instance;
diff --git a/libraries-data/src/main/resources/META-INF/BenchmarkList b/libraries-data-db/src/main/resources/META-INF/BenchmarkList
similarity index 100%
rename from libraries-data/src/main/resources/META-INF/BenchmarkList
rename to libraries-data-db/src/main/resources/META-INF/BenchmarkList
diff --git a/libraries-data/src/main/resources/META-INF/datanucleus.properties b/libraries-data-db/src/main/resources/META-INF/datanucleus.properties
similarity index 100%
rename from libraries-data/src/main/resources/META-INF/datanucleus.properties
rename to libraries-data-db/src/main/resources/META-INF/datanucleus.properties
diff --git a/libraries-data/src/main/resources/META-INF/jdoconfig.xml b/libraries-data-db/src/main/resources/META-INF/jdoconfig.xml
similarity index 100%
rename from libraries-data/src/main/resources/META-INF/jdoconfig.xml
rename to libraries-data-db/src/main/resources/META-INF/jdoconfig.xml
diff --git a/libraries-data/src/main/resources/META-INF/package.jdo b/libraries-data-db/src/main/resources/META-INF/package.jdo
similarity index 91%
rename from libraries-data/src/main/resources/META-INF/package.jdo
rename to libraries-data-db/src/main/resources/META-INF/package.jdo
index 7f85bbbd58..afe505401b 100644
--- a/libraries-data/src/main/resources/META-INF/package.jdo
+++ b/libraries-data-db/src/main/resources/META-INF/package.jdo
@@ -1,7 +1,7 @@
-
+
@@ -16,7 +16,7 @@
-
+
diff --git a/libraries-data/src/main/resources/db.sql b/libraries-data-db/src/main/resources/db.sql
similarity index 100%
rename from libraries-data/src/main/resources/db.sql
rename to libraries-data-db/src/main/resources/db.sql
diff --git a/libraries-data-db/src/main/resources/ebean.mf b/libraries-data-db/src/main/resources/ebean.mf
new file mode 100644
index 0000000000..c3484f8f57
--- /dev/null
+++ b/libraries-data-db/src/main/resources/ebean.mf
@@ -0,0 +1,3 @@
+entity-packages: com.baeldung.libraries.ebean.model
+transactional-packages: com.baeldung.libraries.ebean.app
+querybean-packages: com.baeldung.libraries.ebean.app
diff --git a/libraries-data/src/main/resources/ebean.properties b/libraries-data-db/src/main/resources/ebean.properties
similarity index 100%
rename from libraries-data/src/main/resources/ebean.properties
rename to libraries-data-db/src/main/resources/ebean.properties
diff --git a/ml/src/main/resources/logback.xml b/libraries-data-db/src/main/resources/logback.xml
similarity index 67%
rename from ml/src/main/resources/logback.xml
rename to libraries-data-db/src/main/resources/logback.xml
index 7d900d8ea8..3d2ec51566 100644
--- a/ml/src/main/resources/logback.xml
+++ b/libraries-data-db/src/main/resources/logback.xml
@@ -6,8 +6,10 @@
-
-
+
+
+
+
\ No newline at end of file
diff --git a/libraries-data/src/main/resources/reladomo/Department.xml b/libraries-data-db/src/main/resources/reladomo/Department.xml
similarity index 89%
rename from libraries-data/src/main/resources/reladomo/Department.xml
rename to libraries-data-db/src/main/resources/reladomo/Department.xml
index a284965cd6..2392ff74ec 100644
--- a/libraries-data/src/main/resources/reladomo/Department.xml
+++ b/libraries-data-db/src/main/resources/reladomo/Department.xml
@@ -1,5 +1,5 @@
- com.baeldung.reladomo
+ com.baeldung.libraries.reladomo
Department
departments
diff --git a/libraries-data/src/main/resources/reladomo/Employee.xml b/libraries-data-db/src/main/resources/reladomo/Employee.xml
similarity index 86%
rename from libraries-data/src/main/resources/reladomo/Employee.xml
rename to libraries-data-db/src/main/resources/reladomo/Employee.xml
index 00e360bc67..676cd5d1d1 100644
--- a/libraries-data/src/main/resources/reladomo/Employee.xml
+++ b/libraries-data-db/src/main/resources/reladomo/Employee.xml
@@ -1,5 +1,5 @@
- com.baeldung.reladomo
+ com.baeldung.libraries.reladomo
Employee
employees
diff --git a/libraries-data/src/main/resources/reladomo/ReladomoClassList.xml b/libraries-data-db/src/main/resources/reladomo/ReladomoClassList.xml
similarity index 100%
rename from libraries-data/src/main/resources/reladomo/ReladomoClassList.xml
rename to libraries-data-db/src/main/resources/reladomo/ReladomoClassList.xml
diff --git a/libraries-data-db/src/main/resources/reladomo/ReladomoRuntimeConfig.xml b/libraries-data-db/src/main/resources/reladomo/ReladomoRuntimeConfig.xml
new file mode 100644
index 0000000000..e4800e31f8
--- /dev/null
+++ b/libraries-data-db/src/main/resources/reladomo/ReladomoRuntimeConfig.xml
@@ -0,0 +1,6 @@
+
+
+
+
+
+
\ No newline at end of file
diff --git a/libraries-data/src/test/java/com/baeldung/hikaricp/HikariCPIntegrationTest.java b/libraries-data-db/src/test/java/com/baeldung/libraries/hikaricp/HikariCPIntegrationTest.java
similarity index 88%
rename from libraries-data/src/test/java/com/baeldung/hikaricp/HikariCPIntegrationTest.java
rename to libraries-data-db/src/test/java/com/baeldung/libraries/hikaricp/HikariCPIntegrationTest.java
index 80588ecc03..fe5bd85736 100644
--- a/libraries-data/src/test/java/com/baeldung/hikaricp/HikariCPIntegrationTest.java
+++ b/libraries-data-db/src/test/java/com/baeldung/libraries/hikaricp/HikariCPIntegrationTest.java
@@ -1,4 +1,4 @@
-package com.baeldung.hikaricp;
+package com.baeldung.libraries.hikaricp;
import org.junit.Test;
diff --git a/libraries-data/src/test/java/com/baeldung/jdo/GuideToJDOIntegrationTest.java b/libraries-data-db/src/test/java/com/baeldung/libraries/jdo/GuideToJDOIntegrationTest.java
similarity index 96%
rename from libraries-data/src/test/java/com/baeldung/jdo/GuideToJDOIntegrationTest.java
rename to libraries-data-db/src/test/java/com/baeldung/libraries/jdo/GuideToJDOIntegrationTest.java
index e8c69d67b7..1c15a4f087 100644
--- a/libraries-data/src/test/java/com/baeldung/jdo/GuideToJDOIntegrationTest.java
+++ b/libraries-data-db/src/test/java/com/baeldung/libraries/jdo/GuideToJDOIntegrationTest.java
@@ -1,24 +1,23 @@
-package com.baeldung.jdo;
-
-import static org.junit.Assert.assertEquals;
-import static org.junit.Assert.fail;
-
-import java.util.List;
-
-import javax.jdo.PersistenceManager;
-import javax.jdo.PersistenceManagerFactory;
-import javax.jdo.Query;
-import javax.jdo.Transaction;
+package com.baeldung.libraries.jdo;
import org.datanucleus.api.jdo.JDOPersistenceManagerFactory;
import org.datanucleus.metadata.PersistenceUnitMetaData;
import org.junit.Test;
+import javax.jdo.PersistenceManager;
+import javax.jdo.PersistenceManagerFactory;
+import javax.jdo.Query;
+import javax.jdo.Transaction;
+import java.util.List;
+
+import static org.junit.Assert.assertEquals;
+import static org.junit.Assert.fail;
+
public class GuideToJDOIntegrationTest {
@Test
public void givenProduct_WhenNewThenPerformTransaction() {
PersistenceUnitMetaData pumd = new PersistenceUnitMetaData("dynamic-unit", "RESOURCE_LOCAL", null);
- pumd.addClassName("com.baeldung.jdo.Product");
+ pumd.addClassName("com.baeldung.libraries.jdo.Product");
pumd.setExcludeUnlistedClasses();
pumd.addProperty("javax.jdo.option.ConnectionDriverName", "org.h2.Driver");
pumd.addProperty("javax.jdo.option.ConnectionURL", "jdbc:h2:mem:mypersistence");
@@ -53,7 +52,7 @@ public class GuideToJDOIntegrationTest {
@Test
public void givenProduct_WhenQueryThenExist() {
PersistenceUnitMetaData pumd = new PersistenceUnitMetaData("dynamic-unit", "RESOURCE_LOCAL", null);
- pumd.addClassName("com.baeldung.jdo.Product");
+ pumd.addClassName("com.baeldung.libraries.jdo.Product");
pumd.setExcludeUnlistedClasses();
pumd.addProperty("javax.jdo.option.ConnectionDriverName", "org.h2.Driver");
pumd.addProperty("javax.jdo.option.ConnectionURL", "jdbc:h2:mem:mypersistence");
diff --git a/libraries-data/src/test/java/com/baeldung/ormlite/ORMLiteIntegrationTest.java b/libraries-data-db/src/test/java/com/baeldung/libraries/ormlite/ORMLiteIntegrationTest.java
similarity index 99%
rename from libraries-data/src/test/java/com/baeldung/ormlite/ORMLiteIntegrationTest.java
rename to libraries-data-db/src/test/java/com/baeldung/libraries/ormlite/ORMLiteIntegrationTest.java
index 5a713902b4..139e52632a 100644
--- a/libraries-data/src/test/java/com/baeldung/ormlite/ORMLiteIntegrationTest.java
+++ b/libraries-data-db/src/test/java/com/baeldung/libraries/ormlite/ORMLiteIntegrationTest.java
@@ -1,20 +1,20 @@
-package com.baeldung.ormlite;
+package com.baeldung.libraries.ormlite;
-import static org.junit.Assert.*;
-
-import java.io.IOException;
-import java.sql.SQLException;
-import java.util.List;
-
-import org.junit.After;
-import org.junit.AfterClass;
-import org.junit.BeforeClass;
-import org.junit.Test;
import com.j256.ormlite.dao.CloseableWrappedIterable;
import com.j256.ormlite.dao.Dao;
import com.j256.ormlite.dao.DaoManager;
import com.j256.ormlite.jdbc.JdbcPooledConnectionSource;
import com.j256.ormlite.table.TableUtils;
+import org.junit.After;
+import org.junit.AfterClass;
+import org.junit.BeforeClass;
+import org.junit.Test;
+
+import java.io.IOException;
+import java.sql.SQLException;
+import java.util.List;
+
+import static org.junit.Assert.*;
public class ORMLiteIntegrationTest {
private static JdbcPooledConnectionSource connectionSource;
diff --git a/libraries-data/src/test/java/com/baeldung/reladomo/ReladomoIntegrationTest.java b/libraries-data-db/src/test/java/com/baeldung/libraries/reladomo/ReladomoIntegrationTest.java
similarity index 96%
rename from libraries-data/src/test/java/com/baeldung/reladomo/ReladomoIntegrationTest.java
rename to libraries-data-db/src/test/java/com/baeldung/libraries/reladomo/ReladomoIntegrationTest.java
index 3660d9a8e1..b2abb587a9 100644
--- a/libraries-data/src/test/java/com/baeldung/reladomo/ReladomoIntegrationTest.java
+++ b/libraries-data-db/src/test/java/com/baeldung/libraries/reladomo/ReladomoIntegrationTest.java
@@ -1,13 +1,12 @@
-package com.baeldung.reladomo;
-
-import static org.junit.Assert.*;
+package com.baeldung.libraries.reladomo;
+import com.gs.fw.common.mithra.test.ConnectionManagerForTests;
+import com.gs.fw.common.mithra.test.MithraTestResource;
import org.junit.After;
import org.junit.Before;
import org.junit.Test;
-import com.gs.fw.common.mithra.test.ConnectionManagerForTests;
-import com.gs.fw.common.mithra.test.MithraTestResource;
+import static org.junit.Assert.*;
public class ReladomoIntegrationTest {
private MithraTestResource mithraTestResource;
diff --git a/libraries-data-db/src/test/resources/reladomo/ReladomoTestConfig.xml b/libraries-data-db/src/test/resources/reladomo/ReladomoTestConfig.xml
new file mode 100644
index 0000000000..4e1b791efc
--- /dev/null
+++ b/libraries-data-db/src/test/resources/reladomo/ReladomoTestConfig.xml
@@ -0,0 +1,7 @@
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/libraries-data-db/src/test/resources/reladomo/test-data.txt b/libraries-data-db/src/test/resources/reladomo/test-data.txt
new file mode 100644
index 0000000000..0e8a36a0b2
--- /dev/null
+++ b/libraries-data-db/src/test/resources/reladomo/test-data.txt
@@ -0,0 +1,7 @@
+class com.baeldung.libraries.reladomo.Department
+id, name
+1, "Marketing"
+
+class com.baeldung.libraries.reladomo.Employee
+id, name
+1, "Paul"
\ No newline at end of file
diff --git a/libraries-data-io/README.md b/libraries-data-io/README.md
new file mode 100644
index 0000000000..550f353c97
--- /dev/null
+++ b/libraries-data-io/README.md
@@ -0,0 +1,11 @@
+## IO Data Libraries
+
+This module contains articles about IO data processing libraries.
+
+### Relevant articles
+- [Introduction To Kryo](https://www.baeldung.com/kryo)
+- [Parsing YAML with SnakeYAML](https://www.baeldung.com/java-snake-yaml)
+- [Introduction to Smooks](https://www.baeldung.com/smooks)
+- [Introduction To OpenCSV](https://www.baeldung.com/opencsv)
+- [Interact with Google Sheets from Java](https://www.baeldung.com/google-sheets-java-client)
+- [Introduction To Docx4J](https://www.baeldung.com/docx4j)
diff --git a/libraries-data-io/pom.xml b/libraries-data-io/pom.xml
new file mode 100644
index 0000000000..0e3029f565
--- /dev/null
+++ b/libraries-data-io/pom.xml
@@ -0,0 +1,82 @@
+
+
+ 4.0.0
+ libraries-data-io
+ libraries-data-io
+
+
+ com.baeldung
+ parent-modules
+ 1.0.0-SNAPSHOT
+
+
+
+
+ com.esotericsoftware
+ kryo
+ ${kryo.version}
+
+
+ org.yaml
+ snakeyaml
+ ${snakeyaml.version}
+
+
+ org.milyn
+ milyn-smooks-all
+ ${smooks.version}
+
+
+
+ com.opencsv
+ opencsv
+ ${opencsv.version}
+
+
+
+ com.google.api-client
+ google-api-client
+ ${google-api.version}
+
+
+ com.google.oauth-client
+ google-oauth-client-jetty
+ ${google-api.version}
+
+
+ com.google.apis
+ google-api-services-sheets
+ ${google-sheets.version}
+
+
+ javax.xml.bind
+ jaxb-api
+ ${jaxb-api.version}
+
+
+ org.docx4j
+ docx4j
+ ${docx4j.version}
+
+
+ org.assertj
+ assertj-core
+ ${org.assertj.core.version}
+ test
+
+
+
+
+ 1.21
+ 4.0.1
+ 1.7.0
+ 4.1
+ 1.23.0
+ v4-rev493-1.21.0
+ 3.9.0
+ 3.3.5
+ 2.1
+
+
\ No newline at end of file
diff --git a/libraries-data-2/src/main/java/com/baeldung/docx/Docx4jExample.java b/libraries-data-io/src/main/java/com/baeldung/libraries/docx/Docx4jExample.java
similarity index 91%
rename from libraries-data-2/src/main/java/com/baeldung/docx/Docx4jExample.java
rename to libraries-data-io/src/main/java/com/baeldung/libraries/docx/Docx4jExample.java
index 6fe29d26e3..5000f63020 100644
--- a/libraries-data-2/src/main/java/com/baeldung/docx/Docx4jExample.java
+++ b/libraries-data-io/src/main/java/com/baeldung/libraries/docx/Docx4jExample.java
@@ -1,4 +1,4 @@
-package com.baeldung.docx;
+package com.baeldung.libraries.docx;
import org.docx4j.dml.wordprocessingDrawing.Inline;
import org.docx4j.jaxb.Context;
@@ -7,17 +7,7 @@ import org.docx4j.openpackaging.exceptions.Docx4JException;
import org.docx4j.openpackaging.packages.WordprocessingMLPackage;
import org.docx4j.openpackaging.parts.WordprocessingML.BinaryPartAbstractImage;
import org.docx4j.openpackaging.parts.WordprocessingML.MainDocumentPart;
-import org.docx4j.wml.BooleanDefaultTrue;
-import org.docx4j.wml.Color;
-import org.docx4j.wml.Drawing;
-import org.docx4j.wml.ObjectFactory;
-import org.docx4j.wml.P;
-import org.docx4j.wml.R;
-import org.docx4j.wml.RPr;
-import org.docx4j.wml.Tbl;
-import org.docx4j.wml.Tc;
-import org.docx4j.wml.Text;
-import org.docx4j.wml.Tr;
+import org.docx4j.wml.*;
import javax.xml.bind.JAXBElement;
import javax.xml.bind.JAXBException;
diff --git a/libraries-data/src/main/java/com/baeldung/kryo/ComplexClass.java b/libraries-data-io/src/main/java/com/baeldung/libraries/kryo/ComplexClass.java
similarity index 89%
rename from libraries-data/src/main/java/com/baeldung/kryo/ComplexClass.java
rename to libraries-data-io/src/main/java/com/baeldung/libraries/kryo/ComplexClass.java
index 0e125e48a9..85355881f1 100644
--- a/libraries-data/src/main/java/com/baeldung/kryo/ComplexClass.java
+++ b/libraries-data-io/src/main/java/com/baeldung/libraries/kryo/ComplexClass.java
@@ -1,4 +1,4 @@
-package com.baeldung.kryo;
+package com.baeldung.libraries.kryo;
import java.io.Serializable;
diff --git a/libraries-data/src/main/java/com/baeldung/kryo/Person.java b/libraries-data-io/src/main/java/com/baeldung/libraries/kryo/Person.java
similarity index 97%
rename from libraries-data/src/main/java/com/baeldung/kryo/Person.java
rename to libraries-data-io/src/main/java/com/baeldung/libraries/kryo/Person.java
index f9be5cfd62..1dbe0648ba 100644
--- a/libraries-data/src/main/java/com/baeldung/kryo/Person.java
+++ b/libraries-data-io/src/main/java/com/baeldung/libraries/kryo/Person.java
@@ -1,10 +1,11 @@
-package com.baeldung.kryo;
+package com.baeldung.libraries.kryo;
import com.esotericsoftware.kryo.DefaultSerializer;
import com.esotericsoftware.kryo.Kryo;
import com.esotericsoftware.kryo.KryoSerializable;
import com.esotericsoftware.kryo.io.Input;
import com.esotericsoftware.kryo.io.Output;
+
import java.util.Date;
@DefaultSerializer(PersonSerializer.class)
diff --git a/libraries-data/src/main/java/com/baeldung/kryo/PersonSerializer.java b/libraries-data-io/src/main/java/com/baeldung/libraries/kryo/PersonSerializer.java
similarity index 95%
rename from libraries-data/src/main/java/com/baeldung/kryo/PersonSerializer.java
rename to libraries-data-io/src/main/java/com/baeldung/libraries/kryo/PersonSerializer.java
index f5d01509a6..20a061f4e8 100644
--- a/libraries-data/src/main/java/com/baeldung/kryo/PersonSerializer.java
+++ b/libraries-data-io/src/main/java/com/baeldung/libraries/kryo/PersonSerializer.java
@@ -1,9 +1,10 @@
-package com.baeldung.kryo;
+package com.baeldung.libraries.kryo;
import com.esotericsoftware.kryo.Kryo;
import com.esotericsoftware.kryo.Serializer;
import com.esotericsoftware.kryo.io.Input;
import com.esotericsoftware.kryo.io.Output;
+
import java.util.Date;
public class PersonSerializer extends Serializer {
diff --git a/libraries-data-2/src/main/java/com/baeldung/opencsv/Application.java b/libraries-data-io/src/main/java/com/baeldung/libraries/opencsv/Application.java
similarity index 86%
rename from libraries-data-2/src/main/java/com/baeldung/opencsv/Application.java
rename to libraries-data-io/src/main/java/com/baeldung/libraries/opencsv/Application.java
index fd7e4d82d4..ee819b844b 100644
--- a/libraries-data-2/src/main/java/com/baeldung/opencsv/Application.java
+++ b/libraries-data-io/src/main/java/com/baeldung/libraries/opencsv/Application.java
@@ -1,11 +1,11 @@
-package com.baeldung.opencsv;
+package com.baeldung.libraries.opencsv;
-import com.baeldung.opencsv.beans.NamedColumnBean;
-import com.baeldung.opencsv.beans.SimplePositionBean;
-import com.baeldung.opencsv.examples.sync.BeanExamples;
-import com.baeldung.opencsv.examples.sync.CsvReaderExamples;
-import com.baeldung.opencsv.examples.sync.CsvWriterExamples;
-import com.baeldung.opencsv.helpers.Helpers;
+import com.baeldung.libraries.opencsv.beans.NamedColumnBean;
+import com.baeldung.libraries.opencsv.beans.SimplePositionBean;
+import com.baeldung.libraries.opencsv.examples.sync.BeanExamples;
+import com.baeldung.libraries.opencsv.examples.sync.CsvReaderExamples;
+import com.baeldung.libraries.opencsv.examples.sync.CsvWriterExamples;
+import com.baeldung.libraries.opencsv.helpers.Helpers;
import java.io.Reader;
import java.nio.file.Files;
diff --git a/libraries-data-2/src/main/java/com/baeldung/opencsv/Constants.java b/libraries-data-io/src/main/java/com/baeldung/libraries/opencsv/Constants.java
similarity index 93%
rename from libraries-data-2/src/main/java/com/baeldung/opencsv/Constants.java
rename to libraries-data-io/src/main/java/com/baeldung/libraries/opencsv/Constants.java
index f7978acf24..f1b3b71939 100644
--- a/libraries-data-2/src/main/java/com/baeldung/opencsv/Constants.java
+++ b/libraries-data-io/src/main/java/com/baeldung/libraries/opencsv/Constants.java
@@ -1,4 +1,4 @@
-package com.baeldung.opencsv;
+package com.baeldung.libraries.opencsv;
public class Constants {
diff --git a/libraries-data-io/src/main/java/com/baeldung/libraries/opencsv/beans/CsvBean.java b/libraries-data-io/src/main/java/com/baeldung/libraries/opencsv/beans/CsvBean.java
new file mode 100644
index 0000000000..e0abab7129
--- /dev/null
+++ b/libraries-data-io/src/main/java/com/baeldung/libraries/opencsv/beans/CsvBean.java
@@ -0,0 +1,3 @@
+package com.baeldung.libraries.opencsv.beans;
+
+public class CsvBean { }
diff --git a/libraries-data-2/src/main/java/com/baeldung/opencsv/beans/NamedColumnBean.java b/libraries-data-io/src/main/java/com/baeldung/libraries/opencsv/beans/NamedColumnBean.java
similarity index 91%
rename from libraries-data-2/src/main/java/com/baeldung/opencsv/beans/NamedColumnBean.java
rename to libraries-data-io/src/main/java/com/baeldung/libraries/opencsv/beans/NamedColumnBean.java
index d9e5f96333..0021584e4f 100644
--- a/libraries-data-2/src/main/java/com/baeldung/opencsv/beans/NamedColumnBean.java
+++ b/libraries-data-io/src/main/java/com/baeldung/libraries/opencsv/beans/NamedColumnBean.java
@@ -1,4 +1,4 @@
-package com.baeldung.opencsv.beans;
+package com.baeldung.libraries.opencsv.beans;
import com.opencsv.bean.CsvBindByName;
diff --git a/libraries-data-2/src/main/java/com/baeldung/opencsv/beans/SimplePositionBean.java b/libraries-data-io/src/main/java/com/baeldung/libraries/opencsv/beans/SimplePositionBean.java
similarity index 93%
rename from libraries-data-2/src/main/java/com/baeldung/opencsv/beans/SimplePositionBean.java
rename to libraries-data-io/src/main/java/com/baeldung/libraries/opencsv/beans/SimplePositionBean.java
index 799006e2f9..c1710d784a 100644
--- a/libraries-data-2/src/main/java/com/baeldung/opencsv/beans/SimplePositionBean.java
+++ b/libraries-data-io/src/main/java/com/baeldung/libraries/opencsv/beans/SimplePositionBean.java
@@ -1,4 +1,4 @@
-package com.baeldung.opencsv.beans;
+package com.baeldung.libraries.opencsv.beans;
import com.opencsv.bean.CsvBindByPosition;
diff --git a/libraries-data-2/src/main/java/com/baeldung/opencsv/beans/WriteExampleBean.java b/libraries-data-io/src/main/java/com/baeldung/libraries/opencsv/beans/WriteExampleBean.java
similarity index 93%
rename from libraries-data-2/src/main/java/com/baeldung/opencsv/beans/WriteExampleBean.java
rename to libraries-data-io/src/main/java/com/baeldung/libraries/opencsv/beans/WriteExampleBean.java
index f145f67f11..f5e6466512 100644
--- a/libraries-data-2/src/main/java/com/baeldung/opencsv/beans/WriteExampleBean.java
+++ b/libraries-data-io/src/main/java/com/baeldung/libraries/opencsv/beans/WriteExampleBean.java
@@ -1,4 +1,4 @@
-package com.baeldung.opencsv.beans;
+package com.baeldung.libraries.opencsv.beans;
public class WriteExampleBean extends CsvBean {
diff --git a/libraries-data-2/src/main/java/com/baeldung/opencsv/examples/sync/BeanExamples.java b/libraries-data-io/src/main/java/com/baeldung/libraries/opencsv/examples/sync/BeanExamples.java
similarity index 85%
rename from libraries-data-2/src/main/java/com/baeldung/opencsv/examples/sync/BeanExamples.java
rename to libraries-data-io/src/main/java/com/baeldung/libraries/opencsv/examples/sync/BeanExamples.java
index 086f32677e..f401c7c77c 100644
--- a/libraries-data-2/src/main/java/com/baeldung/opencsv/examples/sync/BeanExamples.java
+++ b/libraries-data-io/src/main/java/com/baeldung/libraries/opencsv/examples/sync/BeanExamples.java
@@ -1,9 +1,9 @@
-package com.baeldung.opencsv.examples.sync;
+package com.baeldung.libraries.opencsv.examples.sync;
-import com.baeldung.opencsv.beans.CsvBean;
-import com.baeldung.opencsv.beans.WriteExampleBean;
-import com.baeldung.opencsv.helpers.Helpers;
-import com.baeldung.opencsv.pojos.CsvTransfer;
+import com.baeldung.libraries.opencsv.beans.CsvBean;
+import com.baeldung.libraries.opencsv.beans.WriteExampleBean;
+import com.baeldung.libraries.opencsv.helpers.Helpers;
+import com.baeldung.libraries.opencsv.pojos.CsvTransfer;
import com.opencsv.CSVWriter;
import com.opencsv.bean.*;
diff --git a/libraries-data-2/src/main/java/com/baeldung/opencsv/examples/sync/CsvReaderExamples.java b/libraries-data-io/src/main/java/com/baeldung/libraries/opencsv/examples/sync/CsvReaderExamples.java
similarity index 93%
rename from libraries-data-2/src/main/java/com/baeldung/opencsv/examples/sync/CsvReaderExamples.java
rename to libraries-data-io/src/main/java/com/baeldung/libraries/opencsv/examples/sync/CsvReaderExamples.java
index bacfdcff3d..2f7d979b2f 100644
--- a/libraries-data-2/src/main/java/com/baeldung/opencsv/examples/sync/CsvReaderExamples.java
+++ b/libraries-data-io/src/main/java/com/baeldung/libraries/opencsv/examples/sync/CsvReaderExamples.java
@@ -1,6 +1,6 @@
-package com.baeldung.opencsv.examples.sync;
+package com.baeldung.libraries.opencsv.examples.sync;
-import com.baeldung.opencsv.helpers.Helpers;
+import com.baeldung.libraries.opencsv.helpers.Helpers;
import com.opencsv.CSVParser;
import com.opencsv.CSVParserBuilder;
import com.opencsv.CSVReader;
diff --git a/libraries-data-2/src/main/java/com/baeldung/opencsv/examples/sync/CsvWriterExamples.java b/libraries-data-io/src/main/java/com/baeldung/libraries/opencsv/examples/sync/CsvWriterExamples.java
similarity index 89%
rename from libraries-data-2/src/main/java/com/baeldung/opencsv/examples/sync/CsvWriterExamples.java
rename to libraries-data-io/src/main/java/com/baeldung/libraries/opencsv/examples/sync/CsvWriterExamples.java
index 6f52160ba8..b5c23bd99d 100644
--- a/libraries-data-2/src/main/java/com/baeldung/opencsv/examples/sync/CsvWriterExamples.java
+++ b/libraries-data-io/src/main/java/com/baeldung/libraries/opencsv/examples/sync/CsvWriterExamples.java
@@ -1,6 +1,6 @@
-package com.baeldung.opencsv.examples.sync;
+package com.baeldung.libraries.opencsv.examples.sync;
-import com.baeldung.opencsv.helpers.Helpers;
+import com.baeldung.libraries.opencsv.helpers.Helpers;
import com.opencsv.CSVWriter;
import java.io.FileWriter;
diff --git a/libraries-data-2/src/main/java/com/baeldung/opencsv/helpers/Helpers.java b/libraries-data-io/src/main/java/com/baeldung/libraries/opencsv/helpers/Helpers.java
similarity index 96%
rename from libraries-data-2/src/main/java/com/baeldung/opencsv/helpers/Helpers.java
rename to libraries-data-io/src/main/java/com/baeldung/libraries/opencsv/helpers/Helpers.java
index 9a46fbc495..b703d0e82d 100644
--- a/libraries-data-2/src/main/java/com/baeldung/opencsv/helpers/Helpers.java
+++ b/libraries-data-io/src/main/java/com/baeldung/libraries/opencsv/helpers/Helpers.java
@@ -1,6 +1,6 @@
-package com.baeldung.opencsv.helpers;
+package com.baeldung.libraries.opencsv.helpers;
-import com.baeldung.opencsv.Constants;
+import com.baeldung.libraries.opencsv.Constants;
import java.io.BufferedReader;
import java.io.FileReader;
diff --git a/libraries-data-2/src/main/java/com/baeldung/opencsv/pojos/CsvTransfer.java b/libraries-data-io/src/main/java/com/baeldung/libraries/opencsv/pojos/CsvTransfer.java
similarity index 89%
rename from libraries-data-2/src/main/java/com/baeldung/opencsv/pojos/CsvTransfer.java
rename to libraries-data-io/src/main/java/com/baeldung/libraries/opencsv/pojos/CsvTransfer.java
index 79366e3d20..7572bf2e92 100644
--- a/libraries-data-2/src/main/java/com/baeldung/opencsv/pojos/CsvTransfer.java
+++ b/libraries-data-io/src/main/java/com/baeldung/libraries/opencsv/pojos/CsvTransfer.java
@@ -1,6 +1,6 @@
-package com.baeldung.opencsv.pojos;
+package com.baeldung.libraries.opencsv.pojos;
-import com.baeldung.opencsv.beans.CsvBean;
+import com.baeldung.libraries.opencsv.beans.CsvBean;
import java.util.ArrayList;
import java.util.List;
diff --git a/libraries-data-2/src/main/java/com/baeldung/google/sheets/GoogleAuthorizeUtil.java b/libraries-data-io/src/main/java/com/baeldung/libraries/sheets/GoogleAuthorizeUtil.java
similarity index 97%
rename from libraries-data-2/src/main/java/com/baeldung/google/sheets/GoogleAuthorizeUtil.java
rename to libraries-data-io/src/main/java/com/baeldung/libraries/sheets/GoogleAuthorizeUtil.java
index 641fae42dd..ddc6569678 100644
--- a/libraries-data-2/src/main/java/com/baeldung/google/sheets/GoogleAuthorizeUtil.java
+++ b/libraries-data-io/src/main/java/com/baeldung/libraries/sheets/GoogleAuthorizeUtil.java
@@ -1,11 +1,4 @@
-package com.baeldung.google.sheets;
-
-import java.io.IOException;
-import java.io.InputStream;
-import java.io.InputStreamReader;
-import java.security.GeneralSecurityException;
-import java.util.Arrays;
-import java.util.List;
+package com.baeldung.libraries.sheets;
import com.google.api.client.auth.oauth2.Credential;
import com.google.api.client.extensions.java6.auth.oauth2.AuthorizationCodeInstalledApp;
@@ -17,6 +10,13 @@ import com.google.api.client.json.jackson2.JacksonFactory;
import com.google.api.client.util.store.MemoryDataStoreFactory;
import com.google.api.services.sheets.v4.SheetsScopes;
+import java.io.IOException;
+import java.io.InputStream;
+import java.io.InputStreamReader;
+import java.security.GeneralSecurityException;
+import java.util.Arrays;
+import java.util.List;
+
public class GoogleAuthorizeUtil {
public static Credential authorize() throws IOException, GeneralSecurityException {
InputStream in = GoogleAuthorizeUtil.class.getResourceAsStream("/google-sheets-client-secret.json");
diff --git a/libraries-data-2/src/main/java/com/baeldung/google/sheets/SheetsServiceUtil.java b/libraries-data-io/src/main/java/com/baeldung/libraries/sheets/SheetsServiceUtil.java
similarity index 95%
rename from libraries-data-2/src/main/java/com/baeldung/google/sheets/SheetsServiceUtil.java
rename to libraries-data-io/src/main/java/com/baeldung/libraries/sheets/SheetsServiceUtil.java
index 8a78d50551..db7de9986f 100644
--- a/libraries-data-2/src/main/java/com/baeldung/google/sheets/SheetsServiceUtil.java
+++ b/libraries-data-io/src/main/java/com/baeldung/libraries/sheets/SheetsServiceUtil.java
@@ -1,13 +1,13 @@
-package com.baeldung.google.sheets;
-
-import java.io.IOException;
-import java.security.GeneralSecurityException;
+package com.baeldung.libraries.sheets;
import com.google.api.client.auth.oauth2.Credential;
import com.google.api.client.googleapis.javanet.GoogleNetHttpTransport;
import com.google.api.client.json.jackson2.JacksonFactory;
import com.google.api.services.sheets.v4.Sheets;
+import java.io.IOException;
+import java.security.GeneralSecurityException;
+
public class SheetsServiceUtil {
private static final String APPLICATION_NAME = "Google Sheets Example";
diff --git a/libraries-data-2/src/main/java/com/baeldung/smooks/converter/OrderConverter.java b/libraries-data-io/src/main/java/com/baeldung/libraries/smooks/converter/OrderConverter.java
similarity index 94%
rename from libraries-data-2/src/main/java/com/baeldung/smooks/converter/OrderConverter.java
rename to libraries-data-io/src/main/java/com/baeldung/libraries/smooks/converter/OrderConverter.java
index fa317f93b7..bca47cb75a 100644
--- a/libraries-data-2/src/main/java/com/baeldung/smooks/converter/OrderConverter.java
+++ b/libraries-data-io/src/main/java/com/baeldung/libraries/smooks/converter/OrderConverter.java
@@ -1,6 +1,6 @@
-package com.baeldung.smooks.converter;
+package com.baeldung.libraries.smooks.converter;
-import com.baeldung.smooks.model.Order;
+import com.baeldung.libraries.smooks.model.Order;
import org.milyn.Smooks;
import org.milyn.payload.JavaResult;
import org.milyn.payload.StringResult;
diff --git a/libraries-data-2/src/main/java/com/baeldung/smooks/converter/OrderValidator.java b/libraries-data-io/src/main/java/com/baeldung/libraries/smooks/converter/OrderValidator.java
similarity index 94%
rename from libraries-data-2/src/main/java/com/baeldung/smooks/converter/OrderValidator.java
rename to libraries-data-io/src/main/java/com/baeldung/libraries/smooks/converter/OrderValidator.java
index 3975921da0..f36d3a6835 100644
--- a/libraries-data-2/src/main/java/com/baeldung/smooks/converter/OrderValidator.java
+++ b/libraries-data-io/src/main/java/com/baeldung/libraries/smooks/converter/OrderValidator.java
@@ -1,4 +1,4 @@
-package com.baeldung.smooks.converter;
+package com.baeldung.libraries.smooks.converter;
import org.milyn.Smooks;
import org.milyn.payload.JavaResult;
diff --git a/libraries-data-2/src/main/java/com/baeldung/smooks/model/Item.java b/libraries-data-io/src/main/java/com/baeldung/libraries/smooks/model/Item.java
similarity index 97%
rename from libraries-data-2/src/main/java/com/baeldung/smooks/model/Item.java
rename to libraries-data-io/src/main/java/com/baeldung/libraries/smooks/model/Item.java
index 3e1f4a7ef4..3c6322a357 100644
--- a/libraries-data-2/src/main/java/com/baeldung/smooks/model/Item.java
+++ b/libraries-data-io/src/main/java/com/baeldung/libraries/smooks/model/Item.java
@@ -1,4 +1,4 @@
-package com.baeldung.smooks.model;
+package com.baeldung.libraries.smooks.model;
public class Item {
diff --git a/libraries-data-2/src/main/java/com/baeldung/smooks/model/Order.java b/libraries-data-io/src/main/java/com/baeldung/libraries/smooks/model/Order.java
similarity index 95%
rename from libraries-data-2/src/main/java/com/baeldung/smooks/model/Order.java
rename to libraries-data-io/src/main/java/com/baeldung/libraries/smooks/model/Order.java
index 047e1fe8a3..1900e6337f 100644
--- a/libraries-data-2/src/main/java/com/baeldung/smooks/model/Order.java
+++ b/libraries-data-io/src/main/java/com/baeldung/libraries/smooks/model/Order.java
@@ -1,4 +1,4 @@
-package com.baeldung.smooks.model;
+package com.baeldung.libraries.smooks.model;
import java.util.Date;
import java.util.List;
diff --git a/libraries-data-2/src/main/java/com/baeldung/smooks/model/Status.java b/libraries-data-io/src/main/java/com/baeldung/libraries/smooks/model/Status.java
similarity index 55%
rename from libraries-data-2/src/main/java/com/baeldung/smooks/model/Status.java
rename to libraries-data-io/src/main/java/com/baeldung/libraries/smooks/model/Status.java
index 53c50bdf46..8f22a439b2 100644
--- a/libraries-data-2/src/main/java/com/baeldung/smooks/model/Status.java
+++ b/libraries-data-io/src/main/java/com/baeldung/libraries/smooks/model/Status.java
@@ -1,4 +1,4 @@
-package com.baeldung.smooks.model;
+package com.baeldung.libraries.smooks.model;
public enum Status {
NEW, IN_PROGRESS, FINISHED
diff --git a/libraries-data-2/src/main/java/com/baeldung/smooks/model/Supplier.java b/libraries-data-io/src/main/java/com/baeldung/libraries/smooks/model/Supplier.java
similarity index 96%
rename from libraries-data-2/src/main/java/com/baeldung/smooks/model/Supplier.java
rename to libraries-data-io/src/main/java/com/baeldung/libraries/smooks/model/Supplier.java
index 827a0fc907..8dd70e83c8 100644
--- a/libraries-data-2/src/main/java/com/baeldung/smooks/model/Supplier.java
+++ b/libraries-data-io/src/main/java/com/baeldung/libraries/smooks/model/Supplier.java
@@ -1,4 +1,4 @@
-package com.baeldung.smooks.model;
+package com.baeldung.libraries.smooks.model;
public class Supplier {
diff --git a/libraries-data-3/src/main/java/com/baeldung/snakeyaml/Address.java b/libraries-data-io/src/main/java/com/baeldung/libraries/snakeyaml/Address.java
similarity index 93%
rename from libraries-data-3/src/main/java/com/baeldung/snakeyaml/Address.java
rename to libraries-data-io/src/main/java/com/baeldung/libraries/snakeyaml/Address.java
index 83c327a4ed..c0216ddcd7 100644
--- a/libraries-data-3/src/main/java/com/baeldung/snakeyaml/Address.java
+++ b/libraries-data-io/src/main/java/com/baeldung/libraries/snakeyaml/Address.java
@@ -1,4 +1,4 @@
-package com.baeldung.snakeyaml;
+package com.baeldung.libraries.snakeyaml;
public class Address {
private String line;
diff --git a/libraries-data-3/src/main/java/com/baeldung/snakeyaml/Contact.java b/libraries-data-io/src/main/java/com/baeldung/libraries/snakeyaml/Contact.java
similarity index 89%
rename from libraries-data-3/src/main/java/com/baeldung/snakeyaml/Contact.java
rename to libraries-data-io/src/main/java/com/baeldung/libraries/snakeyaml/Contact.java
index a808747786..54695315bc 100644
--- a/libraries-data-3/src/main/java/com/baeldung/snakeyaml/Contact.java
+++ b/libraries-data-io/src/main/java/com/baeldung/libraries/snakeyaml/Contact.java
@@ -1,4 +1,4 @@
-package com.baeldung.snakeyaml;
+package com.baeldung.libraries.snakeyaml;
public class Contact {
diff --git a/libraries-data-3/src/main/java/com/baeldung/snakeyaml/Customer.java b/libraries-data-io/src/main/java/com/baeldung/libraries/snakeyaml/Customer.java
similarity index 96%
rename from libraries-data-3/src/main/java/com/baeldung/snakeyaml/Customer.java
rename to libraries-data-io/src/main/java/com/baeldung/libraries/snakeyaml/Customer.java
index c741f6dc85..9cebaf0005 100644
--- a/libraries-data-3/src/main/java/com/baeldung/snakeyaml/Customer.java
+++ b/libraries-data-io/src/main/java/com/baeldung/libraries/snakeyaml/Customer.java
@@ -1,4 +1,4 @@
-package com.baeldung.snakeyaml;
+package com.baeldung.libraries.snakeyaml;
import java.util.List;
diff --git a/libraries-data-2/src/main/resources/google-sheets-client-secret.json b/libraries-data-io/src/main/resources/google-sheets-client-secret.json
similarity index 100%
rename from libraries-data-2/src/main/resources/google-sheets-client-secret.json
rename to libraries-data-io/src/main/resources/google-sheets-client-secret.json
diff --git a/libraries-data-2/src/main/resources/image.jpg b/libraries-data-io/src/main/resources/image.jpg
similarity index 100%
rename from libraries-data-2/src/main/resources/image.jpg
rename to libraries-data-io/src/main/resources/image.jpg
diff --git a/libraries-data-2/src/main/resources/smooks/email.ftl b/libraries-data-io/src/main/resources/smooks/email.ftl
similarity index 100%
rename from libraries-data-2/src/main/resources/smooks/email.ftl
rename to libraries-data-io/src/main/resources/smooks/email.ftl
diff --git a/libraries-data-2/src/main/resources/smooks/item-rules.csv b/libraries-data-io/src/main/resources/smooks/item-rules.csv
similarity index 100%
rename from libraries-data-2/src/main/resources/smooks/item-rules.csv
rename to libraries-data-io/src/main/resources/smooks/item-rules.csv
diff --git a/libraries-data-2/src/main/resources/smooks/order.ftl b/libraries-data-io/src/main/resources/smooks/order.ftl
similarity index 100%
rename from libraries-data-2/src/main/resources/smooks/order.ftl
rename to libraries-data-io/src/main/resources/smooks/order.ftl
diff --git a/libraries-data-2/src/main/resources/smooks/order.json b/libraries-data-io/src/main/resources/smooks/order.json
similarity index 100%
rename from libraries-data-2/src/main/resources/smooks/order.json
rename to libraries-data-io/src/main/resources/smooks/order.json
diff --git a/libraries-data-2/src/main/resources/smooks/order.xml b/libraries-data-io/src/main/resources/smooks/order.xml
similarity index 100%
rename from libraries-data-2/src/main/resources/smooks/order.xml
rename to libraries-data-io/src/main/resources/smooks/order.xml
diff --git a/libraries-data-2/src/main/resources/smooks/smooks-mapping.xml b/libraries-data-io/src/main/resources/smooks/smooks-mapping.xml
similarity index 78%
rename from libraries-data-2/src/main/resources/smooks/smooks-mapping.xml
rename to libraries-data-io/src/main/resources/smooks/smooks-mapping.xml
index 7996834e38..6587ff170e 100644
--- a/libraries-data-2/src/main/resources/smooks/smooks-mapping.xml
+++ b/libraries-data-io/src/main/resources/smooks/smooks-mapping.xml
@@ -2,7 +2,7 @@
-
+
@@ -12,7 +12,7 @@
-
+
@@ -20,7 +20,7 @@
-
+
diff --git a/libraries-data-2/src/main/resources/smooks/smooks-transform-edi.xml b/libraries-data-io/src/main/resources/smooks/smooks-transform-edi.xml
similarity index 100%
rename from libraries-data-2/src/main/resources/smooks/smooks-transform-edi.xml
rename to libraries-data-io/src/main/resources/smooks/smooks-transform-edi.xml
diff --git a/libraries-data-2/src/main/resources/smooks/smooks-transform-email.xml b/libraries-data-io/src/main/resources/smooks/smooks-transform-email.xml
similarity index 100%
rename from libraries-data-2/src/main/resources/smooks/smooks-transform-email.xml
rename to libraries-data-io/src/main/resources/smooks/smooks-transform-email.xml
diff --git a/libraries-data-2/src/main/resources/smooks/smooks-validation.xml b/libraries-data-io/src/main/resources/smooks/smooks-validation.xml
similarity index 100%
rename from libraries-data-2/src/main/resources/smooks/smooks-validation.xml
rename to libraries-data-io/src/main/resources/smooks/smooks-validation.xml
diff --git a/libraries-data-2/src/main/resources/smooks/supplier.properties b/libraries-data-io/src/main/resources/smooks/supplier.properties
similarity index 100%
rename from libraries-data-2/src/main/resources/smooks/supplier.properties
rename to libraries-data-io/src/main/resources/smooks/supplier.properties
diff --git a/libraries-data-2/src/test/com/baeldung/docx/Docx4jReadAndWriteIntegrationTest.java b/libraries-data-io/src/test/java/com/baeldung/libraries/docx/Docx4jReadAndWriteIntegrationTest.java
similarity index 94%
rename from libraries-data-2/src/test/com/baeldung/docx/Docx4jReadAndWriteIntegrationTest.java
rename to libraries-data-io/src/test/java/com/baeldung/libraries/docx/Docx4jReadAndWriteIntegrationTest.java
index 9a2691d3f0..231ee4e097 100644
--- a/libraries-data-2/src/test/com/baeldung/docx/Docx4jReadAndWriteIntegrationTest.java
+++ b/libraries-data-io/src/test/java/com/baeldung/libraries/docx/Docx4jReadAndWriteIntegrationTest.java
@@ -1,4 +1,4 @@
-package com.baeldung.docx;
+package com.baeldung.libraries.docx;
import org.junit.Test;
diff --git a/libraries-data/src/test/java/com/baeldung/kryo/KryoUnitTest.java b/libraries-data-io/src/test/java/com/baeldung/libraries/kryo/KryoUnitTest.java
similarity index 94%
rename from libraries-data/src/test/java/com/baeldung/kryo/KryoUnitTest.java
rename to libraries-data-io/src/test/java/com/baeldung/libraries/kryo/KryoUnitTest.java
index c124ca618d..0b15f178b6 100644
--- a/libraries-data/src/test/java/com/baeldung/kryo/KryoUnitTest.java
+++ b/libraries-data-io/src/test/java/com/baeldung/libraries/kryo/KryoUnitTest.java
@@ -1,6 +1,11 @@
-package com.baeldung.kryo;
+package com.baeldung.libraries.kryo;
-import static org.junit.Assert.assertEquals;
+import com.esotericsoftware.kryo.Kryo;
+import com.esotericsoftware.kryo.io.Input;
+import com.esotericsoftware.kryo.io.Output;
+import com.esotericsoftware.kryo.serializers.JavaSerializer;
+import org.junit.Before;
+import org.junit.Test;
import java.io.FileInputStream;
import java.io.FileNotFoundException;
@@ -9,13 +14,7 @@ import java.util.Date;
import java.util.logging.Level;
import java.util.logging.Logger;
-import org.junit.Before;
-import org.junit.Test;
-
-import com.esotericsoftware.kryo.Kryo;
-import com.esotericsoftware.kryo.io.Input;
-import com.esotericsoftware.kryo.io.Output;
-import com.esotericsoftware.kryo.serializers.JavaSerializer;
+import static org.junit.Assert.assertEquals;
public class KryoUnitTest {
@@ -27,8 +26,8 @@ public class KryoUnitTest {
public void init() {
kryo = new Kryo();
try {
- output = new Output(new FileOutputStream("file.dat"));
- input = new Input(new FileInputStream("file.dat"));
+ output = new Output(new FileOutputStream("src/test/resources/file.dat"));
+ input = new Input(new FileInputStream("src/test/resources/file.dat"));
} catch (FileNotFoundException ex) {
Logger.getLogger(KryoUnitTest.class.getName())
.log(Level.SEVERE, null, ex);
diff --git a/libraries-data-2/src/test/com/baeldung/opencsv/OpenCsvIntegrationTest.java b/libraries-data-io/src/test/java/com/baeldung/libraries/opencsv/OpenCsvIntegrationTest.java
similarity index 93%
rename from libraries-data-2/src/test/com/baeldung/opencsv/OpenCsvIntegrationTest.java
rename to libraries-data-io/src/test/java/com/baeldung/libraries/opencsv/OpenCsvIntegrationTest.java
index fca96684ad..b0db4309d9 100644
--- a/libraries-data-2/src/test/com/baeldung/opencsv/OpenCsvIntegrationTest.java
+++ b/libraries-data-io/src/test/java/com/baeldung/libraries/opencsv/OpenCsvIntegrationTest.java
@@ -1,6 +1,6 @@
-package com.baeldung.opencsv;
+package com.baeldung.libraries.opencsv;
-import com.baeldung.opencsv.helpers.Helpers;
+import com.baeldung.libraries.opencsv.helpers.Helpers;
import org.junit.After;
import org.junit.Before;
import org.junit.Test;
diff --git a/libraries-data-2/src/test/com/baeldung/google/sheets/GoogleSheetsLiveTest.java b/libraries-data-io/src/test/java/com/baeldung/libraries/sheets/GoogleSheetsLiveTest.java
similarity index 99%
rename from libraries-data-2/src/test/com/baeldung/google/sheets/GoogleSheetsLiveTest.java
rename to libraries-data-io/src/test/java/com/baeldung/libraries/sheets/GoogleSheetsLiveTest.java
index 358b3390f9..31f769c11b 100644
--- a/libraries-data-2/src/test/com/baeldung/google/sheets/GoogleSheetsLiveTest.java
+++ b/libraries-data-io/src/test/java/com/baeldung/libraries/sheets/GoogleSheetsLiveTest.java
@@ -1,4 +1,4 @@
-package com.baeldung.google.sheets;
+package com.baeldung.libraries.sheets;
import java.io.IOException;
import java.security.GeneralSecurityException;
diff --git a/libraries-data-2/src/test/com/baeldung/smooks/converter/SmooksIntegrationTest.java b/libraries-data-io/src/test/java/com/baeldung/libraries/smooks/SmooksIntegrationTest.java
similarity index 88%
rename from libraries-data-2/src/test/com/baeldung/smooks/converter/SmooksIntegrationTest.java
rename to libraries-data-io/src/test/java/com/baeldung/libraries/smooks/SmooksIntegrationTest.java
index df7fea58f8..75444d2185 100644
--- a/libraries-data-2/src/test/com/baeldung/smooks/converter/SmooksIntegrationTest.java
+++ b/libraries-data-io/src/test/java/com/baeldung/libraries/smooks/SmooksIntegrationTest.java
@@ -1,9 +1,11 @@
-package com.baeldung.smooks.converter;
+package com.baeldung.libraries.smooks;
-import com.baeldung.smooks.model.Item;
-import com.baeldung.smooks.model.Order;
-import com.baeldung.smooks.model.Status;
-import com.baeldung.smooks.model.Supplier;
+import com.baeldung.libraries.smooks.converter.OrderConverter;
+import com.baeldung.libraries.smooks.converter.OrderValidator;
+import com.baeldung.libraries.smooks.model.Item;
+import com.baeldung.libraries.smooks.model.Order;
+import com.baeldung.libraries.smooks.model.Status;
+import com.baeldung.libraries.smooks.model.Supplier;
import org.junit.Test;
import org.milyn.validation.ValidationResult;
import java.text.SimpleDateFormat;
diff --git a/libraries-data-3/src/test/java/com/baeldung/snakeyaml/JavaToYAMLSerializationUnitTest.java b/libraries-data-io/src/test/java/com/baeldung/libraries/snakeyaml/JavaToYAMLSerializationUnitTest.java
similarity index 88%
rename from libraries-data-3/src/test/java/com/baeldung/snakeyaml/JavaToYAMLSerializationUnitTest.java
rename to libraries-data-io/src/test/java/com/baeldung/libraries/snakeyaml/JavaToYAMLSerializationUnitTest.java
index f6836f6d56..f1a926c12b 100644
--- a/libraries-data-3/src/test/java/com/baeldung/snakeyaml/JavaToYAMLSerializationUnitTest.java
+++ b/libraries-data-io/src/test/java/com/baeldung/libraries/snakeyaml/JavaToYAMLSerializationUnitTest.java
@@ -1,16 +1,14 @@
-package com.baeldung.snakeyaml;
-
-import static org.junit.Assert.assertEquals;
-
-import java.io.StringWriter;
-import java.util.LinkedHashMap;
-import java.util.Map;
+package com.baeldung.libraries.snakeyaml;
import org.junit.Test;
import org.yaml.snakeyaml.Yaml;
import org.yaml.snakeyaml.nodes.Tag;
-import com.baeldung.snakeyaml.Customer;
+import java.io.StringWriter;
+import java.util.LinkedHashMap;
+import java.util.Map;
+
+import static org.junit.Assert.assertEquals;
public class JavaToYAMLSerializationUnitTest {
@@ -36,7 +34,7 @@ public class JavaToYAMLSerializationUnitTest {
Yaml yaml = new Yaml();
StringWriter writer = new StringWriter();
yaml.dump(customer, writer);
- String expectedYaml = "!!com.baeldung.snakeyaml.Customer {age: 45, contactDetails: null, firstName: Greg,\n homeAddress: null, lastName: McDowell}\n";
+ String expectedYaml = "!!com.baeldung.libraries.snakeyaml.Customer {age: 45, contactDetails: null, firstName: Greg,\n homeAddress: null, lastName: McDowell}\n";
assertEquals(expectedYaml, writer.toString());
}
diff --git a/libraries-data-3/src/test/java/com/baeldung/snakeyaml/YAMLToJavaDeserialisationUnitTest.java b/libraries-data-io/src/test/java/com/baeldung/libraries/snakeyaml/YAMLToJavaDeserialisationUnitTest.java
similarity index 99%
rename from libraries-data-3/src/test/java/com/baeldung/snakeyaml/YAMLToJavaDeserialisationUnitTest.java
rename to libraries-data-io/src/test/java/com/baeldung/libraries/snakeyaml/YAMLToJavaDeserialisationUnitTest.java
index 56cd3c2b2e..6f32f143a9 100644
--- a/libraries-data-3/src/test/java/com/baeldung/snakeyaml/YAMLToJavaDeserialisationUnitTest.java
+++ b/libraries-data-io/src/test/java/com/baeldung/libraries/snakeyaml/YAMLToJavaDeserialisationUnitTest.java
@@ -1,4 +1,4 @@
-package com.baeldung.snakeyaml;
+package com.baeldung.libraries.snakeyaml;
import org.junit.Test;
import org.yaml.snakeyaml.TypeDescription;
diff --git a/libraries-data-io/src/test/resources/file.dat b/libraries-data-io/src/test/resources/file.dat
new file mode 100644
index 0000000000..c246a9f44b
Binary files /dev/null and b/libraries-data-io/src/test/resources/file.dat differ
diff --git a/libraries-data-3/src/test/resources/yaml/customer.yaml b/libraries-data-io/src/test/resources/yaml/customer.yaml
similarity index 100%
rename from libraries-data-3/src/test/resources/yaml/customer.yaml
rename to libraries-data-io/src/test/resources/yaml/customer.yaml
diff --git a/libraries-data-3/src/test/resources/yaml/customer_with_contact_details.yaml b/libraries-data-io/src/test/resources/yaml/customer_with_contact_details.yaml
similarity index 100%
rename from libraries-data-3/src/test/resources/yaml/customer_with_contact_details.yaml
rename to libraries-data-io/src/test/resources/yaml/customer_with_contact_details.yaml
diff --git a/libraries-data-3/src/test/resources/yaml/customer_with_contact_details_and_address.yaml b/libraries-data-io/src/test/resources/yaml/customer_with_contact_details_and_address.yaml
similarity index 100%
rename from libraries-data-3/src/test/resources/yaml/customer_with_contact_details_and_address.yaml
rename to libraries-data-io/src/test/resources/yaml/customer_with_contact_details_and_address.yaml
diff --git a/libraries-data-3/src/test/resources/yaml/customer_with_contact_details_and_tags.yaml b/libraries-data-io/src/test/resources/yaml/customer_with_contact_details_and_tags.yaml
similarity index 100%
rename from libraries-data-3/src/test/resources/yaml/customer_with_contact_details_and_tags.yaml
rename to libraries-data-io/src/test/resources/yaml/customer_with_contact_details_and_tags.yaml
diff --git a/libraries-data-io/src/test/resources/yaml/customer_with_type.yaml b/libraries-data-io/src/test/resources/yaml/customer_with_type.yaml
new file mode 100644
index 0000000000..1454addc36
--- /dev/null
+++ b/libraries-data-io/src/test/resources/yaml/customer_with_type.yaml
@@ -0,0 +1,4 @@
+!!com.baeldung.libraries.snakeyaml.Customer
+firstName: "John"
+lastName: "Doe"
+age: 20
\ No newline at end of file
diff --git a/libraries-data-3/src/test/resources/yaml/customers.yaml b/libraries-data-io/src/test/resources/yaml/customers.yaml
similarity index 100%
rename from libraries-data-3/src/test/resources/yaml/customers.yaml
rename to libraries-data-io/src/test/resources/yaml/customers.yaml
diff --git a/libraries-data/README.md b/libraries-data/README.md
index be8f2b2525..7614d11b16 100644
--- a/libraries-data/README.md
+++ b/libraries-data/README.md
@@ -3,20 +3,13 @@
This module contains articles about libraries for data processing in Java.
### Relevant articles
-- [Introduction to Reladomo](https://www.baeldung.com/reladomo)
-- [Introduction to ORMLite](https://www.baeldung.com/ormlite)
-- [Introduction To Kryo](https://www.baeldung.com/kryo)
- [Introduction to KafkaStreams in Java](https://www.baeldung.com/java-kafka-streams)
-- [Guide to Java Data Objects](https://www.baeldung.com/jdo)
-- [Intro to JDO Queries 2/2](https://www.baeldung.com/jdo-queries)
-- [Introduction to HikariCP](https://www.baeldung.com/hikaricp)
- [Introduction to JCache](https://www.baeldung.com/jcache)
- [A Guide to Apache Ignite](https://www.baeldung.com/apache-ignite)
- [Apache Ignite with Spring Data](https://www.baeldung.com/apache-ignite-spring-data)
- [A Guide to Apache Crunch](https://www.baeldung.com/apache-crunch)
- [Intro to Apache Storm](https://www.baeldung.com/apache-storm)
-- [Guide to Ebean ORM](https://www.baeldung.com/ebean-orm)
- [Introduction to Kafka Connectors](https://www.baeldung.com/kafka-connectors-guide)
- [Kafka Connect Example with MQTT and MongoDB](https://www.baeldung.com/kafka-connect-mqtt-mongodb)
- [Building a Data Pipeline with Flink and Kafka](https://www.baeldung.com/kafka-flink-data-pipeline)
-- More articles: [[next -->]](/libraries-data-2)
+More articles: [[next -->]](/../libraries-data-2)
\ No newline at end of file
diff --git a/libraries-data/file.dat b/libraries-data/file.dat
deleted file mode 100644
index 70177cef97..0000000000
Binary files a/libraries-data/file.dat and /dev/null differ
diff --git a/libraries-data/pom.xml b/libraries-data/pom.xml
index e255236480..8e5360dea3 100644
--- a/libraries-data/pom.xml
+++ b/libraries-data/pom.xml
@@ -13,11 +13,6 @@
-
- com.esotericsoftware
- kryo
- ${kryo.version}
-
com.h2database
h2
@@ -29,21 +24,6 @@
${junit.version}
test
-
- com.goldmansachs.reladomo
- reladomo
- ${reladomo.version}
-
-
- com.goldmansachs.reladomo
- reladomo-test-util
- ${reladomo.version}
-
-
- com.j256.ormlite
- ormlite-jdbc
- ${ormlite.version}
-
org.apache.kafka
kafka-streams
@@ -87,49 +67,6 @@
gson
${gson.version}
-
-
- com.zaxxer
- HikariCP
- ${HikariCP.version}
- compile
-
-
-
- org.datanucleus
- javax.jdo
- ${javax.jdo.version}
-
-
- org.datanucleus
- datanucleus-core
- ${datanucleus.version}
-
-
- org.datanucleus
- datanucleus-api-jdo
- ${datanucleus.version}
-
-
- org.datanucleus
- datanucleus-rdbms
- ${datanucleus.version}
-
-
- org.datanucleus
- datanucleus-maven-plugin
- ${datanucleus-maven-plugin.version}
-
-
- org.datanucleus
- datanucleus-xml
- ${datanucleus-xml.version}
-
-
- org.datanucleus
- datanucleus-jdo-query
- ${datanucleus-jdo-query.version}
-
javax.cache
@@ -232,23 +169,6 @@
assertj-core
${assertj.version}
-
- org.awaitility
- awaitility
- ${awaitility.version}
- test
-
-
- org.awaitility
- awaitility-proxy
- ${awaitility.version}
- test
-
-
- io.ebean
- ebean
- ${ebean.version}
-
org.slf4j
slf4j-api
@@ -289,113 +209,13 @@
-
-
-
- maven-antrun-plugin
- ${maven-antrun-plugin.version}
-
-
- generateMithra
- generate-sources
-
- run
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- com.goldmansachs.reladomo
- reladomogen
- ${reladomo.version}
-
-
-
- com.goldmansachs.reladomo
- reladomo-gen-util
- ${reladomo.version}
-
-
-
-
- org.codehaus.mojo
- build-helper-maven-plugin
- ${build-helper-maven-plugin.version}
-
-
- add-source
- generate-sources
-
- add-source
-
-
-
- ${project.build.directory}/generated-sources/reladomo
-
-
-
-
- add-resource
- generate-resources
-
- add-resource
-
-
-
-
- ${project.build.directory}/generated-db/
-
-
-
-
-
-
-
-
-
-
- org.datanucleus
- datanucleus-maven-plugin
- ${datanucleus-maven-plugin.version}
-
- JDO
- ${basedir}/datanucleus.properties
- ${basedir}/log4j.properties
- true
- false
-
-
-
-
- process-classes
-
- enhance
-
-
-
-
-
org.apache.maven.plugins
maven-assembly-plugin
2.3
- src/main/assembly/hadoop-job.xml
+ src/main/resources/assembly/hadoop-job.xml
@@ -413,51 +233,22 @@
-
- io.ebean
- ebean-maven-plugin
- 11.11.2
-
-
-
- main
- process-classes
-
- debug=1
-
-
- enhance
-
-
-
-
1.2.2
- 4.0.1
- 16.5.1
- 5.0
1.0.0
2.4.0
2.8.2
1.1.0
1.5.0
- 3.0.0
3.6.2
3.8.4
1.8
3.0.0
- 2.7.2
- 3.2.0-m7
- 5.1.1
- 5.0.2
- 5.0.0-release
- 5.0.4
0.15.0
2.2.0
- 11.22.4
1.7.25
1.0.1
diff --git a/libraries-data/src/main/resources/ReladomoRuntimeConfig.xml b/libraries-data/src/main/resources/ReladomoRuntimeConfig.xml
deleted file mode 100644
index 7181e75406..0000000000
--- a/libraries-data/src/main/resources/ReladomoRuntimeConfig.xml
+++ /dev/null
@@ -1,6 +0,0 @@
-
-
-
-
-
-
\ No newline at end of file
diff --git a/libraries-data/src/main/assembly/hadoop-job.xml b/libraries-data/src/main/resources/assembly/hadoop-job.xml
similarity index 100%
rename from libraries-data/src/main/assembly/hadoop-job.xml
rename to libraries-data/src/main/resources/assembly/hadoop-job.xml
diff --git a/libraries-data/src/main/resources/ebean.mf b/libraries-data/src/main/resources/ebean.mf
deleted file mode 100644
index f49fecc717..0000000000
--- a/libraries-data/src/main/resources/ebean.mf
+++ /dev/null
@@ -1,3 +0,0 @@
-entity-packages: com.baeldung.ebean.model
-transactional-packages: com.baeldung.ebean.app
-querybean-packages: com.baeldung.ebean.app
diff --git a/libraries-data/src/main/resources/employee.txt b/libraries-data/src/main/resources/employee.txt
deleted file mode 100644
index 6c476f39fa..0000000000
--- a/libraries-data/src/main/resources/employee.txt
+++ /dev/null
@@ -1,3 +0,0 @@
-{id:"1", name="John", isEmployed: "true"}
-{id:"1", name="Anna", isEmployed: "false"}
-{id:"1", name="George", isEmployed: "true"}
\ No newline at end of file
diff --git a/libraries-data/src/main/kafka-connect/01_Quick_Start/connect-file-sink.properties b/libraries-data/src/main/resources/kafka-connect/01_Quick_Start/connect-file-sink.properties
similarity index 100%
rename from libraries-data/src/main/kafka-connect/01_Quick_Start/connect-file-sink.properties
rename to libraries-data/src/main/resources/kafka-connect/01_Quick_Start/connect-file-sink.properties
diff --git a/libraries-data/src/main/kafka-connect/01_Quick_Start/connect-file-source.properties b/libraries-data/src/main/resources/kafka-connect/01_Quick_Start/connect-file-source.properties
similarity index 100%
rename from libraries-data/src/main/kafka-connect/01_Quick_Start/connect-file-source.properties
rename to libraries-data/src/main/resources/kafka-connect/01_Quick_Start/connect-file-source.properties
diff --git a/libraries-data/src/main/kafka-connect/01_Quick_Start/connect-standalone.properties b/libraries-data/src/main/resources/kafka-connect/01_Quick_Start/connect-standalone.properties
similarity index 100%
rename from libraries-data/src/main/kafka-connect/01_Quick_Start/connect-standalone.properties
rename to libraries-data/src/main/resources/kafka-connect/01_Quick_Start/connect-standalone.properties
diff --git a/libraries-data/src/main/kafka-connect/02_Distributed/connect-distributed.properties b/libraries-data/src/main/resources/kafka-connect/02_Distributed/connect-distributed.properties
similarity index 100%
rename from libraries-data/src/main/kafka-connect/02_Distributed/connect-distributed.properties
rename to libraries-data/src/main/resources/kafka-connect/02_Distributed/connect-distributed.properties
diff --git a/libraries-data/src/main/kafka-connect/02_Distributed/connect-file-sink.json b/libraries-data/src/main/resources/kafka-connect/02_Distributed/connect-file-sink.json
similarity index 100%
rename from libraries-data/src/main/kafka-connect/02_Distributed/connect-file-sink.json
rename to libraries-data/src/main/resources/kafka-connect/02_Distributed/connect-file-sink.json
diff --git a/libraries-data/src/main/kafka-connect/02_Distributed/connect-file-source.json b/libraries-data/src/main/resources/kafka-connect/02_Distributed/connect-file-source.json
similarity index 100%
rename from libraries-data/src/main/kafka-connect/02_Distributed/connect-file-source.json
rename to libraries-data/src/main/resources/kafka-connect/02_Distributed/connect-file-source.json
diff --git a/libraries-data/src/main/kafka-connect/03_Transform/connect-distributed.properties b/libraries-data/src/main/resources/kafka-connect/03_Transform/connect-distributed.properties
similarity index 100%
rename from libraries-data/src/main/kafka-connect/03_Transform/connect-distributed.properties
rename to libraries-data/src/main/resources/kafka-connect/03_Transform/connect-distributed.properties
diff --git a/libraries-data/src/main/kafka-connect/03_Transform/connect-file-source-transform.json b/libraries-data/src/main/resources/kafka-connect/03_Transform/connect-file-source-transform.json
similarity index 100%
rename from libraries-data/src/main/kafka-connect/03_Transform/connect-file-source-transform.json
rename to libraries-data/src/main/resources/kafka-connect/03_Transform/connect-file-source-transform.json
diff --git a/libraries-data/src/main/kafka-connect/04_Custom/connect-mongodb-sink.json b/libraries-data/src/main/resources/kafka-connect/04_Custom/connect-mongodb-sink.json
similarity index 100%
rename from libraries-data/src/main/kafka-connect/04_Custom/connect-mongodb-sink.json
rename to libraries-data/src/main/resources/kafka-connect/04_Custom/connect-mongodb-sink.json
diff --git a/libraries-data/src/main/kafka-connect/04_Custom/connect-mqtt-source.json b/libraries-data/src/main/resources/kafka-connect/04_Custom/connect-mqtt-source.json
similarity index 100%
rename from libraries-data/src/main/kafka-connect/04_Custom/connect-mqtt-source.json
rename to libraries-data/src/main/resources/kafka-connect/04_Custom/connect-mqtt-source.json
diff --git a/libraries-data/src/main/kafka-connect/04_Custom/docker-compose.yaml b/libraries-data/src/main/resources/kafka-connect/04_Custom/docker-compose.yaml
similarity index 100%
rename from libraries-data/src/main/kafka-connect/04_Custom/docker-compose.yaml
rename to libraries-data/src/main/resources/kafka-connect/04_Custom/docker-compose.yaml
diff --git a/libraries-data/src/main/resources/user_jmapper.xml b/libraries-data/src/main/resources/user_jmapper.xml
deleted file mode 100644
index f007de9f0a..0000000000
--- a/libraries-data/src/main/resources/user_jmapper.xml
+++ /dev/null
@@ -1,10 +0,0 @@
-
-
-
-
-
-
-
-
-
-
\ No newline at end of file
diff --git a/libraries-data/src/main/resources/user_jmapper1.xml b/libraries-data/src/main/resources/user_jmapper1.xml
deleted file mode 100644
index abcfd77e1c..0000000000
--- a/libraries-data/src/main/resources/user_jmapper1.xml
+++ /dev/null
@@ -1,5 +0,0 @@
-
-
-
-
-
\ No newline at end of file
diff --git a/libraries-data/src/main/resources/user_jmapper2.xml b/libraries-data/src/main/resources/user_jmapper2.xml
deleted file mode 100644
index 1e708e14bf..0000000000
--- a/libraries-data/src/main/resources/user_jmapper2.xml
+++ /dev/null
@@ -1,21 +0,0 @@
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
\ No newline at end of file
diff --git a/libraries-data/src/test/resources/reladomo/ReladomoTestConfig.xml b/libraries-data/src/test/resources/reladomo/ReladomoTestConfig.xml
deleted file mode 100644
index 6e5d212fb8..0000000000
--- a/libraries-data/src/test/resources/reladomo/ReladomoTestConfig.xml
+++ /dev/null
@@ -1,7 +0,0 @@
-
-
-
-
-
-
-
\ No newline at end of file
diff --git a/libraries-data/src/test/resources/reladomo/test-data.txt b/libraries-data/src/test/resources/reladomo/test-data.txt
deleted file mode 100644
index 8e407278ac..0000000000
--- a/libraries-data/src/test/resources/reladomo/test-data.txt
+++ /dev/null
@@ -1,7 +0,0 @@
-class com.baeldung.reladomo.Department
-id, name
-1, "Marketing"
-
-class com.baeldung.reladomo.Employee
-id, name
-1, "Paul"
\ No newline at end of file
diff --git a/libraries-primitive/pom.xml b/libraries-primitive/pom.xml
index cddb3ab1fe..30f683a544 100644
--- a/libraries-primitive/pom.xml
+++ b/libraries-primitive/pom.xml
@@ -3,17 +3,11 @@
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
4.0.0
-
com.baeldung
libraries-primitive
1.0-SNAPSHOT
libraries-primitive
-
- 1.8
- 1.8
-
-
@@ -47,12 +41,15 @@
eclipse-collections-api
10.0.0
-
org.eclipse.collections
eclipse-collections
10.0.0
-
+
+
+ 1.8
+ 1.8
+
\ No newline at end of file
diff --git a/libraries/src/main/java/com/baeldung/pairs/CustomPair.java b/libraries/src/main/java/com/baeldung/pairs/CustomPair.java
new file mode 100644
index 0000000000..bd37977f92
--- /dev/null
+++ b/libraries/src/main/java/com/baeldung/pairs/CustomPair.java
@@ -0,0 +1,33 @@
+package com.baeldung.pairs;
+
+public class CustomPair {
+
+ private String key;
+ private String value;
+
+ public CustomPair(String key, String value) {
+ super();
+ this.key = key;
+ this.value = value;
+ }
+
+ public String getKey() {
+ return key;
+ }
+
+ public void setKey(String key) {
+ this.key = key;
+ }
+
+ public String getValue() {
+ return value;
+ }
+
+ public void setValue(String value) {
+ this.value = value;
+ }
+
+ public Object[] getPair() {
+ return new Object[] { this.key, this.value};
+ }
+}
diff --git a/libraries/src/test/resources/yaml/customer.yaml b/libraries/src/test/resources/yaml/customer.yaml
deleted file mode 100644
index aa76141c7d..0000000000
--- a/libraries/src/test/resources/yaml/customer.yaml
+++ /dev/null
@@ -1,3 +0,0 @@
-firstName: "John"
-lastName: "Doe"
-age: 20
\ No newline at end of file
diff --git a/libraries/src/test/resources/yaml/customer_with_contact_details.yaml b/libraries/src/test/resources/yaml/customer_with_contact_details.yaml
deleted file mode 100644
index 34563cbd21..0000000000
--- a/libraries/src/test/resources/yaml/customer_with_contact_details.yaml
+++ /dev/null
@@ -1,7 +0,0 @@
-firstName: "John"
-lastName: "Doe"
-age: 31
-contactDetails:
- - { type: "mobile", number: 123456789}
- - { type: "landline", number: 456786868}
-
\ No newline at end of file
diff --git a/libraries/src/test/resources/yaml/customer_with_contact_details_and_address.yaml b/libraries/src/test/resources/yaml/customer_with_contact_details_and_address.yaml
deleted file mode 100644
index 664afe8594..0000000000
--- a/libraries/src/test/resources/yaml/customer_with_contact_details_and_address.yaml
+++ /dev/null
@@ -1,13 +0,0 @@
-firstName: "John"
-lastName: "Doe"
-age: 31
-contactDetails:
- - type: "mobile"
- number: 123456789
- - type: "landline"
- number: 456786868
-homeAddress:
- line: "Xyz, DEF Street"
- city: "City Y"
- state: "State Y"
- zip: 345657
diff --git a/libraries/src/test/resources/yaml/customer_with_contact_details_and_tags.yaml b/libraries/src/test/resources/yaml/customer_with_contact_details_and_tags.yaml
deleted file mode 100644
index 145da256d9..0000000000
--- a/libraries/src/test/resources/yaml/customer_with_contact_details_and_tags.yaml
+++ /dev/null
@@ -1,6 +0,0 @@
-firstName: "John"
-lastName: "Doe"
-age: 31
-contactDetails:
- - !contact { type: "mobile", number: 123456789}
- - !contact { type: "landline", number: 456786868}
diff --git a/libraries/src/test/resources/yaml/customer_with_type.yaml b/libraries/src/test/resources/yaml/customer_with_type.yaml
deleted file mode 100644
index 6e13c26cea..0000000000
--- a/libraries/src/test/resources/yaml/customer_with_type.yaml
+++ /dev/null
@@ -1,4 +0,0 @@
-!!com.baeldung.snakeyaml.Customer
-firstName: "John"
-lastName: "Doe"
-age: 20
\ No newline at end of file
diff --git a/libraries/src/test/resources/yaml/customers.yaml b/libraries/src/test/resources/yaml/customers.yaml
deleted file mode 100644
index 23b9039c2e..0000000000
--- a/libraries/src/test/resources/yaml/customers.yaml
+++ /dev/null
@@ -1,8 +0,0 @@
----
-firstName: "John"
-lastName: "Doe"
-age: 20
----
-firstName: "Jack"
-lastName: "Jones"
-age: 25
\ No newline at end of file
diff --git a/logging-modules/flogger/pom.xml b/logging-modules/flogger/pom.xml
index 0bba719616..20201af179 100644
--- a/logging-modules/flogger/pom.xml
+++ b/logging-modules/flogger/pom.xml
@@ -2,14 +2,14 @@
+ 4.0.0
+ flogger
+
logging-modules
com.baeldung
1.0.0-SNAPSHOT
- 4.0.0
-
- flogger
diff --git a/mapstruct/src/test/java/com/baeldung/mapper/EmployeeMapperUnitTest.java b/mapstruct/src/test/java/com/baeldung/mapper/EmployeeMapperUnitTest.java
index 330c12eb13..1a48b341b9 100644
--- a/mapstruct/src/test/java/com/baeldung/mapper/EmployeeMapperUnitTest.java
+++ b/mapstruct/src/test/java/com/baeldung/mapper/EmployeeMapperUnitTest.java
@@ -46,7 +46,7 @@ public class EmployeeMapperUnitTest {
}
@Test
- public void givenEmployeeDTOwithNestedMappingToEmployee_whenMaps_thenCorrect() {
+ public void givenEmpDTONestedMappingToEmp_whenMaps_thenCorrect() {
EmployeeDTO dto = new EmployeeDTO();
dto.setDivision(new DivisionDTO(1, "Division1"));
@@ -102,7 +102,7 @@ public class EmployeeMapperUnitTest {
}
@Test
- public void givenEmployeeWithStartDateMappingToEmployeeDTO_whenMaps_thenCorrect() throws ParseException {
+ public void givenEmpStartDtMappingToEmpDTO_whenMaps_thenCorrect() throws ParseException {
Employee entity = new Employee();
entity.setStartDt(new Date());
@@ -112,7 +112,7 @@ public class EmployeeMapperUnitTest {
}
@Test
- public void givenEmployeeDTOWithStartDateMappingToEmployee_whenMaps_thenCorrect() throws ParseException {
+ public void givenEmpDTOStartDtMappingToEmp_whenMaps_thenCorrect() throws ParseException {
EmployeeDTO dto = new EmployeeDTO();
dto.setEmployeeStartDt("01-04-2016 01:00:00");
diff --git a/mapstruct/src/test/java/com/baeldung/mapper/SimpleSourceDestinationMapperIntegrationTest.java b/mapstruct/src/test/java/com/baeldung/mapper/SimpleSourceDestinationMapperIntegrationTest.java
index 31d60c0d7d..78527e70e4 100644
--- a/mapstruct/src/test/java/com/baeldung/mapper/SimpleSourceDestinationMapperIntegrationTest.java
+++ b/mapstruct/src/test/java/com/baeldung/mapper/SimpleSourceDestinationMapperIntegrationTest.java
@@ -18,7 +18,7 @@ public class SimpleSourceDestinationMapperIntegrationTest {
SimpleSourceDestinationMapper simpleSourceDestinationMapper;
@Test
- public void givenSimpleSourceToSimpleDestination_whenMaps_thenCorrect() {
+ public void givenSourceToDestination_whenMaps_thenCorrect() {
SimpleSource simpleSource = new SimpleSource();
simpleSource.setName("SourceName");
simpleSource.setDescription("SourceDescription");
@@ -30,7 +30,7 @@ public class SimpleSourceDestinationMapperIntegrationTest {
}
@Test
- public void givenSimpleDestinationToSourceDestination_whenMaps_thenCorrect() {
+ public void givenDestinationToSource_whenMaps_thenCorrect() {
SimpleDestination destination = new SimpleDestination();
destination.setName("DestinationName");
destination.setDescription("DestinationDescription");
diff --git a/ml/README.md b/ml/README.md
deleted file mode 100644
index 5fd32012b4..0000000000
--- a/ml/README.md
+++ /dev/null
@@ -1,6 +0,0 @@
-## Machine Learning
-
-This module contains articles about Machine Learning (ML) in Java with [deeplearning4j](https://deeplearning4j.org).
-
-### Relevant Articles:
-- [Logistic Regression in Java](https://www.baeldung.com/)
diff --git a/ml/pom.xml b/ml/pom.xml
deleted file mode 100644
index 80afcc24f4..0000000000
--- a/ml/pom.xml
+++ /dev/null
@@ -1,52 +0,0 @@
-
- 4.0.0
- com.baeldung.deeplearning4j
- ml
- 1.0-SNAPSHOT
- Machine Learning
- jar
-
-
- com.baeldung
- parent-modules
- 1.0.0-SNAPSHOT
-
-
-
-
- org.nd4j
- nd4j-native-platform
- ${dl4j.version}
-
-
- org.deeplearning4j
- deeplearning4j-core
- ${dl4j.version}
-
-
- org.deeplearning4j
- deeplearning4j-nn
- ${dl4j.version}
-
-
-
- org.datavec
- datavec-api
- ${dl4j.version}
-
-
- org.apache.httpcomponents
- httpclient
- 4.3.5
-
-
-
-
-
-
- 1.0.0-beta4
-
-
-
\ No newline at end of file
diff --git a/oauth2-framework-impl/oauth2-authorization-server/pom.xml b/oauth2-framework-impl/oauth2-authorization-server/pom.xml
index 25927c9f1a..8793eefe78 100644
--- a/oauth2-framework-impl/oauth2-authorization-server/pom.xml
+++ b/oauth2-framework-impl/oauth2-authorization-server/pom.xml
@@ -3,7 +3,6 @@
xmlns="http://maven.apache.org/POM/4.0.0"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
4.0.0
-
oauth2-authorization-server
war
oauth2-authorization-server
@@ -14,15 +13,6 @@
1.0-SNAPSHOT
-
- 1.4.199
- 9080
- 9443
- 7.3
- 1.62
- 1.62
-
-
com.nimbusds
@@ -73,4 +63,13 @@
+
+
+ 1.4.199
+ 9080
+ 9443
+ 7.3
+ 1.62
+ 1.62
+
diff --git a/oauth2-framework-impl/oauth2-client/pom.xml b/oauth2-framework-impl/oauth2-client/pom.xml
index 9b2f05c483..4f12095d30 100644
--- a/oauth2-framework-impl/oauth2-client/pom.xml
+++ b/oauth2-framework-impl/oauth2-client/pom.xml
@@ -13,11 +13,6 @@
1.0-SNAPSHOT
-
- 9180
- 9543
-
-
@@ -26,4 +21,9 @@
+
+
+ 9180
+ 9543
+
diff --git a/oauth2-framework-impl/oauth2-resource-server/pom.xml b/oauth2-framework-impl/oauth2-resource-server/pom.xml
index 5e5cd087ed..4c82668547 100644
--- a/oauth2-framework-impl/oauth2-resource-server/pom.xml
+++ b/oauth2-framework-impl/oauth2-resource-server/pom.xml
@@ -13,14 +13,6 @@
1.0-SNAPSHOT
-
- 9280
- 8643
- http://localhost:9080
- http://localhost:9280
- 1.1
-
-
org.eclipse.microprofile.jwt
@@ -39,4 +31,12 @@
+
+ 9280
+ 8643
+ http://localhost:9080
+ http://localhost:9280
+ 1.1
+
+
diff --git a/oauth2-framework-impl/pom.xml b/oauth2-framework-impl/pom.xml
index fd1a2c926f..3c98b45112 100644
--- a/oauth2-framework-impl/pom.xml
+++ b/oauth2-framework-impl/pom.xml
@@ -9,15 +9,11 @@
pom
oauth2-framework-impl
-
- 1.8
- 1.8
- false
- RELEASE
- 2.6.4
- 8.0
- 1.3
-
+
+ oauth2-authorization-server
+ oauth2-resource-server
+ oauth2-client
+
@@ -88,9 +84,14 @@
-
- oauth2-authorization-server
- oauth2-resource-server
- oauth2-client
-
+
+
+ 1.8
+ 1.8
+ false
+ RELEASE
+ 2.6.4
+ 8.0
+ 1.3
+
diff --git a/pdf/src/main/java/com/baeldung/pdf/PDFSampleMain.java b/pdf/src/main/java/com/baeldung/pdf/PDFSampleMain.java
new file mode 100644
index 0000000000..195f49e962
--- /dev/null
+++ b/pdf/src/main/java/com/baeldung/pdf/PDFSampleMain.java
@@ -0,0 +1,77 @@
+package com.baeldung.pdf;
+
+import java.io.FileOutputStream;
+import java.io.IOException;
+import java.net.URISyntaxException;
+import java.nio.file.Path;
+import java.nio.file.Paths;
+import java.util.stream.Stream;
+
+import com.itextpdf.text.BadElementException;
+import com.itextpdf.text.BaseColor;
+import com.itextpdf.text.Document;
+import com.itextpdf.text.Element;
+import com.itextpdf.text.Image;
+import com.itextpdf.text.Phrase;
+import com.itextpdf.text.pdf.PdfPCell;
+import com.itextpdf.text.pdf.PdfPTable;
+import com.itextpdf.text.pdf.PdfWriter;
+
+public class PDFSampleMain {
+
+ public static void main(String[] args) {
+
+ try {
+
+ Document document = new Document();
+ PdfWriter.getInstance(document, new FileOutputStream("iTextTable.pdf"));
+
+ document.open();
+
+ PdfPTable table = new PdfPTable(3);
+ addTableHeader(table);
+ addRows(table);
+ addCustomRows(table);
+
+ document.add(table);
+ document.close();
+
+ } catch (Exception e) {
+ e.printStackTrace();
+ }
+ }
+
+ private static void addTableHeader(PdfPTable table) {
+ Stream.of("column header 1", "column header 2", "column header 3")
+ .forEach(columnTitle -> {
+ PdfPCell header = new PdfPCell();
+ header.setBackgroundColor(BaseColor.LIGHT_GRAY);
+ header.setBorderWidth(2);
+ header.setPhrase(new Phrase(columnTitle));
+ table.addCell(header);
+ });
+ }
+
+ private static void addRows(PdfPTable table) {
+ table.addCell("row 1, col 1");
+ table.addCell("row 1, col 2");
+ table.addCell("row 1, col 3");
+ }
+
+ private static void addCustomRows(PdfPTable table) throws URISyntaxException, BadElementException, IOException {
+ Path path = Paths.get(ClassLoader.getSystemResource("Java_logo.png").toURI());
+ Image img = Image.getInstance(path.toAbsolutePath().toString());
+ img.scalePercent(10);
+
+ PdfPCell imageCell = new PdfPCell(img);
+ table.addCell(imageCell);
+
+ PdfPCell horizontalAlignCell = new PdfPCell(new Phrase("row 2, col 2"));
+ horizontalAlignCell.setHorizontalAlignment(Element.ALIGN_CENTER);
+ table.addCell(horizontalAlignCell);
+
+ PdfPCell verticalAlignCell = new PdfPCell(new Phrase("row 2, col 3"));
+ verticalAlignCell.setVerticalAlignment(Element.ALIGN_BOTTOM);
+ table.addCell(verticalAlignCell);
+ }
+}
diff --git a/pdf/src/main/resources/Java_logo.png b/pdf/src/main/resources/Java_logo.png
new file mode 100644
index 0000000000..383327b203
Binary files /dev/null and b/pdf/src/main/resources/Java_logo.png differ
diff --git a/performance-tests/pom.xml b/performance-tests/pom.xml
index 956c0ccfa8..4dc480ef86 100644
--- a/performance-tests/pom.xml
+++ b/performance-tests/pom.xml
@@ -1,11 +1,11 @@
4.0.0
-
com.baeldung
performance-tests
1.0
jar
+ performance-tests
parent-modules
@@ -13,8 +13,6 @@
1.0.0-SNAPSHOT
- performance-tests
-
ma.glasnost.orika
diff --git a/persistence-modules/elasticsearch/pom.xml b/persistence-modules/elasticsearch/pom.xml
index f7bfdb44de..943cfa6a23 100644
--- a/persistence-modules/elasticsearch/pom.xml
+++ b/persistence-modules/elasticsearch/pom.xml
@@ -16,7 +16,6 @@
-
io.searchbox
jest
diff --git a/persistence-modules/java-jpa-2/pom.xml b/persistence-modules/java-jpa-2/pom.xml
index fdd482f833..790c4a07df 100644
--- a/persistence-modules/java-jpa-2/pom.xml
+++ b/persistence-modules/java-jpa-2/pom.xml
@@ -4,12 +4,14 @@
4.0.0
java-jpa-2
java-jpa-2
+
com.baeldung
parent-modules
1.0.0-SNAPSHOT
../../pom.xml
+
org.hibernate
@@ -79,7 +81,6 @@
-
org.codehaus.mojo
build-helper-maven-plugin
@@ -101,6 +102,7 @@
+
5.4.0.Final
2.7.4-RC1
diff --git a/persistence-modules/jpa-hibernate-cascade-type/pom.xml b/persistence-modules/jpa-hibernate-cascade-type/pom.xml
index 8cfc2a5fa2..bc6307efb0 100644
--- a/persistence-modules/jpa-hibernate-cascade-type/pom.xml
+++ b/persistence-modules/jpa-hibernate-cascade-type/pom.xml
@@ -2,6 +2,10 @@
+ jpa-hibernate-cascade-type
+ 4.0.0
+ 1.0.0-SNAPSHOT
+
com.baeldung
parent-modules
@@ -9,10 +13,6 @@
../../
- jpa-hibernate-cascade-type
- 4.0.0
- 1.0.0-SNAPSHOT
-
org.hibernate
diff --git a/persistence-modules/persistence-libraries/pom.xml b/persistence-modules/persistence-libraries/pom.xml
index cce051f303..273db34ec4 100644
--- a/persistence-modules/persistence-libraries/pom.xml
+++ b/persistence-modules/persistence-libraries/pom.xml
@@ -4,18 +4,6 @@
4.0.0
persistence-libraries
1.0-SNAPSHOT
-
-
-
- org.apache.maven.plugins
- maven-compiler-plugin
-
- 8
- 8
-
-
-
-
java-sql2o
@@ -45,6 +33,19 @@
+
+
+
+ org.apache.maven.plugins
+ maven-compiler-plugin
+
+ 8
+ 8
+
+
+
+
+
2.4.0
4.12
diff --git a/persistence-modules/r2dbc/pom.xml b/persistence-modules/r2dbc/pom.xml
index fd48a47f12..4256da659e 100644
--- a/persistence-modules/r2dbc/pom.xml
+++ b/persistence-modules/r2dbc/pom.xml
@@ -1,91 +1,92 @@
- 4.0.0
-
- org.springframework.boot
- spring-boot-starter-parent
- 2.1.6.RELEASE
-
-
- org.baeldung.examples.r2dbc
- r2dbc-example
- 0.0.1-SNAPSHOT
- r2dbc-example
- Sample R2DBC Project
+ xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+ xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
+ 4.0.0
+ org.baeldung.examples.r2dbc
+ r2dbc-example
+ 0.0.1-SNAPSHOT
+ r2dbc-example
+ Sample R2DBC Project
-
- 1.8
- 0.8.0.M8
-
+
+ org.springframework.boot
+ spring-boot-starter-parent
+ 2.1.6.RELEASE
+
+
-
-
- org.springframework.boot
- spring-boot-starter-webflux
-
+
+
+ org.springframework.boot
+ spring-boot-starter-webflux
+
-
- org.springframework.boot
- spring-boot-starter-test
- test
-
-
- io.projectreactor
- reactor-test
- test
-
+
+ org.springframework.boot
+ spring-boot-starter-test
+ test
+
+
+ io.projectreactor
+ reactor-test
+ test
+
-
-
- io.r2dbc
- r2dbc-h2
- ${r2dbc-h2.version}
-
+
+
+ io.r2dbc
+ r2dbc-h2
+ ${r2dbc-h2.version}
+
-
- org.springframework.boot
- spring-boot-configuration-processor
- true
-
-
- org.springframework.boot
- spring-boot-devtools
-
-
+
+ org.springframework.boot
+ spring-boot-configuration-processor
+ true
+
+
+ org.springframework.boot
+ spring-boot-devtools
+
+
-
-
-
- org.springframework.boot
- spring-boot-maven-plugin
-
-
-
+
+
+
+ org.springframework.boot
+ spring-boot-maven-plugin
+
+
+
-
-
+
+
-
- spring-snapshots
- Spring Snapshots
- https://repo.spring.io/snapshot
-
- true
-
-
+
+ spring-snapshots
+ Spring Snapshots
+ https://repo.spring.io/snapshot
+
+ true
+
+
-
- spring-milestones
- Spring Milestones
- https://repo.spring.io/milestone
-
- false
-
-
+
+ spring-milestones
+ Spring Milestones
+ https://repo.spring.io/milestone
+
+ false
+
+
-
+
+
+
+ 1.8
+ 0.8.0.M8
+
diff --git a/persistence-modules/spring-boot-jdbi/pom.xml b/persistence-modules/spring-boot-jdbi/pom.xml
index 3f9bc8ab10..e8904492ac 100644
--- a/persistence-modules/spring-boot-jdbi/pom.xml
+++ b/persistence-modules/spring-boot-jdbi/pom.xml
@@ -1,107 +1,102 @@
- 4.0.0
- com.baeldung.boot.jdbi
- spring-boot-jdbi
- 0.0.1-SNAPSHOT
- spring-boot-jdbi
- Sample SpringBoot JDBI Project
+ xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+ xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 https://maven.apache.org/xsd/maven-4.0.0.xsd">
+ 4.0.0
+ com.baeldung.boot.jdbi
+ spring-boot-jdbi
+ 0.0.1-SNAPSHOT
+ spring-boot-jdbi
+ Sample SpringBoot JDBI Project
-
- parent-modules
- com.baeldung
- 1.0.0-SNAPSHOT
- ../../pom.xml
-
+
+ parent-modules
+ com.baeldung
+ 1.0.0-SNAPSHOT
+ ../../pom.xml
+
+
+
+
+ org.springframework.boot
+ spring-boot-dependencies
+ 2.1.8.RELEASE
+ pom
+ import
+
-
- 1.8
- 3.9.1
-
+
+ org.jdbi
+ jdbi3-spring4
+ ${jdbi.version}
+
-
-
-
- org.springframework.boot
- spring-boot-dependencies
- 2.1.8.RELEASE
- pom
- import
-
+
+ org.jdbi
+ jdbi3-sqlobject
+ ${jdbi.version}
+
-
- org.jdbi
- jdbi3-spring4
- ${jdbi.version}
-
+
+
-
- org.jdbi
- jdbi3-sqlobject
- ${jdbi.version}
-
+
+
+ org.springframework.boot
+ spring-boot-starter-jdbc
+
+
+
+ org.jdbi
+ jdbi3-spring4
+
-
-
+
+ org.jdbi
+ jdbi3-sqlobject
+
+
+ org.springframework.boot
+ spring-boot-devtools
+ runtime
+ true
+
+
+ com.h2database
+ h2
+ runtime
+
+
+ org.springframework.boot
+ spring-boot-configuration-processor
+ true
+
+
+ org.projectlombok
+ lombok
+ true
+
+
+ org.springframework.boot
+ spring-boot-starter-test
+ test
+
+
-
-
- org.springframework.boot
- spring-boot-starter-jdbc
-
-
-
- org.jdbi
- jdbi3-spring4
-
+
+
+
+ org.springframework.boot
+ spring-boot-maven-plugin
+
+
+
-
- org.jdbi
- jdbi3-sqlobject
-
-
-
-
- org.springframework.boot
- spring-boot-devtools
- runtime
- true
-
-
- com.h2database
- h2
- runtime
-
-
- org.springframework.boot
- spring-boot-configuration-processor
- true
-
-
- org.projectlombok
- lombok
- true
-
-
- org.springframework.boot
- spring-boot-starter-test
- test
-
-
-
-
-
-
-
-
- org.springframework.boot
- spring-boot-maven-plugin
-
-
-
+
+ 1.8
+ 3.9.1
+
diff --git a/persistence-modules/spring-boot-persistence/src/main/java/com/baeldung/springbootdatasourceconfig/application/datasources/DataSourceBean.java b/persistence-modules/spring-boot-persistence/src/main/java/com/baeldung/springbootdatasourceconfig/application/datasources/DataSourceConfig.java
similarity index 92%
rename from persistence-modules/spring-boot-persistence/src/main/java/com/baeldung/springbootdatasourceconfig/application/datasources/DataSourceBean.java
rename to persistence-modules/spring-boot-persistence/src/main/java/com/baeldung/springbootdatasourceconfig/application/datasources/DataSourceConfig.java
index 9ef9b77aed..52792d3a23 100644
--- a/persistence-modules/spring-boot-persistence/src/main/java/com/baeldung/springbootdatasourceconfig/application/datasources/DataSourceBean.java
+++ b/persistence-modules/spring-boot-persistence/src/main/java/com/baeldung/springbootdatasourceconfig/application/datasources/DataSourceConfig.java
@@ -6,7 +6,7 @@ import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
@Configuration
-public class DataSourceBean {
+public class DataSourceConfig {
@Bean
public DataSource getDataSource() {
diff --git a/persistence-modules/spring-data-eclipselink/pom.xml b/persistence-modules/spring-data-eclipselink/pom.xml
index 61c28dc26f..5ca827db7b 100644
--- a/persistence-modules/spring-data-eclipselink/pom.xml
+++ b/persistence-modules/spring-data-eclipselink/pom.xml
@@ -63,7 +63,6 @@
-
1.5.9.RELEASE
2.7.0
diff --git a/pom.xml b/pom.xml
index 196870800c..12f33c5187 100644
--- a/pom.xml
+++ b/pom.xml
@@ -428,6 +428,8 @@
core-java-modules/core-java-perf
core-java-modules/core-java-reflection
core-java-modules/core-java-sun
+ core-java-modules/core-java-string-conversions
+ core-java-modules/core-java-string-conversions-2
core-java-modules/core-java
core-java-modules/core-java-jvm
core-scala
@@ -531,6 +533,8 @@
libraries-2
libraries-data
libraries-data-2
+ libraries-data-db
+ libraries-data-io
libraries-apache-commons
libraries-apache-commons-collections
libraries-apache-commons-io
@@ -559,7 +563,6 @@
metrics
microprofile
- ml
msf4j
mustache
@@ -606,6 +609,7 @@
spring-boot-nashorn
java-blockchain
+ wildfly
@@ -1188,6 +1192,8 @@
core-java-modules/core-java-networking
core-java-modules/core-java-perf
core-java-modules/core-java-sun
+ core-java-modules/core-java-string-conversions
+ core-java-modules/core-java-string-conversions-2
core-scala
couchbase
custom-pmd
@@ -1286,6 +1292,8 @@
libraries
libraries-data
libraries-data-2
+ libraries-data-db
+ libraries-data-io
libraries-apache-commons
libraries-apache-commons-collections
libraries-apache-commons-io
@@ -1313,7 +1321,6 @@
metrics
microprofile
- ml
msf4j
mustache
diff --git a/spring-5-reactive-client/README.md b/spring-5-reactive-client/README.md
index 90d12cad1c..1724db9e66 100644
--- a/spring-5-reactive-client/README.md
+++ b/spring-5-reactive-client/README.md
@@ -6,4 +6,5 @@ This module contains articles about reactive Spring 5 WebClient
The "REST With Spring" Classes: http://bit.ly/restwithspring
### Relevant Articles
+- [Simultaneous Spring WebClient Calls](https://www.baeldung.com/spring-webclient-simultaneous-calls)
diff --git a/spring-5-security-cognito/pom.xml b/spring-5-security-cognito/pom.xml
index 431c9b8d9c..cc6a4a56fb 100644
--- a/spring-5-security-cognito/pom.xml
+++ b/spring-5-security-cognito/pom.xml
@@ -16,7 +16,6 @@
-
org.springframework.boot
spring-boot-starter-security
diff --git a/spring-batch/.gitignore b/spring-batch/.gitignore
index 0ef6d10b38..5c16bc1baf 100644
--- a/spring-batch/.gitignore
+++ b/spring-batch/.gitignore
@@ -1 +1,2 @@
-output.csv
\ No newline at end of file
+output.csv
+output.json
\ No newline at end of file
diff --git a/spring-batch/pom.xml b/spring-batch/pom.xml
index e81078568b..48d3baeae3 100644
--- a/spring-batch/pom.xml
+++ b/spring-batch/pom.xml
@@ -15,12 +15,30 @@
+
+
+
+
+ javax.xml.bind
+ jaxb-api
+ ${jaxb.version}
+ runtime
+
+
+
+ org.glassfish.jaxb
+ jaxb-runtime
+ ${jaxb.version}
+ runtime
+
+
org.xerial
sqlite-jdbc
${sqlite.version}
+
org.springframework
spring-oxm
@@ -32,40 +50,67 @@
+
org.springframework
spring-jdbc
${spring.version}
+
org.springframework.batch
spring-batch-core
${spring.batch.version}
+
org.springframework.batch
spring-batch-test
${spring.batch.version}
+
com.opencsv
opencsv
${opencsv.version}
+
+
+ org.springframework.boot
+ spring-boot-starter-batch
+ ${spring.boot.version}
+
+
+
+ org.hsqldb
+ hsqldb
+ 2.5.0
+ runtime
+
- org.awaitility
- awaitility
- ${awaitility.version}
- test
-
+ org.awaitility
+ awaitility
+ ${awaitility.version}
+ test
+
+
+
+ org.springframework.boot
+ spring-boot-starter-test
+ ${spring.boot.version}
+ test
+
+
- 5.0.3.RELEASE
- 4.0.0.RELEASE
+ 5.2.0.RELEASE
+ 4.2.0.RELEASE
+ 2.1.9.RELEASE
3.15.1
4.1
+ 2.3.1
3.1.1
diff --git a/spring-batch/src/main/java/org/baeldung/batch/App.java b/spring-batch/src/main/java/org/baeldung/batch/App.java
index 749591aa03..91b99ba571 100644
--- a/spring-batch/src/main/java/org/baeldung/batch/App.java
+++ b/spring-batch/src/main/java/org/baeldung/batch/App.java
@@ -1,5 +1,7 @@
package org.baeldung.batch;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
import org.springframework.batch.core.Job;
import org.springframework.batch.core.JobExecution;
import org.springframework.batch.core.JobParameters;
@@ -8,6 +10,9 @@ import org.springframework.batch.core.launch.JobLauncher;
import org.springframework.context.annotation.AnnotationConfigApplicationContext;
public class App {
+
+ private static final Logger LOGGER = LoggerFactory.getLogger(App.class);
+
public static void main(final String[] args) {
// Spring Java config
final AnnotationConfigApplicationContext context = new AnnotationConfigApplicationContext();
@@ -27,19 +32,16 @@ public class App {
final JobLauncher jobLauncher = (JobLauncher) context.getBean("jobLauncher");
final Job job = (Job) context.getBean(batchJobName);
- System.out.println("----------------------------------------");
- System.out.println("Starting the batch job: " + batchJobName);
+ LOGGER.info("Starting the batch job: {}", batchJobName);
try {
- // To enable multiple execution of a job with the same parameters
- JobParameters jobParameters = new JobParametersBuilder()
- .addString("jobID", String.valueOf(System.currentTimeMillis()))
- .toJobParameters();
+ // To enable multiple execution of a job with the same parameters
+ JobParameters jobParameters = new JobParametersBuilder().addString("jobID", String.valueOf(System.currentTimeMillis()))
+ .toJobParameters();
final JobExecution execution = jobLauncher.run(job, jobParameters);
- System.out.println("Job Status : " + execution.getStatus());
- System.out.println("Job succeeded");
+ LOGGER.info("Job Status : {}", execution.getStatus());
} catch (final Exception e) {
e.printStackTrace();
- System.out.println("Job failed");
+ LOGGER.error("Job failed {}", e.getMessage());
}
}
}
\ No newline at end of file
diff --git a/spring-batch/src/main/java/org/baeldung/batch/SpringBatchConfig.java b/spring-batch/src/main/java/org/baeldung/batch/SpringBatchConfig.java
index b318dda154..07dd65bcfd 100644
--- a/spring-batch/src/main/java/org/baeldung/batch/SpringBatchConfig.java
+++ b/spring-batch/src/main/java/org/baeldung/batch/SpringBatchConfig.java
@@ -86,9 +86,14 @@ public class SpringBatchConfig {
}
@Bean
- protected Step step1(@Qualifier("itemProcessor") ItemProcessor processor,
- ItemWriter writer) throws ParseException {
- return stepBuilderFactory.get("step1").chunk(10).reader(itemReader(inputCsv)).processor(processor).writer(writer).build();
+ protected Step step1(@Qualifier("itemProcessor") ItemProcessor processor, ItemWriter writer) throws ParseException {
+ return stepBuilderFactory
+ .get("step1")
+ . chunk(10)
+ .reader(itemReader(inputCsv))
+ .processor(processor)
+ .writer(writer)
+ .build();
}
@Bean(name = "firstBatchJob")
diff --git a/spring-batch/src/main/java/org/baeldung/batch/partitioner/SpringbatchPartitionerApp.java b/spring-batch/src/main/java/org/baeldung/batch/partitioner/SpringbatchPartitionerApp.java
index e56afc591c..f456135058 100644
--- a/spring-batch/src/main/java/org/baeldung/batch/partitioner/SpringbatchPartitionerApp.java
+++ b/spring-batch/src/main/java/org/baeldung/batch/partitioner/SpringbatchPartitionerApp.java
@@ -1,5 +1,7 @@
package org.baeldung.batch.partitioner;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
import org.springframework.batch.core.Job;
import org.springframework.batch.core.JobExecution;
import org.springframework.batch.core.JobParameters;
@@ -7,6 +9,9 @@ import org.springframework.batch.core.launch.JobLauncher;
import org.springframework.context.annotation.AnnotationConfigApplicationContext;
public class SpringbatchPartitionerApp {
+
+ private static final Logger LOGGER = LoggerFactory.getLogger(SpringbatchPartitionerApp.class);
+
public static void main(final String[] args) {
// Spring Java config
final AnnotationConfigApplicationContext context = new AnnotationConfigApplicationContext();
@@ -15,14 +20,13 @@ public class SpringbatchPartitionerApp {
final JobLauncher jobLauncher = (JobLauncher) context.getBean("jobLauncher");
final Job job = (Job) context.getBean("partitionerJob");
- System.out.println("Starting the batch job");
+ LOGGER.info("Starting the batch job");
try {
final JobExecution execution = jobLauncher.run(job, new JobParameters());
- System.out.println("Job Status : " + execution.getStatus());
- System.out.println("Job succeeded");
+ LOGGER.info("Job Status : {}", execution.getStatus());
} catch (final Exception e) {
e.printStackTrace();
- System.out.println("Job failed");
+ LOGGER.error("Job failed {}", e.getMessage());
}
}
}
\ No newline at end of file
diff --git a/spring-batch/src/main/java/org/baeldung/batchtesting/SpringBatchApplication.java b/spring-batch/src/main/java/org/baeldung/batchtesting/SpringBatchApplication.java
new file mode 100644
index 0000000000..39bfdfbee7
--- /dev/null
+++ b/spring-batch/src/main/java/org/baeldung/batchtesting/SpringBatchApplication.java
@@ -0,0 +1,43 @@
+package org.baeldung.batchtesting;
+
+import org.springframework.batch.core.Job;
+import org.springframework.batch.core.JobParametersBuilder;
+import org.springframework.batch.core.launch.JobLauncher;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.beans.factory.annotation.Qualifier;
+import org.springframework.beans.factory.annotation.Value;
+import org.springframework.boot.CommandLineRunner;
+import org.springframework.boot.SpringApplication;
+import org.springframework.boot.autoconfigure.SpringBootApplication;
+import org.springframework.context.annotation.PropertySource;
+
+@SpringBootApplication
+@PropertySource("classpath:batchtesting/application.properties")
+public class SpringBatchApplication implements CommandLineRunner {
+
+ @Autowired
+ private JobLauncher jobLauncher;
+
+ @Autowired
+ @Qualifier("transformBooksRecords")
+ private Job transformBooksRecordsJob;
+
+ @Value("${file.input}")
+ private String input;
+
+ @Value("${file.output}")
+ private String output;
+
+ public static void main(String[] args) {
+ SpringApplication.run(SpringBatchApplication.class, args);
+ }
+
+ @Override
+ public void run(String... args) throws Exception {
+ JobParametersBuilder paramsBuilder = new JobParametersBuilder();
+ paramsBuilder.addString("file.input", input);
+ paramsBuilder.addString("file.output", output);
+ jobLauncher.run(transformBooksRecordsJob, paramsBuilder.toJobParameters());
+ }
+
+}
diff --git a/spring-batch/src/main/java/org/baeldung/batchtesting/SpringBatchConfiguration.java b/spring-batch/src/main/java/org/baeldung/batchtesting/SpringBatchConfiguration.java
new file mode 100644
index 0000000000..2d891ad7da
--- /dev/null
+++ b/spring-batch/src/main/java/org/baeldung/batchtesting/SpringBatchConfiguration.java
@@ -0,0 +1,137 @@
+package org.baeldung.batchtesting;
+
+import java.io.IOException;
+
+import org.baeldung.batchtesting.model.Book;
+import org.baeldung.batchtesting.model.BookDetails;
+import org.baeldung.batchtesting.model.BookRecord;
+import org.baeldung.batchtesting.service.BookDetailsItemProcessor;
+import org.baeldung.batchtesting.service.BookItemProcessor;
+import org.baeldung.batchtesting.service.BookRecordFieldSetMapper;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
+import org.springframework.batch.core.Job;
+import org.springframework.batch.core.Step;
+import org.springframework.batch.core.configuration.annotation.EnableBatchProcessing;
+import org.springframework.batch.core.configuration.annotation.JobBuilderFactory;
+import org.springframework.batch.core.configuration.annotation.StepBuilderFactory;
+import org.springframework.batch.core.configuration.annotation.StepScope;
+import org.springframework.batch.item.ItemReader;
+import org.springframework.batch.item.ItemWriter;
+import org.springframework.batch.item.file.FlatFileItemReader;
+import org.springframework.batch.item.file.builder.FlatFileItemReaderBuilder;
+import org.springframework.batch.item.file.mapping.FieldSetMapper;
+import org.springframework.batch.item.json.JacksonJsonObjectMarshaller;
+import org.springframework.batch.item.json.JsonFileItemWriter;
+import org.springframework.batch.item.json.builder.JsonFileItemWriterBuilder;
+import org.springframework.batch.item.support.ListItemWriter;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.beans.factory.annotation.Value;
+import org.springframework.context.annotation.Bean;
+import org.springframework.context.annotation.Configuration;
+import org.springframework.core.io.FileSystemResource;
+
+
+@Configuration
+@EnableBatchProcessing
+public class SpringBatchConfiguration {
+
+ private static Logger LOGGER = LoggerFactory.getLogger(SpringBatchConfiguration.class);
+
+ private static final String[] TOKENS = { "bookname", "bookauthor", "bookformat", "isbn", "publishyear" };
+
+ @Autowired
+ private JobBuilderFactory jobBuilderFactory;
+
+ @Autowired
+ private StepBuilderFactory stepBuilderFactory;
+
+ @Bean
+ @StepScope
+ public FlatFileItemReader csvItemReader(@Value("#{jobParameters['file.input']}") String input) {
+ FlatFileItemReaderBuilder builder = new FlatFileItemReaderBuilder<>();
+ FieldSetMapper bookRecordFieldSetMapper = new BookRecordFieldSetMapper();
+ LOGGER.info("Configuring reader to input {}", input);
+ // @formatter:off
+ return builder
+ .name("bookRecordItemReader")
+ .resource(new FileSystemResource(input))
+ .delimited()
+ .names(TOKENS)
+ .fieldSetMapper(bookRecordFieldSetMapper)
+ .build();
+ // @formatter:on
+ }
+
+ @Bean
+ @StepScope
+ public JsonFileItemWriter jsonItemWriter(@Value("#{jobParameters['file.output']}") String output) throws IOException {
+ JsonFileItemWriterBuilder builder = new JsonFileItemWriterBuilder<>();
+ JacksonJsonObjectMarshaller marshaller = new JacksonJsonObjectMarshaller<>();
+ LOGGER.info("Configuring writer to output {}", output);
+ // @formatter:off
+ return builder
+ .name("bookItemWriter")
+ .jsonObjectMarshaller(marshaller)
+ .resource(new FileSystemResource(output))
+ .build();
+ // @formatter:on
+ }
+
+ @Bean
+ @StepScope
+ public ListItemWriter listItemWriter() {
+ return new ListItemWriter();
+ }
+
+ @Bean
+ @StepScope
+ public BookItemProcessor bookItemProcessor() {
+ return new BookItemProcessor();
+ }
+
+ @Bean
+ @StepScope
+ public BookDetailsItemProcessor bookDetailsItemProcessor() {
+ return new BookDetailsItemProcessor();
+ }
+
+ @Bean
+ public Step step1(ItemReader csvItemReader, ItemWriter jsonItemWriter) throws IOException {
+ // @formatter:off
+ return stepBuilderFactory
+ .get("step1")
+ . chunk(3)
+ .reader(csvItemReader)
+ .processor(bookItemProcessor())
+ .writer(jsonItemWriter)
+ .build();
+ // @formatter:on
+ }
+
+ @Bean
+ public Step step2(ItemReader csvItemReader, ItemWriter listItemWriter) {
+ // @formatter:off
+ return stepBuilderFactory
+ .get("step2")
+ . chunk(3)
+ .reader(csvItemReader)
+ .processor(bookDetailsItemProcessor())
+ .writer(listItemWriter)
+ .build();
+ // @formatter:on
+ }
+
+ @Bean(name = "transformBooksRecords")
+ public Job transformBookRecords(Step step1, Step step2) throws IOException {
+ // @formatter:off
+ return jobBuilderFactory
+ .get("transformBooksRecords")
+ .flow(step1)
+ .next(step2)
+ .end()
+ .build();
+ // @formatter:on
+ }
+
+}
diff --git a/spring-batch/src/main/java/org/baeldung/batchtesting/model/Book.java b/spring-batch/src/main/java/org/baeldung/batchtesting/model/Book.java
new file mode 100644
index 0000000000..3ea4a29e7f
--- /dev/null
+++ b/spring-batch/src/main/java/org/baeldung/batchtesting/model/Book.java
@@ -0,0 +1,33 @@
+package org.baeldung.batchtesting.model;
+
+public class Book {
+
+ private String author;
+
+ private String name;
+
+ public Book() {
+ }
+
+ public String getAuthor() {
+ return author;
+ }
+
+ public String getName() {
+ return name;
+ }
+
+ public void setAuthor(String author) {
+ this.author = author;
+ }
+
+ public void setName(String name) {
+ this.name = name;
+ }
+
+ @Override
+ public String toString() {
+ return "Book [author=" + author + ", name=" + name + "]";
+ }
+
+}
diff --git a/spring-batch/src/main/java/org/baeldung/batchtesting/model/BookDetails.java b/spring-batch/src/main/java/org/baeldung/batchtesting/model/BookDetails.java
new file mode 100644
index 0000000000..d9284fbc66
--- /dev/null
+++ b/spring-batch/src/main/java/org/baeldung/batchtesting/model/BookDetails.java
@@ -0,0 +1,50 @@
+package org.baeldung.batchtesting.model;
+
+public class BookDetails {
+
+ private String bookName;
+
+ private String bookFormat;
+
+ private String publishingYear;
+
+ private String bookISBN;
+
+ public String getBookName() {
+ return bookName;
+ }
+
+ public void setBookName(String bookName) {
+ this.bookName = bookName;
+ }
+
+ public String getBookFormat() {
+ return bookFormat;
+ }
+
+ public void setBookFormat(String bookFormat) {
+ this.bookFormat = bookFormat;
+ }
+
+ public String getPublishingYear() {
+ return publishingYear;
+ }
+
+ public void setPublishingYear(String publishingYear) {
+ this.publishingYear = publishingYear;
+ }
+
+ public String getBookISBN() {
+ return bookISBN;
+ }
+
+ public void setBookISBN(String bookISBN) {
+ this.bookISBN = bookISBN;
+ }
+
+ @Override
+ public String toString() {
+ return "BookDetails [bookName=" + bookName + ", bookFormat=" + bookFormat + ", publishingYear=" + publishingYear + ", bookISBN=" + bookISBN + "]";
+ }
+
+}
diff --git a/spring-batch/src/main/java/org/baeldung/batchtesting/model/BookRecord.java b/spring-batch/src/main/java/org/baeldung/batchtesting/model/BookRecord.java
new file mode 100644
index 0000000000..35fb40e878
--- /dev/null
+++ b/spring-batch/src/main/java/org/baeldung/batchtesting/model/BookRecord.java
@@ -0,0 +1,60 @@
+package org.baeldung.batchtesting.model;
+
+public class BookRecord {
+
+ private String bookName;
+
+ private String bookAuthor;
+
+ private String bookFormat;
+
+ private String bookISBN;
+
+ private String publishingYear;
+
+ public void setBookName(String bookName) {
+ this.bookName = bookName;
+ }
+
+ public void setBookAuthor(String bookAuthor) {
+ this.bookAuthor = bookAuthor;
+ }
+
+ public void setBookFormat(String bookFormat) {
+ this.bookFormat = bookFormat;
+ }
+
+ public void setBookISBN(String bookISBN) {
+ this.bookISBN = bookISBN;
+ }
+
+ public void setPublishingYear(String publishingYear) {
+ this.publishingYear = publishingYear;
+ }
+
+ public String getBookName() {
+ return bookName;
+ }
+
+ public String getBookAuthor() {
+ return bookAuthor;
+ }
+
+ public String getBookFormat() {
+ return bookFormat;
+ }
+
+ public String getBookISBN() {
+ return bookISBN;
+ }
+
+ public String getPublishingYear() {
+ return publishingYear;
+ }
+
+ @Override
+ public String toString() {
+ return "BookRecord [bookName=" + bookName + ", bookAuthor=" + bookAuthor + ", bookFormat=" + bookFormat + ", bookISBN=" + bookISBN + ", publishingYear=" + publishingYear + "]";
+ }
+
+}
diff --git a/spring-batch/src/main/java/org/baeldung/batchtesting/service/BookDetailsItemProcessor.java b/spring-batch/src/main/java/org/baeldung/batchtesting/service/BookDetailsItemProcessor.java
new file mode 100644
index 0000000000..f3800fee51
--- /dev/null
+++ b/spring-batch/src/main/java/org/baeldung/batchtesting/service/BookDetailsItemProcessor.java
@@ -0,0 +1,24 @@
+package org.baeldung.batchtesting.service;
+
+import org.baeldung.batchtesting.model.BookDetails;
+import org.baeldung.batchtesting.model.BookRecord;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
+import org.springframework.batch.item.ItemProcessor;
+
+public class BookDetailsItemProcessor implements ItemProcessor {
+
+ private static Logger LOGGER = LoggerFactory.getLogger(BookDetailsItemProcessor.class);
+
+ @Override
+ public BookDetails process(BookRecord item) throws Exception {
+ BookDetails bookDetails = new BookDetails();
+ bookDetails.setBookFormat(item.getBookFormat());
+ bookDetails.setBookISBN(item.getBookISBN());
+ bookDetails.setPublishingYear(item.getPublishingYear());
+ bookDetails.setBookName(item.getBookName());
+ LOGGER.info("Processing bookdetails {}", bookDetails);
+ return bookDetails;
+ }
+
+}
diff --git a/spring-batch/src/main/java/org/baeldung/batchtesting/service/BookItemProcessor.java b/spring-batch/src/main/java/org/baeldung/batchtesting/service/BookItemProcessor.java
new file mode 100644
index 0000000000..69e72ba1d3
--- /dev/null
+++ b/spring-batch/src/main/java/org/baeldung/batchtesting/service/BookItemProcessor.java
@@ -0,0 +1,22 @@
+package org.baeldung.batchtesting.service;
+
+import org.baeldung.batchtesting.model.Book;
+import org.baeldung.batchtesting.model.BookRecord;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
+import org.springframework.batch.item.ItemProcessor;
+
+public class BookItemProcessor implements ItemProcessor {
+
+ private static Logger LOGGER = LoggerFactory.getLogger(BookItemProcessor.class);
+
+ @Override
+ public Book process(BookRecord item) throws Exception {
+ Book book = new Book();
+ book.setAuthor(item.getBookAuthor());
+ book.setName(item.getBookName());
+ LOGGER.info("Processing book {}", book);
+ return book;
+ }
+
+}
diff --git a/spring-batch/src/main/java/org/baeldung/batchtesting/service/BookRecordFieldSetMapper.java b/spring-batch/src/main/java/org/baeldung/batchtesting/service/BookRecordFieldSetMapper.java
new file mode 100644
index 0000000000..cfc36fed7a
--- /dev/null
+++ b/spring-batch/src/main/java/org/baeldung/batchtesting/service/BookRecordFieldSetMapper.java
@@ -0,0 +1,22 @@
+package org.baeldung.batchtesting.service;
+
+import org.baeldung.batchtesting.model.BookRecord;
+import org.springframework.batch.item.file.mapping.FieldSetMapper;
+import org.springframework.batch.item.file.transform.FieldSet;
+import org.springframework.validation.BindException;
+
+
+public class BookRecordFieldSetMapper implements FieldSetMapper {
+
+ @Override
+ public BookRecord mapFieldSet(FieldSet fieldSet) throws BindException {
+ BookRecord bookRecord = new BookRecord();
+ bookRecord.setBookName(fieldSet.readString("bookname"));
+ bookRecord.setBookAuthor(fieldSet.readString("bookauthor"));
+ bookRecord.setBookFormat(fieldSet.readString("bookformat"));
+ bookRecord.setBookISBN(fieldSet.readString("isbn"));
+ bookRecord.setPublishingYear(fieldSet.readString("publishyear"));
+ return bookRecord;
+ }
+
+}
diff --git a/spring-batch/src/main/resources/batchtesting/application.properties b/spring-batch/src/main/resources/batchtesting/application.properties
new file mode 100644
index 0000000000..11af6f7d31
--- /dev/null
+++ b/spring-batch/src/main/resources/batchtesting/application.properties
@@ -0,0 +1,3 @@
+spring.batch.job.enabled=false
+file.input=src/main/resources/batchtesting/input.csv
+file.output=src/main/resources/batchtesting/output.json
\ No newline at end of file
diff --git a/spring-batch/src/main/resources/batchtesting/input.csv b/spring-batch/src/main/resources/batchtesting/input.csv
new file mode 100644
index 0000000000..5b873241d4
--- /dev/null
+++ b/spring-batch/src/main/resources/batchtesting/input.csv
@@ -0,0 +1,8 @@
+Foundation,Asimov I.,hardcover,ISBN 12839,2018
+Roadside Picnic,Strugatski A.,paperback,ISBN 12839,1988
+Norwegian Wood,Murakami H.,paperback,ISBN 12839,2015
+Davinci Code,Brown D.,hardcover,ISBN 12839,2005
+Ubik,Dick K. P.,hardcover,ISBN 12839,2013
+JFK,King S.,paperback,ISBN 12839,2017
+Contact,Sagan C.,paperback,ISBN 12839,2000
+Brave New World,Huxley A.,paperback,ISBN 12839,1986
diff --git a/spring-batch/src/main/resources/logback.xml b/spring-batch/src/main/resources/logback.xml
index 91d4292b8e..9a622ceb65 100644
--- a/spring-batch/src/main/resources/logback.xml
+++ b/spring-batch/src/main/resources/logback.xml
@@ -8,14 +8,17 @@
-
+
+
+
+
+
diff --git a/spring-batch/src/test/java/org/baeldung/SpringContextIntegrationTest.java b/spring-batch/src/test/java/org/baeldung/SpringContextIntegrationTest.java
index c3a9f74759..0898603083 100644
--- a/spring-batch/src/test/java/org/baeldung/SpringContextIntegrationTest.java
+++ b/spring-batch/src/test/java/org/baeldung/SpringContextIntegrationTest.java
@@ -5,8 +5,8 @@ import org.junit.Test;
public class SpringContextIntegrationTest {
- @Test
- public final void testMain() throws Exception {
+ @Test
+ public void testMain() throws Exception {
App.main(null);
- }
+ }
}
diff --git a/spring-batch/src/test/java/org/baeldung/SpringContextTest.java b/spring-batch/src/test/java/org/baeldung/SpringContextTest.java
index 0de9a07b0a..1a4f923a1e 100644
--- a/spring-batch/src/test/java/org/baeldung/SpringContextTest.java
+++ b/spring-batch/src/test/java/org/baeldung/SpringContextTest.java
@@ -5,8 +5,8 @@ import org.junit.Test;
public class SpringContextTest {
- @Test
- public final void testMain() throws Exception {
+ @Test
+ public void testMain() throws Exception {
App.main(null);
- }
+ }
}
diff --git a/spring-batch/src/test/java/org/baeldung/batchtesting/SpringBatchIntegrationTest.java b/spring-batch/src/test/java/org/baeldung/batchtesting/SpringBatchIntegrationTest.java
new file mode 100644
index 0000000000..d66da89ba4
--- /dev/null
+++ b/spring-batch/src/test/java/org/baeldung/batchtesting/SpringBatchIntegrationTest.java
@@ -0,0 +1,115 @@
+package org.baeldung.batchtesting;
+
+import static org.hamcrest.Matchers.is;
+import static org.junit.Assert.assertThat;
+
+import java.util.Collection;
+
+import org.junit.After;
+import org.junit.Test;
+import org.junit.runner.RunWith;
+import org.springframework.batch.core.ExitStatus;
+import org.springframework.batch.core.JobExecution;
+import org.springframework.batch.core.JobInstance;
+import org.springframework.batch.core.JobParameters;
+import org.springframework.batch.core.JobParametersBuilder;
+import org.springframework.batch.core.StepExecution;
+import org.springframework.batch.test.AssertFile;
+import org.springframework.batch.test.JobLauncherTestUtils;
+import org.springframework.batch.test.JobRepositoryTestUtils;
+import org.springframework.batch.test.context.SpringBatchTest;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.boot.autoconfigure.EnableAutoConfiguration;
+import org.springframework.core.io.FileSystemResource;
+import org.springframework.test.annotation.DirtiesContext;
+import org.springframework.test.annotation.DirtiesContext.ClassMode;
+import org.springframework.test.context.ContextConfiguration;
+import org.springframework.test.context.TestExecutionListeners;
+import org.springframework.test.context.junit4.SpringRunner;
+import org.springframework.test.context.support.DependencyInjectionTestExecutionListener;
+import org.springframework.test.context.support.DirtiesContextTestExecutionListener;
+
+@RunWith(SpringRunner.class)
+@SpringBatchTest
+@EnableAutoConfiguration
+@ContextConfiguration(classes = { SpringBatchConfiguration.class })
+@TestExecutionListeners({ DependencyInjectionTestExecutionListener.class, DirtiesContextTestExecutionListener.class })
+@DirtiesContext(classMode = ClassMode.AFTER_CLASS)
+public class SpringBatchIntegrationTest {
+
+ private static final String TEST_OUTPUT = "src/test/resources/output/actual-output.json";
+
+ private static final String EXPECTED_OUTPUT = "src/test/resources/output/expected-output.json";
+
+ private static final String TEST_INPUT = "src/test/resources/input/test-input.csv";
+
+ @Autowired
+ private JobLauncherTestUtils jobLauncherTestUtils;
+
+ @Autowired
+ private JobRepositoryTestUtils jobRepositoryTestUtils;
+
+ @After
+ public void cleanUp() {
+ jobRepositoryTestUtils.removeJobExecutions();
+ }
+
+ private JobParameters defaultJobParameters() {
+ JobParametersBuilder paramsBuilder = new JobParametersBuilder();
+ paramsBuilder.addString("file.input", TEST_INPUT);
+ paramsBuilder.addString("file.output", TEST_OUTPUT);
+ return paramsBuilder.toJobParameters();
+ }
+
+ @Test
+ public void givenReferenceOutput_whenJobExecuted_thenSuccess() throws Exception {
+ // given
+ FileSystemResource expectedResult = new FileSystemResource(EXPECTED_OUTPUT);
+ FileSystemResource actualResult = new FileSystemResource(TEST_OUTPUT);
+
+ // when
+ JobExecution jobExecution = jobLauncherTestUtils.launchJob(defaultJobParameters());
+ JobInstance actualJobInstance = jobExecution.getJobInstance();
+ ExitStatus actualJobExitStatus = jobExecution.getExitStatus();
+
+ // then
+ assertThat(actualJobInstance.getJobName(), is("transformBooksRecords"));
+ assertThat(actualJobExitStatus.getExitCode(), is("COMPLETED"));
+ AssertFile.assertFileEquals(expectedResult, actualResult);
+ }
+
+ @Test
+ public void givenReferenceOutput_whenStep1Executed_thenSuccess() throws Exception {
+
+ // given
+ FileSystemResource expectedResult = new FileSystemResource(EXPECTED_OUTPUT);
+ FileSystemResource actualResult = new FileSystemResource(TEST_OUTPUT);
+
+ // when
+ JobExecution jobExecution = jobLauncherTestUtils.launchStep("step1", defaultJobParameters());
+ Collection actualStepExecutions = jobExecution.getStepExecutions();
+ ExitStatus actualJobExitStatus = jobExecution.getExitStatus();
+
+ // then
+ assertThat(actualStepExecutions.size(), is(1));
+ assertThat(actualJobExitStatus.getExitCode(), is("COMPLETED"));
+ AssertFile.assertFileEquals(expectedResult, actualResult);
+ }
+
+ @Test
+ public void whenStep2Executed_thenSuccess() {
+
+ // when
+ JobExecution jobExecution = jobLauncherTestUtils.launchStep("step2", defaultJobParameters());
+ Collection actualStepExecutions = jobExecution.getStepExecutions();
+ ExitStatus actualExitStatus = jobExecution.getExitStatus();
+
+ // then
+ assertThat(actualStepExecutions.size(), is(1));
+ assertThat(actualExitStatus.getExitCode(), is("COMPLETED"));
+ actualStepExecutions.forEach(stepExecution -> {
+ assertThat(stepExecution.getWriteCount(), is(8));
+ });
+ }
+
+}
diff --git a/spring-batch/src/test/java/org/baeldung/batchtesting/SpringBatchStepScopeIntegrationTest.java b/spring-batch/src/test/java/org/baeldung/batchtesting/SpringBatchStepScopeIntegrationTest.java
new file mode 100644
index 0000000000..f7b888f0f9
--- /dev/null
+++ b/spring-batch/src/test/java/org/baeldung/batchtesting/SpringBatchStepScopeIntegrationTest.java
@@ -0,0 +1,116 @@
+package org.baeldung.batchtesting;
+
+import static org.hamcrest.Matchers.is;
+import static org.junit.Assert.assertThat;
+
+import java.util.Arrays;
+
+import org.baeldung.batchtesting.model.Book;
+import org.baeldung.batchtesting.model.BookRecord;
+import org.junit.After;
+import org.junit.Test;
+import org.junit.runner.RunWith;
+import org.springframework.batch.core.JobParameters;
+import org.springframework.batch.core.JobParametersBuilder;
+import org.springframework.batch.core.StepExecution;
+import org.springframework.batch.item.file.FlatFileItemReader;
+import org.springframework.batch.item.json.JsonFileItemWriter;
+import org.springframework.batch.test.AssertFile;
+import org.springframework.batch.test.JobRepositoryTestUtils;
+import org.springframework.batch.test.MetaDataInstanceFactory;
+import org.springframework.batch.test.StepScopeTestUtils;
+import org.springframework.batch.test.context.SpringBatchTest;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.boot.autoconfigure.EnableAutoConfiguration;
+import org.springframework.core.io.FileSystemResource;
+import org.springframework.test.annotation.DirtiesContext;
+import org.springframework.test.annotation.DirtiesContext.ClassMode;
+import org.springframework.test.context.ContextConfiguration;
+import org.springframework.test.context.TestExecutionListeners;
+import org.springframework.test.context.junit4.SpringRunner;
+import org.springframework.test.context.support.DependencyInjectionTestExecutionListener;
+import org.springframework.test.context.support.DirtiesContextTestExecutionListener;
+
+
+@RunWith(SpringRunner.class)
+@SpringBatchTest
+@EnableAutoConfiguration
+@ContextConfiguration(classes = { SpringBatchConfiguration.class })
+@TestExecutionListeners({ DependencyInjectionTestExecutionListener.class, DirtiesContextTestExecutionListener.class })
+@DirtiesContext(classMode = ClassMode.AFTER_CLASS)
+public class SpringBatchStepScopeIntegrationTest {
+
+ private static final String TEST_OUTPUT = "src/test/resources/output/actual-output.json";
+
+ private static final String EXPECTED_OUTPUT_ONE = "src/test/resources/output/expected-output-one.json";
+
+ private static final String TEST_INPUT_ONE = "src/test/resources/input/test-input-one.csv";
+ @Autowired
+ private JsonFileItemWriter jsonItemWriter;
+
+ @Autowired
+ private FlatFileItemReader itemReader;
+
+ @Autowired
+ private JobRepositoryTestUtils jobRepositoryTestUtils;
+
+ private JobParameters defaultJobParameters() {
+ JobParametersBuilder paramsBuilder = new JobParametersBuilder();
+ paramsBuilder.addString("file.input", TEST_INPUT_ONE);
+ paramsBuilder.addString("file.output", TEST_OUTPUT);
+ return paramsBuilder.toJobParameters();
+ }
+
+ @After
+ public void cleanUp() {
+ jobRepositoryTestUtils.removeJobExecutions();
+ }
+
+ @Test
+ public void givenMockedStep_whenReaderCalled_thenSuccess() throws Exception {
+
+ // given
+ StepExecution stepExecution = MetaDataInstanceFactory.createStepExecution(defaultJobParameters());
+
+ // when
+ StepScopeTestUtils.doInStepScope(stepExecution, () -> {
+ BookRecord bookRecord;
+ itemReader.open(stepExecution.getExecutionContext());
+ while ((bookRecord = itemReader.read()) != null) {
+
+ // then
+ assertThat(bookRecord.getBookName(), is("Foundation"));
+ assertThat(bookRecord.getBookAuthor(), is("Asimov I."));
+ assertThat(bookRecord.getBookISBN(), is("ISBN 12839"));
+ assertThat(bookRecord.getBookFormat(), is("hardcover"));
+ assertThat(bookRecord.getPublishingYear(), is("2018"));
+ }
+ itemReader.close();
+ return null;
+ });
+ }
+
+ @Test
+ public void givenMockedStep_whenWriterCalled_thenSuccess() throws Exception {
+
+ // given
+ FileSystemResource expectedResult = new FileSystemResource(EXPECTED_OUTPUT_ONE);
+ FileSystemResource actualResult = new FileSystemResource(TEST_OUTPUT);
+ Book demoBook = new Book();
+ demoBook.setAuthor("Grisham J.");
+ demoBook.setName("The Firm");
+ StepExecution stepExecution = MetaDataInstanceFactory.createStepExecution(defaultJobParameters());
+
+ // when
+ StepScopeTestUtils.doInStepScope(stepExecution, () -> {
+
+ jsonItemWriter.open(stepExecution.getExecutionContext());
+ jsonItemWriter.write(Arrays.asList(demoBook));
+ jsonItemWriter.close();
+ return null;
+ });
+
+ // then
+ AssertFile.assertFileEquals(expectedResult, actualResult);
+ }
+}
diff --git a/spring-batch/src/test/resources/input/test-input-one.csv b/spring-batch/src/test/resources/input/test-input-one.csv
new file mode 100644
index 0000000000..2c0a5b1103
--- /dev/null
+++ b/spring-batch/src/test/resources/input/test-input-one.csv
@@ -0,0 +1 @@
+Foundation,Asimov I.,hardcover,ISBN 12839,2018
\ No newline at end of file
diff --git a/spring-batch/src/test/resources/input/test-input.csv b/spring-batch/src/test/resources/input/test-input.csv
new file mode 100644
index 0000000000..5b873241d4
--- /dev/null
+++ b/spring-batch/src/test/resources/input/test-input.csv
@@ -0,0 +1,8 @@
+Foundation,Asimov I.,hardcover,ISBN 12839,2018
+Roadside Picnic,Strugatski A.,paperback,ISBN 12839,1988
+Norwegian Wood,Murakami H.,paperback,ISBN 12839,2015
+Davinci Code,Brown D.,hardcover,ISBN 12839,2005
+Ubik,Dick K. P.,hardcover,ISBN 12839,2013
+JFK,King S.,paperback,ISBN 12839,2017
+Contact,Sagan C.,paperback,ISBN 12839,2000
+Brave New World,Huxley A.,paperback,ISBN 12839,1986
diff --git a/spring-batch/src/test/resources/output/actual-output.json b/spring-batch/src/test/resources/output/actual-output.json
new file mode 100644
index 0000000000..1fd6cfcf37
--- /dev/null
+++ b/spring-batch/src/test/resources/output/actual-output.json
@@ -0,0 +1,3 @@
+[
+ {"author":"Grisham J.","name":"The Firm"}
+]
diff --git a/spring-batch/src/test/resources/output/expected-output-one.json b/spring-batch/src/test/resources/output/expected-output-one.json
new file mode 100644
index 0000000000..36c31c6d54
--- /dev/null
+++ b/spring-batch/src/test/resources/output/expected-output-one.json
@@ -0,0 +1,3 @@
+[
+ {"author":"Grisham J.","name":"The Firm"}
+]
\ No newline at end of file
diff --git a/spring-batch/src/test/resources/output/expected-output.json b/spring-batch/src/test/resources/output/expected-output.json
new file mode 100644
index 0000000000..32ad8b7ead
--- /dev/null
+++ b/spring-batch/src/test/resources/output/expected-output.json
@@ -0,0 +1,10 @@
+[
+ {"author":"Asimov I.","name":"Foundation"},
+ {"author":"Strugatski A.","name":"Roadside Picnic"},
+ {"author":"Murakami H.","name":"Norwegian Wood"},
+ {"author":"Brown D.","name":"Davinci Code"},
+ {"author":"Dick K. P.","name":"Ubik"},
+ {"author":"King S.","name":"JFK"},
+ {"author":"Sagan C.","name":"Contact"},
+ {"author":"Huxley A.","name":"Brave New World"}
+]
diff --git a/spring-boot-custom-starter/greeter-spring-boot-autoconfigure/pom.xml b/spring-boot-custom-starter/greeter-spring-boot-autoconfigure/pom.xml
index 74e786be99..4fe92e8e45 100644
--- a/spring-boot-custom-starter/greeter-spring-boot-autoconfigure/pom.xml
+++ b/spring-boot-custom-starter/greeter-spring-boot-autoconfigure/pom.xml
@@ -4,7 +4,7 @@
com.baeldung
greeter-spring-boot-autoconfigure
0.0.1-SNAPSHOT
- greeter-spring-boot-autoconfigure
+ greeter-spring-boot-autoconfigure
spring-boot-custom-starter
@@ -14,7 +14,6 @@
-
org.springframework.boot
spring-boot
@@ -42,12 +41,11 @@
- org.springframework.boot
- spring-boot-starter-test
- ${spring-boot.version}
- test
-
-
+ org.springframework.boot
+ spring-boot-starter-test
+ ${spring-boot.version}
+ test
+
@@ -68,7 +66,6 @@
UTF-8
1.5.2.RELEASE
0.0.1-SNAPSHOT
-
\ No newline at end of file
diff --git a/spring-boot-data/pom.xml b/spring-boot-data/pom.xml
index dc33d9f6ae..4c41eb8e3c 100644
--- a/spring-boot-data/pom.xml
+++ b/spring-boot-data/pom.xml
@@ -6,12 +6,14 @@
war
spring-boot-data
Spring Boot Data Module
+
parent-boot-2
com.baeldung
0.0.1-SNAPSHOT
../parent-boot-2
+
org.springframework.boot
@@ -49,7 +51,6 @@
spring-boot-starter-test
test
-
@@ -66,7 +67,6 @@
org.apache.maven.plugins
maven-war-plugin
-
pl.project13.maven
git-commit-id-plugin
diff --git a/spring-boot-di/src/main/java/com/baeldung/componentscan/filter/aspectj/ComponentScanAspectJFilterApp.java b/spring-boot-di/src/main/java/com/baeldung/componentscan/filter/aspectj/ComponentScanAspectJFilterApp.java
index aea7c0a2cd..5380e99ef3 100644
--- a/spring-boot-di/src/main/java/com/baeldung/componentscan/filter/aspectj/ComponentScanAspectJFilterApp.java
+++ b/spring-boot-di/src/main/java/com/baeldung/componentscan/filter/aspectj/ComponentScanAspectJFilterApp.java
@@ -5,10 +5,10 @@ import org.springframework.context.annotation.Configuration;
import org.springframework.context.annotation.FilterType;
@Configuration
-@ComponentScan(includeFilters = @ComponentScan.Filter(type = FilterType.ASPECTJ,
-pattern = "com.baeldung.componentscan.filter.aspectj.* "
- + "&& !(com.baeldung.componentscan.filter.aspectj.L* "
- + "|| com.baeldung.componentscan.filter.aspectj.C*)"))
+@ComponentScan(includeFilters = @ComponentScan.Filter(type = FilterType.ASPECTJ,
+ pattern = "com.baeldung.componentscan.filter.aspectj.* "
+ + "&& !(com.baeldung.componentscan.filter.aspectj.L* "
+ + "|| com.baeldung.componentscan.filter.aspectj.C*)"))
public class ComponentScanAspectJFilterApp {
public static void main(String[] args) {
}
diff --git a/spring-boot-di/src/main/java/com/baeldung/componentscan/filter/custom/Cat.java b/spring-boot-di/src/main/java/com/baeldung/componentscan/filter/custom/Cat.java
index 17a8e87b7a..5a4983b699 100644
--- a/spring-boot-di/src/main/java/com/baeldung/componentscan/filter/custom/Cat.java
+++ b/spring-boot-di/src/main/java/com/baeldung/componentscan/filter/custom/Cat.java
@@ -1,4 +1,4 @@
package com.baeldung.componentscan.filter.custom;
-public class Cat extends Pet {
+public class Cat {
}
diff --git a/spring-boot-di/src/main/java/com/baeldung/componentscan/filter/custom/ComponentScanCustomFilter.java b/spring-boot-di/src/main/java/com/baeldung/componentscan/filter/custom/ComponentScanCustomFilter.java
index 30ccb19276..fc21c28135 100644
--- a/spring-boot-di/src/main/java/com/baeldung/componentscan/filter/custom/ComponentScanCustomFilter.java
+++ b/spring-boot-di/src/main/java/com/baeldung/componentscan/filter/custom/ComponentScanCustomFilter.java
@@ -12,11 +12,8 @@ public class ComponentScanCustomFilter implements TypeFilter {
@Override
public boolean match(MetadataReader metadataReader, MetadataReaderFactory metadataReaderFactory) throws IOException {
ClassMetadata classMetadata = metadataReader.getClassMetadata();
- String superClass = classMetadata.getSuperClassName();
- if (Pet.class.getName()
- .equalsIgnoreCase(superClass)) {
- return true;
- }
- return false;
+ String fullyQualifiedName = classMetadata.getClassName();
+ String className = fullyQualifiedName.substring(fullyQualifiedName.lastIndexOf(".") + 1);
+ return className.length() > 5 ? true : false;
}
}
diff --git a/spring-boot-di/src/main/java/com/baeldung/componentscan/filter/custom/Pet.java b/spring-boot-di/src/main/java/com/baeldung/componentscan/filter/custom/Elephant.java
similarity index 68%
rename from spring-boot-di/src/main/java/com/baeldung/componentscan/filter/custom/Pet.java
rename to spring-boot-di/src/main/java/com/baeldung/componentscan/filter/custom/Elephant.java
index c9be5a39c2..8ae065a391 100644
--- a/spring-boot-di/src/main/java/com/baeldung/componentscan/filter/custom/Pet.java
+++ b/spring-boot-di/src/main/java/com/baeldung/componentscan/filter/custom/Elephant.java
@@ -1,4 +1,4 @@
package com.baeldung.componentscan.filter.custom;
-public class Pet {
+public class Elephant {
}
diff --git a/spring-boot-di/src/main/java/com/baeldung/componentscan/filter/regex/ComponentScanRegexFilterApp.java b/spring-boot-di/src/main/java/com/baeldung/componentscan/filter/regex/ComponentScanRegexFilterApp.java
index d2b7bd03fb..b7a3f5cd8a 100644
--- a/spring-boot-di/src/main/java/com/baeldung/componentscan/filter/regex/ComponentScanRegexFilterApp.java
+++ b/spring-boot-di/src/main/java/com/baeldung/componentscan/filter/regex/ComponentScanRegexFilterApp.java
@@ -5,7 +5,7 @@ import org.springframework.context.annotation.Configuration;
import org.springframework.context.annotation.FilterType;
@Configuration
-@ComponentScan(includeFilters = @ComponentScan.Filter(type = FilterType.REGEX, pattern = ".*[t]"))
+@ComponentScan(includeFilters = @ComponentScan.Filter(type = FilterType.REGEX, pattern = ".*(nt)"))
public class ComponentScanRegexFilterApp {
public static void main(String[] args) {
diff --git a/spring-boot-di/src/test/java/com/baeldung/componentscan/filter/custom/ComponentScanCustomFilterAppIntegrationTest.java b/spring-boot-di/src/test/java/com/baeldung/componentscan/filter/custom/ComponentScanCustomFilterAppIntegrationTest.java
index 097214a2cf..9902a620ad 100644
--- a/spring-boot-di/src/test/java/com/baeldung/componentscan/filter/custom/ComponentScanCustomFilterAppIntegrationTest.java
+++ b/spring-boot-di/src/test/java/com/baeldung/componentscan/filter/custom/ComponentScanCustomFilterAppIntegrationTest.java
@@ -1,18 +1,18 @@
package com.baeldung.componentscan.filter.custom;
-import static org.junit.Assert.assertThat;
-
-import java.util.Arrays;
-import java.util.List;
-import java.util.stream.Collectors;
-
import org.junit.Test;
import org.junit.runner.RunWith;
import org.springframework.boot.test.context.SpringBootTest;
import org.springframework.context.ApplicationContext;
import org.springframework.context.annotation.AnnotationConfigApplicationContext;
import org.springframework.test.context.junit4.SpringRunner;
+
+import java.util.Arrays;
+import java.util.List;
+import java.util.stream.Collectors;
+
import static org.hamcrest.CoreMatchers.*;
+import static org.junit.Assert.assertThat;
@RunWith(SpringRunner.class)
@SpringBootTest(classes = ComponentScanCustomFilterApp.class)
@@ -22,9 +22,10 @@ public class ComponentScanCustomFilterAppIntegrationTest {
public void whenCustomFilterIsUsed_thenComponentScanShouldRegisterBeanMatchingCustomFilter() {
ApplicationContext applicationContext = new AnnotationConfigApplicationContext(ComponentScanCustomFilterApp.class);
List beans = Arrays.stream(applicationContext.getBeanDefinitionNames())
- .filter(bean -> !bean.contains("org.springframework") && !bean.contains("componentScanCustomFilterApp"))
- .collect(Collectors.toList());
+ .filter(bean -> !bean.contains("org.springframework") && !bean.contains("componentScanCustomFilterApp")
+ && !bean.contains("componentScanCustomFilter"))
+ .collect(Collectors.toList());
assertThat(beans.size(), equalTo(1));
- assertThat(beans.get(0), equalTo("cat"));
+ assertThat(beans.get(0), equalTo("elephant"));
}
}
diff --git a/spring-boot-di/src/test/java/com/baeldung/componentscan/filter/regex/ComponentScanRegexFilterAppIntegrationTest.java b/spring-boot-di/src/test/java/com/baeldung/componentscan/filter/regex/ComponentScanRegexFilterAppIntegrationTest.java
index 3163581c37..38d6acd7f8 100644
--- a/spring-boot-di/src/test/java/com/baeldung/componentscan/filter/regex/ComponentScanRegexFilterAppIntegrationTest.java
+++ b/spring-boot-di/src/test/java/com/baeldung/componentscan/filter/regex/ComponentScanRegexFilterAppIntegrationTest.java
@@ -24,8 +24,7 @@ public class ComponentScanRegexFilterAppIntegrationTest {
List beans = Arrays.stream(applicationContext.getBeanDefinitionNames())
.filter(bean -> !bean.contains("org.springframework") && !bean.contains("componentScanRegexFilterApp"))
.collect(Collectors.toList());
- assertThat(beans.size(), equalTo(2));
- assertThat(beans.contains("cat"), equalTo(true));
+ assertThat(beans.size(), equalTo(1));
assertThat(beans.contains("elephant"), equalTo(true));
}
}
diff --git a/spring-boot-mvc/pom.xml b/spring-boot-mvc/pom.xml
index fee725847f..a414ed7bb2 100644
--- a/spring-boot-mvc/pom.xml
+++ b/spring-boot-mvc/pom.xml
@@ -89,6 +89,18 @@
provided
+
+
+ org.aspectj
+ aspectjrt
+ 1.9.1
+
+
+ org.aspectj
+ aspectjweaver
+ 1.9.1
+
+
diff --git a/spring-boot-mvc/src/main/java/com/baeldung/annotations/PerformanceAspect.java b/spring-boot-mvc/src/main/java/com/baeldung/annotations/PerformanceAspect.java
new file mode 100644
index 0000000000..534a2ba333
--- /dev/null
+++ b/spring-boot-mvc/src/main/java/com/baeldung/annotations/PerformanceAspect.java
@@ -0,0 +1,32 @@
+package com.baeldung.annotations;
+
+import org.aspectj.lang.ProceedingJoinPoint;
+import org.aspectj.lang.annotation.Around;
+import org.aspectj.lang.annotation.Aspect;
+import org.aspectj.lang.annotation.Pointcut;
+import org.springframework.stereotype.Component;
+
+import java.util.concurrent.TimeUnit;
+import java.util.logging.Logger;
+
+@Aspect
+@Component
+public class PerformanceAspect {
+
+ private static Logger logger = Logger.getLogger(PerformanceAspect.class.getName());
+
+ @Pointcut("within(@org.springframework.stereotype.Repository *)")
+ public void repositoryClassMethods() {
+ }
+
+ @Around("repositoryClassMethods()")
+ public Object measureMethodExecutionTime(ProceedingJoinPoint pjp) throws Throwable {
+ long start = System.nanoTime();
+ Object retval = pjp.proceed();
+ long end = System.nanoTime();
+ String methodName = pjp.getSignature().getName();
+ logger.info("Execution of " + methodName + " took " + TimeUnit.NANOSECONDS.toMillis(end - start) + " ms");
+ return retval;
+ }
+
+}
diff --git a/spring-boot/src/main/java/com/baeldung/graphql/Query.java b/spring-boot/src/main/java/com/baeldung/graphql/Query.java
index 7bb625798c..6988cdd37f 100644
--- a/spring-boot/src/main/java/com/baeldung/graphql/Query.java
+++ b/spring-boot/src/main/java/com/baeldung/graphql/Query.java
@@ -11,7 +11,7 @@ public class Query implements GraphQLQueryResolver {
this.postDao = postDao;
}
- public List recentPosts(int count, int offset) {
+ public List getRecentPosts(int count, int offset) {
return postDao.getRecentPosts(count, offset);
}
}
diff --git a/spring-cloud/spring-cloud-stream/spring-cloud-stream-kafka/pom.xml b/spring-cloud/spring-cloud-stream/spring-cloud-stream-kafka/pom.xml
index 18bc426364..2ba9d55358 100644
--- a/spring-cloud/spring-cloud-stream/spring-cloud-stream-kafka/pom.xml
+++ b/spring-cloud/spring-cloud-stream/spring-cloud-stream-kafka/pom.xml
@@ -2,8 +2,6 @@
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
4.0.0
-
-
spring-cloud-stream-kafka
spring-cloud-stream-kafka
Simple Spring Cloud Stream
@@ -15,13 +13,6 @@
2.1.5.RELEASE
-
- 1.8
- Greenwich.SR1
- 4.0.0
- 1.8.2
-
-
@@ -108,4 +99,11 @@
+
+ 1.8
+ Greenwich.SR1
+ 4.0.0
+ 1.8.2
+
+
diff --git a/spring-ejb/spring-ejb-remote/pom.xml b/spring-ejb/spring-ejb-remote/pom.xml
index 4a365180f2..633e0387b0 100644
--- a/spring-ejb/spring-ejb-remote/pom.xml
+++ b/spring-ejb/spring-ejb-remote/pom.xml
@@ -27,7 +27,6 @@
-
diff --git a/spring-mockito/src/main/resources/application.properties b/spring-mockito/src/main/resources/application.properties
index e69de29bb2..709574239b 100644
--- a/spring-mockito/src/main/resources/application.properties
+++ b/spring-mockito/src/main/resources/application.properties
@@ -0,0 +1 @@
+spring.main.allow-bean-definition-overriding=true
\ No newline at end of file
diff --git a/spring-mockito/src/test/java/com/baeldung/NameServiceTestConfiguration.java b/spring-mockito/src/test/java/com/baeldung/NameServiceTestConfiguration.java
index c50377a22a..2c63ff6203 100644
--- a/spring-mockito/src/test/java/com/baeldung/NameServiceTestConfiguration.java
+++ b/spring-mockito/src/test/java/com/baeldung/NameServiceTestConfiguration.java
@@ -11,7 +11,7 @@ import org.springframework.context.annotation.Profile;
public class NameServiceTestConfiguration {
@Bean
@Primary
- public NameService nameServiceTest() {
+ public NameService nameService() {
return Mockito.mock(NameService.class);
}
}
diff --git a/spring-mvc-basics/src/main/java/com/baeldung/config/AppInitializer.java b/spring-mvc-basics/src/main/java/com/baeldung/config/MainWebAppInitializer.java
similarity index 92%
rename from spring-mvc-basics/src/main/java/com/baeldung/config/AppInitializer.java
rename to spring-mvc-basics/src/main/java/com/baeldung/config/MainWebAppInitializer.java
index a76d955e4f..0a2368619a 100644
--- a/spring-mvc-basics/src/main/java/com/baeldung/config/AppInitializer.java
+++ b/spring-mvc-basics/src/main/java/com/baeldung/config/MainWebAppInitializer.java
@@ -9,7 +9,7 @@ import org.springframework.web.context.ContextLoaderListener;
import org.springframework.web.context.support.AnnotationConfigWebApplicationContext;
import org.springframework.web.servlet.DispatcherServlet;
-public class AppInitializer implements WebApplicationInitializer {
+public class MainWebAppInitializer implements WebApplicationInitializer {
@Override
public void onStartup(ServletContext container) throws ServletException {
diff --git a/spring-mvc-java/src/test/java/com/baeldung/web/controller/GreetControllerIntegrationTest.java b/spring-mvc-java/src/test/java/com/baeldung/web/controller/GreetControllerIntegrationTest.java
index bce5ab0a8c..079ea3e5cd 100644
--- a/spring-mvc-java/src/test/java/com/baeldung/web/controller/GreetControllerIntegrationTest.java
+++ b/spring-mvc-java/src/test/java/com/baeldung/web/controller/GreetControllerIntegrationTest.java
@@ -40,7 +40,7 @@ public class GreetControllerIntegrationTest {
}
@Test
- public void givenWAC_whenServletContext_thenItProvidesGreetController() {
+ public void givenWac_whenServletContext_thenItProvidesGreetController() {
final ServletContext servletContext = wac.getServletContext();
Assert.assertNotNull(servletContext);
Assert.assertTrue(servletContext instanceof MockServletContext);
@@ -59,7 +59,7 @@ public class GreetControllerIntegrationTest {
}
@Test
- public void givenGreetURIWithPathVariable_whenMockMVC_thenVerifyResponse() throws Exception {
+ public void givenGreetURIWithPathVariable_whenMockMVC_thenResponseOK() throws Exception {
this.mockMvc.perform(MockMvcRequestBuilders.get("/greetWithPathVariable/John")).andDo(print()).andExpect(MockMvcResultMatchers.status().isOk()).andExpect(MockMvcResultMatchers.content().contentType(CONTENT_TYPE))
.andExpect(MockMvcResultMatchers.jsonPath("$.message").value("Hello World John!!!"));
}
@@ -71,7 +71,7 @@ public class GreetControllerIntegrationTest {
}
@Test
- public void givenGreetURIWithQueryParameter_whenMockMVC_thenVerifyResponse() throws Exception {
+ public void givenGreetURIWithQueryParameter_whenMockMVC_thenResponseOK() throws Exception {
this.mockMvc.perform(MockMvcRequestBuilders.get("/greetWithQueryVariable").param("name", "John Doe")).andDo(print()).andExpect(MockMvcResultMatchers.status().isOk()).andExpect(MockMvcResultMatchers.content().contentType(CONTENT_TYPE))
.andExpect(MockMvcResultMatchers.jsonPath("$.message").value("Hello World John Doe!!!"));
}
@@ -83,7 +83,7 @@ public class GreetControllerIntegrationTest {
}
@Test
- public void givenGreetURIWithPostAndFormData_whenMockMVC_thenVerifyResponse() throws Exception {
+ public void givenGreetURIWithPostAndFormData_whenMockMVC_thenResponseOK() throws Exception {
this.mockMvc.perform(MockMvcRequestBuilders.post("/greetWithPostAndFormData").param("id", "1").param("name", "John Doe")).andDo(print()).andExpect(MockMvcResultMatchers.status().isOk())
.andExpect(MockMvcResultMatchers.content().contentType(CONTENT_TYPE)).andExpect(MockMvcResultMatchers.jsonPath("$.message").value("Hello World John Doe!!!")).andExpect(MockMvcResultMatchers.jsonPath("$.id").value(1));
}
diff --git a/spring-rest-compress/pom.xml b/spring-rest-compress/pom.xml
index d5afc5708d..ca00bdc659 100644
--- a/spring-rest-compress/pom.xml
+++ b/spring-rest-compress/pom.xml
@@ -1,66 +1,65 @@
- 4.0.0
+ xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
+ 4.0.0
+ com.baeldung
+ spring-rest-compress
+ 0.0.1-SNAPSHOT
+ spring-rest-compress
+
parent-boot-2
com.baeldung
0.0.1-SNAPSHOT
../parent-boot-2
- com.baeldung
- spring-rest-compress
- 0.0.1-SNAPSHOT
- spring-rest-compress
-
- 1.8
- 2.6
-
+
+
+ org.springframework.boot
+ spring-boot-starter-web
+
+
+ org.springframework.boot
+ spring-boot-starter-tomcat
+
+
+
-
+
+ org.springframework.boot
+ spring-boot-starter-jetty
+
-
- org.springframework.boot
- spring-boot-starter-web
-
-
- org.springframework.boot
- spring-boot-starter-tomcat
-
-
-
+
+ org.apache.httpcomponents
+ httpclient
+
-
- org.springframework.boot
- spring-boot-starter-jetty
-
+
+ commons-io
+ commons-io
+ ${commons-io.version}
+
-
- org.apache.httpcomponents
- httpclient
-
+
+ org.springframework.boot
+ spring-boot-starter-test
+ test
+
+
-
- commons-io
- commons-io
- ${commons-io.version}
-
-
-
- org.springframework.boot
- spring-boot-starter-test
- test
-
-
-
-
-
-
- org.springframework.boot
- spring-boot-maven-plugin
-
-
-
+
+
+
+ org.springframework.boot
+ spring-boot-maven-plugin
+
+
+
+
+ 1.8
+ 2.6
+
diff --git a/spring-rest-query-language/src/main/java/com/baeldung/web/controller/UserController.java b/spring-rest-query-language/src/main/java/com/baeldung/web/controller/UserController.java
index 101231c7ab..54e8618b27 100644
--- a/spring-rest-query-language/src/main/java/com/baeldung/web/controller/UserController.java
+++ b/spring-rest-query-language/src/main/java/com/baeldung/web/controller/UserController.java
@@ -61,7 +61,7 @@ public class UserController {
@RequestMapping(method = RequestMethod.GET, value = "/users")
@ResponseBody
- public List findAll(@RequestParam(value = "search", required = false) String search) {
+ public List search(@RequestParam(value = "search", required = false) String search) {
List params = new ArrayList();
if (search != null) {
Pattern pattern = Pattern.compile("(\\w+?)(:|<|>)(\\w+?),");
diff --git a/spring-rest/pom.xml b/spring-rest/pom.xml
index 555eafe40a..93160a9936 100644
--- a/spring-rest/pom.xml
+++ b/spring-rest/pom.xml
@@ -150,6 +150,11 @@
io.rest-assured
rest-assured
+
+ org.apache.httpcomponents
+ httpclient
+ ${httpclient.version}
+
@@ -276,6 +281,7 @@
2.2.0
3.5.11
3.1.0
+ 4.5.2
com.baeldung.sampleapp.config.MainApplication
diff --git a/spring-rest/src/main/java/com/baeldung/web/log/app/Application.java b/spring-rest/src/main/java/com/baeldung/web/log/app/Application.java
index e9d451b55e..6e2607339c 100644
--- a/spring-rest/src/main/java/com/baeldung/web/log/app/Application.java
+++ b/spring-rest/src/main/java/com/baeldung/web/log/app/Application.java
@@ -1,9 +1,19 @@
package com.baeldung.web.log.app;
+import javax.servlet.ServletContext;
+import javax.servlet.ServletException;
+import javax.servlet.ServletRegistration;
+
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.EnableAutoConfiguration;
import org.springframework.boot.autoconfigure.SpringBootApplication;
import org.springframework.context.annotation.ComponentScan;
+import org.springframework.web.context.ContextLoaderListener;
+import org.springframework.web.context.support.AnnotationConfigWebApplicationContext;
+import org.springframework.web.servlet.DispatcherServlet;
+
+import com.baeldung.web.log.config.CustomeRequestLoggingFilter;
+
import org.springframework.boot.web.servlet.support.SpringBootServletInitializer;
@EnableAutoConfiguration
@@ -14,4 +24,18 @@ public class Application extends SpringBootServletInitializer {
public static void main(final String[] args) {
SpringApplication.run(Application.class, args);
}
+
+ @Override
+ public void onStartup(ServletContext container) throws ServletException {
+
+ AnnotationConfigWebApplicationContext context = new AnnotationConfigWebApplicationContext();
+ context.setConfigLocation("com.baeldung.web.log");
+ container.addListener(new ContextLoaderListener(context));
+
+ ServletRegistration.Dynamic dispatcher = container.addServlet("dispatcher", new DispatcherServlet(context));
+ dispatcher.setLoadOnStartup(1);
+ dispatcher.addMapping("/");
+
+ container.addFilter("customRequestLoggingFilter", CustomeRequestLoggingFilter.class).addMappingForServletNames(null, false, "dispatcher");
+ }
}
\ No newline at end of file
diff --git a/spring-rest/src/main/java/com/baeldung/web/log/config/CustomeRequestLoggingFilter.java b/spring-rest/src/main/java/com/baeldung/web/log/config/CustomeRequestLoggingFilter.java
new file mode 100644
index 0000000000..3accb0a06e
--- /dev/null
+++ b/spring-rest/src/main/java/com/baeldung/web/log/config/CustomeRequestLoggingFilter.java
@@ -0,0 +1,12 @@
+package com.baeldung.web.log.config;
+
+import org.springframework.web.filter.CommonsRequestLoggingFilter;
+
+public class CustomeRequestLoggingFilter extends CommonsRequestLoggingFilter {
+
+ public CustomeRequestLoggingFilter() {
+ super.setIncludeQueryString(true);
+ super.setIncludePayload(true);
+ super.setMaxPayloadLength(10000);
+ }
+}
diff --git a/spring-rest/src/test/java/com/baeldung/web/controller/TaxiFareControllerIntegrationTest.java b/spring-rest/src/test/java/com/baeldung/web/controller/TaxiFareControllerIntegrationTest.java
new file mode 100644
index 0000000000..1cc098abf1
--- /dev/null
+++ b/spring-rest/src/test/java/com/baeldung/web/controller/TaxiFareControllerIntegrationTest.java
@@ -0,0 +1,35 @@
+package com.baeldung.web.controller;
+
+import static org.hamcrest.MatcherAssert.assertThat;
+import static org.hamcrest.Matchers.equalTo;
+
+import org.junit.Test;
+import org.junit.runner.RunWith;
+import org.springframework.boot.test.context.SpringBootTest;
+import org.springframework.boot.test.web.client.TestRestTemplate;
+import org.springframework.boot.web.server.LocalServerPort;
+import org.springframework.test.context.junit4.SpringRunner;
+
+import com.baeldung.web.log.app.Application;
+import com.baeldung.web.log.data.TaxiRide;
+
+@RunWith(SpringRunner.class)
+@SpringBootTest(classes = { Application.class}, webEnvironment = SpringBootTest.WebEnvironment.RANDOM_PORT)
+public class TaxiFareControllerIntegrationTest {
+
+ @LocalServerPort
+ private int port;
+
+ @Test
+ public void givenRequest_whenFetchTaxiFareRateCard_thanOK() {
+
+ String URL = "http://localhost:" + port + "/spring-rest";
+ TestRestTemplate testRestTemplate = new TestRestTemplate();
+ TaxiRide taxiRide = new TaxiRide(true, 10l);
+ String fare = testRestTemplate.postForObject(
+ URL + "/taxifare/calculate/",
+ taxiRide, String.class);
+
+ assertThat(fare, equalTo("200"));
+ }
+}
\ No newline at end of file
diff --git a/spring-security-core/pom.xml b/spring-security-core/pom.xml
index b144357e25..00d12ed7d2 100644
--- a/spring-security-core/pom.xml
+++ b/spring-security-core/pom.xml
@@ -4,7 +4,6 @@
com.baeldung
spring-security-core
0.1-SNAPSHOT
-
spring-security-core
war
diff --git a/spring-security-mvc-jsonview/pom.xml b/spring-security-mvc-jsonview/pom.xml
index a7f668ae8b..c21978203c 100644
--- a/spring-security-mvc-jsonview/pom.xml
+++ b/spring-security-mvc-jsonview/pom.xml
@@ -1,7 +1,6 @@
4.0.0
-
com.baeldung
spring-security-mvc-jsonview
0.1-SNAPSHOT
@@ -16,7 +15,6 @@
-
com.fasterxml.jackson.core
jackson-core
@@ -142,7 +140,6 @@
${json-path.version}
test
-
@@ -153,9 +150,7 @@
true
-
-
org.apache.maven.plugins
maven-war-plugin
@@ -200,15 +195,12 @@
-
-
1.6.1
2.4.0
-
\ No newline at end of file
diff --git a/spring-security-mvc-socket/pom.xml b/spring-security-mvc-socket/pom.xml
index f799a7fa9f..96031e02f7 100644
--- a/spring-security-mvc-socket/pom.xml
+++ b/spring-security-mvc-socket/pom.xml
@@ -2,7 +2,6 @@
4.0.0
-
com.baeldung.springsecuredsockets
spring-security-mvc-socket
1.0.0
@@ -151,35 +150,34 @@
- org.springframework.boot
- spring-boot-starter-test
- 1.5.10.RELEASE
- test
-
+ org.springframework.boot
+ spring-boot-starter-test
+ 1.5.10.RELEASE
+ test
+
-
-
-
- org.apache.tomcat.maven
- tomcat7-maven-plugin
- 2.2
-
- /spring-security-mvc-socket
-
-
-
- org.apache.maven.plugins
- maven-war-plugin
- 3.0.0
-
- src/main/webapp
- false
-
-
-
- spring-security-mvc-socket
+ spring-security-mvc-socket
+
+
+ org.apache.tomcat.maven
+ tomcat7-maven-plugin
+ 2.2
+
+ /spring-security-mvc-socket
+
+
+
+ org.apache.maven.plugins
+ maven-war-plugin
+ 3.0.0
+
+ src/main/webapp
+ false
+
+
+
diff --git a/spring-security-rest-custom/src/main/java/org/baeldung/web/controller/SecurityController5.java b/spring-security-rest-custom/src/main/java/org/baeldung/web/controller/GetUserWithCustomInterfaceController.java
similarity index 88%
rename from spring-security-rest-custom/src/main/java/org/baeldung/web/controller/SecurityController5.java
rename to spring-security-rest-custom/src/main/java/org/baeldung/web/controller/GetUserWithCustomInterfaceController.java
index e1a0c35cc6..b8521d6663 100644
--- a/spring-security-rest-custom/src/main/java/org/baeldung/web/controller/SecurityController5.java
+++ b/spring-security-rest-custom/src/main/java/org/baeldung/web/controller/GetUserWithCustomInterfaceController.java
@@ -9,12 +9,12 @@ import org.springframework.web.bind.annotation.RequestMethod;
import org.springframework.web.bind.annotation.ResponseBody;
@Controller
-public class SecurityController5 {
+public class GetUserWithCustomInterfaceController {
@Autowired
private IAuthenticationFacade authenticationFacade;
- public SecurityController5() {
+ public GetUserWithCustomInterfaceController() {
super();
}
diff --git a/spring-security-rest-custom/src/main/java/org/baeldung/web/controller/SecurityController4.java b/spring-security-rest-custom/src/main/java/org/baeldung/web/controller/GetUserWithHTTPServletRequestController.java
similarity index 86%
rename from spring-security-rest-custom/src/main/java/org/baeldung/web/controller/SecurityController4.java
rename to spring-security-rest-custom/src/main/java/org/baeldung/web/controller/GetUserWithHTTPServletRequestController.java
index 0434cc5fdc..ace5688697 100644
--- a/spring-security-rest-custom/src/main/java/org/baeldung/web/controller/SecurityController4.java
+++ b/spring-security-rest-custom/src/main/java/org/baeldung/web/controller/GetUserWithHTTPServletRequestController.java
@@ -10,9 +10,9 @@ import org.springframework.web.bind.annotation.RequestMethod;
import org.springframework.web.bind.annotation.ResponseBody;
@Controller
-public class SecurityController4 {
+public class GetUserWithHTTPServletRequestController {
- public SecurityController4() {
+ public GetUserWithHTTPServletRequestController() {
super();
}
diff --git a/spring-security-rest-custom/src/main/java/org/baeldung/web/controller/SecurityController2.java b/spring-security-rest-custom/src/main/java/org/baeldung/web/controller/SecurityController.java
similarity index 88%
rename from spring-security-rest-custom/src/main/java/org/baeldung/web/controller/SecurityController2.java
rename to spring-security-rest-custom/src/main/java/org/baeldung/web/controller/SecurityController.java
index ac02738d0c..7cf57a5275 100644
--- a/spring-security-rest-custom/src/main/java/org/baeldung/web/controller/SecurityController2.java
+++ b/spring-security-rest-custom/src/main/java/org/baeldung/web/controller/SecurityController.java
@@ -8,9 +8,9 @@ import org.springframework.web.bind.annotation.RequestMethod;
import org.springframework.web.bind.annotation.ResponseBody;
@Controller
-public class SecurityController2 {
+public class SecurityController {
- public SecurityController2() {
+ public SecurityController() {
super();
}
diff --git a/spring-thymeleaf-2/src/main/java/com/baeldung/thymeleaf/pathvariables/Detail.java b/spring-thymeleaf-2/src/main/java/com/baeldung/thymeleaf/pathvariables/Detail.java
new file mode 100644
index 0000000000..e9a95f133c
--- /dev/null
+++ b/spring-thymeleaf-2/src/main/java/com/baeldung/thymeleaf/pathvariables/Detail.java
@@ -0,0 +1,28 @@
+package com.baeldung.thymeleaf.pathvariables;
+
+public class Detail {
+ private int id;
+ private String description;
+
+ public Detail(int id, String description) {
+ super();
+ this.id = id;
+ this.description = description;
+ }
+
+ public int getId() {
+ return id;
+ }
+
+ public void setId(int id) {
+ this.id = id;
+ }
+
+ public String getDescription() {
+ return description;
+ }
+
+ public void setDescription(String description) {
+ this.description = description;
+ }
+}
diff --git a/spring-thymeleaf-2/src/main/java/com/baeldung/thymeleaf/pathvariables/Item.java b/spring-thymeleaf-2/src/main/java/com/baeldung/thymeleaf/pathvariables/Item.java
new file mode 100644
index 0000000000..173c107846
--- /dev/null
+++ b/spring-thymeleaf-2/src/main/java/com/baeldung/thymeleaf/pathvariables/Item.java
@@ -0,0 +1,39 @@
+package com.baeldung.thymeleaf.pathvariables;
+
+import java.util.List;
+
+public class Item {
+ private int id;
+ private String name;
+ private List details;
+
+ public Item(int id, String name) {
+ super();
+ this.id = id;
+ this.name = name;
+ }
+
+ public int getId() {
+ return id;
+ }
+
+ public void setId(int id) {
+ this.id = id;
+ }
+
+ public String getName() {
+ return name;
+ }
+
+ public void setName(String name) {
+ this.name = name;
+ }
+
+ public List getDetails() {
+ return details;
+ }
+
+ public void setDetails(List details) {
+ this.details = details;
+ }
+}
diff --git a/spring-thymeleaf-2/src/main/java/com/baeldung/thymeleaf/pathvariables/PathVariablesController.java b/spring-thymeleaf-2/src/main/java/com/baeldung/thymeleaf/pathvariables/PathVariablesController.java
new file mode 100644
index 0000000000..fde8bf1533
--- /dev/null
+++ b/spring-thymeleaf-2/src/main/java/com/baeldung/thymeleaf/pathvariables/PathVariablesController.java
@@ -0,0 +1,62 @@
+package com.baeldung.thymeleaf.pathvariables;
+
+import java.util.ArrayList;
+import java.util.List;
+
+import org.springframework.stereotype.Controller;
+import org.springframework.ui.Model;
+import org.springframework.web.bind.annotation.GetMapping;
+import org.springframework.web.bind.annotation.PathVariable;
+
+@Controller
+public class PathVariablesController {
+ private List- items = new ArrayList
- ();
+
+ public PathVariablesController() {
+ Item item1 = new Item(1, "First Item");
+ List item1Details = new ArrayList<>();
+ item1Details.add(new Detail(1, "Green"));
+ item1Details.add(new Detail(2, "Large"));
+ item1.setDetails(item1Details);
+ items.add(item1);
+
+ Item item2 = new Item(2, "Second Item");
+ List item2Details = new ArrayList<>();
+ item2Details.add(new Detail(1, "Red"));
+ item2Details.add(new Detail(2, "Medium"));
+ item2.setDetails(item2Details);
+ items.add(item2);
+ }
+
+ @GetMapping("/pathvars")
+ public String start(Model model) {
+ model.addAttribute("items", items);
+ return "pathvariables/index";
+ }
+
+ @GetMapping("/pathvars/single/{id}")
+ public String singlePathVariable(@PathVariable("id") int id, Model model) {
+ if (id == 1) {
+ model.addAttribute("item", new Item(1, "First Item"));
+ } else {
+ model.addAttribute("item", new Item(2, "Second Item"));
+ }
+
+ return "pathvariables/view";
+ }
+
+ @GetMapping("/pathvars/item/{itemId}/detail/{detailId}")
+ public String multiplePathVariable(@PathVariable("itemId") int itemId, @PathVariable("detailId") int detailId, Model model) {
+ for (Item item : items) {
+ if (item.getId() == itemId) {
+ model.addAttribute("item", item);
+ for (Detail detail : item.getDetails()) {
+ if (detail.getId() == detailId) {
+ model.addAttribute("detail", detail);
+ }
+ }
+ }
+ }
+ return "pathvariables/view";
+ }
+}
diff --git a/spring-thymeleaf-2/src/main/resources/templates/pathvariables/index.html b/spring-thymeleaf-2/src/main/resources/templates/pathvariables/index.html
new file mode 100644
index 0000000000..a3e34dcba1
--- /dev/null
+++ b/spring-thymeleaf-2/src/main/resources/templates/pathvariables/index.html
@@ -0,0 +1,22 @@
+
+
+
+
+PathVariables in Thymeleaf
+
+
+
Items
+
+
+
\ No newline at end of file
diff --git a/spring-thymeleaf-2/src/main/resources/templates/pathvariables/view.html b/spring-thymeleaf-2/src/main/resources/templates/pathvariables/view.html
new file mode 100644
index 0000000000..f635c1113c
--- /dev/null
+++ b/spring-thymeleaf-2/src/main/resources/templates/pathvariables/view.html
@@ -0,0 +1,19 @@
+
+
+
+
+Pathvariables in Thymeleaf
+
+
+ View Item
+
+
+
+
+ Detail
+
+
+
+
+
+
\ No newline at end of file
diff --git a/testing-modules/spring-testing/src/test/java/org/baeldung/mockito/MockAnnotationUnitTest.java b/testing-modules/spring-testing/src/test/java/org/baeldung/mockito/MockAnnotationUnitTest.java
index fcc646e8ea..1fa7f241e7 100644
--- a/testing-modules/spring-testing/src/test/java/org/baeldung/mockito/MockAnnotationUnitTest.java
+++ b/testing-modules/spring-testing/src/test/java/org/baeldung/mockito/MockAnnotationUnitTest.java
@@ -25,7 +25,7 @@ public class MockAnnotationUnitTest {
}
@Test
- public void givenCountMethodOfLocalMockVariableMocked_WhenCountInvoked_ThenMockedValueReturned() {
+ public void givenCountMethodMocked_WhenCountInvoked_ThenMockedValueReturned() {
UserRepository localMockRepository = Mockito.mock(UserRepository.class);
Mockito.when(localMockRepository.count()).thenReturn(111L);
diff --git a/wildfly/pom.xml b/wildfly/pom.xml
index bd2c93a633..d7dd1e835b 100644
--- a/wildfly/pom.xml
+++ b/wildfly/pom.xml
@@ -4,8 +4,9 @@
4.0.0
org.springframework
- gs-spring-boot-wildfly
+ wildfly
0.1.0
+ wildfly
war
@@ -38,11 +39,11 @@
spring-boot-starter-test
test
-
- javax.servlet
- javax.servlet-api
- provided
-
+
+ javax.servlet
+ javax.servlet-api
+ provided
+