diff --git a/core-java-modules/core-java-collections-array-list/README.md b/core-java-modules/core-java-collections-array-list/README.md
new file mode 100644
index 0000000000..3d1cdd5085
--- /dev/null
+++ b/core-java-modules/core-java-collections-array-list/README.md
@@ -0,0 +1,10 @@
+=========
+
+## Core Java Collections Array List Cookbooks and Examples
+
+### Relevant Articles:
+- [Immutable ArrayList in Java](http://www.baeldung.com/java-immutable-list)
+- [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
diff --git a/core-java-modules/core-java-collections-array-list/pom.xml b/core-java-modules/core-java-collections-array-list/pom.xml
new file mode 100644
index 0000000000..95a5f3ea36
--- /dev/null
+++ b/core-java-modules/core-java-collections-array-list/pom.xml
@@ -0,0 +1,46 @@
+
+ 4.0.0
+ core-java-collections-array-list
+ 0.1.0-SNAPSHOT
+ core-java-collections-array-list
+ jar
+
+
+ com.baeldung
+ parent-java
+ 0.0.1-SNAPSHOT
+ ../../parent-java
+
+
+
+
+ org.apache.commons
+ 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/src/main/java/com/baeldung/classcastexception/ClassCastException.java b/core-java-modules/core-java-collections-array-list/src/main/java/com/baeldung/classcastexception/ClassCastException.java
similarity index 100%
rename from core-java-modules/core-java-collections-list/src/main/java/com/baeldung/classcastexception/ClassCastException.java
rename to core-java-modules/core-java-collections-array-list/src/main/java/com/baeldung/classcastexception/ClassCastException.java
diff --git a/core-java-modules/core-java-collections-array-list/src/main/java/com/baeldung/java/list/Flower.java b/core-java-modules/core-java-collections-array-list/src/main/java/com/baeldung/java/list/Flower.java
new file mode 100644
index 0000000000..eb897ea72f
--- /dev/null
+++ b/core-java-modules/core-java-collections-array-list/src/main/java/com/baeldung/java/list/Flower.java
@@ -0,0 +1,28 @@
+package com.baeldung.java.list;
+
+public class Flower {
+
+ private String name;
+ private int petals;
+
+ public Flower(String name, int petals) {
+ this.name = name;
+ this.petals = petals;
+ }
+
+ public String getName() {
+ return name;
+ }
+
+ public void setName(String name) {
+ this.name = name;
+ }
+
+ public int getPetals() {
+ return petals;
+ }
+
+ public void setPetals(int petals) {
+ this.petals = petals;
+ }
+}
diff --git a/core-java-modules/core-java-collections-list/src/main/java/com/baeldung/list/multidimensional/ArrayListOfArrayList.java b/core-java-modules/core-java-collections-array-list/src/main/java/com/baeldung/list/multidimensional/ArrayListOfArrayList.java
similarity index 100%
rename from core-java-modules/core-java-collections-list/src/main/java/com/baeldung/list/multidimensional/ArrayListOfArrayList.java
rename to core-java-modules/core-java-collections-array-list/src/main/java/com/baeldung/list/multidimensional/ArrayListOfArrayList.java
diff --git a/core-java-modules/core-java-collections-list/src/main/java/com/baeldung/list/multidimensional/ThreeDimensionalArrayList.java b/core-java-modules/core-java-collections-array-list/src/main/java/com/baeldung/list/multidimensional/ThreeDimensionalArrayList.java
similarity index 100%
rename from core-java-modules/core-java-collections-list/src/main/java/com/baeldung/list/multidimensional/ThreeDimensionalArrayList.java
rename to core-java-modules/core-java-collections-array-list/src/main/java/com/baeldung/list/multidimensional/ThreeDimensionalArrayList.java
diff --git a/core-java-modules/core-java-collections-array-list/src/main/resources/logback.xml b/core-java-modules/core-java-collections-array-list/src/main/resources/logback.xml
new file mode 100644
index 0000000000..7d900d8ea8
--- /dev/null
+++ b/core-java-modules/core-java-collections-array-list/src/main/resources/logback.xml
@@ -0,0 +1,13 @@
+
+
+
+
+ %d{HH:mm:ss.SSS} [%thread] %-5level %logger{36} - %msg%n
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/core-java-modules/core-java-collections-list/src/test/java/com/baeldung/list/listoflist/AddElementsToListUnitTest.java b/core-java-modules/core-java-collections-array-list/src/test/java/com/baeldung/list/listoflist/AddElementsToListUnitTest.java
similarity index 100%
rename from core-java-modules/core-java-collections-list/src/test/java/com/baeldung/list/listoflist/AddElementsToListUnitTest.java
rename to core-java-modules/core-java-collections-array-list/src/test/java/com/baeldung/list/listoflist/AddElementsToListUnitTest.java
diff --git a/core-java-modules/core-java-collections-list/src/test/java/org/baeldung/java/collections/ArrayListUnitTest.java b/core-java-modules/core-java-collections-array-list/src/test/java/org/baeldung/java/collections/ArrayListUnitTest.java
similarity index 100%
rename from core-java-modules/core-java-collections-list/src/test/java/org/baeldung/java/collections/ArrayListUnitTest.java
rename to core-java-modules/core-java-collections-array-list/src/test/java/org/baeldung/java/collections/ArrayListUnitTest.java
diff --git a/core-java-modules/core-java-collections-list/src/test/java/org/baeldung/java/collections/CoreJavaCollectionsUnitTest.java b/core-java-modules/core-java-collections-array-list/src/test/java/org/baeldung/java/collections/CoreJavaCollectionsUnitTest.java
similarity index 100%
rename from core-java-modules/core-java-collections-list/src/test/java/org/baeldung/java/collections/CoreJavaCollectionsUnitTest.java
rename to core-java-modules/core-java-collections-array-list/src/test/java/org/baeldung/java/collections/CoreJavaCollectionsUnitTest.java
diff --git a/core-java-modules/core-java-collections-list-2/README.md b/core-java-modules/core-java-collections-list-2/README.md
new file mode 100644
index 0000000000..be10a0210c
--- /dev/null
+++ b/core-java-modules/core-java-collections-list-2/README.md
@@ -0,0 +1,17 @@
+=========
+
+## Core Java Collections List Cookbooks and Examples
+
+### Relevant Articles:
+- [Check If Two Lists are Equal in Java](http://www.baeldung.com/java-test-a-list-for-ordinality-and-equality)
+- [Java 8 Streams: Find Items From One List Based On Values From Another List](https://www.baeldung.com/java-streams-find-list-items)
+- [A Guide to the Java LinkedList](http://www.baeldung.com/java-linkedlist)
+- [Java List UnsupportedOperationException](http://www.baeldung.com/java-list-unsupported-operation-exception)
+- [Java List Initialization in One Line](https://www.baeldung.com/java-init-list-one-line)
+- [Ways to Iterate Over a List in Java](https://www.baeldung.com/java-iterate-list)
+- [Flattening Nested Collections in Java](http://www.baeldung.com/java-flatten-nested-collections)
+- [Intersection of Two Lists in Java](https://www.baeldung.com/java-lists-intersection)
+- [Determine If All Elements Are the Same in a Java List](https://www.baeldung.com/java-list-all-equal)
+- [List of Primitive Integer Values in Java](https://www.baeldung.com/java-list-primitive-int)
+- [Performance Comparison of Primitive Lists in Java](https://www.baeldung.com/java-list-primitive-performance)
+- [Filtering a Java Collection by a List](https://www.baeldung.com/java-filter-collection-by-list)
\ No newline at end of file
diff --git a/core-java-modules/core-java-collections-list-2/pom.xml b/core-java-modules/core-java-collections-list-2/pom.xml
new file mode 100644
index 0000000000..d200a3c90c
--- /dev/null
+++ b/core-java-modules/core-java-collections-list-2/pom.xml
@@ -0,0 +1,76 @@
+
+ 4.0.0
+ core-java-collections-list-2
+ 0.1.0-SNAPSHOT
+ core-java-collections-list-2
+ jar
+
+
+ com.baeldung
+ parent-java
+ 0.0.1-SNAPSHOT
+ ../../parent-java
+
+
+
+
+ org.apache.commons
+ 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
+ trove4j
+ ${trove4j.version}
+
+
+ it.unimi.dsi
+ fastutil
+ ${fastutil.version}
+
+
+ colt
+ colt
+ ${colt.version}
+
+
+
+ org.openjdk.jmh
+ jmh-core
+ ${jmh-core.version}
+
+
+ org.openjdk.jmh
+ jmh-generator-annprocess
+ ${jmh-core.version}
+
+
+
+
+ 4.1
+ 3.8.1
+ 3.11.1
+ 3.0.2
+ 8.1.0
+ 1.2.0
+
+
diff --git a/core-java-modules/core-java-collections-list/src/main/java/com/baeldung/allequalelements/VerifyAllEqualListElements.java b/core-java-modules/core-java-collections-list-2/src/main/java/com/baeldung/allequalelements/VerifyAllEqualListElements.java
similarity index 100%
rename from core-java-modules/core-java-collections-list/src/main/java/com/baeldung/allequalelements/VerifyAllEqualListElements.java
rename to core-java-modules/core-java-collections-list-2/src/main/java/com/baeldung/allequalelements/VerifyAllEqualListElements.java
diff --git a/core-java-modules/core-java-collections-list/src/main/java/com/baeldung/collection/filtering/Employee.java b/core-java-modules/core-java-collections-list-2/src/main/java/com/baeldung/collection/filtering/Employee.java
similarity index 100%
rename from core-java-modules/core-java-collections-list/src/main/java/com/baeldung/collection/filtering/Employee.java
rename to core-java-modules/core-java-collections-list-2/src/main/java/com/baeldung/collection/filtering/Employee.java
diff --git a/core-java-modules/core-java-collections-list/src/main/java/com/baeldung/java/list/WaysToIterate.java b/core-java-modules/core-java-collections-list-2/src/main/java/com/baeldung/java/list/WaysToIterate.java
similarity index 100%
rename from core-java-modules/core-java-collections-list/src/main/java/com/baeldung/java/list/WaysToIterate.java
rename to core-java-modules/core-java-collections-list-2/src/main/java/com/baeldung/java/list/WaysToIterate.java
diff --git a/core-java-modules/core-java-collections-list/src/main/java/com/baeldung/list/primitive/PrimitiveCollections.java b/core-java-modules/core-java-collections-list-2/src/main/java/com/baeldung/list/primitive/PrimitiveCollections.java
similarity index 100%
rename from core-java-modules/core-java-collections-list/src/main/java/com/baeldung/list/primitive/PrimitiveCollections.java
rename to core-java-modules/core-java-collections-list-2/src/main/java/com/baeldung/list/primitive/PrimitiveCollections.java
diff --git a/core-java-modules/core-java-collections-list/src/main/java/com/baeldung/list/primitive/PrimitivesListPerformance.java b/core-java-modules/core-java-collections-list-2/src/main/java/com/baeldung/list/primitive/PrimitivesListPerformance.java
similarity index 100%
rename from core-java-modules/core-java-collections-list/src/main/java/com/baeldung/list/primitive/PrimitivesListPerformance.java
rename to core-java-modules/core-java-collections-list-2/src/main/java/com/baeldung/list/primitive/PrimitivesListPerformance.java
diff --git a/core-java-modules/core-java-collections-list-2/src/main/resources/logback.xml b/core-java-modules/core-java-collections-list-2/src/main/resources/logback.xml
new file mode 100644
index 0000000000..7d900d8ea8
--- /dev/null
+++ b/core-java-modules/core-java-collections-list-2/src/main/resources/logback.xml
@@ -0,0 +1,13 @@
+
+
+
+
+ %d{HH:mm:ss.SSS} [%thread] %-5level %logger{36} - %msg%n
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/core-java-modules/core-java-collections-list/src/test/java/com/baeldung/allequalelements/VerifyAllEqualListElementsUnitTest.java b/core-java-modules/core-java-collections-list-2/src/test/java/com/baeldung/allequalelements/VerifyAllEqualListElementsUnitTest.java
similarity index 100%
rename from core-java-modules/core-java-collections-list/src/test/java/com/baeldung/allequalelements/VerifyAllEqualListElementsUnitTest.java
rename to core-java-modules/core-java-collections-list-2/src/test/java/com/baeldung/allequalelements/VerifyAllEqualListElementsUnitTest.java
diff --git a/core-java-modules/core-java-collections-list/src/test/java/com/baeldung/array/converter/ArrayConvertToListUnitTest.java b/core-java-modules/core-java-collections-list-2/src/test/java/com/baeldung/array/converter/ArrayConvertToListUnitTest.java
similarity index 100%
rename from core-java-modules/core-java-collections-list/src/test/java/com/baeldung/array/converter/ArrayConvertToListUnitTest.java
rename to core-java-modules/core-java-collections-list-2/src/test/java/com/baeldung/array/converter/ArrayConvertToListUnitTest.java
diff --git a/core-java-modules/core-java-collections-list/src/test/java/com/baeldung/collection/filtering/CollectionFilteringUnitTest.java b/core-java-modules/core-java-collections-list-2/src/test/java/com/baeldung/collection/filtering/CollectionFilteringUnitTest.java
similarity index 100%
rename from core-java-modules/core-java-collections-list/src/test/java/com/baeldung/collection/filtering/CollectionFilteringUnitTest.java
rename to core-java-modules/core-java-collections-list-2/src/test/java/com/baeldung/collection/filtering/CollectionFilteringUnitTest.java
diff --git a/core-java-modules/core-java-collections-list/src/test/java/com/baeldung/findItems/FindItemsBasedOnOtherStreamUnitTest.java b/core-java-modules/core-java-collections-list-2/src/test/java/com/baeldung/findItems/FindItemsBasedOnOtherStreamUnitTest.java
similarity index 100%
rename from core-java-modules/core-java-collections-list/src/test/java/com/baeldung/findItems/FindItemsBasedOnOtherStreamUnitTest.java
rename to core-java-modules/core-java-collections-list-2/src/test/java/com/baeldung/findItems/FindItemsBasedOnOtherStreamUnitTest.java
diff --git a/core-java-modules/core-java-collections-list/src/test/java/com/baeldung/java/listInitialization/ListInitializationUnitTest.java b/core-java-modules/core-java-collections-list-2/src/test/java/com/baeldung/java/listInitialization/ListInitializationUnitTest.java
similarity index 100%
rename from core-java-modules/core-java-collections-list/src/test/java/com/baeldung/java/listInitialization/ListInitializationUnitTest.java
rename to core-java-modules/core-java-collections-list-2/src/test/java/com/baeldung/java/listInitialization/ListInitializationUnitTest.java
diff --git a/core-java-modules/core-java-collections-list/src/test/java/com/baeldung/list/flattennestedlist/FlattenNestedListUnitTest.java b/core-java-modules/core-java-collections-list-2/src/test/java/com/baeldung/list/flattennestedlist/FlattenNestedListUnitTest.java
similarity index 100%
rename from core-java-modules/core-java-collections-list/src/test/java/com/baeldung/list/flattennestedlist/FlattenNestedListUnitTest.java
rename to core-java-modules/core-java-collections-list-2/src/test/java/com/baeldung/list/flattennestedlist/FlattenNestedListUnitTest.java
diff --git a/core-java-modules/core-java-collections-list/src/test/java/org/baeldung/java/lists/ListAssertJUnitTest.java b/core-java-modules/core-java-collections-list-2/src/test/java/org/baeldung/java/lists/ListAssertJUnitTest.java
similarity index 100%
rename from core-java-modules/core-java-collections-list/src/test/java/org/baeldung/java/lists/ListAssertJUnitTest.java
rename to core-java-modules/core-java-collections-list-2/src/test/java/org/baeldung/java/lists/ListAssertJUnitTest.java
diff --git a/core-java-modules/core-java-collections-list/src/test/java/org/baeldung/java/lists/ListJUnitTest.java b/core-java-modules/core-java-collections-list-2/src/test/java/org/baeldung/java/lists/ListJUnitTest.java
similarity index 100%
rename from core-java-modules/core-java-collections-list/src/test/java/org/baeldung/java/lists/ListJUnitTest.java
rename to core-java-modules/core-java-collections-list-2/src/test/java/org/baeldung/java/lists/ListJUnitTest.java
diff --git a/core-java-modules/core-java-collections-list/src/test/java/org/baeldung/java/lists/ListTestNgUnitTest.java b/core-java-modules/core-java-collections-list-2/src/test/java/org/baeldung/java/lists/ListTestNgUnitTest.java
similarity index 100%
rename from core-java-modules/core-java-collections-list/src/test/java/org/baeldung/java/lists/ListTestNgUnitTest.java
rename to core-java-modules/core-java-collections-list-2/src/test/java/org/baeldung/java/lists/ListTestNgUnitTest.java
diff --git a/core-java-modules/core-java-collections-list/src/test/java/org/baeldung/java/lists/README.md b/core-java-modules/core-java-collections-list-2/src/test/java/org/baeldung/java/lists/README.md
similarity index 100%
rename from core-java-modules/core-java-collections-list/src/test/java/org/baeldung/java/lists/README.md
rename to core-java-modules/core-java-collections-list-2/src/test/java/org/baeldung/java/lists/README.md
diff --git a/core-java-modules/core-java-collections-list/README.md b/core-java-modules/core-java-collections-list/README.md
index bfe06581c0..4bc1c5fb57 100644
--- a/core-java-modules/core-java-collections-list/README.md
+++ b/core-java-modules/core-java-collections-list/README.md
@@ -3,31 +3,14 @@
## Core Java Collections List Cookbooks and Examples
### Relevant Articles:
-- [Immutable ArrayList in Java](http://www.baeldung.com/java-immutable-list)
-- [Guide to the Java ArrayList](http://www.baeldung.com/java-arraylist)
- [Java – Get Random Item/Element From a List](http://www.baeldung.com/java-random-list-element)
- [Removing all nulls from a List in Java](http://www.baeldung.com/java-remove-nulls-from-list)
- [Removing all duplicates from a List in Java](http://www.baeldung.com/java-remove-duplicates-from-list)
- [How to TDD a List Implementation in Java](http://www.baeldung.com/java-test-driven-list)
- [Iterating Backward Through a List](http://www.baeldung.com/java-list-iterate-backwards)
-- [Add Multiple Items to an Java ArrayList](http://www.baeldung.com/java-add-items-array-list)
- [Remove the First Element from a List](http://www.baeldung.com/java-remove-first-element-from-list)
- [How to Find an Element in a List with Java](http://www.baeldung.com/find-list-element-java)
- [Copy a List to Another List in Java](http://www.baeldung.com/java-copy-list-to-another)
- [Finding Max/Min of a List or Collection](http://www.baeldung.com/java-collection-min-max)
- [Collections.emptyList() vs. New List Instance](https://www.baeldung.com/java-collections-emptylist-new-list)
-- [Remove All Occurrences of a Specific Value from a List](https://www.baeldung.com/java-remove-value-from-list)
-- [Check If Two Lists are Equal in Java](http://www.baeldung.com/java-test-a-list-for-ordinality-and-equality)
-- [Java 8 Streams: Find Items From One List Based On Values From Another List](https://www.baeldung.com/java-streams-find-list-items)
-- [A Guide to the Java LinkedList](http://www.baeldung.com/java-linkedlist)
-- [Java List UnsupportedOperationException](http://www.baeldung.com/java-list-unsupported-operation-exception)
-- [Java List Initialization in One Line](https://www.baeldung.com/java-init-list-one-line)
-- [Ways to Iterate Over a List in Java](https://www.baeldung.com/java-iterate-list)
-- [ClassCastException: Arrays$ArrayList cannot be cast to ArrayList](https://www.baeldung.com/java-classcastexception-arrays-arraylist)
-- [Flattening Nested Collections in Java](http://www.baeldung.com/java-flatten-nested-collections)
-- [Intersection of Two Lists in Java](https://www.baeldung.com/java-lists-intersection)
-- [Multi Dimensional ArrayList in Java](https://www.baeldung.com/java-multi-dimensional-arraylist)
-- [Determine If All Elements Are the Same in a Java List](https://www.baeldung.com/java-list-all-equal)
-- [List of Primitive Integer Values in Java](https://www.baeldung.com/java-list-primitive-int)
-- [Performance Comparison of Primitive Lists in Java](https://www.baeldung.com/java-list-primitive-performance)
-- [Filtering a Java Collection by a List](https://www.baeldung.com/java-filter-collection-by-list)
+- [Remove All Occurrences of a Specific Value from a List](https://www.baeldung.com/java-remove-value-from-list)
\ No newline at end of file
diff --git a/core-java-modules/core-java-collections-list/pom.xml b/core-java-modules/core-java-collections-list/pom.xml
index 1a0b1615c8..581505dc1e 100644
--- a/core-java-modules/core-java-collections-list/pom.xml
+++ b/core-java-modules/core-java-collections-list/pom.xml
@@ -36,42 +36,12 @@
${lombok.version}
provided
-
-
- net.sf.trove4j
- trove4j
- ${trove4j.version}
-
-
- it.unimi.dsi
- fastutil
- ${fastutil.version}
-
-
- colt
- colt
- ${colt.version}
-
-
-
- org.openjdk.jmh
- jmh-core
- ${jmh-core.version}
-
-
- org.openjdk.jmh
- jmh-generator-annprocess
- ${jmh-core.version}
-
4.1
3.8.1
- 1.7.0
3.11.1
3.0.2
- 8.1.0
- 1.2.0
diff --git a/java-strings-2/README.MD b/java-strings-2/README.MD
index edda92221d..85832fde37 100644
--- a/java-strings-2/README.MD
+++ b/java-strings-2/README.MD
@@ -2,3 +2,4 @@
- [Java Localization – Formatting Messages](https://www.baeldung.com/java-localization-messages-formatting)
- [Check If a String Contains a Substring](https://www.baeldung.com/java-string-contains-substring)
+- [Removing Stopwords from a String in Java](https://www.baeldung.com/java-string-remove-stopwords)
diff --git a/jee-7/src/test/java/com/baeldung/singleton/CarServiceIntegrationTest.java b/jee-7/src/test/java/com/baeldung/singleton/CarServiceIntegrationTest.java
index b828296dca..60a647f32c 100644
--- a/jee-7/src/test/java/com/baeldung/singleton/CarServiceIntegrationTest.java
+++ b/jee-7/src/test/java/com/baeldung/singleton/CarServiceIntegrationTest.java
@@ -10,6 +10,10 @@ import java.util.Map;
import java.util.UUID;
import javax.ejb.EJB;
+import javax.enterprise.context.spi.CreationalContext;
+import javax.enterprise.inject.spi.Bean;
+import javax.enterprise.inject.spi.BeanManager;
+import javax.enterprise.inject.spi.CDI;
import javax.inject.Inject;
import org.jboss.arquillian.container.test.api.Deployment;
@@ -47,68 +51,31 @@ public class CarServiceIntegrationTest {
@EJB
private CarServiceEjbSingleton carServiceEjbSingleton;
+
+ @Test
+ public void givenASingleton_whenGetBeanIsCalledTwice_thenTheSameInstanceIsReturned() {
+ CarServiceSingleton one = getBean(CarServiceSingleton.class);
+ CarServiceSingleton two = getBean(CarServiceSingleton.class);
+ assertTrue(one == two);
+ }
+
+ @Test
+ public void givenAPojo_whenGetBeanIsCalledTwice_thenDifferentInstancesAreReturned() {
+ CarServiceBean one = getBean(CarServiceBean.class);
+ CarServiceBean two = getBean(CarServiceBean.class);
+ assertTrue(one != two);
+ }
- private static Map idMap = new HashMap<>();
-
- @Before
- public void setUp() {
- // populate idMap only on first run
- if (idMap.isEmpty()) {
- LOG.info("setUp::carServiceBean: {}", carServiceBean.getId());
- idMap.put("carServiceBeanId", carServiceBean.getId());
-
- LOG.info("setUp::carServiceSingleton: {}", carServiceSingleton.getId());
- idMap.put("carServiceSingletonId", carServiceSingleton.getId());
-
- LOG.info("setUp::carServiceEjbSingleton: {}", carServiceEjbSingleton.getId());
- idMap.put("carServiceEjbSingletonId", carServiceEjbSingleton.getId());
- }
+ @SuppressWarnings("unchecked")
+ private T getBean(Class beanClass) {
+ BeanManager bm = CDI.current().getBeanManager();
+ Bean bean = (Bean) bm.getBeans(beanClass).iterator().next();
+ CreationalContext ctx = bm.createCreationalContext(bean);
+ return (T) bm.getReference(bean, beanClass, ctx);
}
@Test
- public void givenRun1_whenGetId_thenSingletonIdEqual() {
- int testRun = 1;
-
- assertNotNull(carServiceBean);
- assertNotNull(carServiceSingleton);
- assertNotNull(carServiceEjbSingleton);
-
- UUID carServiceBeanId = carServiceBean.getId();
- assertEquals(idMap.get("carServiceBeanId"), carServiceBeanId);
- LOG.info("Test run {}::carServiceBeanId: {}", testRun, carServiceBeanId);
-
- UUID carServiceSingletonId = carServiceSingleton.getId();
- assertEquals(idMap.get("carServiceSingletonId"), carServiceSingletonId);
- LOG.info("Test run {}::carServiceSingletonId: {}", testRun, carServiceSingletonId);
-
- UUID carServiceEjbSingletonId = carServiceEjbSingleton.getId();
- assertEquals(idMap.get("carServiceEjbSingletonId"), carServiceEjbSingletonId);
- LOG.info("Test run {}::carServiceEjbSingletonId: {}", testRun, carServiceEjbSingletonId);
- }
-
- @Test
- public void givenRun2_whenGetId_thenSingletonIdEqual() {
- int testRun = 2;
-
- assertNotNull(carServiceBean);
- assertNotNull(carServiceSingleton);
- assertNotNull(carServiceEjbSingleton);
-
- UUID carServiceBeanId = carServiceBean.getId();
- assertNotEquals(idMap.get("carServiceBeanId"), carServiceBeanId);
- LOG.info("Test run {}::carServiceBeanId: {}", testRun, carServiceBeanId);
-
- UUID carServiceSingletonId = carServiceSingleton.getId();
- assertEquals(idMap.get("carServiceSingletonId"), carServiceSingletonId);
- LOG.info("Test run {}::carServiceSingletonId: {}", testRun, carServiceSingletonId);
-
- UUID carServiceEjbSingletonId = carServiceEjbSingleton.getId();
- assertEquals(idMap.get("carServiceEjbSingletonId"), carServiceEjbSingletonId);
- LOG.info("Test run {}::carServiceEjbSingletonId: {}", testRun, carServiceEjbSingletonId);
- }
-
- @Test
- public void givenRun3_whenSingleton_thenNoLocking() {
+ public void givenCDI_whenConcurrentAccess_thenLockingIsNotProvided() {
for (int i = 0; i < 10; i++) {
new Thread(new Runnable() {
@Override
@@ -124,7 +91,7 @@ public class CarServiceIntegrationTest {
}
@Test
- public void givenRun4_whenEjb_thenLocking() {
+ public void givenEJB_whenConcurrentAccess_thenLockingIsProvided() {
for (int i = 0; i < 10; i++) {
new Thread(new Runnable() {
@Override
diff --git a/persistence-modules/spring-persistence-simple/README.md b/persistence-modules/spring-persistence-simple/README.md
index c656efaa3b..c408ff3c96 100644
--- a/persistence-modules/spring-persistence-simple/README.md
+++ b/persistence-modules/spring-persistence-simple/README.md
@@ -11,6 +11,7 @@
- [Transactions with Spring and JPA](https://www.baeldung.com/transaction-configuration-with-jpa-and-spring)
- [Introduction to Spring Data JPA](http://www.baeldung.com/the-persistence-layer-with-spring-data-jpa)
- [Spring Data JPA @Query](http://www.baeldung.com/spring-data-jpa-query)
+- [Spring JDBC](https://www.baeldung.com/spring-jdbc-jdbctemplate)
### Eclipse Config
diff --git a/persistence-modules/spring-persistence-simple/pom.xml b/persistence-modules/spring-persistence-simple/pom.xml
index 5f48b267b5..1afacab164 100644
--- a/persistence-modules/spring-persistence-simple/pom.xml
+++ b/persistence-modules/spring-persistence-simple/pom.xml
@@ -18,12 +18,6 @@
org.springframework
spring-orm
${org.springframework.version}
-
-
- commons-logging
- commons-logging
-
-
org.springframework
diff --git a/persistence-modules/spring-persistence-simple/src/main/java/org/baeldung/config/PersistenceConfig.java b/persistence-modules/spring-persistence-simple/src/main/java/com/baeldung/config/PersistenceConfig.java
similarity index 93%
rename from persistence-modules/spring-persistence-simple/src/main/java/org/baeldung/config/PersistenceConfig.java
rename to persistence-modules/spring-persistence-simple/src/main/java/com/baeldung/config/PersistenceConfig.java
index c454ab3b54..569971e311 100644
--- a/persistence-modules/spring-persistence-simple/src/main/java/org/baeldung/config/PersistenceConfig.java
+++ b/persistence-modules/spring-persistence-simple/src/main/java/com/baeldung/config/PersistenceConfig.java
@@ -1,11 +1,10 @@
-package org.baeldung.config;
+package com.baeldung.config;
import java.util.Properties;
import javax.sql.DataSource;
import org.apache.tomcat.dbcp.dbcp2.BasicDataSource;
-import org.baeldung.persistence.dao.IFooDao;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.ComponentScan;
@@ -24,15 +23,16 @@ import org.springframework.orm.jpa.vendor.HibernateJpaVendorAdapter;
import org.springframework.transaction.PlatformTransactionManager;
import org.springframework.transaction.annotation.EnableTransactionManagement;
-import com.baeldung.persistence.dao.impl.FooDao;
+import com.baeldung.hibernate.dao.FooDao;
+import com.baeldung.jpa.dao.IFooDao;
import com.google.common.base.Preconditions;
@Configuration
@EnableTransactionManagement
-@EnableJpaRepositories(basePackages = { "com.baeldung.persistence" }, transactionManagerRef = "jpaTransactionManager")
+@EnableJpaRepositories(basePackages = { "com.baeldung.hibernate.dao" }, transactionManagerRef = "jpaTransactionManager")
@EnableJpaAuditing
@PropertySource({ "classpath:persistence-mysql.properties" })
-@ComponentScan({ "com.baeldung.persistence" })
+@ComponentScan({ "com.baeldung.persistence", "com.baeldung.hibernate.dao" })
public class PersistenceConfig {
@Autowired
diff --git a/persistence-modules/spring-persistence-simple/src/main/java/org/baeldung/config/PersistenceJPAConfig.java b/persistence-modules/spring-persistence-simple/src/main/java/com/baeldung/config/PersistenceJPAConfig.java
similarity index 93%
rename from persistence-modules/spring-persistence-simple/src/main/java/org/baeldung/config/PersistenceJPAConfig.java
rename to persistence-modules/spring-persistence-simple/src/main/java/com/baeldung/config/PersistenceJPAConfig.java
index ec0d4bca3c..9fae34d99e 100644
--- a/persistence-modules/spring-persistence-simple/src/main/java/org/baeldung/config/PersistenceJPAConfig.java
+++ b/persistence-modules/spring-persistence-simple/src/main/java/com/baeldung/config/PersistenceJPAConfig.java
@@ -1,4 +1,4 @@
-package org.baeldung.config;
+package com.baeldung.config;
import java.util.Properties;
@@ -25,8 +25,8 @@ import com.google.common.base.Preconditions;
@Configuration
@EnableTransactionManagement
@PropertySource({ "classpath:persistence-h2.properties" })
-@ComponentScan({ "org.baeldung.persistence" })
-@EnableJpaRepositories(basePackages = "org.baeldung.persistence.dao")
+@ComponentScan({ "com.baeldung.persistence","com.baeldung.jpa.dao" })
+@EnableJpaRepositories(basePackages = "com.baeldung.jpa.dao")
public class PersistenceJPAConfig {
@Autowired
@@ -42,7 +42,7 @@ public class PersistenceJPAConfig {
public LocalContainerEntityManagerFactoryBean entityManagerFactory() {
final LocalContainerEntityManagerFactoryBean em = new LocalContainerEntityManagerFactoryBean();
em.setDataSource(dataSource());
- em.setPackagesToScan(new String[] { "org.baeldung.persistence.model" });
+ em.setPackagesToScan(new String[] { "com.baeldung.persistence.model" });
final HibernateJpaVendorAdapter vendorAdapter = new HibernateJpaVendorAdapter();
em.setJpaVendorAdapter(vendorAdapter);
diff --git a/persistence-modules/spring-persistence-simple/src/main/java/com/baeldung/persistence/dao/impl/FooDao.java b/persistence-modules/spring-persistence-simple/src/main/java/com/baeldung/hibernate/dao/FooDao.java
similarity index 69%
rename from persistence-modules/spring-persistence-simple/src/main/java/com/baeldung/persistence/dao/impl/FooDao.java
rename to persistence-modules/spring-persistence-simple/src/main/java/com/baeldung/hibernate/dao/FooDao.java
index 2d940527e1..67c10fe7fe 100644
--- a/persistence-modules/spring-persistence-simple/src/main/java/com/baeldung/persistence/dao/impl/FooDao.java
+++ b/persistence-modules/spring-persistence-simple/src/main/java/com/baeldung/hibernate/dao/FooDao.java
@@ -1,9 +1,9 @@
-package com.baeldung.persistence.dao.impl;
+package com.baeldung.hibernate.dao;
-import org.baeldung.persistence.dao.IFooDao;
-import org.baeldung.persistence.model.Foo;
+import com.baeldung.persistence.model.Foo;
import org.springframework.stereotype.Repository;
+import com.baeldung.jpa.dao.IFooDao;
import com.baeldung.persistence.dao.common.AbstractHibernateDao;
@Repository
diff --git a/spring-all/src/main/java/org/baeldung/jdbc/CustomSQLErrorCodeTranslator.java b/persistence-modules/spring-persistence-simple/src/main/java/com/baeldung/jdbc/CustomSQLErrorCodeTranslator.java
similarity index 88%
rename from spring-all/src/main/java/org/baeldung/jdbc/CustomSQLErrorCodeTranslator.java
rename to persistence-modules/spring-persistence-simple/src/main/java/com/baeldung/jdbc/CustomSQLErrorCodeTranslator.java
index 8a02fe6a53..48ddfb04b1 100644
--- a/spring-all/src/main/java/org/baeldung/jdbc/CustomSQLErrorCodeTranslator.java
+++ b/persistence-modules/spring-persistence-simple/src/main/java/com/baeldung/jdbc/CustomSQLErrorCodeTranslator.java
@@ -1,4 +1,4 @@
-package org.baeldung.jdbc;
+package com.baeldung.jdbc;
import java.sql.SQLException;
@@ -10,7 +10,7 @@ public class CustomSQLErrorCodeTranslator extends SQLErrorCodeSQLExceptionTransl
@Override
protected DataAccessException customTranslate(final String task, final String sql, final SQLException sqlException) {
- if (sqlException.getErrorCode() == -104) {
+ if (sqlException.getErrorCode() == 23505) {
return new DuplicateKeyException("Custome Exception translator - Integrity contraint voilation.", sqlException);
}
return null;
diff --git a/spring-all/src/main/java/org/baeldung/jdbc/Employee.java b/persistence-modules/spring-persistence-simple/src/main/java/com/baeldung/jdbc/Employee.java
similarity index 96%
rename from spring-all/src/main/java/org/baeldung/jdbc/Employee.java
rename to persistence-modules/spring-persistence-simple/src/main/java/com/baeldung/jdbc/Employee.java
index e9408eb7fa..a43eb265c7 100644
--- a/spring-all/src/main/java/org/baeldung/jdbc/Employee.java
+++ b/persistence-modules/spring-persistence-simple/src/main/java/com/baeldung/jdbc/Employee.java
@@ -1,4 +1,4 @@
-package org.baeldung.jdbc;
+package com.baeldung.jdbc;
public class Employee {
private int id;
diff --git a/spring-all/src/main/java/org/baeldung/jdbc/EmployeeDAO.java b/persistence-modules/spring-persistence-simple/src/main/java/com/baeldung/jdbc/EmployeeDAO.java
similarity index 99%
rename from spring-all/src/main/java/org/baeldung/jdbc/EmployeeDAO.java
rename to persistence-modules/spring-persistence-simple/src/main/java/com/baeldung/jdbc/EmployeeDAO.java
index 1f0e7b28ad..9ba4ebdb6d 100644
--- a/spring-all/src/main/java/org/baeldung/jdbc/EmployeeDAO.java
+++ b/persistence-modules/spring-persistence-simple/src/main/java/com/baeldung/jdbc/EmployeeDAO.java
@@ -1,4 +1,4 @@
-package org.baeldung.jdbc;
+package com.baeldung.jdbc;
import java.sql.PreparedStatement;
import java.sql.SQLException;
diff --git a/spring-all/src/main/java/org/baeldung/jdbc/EmployeeRowMapper.java b/persistence-modules/spring-persistence-simple/src/main/java/com/baeldung/jdbc/EmployeeRowMapper.java
similarity index 95%
rename from spring-all/src/main/java/org/baeldung/jdbc/EmployeeRowMapper.java
rename to persistence-modules/spring-persistence-simple/src/main/java/com/baeldung/jdbc/EmployeeRowMapper.java
index f926836c40..d09cd45dbc 100644
--- a/spring-all/src/main/java/org/baeldung/jdbc/EmployeeRowMapper.java
+++ b/persistence-modules/spring-persistence-simple/src/main/java/com/baeldung/jdbc/EmployeeRowMapper.java
@@ -1,4 +1,4 @@
-package org.baeldung.jdbc;
+package com.baeldung.jdbc;
import java.sql.ResultSet;
import java.sql.SQLException;
diff --git a/spring-all/src/main/java/org/baeldung/jdbc/config/SpringJdbcConfig.java b/persistence-modules/spring-persistence-simple/src/main/java/com/baeldung/jdbc/config/SpringJdbcConfig.java
similarity index 84%
rename from spring-all/src/main/java/org/baeldung/jdbc/config/SpringJdbcConfig.java
rename to persistence-modules/spring-persistence-simple/src/main/java/com/baeldung/jdbc/config/SpringJdbcConfig.java
index f7eb592366..ddc24e439f 100644
--- a/spring-all/src/main/java/org/baeldung/jdbc/config/SpringJdbcConfig.java
+++ b/persistence-modules/spring-persistence-simple/src/main/java/com/baeldung/jdbc/config/SpringJdbcConfig.java
@@ -1,4 +1,4 @@
-package org.baeldung.jdbc.config;
+package com.baeldung.jdbc.config;
import javax.sql.DataSource;
@@ -10,12 +10,12 @@ import org.springframework.jdbc.datasource.embedded.EmbeddedDatabaseBuilder;
import org.springframework.jdbc.datasource.embedded.EmbeddedDatabaseType;
@Configuration
-@ComponentScan("org.baeldung.jdbc")
+@ComponentScan("com.baeldung.jdbc")
public class SpringJdbcConfig {
@Bean
public DataSource dataSource() {
- return new EmbeddedDatabaseBuilder().setType(EmbeddedDatabaseType.HSQL).addScript("classpath:jdbc/schema.sql").addScript("classpath:jdbc/test-data.sql").build();
+ return new EmbeddedDatabaseBuilder().setType(EmbeddedDatabaseType.H2).addScript("classpath:jdbc/schema.sql").addScript("classpath:jdbc/test-data.sql").build();
}
// @Bean
diff --git a/persistence-modules/spring-persistence-simple/src/main/java/org/baeldung/persistence/dao/AbstractJpaDAO.java b/persistence-modules/spring-persistence-simple/src/main/java/com/baeldung/jpa/dao/AbstractJpaDAO.java
similarity index 96%
rename from persistence-modules/spring-persistence-simple/src/main/java/org/baeldung/persistence/dao/AbstractJpaDAO.java
rename to persistence-modules/spring-persistence-simple/src/main/java/com/baeldung/jpa/dao/AbstractJpaDAO.java
index decca35c08..4fbc8464bb 100644
--- a/persistence-modules/spring-persistence-simple/src/main/java/org/baeldung/persistence/dao/AbstractJpaDAO.java
+++ b/persistence-modules/spring-persistence-simple/src/main/java/com/baeldung/jpa/dao/AbstractJpaDAO.java
@@ -1,4 +1,4 @@
-package org.baeldung.persistence.dao;
+package com.baeldung.jpa.dao;
import java.io.Serializable;
import java.util.List;
diff --git a/persistence-modules/spring-persistence-simple/src/main/java/org/baeldung/persistence/dao/FooDao.java b/persistence-modules/spring-persistence-simple/src/main/java/com/baeldung/jpa/dao/FooDao.java
similarity index 73%
rename from persistence-modules/spring-persistence-simple/src/main/java/org/baeldung/persistence/dao/FooDao.java
rename to persistence-modules/spring-persistence-simple/src/main/java/com/baeldung/jpa/dao/FooDao.java
index 77978c5cf2..e79a44a0c2 100644
--- a/persistence-modules/spring-persistence-simple/src/main/java/org/baeldung/persistence/dao/FooDao.java
+++ b/persistence-modules/spring-persistence-simple/src/main/java/com/baeldung/jpa/dao/FooDao.java
@@ -1,6 +1,6 @@
-package org.baeldung.persistence.dao;
+package com.baeldung.jpa.dao;
-import org.baeldung.persistence.model.Foo;
+import com.baeldung.persistence.model.Foo;
import org.springframework.stereotype.Repository;
@Repository
diff --git a/persistence-modules/spring-persistence-simple/src/main/java/org/baeldung/persistence/dao/IFooDao.java b/persistence-modules/spring-persistence-simple/src/main/java/com/baeldung/jpa/dao/IFooDao.java
similarity index 74%
rename from persistence-modules/spring-persistence-simple/src/main/java/org/baeldung/persistence/dao/IFooDao.java
rename to persistence-modules/spring-persistence-simple/src/main/java/com/baeldung/jpa/dao/IFooDao.java
index ba188b9b3a..8140c56edd 100644
--- a/persistence-modules/spring-persistence-simple/src/main/java/org/baeldung/persistence/dao/IFooDao.java
+++ b/persistence-modules/spring-persistence-simple/src/main/java/com/baeldung/jpa/dao/IFooDao.java
@@ -1,8 +1,8 @@
-package org.baeldung.persistence.dao;
+package com.baeldung.jpa.dao;
import java.util.List;
-import org.baeldung.persistence.model.Foo;
+import com.baeldung.persistence.model.Foo;
public interface IFooDao {
diff --git a/persistence-modules/spring-persistence-simple/src/main/java/com/baeldung/persistence/dao/common/GenericJpaDao.java b/persistence-modules/spring-persistence-simple/src/main/java/com/baeldung/persistence/dao/common/GenericJpaDao.java
index 5bcebed761..d4da194f4d 100644
--- a/persistence-modules/spring-persistence-simple/src/main/java/com/baeldung/persistence/dao/common/GenericJpaDao.java
+++ b/persistence-modules/spring-persistence-simple/src/main/java/com/baeldung/persistence/dao/common/GenericJpaDao.java
@@ -2,11 +2,12 @@ package com.baeldung.persistence.dao.common;
import java.io.Serializable;
-import org.baeldung.persistence.dao.AbstractJpaDAO;
import org.springframework.beans.factory.config.BeanDefinition;
import org.springframework.context.annotation.Scope;
import org.springframework.stereotype.Repository;
+import com.baeldung.jpa.dao.AbstractJpaDAO;
+
@Repository
@Scope(BeanDefinition.SCOPE_PROTOTYPE)
public class GenericJpaDao extends AbstractJpaDAO implements IGenericDao {
diff --git a/persistence-modules/spring-persistence-simple/src/main/java/org/baeldung/persistence/model/Bar.java b/persistence-modules/spring-persistence-simple/src/main/java/com/baeldung/persistence/model/Bar.java
similarity index 98%
rename from persistence-modules/spring-persistence-simple/src/main/java/org/baeldung/persistence/model/Bar.java
rename to persistence-modules/spring-persistence-simple/src/main/java/com/baeldung/persistence/model/Bar.java
index b602e57562..5a88ecc6cf 100644
--- a/persistence-modules/spring-persistence-simple/src/main/java/org/baeldung/persistence/model/Bar.java
+++ b/persistence-modules/spring-persistence-simple/src/main/java/com/baeldung/persistence/model/Bar.java
@@ -1,4 +1,4 @@
-package org.baeldung.persistence.model;
+package com.baeldung.persistence.model;
import java.io.Serializable;
import java.util.List;
diff --git a/persistence-modules/spring-persistence-simple/src/main/java/org/baeldung/persistence/model/Foo.java b/persistence-modules/spring-persistence-simple/src/main/java/com/baeldung/persistence/model/Foo.java
similarity index 98%
rename from persistence-modules/spring-persistence-simple/src/main/java/org/baeldung/persistence/model/Foo.java
rename to persistence-modules/spring-persistence-simple/src/main/java/com/baeldung/persistence/model/Foo.java
index 30635e9ef2..009876f8cb 100644
--- a/persistence-modules/spring-persistence-simple/src/main/java/org/baeldung/persistence/model/Foo.java
+++ b/persistence-modules/spring-persistence-simple/src/main/java/com/baeldung/persistence/model/Foo.java
@@ -1,4 +1,4 @@
-package org.baeldung.persistence.model;
+package com.baeldung.persistence.model;
import java.io.Serializable;
diff --git a/persistence-modules/spring-persistence-simple/src/main/java/org/baeldung/persistence/service/FooService.java b/persistence-modules/spring-persistence-simple/src/main/java/com/baeldung/persistence/service/FooService.java
similarity index 81%
rename from persistence-modules/spring-persistence-simple/src/main/java/org/baeldung/persistence/service/FooService.java
rename to persistence-modules/spring-persistence-simple/src/main/java/com/baeldung/persistence/service/FooService.java
index 6d1bb0adbe..efe9743670 100644
--- a/persistence-modules/spring-persistence-simple/src/main/java/org/baeldung/persistence/service/FooService.java
+++ b/persistence-modules/spring-persistence-simple/src/main/java/com/baeldung/persistence/service/FooService.java
@@ -1,9 +1,9 @@
-package org.baeldung.persistence.service;
+package com.baeldung.persistence.service;
import java.util.List;
-import org.baeldung.persistence.dao.IFooDao;
-import org.baeldung.persistence.model.Foo;
+import com.baeldung.jpa.dao.IFooDao;
+import com.baeldung.persistence.model.Foo;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;
diff --git a/persistence-modules/spring-persistence-simple/src/main/java/org/baeldung/spring/data/persistence/config/PersistenceConfig.java b/persistence-modules/spring-persistence-simple/src/main/java/com/baeldung/spring/data/persistence/config/PersistenceConfig.java
similarity index 93%
rename from persistence-modules/spring-persistence-simple/src/main/java/org/baeldung/spring/data/persistence/config/PersistenceConfig.java
rename to persistence-modules/spring-persistence-simple/src/main/java/com/baeldung/spring/data/persistence/config/PersistenceConfig.java
index 067bac2018..717b9c3aa0 100644
--- a/persistence-modules/spring-persistence-simple/src/main/java/org/baeldung/spring/data/persistence/config/PersistenceConfig.java
+++ b/persistence-modules/spring-persistence-simple/src/main/java/com/baeldung/spring/data/persistence/config/PersistenceConfig.java
@@ -1,4 +1,4 @@
-package org.baeldung.spring.data.persistence.config;
+package com.baeldung.spring.data.persistence.config;
import java.util.Properties;
@@ -24,9 +24,9 @@ import com.google.common.base.Preconditions;
@Configuration
@EnableTransactionManagement
@PropertySource({ "classpath:persistence-${envTarget:h2}.properties" })
-@ComponentScan({ "org.baeldung.spring.data.persistence" })
+@ComponentScan({ "com.baeldung.spring.data.persistence" })
// @ImportResource("classpath*:springDataPersistenceConfig.xml")
-@EnableJpaRepositories(basePackages = "org.baeldung.spring.data.persistence.dao")
+@EnableJpaRepositories(basePackages = "com.baeldung.spring.data.persistence.dao")
public class PersistenceConfig {
@Autowired
@@ -40,7 +40,7 @@ public class PersistenceConfig {
public LocalContainerEntityManagerFactoryBean entityManagerFactory() {
final LocalContainerEntityManagerFactoryBean em = new LocalContainerEntityManagerFactoryBean();
em.setDataSource(dataSource());
- em.setPackagesToScan(new String[] { "org.baeldung.spring.data.persistence.model" });
+ em.setPackagesToScan(new String[] { "com.baeldung.spring.data.persistence.model" });
final HibernateJpaVendorAdapter vendorAdapter = new HibernateJpaVendorAdapter();
// vendorAdapter.set
diff --git a/persistence-modules/spring-persistence-simple/src/main/java/org/baeldung/spring/data/persistence/dao/IFooDao.java b/persistence-modules/spring-persistence-simple/src/main/java/com/baeldung/spring/data/persistence/dao/IFooDao.java
similarity index 77%
rename from persistence-modules/spring-persistence-simple/src/main/java/org/baeldung/spring/data/persistence/dao/IFooDao.java
rename to persistence-modules/spring-persistence-simple/src/main/java/com/baeldung/spring/data/persistence/dao/IFooDao.java
index 2f74096e14..d2b746dc8b 100644
--- a/persistence-modules/spring-persistence-simple/src/main/java/org/baeldung/spring/data/persistence/dao/IFooDao.java
+++ b/persistence-modules/spring-persistence-simple/src/main/java/com/baeldung/spring/data/persistence/dao/IFooDao.java
@@ -1,6 +1,6 @@
-package org.baeldung.spring.data.persistence.dao;
+package com.baeldung.spring.data.persistence.dao;
-import org.baeldung.spring.data.persistence.model.Foo;
+import com.baeldung.spring.data.persistence.model.Foo;
import org.springframework.data.jpa.repository.JpaRepository;
import org.springframework.data.jpa.repository.Query;
import org.springframework.data.repository.query.Param;
diff --git a/persistence-modules/spring-persistence-simple/src/main/java/org/baeldung/spring/data/persistence/dao/user/UserRepository.java b/persistence-modules/spring-persistence-simple/src/main/java/com/baeldung/spring/data/persistence/dao/user/UserRepository.java
similarity index 97%
rename from persistence-modules/spring-persistence-simple/src/main/java/org/baeldung/spring/data/persistence/dao/user/UserRepository.java
rename to persistence-modules/spring-persistence-simple/src/main/java/com/baeldung/spring/data/persistence/dao/user/UserRepository.java
index 4d01376af7..e8f95302ef 100644
--- a/persistence-modules/spring-persistence-simple/src/main/java/org/baeldung/spring/data/persistence/dao/user/UserRepository.java
+++ b/persistence-modules/spring-persistence-simple/src/main/java/com/baeldung/spring/data/persistence/dao/user/UserRepository.java
@@ -1,11 +1,11 @@
-package org.baeldung.spring.data.persistence.dao.user;
+package com.baeldung.spring.data.persistence.dao.user;
import java.time.LocalDate;
import java.util.Collection;
import java.util.List;
import java.util.stream.Stream;
-import org.baeldung.spring.data.persistence.model.User;
+import com.baeldung.spring.data.persistence.model.User;
import org.springframework.data.domain.Page;
import org.springframework.data.domain.Pageable;
import org.springframework.data.domain.Sort;
diff --git a/persistence-modules/spring-persistence-simple/src/main/java/org/baeldung/spring/data/persistence/dao/user/UserRepositoryCustom.java b/persistence-modules/spring-persistence-simple/src/main/java/com/baeldung/spring/data/persistence/dao/user/UserRepositoryCustom.java
similarity index 72%
rename from persistence-modules/spring-persistence-simple/src/main/java/org/baeldung/spring/data/persistence/dao/user/UserRepositoryCustom.java
rename to persistence-modules/spring-persistence-simple/src/main/java/com/baeldung/spring/data/persistence/dao/user/UserRepositoryCustom.java
index 1a874fb5e5..ff92159077 100644
--- a/persistence-modules/spring-persistence-simple/src/main/java/org/baeldung/spring/data/persistence/dao/user/UserRepositoryCustom.java
+++ b/persistence-modules/spring-persistence-simple/src/main/java/com/baeldung/spring/data/persistence/dao/user/UserRepositoryCustom.java
@@ -1,11 +1,11 @@
-package org.baeldung.spring.data.persistence.dao.user;
+package com.baeldung.spring.data.persistence.dao.user;
import java.util.Collection;
import java.util.List;
import java.util.Set;
import java.util.function.Predicate;
-import org.baeldung.spring.data.persistence.model.User;
+import com.baeldung.spring.data.persistence.model.User;
public interface UserRepositoryCustom {
List findUserByEmails(Set emails);
diff --git a/persistence-modules/spring-persistence-simple/src/main/java/org/baeldung/spring/data/persistence/dao/user/UserRepositoryCustomImpl.java b/persistence-modules/spring-persistence-simple/src/main/java/com/baeldung/spring/data/persistence/dao/user/UserRepositoryCustomImpl.java
similarity index 94%
rename from persistence-modules/spring-persistence-simple/src/main/java/org/baeldung/spring/data/persistence/dao/user/UserRepositoryCustomImpl.java
rename to persistence-modules/spring-persistence-simple/src/main/java/com/baeldung/spring/data/persistence/dao/user/UserRepositoryCustomImpl.java
index c28050401c..8bd8217e83 100644
--- a/persistence-modules/spring-persistence-simple/src/main/java/org/baeldung/spring/data/persistence/dao/user/UserRepositoryCustomImpl.java
+++ b/persistence-modules/spring-persistence-simple/src/main/java/com/baeldung/spring/data/persistence/dao/user/UserRepositoryCustomImpl.java
@@ -1,4 +1,4 @@
-package org.baeldung.spring.data.persistence.dao.user;
+package com.baeldung.spring.data.persistence.dao.user;
import java.util.ArrayList;
import java.util.Collection;
@@ -15,7 +15,7 @@ import javax.persistence.criteria.Path;
import javax.persistence.criteria.Predicate;
import javax.persistence.criteria.Root;
-import org.baeldung.spring.data.persistence.model.User;
+import com.baeldung.spring.data.persistence.model.User;
public class UserRepositoryCustomImpl implements UserRepositoryCustom {
diff --git a/persistence-modules/spring-persistence-simple/src/main/java/org/baeldung/spring/data/persistence/model/Foo.java b/persistence-modules/spring-persistence-simple/src/main/java/com/baeldung/spring/data/persistence/model/Foo.java
similarity index 96%
rename from persistence-modules/spring-persistence-simple/src/main/java/org/baeldung/spring/data/persistence/model/Foo.java
rename to persistence-modules/spring-persistence-simple/src/main/java/com/baeldung/spring/data/persistence/model/Foo.java
index 8f316ac55b..64bfe203d0 100644
--- a/persistence-modules/spring-persistence-simple/src/main/java/org/baeldung/spring/data/persistence/model/Foo.java
+++ b/persistence-modules/spring-persistence-simple/src/main/java/com/baeldung/spring/data/persistence/model/Foo.java
@@ -1,4 +1,4 @@
-package org.baeldung.spring.data.persistence.model;
+package com.baeldung.spring.data.persistence.model;
import java.io.Serializable;
diff --git a/persistence-modules/spring-persistence-simple/src/main/java/org/baeldung/spring/data/persistence/model/Possession.java b/persistence-modules/spring-persistence-simple/src/main/java/com/baeldung/spring/data/persistence/model/Possession.java
similarity index 97%
rename from persistence-modules/spring-persistence-simple/src/main/java/org/baeldung/spring/data/persistence/model/Possession.java
rename to persistence-modules/spring-persistence-simple/src/main/java/com/baeldung/spring/data/persistence/model/Possession.java
index da64e78552..44ca9fc62e 100644
--- a/persistence-modules/spring-persistence-simple/src/main/java/org/baeldung/spring/data/persistence/model/Possession.java
+++ b/persistence-modules/spring-persistence-simple/src/main/java/com/baeldung/spring/data/persistence/model/Possession.java
@@ -1,4 +1,4 @@
-package org.baeldung.spring.data.persistence.model;
+package com.baeldung.spring.data.persistence.model;
import javax.persistence.Entity;
import javax.persistence.GeneratedValue;
diff --git a/persistence-modules/spring-persistence-simple/src/main/java/org/baeldung/spring/data/persistence/model/User.java b/persistence-modules/spring-persistence-simple/src/main/java/com/baeldung/spring/data/persistence/model/User.java
similarity index 98%
rename from persistence-modules/spring-persistence-simple/src/main/java/org/baeldung/spring/data/persistence/model/User.java
rename to persistence-modules/spring-persistence-simple/src/main/java/com/baeldung/spring/data/persistence/model/User.java
index 486ed046e5..09f1092644 100644
--- a/persistence-modules/spring-persistence-simple/src/main/java/org/baeldung/spring/data/persistence/model/User.java
+++ b/persistence-modules/spring-persistence-simple/src/main/java/com/baeldung/spring/data/persistence/model/User.java
@@ -1,4 +1,4 @@
-package org.baeldung.spring.data.persistence.model;
+package com.baeldung.spring.data.persistence.model;
import javax.persistence.*;
diff --git a/persistence-modules/spring-persistence-simple/src/main/java/org/baeldung/spring/data/persistence/service/IFooService.java b/persistence-modules/spring-persistence-simple/src/main/java/com/baeldung/spring/data/persistence/service/IFooService.java
similarity index 58%
rename from persistence-modules/spring-persistence-simple/src/main/java/org/baeldung/spring/data/persistence/service/IFooService.java
rename to persistence-modules/spring-persistence-simple/src/main/java/com/baeldung/spring/data/persistence/service/IFooService.java
index 26d0171551..00e7ac01e4 100644
--- a/persistence-modules/spring-persistence-simple/src/main/java/org/baeldung/spring/data/persistence/service/IFooService.java
+++ b/persistence-modules/spring-persistence-simple/src/main/java/com/baeldung/spring/data/persistence/service/IFooService.java
@@ -1,6 +1,6 @@
-package org.baeldung.spring.data.persistence.service;
+package com.baeldung.spring.data.persistence.service;
-import org.baeldung.spring.data.persistence.model.Foo;
+import com.baeldung.spring.data.persistence.model.Foo;
import com.baeldung.persistence.dao.common.IOperations;
diff --git a/persistence-modules/spring-persistence-simple/src/main/java/org/baeldung/spring/data/persistence/service/common/AbstractService.java b/persistence-modules/spring-persistence-simple/src/main/java/com/baeldung/spring/data/persistence/service/common/AbstractService.java
similarity index 95%
rename from persistence-modules/spring-persistence-simple/src/main/java/org/baeldung/spring/data/persistence/service/common/AbstractService.java
rename to persistence-modules/spring-persistence-simple/src/main/java/com/baeldung/spring/data/persistence/service/common/AbstractService.java
index cf28d5e5c6..61c7d6fcaa 100644
--- a/persistence-modules/spring-persistence-simple/src/main/java/org/baeldung/spring/data/persistence/service/common/AbstractService.java
+++ b/persistence-modules/spring-persistence-simple/src/main/java/com/baeldung/spring/data/persistence/service/common/AbstractService.java
@@ -1,4 +1,4 @@
-package org.baeldung.spring.data.persistence.service.common;
+package com.baeldung.spring.data.persistence.service.common;
import java.io.Serializable;
import java.util.List;
diff --git a/persistence-modules/spring-persistence-simple/src/main/java/org/baeldung/spring/data/persistence/service/impl/FooService.java b/persistence-modules/spring-persistence-simple/src/main/java/com/baeldung/spring/data/persistence/service/impl/FooService.java
similarity index 70%
rename from persistence-modules/spring-persistence-simple/src/main/java/org/baeldung/spring/data/persistence/service/impl/FooService.java
rename to persistence-modules/spring-persistence-simple/src/main/java/com/baeldung/spring/data/persistence/service/impl/FooService.java
index b7ed496df1..cd566ba9f6 100644
--- a/persistence-modules/spring-persistence-simple/src/main/java/org/baeldung/spring/data/persistence/service/impl/FooService.java
+++ b/persistence-modules/spring-persistence-simple/src/main/java/com/baeldung/spring/data/persistence/service/impl/FooService.java
@@ -1,10 +1,10 @@
-package org.baeldung.spring.data.persistence.service.impl;
+package com.baeldung.spring.data.persistence.service.impl;
-import org.baeldung.spring.data.persistence.model.Foo;
-import org.baeldung.spring.data.persistence.dao.IFooDao;
-import org.baeldung.spring.data.persistence.service.IFooService;
-import org.baeldung.spring.data.persistence.service.common.AbstractService;
+import com.baeldung.spring.data.persistence.model.Foo;
+import com.baeldung.spring.data.persistence.dao.IFooDao;
+import com.baeldung.spring.data.persistence.service.IFooService;
+import com.baeldung.spring.data.persistence.service.common.AbstractService;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.data.repository.PagingAndSortingRepository;
import org.springframework.stereotype.Service;
diff --git a/persistence-modules/spring-persistence-simple/src/main/java/org/baeldung/util/IDUtil.java b/persistence-modules/spring-persistence-simple/src/main/java/com/baeldung/util/IDUtil.java
similarity index 96%
rename from persistence-modules/spring-persistence-simple/src/main/java/org/baeldung/util/IDUtil.java
rename to persistence-modules/spring-persistence-simple/src/main/java/com/baeldung/util/IDUtil.java
index 85ab623e5f..45e72e046d 100644
--- a/persistence-modules/spring-persistence-simple/src/main/java/org/baeldung/util/IDUtil.java
+++ b/persistence-modules/spring-persistence-simple/src/main/java/com/baeldung/util/IDUtil.java
@@ -1,4 +1,4 @@
-package org.baeldung.util;
+package com.baeldung.util;
import java.util.Random;
diff --git a/persistence-modules/spring-persistence-simple/src/main/resources/jdbc/schema.sql b/persistence-modules/spring-persistence-simple/src/main/resources/jdbc/schema.sql
new file mode 100644
index 0000000000..c86d35cdae
--- /dev/null
+++ b/persistence-modules/spring-persistence-simple/src/main/resources/jdbc/schema.sql
@@ -0,0 +1,7 @@
+CREATE TABLE EMPLOYEE
+(
+ ID int NOT NULL PRIMARY KEY,
+ FIRST_NAME varchar(255),
+ LAST_NAME varchar(255),
+ ADDRESS varchar(255),
+);
\ No newline at end of file
diff --git a/persistence-modules/spring-persistence-simple/src/main/resources/jdbc/springJdbc-config.xml b/persistence-modules/spring-persistence-simple/src/main/resources/jdbc/springJdbc-config.xml
new file mode 100644
index 0000000000..e3d7452eb1
--- /dev/null
+++ b/persistence-modules/spring-persistence-simple/src/main/resources/jdbc/springJdbc-config.xml
@@ -0,0 +1,19 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/persistence-modules/spring-persistence-simple/src/main/resources/jdbc/test-data.sql b/persistence-modules/spring-persistence-simple/src/main/resources/jdbc/test-data.sql
new file mode 100644
index 0000000000..b9ef8fec25
--- /dev/null
+++ b/persistence-modules/spring-persistence-simple/src/main/resources/jdbc/test-data.sql
@@ -0,0 +1,7 @@
+INSERT INTO EMPLOYEE VALUES (1, 'James', 'Gosling', 'Canada');
+
+INSERT INTO EMPLOYEE VALUES (2, 'Donald', 'Knuth', 'USA');
+
+INSERT INTO EMPLOYEE VALUES (3, 'Linus', 'Torvalds', 'Finland');
+
+INSERT INTO EMPLOYEE VALUES (4, 'Dennis', 'Ritchie', 'USA');
\ No newline at end of file
diff --git a/persistence-modules/spring-persistence-simple/src/main/resources/persistence.xml b/persistence-modules/spring-persistence-simple/src/main/resources/persistence.xml
index 6304fa0a65..57687c306d 100644
--- a/persistence-modules/spring-persistence-simple/src/main/resources/persistence.xml
+++ b/persistence-modules/spring-persistence-simple/src/main/resources/persistence.xml
@@ -11,7 +11,7 @@
-
+
- 2.21.0
+ 2.22.0
3.7.0
1.6.0
1.8
@@ -1549,8 +1548,8 @@
1.2
2.9.8
1.3
- 1.2.0
- 5.2.0
+ 1.4.2
+ 5.4.2
0.3.1
2.5.1
0.0.1
diff --git a/spring-all/README.md b/spring-all/README.md
index b0805e5477..b5e91d8d60 100644
--- a/spring-all/README.md
+++ b/spring-all/README.md
@@ -33,5 +33,4 @@ The "REST With Spring" Classes: http://bit.ly/restwithspring
- [Spring @Primary Annotation](http://www.baeldung.com/spring-primary)
- [Spring Events](https://www.baeldung.com/spring-events)
- [Spring Null-Safety Annotations](https://www.baeldung.com/spring-null-safety-annotations)
-- [Spring JDBC](https://www.baeldung.com/spring-jdbc-jdbctemplate)
- [Using @Autowired in Abstract Classes](https://www.baeldung.com/spring-autowired-abstract-class)
diff --git a/spring-cloud/spring-cloud-contract/pom.xml b/spring-cloud/spring-cloud-contract/pom.xml
index 4d4e8ad2c3..ea71891648 100644
--- a/spring-cloud/spring-cloud-contract/pom.xml
+++ b/spring-cloud/spring-cloud-contract/pom.xml
@@ -19,4 +19,45 @@
spring-cloud-contract-consumer
+
+
+
+ org.springframework.boot
+ spring-boot-starter-web
+ ${spring-boot.version}
+
+
+ org.springframework.boot
+ spring-boot-starter-data-rest
+ ${spring-boot.version}
+
+
+
+ org.springframework.cloud
+ spring-cloud-contract-wiremock
+ ${spring-cloud.version}
+ test
+
+
+ org.springframework.cloud
+ spring-cloud-contract-stub-runner
+ ${spring-cloud.version}
+ test
+
+
+ org.springframework.cloud
+ spring-cloud-starter-contract-verifier
+ ${spring-cloud.version}
+ test
+
+
+
+
+
+ UTF-8
+ UTF-8
+ 1.8
+ 2.1.1.RELEASE
+ 2.1.4.RELEASE
+
\ No newline at end of file
diff --git a/spring-cloud/spring-cloud-contract/spring-cloud-contract-consumer/pom.xml b/spring-cloud/spring-cloud-contract/spring-cloud-contract-consumer/pom.xml
index afd045189c..3b711c58d9 100644
--- a/spring-cloud/spring-cloud-contract/spring-cloud-contract-consumer/pom.xml
+++ b/spring-cloud/spring-cloud-contract/spring-cloud-contract-consumer/pom.xml
@@ -20,37 +20,27 @@
org.springframework.cloud
spring-cloud-contract-wiremock
- ${spring-cloud.version}
test
org.springframework.cloud
spring-cloud-contract-stub-runner
- ${spring-cloud.version}
test
org.springframework.boot
spring-boot-starter-web
- ${spring-boot.version}
org.springframework.boot
spring-boot-starter-data-rest
- ${spring-boot.version}
com.baeldung.spring.cloud
spring-cloud-contract-producer
- 1.0.0-SNAPSHOT
+ ${project.parent.version}
test
-
- UTF-8
- UTF-8
- 1.2.2.RELEASE
- 1.5.9.RELEASE
-
diff --git a/spring-cloud/spring-cloud-contract/spring-cloud-contract-consumer/src/test/java/com/baeldung/spring/cloud/springcloudcontractconsumer/controller/BasicMathControllerIntegrationTest.java b/spring-cloud/spring-cloud-contract/spring-cloud-contract-consumer/src/test/java/com/baeldung/spring/cloud/springcloudcontractconsumer/controller/BasicMathControllerIntegrationTest.java
index 5cf5c6d3b8..e21223e6ea 100644
--- a/spring-cloud/spring-cloud-contract/spring-cloud-contract-consumer/src/test/java/com/baeldung/spring/cloud/springcloudcontractconsumer/controller/BasicMathControllerIntegrationTest.java
+++ b/spring-cloud/spring-cloud-contract/spring-cloud-contract-consumer/src/test/java/com/baeldung/spring/cloud/springcloudcontractconsumer/controller/BasicMathControllerIntegrationTest.java
@@ -7,6 +7,7 @@ import org.springframework.boot.test.autoconfigure.json.AutoConfigureJsonTesters
import org.springframework.boot.test.autoconfigure.web.servlet.AutoConfigureMockMvc;
import org.springframework.boot.test.context.SpringBootTest;
import org.springframework.cloud.contract.stubrunner.spring.AutoConfigureStubRunner;
+import org.springframework.cloud.contract.stubrunner.spring.StubRunnerProperties;
import org.springframework.http.MediaType;
import org.springframework.test.context.junit4.SpringRunner;
import org.springframework.test.web.servlet.MockMvc;
@@ -19,7 +20,7 @@ import static org.springframework.test.web.servlet.result.MockMvcResultMatchers.
@SpringBootTest(webEnvironment = SpringBootTest.WebEnvironment.MOCK)
@AutoConfigureMockMvc
@AutoConfigureJsonTesters
-@AutoConfigureStubRunner(workOffline = true,
+@AutoConfigureStubRunner(stubsMode = StubRunnerProperties.StubsMode.LOCAL,
ids = "com.baeldung.spring.cloud:spring-cloud-contract-producer:+:stubs:8090")
public class BasicMathControllerIntegrationTest {
diff --git a/spring-cloud/spring-cloud-contract/spring-cloud-contract-producer/pom.xml b/spring-cloud/spring-cloud-contract/spring-cloud-contract-producer/pom.xml
index 07429687c7..dffbd29206 100644
--- a/spring-cloud/spring-cloud-contract/spring-cloud-contract-producer/pom.xml
+++ b/spring-cloud/spring-cloud-contract/spring-cloud-contract-producer/pom.xml
@@ -25,12 +25,10 @@
org.springframework.boot
spring-boot-starter-web
- ${spring-boot.version}
org.springframework.boot
spring-boot-starter-data-rest
- ${spring-boot.version}
@@ -38,7 +36,7 @@
org.springframework.cloud
spring-cloud-contract-maven-plugin
- 1.2.2.RELEASE
+ 2.1.1.RELEASE
true
com.baeldung.spring.cloud.springcloudcontractproducer.BaseTestClass
@@ -47,25 +45,4 @@
-
-
-
-
-
- org.springframework.cloud
- spring-cloud-dependencies
- ${spring-cloud.version}
- pom
- import
-
-
-
-
-
- UTF-8
- UTF-8
- Edgware.SR1
- 1.5.9.RELEASE
-
-
diff --git a/spring-security-rest-custom/pom.xml b/spring-security-rest-custom/pom.xml
index 8fdcb509ee..38cbfddab8 100644
--- a/spring-security-rest-custom/pom.xml
+++ b/spring-security-rest-custom/pom.xml
@@ -8,10 +8,10 @@
war
- parent-boot-1
+ parent-boot-2
com.baeldung
0.0.1-SNAPSHOT
- ../parent-boot-1
+ ../parent-boot-2
diff --git a/spring-security-rest-custom/src/main/java/org/baeldung/config/child/WebConfig.java b/spring-security-rest-custom/src/main/java/org/baeldung/config/child/WebConfig.java
index 0c2042f711..d7b2da6fe7 100644
--- a/spring-security-rest-custom/src/main/java/org/baeldung/config/child/WebConfig.java
+++ b/spring-security-rest-custom/src/main/java/org/baeldung/config/child/WebConfig.java
@@ -9,14 +9,14 @@ import org.springframework.context.support.PropertySourcesPlaceholderConfigurer;
import org.springframework.http.converter.HttpMessageConverter;
import org.springframework.http.converter.json.MappingJackson2HttpMessageConverter;
import org.springframework.web.servlet.config.annotation.EnableWebMvc;
-import org.springframework.web.servlet.config.annotation.WebMvcConfigurerAdapter;
+import org.springframework.web.servlet.config.annotation.WebMvcConfigurer;
@Configuration
@EnableWebMvc
@ComponentScan("org.baeldung.web")
// @ImportResource({ "classpath:prop.xml" })
// @PropertySource("classpath:foo.properties")
-public class WebConfig extends WebMvcConfigurerAdapter {
+public class WebConfig implements WebMvcConfigurer {
public WebConfig() {
super();
@@ -26,7 +26,6 @@ public class WebConfig extends WebMvcConfigurerAdapter {
@Override
public void configureMessageConverters(final List> converters) {
- super.configureMessageConverters(converters);
converters.add(new MappingJackson2HttpMessageConverter());
}
diff --git a/testing-modules/junit-5/pom.xml b/testing-modules/junit-5/pom.xml
index 84e0577cfe..b3074635a7 100644
--- a/testing-modules/junit-5/pom.xml
+++ b/testing-modules/junit-5/pom.xml
@@ -139,7 +139,7 @@
5.4.2
2.8.2
2.0.0-RC.1
- 2.21.0
+ 2.22.0
1.6.0
5.0.1.RELEASE
diff --git a/testing-modules/junit-5/src/test/java/com/baeldung/MultipleExtensionsUnitTest.java b/testing-modules/junit-5/src/test/java/com/baeldung/MultipleExtensionsUnitTest.java
new file mode 100644
index 0000000000..db37e9a6d2
--- /dev/null
+++ b/testing-modules/junit-5/src/test/java/com/baeldung/MultipleExtensionsUnitTest.java
@@ -0,0 +1,28 @@
+package com.baeldung;
+
+import org.junit.jupiter.api.Test;
+import org.junit.jupiter.api.Order;
+import org.junit.jupiter.api.extension.RegisterExtension;
+import com.baeldung.extensions.EmployeeDatabaseSetupExtension;
+
+public class MultipleExtensionsUnitTest {
+
+ @Order(1)
+ @RegisterExtension
+ static EmployeeDatabaseSetupExtension SECOND_DB =
+ new EmployeeDatabaseSetupExtension("jdbc:h2:mem:DbTwo;DB_CLOSE_DELAY=-1", "org.h2.Driver", "sa", "");
+
+ @Order(0)
+ @RegisterExtension
+ static EmployeeDatabaseSetupExtension FIRST_DB =
+ new EmployeeDatabaseSetupExtension("jdbc:h2:mem:DbOne;DB_CLOSE_DELAY=-1", "org.h2.Driver", "sa", "");
+
+ @RegisterExtension
+ static EmployeeDatabaseSetupExtension LAST_DB =
+ new EmployeeDatabaseSetupExtension("jdbc:h2:mem:DbLast;DB_CLOSE_DELAY=-1", "org.h2.Driver", "sa", "");
+
+ @Test
+ public void justDemonstratingTheIdea() {
+ // empty test
+ }
+}
diff --git a/testing-modules/junit-5/src/test/java/com/baeldung/ProgrammaticEmployeesUnitTest.java b/testing-modules/junit-5/src/test/java/com/baeldung/ProgrammaticEmployeesUnitTest.java
new file mode 100644
index 0000000000..a29fafd193
--- /dev/null
+++ b/testing-modules/junit-5/src/test/java/com/baeldung/ProgrammaticEmployeesUnitTest.java
@@ -0,0 +1,40 @@
+package com.baeldung;
+
+import java.sql.SQLException;
+
+import org.junit.jupiter.api.Test;
+import org.junit.jupiter.api.extension.ExtendWith;
+import org.junit.jupiter.api.extension.RegisterExtension;
+
+import com.baeldung.helpers.Employee;
+import com.baeldung.extensions.EmployeeDaoParameterResolver;
+import com.baeldung.extensions.EmployeeDatabaseSetupExtension;
+import com.baeldung.extensions.EnvironmentExtension;
+import com.baeldung.helpers.EmployeeJdbcDao;
+
+import static org.junit.jupiter.api.Assertions.*;
+
+@ExtendWith({ EnvironmentExtension.class, EmployeeDaoParameterResolver.class })
+public class ProgrammaticEmployeesUnitTest {
+
+ private EmployeeJdbcDao employeeDao;
+
+ @RegisterExtension static EmployeeDatabaseSetupExtension DB =
+ new EmployeeDatabaseSetupExtension("jdbc:h2:mem:AnotherDb;DB_CLOSE_DELAY=-1", "org.h2.Driver", "sa", "");
+
+ public ProgrammaticEmployeesUnitTest(EmployeeJdbcDao employeeDao) {
+ this.employeeDao = employeeDao;
+ }
+
+ @Test
+ public void whenAddEmployee_thenGetEmployee() throws SQLException {
+ Employee emp = new Employee(1, "john");
+ employeeDao.add(emp);
+ assertEquals(1, employeeDao.findAll().size());
+ }
+
+ @Test
+ public void whenGetEmployees_thenEmptyList() throws SQLException {
+ assertEquals(0, employeeDao.findAll().size());
+ }
+}
diff --git a/testing-modules/junit-5/src/test/java/com/baeldung/extensions/EmployeeDatabaseSetupExtension.java b/testing-modules/junit-5/src/test/java/com/baeldung/extensions/EmployeeDatabaseSetupExtension.java
index 69e420b28a..f124703690 100644
--- a/testing-modules/junit-5/src/test/java/com/baeldung/extensions/EmployeeDatabaseSetupExtension.java
+++ b/testing-modules/junit-5/src/test/java/com/baeldung/extensions/EmployeeDatabaseSetupExtension.java
@@ -15,10 +15,20 @@ import com.baeldung.helpers.JdbcConnectionUtil;
public class EmployeeDatabaseSetupExtension implements BeforeAllCallback, AfterAllCallback, BeforeEachCallback, AfterEachCallback {
- private Connection con = JdbcConnectionUtil.getConnection();
- private EmployeeJdbcDao employeeDao = new EmployeeJdbcDao(con);
+ private Connection con;
+ private EmployeeJdbcDao employeeDao;
private Savepoint savepoint;
+ public EmployeeDatabaseSetupExtension() {
+ con = JdbcConnectionUtil.getConnection();
+ employeeDao = new EmployeeJdbcDao(con);
+ }
+
+ public EmployeeDatabaseSetupExtension(String jdbcUrl, String driver, String username, String password) {
+ con = JdbcConnectionUtil.getConnection(jdbcUrl, driver, username, password);
+ employeeDao = new EmployeeJdbcDao(con);
+ }
+
@Override
public void afterAll(ExtensionContext context) throws SQLException {
if (con != null) {
diff --git a/testing-modules/junit-5/src/test/java/com/baeldung/helpers/EmployeeJdbcDao.java b/testing-modules/junit-5/src/test/java/com/baeldung/helpers/EmployeeJdbcDao.java
index 7600f763cd..4b274cff39 100644
--- a/testing-modules/junit-5/src/test/java/com/baeldung/helpers/EmployeeJdbcDao.java
+++ b/testing-modules/junit-5/src/test/java/com/baeldung/helpers/EmployeeJdbcDao.java
@@ -19,7 +19,7 @@ public class EmployeeJdbcDao {
}
public void createTable() throws SQLException {
- String createQuery = "CREATE TABLE employees(id long primary key, firstName varchar(50))";
+ String createQuery = "CREATE TABLE IF NOT EXISTS employees(id long primary key, firstName varchar(50))";
PreparedStatement pstmt = con.prepareStatement(createQuery);
pstmt.execute();
diff --git a/testing-modules/junit-5/src/test/java/com/baeldung/helpers/JdbcConnectionUtil.java b/testing-modules/junit-5/src/test/java/com/baeldung/helpers/JdbcConnectionUtil.java
index f380f9674c..ccba627234 100644
--- a/testing-modules/junit-5/src/test/java/com/baeldung/helpers/JdbcConnectionUtil.java
+++ b/testing-modules/junit-5/src/test/java/com/baeldung/helpers/JdbcConnectionUtil.java
@@ -11,22 +11,49 @@ public class JdbcConnectionUtil {
private static Connection con;
public static Connection getConnection() {
- if (con == null) {
+ if (con == null || isClosed(con)) {
try {
Properties props = new Properties();
props.load(JdbcConnectionUtil.class.getResourceAsStream("jdbc.properties"));
- Class.forName(props.getProperty("jdbc.driver"));
- con = DriverManager.getConnection(props.getProperty("jdbc.url"), props.getProperty("jdbc.user"), props.getProperty("jdbc.password"));
+
+ String jdbcUrl = props.getProperty("jdbc.url");
+ String driver = props.getProperty("jdbc.driver");
+ String username = props.getProperty("jdbc.user");
+ String password = props.getProperty("jdbc.password");
+ con = getConnection(jdbcUrl, driver, username, password);
return con;
} catch (IOException exc) {
exc.printStackTrace();
+ }
+
+ return null;
+ }
+ return con;
+ }
+
+ public static Connection getConnection(String jdbcUrl, String driver, String username, String password) {
+ if (con == null || isClosed(con)) {
+ try {
+ Class.forName(driver);
+ con = DriverManager.getConnection(jdbcUrl, username, password);
+ return con;
} catch (ClassNotFoundException exc) {
exc.printStackTrace();
} catch (SQLException exc) {
exc.printStackTrace();
}
+
return null;
}
+
return con;
}
+
+ private static boolean isClosed(Connection con) {
+ try {
+ return con.isClosed();
+ } catch (SQLException e) {
+ return true;
+ }
+ }
}
diff --git a/testing-modules/junit5-migration/src/test/java/com/baeldung/junit5/AssertionUnitTest.java b/testing-modules/junit5-migration/src/test/java/com/baeldung/junit5/AssertionUnitTest.java
index d1d08c6e62..d225e4547e 100644
--- a/testing-modules/junit5-migration/src/test/java/com/baeldung/junit5/AssertionUnitTest.java
+++ b/testing-modules/junit5-migration/src/test/java/com/baeldung/junit5/AssertionUnitTest.java
@@ -34,7 +34,7 @@ public class AssertionUnitTest {
"heading",
() -> assertEquals(4, 2 * 2, "4 is 2 times 2"),
() -> assertEquals("java", "JAVA".toLowerCase()),
- () -> assertEquals(null, null, "null is equal to null")
+ () -> assertEquals((String) null, (String) null, "null is equal to null")
);
}
}