diff --git a/akka-streams/pom.xml b/akka-streams/pom.xml
index a885753ce2..7719bb7351 100644
--- a/akka-streams/pom.xml
+++ b/akka-streams/pom.xml
@@ -14,18 +14,19 @@
com.typesafe.akka
- akka-stream_2.11
+ akka-stream_${scala.version}
${akkastreams.version}
com.typesafe.akka
- akka-stream-testkit_2.11
+ akka-stream-testkit_${scala.version}
${akkastreams.version}
2.5.2
+ 2.11
\ No newline at end of file
diff --git a/algorithms-miscellaneous-2/src/main/java/com/baeldung/algorithms/reversingtree/TreeNode.java b/algorithms-miscellaneous-2/src/main/java/com/baeldung/algorithms/reversingtree/TreeNode.java
index 7905b752a9..a6ec2277e5 100644
--- a/algorithms-miscellaneous-2/src/main/java/com/baeldung/algorithms/reversingtree/TreeNode.java
+++ b/algorithms-miscellaneous-2/src/main/java/com/baeldung/algorithms/reversingtree/TreeNode.java
@@ -1,42 +1,42 @@
-package com.baeldung.algorithms.reversingtree;
-
-public class TreeNode {
-
- private int value;
- private TreeNode rightChild;
- private TreeNode leftChild;
-
- public int getValue() {
- return value;
- }
-
- public void setValue(int value) {
- this.value = value;
- }
-
- public TreeNode getRightChild() {
- return rightChild;
- }
-
- public void setRightChild(TreeNode rightChild) {
- this.rightChild = rightChild;
- }
-
- public TreeNode getLeftChild() {
- return leftChild;
- }
-
- public void setLeftChild(TreeNode leftChild) {
- this.leftChild = leftChild;
- }
-
- public TreeNode(int value, TreeNode rightChild, TreeNode leftChild) {
- this.value = value;
- this.rightChild = rightChild;
- this.leftChild = leftChild;
- }
-
- public TreeNode(int value) {
- this.value = value;
- }
-}
+package com.baeldung.algorithms.reversingtree;
+
+public class TreeNode {
+
+ private int value;
+ private TreeNode rightChild;
+ private TreeNode leftChild;
+
+ public int getValue() {
+ return value;
+ }
+
+ public void setValue(int value) {
+ this.value = value;
+ }
+
+ public TreeNode getRightChild() {
+ return rightChild;
+ }
+
+ public void setRightChild(TreeNode rightChild) {
+ this.rightChild = rightChild;
+ }
+
+ public TreeNode getLeftChild() {
+ return leftChild;
+ }
+
+ public void setLeftChild(TreeNode leftChild) {
+ this.leftChild = leftChild;
+ }
+
+ public TreeNode(int value, TreeNode leftChild, TreeNode rightChild) {
+ this.value = value;
+ this.rightChild = rightChild;
+ this.leftChild = leftChild;
+ }
+
+ public TreeNode(int value) {
+ this.value = value;
+ }
+}
diff --git a/algorithms-miscellaneous-2/src/main/java/com/baeldung/algorithms/reversingtree/TreeReverser.java b/algorithms-miscellaneous-2/src/main/java/com/baeldung/algorithms/reversingtree/TreeReverser.java
index 6d3a9ddd31..162119d390 100644
--- a/algorithms-miscellaneous-2/src/main/java/com/baeldung/algorithms/reversingtree/TreeReverser.java
+++ b/algorithms-miscellaneous-2/src/main/java/com/baeldung/algorithms/reversingtree/TreeReverser.java
@@ -1,68 +1,53 @@
-package com.baeldung.algorithms.reversingtree;
-
-import java.util.LinkedList;
-
-public class TreeReverser {
-
- public TreeNode createBinaryTree() {
-
- TreeNode leaf1 = new TreeNode(3);
- TreeNode leaf2 = new TreeNode(1);
- TreeNode leaf3 = new TreeNode(9);
- TreeNode leaf4 = new TreeNode(6);
-
- TreeNode nodeLeft = new TreeNode(2, leaf1, leaf2);
- TreeNode nodeRight = new TreeNode(7, leaf3, leaf4);
-
- TreeNode root = new TreeNode(4, nodeRight, nodeLeft);
-
- return root;
- }
-
- public void reverseRecursive(TreeNode treeNode) {
- if (treeNode == null) {
- return;
- }
-
- TreeNode temp = treeNode.getLeftChild();
- treeNode.setLeftChild(treeNode.getRightChild());
- treeNode.setRightChild(temp);
-
- reverseRecursive(treeNode.getLeftChild());
- reverseRecursive(treeNode.getRightChild());
- }
-
- public void reverseIterative(TreeNode treeNode) {
- LinkedList queue = new LinkedList();
-
- if (treeNode != null) {
- queue.add(treeNode);
- }
-
- while (!queue.isEmpty()) {
-
- TreeNode node = queue.poll();
- if (node.getLeftChild() != null)
- queue.add(node.getLeftChild());
- if (node.getRightChild() != null)
- queue.add(node.getRightChild());
-
- TreeNode temp = node.getLeftChild();
- node.setLeftChild(node.getRightChild());
- node.setRightChild(temp);
- }
- }
-
- public String toString(TreeNode root) {
- if (root == null) {
- return "";
- }
-
- StringBuffer buffer = new StringBuffer(String.valueOf(root.getValue())).append(" ");
-
- buffer.append(toString(root.getLeftChild()));
- buffer.append(toString(root.getRightChild()));
-
- return buffer.toString();
- }
-}
+package com.baeldung.algorithms.reversingtree;
+
+import java.util.LinkedList;
+
+public class TreeReverser {
+
+ public void reverseRecursive(TreeNode treeNode) {
+ if (treeNode == null) {
+ return;
+ }
+
+ TreeNode temp = treeNode.getLeftChild();
+ treeNode.setLeftChild(treeNode.getRightChild());
+ treeNode.setRightChild(temp);
+
+ reverseRecursive(treeNode.getLeftChild());
+ reverseRecursive(treeNode.getRightChild());
+ }
+
+ public void reverseIterative(TreeNode treeNode) {
+ LinkedList queue = new LinkedList();
+
+ if (treeNode != null) {
+ queue.add(treeNode);
+ }
+
+ while (!queue.isEmpty()) {
+
+ TreeNode node = queue.poll();
+ if (node.getLeftChild() != null)
+ queue.add(node.getLeftChild());
+ if (node.getRightChild() != null)
+ queue.add(node.getRightChild());
+
+ TreeNode temp = node.getLeftChild();
+ node.setLeftChild(node.getRightChild());
+ node.setRightChild(temp);
+ }
+ }
+
+ public String toString(TreeNode root) {
+ if (root == null) {
+ return "";
+ }
+
+ StringBuffer buffer = new StringBuffer(String.valueOf(root.getValue())).append(" ");
+
+ buffer.append(toString(root.getLeftChild()));
+ buffer.append(toString(root.getRightChild()));
+
+ return buffer.toString();
+ }
+}
diff --git a/algorithms-miscellaneous-2/src/test/java/com/baeldung/algorithms/reversingtree/TreeReverserUnitTest.java b/algorithms-miscellaneous-2/src/test/java/com/baeldung/algorithms/reversingtree/TreeReverserUnitTest.java
index cbc265fae1..44fac57361 100644
--- a/algorithms-miscellaneous-2/src/test/java/com/baeldung/algorithms/reversingtree/TreeReverserUnitTest.java
+++ b/algorithms-miscellaneous-2/src/test/java/com/baeldung/algorithms/reversingtree/TreeReverserUnitTest.java
@@ -1,33 +1,47 @@
-package com.baeldung.algorithms.reversingtree;
-
-import static org.junit.jupiter.api.Assertions.assertEquals;
-
-import org.junit.jupiter.api.Test;
-
-public class TreeReverserUnitTest {
-
- @Test
- public void givenTreeWhenReversingRecursivelyThenReversed() {
- TreeReverser reverser = new TreeReverser();
-
- TreeNode treeNode = reverser.createBinaryTree();
-
- reverser.reverseRecursive(treeNode);
-
- assertEquals("4 7 9 6 2 3 1", reverser.toString(treeNode)
- .trim());
- }
-
- @Test
- public void givenTreeWhenReversingIterativelyThenReversed() {
- TreeReverser reverser = new TreeReverser();
-
- TreeNode treeNode = reverser.createBinaryTree();
-
- reverser.reverseIterative(treeNode);
-
- assertEquals("4 7 9 6 2 3 1", reverser.toString(treeNode)
- .trim());
- }
-
-}
+package com.baeldung.algorithms.reversingtree;
+
+import static org.junit.jupiter.api.Assertions.assertEquals;
+
+import org.junit.jupiter.api.Test;
+
+public class TreeReverserUnitTest {
+
+ @Test
+ public void givenTreeWhenReversingRecursivelyThenReversed() {
+ TreeReverser reverser = new TreeReverser();
+
+ TreeNode treeNode = createBinaryTree();
+
+ reverser.reverseRecursive(treeNode);
+
+ assertEquals("4 7 9 6 2 3 1", reverser.toString(treeNode)
+ .trim());
+ }
+
+ @Test
+ public void givenTreeWhenReversingIterativelyThenReversed() {
+ TreeReverser reverser = new TreeReverser();
+
+ TreeNode treeNode = createBinaryTree();
+
+ reverser.reverseIterative(treeNode);
+
+ assertEquals("4 7 9 6 2 3 1", reverser.toString(treeNode)
+ .trim());
+ }
+
+ private TreeNode createBinaryTree() {
+
+ TreeNode leaf1 = new TreeNode(1);
+ TreeNode leaf2 = new TreeNode(3);
+ TreeNode leaf3 = new TreeNode(6);
+ TreeNode leaf4 = new TreeNode(9);
+
+ TreeNode nodeRight = new TreeNode(7, leaf3, leaf4);
+ TreeNode nodeLeft = new TreeNode(2, leaf1, leaf2);
+
+ TreeNode root = new TreeNode(4, nodeLeft, nodeRight);
+
+ return root;
+ }
+}
diff --git a/apache-meecrowave/pom.xml b/apache-meecrowave/pom.xml
index fb5af69f9b..bb851577e2 100644
--- a/apache-meecrowave/pom.xml
+++ b/apache-meecrowave/pom.xml
@@ -6,6 +6,12 @@
0.0.1
apache-meecrowave
A sample REST API application with Meecrowave
+
+
+ com.baeldung
+ parent-modules
+ 1.0.0-SNAPSHOT
+
diff --git a/apache-meecrowave/src/test/java/com/baeldung/meecrowave/ArticleEndpointsTest.java b/apache-meecrowave/src/test/java/com/baeldung/meecrowave/ArticleEndpointsUnitTest.java
similarity index 96%
rename from apache-meecrowave/src/test/java/com/baeldung/meecrowave/ArticleEndpointsTest.java
rename to apache-meecrowave/src/test/java/com/baeldung/meecrowave/ArticleEndpointsUnitTest.java
index 0dc9773490..f9a06fd7b9 100644
--- a/apache-meecrowave/src/test/java/com/baeldung/meecrowave/ArticleEndpointsTest.java
+++ b/apache-meecrowave/src/test/java/com/baeldung/meecrowave/ArticleEndpointsUnitTest.java
@@ -17,7 +17,7 @@ import okhttp3.Request;
import okhttp3.Response;
@RunWith(MonoMeecrowave.Runner.class)
-public class ArticleEndpointsTest {
+public class ArticleEndpointsUnitTest {
@ConfigurationInject
private Meecrowave.Builder config;
diff --git a/core-java-11/pom.xml b/core-java-11/pom.xml
index a9776d8f3b..933acdbecc 100644
--- a/core-java-11/pom.xml
+++ b/core-java-11/pom.xml
@@ -14,6 +14,14 @@
1.0.0-SNAPSHOT
+
+
+ com.google.guava
+ guava
+ ${guava.version}
+
+
+
@@ -31,6 +39,7 @@
11
11
+ 27.1-jre
diff --git a/core-java-11/src/test/java/com/baeldung/EmptyStringToEmptyOptionalUnitTest.java b/core-java-11/src/test/java/com/baeldung/EmptyStringToEmptyOptionalUnitTest.java
new file mode 100644
index 0000000000..cc429209d4
--- /dev/null
+++ b/core-java-11/src/test/java/com/baeldung/EmptyStringToEmptyOptionalUnitTest.java
@@ -0,0 +1,32 @@
+package com.baeldung;
+
+import com.google.common.base.Strings;
+import org.junit.Assert;
+import org.junit.Test;
+
+import java.util.Optional;
+import java.util.function.Predicate;
+
+public class EmptyStringToEmptyOptionalUnitTest {
+
+ @Test
+ public void givenEmptyString_whenFilteringOnOptional_thenEmptyOptionalIsReturned() {
+ String str = "";
+ Optional opt = Optional.ofNullable(str).filter(s -> !s.isEmpty());
+ Assert.assertFalse(opt.isPresent());
+ }
+
+ @Test
+ public void givenEmptyString_whenFilteringOnOptionalInJava11_thenEmptyOptionalIsReturned() {
+ String str = "";
+ Optional opt = Optional.ofNullable(str).filter(Predicate.not(String::isEmpty));
+ Assert.assertFalse(opt.isPresent());
+ }
+
+ @Test
+ public void givenEmptyString_whenPassingResultOfEmptyToNullToOfNullable_thenEmptyOptionalIsReturned() {
+ String str = "";
+ Optional opt = Optional.ofNullable(Strings.emptyToNull(str));
+ Assert.assertFalse(opt.isPresent());
+ }
+}
diff --git a/core-java-12/pom.xml b/core-java-12/pom.xml
index defef5e9d3..c5eec1a4bb 100644
--- a/core-java-12/pom.xml
+++ b/core-java-12/pom.xml
@@ -34,6 +34,7 @@
${maven.compiler.source.version}
${maven.compiler.target.version}
+ --enable-preview
diff --git a/core-java-12/src/test/java/com/baeldung/switchExpression/SwitchUnitTest.java b/core-java-12/src/test/java/com/baeldung/switchExpression/SwitchUnitTest.java
new file mode 100644
index 0000000000..708e416090
--- /dev/null
+++ b/core-java-12/src/test/java/com/baeldung/switchExpression/SwitchUnitTest.java
@@ -0,0 +1,37 @@
+package com.baeldung.switchExpression;
+
+import org.junit.Assert;
+import org.junit.Test;
+
+public class SwitchUnitTest {
+
+ @Test
+ public void switchJava12(){
+
+ var month = Month.AUG;
+
+ var value = switch(month){
+ case JAN,JUN, JUL -> 3;
+ case FEB,SEP, OCT, NOV, DEC -> 1;
+ case MAR,MAY, APR, AUG -> 2;
+ };
+
+ Assert.assertEquals(value, 2);
+ }
+
+ @Test
+ public void switchLocalVariable(){
+ var month = Month.AUG;
+ int i = switch (month){
+ case JAN,JUN, JUL -> 3;
+ case FEB,SEP, OCT, NOV, DEC -> 1;
+ case MAR,MAY, APR, AUG -> {
+ int j = month.toString().length() * 4;
+ break j;
+ }
+ };
+ Assert.assertEquals(12, i);
+ }
+
+ enum Month {JAN, FEB, MAR, APR, MAY, JUN, JUL, AUG, SEP, OCT, NOV, DEC}
+}
diff --git a/core-java-lang-oop-2/.gitignore b/core-java-lang-oop-2/.gitignore
new file mode 100644
index 0000000000..36aba1c242
--- /dev/null
+++ b/core-java-lang-oop-2/.gitignore
@@ -0,0 +1,4 @@
+target/
+.idea/
+bin/
+*.iml
\ No newline at end of file
diff --git a/core-java-lang-oop-2/README.md b/core-java-lang-oop-2/README.md
new file mode 100644
index 0000000000..e309810ba2
--- /dev/null
+++ b/core-java-lang-oop-2/README.md
@@ -0,0 +1,5 @@
+=========
+
+## Core Java Lang OOP 2 Cookbooks and Examples
+
+### Relevant Articles:
diff --git a/core-java-lang-oop-2/pom.xml b/core-java-lang-oop-2/pom.xml
new file mode 100644
index 0000000000..3faf9fe6ee
--- /dev/null
+++ b/core-java-lang-oop-2/pom.xml
@@ -0,0 +1,27 @@
+
+ 4.0.0
+ com.baeldung
+ core-java-lang-oop-2
+ 0.1.0-SNAPSHOT
+ core-java-lang-oop-2
+ jar
+
+
+ com.baeldung
+ parent-java
+ 0.0.1-SNAPSHOT
+ ../parent-java
+
+
+
+ core-java-lang-oop-2
+
+
+ src/main/resources
+ true
+
+
+
+
+
diff --git a/core-java-lang-oop-2/src/main/java/com/baeldung/supertypecompilerexception/MyClass.java b/core-java-lang-oop-2/src/main/java/com/baeldung/supertypecompilerexception/MyClass.java
new file mode 100644
index 0000000000..ccf8646f57
--- /dev/null
+++ b/core-java-lang-oop-2/src/main/java/com/baeldung/supertypecompilerexception/MyClass.java
@@ -0,0 +1,16 @@
+package com.baeldung.supertypecompilerexception;
+
+public class MyClass {
+
+ private int myField1 = 10;
+ private int myField2;
+
+ public MyClass() {
+ //uncomment this to see the supertype compiler error:
+ //this(myField1);
+ }
+
+ public MyClass(int i) {
+ myField2 = i;
+ }
+}
\ No newline at end of file
diff --git a/core-java-lang-oop-2/src/main/java/com/baeldung/supertypecompilerexception/MyClassSolution1.java b/core-java-lang-oop-2/src/main/java/com/baeldung/supertypecompilerexception/MyClassSolution1.java
new file mode 100644
index 0000000000..36fa446302
--- /dev/null
+++ b/core-java-lang-oop-2/src/main/java/com/baeldung/supertypecompilerexception/MyClassSolution1.java
@@ -0,0 +1,15 @@
+package com.baeldung.supertypecompilerexception;
+
+public class MyClassSolution1 {
+
+ private int myField1 = 10;
+ private int myField2;
+
+ public MyClassSolution1() {
+ myField2 = myField1;
+ }
+
+ public MyClassSolution1(int i) {
+ myField2 = i;
+ }
+}
diff --git a/core-java-lang-oop-2/src/main/java/com/baeldung/supertypecompilerexception/MyClassSolution2.java b/core-java-lang-oop-2/src/main/java/com/baeldung/supertypecompilerexception/MyClassSolution2.java
new file mode 100644
index 0000000000..adaea4bfbe
--- /dev/null
+++ b/core-java-lang-oop-2/src/main/java/com/baeldung/supertypecompilerexception/MyClassSolution2.java
@@ -0,0 +1,19 @@
+package com.baeldung.supertypecompilerexception;
+
+public class MyClassSolution2 {
+
+ private int myField1 = 10;
+ private int myField2;
+
+ public MyClassSolution2() {
+ setupMyFields(myField1);
+ }
+
+ public MyClassSolution2(int i) {
+ setupMyFields(i);
+ }
+
+ private void setupMyFields(int i) {
+ myField2 = i;
+ }
+}
diff --git a/core-java-lang-oop-2/src/main/java/com/baeldung/supertypecompilerexception/MyClassSolution3.java b/core-java-lang-oop-2/src/main/java/com/baeldung/supertypecompilerexception/MyClassSolution3.java
new file mode 100644
index 0000000000..04048f01db
--- /dev/null
+++ b/core-java-lang-oop-2/src/main/java/com/baeldung/supertypecompilerexception/MyClassSolution3.java
@@ -0,0 +1,15 @@
+package com.baeldung.supertypecompilerexception;
+
+public class MyClassSolution3 {
+
+ private static final int SOME_CONSTANT = 10;
+ private int myField2;
+
+ public MyClassSolution3() {
+ this(SOME_CONSTANT);
+ }
+
+ public MyClassSolution3(int i) {
+ myField2 = i;
+ }
+}
diff --git a/core-java-lang-oop-2/src/main/java/com/baeldung/supertypecompilerexception/MyException.java b/core-java-lang-oop-2/src/main/java/com/baeldung/supertypecompilerexception/MyException.java
new file mode 100644
index 0000000000..db60deb83f
--- /dev/null
+++ b/core-java-lang-oop-2/src/main/java/com/baeldung/supertypecompilerexception/MyException.java
@@ -0,0 +1,14 @@
+package com.baeldung.supertypecompilerexception;
+
+public class MyException extends RuntimeException {
+ private int errorCode = 0;
+
+ public MyException(String message) {
+ //uncomment this to see the supertype compiler error:
+ //super(message + getErrorCode());
+ }
+
+ public int getErrorCode() {
+ return errorCode;
+ }
+}
diff --git a/libraries2/pom.xml b/libraries2/pom.xml
new file mode 100644
index 0000000000..84f19b359d
--- /dev/null
+++ b/libraries2/pom.xml
@@ -0,0 +1,43 @@
+
+
+
+ 4.0.0
+ libraries2
+ libraries2
+
+
+ com.baeldung
+ parent-modules
+ 1.0.0-SNAPSHOT
+
+
+
+ 6.0.0.Final
+
+
+
+
+ jboss-public-repository-group
+ JBoss Public Repository Group
+ http://repository.jboss.org/nexus/content/groups/public/
+
+ true
+ never
+
+
+ true
+ daily
+
+
+
+
+
+
+ org.jbpm
+ jbpm-test
+ ${jbpm.version}
+
+
+
diff --git a/libraries2/src/main/java/com/baeldung/jbpm/WorkflowProcessMain.java b/libraries2/src/main/java/com/baeldung/jbpm/WorkflowProcessMain.java
new file mode 100644
index 0000000000..8e54ff892e
--- /dev/null
+++ b/libraries2/src/main/java/com/baeldung/jbpm/WorkflowProcessMain.java
@@ -0,0 +1,19 @@
+package com.baeldung.jbpm;
+
+import org.kie.api.runtime.manager.Context;
+import org.kie.internal.runtime.manager.context.EmptyContext;
+
+import com.baeldung.jbpm.engine.WorkflowEngine;
+import com.baeldung.jbpm.engine.WorkflowEngineImpl;
+
+public class WorkflowProcessMain {
+
+ public static void main(String[] args) {
+ WorkflowEngine workflowEngine = new WorkflowEngineImpl();
+ String processId = "com.baeldung.bpmn.helloworld";
+ String kbaseId = "kbase";
+ String persistenceUnit = "org.jbpm.persistence.jpa";
+ Context initialContext = EmptyContext.get();
+ workflowEngine.runjBPMEngineForProcess(processId, initialContext, kbaseId, persistenceUnit);
+ }
+}
\ No newline at end of file
diff --git a/libraries2/src/main/java/com/baeldung/jbpm/engine/WorkflowEngine.java b/libraries2/src/main/java/com/baeldung/jbpm/engine/WorkflowEngine.java
new file mode 100644
index 0000000000..b47a4cc8c1
--- /dev/null
+++ b/libraries2/src/main/java/com/baeldung/jbpm/engine/WorkflowEngine.java
@@ -0,0 +1,10 @@
+package com.baeldung.jbpm.engine;
+
+import org.kie.api.runtime.manager.Context;
+import org.kie.api.runtime.process.ProcessInstance;
+
+public interface WorkflowEngine {
+
+ public ProcessInstance runjBPMEngineForProcess(String processId, Context initialContext, String kbaseId, String persistenceUnit);
+
+}
diff --git a/libraries2/src/main/java/com/baeldung/jbpm/engine/WorkflowEngineImpl.java b/libraries2/src/main/java/com/baeldung/jbpm/engine/WorkflowEngineImpl.java
new file mode 100644
index 0000000000..7871241bef
--- /dev/null
+++ b/libraries2/src/main/java/com/baeldung/jbpm/engine/WorkflowEngineImpl.java
@@ -0,0 +1,66 @@
+package com.baeldung.jbpm.engine;
+
+import javax.persistence.EntityManagerFactory;
+import javax.persistence.Persistence;
+
+import org.jbpm.test.JBPMHelper;
+import org.kie.api.KieBase;
+import org.kie.api.KieServices;
+import org.kie.api.runtime.KieContainer;
+import org.kie.api.runtime.KieSession;
+import org.kie.api.runtime.manager.Context;
+import org.kie.api.runtime.manager.RuntimeEngine;
+import org.kie.api.runtime.manager.RuntimeEnvironment;
+import org.kie.api.runtime.manager.RuntimeEnvironmentBuilder;
+import org.kie.api.runtime.manager.RuntimeManager;
+import org.kie.api.runtime.manager.RuntimeManagerFactory;
+import org.kie.api.runtime.process.ProcessInstance;
+
+public class WorkflowEngineImpl implements WorkflowEngine {
+
+ @Override
+ public ProcessInstance runjBPMEngineForProcess(String processId, Context initialContext, String kbaseId, String persistenceUnit) {
+ RuntimeManager manager = null;
+ RuntimeEngine engine = null;
+ ProcessInstance pInstance = null;
+ try {
+ KieBase kbase = getKieBase(kbaseId);
+ manager = createJBPMRuntimeManager(kbase, persistenceUnit);
+ engine = manager.getRuntimeEngine(initialContext);
+ pInstance = executeProcessInstance(processId, manager, initialContext, engine);
+ } catch (Exception ex) {
+ ex.printStackTrace();
+ } finally {
+ if (manager != null && engine != null)
+ manager.disposeRuntimeEngine(engine);
+ System.exit(0);
+ }
+ return pInstance;
+ }
+
+ private ProcessInstance executeProcessInstance(String processId, RuntimeManager manager, Context initialContext, RuntimeEngine engine) {
+ KieSession ksession = engine.getKieSession();
+ ProcessInstance pInstance = ksession.startProcess(processId);
+ return pInstance;
+ }
+
+ private KieBase getKieBase(String kbaseId) {
+ KieServices ks = KieServices.Factory.get();
+ KieContainer kContainer = ks.getKieClasspathContainer();
+ KieBase kbase = kContainer.getKieBase(kbaseId);
+ return kbase;
+ }
+
+ private RuntimeManager createJBPMRuntimeManager(KieBase kbase, String persistenceUnit) {
+ JBPMHelper.startH2Server();
+ JBPMHelper.setupDataSource();
+ EntityManagerFactory emf = Persistence.createEntityManagerFactory(persistenceUnit);
+ RuntimeEnvironmentBuilder runtimeEnvironmentBuilder = RuntimeEnvironmentBuilder.Factory.get()
+ .newDefaultBuilder();
+ RuntimeEnvironment runtimeEnvironment = runtimeEnvironmentBuilder.entityManagerFactory(emf)
+ .knowledgeBase(kbase)
+ .get();
+ return RuntimeManagerFactory.Factory.get()
+ .newSingletonRuntimeManager(runtimeEnvironment);
+ }
+}
diff --git a/libraries2/src/main/resources/META-INF/kmodule.xml b/libraries2/src/main/resources/META-INF/kmodule.xml
new file mode 100644
index 0000000000..1b9ce1ce71
--- /dev/null
+++ b/libraries2/src/main/resources/META-INF/kmodule.xml
@@ -0,0 +1,3 @@
+
+
+
\ No newline at end of file
diff --git a/libraries2/src/main/resources/com/baeldung/process/helloworld.bpmn b/libraries2/src/main/resources/com/baeldung/process/helloworld.bpmn
new file mode 100644
index 0000000000..30813b2057
--- /dev/null
+++ b/libraries2/src/main/resources/com/baeldung/process/helloworld.bpmn
@@ -0,0 +1,54 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/libraries2/src/test/java/com/baeldung/jbpm/WorkflowEngineIntegrationTest.java b/libraries2/src/test/java/com/baeldung/jbpm/WorkflowEngineIntegrationTest.java
new file mode 100644
index 0000000000..ded46d7639
--- /dev/null
+++ b/libraries2/src/test/java/com/baeldung/jbpm/WorkflowEngineIntegrationTest.java
@@ -0,0 +1,52 @@
+package com.baeldung.jbpm;
+
+import org.jbpm.test.JbpmJUnitBaseTestCase;
+import org.junit.After;
+import org.junit.Before;
+import org.junit.Test;
+import org.kie.api.runtime.KieSession;
+import org.kie.api.runtime.manager.RuntimeEngine;
+import org.kie.api.runtime.manager.RuntimeManager;
+import org.kie.api.runtime.process.ProcessInstance;
+import org.kie.internal.runtime.manager.context.ProcessInstanceIdContext;
+
+public class WorkflowEngineIntegrationTest extends JbpmJUnitBaseTestCase {
+
+ private String[] triggeredNodesArray = { "Start", "HelloWorld", "End" };
+ private RuntimeManager manager = null;
+ private RuntimeEngine runtimeEngine = null;
+ private KieSession ksession = null;
+ private ProcessInstance processInstance = null;
+
+ @Before
+ public void setup() {
+ manager = createRuntimeManager(Strategy.SINGLETON, "manager", "com/baeldung/process/helloworld.bpmn");
+ runtimeEngine = getRuntimeEngine(ProcessInstanceIdContext.get());
+ ksession = runtimeEngine.getKieSession();
+ processInstance = ksession.startProcess("com.baeldung.bpmn.helloworld");
+ }
+
+ @After
+ public void cleanup() {
+ manager.disposeRuntimeEngine(runtimeEngine);
+ }
+
+ @Test
+ public void givenProcessInstance_whenExecutionCompleted_thenVerifyNodesExecutionOrder() {
+ assertNodeTriggered(processInstance.getId(), triggeredNodesArray);
+ }
+
+ @Test
+ public void givenProcessInstance_whenExecutionCompleted_thenVerifyKnowledgeSessionId() {
+ int ksessionID = ksession.getId();
+ runtimeEngine = getRuntimeEngine(ProcessInstanceIdContext.get(processInstance.getId()));
+ ksession = runtimeEngine.getKieSession();
+ assertEquals(ksessionID, ksession.getId());
+ }
+
+ @Test
+ public void givenProcessInstance_whenExecutionCompleted_thenVerifyProcessInstanceStatus() {
+ assertProcessInstanceCompleted(processInstance.getId(), ksession);
+ assertTrue("ProcessInstance completed with status 2", processInstance.getState() == 2);
+ }
+}
diff --git a/logging-modules/logback/pom.xml b/logging-modules/logback/pom.xml
index 845424af0c..41a28ffd17 100644
--- a/logging-modules/logback/pom.xml
+++ b/logging-modules/logback/pom.xml
@@ -37,12 +37,29 @@
jackson-databind
${jackson.version}
+
+ org.docx4j
+ docx4j
+ ${docx4j.version}
+
+
+ org.slf4j
+ slf4j-log4j12
+
+
+ log4j
+ log4j
+
+
+
+
1.2.3
0.1.5
2.9.7
+ 3.3.5
diff --git a/noexception/pom.xml b/noexception/pom.xml
deleted file mode 100644
index f632f1e3a9..0000000000
--- a/noexception/pom.xml
+++ /dev/null
@@ -1,27 +0,0 @@
-
- 4.0.0
- com.baeldung
- noexception
- 1.0
- noexception
-
-
- com.baeldung
- parent-modules
- 1.0.0-SNAPSHOT
-
-
-
-
- com.machinezoo.noexception
- noexception
- ${noexception.version}
-
-
-
-
- 1.1.0
-
-
-
diff --git a/noexception/src/main/java/com/baeldung/noexception/CustomExceptionHandler.java b/noexception/src/main/java/com/baeldung/noexception/CustomExceptionHandler.java
deleted file mode 100644
index 59e13efaa0..0000000000
--- a/noexception/src/main/java/com/baeldung/noexception/CustomExceptionHandler.java
+++ /dev/null
@@ -1,24 +0,0 @@
-package com.baeldung.noexception;
-
-import com.machinezoo.noexception.ExceptionHandler;
-import org.slf4j.Logger;
-import org.slf4j.LoggerFactory;
-
-public class CustomExceptionHandler extends ExceptionHandler {
-
- private Logger logger = LoggerFactory.getLogger(CustomExceptionHandler.class);
-
- @Override
- public boolean handle(Throwable throwable) {
-
- if (throwable.getClass()
- .isAssignableFrom(RuntimeException.class)
- || throwable.getClass()
- .isAssignableFrom(Error.class)) {
- return false;
- } else {
- logger.error("Caught Exception ", throwable);
- return true;
- }
- }
-}
diff --git a/noexception/src/main/resources/logback.xml b/noexception/src/main/resources/logback.xml
deleted file mode 100644
index 7d900d8ea8..0000000000
--- a/noexception/src/main/resources/logback.xml
+++ /dev/null
@@ -1,13 +0,0 @@
-
-
-
-
- %d{HH:mm:ss.SSS} [%thread] %-5level %logger{36} - %msg%n
-
-
-
-
-
-
-
-
\ No newline at end of file
diff --git a/noexception/src/test/java/com/baeldung/noexception/NoExceptionUnitTest.java b/noexception/src/test/java/com/baeldung/noexception/NoExceptionUnitTest.java
deleted file mode 100644
index 690ea43520..0000000000
--- a/noexception/src/test/java/com/baeldung/noexception/NoExceptionUnitTest.java
+++ /dev/null
@@ -1,63 +0,0 @@
-package com.baeldung.noexception;
-
-import com.machinezoo.noexception.Exceptions;
-import org.junit.Test;
-import org.slf4j.Logger;
-import org.slf4j.LoggerFactory;
-
-public class NoExceptionUnitTest {
-
- private static Logger logger = LoggerFactory.getLogger(NoExceptionUnitTest.class);
-
- @Test
- public void whenStdExceptionHandling_thenCatchAndLog() {
- try {
- System.out.println("Result is " + Integer.parseInt("foobar"));
- } catch (Throwable exception) {
- logger.error("Caught exception:", exception);
- }
- }
-
- @Test
- public void whenDefaultNoException_thenCatchAndLog() {
-
- Exceptions.log().run(() -> System.out.println("Result is " + Integer.parseInt("foobar")));
- }
-
- @Test
- public void givenLogger_whenDefaultNoException_thenCatchAndLogWithClassName() {
- System.out.println("Result is " + Exceptions.log(logger).get(() -> +Integer.parseInt("foobar")).orElse(-1));
- }
-
- @Test
- public void givenLoggerAndMessage_whenDefaultNoException_thenCatchAndLogWithClassNameAndMessage() {
- System.out.println("Result is " + Exceptions.log(logger, "Something went wrong:").get(() -> +Integer.parseInt("foobar")).orElse(-1));
- }
-
- @Test
- public void givenDefaultValue_whenDefaultNoException_thenCatchAndLogPrintDefault() {
- System.out.println("Result is " + Exceptions.log(logger, "Something went wrong:").get(() -> +Integer.parseInt("foobar")).orElse(-1));
- }
-
- @Test(expected = Error.class)
- public void givenCustomHandler_whenError_thenRethrowError() {
- CustomExceptionHandler customExceptionHandler = new CustomExceptionHandler();
- customExceptionHandler.run(() -> throwError());
- }
-
- @Test
- public void givenCustomHandler_whenException_thenCatchAndLog() {
- CustomExceptionHandler customExceptionHandler = new CustomExceptionHandler();
- customExceptionHandler.run(() -> throwException());
- }
-
- private static void throwError() {
- throw new Error("This is very bad.");
- }
-
- private static void throwException() {
- String testString = "foo";
- testString.charAt(5);
- }
-
-}
diff --git a/patterns/design-patterns-2/src/main/java/com/baeldung/nulls/UsingOptional.java b/patterns/design-patterns-2/src/main/java/com/baeldung/nulls/UsingOptional.java
index 6c17290a72..d5dd56e760 100644
--- a/patterns/design-patterns-2/src/main/java/com/baeldung/nulls/UsingOptional.java
+++ b/patterns/design-patterns-2/src/main/java/com/baeldung/nulls/UsingOptional.java
@@ -8,11 +8,7 @@ public class UsingOptional {
String response = doSomething(processed);
- if (response == null) {
- return Optional.empty();
- }
-
- return Optional.of(response);
+ return Optional.ofNullable(response);
}
private String doSomething(boolean processed) {
diff --git a/persistence-modules/jnosql/jnosql-diana/pom.xml b/persistence-modules/jnosql/jnosql-diana/pom.xml
index b52c808cf5..a4951761d8 100644
--- a/persistence-modules/jnosql/jnosql-diana/pom.xml
+++ b/persistence-modules/jnosql/jnosql-diana/pom.xml
@@ -18,36 +18,36 @@
org.jnosql.diana
diana-document
- 0.0.5
+ ${jnosql.version}
org.jnosql.diana
mongodb-driver
- 0.0.5
+ ${jnosql.version}
org.jnosql.diana
diana-column
- 0.0.5
+ ${jnosql.version}
org.jnosql.diana
cassandra-driver
- 0.0.5
+ ${jnosql.version}
org.jnosql.diana
diana-key-value
- 0.0.5
+ ${jnosql.version}
org.jnosql.diana
hazelcast-driver
- 0.0.5
+ ${jnosql.version}
diff --git a/persistence-modules/spring-data-cassandra-reactive/pom.xml b/persistence-modules/spring-data-cassandra-reactive/pom.xml
index d2bc574ee9..bc8f49862d 100644
--- a/persistence-modules/spring-data-cassandra-reactive/pom.xml
+++ b/persistence-modules/spring-data-cassandra-reactive/pom.xml
@@ -21,7 +21,7 @@
org.springframework.data
spring-data-cassandra
- 2.1.2.RELEASE
+ ${spring-data-cassandra.version}
io.projectreactor
@@ -53,6 +53,7 @@
UTF-8
1.8
+ 2.1.2.RELEASE
diff --git a/persistence-modules/spring-data-jpa/src/main/java/com/baeldung/domain/Employee.java b/persistence-modules/spring-data-jpa-2/src/main/java/com/baeldung/entity/Employee.java
similarity index 89%
rename from persistence-modules/spring-data-jpa/src/main/java/com/baeldung/domain/Employee.java
rename to persistence-modules/spring-data-jpa-2/src/main/java/com/baeldung/entity/Employee.java
index f2363cf746..135439863f 100644
--- a/persistence-modules/spring-data-jpa/src/main/java/com/baeldung/domain/Employee.java
+++ b/persistence-modules/spring-data-jpa-2/src/main/java/com/baeldung/entity/Employee.java
@@ -1,4 +1,4 @@
-package com.baeldung.domain;
+package com.baeldung.entity;
import javax.persistence.Entity;
import javax.persistence.Id;
diff --git a/persistence-modules/spring-data-jpa-2/src/main/java/com/baeldung/entity/Passenger.java b/persistence-modules/spring-data-jpa-2/src/main/java/com/baeldung/entity/Passenger.java
new file mode 100644
index 0000000000..3aafbe9afa
--- /dev/null
+++ b/persistence-modules/spring-data-jpa-2/src/main/java/com/baeldung/entity/Passenger.java
@@ -0,0 +1,78 @@
+package com.baeldung.entity;
+
+import javax.persistence.Basic;
+import javax.persistence.Column;
+import javax.persistence.Entity;
+import javax.persistence.GeneratedValue;
+import javax.persistence.Id;
+import java.util.Objects;
+
+@Entity
+public class Passenger {
+
+ @Id
+ @GeneratedValue
+ @Column(nullable = false)
+ private Long id;
+
+ @Basic(optional = false)
+ @Column(nullable = false)
+ private String firstName;
+
+ @Basic(optional = false)
+ @Column(nullable = false)
+ private String lastName;
+
+ private Passenger(String firstName, String lastName) {
+ this.firstName = firstName;
+ this.lastName = lastName;
+ }
+
+ public static Passenger from(String firstName, String lastName) {
+ return new Passenger(firstName, lastName);
+ }
+
+ public Long getId() {
+ return id;
+ }
+
+ public void setId(Long id) {
+ this.id = id;
+ }
+
+ public String getFirstName() {
+ return firstName;
+ }
+
+ public void setFirstName(String firstName) {
+ this.firstName = firstName;
+ }
+
+ public String getLastName() {
+ return lastName;
+ }
+
+ public void setLastName(String lastName) {
+ this.lastName = lastName;
+ }
+
+ @Override
+ public String toString() {
+ return "Passenger{" + "id=" + id + ", firstName='" + firstName + '\'' + ", lastName='" + lastName + '\'' + '}';
+ }
+
+ @Override
+ public boolean equals(Object o) {
+ if (this == o)
+ return true;
+ if (o == null || getClass() != o.getClass())
+ return false;
+ Passenger passenger = (Passenger) o;
+ return Objects.equals(firstName, passenger.firstName) && Objects.equals(lastName, passenger.lastName);
+ }
+
+ @Override
+ public int hashCode() {
+ return Objects.hash(firstName, lastName);
+ }
+}
diff --git a/persistence-modules/spring-data-jpa-2/src/main/java/com/baeldung/exists/Car.java b/persistence-modules/spring-data-jpa-2/src/main/java/com/baeldung/exists/Car.java
new file mode 100644
index 0000000000..bf09caf6ff
--- /dev/null
+++ b/persistence-modules/spring-data-jpa-2/src/main/java/com/baeldung/exists/Car.java
@@ -0,0 +1,48 @@
+package com.baeldung.exists;
+
+import javax.persistence.Entity;
+import javax.persistence.GeneratedValue;
+import javax.persistence.Id;
+
+/**
+ * @author paullatzelsperger
+ * @since 2019-03-20
+ */
+@Entity
+public class Car {
+
+ @Id
+ @GeneratedValue
+ private int id;
+ private Integer power;
+ private String model;
+
+ Car() {
+
+ }
+
+ public Car(int power, String model) {
+ this.power = power;
+ this.model = model;
+ }
+
+ public Integer getPower() {
+ return power;
+ }
+
+ public void setPower(Integer power) {
+ this.power = power;
+ }
+
+ public String getModel() {
+ return model;
+ }
+
+ public void setModel(String model) {
+ this.model = model;
+ }
+
+ public int getId() {
+ return id;
+ }
+}
diff --git a/persistence-modules/spring-data-jpa-2/src/main/java/com/baeldung/exists/CarRepository.java b/persistence-modules/spring-data-jpa-2/src/main/java/com/baeldung/exists/CarRepository.java
new file mode 100644
index 0000000000..a54f19f4cd
--- /dev/null
+++ b/persistence-modules/spring-data-jpa-2/src/main/java/com/baeldung/exists/CarRepository.java
@@ -0,0 +1,24 @@
+package com.baeldung.exists;
+
+import org.springframework.data.jpa.repository.JpaRepository;
+import org.springframework.data.jpa.repository.Query;
+import org.springframework.data.repository.query.Param;
+import org.springframework.stereotype.Repository;
+
+/**
+ * @author paullatzelsperger
+ * @since 2019-03-20
+ */
+@Repository
+public interface CarRepository extends JpaRepository {
+
+ boolean existsCarByPower(int power);
+
+ boolean existsCarByModel(String model);
+
+ @Query("select case when count(c)> 0 then true else false end from Car c where c.model = :model")
+ boolean existsCarExactCustomQuery(@Param("model") String model);
+
+ @Query("select case when count(c)> 0 then true else false end from Car c where lower(c.model) like lower(:model)")
+ boolean existsCarLikeCustomQuery(@Param("model") String model);
+}
diff --git a/persistence-modules/spring-data-jpa/src/main/java/com/baeldung/dao/repositories/EmployeeRepository.java b/persistence-modules/spring-data-jpa-2/src/main/java/com/baeldung/repository/EmployeeRepository.java
similarity index 62%
rename from persistence-modules/spring-data-jpa/src/main/java/com/baeldung/dao/repositories/EmployeeRepository.java
rename to persistence-modules/spring-data-jpa-2/src/main/java/com/baeldung/repository/EmployeeRepository.java
index 6185185791..2c4fee80e0 100644
--- a/persistence-modules/spring-data-jpa/src/main/java/com/baeldung/dao/repositories/EmployeeRepository.java
+++ b/persistence-modules/spring-data-jpa-2/src/main/java/com/baeldung/repository/EmployeeRepository.java
@@ -1,8 +1,8 @@
-package com.baeldung.dao.repositories;
+package com.baeldung.repository;
import org.springframework.data.jpa.repository.JpaRepository;
-import com.baeldung.domain.Employee;
+import com.baeldung.entity.Employee;
public interface EmployeeRepository extends JpaRepository {
diff --git a/persistence-modules/spring-data-jpa-2/src/main/java/com/baeldung/repository/PassengerRepository.java b/persistence-modules/spring-data-jpa-2/src/main/java/com/baeldung/repository/PassengerRepository.java
new file mode 100644
index 0000000000..a295a74f1b
--- /dev/null
+++ b/persistence-modules/spring-data-jpa-2/src/main/java/com/baeldung/repository/PassengerRepository.java
@@ -0,0 +1,14 @@
+package com.baeldung.repository;
+
+import com.baeldung.entity.Passenger;
+import org.springframework.data.jpa.repository.JpaRepository;
+import org.springframework.stereotype.Repository;
+
+import java.util.List;
+
+@Repository
+interface PassengerRepository extends JpaRepository {
+
+ List findByFirstNameIgnoreCase(String firstName);
+
+}
diff --git a/persistence-modules/spring-boot-persistence/src/test/java/com/baeldung/exists/CarRepositoryIntegrationTest.java b/persistence-modules/spring-data-jpa-2/src/test/java/com/baeldung/exists/CarRepositoryIntegrationTest.java
similarity index 95%
rename from persistence-modules/spring-boot-persistence/src/test/java/com/baeldung/exists/CarRepositoryIntegrationTest.java
rename to persistence-modules/spring-data-jpa-2/src/test/java/com/baeldung/exists/CarRepositoryIntegrationTest.java
index f9a48a7e66..d99f6671a3 100644
--- a/persistence-modules/spring-boot-persistence/src/test/java/com/baeldung/exists/CarRepositoryIntegrationTest.java
+++ b/persistence-modules/spring-data-jpa-2/src/test/java/com/baeldung/exists/CarRepositoryIntegrationTest.java
@@ -1,8 +1,6 @@
package com.baeldung.exists;
-import static org.assertj.core.api.Assertions.assertThat;
-import static org.springframework.data.domain.ExampleMatcher.GenericPropertyMatchers.ignoreCase;
-
+import com.baeldung.Application;
import org.junit.After;
import org.junit.Before;
import org.junit.Test;
@@ -13,13 +11,12 @@ import org.springframework.data.domain.Example;
import org.springframework.data.domain.ExampleMatcher;
import org.springframework.test.context.junit4.SpringRunner;
-import com.baeldung.boot.Application;
-import com.baeldung.boot.domain.Car;
-import com.baeldung.boot.repository.CarRepository;
-
import java.util.Arrays;
import java.util.List;
+import static org.assertj.core.api.Assertions.assertThat;
+import static org.springframework.data.domain.ExampleMatcher.GenericPropertyMatchers.ignoreCase;
+
@RunWith(SpringRunner.class)
@SpringBootTest(classes = {Application.class})
public class CarRepositoryIntegrationTest {
diff --git a/persistence-modules/spring-data-jpa/src/test/java/com/baeldung/dao/repositories/EmployeeRepositoryIntegrationTest.java b/persistence-modules/spring-data-jpa-2/src/test/java/com/baeldung/repository/EmployeeRepositoryIntegrationTest.java
similarity index 94%
rename from persistence-modules/spring-data-jpa/src/test/java/com/baeldung/dao/repositories/EmployeeRepositoryIntegrationTest.java
rename to persistence-modules/spring-data-jpa-2/src/test/java/com/baeldung/repository/EmployeeRepositoryIntegrationTest.java
index 13ceb702d2..ebeed276c9 100644
--- a/persistence-modules/spring-data-jpa/src/test/java/com/baeldung/dao/repositories/EmployeeRepositoryIntegrationTest.java
+++ b/persistence-modules/spring-data-jpa-2/src/test/java/com/baeldung/repository/EmployeeRepositoryIntegrationTest.java
@@ -1,4 +1,4 @@
-package com.baeldung.dao.repositories;
+package com.baeldung.repository;
import static org.assertj.core.api.AssertionsForClassTypes.assertThat;
@@ -8,7 +8,7 @@ import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.boot.test.autoconfigure.orm.jpa.DataJpaTest;
import org.springframework.test.context.junit4.SpringRunner;
-import com.baeldung.domain.Employee;
+import com.baeldung.entity.Employee;
@RunWith(SpringRunner.class)
@DataJpaTest
diff --git a/persistence-modules/spring-data-jpa-2/src/test/java/com/baeldung/repository/PassengerRepositoryIntegrationTest.java b/persistence-modules/spring-data-jpa-2/src/test/java/com/baeldung/repository/PassengerRepositoryIntegrationTest.java
new file mode 100644
index 0000000000..f96f0249d7
--- /dev/null
+++ b/persistence-modules/spring-data-jpa-2/src/test/java/com/baeldung/repository/PassengerRepositoryIntegrationTest.java
@@ -0,0 +1,54 @@
+package com.baeldung.repository;
+
+import com.baeldung.entity.Passenger;
+import org.junit.Before;
+import org.junit.Test;
+import org.junit.runner.RunWith;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.boot.test.autoconfigure.orm.jpa.DataJpaTest;
+import org.springframework.test.context.junit4.SpringRunner;
+
+import javax.persistence.EntityManager;
+import javax.persistence.PersistenceContext;
+import java.util.List;
+
+import static org.hamcrest.MatcherAssert.assertThat;
+import static org.hamcrest.Matchers.contains;
+import static org.hamcrest.core.IsNot.not;
+
+@DataJpaTest
+@RunWith(SpringRunner.class)
+public class PassengerRepositoryIntegrationTest {
+
+ @PersistenceContext
+ private EntityManager entityManager;
+ @Autowired
+ private PassengerRepository repository;
+
+ @Before
+ public void before() {
+ entityManager.persist(Passenger.from("Jill", "Smith"));
+ entityManager.persist(Passenger.from("Eve", "Jackson"));
+ entityManager.persist(Passenger.from("Fred", "Bloggs"));
+ entityManager.persist(Passenger.from("Ricki", "Bobbie"));
+ entityManager.persist(Passenger.from("Siya", "Kolisi"));
+ }
+
+ @Test
+ public void givenPassengers_whenMatchingIgnoreCase_thenExpectedReturned() {
+ Passenger jill = Passenger.from("Jill", "Smith");
+ Passenger eve = Passenger.from("Eve", "Jackson");
+ Passenger fred = Passenger.from("Fred", "Bloggs");
+ Passenger siya = Passenger.from("Siya", "Kolisi");
+ Passenger ricki = Passenger.from("Ricki", "Bobbie");
+
+ List passengers = repository.findByFirstNameIgnoreCase("FRED");
+
+ assertThat(passengers, contains(fred));
+ assertThat(passengers, not(contains(eve)));
+ assertThat(passengers, not(contains(siya)));
+ assertThat(passengers, not(contains(jill)));
+ assertThat(passengers, not(contains(ricki)));
+
+ }
+}
diff --git a/persistence-modules/spring-data-jpa/src/main/java/com/baeldung/customer/Customer.java b/persistence-modules/spring-data-jpa/src/main/java/com/baeldung/customer/Customer.java
new file mode 100644
index 0000000000..ed922c3075
--- /dev/null
+++ b/persistence-modules/spring-data-jpa/src/main/java/com/baeldung/customer/Customer.java
@@ -0,0 +1,37 @@
+package com.baeldung.customer;
+
+import javax.persistence.Entity;
+import javax.persistence.GeneratedValue;
+import javax.persistence.Id;
+
+@Entity
+public class Customer {
+
+ @Id
+ @GeneratedValue
+ private long id;
+ private String name;
+ private String email;
+
+ public Customer(String name, String email) {
+ this.name = name;
+ this.email = email;
+ }
+
+ public String getName() {
+ return name;
+ }
+
+ public void setName(String name) {
+ this.name = name;
+ }
+
+ public String getEmail() {
+ return email;
+ }
+
+ public void setEmail(String email) {
+ this.email = email;
+ }
+
+}
diff --git a/persistence-modules/spring-data-jpa/src/main/java/com/baeldung/customer/CustomerRepository.java b/persistence-modules/spring-data-jpa/src/main/java/com/baeldung/customer/CustomerRepository.java
new file mode 100644
index 0000000000..c354ccbb58
--- /dev/null
+++ b/persistence-modules/spring-data-jpa/src/main/java/com/baeldung/customer/CustomerRepository.java
@@ -0,0 +1,18 @@
+package com.baeldung.customer;
+
+import org.springframework.data.jpa.repository.JpaRepository;
+import org.springframework.data.jpa.repository.Query;
+import org.springframework.data.repository.query.Param;
+
+import java.util.List;
+
+public interface CustomerRepository extends JpaRepository {
+
+ List findByName(String name);
+
+ List findByNameAndEmail(String name, String email);
+
+ @Query("SELECT c FROM Customer c WHERE (:name is null or c.name = :name) and (:email is null or c.email = :email)")
+ List findCustomerByNameAndEmail(@Param("name") String name, @Param("email") String email);
+
+}
diff --git a/persistence-modules/spring-data-jpa/src/test/java/com/baeldung/customer/CustomerRepositoryIntegrationTest.java b/persistence-modules/spring-data-jpa/src/test/java/com/baeldung/customer/CustomerRepositoryIntegrationTest.java
new file mode 100644
index 0000000000..c3bd821f52
--- /dev/null
+++ b/persistence-modules/spring-data-jpa/src/test/java/com/baeldung/customer/CustomerRepositoryIntegrationTest.java
@@ -0,0 +1,66 @@
+package com.baeldung.customer;
+
+import com.baeldung.config.PersistenceConfiguration;
+import com.baeldung.config.PersistenceProductConfiguration;
+import com.baeldung.config.PersistenceUserConfiguration;
+import org.junit.After;
+import org.junit.Before;
+import org.junit.Test;
+import org.junit.runner.RunWith;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.boot.test.autoconfigure.orm.jpa.DataJpaTest;
+import org.springframework.test.context.junit4.SpringRunner;
+
+import javax.persistence.EntityManager;
+import javax.persistence.PersistenceContext;
+import java.util.List;
+
+import static org.junit.Assert.assertEquals;
+
+@DataJpaTest(excludeAutoConfiguration = { PersistenceConfiguration.class, PersistenceUserConfiguration.class, PersistenceProductConfiguration.class })
+@RunWith(SpringRunner.class)
+public class CustomerRepositoryIntegrationTest {
+
+ @PersistenceContext
+ private EntityManager entityManager;
+
+ @Autowired
+ private CustomerRepository repository;
+
+ @Before
+ public void before() {
+ entityManager.persist(new Customer("A", "A@example.com"));
+ entityManager.persist(new Customer("D", null));
+ entityManager.persist(new Customer("D", "D@example.com"));
+ }
+
+ @Test
+ public void givenQueryMethod_whenEmailIsNull_thenFoundByNullEmail() {
+ List customers = repository.findByNameAndEmail("D", null);
+
+ assertEquals(1, customers.size());
+ Customer actual = customers.get(0);
+
+ assertEquals(null, actual.getEmail());
+ assertEquals("D", actual.getName());
+ }
+
+ @Test
+ public void givenQueryMethod_whenEmailIsAbsent_thenIgnoreEmail() {
+ List customers = repository.findByName("D");
+
+ assertEquals(2, customers.size());
+ }
+
+ @Test
+ public void givenQueryAnnotation_whenEmailIsNull_thenIgnoreEmail() {
+ List customers = repository.findCustomerByNameAndEmail("D", null);
+
+ assertEquals(2, customers.size());
+ }
+
+ @After
+ public void cleanUp() {
+ repository.deleteAll();
+ }
+}
\ No newline at end of file
diff --git a/pom.xml b/pom.xml
index eaaf90899f..e0622d3d6e 100644
--- a/pom.xml
+++ b/pom.xml
@@ -332,7 +332,7 @@
parent-spring-5
parent-java
parent-kotlin
-
+
akka-streams
algorithms-genetic
algorithms-miscellaneous-1
@@ -391,6 +391,7 @@
core-java-lang-syntax
core-java-lang
core-java-lang-oop
+ core-java-lang-oop-2
core-java-networking
core-java-perf
core-java-sun
@@ -440,6 +441,7 @@
jackson-2
java-collections-conversions
java-collections-maps
+ java-collections-maps-2
@@ -448,6 +450,7 @@
java-rmi
java-spi
java-streams
+ java-streams-2
java-strings
java-vavr-stream
java-websocket
@@ -480,6 +483,7 @@
libraries
+ libraries2
libraries-data
libraries-apache-commons
libraries-security
@@ -504,7 +508,6 @@
mustache
mybatis
- noexception
optaplanner
orika
@@ -616,6 +619,7 @@
spring-boot-mvc
spring-boot-ops
spring-boot-rest
+ spring-boot-data
spring-boot-property-exp
spring-boot-security
spring-boot-testing
@@ -663,11 +667,13 @@
spring-mvc-java
spring-mvc-kotlin
spring-mvc-simple
+ spring-mvc-simple-2
spring-mvc-velocity
spring-mvc-webflow
spring-mvc-xml
spring-protobuf
+
spring-quartz
@@ -983,7 +989,7 @@
parent-spring-5
parent-java
parent-kotlin
-
+
akka-streams
algorithms-genetic
algorithms-miscellaneous-1
@@ -1039,6 +1045,7 @@
core-java-lang-syntax
core-java-lang
core-java-lang-oop
+ core-java-lang-oop-2
core-java-networking
core-java-perf
core-java-sun
@@ -1086,6 +1093,7 @@
jackson-2
java-collections-conversions
java-collections-maps
+ java-collections-maps-2
java-ee-8-security-api
java-lite
@@ -1093,6 +1101,7 @@
java-rmi
java-spi
java-streams
+ java-streams-2
java-strings
java-vavr-stream
java-websocket
@@ -1149,7 +1158,6 @@
mustache
mybatis
- noexception
optaplanner
orika
@@ -1253,6 +1261,7 @@
spring-boot-mvc
spring-boot-ops
spring-boot-rest
+ spring-boot-data
spring-boot-property-exp
spring-boot-security
spring-boot-vue
@@ -1298,11 +1307,13 @@
spring-mvc-java
spring-mvc-kotlin
spring-mvc-simple
+ spring-mvc-simple-2
spring-mvc-velocity
spring-mvc-webflow
spring-mvc-xml
spring-protobuf
+
spring-quartz
diff --git a/spring-akka/pom.xml b/spring-akka/pom.xml
index 92b3f1162d..d8b943b5ae 100644
--- a/spring-akka/pom.xml
+++ b/spring-akka/pom.xml
@@ -19,7 +19,7 @@
com.typesafe.akka
- akka-actor_2.11
+ akka-actor_${scala.version}
${akka.version}
@@ -44,6 +44,7 @@
4.3.4.RELEASE
2.4.14
+ 2.11
\ No newline at end of file
diff --git a/spring-boot-angular/src/main/java/com/baeldung/pom.xml b/spring-boot-angular/src/main/java/com/baeldung/pom.xml
index d4ebc870b4..ac86f932b4 100644
--- a/spring-boot-angular/src/main/java/com/baeldung/pom.xml
+++ b/spring-boot-angular/src/main/java/com/baeldung/pom.xml
@@ -6,15 +6,13 @@
1.0
jar
Spring Boot Angular Application
+
org.springframework.boot
spring-boot-starter-parent
2.1.3.RELEASE
-
- 1.8
-
@@ -46,4 +44,7 @@
+
+ 1.8
+
\ No newline at end of file
diff --git a/spring-boot-security/src/main/java/com/baeldung/integrationtesting/WebSecurityConfigurer.java b/spring-boot-security/src/main/java/com/baeldung/integrationtesting/WebSecurityConfigurer.java
index 16ce8e6fc6..1437440668 100644
--- a/spring-boot-security/src/main/java/com/baeldung/integrationtesting/WebSecurityConfigurer.java
+++ b/spring-boot-security/src/main/java/com/baeldung/integrationtesting/WebSecurityConfigurer.java
@@ -1,18 +1,24 @@
package com.baeldung.integrationtesting;
+import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import org.springframework.security.config.annotation.authentication.builders.AuthenticationManagerBuilder;
import org.springframework.security.config.annotation.web.builders.HttpSecurity;
import org.springframework.security.config.annotation.web.configuration.WebSecurityConfigurerAdapter;
+import org.springframework.security.crypto.bcrypt.BCryptPasswordEncoder;
@Configuration
public class WebSecurityConfigurer extends WebSecurityConfigurerAdapter {
@Override
protected void configure(AuthenticationManagerBuilder auth) throws Exception {
+
+ BCryptPasswordEncoder encoder = passwordEncoder();
+
auth.inMemoryAuthentication()
+ .passwordEncoder(encoder)
.withUser("spring")
- .password("{noop}secret")
+ .password(encoder.encode("secret"))
.roles("USER");
}
@@ -27,5 +33,8 @@ public class WebSecurityConfigurer extends WebSecurityConfigurerAdapter {
.httpBasic();
}
-
+ @Bean
+ public BCryptPasswordEncoder passwordEncoder() {
+ return new BCryptPasswordEncoder();
+ }
}
diff --git a/spring-boot-security/src/main/java/com/baeldung/springbootsecurity/oauth2server/config/AuthenticationMananagerConfig.java b/spring-boot-security/src/main/java/com/baeldung/springbootsecurity/oauth2server/config/AuthenticationMananagerConfig.java
new file mode 100644
index 0000000000..2b4135f36d
--- /dev/null
+++ b/spring-boot-security/src/main/java/com/baeldung/springbootsecurity/oauth2server/config/AuthenticationMananagerConfig.java
@@ -0,0 +1,18 @@
+package com.baeldung.springbootsecurity.oauth2server.config;
+
+import org.springframework.context.annotation.Bean;
+import org.springframework.context.annotation.Configuration;
+import org.springframework.context.annotation.Profile;
+import org.springframework.security.authentication.AuthenticationManager;
+import org.springframework.security.config.annotation.web.configuration.WebSecurityConfigurerAdapter;
+
+@Configuration
+@Profile("authz")
+public class AuthenticationMananagerConfig extends WebSecurityConfigurerAdapter {
+
+ @Bean
+ @Override
+ public AuthenticationManager authenticationManagerBean() throws Exception {
+ return super.authenticationManagerBean();
+ }
+}
\ No newline at end of file
diff --git a/spring-boot-security/src/main/java/com/baeldung/springbootsecurity/oauth2server/config/AuthorizationServerConfig.java b/spring-boot-security/src/main/java/com/baeldung/springbootsecurity/oauth2server/config/AuthorizationServerConfig.java
index 4686100638..6e21987a89 100644
--- a/spring-boot-security/src/main/java/com/baeldung/springbootsecurity/oauth2server/config/AuthorizationServerConfig.java
+++ b/spring-boot-security/src/main/java/com/baeldung/springbootsecurity/oauth2server/config/AuthorizationServerConfig.java
@@ -1,9 +1,11 @@
package com.baeldung.springbootsecurity.oauth2server.config;
import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import org.springframework.context.annotation.Profile;
import org.springframework.security.authentication.AuthenticationManager;
+import org.springframework.security.crypto.bcrypt.BCryptPasswordEncoder;
import org.springframework.security.oauth2.config.annotation.configurers.ClientDetailsServiceConfigurer;
import org.springframework.security.oauth2.config.annotation.web.configuration.AuthorizationServerConfigurerAdapter;
import org.springframework.security.oauth2.config.annotation.web.configurers.AuthorizationServerEndpointsConfigurer;
@@ -25,15 +27,20 @@ public class AuthorizationServerConfig extends AuthorizationServerConfigurerAdap
clients
.inMemory()
.withClient("baeldung")
- .secret("{noop}baeldung")
+ .secret(passwordEncoder().encode("baeldung"))
.authorizedGrantTypes("client_credentials", "password", "authorization_code")
.scopes("openid", "read")
.autoApprove(true)
.and()
.withClient("baeldung-admin")
- .secret("{noop}baeldung")
+ .secret(passwordEncoder().encode("baeldung"))
.authorizedGrantTypes("authorization_code", "client_credentials", "refresh_token")
.scopes("read", "write")
.autoApprove(true);
}
+
+ @Bean
+ public BCryptPasswordEncoder passwordEncoder() {
+ return new BCryptPasswordEncoder();
+ }
}
diff --git a/spring-boot-security/src/main/java/com/baeldung/springbootsecurity/oauth2server/config/WebSecurityConfiguration.java b/spring-boot-security/src/main/java/com/baeldung/springbootsecurity/oauth2server/config/WebSecurityConfiguration.java
index f2540c01b8..3a8c073870 100644
--- a/spring-boot-security/src/main/java/com/baeldung/springbootsecurity/oauth2server/config/WebSecurityConfiguration.java
+++ b/spring-boot-security/src/main/java/com/baeldung/springbootsecurity/oauth2server/config/WebSecurityConfiguration.java
@@ -2,10 +2,12 @@ package com.baeldung.springbootsecurity.oauth2server.config;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
+import org.springframework.context.annotation.Profile;
import org.springframework.security.authentication.AuthenticationManager;
import org.springframework.security.config.annotation.web.configuration.WebSecurityConfigurerAdapter;
@Configuration
+@Profile("!authz")
public class WebSecurityConfiguration extends WebSecurityConfigurerAdapter {
@Bean
diff --git a/spring-boot-security/src/main/java/com/baeldung/springsecuritytaglibs/config/SpringBootSecurityTagLibsConfig.java b/spring-boot-security/src/main/java/com/baeldung/springsecuritytaglibs/config/SpringBootSecurityTagLibsConfig.java
index 59ae2885ad..75bc613bd1 100644
--- a/spring-boot-security/src/main/java/com/baeldung/springsecuritytaglibs/config/SpringBootSecurityTagLibsConfig.java
+++ b/spring-boot-security/src/main/java/com/baeldung/springsecuritytaglibs/config/SpringBootSecurityTagLibsConfig.java
@@ -1,10 +1,12 @@
package com.baeldung.springsecuritytaglibs.config;
+import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import org.springframework.security.config.annotation.authentication.builders.AuthenticationManagerBuilder;
import org.springframework.security.config.annotation.web.builders.HttpSecurity;
import org.springframework.security.config.annotation.web.configuration.EnableWebSecurity;
import org.springframework.security.config.annotation.web.configuration.WebSecurityConfigurerAdapter;
+import org.springframework.security.crypto.bcrypt.BCryptPasswordEncoder;
@Configuration
@EnableWebSecurity
@@ -12,9 +14,11 @@ public class SpringBootSecurityTagLibsConfig extends WebSecurityConfigurerAdapte
@Override
protected void configure(AuthenticationManagerBuilder auth) throws Exception {
+ BCryptPasswordEncoder encoder = passwordEncoder();
auth.inMemoryAuthentication()
+ .passwordEncoder(encoder)
.withUser("testUser")
- .password("{noop}password")
+ .password(encoder.encode("password"))
.roles("ADMIN");
}
@@ -28,4 +32,9 @@ public class SpringBootSecurityTagLibsConfig extends WebSecurityConfigurerAdapte
.anyRequest().permitAll().and().httpBasic();
// @formatter:on
}
+
+ @Bean
+ public BCryptPasswordEncoder passwordEncoder() {
+ return new BCryptPasswordEncoder();
+ }
}
\ No newline at end of file
diff --git a/spring-boot-security/src/test/java/com/baeldung/springbootsecurity/basic_auth/BasicAuthConfigurationIntegrationTest.java b/spring-boot-security/src/test/java/com/baeldung/springbootsecurity/basic_auth/BasicAuthConfigurationIntegrationTest.java
index dd9c511361..c091aa6d75 100644
--- a/spring-boot-security/src/test/java/com/baeldung/springbootsecurity/basic_auth/BasicAuthConfigurationIntegrationTest.java
+++ b/spring-boot-security/src/test/java/com/baeldung/springbootsecurity/basic_auth/BasicAuthConfigurationIntegrationTest.java
@@ -16,6 +16,7 @@ import java.net.MalformedURLException;
import java.net.URL;
import static org.junit.Assert.assertEquals;
+import static org.junit.Assert.assertNull;
import static org.junit.Assert.assertTrue;
import static org.springframework.boot.test.context.SpringBootTest.WebEnvironment.RANDOM_PORT;
@RunWith(SpringRunner.class)
@@ -49,6 +50,6 @@ public class BasicAuthConfigurationIntegrationTest {
ResponseEntity response = restTemplate.getForEntity(base.toString(), String.class);
assertEquals(HttpStatus.UNAUTHORIZED, response.getStatusCode());
- Assert.assertNull(response.getBody());
+ assertNull(response.getBody());
}
}
diff --git a/spring-boot-testing/pom.xml b/spring-boot-testing/pom.xml
index caf48276b6..84107070bd 100644
--- a/spring-boot-testing/pom.xml
+++ b/spring-boot-testing/pom.xml
@@ -101,7 +101,7 @@
org.codehaus.gmavenplus
gmavenplus-plugin
- 1.6
+ ${gmavenplus-plugin.version}
@@ -119,6 +119,7 @@
com.baeldung.boot.Application
2.2.4
1.2-groovy-2.4
+ 1.6
diff --git a/spring-cloud/spring-cloud-archaius/additional-sources-simple/src/main/java/com/baeldung/spring/cloud/archaius/additionalsources/config/ApplicationPropertiesConfigurations.java b/spring-cloud/spring-cloud-archaius/additional-sources-simple/src/main/java/com/baeldung/spring/cloud/archaius/additionalsources/config/ApplicationPropertiesConfigurations.java
index f2d8ca2638..04d49d967f 100644
--- a/spring-cloud/spring-cloud-archaius/additional-sources-simple/src/main/java/com/baeldung/spring/cloud/archaius/additionalsources/config/ApplicationPropertiesConfigurations.java
+++ b/spring-cloud/spring-cloud-archaius/additional-sources-simple/src/main/java/com/baeldung/spring/cloud/archaius/additionalsources/config/ApplicationPropertiesConfigurations.java
@@ -1,8 +1,12 @@
package com.baeldung.spring.cloud.archaius.additionalsources.config;
+import java.io.IOException;
+import java.net.URL;
+
import org.apache.commons.configuration.AbstractConfiguration;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
+import org.springframework.core.io.ClassPathResource;
import com.netflix.config.DynamicConfiguration;
import com.netflix.config.FixedDelayPollingScheduler;
@@ -13,8 +17,9 @@ import com.netflix.config.sources.URLConfigurationSource;
public class ApplicationPropertiesConfigurations {
@Bean
- public AbstractConfiguration addApplicationPropertiesSource() {
- PolledConfigurationSource source = new URLConfigurationSource("classpath:other-config.properties");
+ public AbstractConfiguration addApplicationPropertiesSource() throws IOException {
+ URL configPropertyURL = (new ClassPathResource("other-config.properties")).getURL();
+ PolledConfigurationSource source = new URLConfigurationSource(configPropertyURL);
return new DynamicConfiguration(source, new FixedDelayPollingScheduler());
}
diff --git a/spring-cloud/spring-cloud-archaius/additional-sources-simple/src/test/java/org/baeldung/SpringContextIntegrationTest.java b/spring-cloud/spring-cloud-archaius/additional-sources-simple/src/test/java/com/baeldung/spring/cloud/archaius/additionalsources/SpringContextIntegrationTest.java
similarity index 77%
rename from spring-cloud/spring-cloud-archaius/additional-sources-simple/src/test/java/org/baeldung/SpringContextIntegrationTest.java
rename to spring-cloud/spring-cloud-archaius/additional-sources-simple/src/test/java/com/baeldung/spring/cloud/archaius/additionalsources/SpringContextIntegrationTest.java
index e5ebbce1aa..4811ebaa13 100644
--- a/spring-cloud/spring-cloud-archaius/additional-sources-simple/src/test/java/org/baeldung/SpringContextIntegrationTest.java
+++ b/spring-cloud/spring-cloud-archaius/additional-sources-simple/src/test/java/com/baeldung/spring/cloud/archaius/additionalsources/SpringContextIntegrationTest.java
@@ -1,12 +1,10 @@
-package org.baeldung;
+package com.baeldung.spring.cloud.archaius.additionalsources;
import org.junit.Test;
import org.junit.runner.RunWith;
import org.springframework.boot.test.context.SpringBootTest;
import org.springframework.test.context.junit4.SpringRunner;
-import com.baeldung.spring.cloud.archaius.additionalsources.AdditionalSourcesSimpleApplication;
-
@RunWith(SpringRunner.class)
@SpringBootTest(classes = AdditionalSourcesSimpleApplication.class)
public class SpringContextIntegrationTest {
diff --git a/spring-cloud/spring-cloud-aws/src/test/java/com/baeldung/spring/cloud/aws/SpringContextIntegrationTest.java b/spring-cloud/spring-cloud-aws/src/test/java/com/baeldung/spring/cloud/aws/SpringContextIntegrationTest.java
new file mode 100644
index 0000000000..e0026ce441
--- /dev/null
+++ b/spring-cloud/spring-cloud-aws/src/test/java/com/baeldung/spring/cloud/aws/SpringContextIntegrationTest.java
@@ -0,0 +1,15 @@
+package com.baeldung.spring.cloud.aws;
+
+import org.junit.Test;
+import org.junit.runner.RunWith;
+import org.springframework.boot.test.context.SpringBootTest;
+import org.springframework.test.context.junit4.SpringRunner;
+
+@RunWith(SpringRunner.class)
+@SpringBootTest(classes = SpringCloudAwsApplication.class)
+public class SpringContextIntegrationTest {
+
+ @Test
+ public void whenSpringContextIsBootstrapped_thenNoExceptions() {
+ }
+}
diff --git a/spring-cloud/spring-cloud-config/server/src/test/java/com/baeldung/spring/cloud/config/server/ConfigServerListIntegrationTest.java b/spring-cloud/spring-cloud-config/server/src/test/java/com/baeldung/spring/cloud/config/server/SpringContextLiveTest.java
similarity index 68%
rename from spring-cloud/spring-cloud-config/server/src/test/java/com/baeldung/spring/cloud/config/server/ConfigServerListIntegrationTest.java
rename to spring-cloud/spring-cloud-config/server/src/test/java/com/baeldung/spring/cloud/config/server/SpringContextLiveTest.java
index c521a0d2ef..793b4abb6c 100644
--- a/spring-cloud/spring-cloud-config/server/src/test/java/com/baeldung/spring/cloud/config/server/ConfigServerListIntegrationTest.java
+++ b/spring-cloud/spring-cloud-config/server/src/test/java/com/baeldung/spring/cloud/config/server/SpringContextLiveTest.java
@@ -1,18 +1,22 @@
package com.baeldung.spring.cloud.config.server;
-import org.junit.Ignore;
import org.junit.Test;
import org.junit.runner.RunWith;
import org.springframework.boot.test.context.SpringBootTest;
import org.springframework.test.context.junit4.SpringJUnit4ClassRunner;
import org.springframework.test.context.web.WebAppConfiguration;
+
+/**
+ *
+ * The context will load successfully with some properties provided by docker
+ *
+ */
@RunWith(SpringJUnit4ClassRunner.class)
@SpringBootTest(classes = ConfigServer.class)
@WebAppConfiguration
-@Ignore
-public class ConfigServerListIntegrationTest {
+public class SpringContextLiveTest {
@Test
- public void contextLoads() {
+ public void whenSpringContextIsBootstrapped_thenNoExceptions() {
}
}
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 7d00a9f463..8ecda40d0a 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,24 +20,24 @@
org.springframework.cloud
spring-cloud-contract-wiremock
- 1.2.2.RELEASE
+ ${spring-cloud.version}
test
org.springframework.cloud
spring-cloud-contract-stub-runner
- 1.2.2.RELEASE
+ ${spring-cloud.version}
test
org.springframework.boot
spring-boot-starter-web
- 1.5.9.RELEASE
+ ${spring-boot.version}
org.springframework.boot
spring-boot-starter-data-rest
- 1.5.9.RELEASE
+ ${spring-boot.version}
com.baeldung.spring.cloud
@@ -51,5 +51,7 @@
UTF-8
UTF-8
1.8
+ 1.2.2.RELEASE
+ 1.5.9.RELEASE
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 a6bd4e1be4..47759a818a 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,12 @@
org.springframework.boot
spring-boot-starter-web
- 1.5.9.RELEASE
+ ${spring-boot.version}
org.springframework.boot
spring-boot-starter-data-rest
- 1.5.9.RELEASE
+ ${spring-boot.version}
@@ -66,6 +66,7 @@
UTF-8
1.8
Edgware.SR1
+ 1.5.9.RELEASE
diff --git a/spring-cloud/spring-cloud-eureka/pom.xml b/spring-cloud/spring-cloud-eureka/pom.xml
index b59b415ee2..924981765c 100644
--- a/spring-cloud/spring-cloud-eureka/pom.xml
+++ b/spring-cloud/spring-cloud-eureka/pom.xml
@@ -21,6 +21,15 @@
1.0.0-SNAPSHOT
..
+
+
+
+ org.springframework.boot
+ spring-boot-starter-test
+ ${spring-boot.version}
+ test
+
+
2.0.1.RELEASE
diff --git a/spring-cloud/spring-cloud-eureka/spring-cloud-eureka-client/pom.xml b/spring-cloud/spring-cloud-eureka/spring-cloud-eureka-client/pom.xml
index c2d64ce237..85fa6606d2 100644
--- a/spring-cloud/spring-cloud-eureka/spring-cloud-eureka-client/pom.xml
+++ b/spring-cloud/spring-cloud-eureka/spring-cloud-eureka-client/pom.xml
@@ -26,12 +26,6 @@
spring-boot-starter-web
${spring-boot.version}
-
- org.springframework.boot
- spring-boot-starter-test
- ${spring-boot.version}
- test
-
diff --git a/spring-cloud/spring-cloud-eureka/spring-cloud-eureka-client/src/test/java/com/baeldung/spring/cloud/eureka/client/SpringContextIntegrationTest.java b/spring-cloud/spring-cloud-eureka/spring-cloud-eureka-client/src/test/java/com/baeldung/spring/cloud/eureka/client/SpringContextIntegrationTest.java
new file mode 100644
index 0000000000..8e379fd5a0
--- /dev/null
+++ b/spring-cloud/spring-cloud-eureka/spring-cloud-eureka-client/src/test/java/com/baeldung/spring/cloud/eureka/client/SpringContextIntegrationTest.java
@@ -0,0 +1,16 @@
+package com.baeldung.spring.cloud.eureka.client;
+
+import org.junit.Test;
+import org.junit.runner.RunWith;
+import org.springframework.boot.test.context.SpringBootTest;
+import org.springframework.test.context.junit4.SpringRunner;
+
+@RunWith(SpringRunner.class)
+@SpringBootTest
+public class SpringContextIntegrationTest {
+
+ @Test
+ public void whenSpringContextIsBootstrapped_thenNoExceptions() {
+ }
+
+}
diff --git a/spring-cloud/spring-cloud-aws/src/test/java/org/baeldung/SpringContextIntegrationTest.java b/spring-cloud/spring-cloud-eureka/spring-cloud-eureka-feign-client/src/test/java/com/baeldung/spring/cloud/feign/client/SpringContextIntegrationTest.java
similarity index 69%
rename from spring-cloud/spring-cloud-aws/src/test/java/org/baeldung/SpringContextIntegrationTest.java
rename to spring-cloud/spring-cloud-eureka/spring-cloud-eureka-feign-client/src/test/java/com/baeldung/spring/cloud/feign/client/SpringContextIntegrationTest.java
index fcba9c4132..ff742735b3 100644
--- a/spring-cloud/spring-cloud-aws/src/test/java/org/baeldung/SpringContextIntegrationTest.java
+++ b/spring-cloud/spring-cloud-eureka/spring-cloud-eureka-feign-client/src/test/java/com/baeldung/spring/cloud/feign/client/SpringContextIntegrationTest.java
@@ -1,17 +1,16 @@
-package org.baeldung;
+package com.baeldung.spring.cloud.feign.client;
import org.junit.Test;
import org.junit.runner.RunWith;
import org.springframework.boot.test.context.SpringBootTest;
import org.springframework.test.context.junit4.SpringRunner;
-import com.baeldung.spring.cloud.aws.InstanceProfileAwsApplication;
-
@RunWith(SpringRunner.class)
-@SpringBootTest(classes = InstanceProfileAwsApplication.class)
+@SpringBootTest
public class SpringContextIntegrationTest {
@Test
public void whenSpringContextIsBootstrapped_thenNoExceptions() {
}
+
}
diff --git a/spring-cloud/spring-cloud-eureka/spring-cloud-eureka-server/src/test/java/com/baeldung/spring/cloud/eureka/server/SpringContextIntegrationTest.java b/spring-cloud/spring-cloud-eureka/spring-cloud-eureka-server/src/test/java/com/baeldung/spring/cloud/eureka/server/SpringContextIntegrationTest.java
new file mode 100644
index 0000000000..f03913b474
--- /dev/null
+++ b/spring-cloud/spring-cloud-eureka/spring-cloud-eureka-server/src/test/java/com/baeldung/spring/cloud/eureka/server/SpringContextIntegrationTest.java
@@ -0,0 +1,16 @@
+package com.baeldung.spring.cloud.eureka.server;
+
+import org.junit.Test;
+import org.junit.runner.RunWith;
+import org.springframework.boot.test.context.SpringBootTest;
+import org.springframework.test.context.junit4.SpringRunner;
+
+@RunWith(SpringRunner.class)
+@SpringBootTest
+public class SpringContextIntegrationTest {
+
+ @Test
+ public void whenSpringContextIsBootstrapped_thenNoExceptions() {
+ }
+
+}
diff --git a/spring-cloud/spring-cloud-hystrix/feign-rest-consumer/src/test/java/com/baeldung/spring/cloud/hystrix/rest/consumer/SpringContextIntegrationTest.java b/spring-cloud/spring-cloud-hystrix/feign-rest-consumer/src/test/java/com/baeldung/spring/cloud/hystrix/rest/consumer/SpringContextIntegrationTest.java
new file mode 100644
index 0000000000..47ee5dcd49
--- /dev/null
+++ b/spring-cloud/spring-cloud-hystrix/feign-rest-consumer/src/test/java/com/baeldung/spring/cloud/hystrix/rest/consumer/SpringContextIntegrationTest.java
@@ -0,0 +1,18 @@
+package com.baeldung.spring.cloud.hystrix.rest.consumer;
+
+import org.junit.Test;
+import org.junit.runner.RunWith;
+import org.springframework.test.context.ContextConfiguration;
+import org.springframework.test.context.junit4.SpringJUnit4ClassRunner;
+import org.springframework.test.context.web.WebAppConfiguration;
+
+@RunWith(SpringJUnit4ClassRunner.class)
+@ContextConfiguration(classes = RestConsumerFeignApplication.class)
+@WebAppConfiguration
+public class SpringContextIntegrationTest {
+
+ @Test
+ public void whenSpringContextIsBootstrapped_thenNoExceptions() {
+ }
+
+}
diff --git a/spring-cloud/spring-cloud-hystrix/rest-consumer/pom.xml b/spring-cloud/spring-cloud-hystrix/rest-consumer/pom.xml
index ec2f6d1e55..43ccfcc26d 100644
--- a/spring-cloud/spring-cloud-hystrix/rest-consumer/pom.xml
+++ b/spring-cloud/spring-cloud-hystrix/rest-consumer/pom.xml
@@ -40,6 +40,13 @@
spring-boot-starter-actuator
${spring-boot-starter-web.version}
+
+
+ org.springframework.boot
+ spring-boot-starter-test
+ test
+ ${spring-boot-starter-web.version}
+
@@ -53,5 +60,10 @@
+
+
+
+ 1.10.19
+
diff --git a/spring-cloud/spring-cloud-config/server/src/test/java/org/baeldung/SpringContextIntegrationTest.java b/spring-cloud/spring-cloud-hystrix/rest-consumer/src/test/java/com/baeldung/spring/cloud/hystrix/rest/consumer/SpringContextIntegrationTest.java
similarity index 55%
rename from spring-cloud/spring-cloud-config/server/src/test/java/org/baeldung/SpringContextIntegrationTest.java
rename to spring-cloud/spring-cloud-hystrix/rest-consumer/src/test/java/com/baeldung/spring/cloud/hystrix/rest/consumer/SpringContextIntegrationTest.java
index cd30392d4f..3af30acc51 100644
--- a/spring-cloud/spring-cloud-config/server/src/test/java/org/baeldung/SpringContextIntegrationTest.java
+++ b/spring-cloud/spring-cloud-hystrix/rest-consumer/src/test/java/com/baeldung/spring/cloud/hystrix/rest/consumer/SpringContextIntegrationTest.java
@@ -1,18 +1,18 @@
-package org.baeldung;
+package com.baeldung.spring.cloud.hystrix.rest.consumer;
import org.junit.Test;
import org.junit.runner.RunWith;
-import org.springframework.boot.test.context.SpringBootTest;
+import org.springframework.test.context.ContextConfiguration;
import org.springframework.test.context.junit4.SpringJUnit4ClassRunner;
import org.springframework.test.context.web.WebAppConfiguration;
-import com.baeldung.spring.cloud.config.server.ConfigServer;
-
@RunWith(SpringJUnit4ClassRunner.class)
-@SpringBootTest(classes = ConfigServer.class)
+@ContextConfiguration(classes = RestConsumerApplication.class)
@WebAppConfiguration
public class SpringContextIntegrationTest {
+
@Test
- public void contextLoads() {
+ public void whenSpringContextIsBootstrapped_thenNoExceptions() {
}
+
}
diff --git a/spring-cloud/spring-cloud-hystrix/rest-producer/pom.xml b/spring-cloud/spring-cloud-hystrix/rest-producer/pom.xml
index 0f84fb7e23..07437634f5 100644
--- a/spring-cloud/spring-cloud-hystrix/rest-producer/pom.xml
+++ b/spring-cloud/spring-cloud-hystrix/rest-producer/pom.xml
@@ -20,6 +20,18 @@
spring-boot-starter-web
${spring-boot-starter-web.version}
+
+
+ org.springframework.boot
+ spring-boot-starter-test
+ ${spring-boot-starter-web.version}
+ test
+
+
+
+
+ 1.10.19
+
diff --git a/spring-cloud/spring-cloud-hystrix/rest-producer/src/test/java/com/baeldung/spring/cloud/hystrix/rest/producer/SpringContextIntegrationTest.java b/spring-cloud/spring-cloud-hystrix/rest-producer/src/test/java/com/baeldung/spring/cloud/hystrix/rest/producer/SpringContextIntegrationTest.java
new file mode 100644
index 0000000000..de696dc2b1
--- /dev/null
+++ b/spring-cloud/spring-cloud-hystrix/rest-producer/src/test/java/com/baeldung/spring/cloud/hystrix/rest/producer/SpringContextIntegrationTest.java
@@ -0,0 +1,16 @@
+package com.baeldung.spring.cloud.hystrix.rest.producer;
+
+import org.junit.Test;
+import org.junit.runner.RunWith;
+import org.springframework.boot.test.context.SpringBootTest;
+import org.springframework.test.context.junit4.SpringRunner;
+
+@RunWith(SpringRunner.class)
+@SpringBootTest
+public class SpringContextIntegrationTest {
+
+ @Test
+ public void whenSpringContextIsBootstrapped_thenNoExceptions() {
+ }
+
+}
diff --git a/spring-cloud/spring-cloud-zuul-eureka-integration/eureka-client/pom.xml b/spring-cloud/spring-cloud-zuul-eureka-integration/eureka-client/pom.xml
index 0b479ec226..af7df71d17 100644
--- a/spring-cloud/spring-cloud-zuul-eureka-integration/eureka-client/pom.xml
+++ b/spring-cloud/spring-cloud-zuul-eureka-integration/eureka-client/pom.xml
@@ -25,6 +25,13 @@
spring-boot-starter-web
${spring-boot-starter-web.version}
+
+
+ org.springframework.boot
+ spring-boot-starter-test
+ ${spring-boot-starter-web.version}
+ test
+
diff --git a/spring-cloud/spring-cloud-zuul-eureka-integration/eureka-client/src/test/java/com/baeldung/spring/cloud/eureka/client/SpringContextIntegrationTest.java b/spring-cloud/spring-cloud-zuul-eureka-integration/eureka-client/src/test/java/com/baeldung/spring/cloud/eureka/client/SpringContextIntegrationTest.java
new file mode 100644
index 0000000000..9eaff8f510
--- /dev/null
+++ b/spring-cloud/spring-cloud-zuul-eureka-integration/eureka-client/src/test/java/com/baeldung/spring/cloud/eureka/client/SpringContextIntegrationTest.java
@@ -0,0 +1,16 @@
+package com.baeldung.spring.cloud.eureka.client;
+
+import org.junit.Test;
+import org.junit.runner.RunWith;
+import org.springframework.boot.test.context.SpringBootTest;
+import org.springframework.test.context.junit4.SpringRunner;
+
+@RunWith(SpringRunner.class)
+@SpringBootTest
+public class SpringContextIntegrationTest {
+
+ @Test
+ public void whenSpringContextIsBootstrapped_thenNoExceptions() {
+ }
+
+}
diff --git a/spring-cloud/spring-cloud-zuul-eureka-integration/eureka-server/pom.xml b/spring-cloud/spring-cloud-zuul-eureka-integration/eureka-server/pom.xml
index eea22779a6..d1f618507f 100644
--- a/spring-cloud/spring-cloud-zuul-eureka-integration/eureka-server/pom.xml
+++ b/spring-cloud/spring-cloud-zuul-eureka-integration/eureka-server/pom.xml
@@ -25,7 +25,13 @@
commons-configuration
${commons-config.version}
-
+
+
+ org.springframework.boot
+ spring-boot-starter-test
+ ${spring-boot-starter-web.version}
+ test
+
diff --git a/spring-cloud/spring-cloud-zuul-eureka-integration/eureka-server/src/test/java/com/baeldung/spring/cloud/eureka/server/SpringContextIntegrationTest.java b/spring-cloud/spring-cloud-zuul-eureka-integration/eureka-server/src/test/java/com/baeldung/spring/cloud/eureka/server/SpringContextIntegrationTest.java
new file mode 100644
index 0000000000..f03913b474
--- /dev/null
+++ b/spring-cloud/spring-cloud-zuul-eureka-integration/eureka-server/src/test/java/com/baeldung/spring/cloud/eureka/server/SpringContextIntegrationTest.java
@@ -0,0 +1,16 @@
+package com.baeldung.spring.cloud.eureka.server;
+
+import org.junit.Test;
+import org.junit.runner.RunWith;
+import org.springframework.boot.test.context.SpringBootTest;
+import org.springframework.test.context.junit4.SpringRunner;
+
+@RunWith(SpringRunner.class)
+@SpringBootTest
+public class SpringContextIntegrationTest {
+
+ @Test
+ public void whenSpringContextIsBootstrapped_thenNoExceptions() {
+ }
+
+}
diff --git a/spring-cloud/spring-cloud-zuul-eureka-integration/zuul-server/pom.xml b/spring-cloud/spring-cloud-zuul-eureka-integration/zuul-server/pom.xml
index 39f94efdf0..57a11f3385 100644
--- a/spring-cloud/spring-cloud-zuul-eureka-integration/zuul-server/pom.xml
+++ b/spring-cloud/spring-cloud-zuul-eureka-integration/zuul-server/pom.xml
@@ -33,6 +33,13 @@
rxjava
${rxjava.version}
+
+
+ org.springframework.boot
+ spring-boot-starter-test
+ ${spring-boot-starter-web.version}
+ test
+
diff --git a/spring-cloud/spring-cloud-zuul-eureka-integration/zuul-server/src/test/java/com/baeldung/spring/cloud/zuul/config/SpringContextIntegrationTest.java b/spring-cloud/spring-cloud-zuul-eureka-integration/zuul-server/src/test/java/com/baeldung/spring/cloud/zuul/config/SpringContextIntegrationTest.java
new file mode 100644
index 0000000000..cfd362edf8
--- /dev/null
+++ b/spring-cloud/spring-cloud-zuul-eureka-integration/zuul-server/src/test/java/com/baeldung/spring/cloud/zuul/config/SpringContextIntegrationTest.java
@@ -0,0 +1,16 @@
+package com.baeldung.spring.cloud.zuul.config;
+
+import org.junit.Test;
+import org.junit.runner.RunWith;
+import org.springframework.boot.test.context.SpringBootTest;
+import org.springframework.test.context.junit4.SpringRunner;
+
+@RunWith(SpringRunner.class)
+@SpringBootTest
+public class SpringContextIntegrationTest {
+
+ @Test
+ public void whenSpringContextIsBootstrapped_thenNoExceptions() {
+ }
+
+}
diff --git a/spring-freemarker/pom.xml b/spring-freemarker/pom.xml
index c71643dc39..40558476ef 100644
--- a/spring-freemarker/pom.xml
+++ b/spring-freemarker/pom.xml
@@ -48,7 +48,7 @@
org.springframework.boot
spring-boot-starter-test
- 1.5.10.RELEASE
+ ${spring-boot.version}
test
@@ -59,6 +59,7 @@
2.3.28
3.1.0
false
+ 1.5.10.RELEASE
diff --git a/spring-jersey/pom.xml b/spring-jersey/pom.xml
index c12f6a1241..5a12d27180 100644
--- a/spring-jersey/pom.xml
+++ b/spring-jersey/pom.xml
@@ -95,28 +95,28 @@
com.github.tomakehurst
wiremock
- 1.58
+ ${wiremock.version}
test
com.fasterxml.jackson.jaxrs
jackson-jaxrs-json-provider
- 2.9.7
+ ${jackson.version}
com.fasterxml.jackson.core
jackson-databind
- 2.9.7
+ ${jackson.version}
org.slf4j
slf4j-jdk14
- 1.7.25
+ ${org.slf4j.version}
org.assertj
assertj-core
- 3.10.0
+ ${assertj-core.version}
test
@@ -124,7 +124,7 @@
org.springframework.boot
spring-boot-starter-test
- 1.5.10.RELEASE
+ ${spring-boot.version}
test
@@ -228,6 +228,9 @@
4.4.9
4.5.5
4.0.0
+ 1.58
+ 3.10.0
+ 1.5.10.RELEASE
diff --git a/javax-servlets/src/main/java/com/baeldung/filters/EmptyParamFilter.java b/spring-mvc-java/src/main/java/com/baeldung/filters/EmptyParamFilter.java
similarity index 100%
rename from javax-servlets/src/main/java/com/baeldung/filters/EmptyParamFilter.java
rename to spring-mvc-java/src/main/java/com/baeldung/filters/EmptyParamFilter.java
diff --git a/javax-servlets/src/main/java/com/baeldung/listeners/AppListener.java b/spring-mvc-java/src/main/java/com/baeldung/listeners/AppListener.java
similarity index 100%
rename from javax-servlets/src/main/java/com/baeldung/listeners/AppListener.java
rename to spring-mvc-java/src/main/java/com/baeldung/listeners/AppListener.java
diff --git a/javax-servlets/src/main/java/com/baeldung/listeners/RequestListener.java b/spring-mvc-java/src/main/java/com/baeldung/listeners/RequestListener.java
similarity index 100%
rename from javax-servlets/src/main/java/com/baeldung/listeners/RequestListener.java
rename to spring-mvc-java/src/main/java/com/baeldung/listeners/RequestListener.java
diff --git a/javax-servlets/src/main/java/com/baeldung/servlets/CounterServlet.java b/spring-mvc-java/src/main/java/com/baeldung/servlets/CounterServlet.java
similarity index 100%
rename from javax-servlets/src/main/java/com/baeldung/servlets/CounterServlet.java
rename to spring-mvc-java/src/main/java/com/baeldung/servlets/CounterServlet.java
diff --git a/javax-servlets/src/main/java/com/baeldung/servlets/UppercaseServlet.java b/spring-mvc-java/src/main/java/com/baeldung/servlets/UppercaseServlet.java
similarity index 100%
rename from javax-servlets/src/main/java/com/baeldung/servlets/UppercaseServlet.java
rename to spring-mvc-java/src/main/java/com/baeldung/servlets/UppercaseServlet.java
diff --git a/spring-mvc-simple-2/pom.xml b/spring-mvc-simple-2/pom.xml
new file mode 100644
index 0000000000..74302cff78
--- /dev/null
+++ b/spring-mvc-simple-2/pom.xml
@@ -0,0 +1,37 @@
+
+
+ 4.0.0
+ spring-mvc-simple-2
+ war
+ spring-mvc-simple-2
+
+
+ com.baeldung
+ parent-boot-2
+ 0.0.1-SNAPSHOT
+ ../parent-boot-2
+
+
+
+
+ org.springframework.boot
+ spring-boot-starter-web
+
+
+
+
+ 1.8
+ 1.8
+
+
+
+
+
+ org.apache.maven.plugins
+ maven-war-plugin
+
+
+ spring-mvc-simple2
+
+
diff --git a/spring-mvc-simple-2/src/main/java/com/baeldung/spring/Application.java b/spring-mvc-simple-2/src/main/java/com/baeldung/spring/Application.java
new file mode 100644
index 0000000000..40a0a55761
--- /dev/null
+++ b/spring-mvc-simple-2/src/main/java/com/baeldung/spring/Application.java
@@ -0,0 +1,11 @@
+package com.baeldung.spring;
+
+import org.springframework.boot.SpringApplication;
+import org.springframework.boot.autoconfigure.SpringBootApplication;
+
+@SpringBootApplication
+public class Application {
+ public static void main(String[] args) {
+ SpringApplication.run(Application.class, args);
+ }
+}
diff --git a/spring-mvc-simple-2/src/main/java/com/baeldung/spring/headers/controller/ReadHeaderRestController.java b/spring-mvc-simple-2/src/main/java/com/baeldung/spring/headers/controller/ReadHeaderRestController.java
new file mode 100644
index 0000000000..6a0f3b6a0d
--- /dev/null
+++ b/spring-mvc-simple-2/src/main/java/com/baeldung/spring/headers/controller/ReadHeaderRestController.java
@@ -0,0 +1,97 @@
+package com.baeldung.spring.headers.controller;
+
+import java.net.InetSocketAddress;
+import java.util.Map;
+import java.util.stream.Collectors;
+
+import org.apache.commons.logging.Log;
+import org.apache.commons.logging.LogFactory;
+import org.springframework.http.HttpHeaders;
+import org.springframework.http.HttpStatus;
+import org.springframework.http.ResponseEntity;
+import org.springframework.util.MultiValueMap;
+import org.springframework.web.bind.annotation.GetMapping;
+import org.springframework.web.bind.annotation.RequestHeader;
+import org.springframework.web.bind.annotation.RestController;
+
+@RestController
+public class ReadHeaderRestController {
+ private static final Log LOG = LogFactory.getLog(ReadHeaderRestController.class);
+
+ @GetMapping("/")
+ public ResponseEntity index() {
+ return new ResponseEntity("Index", HttpStatus.OK);
+ }
+
+ @GetMapping("/greeting")
+ public ResponseEntity greeting(@RequestHeader(value = "accept-language") String language) {
+ String greeting = "";
+ String firstLanguage = (language.length() > 1 ? language.substring(0, 2) : language);
+ switch (firstLanguage) {
+ case "es":
+ greeting = "Hola!";
+ break;
+ case "de":
+ greeting = "Hallo!";
+ break;
+ case "fr":
+ greeting = "Bonjour!";
+ break;
+ case "en":
+ default:
+ greeting = "Hello!";
+ break;
+ }
+
+ return new ResponseEntity(greeting, HttpStatus.OK);
+ }
+
+ @GetMapping("/double")
+ public ResponseEntity doubleNumber(@RequestHeader("my-number") int myNumber) {
+ return new ResponseEntity(
+ String.format("%d * 2 = %d", myNumber, (myNumber * 2)),
+ HttpStatus.OK);
+ }
+
+ @GetMapping("/listHeaders")
+ public ResponseEntity listAllHeaders(@RequestHeader Map headers) {
+
+ headers.forEach((key, value) -> {
+ LOG.info(String.format("Header '%s' = %s", key, value));
+ });
+
+ return new ResponseEntity(String.format("Listed %d headers", headers.size()), HttpStatus.OK);
+ }
+
+ @GetMapping("/multiValue")
+ public ResponseEntity multiValue(@RequestHeader MultiValueMap headers) {
+ headers.forEach((key, value) -> {
+ LOG.info(String.format("Header '%s' = %s", key, value.stream().collect(Collectors.joining("|"))));
+ });
+
+ return new ResponseEntity(String.format("Listed %d headers", headers.size()), HttpStatus.OK);
+ }
+
+ @GetMapping("/getBaseUrl")
+ public ResponseEntity getBaseUrl(@RequestHeader HttpHeaders headers) {
+ InetSocketAddress host = headers.getHost();
+ String url = "http://" + host.getHostName() + ":" + host.getPort();
+ return new ResponseEntity(String.format("Base URL = %s", url), HttpStatus.OK);
+ }
+
+ @GetMapping("/nonRequiredHeader")
+ public ResponseEntity evaluateNonRequiredHeader(
+ @RequestHeader(value = "optional-header", required = false) String optionalHeader) {
+
+ return new ResponseEntity(
+ String.format("Was the optional header present? %s!", (optionalHeader == null ? "No" : "Yes")),
+ HttpStatus.OK);
+ }
+
+ @GetMapping("/default")
+ public ResponseEntity evaluateDefaultHeaderValue(
+ @RequestHeader(value = "optional-header", defaultValue = "3600") int optionalHeader) {
+
+ return new ResponseEntity(String.format("Optional Header is %d", optionalHeader), HttpStatus.OK);
+ }
+}
diff --git a/spring-mvc-simple-2/src/test/java/com/baeldung/AppContextIntegrationTest.java b/spring-mvc-simple-2/src/test/java/com/baeldung/AppContextIntegrationTest.java
new file mode 100644
index 0000000000..27207688e6
--- /dev/null
+++ b/spring-mvc-simple-2/src/test/java/com/baeldung/AppContextIntegrationTest.java
@@ -0,0 +1,13 @@
+package com.baeldung;
+
+import org.junit.jupiter.api.Test;
+import org.springframework.boot.test.context.SpringBootTest;
+
+import com.baeldung.spring.Application;
+
+@SpringBootTest(classes = Application.class)
+public class AppContextIntegrationTest {
+ @Test
+ public void contextLoads() {
+ }
+}
diff --git a/spring-mvc-simple-2/src/test/java/com/baeldung/headers/controller/ReadHeaderRestControllerIntegrationTest.java b/spring-mvc-simple-2/src/test/java/com/baeldung/headers/controller/ReadHeaderRestControllerIntegrationTest.java
new file mode 100644
index 0000000000..6f94004cc7
--- /dev/null
+++ b/spring-mvc-simple-2/src/test/java/com/baeldung/headers/controller/ReadHeaderRestControllerIntegrationTest.java
@@ -0,0 +1,86 @@
+package com.baeldung.headers.controller;
+
+import static org.springframework.test.web.servlet.request.MockMvcRequestBuilders.get;
+import static org.springframework.test.web.servlet.result.MockMvcResultMatchers.content;
+import static org.springframework.test.web.servlet.result.MockMvcResultMatchers.status;
+
+import org.apache.commons.logging.Log;
+import org.apache.commons.logging.LogFactory;
+import org.junit.jupiter.api.BeforeEach;
+import org.junit.jupiter.api.Test;
+import org.junit.jupiter.api.extension.ExtendWith;
+import org.springframework.context.annotation.Configuration;
+import org.springframework.test.context.junit.jupiter.SpringExtension;
+import org.springframework.test.context.junit.jupiter.web.SpringJUnitWebConfig;
+import org.springframework.test.web.servlet.MockMvc;
+import org.springframework.test.web.servlet.setup.MockMvcBuilders;
+
+import com.baeldung.spring.headers.controller.ReadHeaderRestController;
+
+@SpringJUnitWebConfig(ReadHeaderRestControllerIntegrationTest.Config.class)
+@ExtendWith(SpringExtension.class)
+public class ReadHeaderRestControllerIntegrationTest {
+ private static final Log LOG = LogFactory.getLog(ReadHeaderRestControllerIntegrationTest.class);
+
+ @Configuration
+ static class Config {
+
+ }
+
+ private MockMvc mockMvc;
+
+ @BeforeEach
+ public void setUp() {
+ mockMvc = MockMvcBuilders.standaloneSetup(new ReadHeaderRestController())
+ .build();
+ }
+
+ @Test
+ public void whenGetRequestSentToAllHeaders_thenStatusOkAndTextReturned() throws Exception {
+ mockMvc.perform(get("/listHeaders").header("my-header", "Test"))
+ .andExpect(status().isOk())
+ .andExpect(content().string("Listed 1 headers"));
+ }
+
+ @Test
+ public void whenGetRequestSentToMultiValue_thenStatusOkAndTextReturned() throws Exception {
+ mockMvc.perform(get("/multiValue").header("my-header", "ABC", "DEF", "GHI"))
+ .andExpect(status().isOk())
+ .andExpect(content().string("Listed 1 headers"));
+ }
+
+ @Test
+ public void whenGetRequestSentToGreeting_thenStatusOKAndGreetingReturned() throws Exception {
+ mockMvc.perform(get("/greeting").header("accept-language", "de"))
+ .andExpect(status().isOk())
+ .andExpect(content().string("Hallo!"));
+ }
+
+ @Test
+ public void whenGetRequestSentToDouble_thenStatusOKAndCorrectResultReturned() throws Exception {
+ mockMvc.perform(get("/double").header("my-number", 2))
+ .andExpect(status().isOk())
+ .andExpect(content().string("2 * 2 = 4"));
+ }
+
+ @Test
+ public void whenGetRequestSentToGetBaseUrl_thenStatusOkAndHostReturned() throws Exception {
+ mockMvc.perform(get("/getBaseUrl").header("host", "localhost:8080"))
+ .andExpect(status().isOk())
+ .andExpect(content().string("Base URL = http://localhost:8080"));
+ }
+
+ @Test
+ public void whenGetRequestSentToNonRequiredHeaderWithoutHeader_thenStatusOKAndMessageReturned() throws Exception {
+ mockMvc.perform(get("/nonRequiredHeader"))
+ .andExpect(status().isOk())
+ .andExpect(content().string("Was the optional header present? No!"));
+ }
+
+ @Test
+ public void whenGetRequestSentToDefaultWithoutHeader_thenStatusOKAndMessageReturned() throws Exception {
+ mockMvc.perform(get("/default"))
+ .andExpect(status().isOk())
+ .andExpect(content().string("Optional Header is 3600"));
+ }
+}
diff --git a/spring-mvc-simple/pom.xml b/spring-mvc-simple/pom.xml
index b9ed3a3e81..cdd4a9e13a 100644
--- a/spring-mvc-simple/pom.xml
+++ b/spring-mvc-simple/pom.xml
@@ -22,7 +22,7 @@
com.sun.mail
javax.mail
- 1.6.1
+ ${javax.mail.version}
javax.servlet
@@ -182,6 +182,7 @@
5.1.0
20180130
3.0.8
+ 1.6.1
diff --git a/spring-mvc-xml/pom.xml b/spring-mvc-xml/pom.xml
index c6a6da406c..beea8e5ee2 100644
--- a/spring-mvc-xml/pom.xml
+++ b/spring-mvc-xml/pom.xml
@@ -88,7 +88,7 @@
org.springframework.boot
spring-boot-starter-test
- 1.5.10.RELEASE
+ ${spring-boot.version}
test
@@ -118,6 +118,7 @@
5.0.2.RELEASE
+ 1.5.10.RELEASE
5.1.40
diff --git a/spring-reactor/pom.xml b/spring-reactor/pom.xml
index 051244c9db..2d69096c58 100644
--- a/spring-reactor/pom.xml
+++ b/spring-reactor/pom.xml
@@ -27,12 +27,17 @@
io.projectreactor
reactor-bus
- 2.0.8.RELEASE
+ ${reactor.version}
io.projectreactor
reactor-core
- 2.0.8.RELEASE
+ ${reactor.version}
+
+
+ 2.0.2.RELEASE
+ 2.0.8.RELEASE
+
diff --git a/spring-rest-hal-browser/pom.xml b/spring-rest-hal-browser/pom.xml
index 413aad9e8c..cc3b1b65fe 100644
--- a/spring-rest-hal-browser/pom.xml
+++ b/spring-rest-hal-browser/pom.xml
@@ -8,6 +8,13 @@
1.0-SNAPSHOT
spring-rest-hal-browser
+
+ parent-boot-1
+ com.baeldung
+ 0.0.1-SNAPSHOT
+ ../parent-boot-1
+
+
diff --git a/spring-security-mvc-jsonview/pom.xml b/spring-security-mvc-jsonview/pom.xml
index b6d3e7e399..8fa7b4ffb5 100644
--- a/spring-security-mvc-jsonview/pom.xml
+++ b/spring-security-mvc-jsonview/pom.xml
@@ -20,17 +20,17 @@
com.fasterxml.jackson.core
jackson-core
- 2.9.7
+ ${jackson.version}
com.fasterxml.jackson.core
jackson-annotations
- 2.9.7
+ ${jackson.version}
com.fasterxml.jackson.core
jackson-databind
- 2.9.7
+ ${jackson.version}
@@ -139,7 +139,7 @@
com.jayway.jsonpath
json-path
- 2.4.0
+ ${json-path.version}
test
@@ -213,6 +213,7 @@
2.6
1.6.1
+ 2.4.0
diff --git a/spring-security-mvc-persisted-remember-me/pom.xml b/spring-security-mvc-persisted-remember-me/pom.xml
index c65b7a30cb..d10565255d 100644
--- a/spring-security-mvc-persisted-remember-me/pom.xml
+++ b/spring-security-mvc-persisted-remember-me/pom.xml
@@ -137,7 +137,7 @@
org.springframework.boot
spring-boot-starter-test
- 1.5.10.RELEASE
+ ${spring-boot.version}
test
@@ -211,7 +211,7 @@
2.6
1.6.1
-
+ 1.5.10.RELEASE
\ No newline at end of file
diff --git a/spring-security-stormpath/pom.xml b/spring-security-stormpath/pom.xml
index dd6037a22c..6db4b38d80 100644
--- a/spring-security-stormpath/pom.xml
+++ b/spring-security-stormpath/pom.xml
@@ -32,7 +32,7 @@
com.stormpath.spring
stormpath-default-spring-boot-starter
- 1.5.4
+ ${stormpath-spring.version}
@@ -60,5 +60,9 @@
+
+
+ 1.5.4
+
diff --git a/spring-session/spring-session-jdbc/pom.xml b/spring-session/spring-session-jdbc/pom.xml
index a98c4b3429..b46b549ce2 100644
--- a/spring-session/spring-session-jdbc/pom.xml
+++ b/spring-session/spring-session-jdbc/pom.xml
@@ -10,10 +10,6 @@
jar
Spring Session with JDBC tutorial
-
- 1.4.197
-
-
parent-boot-2
com.baeldung
@@ -52,5 +48,8 @@
+
+ 1.4.197
+
\ No newline at end of file
diff --git a/tensorflow-java/pom.xml b/tensorflow-java/pom.xml
index e9d92157e8..f52cd4a68f 100644
--- a/tensorflow-java/pom.xml
+++ b/tensorflow-java/pom.xml
@@ -15,12 +15,6 @@
1.0.0-SNAPSHOT
-
- 1.8
- 1.12.0
- 5.4.0
-
-
org.tensorflow
@@ -49,4 +43,10 @@
+
+
+ 1.8
+ 1.12.0
+ 5.4.0
+
\ No newline at end of file
diff --git a/testing-modules/load-testing-comparison/pom.xml b/testing-modules/load-testing-comparison/pom.xml
index 63472d0467..44014e96ab 100644
--- a/testing-modules/load-testing-comparison/pom.xml
+++ b/testing-modules/load-testing-comparison/pom.xml
@@ -42,7 +42,7 @@
com.fasterxml.jackson.core
jackson-databind
- 2.9.4
+ ${jackson.version}
org.springframework.boot
@@ -68,12 +68,12 @@
com.h2database
h2
- 1.4.197
+ ${h2.version}
org.projectlombok
lombok
- 1.18.2
+ ${lombok.version}
compile
@@ -145,6 +145,7 @@
5.0
3.11
2.0.5.RELEASE
+ 1.4.197
\ No newline at end of file
diff --git a/testing-modules/parallel-tests-junit/math-test-functions/pom.xml b/testing-modules/parallel-tests-junit/math-test-functions/pom.xml
index a3569714ef..cc9f27de05 100644
--- a/testing-modules/parallel-tests-junit/math-test-functions/pom.xml
+++ b/testing-modules/parallel-tests-junit/math-test-functions/pom.xml
@@ -18,7 +18,7 @@
junit
junit
- 4.12
+ ${junit.version}
test
diff --git a/testing-modules/parallel-tests-junit/math-test-functions/src/test/java/com/baeldung/ArithmeticFunctionTest.java b/testing-modules/parallel-tests-junit/math-test-functions/src/test/java/com/baeldung/ArithmeticFunctionUnitTest.java
similarity index 93%
rename from testing-modules/parallel-tests-junit/math-test-functions/src/test/java/com/baeldung/ArithmeticFunctionTest.java
rename to testing-modules/parallel-tests-junit/math-test-functions/src/test/java/com/baeldung/ArithmeticFunctionUnitTest.java
index df0aa695fc..1f048b305f 100644
--- a/testing-modules/parallel-tests-junit/math-test-functions/src/test/java/com/baeldung/ArithmeticFunctionTest.java
+++ b/testing-modules/parallel-tests-junit/math-test-functions/src/test/java/com/baeldung/ArithmeticFunctionUnitTest.java
@@ -4,7 +4,7 @@ import static org.junit.Assert.assertEquals;
import org.junit.Test;
-public class ArithmeticFunctionTest {
+public class ArithmeticFunctionUnitTest {
@Test
public void test_addingIntegers_returnsSum() {
diff --git a/testing-modules/parallel-tests-junit/math-test-functions/src/test/java/com/baeldung/ComparisonFunctionTest.java b/testing-modules/parallel-tests-junit/math-test-functions/src/test/java/com/baeldung/ComparisonFunctionUnitTest.java
similarity index 87%
rename from testing-modules/parallel-tests-junit/math-test-functions/src/test/java/com/baeldung/ComparisonFunctionTest.java
rename to testing-modules/parallel-tests-junit/math-test-functions/src/test/java/com/baeldung/ComparisonFunctionUnitTest.java
index 4f72c87279..839b6c2cf3 100644
--- a/testing-modules/parallel-tests-junit/math-test-functions/src/test/java/com/baeldung/ComparisonFunctionTest.java
+++ b/testing-modules/parallel-tests-junit/math-test-functions/src/test/java/com/baeldung/ComparisonFunctionUnitTest.java
@@ -4,7 +4,7 @@ import static org.junit.Assert.assertEquals;
import org.junit.Test;
-public class ComparisonFunctionTest {
+public class ComparisonFunctionUnitTest {
@Test
public void test_findMax() {
diff --git a/testing-modules/parallel-tests-junit/math-test-functions/src/test/java/com/baeldung/FunctionTestSuite.java b/testing-modules/parallel-tests-junit/math-test-functions/src/test/java/com/baeldung/FunctionTestSuite.java
index 4fe551b365..d12eab5c51 100644
--- a/testing-modules/parallel-tests-junit/math-test-functions/src/test/java/com/baeldung/FunctionTestSuite.java
+++ b/testing-modules/parallel-tests-junit/math-test-functions/src/test/java/com/baeldung/FunctionTestSuite.java
@@ -5,7 +5,7 @@ import org.junit.runners.Suite;
import org.junit.runners.Suite.SuiteClasses;
@RunWith(Suite.class)
-@SuiteClasses({ ComparisonFunctionTest.class, ArithmeticFunctionTest.class })
+@SuiteClasses({ ComparisonFunctionUnitTest.class, ArithmeticFunctionUnitTest.class })
public class FunctionTestSuite {
}
diff --git a/testing-modules/parallel-tests-junit/pom.xml b/testing-modules/parallel-tests-junit/pom.xml
index f400a5ae07..993974046c 100644
--- a/testing-modules/parallel-tests-junit/pom.xml
+++ b/testing-modules/parallel-tests-junit/pom.xml
@@ -6,6 +6,13 @@
0.0.1-SNAPSHOT
parallel-tests-junit
pom
+
+
+ com.baeldung
+ parent-java
+ 0.0.1-SNAPSHOT
+ ../../parent-java
+
math-test-functions
diff --git a/testing-modules/parallel-tests-junit/string-test-functions/pom.xml b/testing-modules/parallel-tests-junit/string-test-functions/pom.xml
index 7fa09ff493..b0c0ed29fc 100644
--- a/testing-modules/parallel-tests-junit/string-test-functions/pom.xml
+++ b/testing-modules/parallel-tests-junit/string-test-functions/pom.xml
@@ -18,7 +18,7 @@
junit
junit
- 4.12
+ ${junit.version}
test
diff --git a/testing-modules/parallel-tests-junit/string-test-functions/src/test/java/com/baeldung/StringFunctionTest.java b/testing-modules/parallel-tests-junit/string-test-functions/src/test/java/com/baeldung/StringFunctionUnitTest.java
similarity index 88%
rename from testing-modules/parallel-tests-junit/string-test-functions/src/test/java/com/baeldung/StringFunctionTest.java
rename to testing-modules/parallel-tests-junit/string-test-functions/src/test/java/com/baeldung/StringFunctionUnitTest.java
index 7f2bc5e5e7..685a33b084 100644
--- a/testing-modules/parallel-tests-junit/string-test-functions/src/test/java/com/baeldung/StringFunctionTest.java
+++ b/testing-modules/parallel-tests-junit/string-test-functions/src/test/java/com/baeldung/StringFunctionUnitTest.java
@@ -4,7 +4,7 @@ import static org.junit.Assert.assertEquals;
import org.junit.Test;
-public class StringFunctionTest {
+public class StringFunctionUnitTest {
@Test
public void test_upperCase() {
diff --git a/testing-modules/rest-assured/README.md b/testing-modules/rest-assured/README.md
index 50f36f61eb..de15515f9d 100644
--- a/testing-modules/rest-assured/README.md
+++ b/testing-modules/rest-assured/README.md
@@ -1,2 +1,3 @@
###Relevant Articles:
- [A Guide to REST-assured](http://www.baeldung.com/rest-assured-tutorial)
+- [REST-assured Support for Spring MockMvc](https://www.baeldung.com/spring-mock-mvc-rest-assured)
diff --git a/testing-modules/testing/pom.xml b/testing-modules/testing/pom.xml
index 2e783b2116..ccfa1070d1 100644
--- a/testing-modules/testing/pom.xml
+++ b/testing-modules/testing/pom.xml
@@ -91,7 +91,7 @@
com.github.javafaker
javafaker
- 0.15
+ ${javafaker.version}
@@ -177,6 +177,7 @@
0.4
3.0.0
1.5
+ 0.15