list = new ArrayList<>();
+
+ public void populateList() {
+ for (int i = 0; i < 10000000; i++) {
+ list.add(Math.random());
+ }
+ System.out.println("Debug Point 2");
+ }
+
+ public static void main(String[] args) {
+ System.out.println("Debug Point 1");
+ new StaticFieldsDemo().populateList();
+ System.out.println("Debug Point 3");
+ }
+}
\ No newline at end of file
diff --git a/core-java/src/main/java/com/baeldung/nth/root/calculator/NthRootCalculator.java b/core-java/src/main/java/com/baeldung/nth/root/calculator/NthRootCalculator.java
new file mode 100644
index 0000000000..217f1e06de
--- /dev/null
+++ b/core-java/src/main/java/com/baeldung/nth/root/calculator/NthRootCalculator.java
@@ -0,0 +1,8 @@
+package com.baeldung.nth.root.calculator;
+
+public class NthRootCalculator
+{
+ public Double calculate(Double base, Double n) {
+ return Math.pow(Math.E, Math.log(base)/n);
+ }
+}
diff --git a/core-java/src/main/java/com/baeldung/nth/root/main/Main.java b/core-java/src/main/java/com/baeldung/nth/root/main/Main.java
new file mode 100644
index 0000000000..3fcd36812f
--- /dev/null
+++ b/core-java/src/main/java/com/baeldung/nth/root/main/Main.java
@@ -0,0 +1,13 @@
+package com.baeldung.nth.root.main;
+
+import com.baeldung.nth.root.calculator.NthRootCalculator;
+
+public class Main {
+ public static void main(String[] args) {
+ NthRootCalculator calculator = new NthRootCalculator();
+ Double base = Double.parseDouble(args[0]);
+ Double n = Double.parseDouble(args[1]);
+ Double result = calculator.calculate(base, n);
+ System.out.println("The " + n + " root of " + base + " equals to " + result + ".");
+ }
+}
diff --git a/core-java/src/main/java/com/baeldung/passwordhashing/PBKDF2Hasher.java b/core-java/src/main/java/com/baeldung/passwordhashing/PBKDF2Hasher.java
new file mode 100644
index 0000000000..e2259e4249
--- /dev/null
+++ b/core-java/src/main/java/com/baeldung/passwordhashing/PBKDF2Hasher.java
@@ -0,0 +1,149 @@
+package com.baeldung.passwordhashing;
+
+import java.security.NoSuchAlgorithmException;
+import java.security.SecureRandom;
+import java.security.spec.InvalidKeySpecException;
+import java.security.spec.KeySpec;
+import java.util.Arrays;
+import java.util.Base64;
+import java.util.regex.Matcher;
+import java.util.regex.Pattern;
+
+import javax.crypto.SecretKeyFactory;
+import javax.crypto.spec.PBEKeySpec;
+
+/**
+ * Hash passwords for storage, and test passwords against password tokens.
+ *
+ * Instances of this class can be used concurrently by multiple threads.
+ *
+ * @author erickson
+ * @see StackOverflow
+ */
+public final class PBKDF2Hasher
+{
+
+ /**
+ * Each token produced by this class uses this identifier as a prefix.
+ */
+ public static final String ID = "$31$";
+
+ /**
+ * The minimum recommended cost, used by default
+ */
+ public static final int DEFAULT_COST = 16;
+
+ private static final String ALGORITHM = "PBKDF2WithHmacSHA1";
+
+ private static final int SIZE = 128;
+
+ private static final Pattern layout = Pattern.compile("\\$31\\$(\\d\\d?)\\$(.{43})");
+
+ private final SecureRandom random;
+
+ private final int cost;
+
+ public PBKDF2Hasher()
+ {
+ this(DEFAULT_COST);
+ }
+
+ /**
+ * Create a password manager with a specified cost
+ *
+ * @param cost the exponential computational cost of hashing a password, 0 to 30
+ */
+ public PBKDF2Hasher(int cost)
+ {
+ iterations(cost); /* Validate cost */
+ this.cost = cost;
+ this.random = new SecureRandom();
+ }
+
+ private static int iterations(int cost)
+ {
+ if ((cost < 0) || (cost > 30))
+ throw new IllegalArgumentException("cost: " + cost);
+ return 1 << cost;
+ }
+
+ /**
+ * Hash a password for storage.
+ *
+ * @return a secure authentication token to be stored for later authentication
+ */
+ public String hash(char[] password)
+ {
+ byte[] salt = new byte[SIZE / 8];
+ random.nextBytes(salt);
+ byte[] dk = pbkdf2(password, salt, 1 << cost);
+ byte[] hash = new byte[salt.length + dk.length];
+ System.arraycopy(salt, 0, hash, 0, salt.length);
+ System.arraycopy(dk, 0, hash, salt.length, dk.length);
+ Base64.Encoder enc = Base64.getUrlEncoder().withoutPadding();
+ return ID + cost + '$' + enc.encodeToString(hash);
+ }
+
+ /**
+ * Authenticate with a password and a stored password token.
+ *
+ * @return true if the password and token match
+ */
+ public boolean checkPassword(char[] password, String token)
+ {
+ Matcher m = layout.matcher(token);
+ if (!m.matches())
+ throw new IllegalArgumentException("Invalid token format");
+ int iterations = iterations(Integer.parseInt(m.group(1)));
+ byte[] hash = Base64.getUrlDecoder().decode(m.group(2));
+ byte[] salt = Arrays.copyOfRange(hash, 0, SIZE / 8);
+ byte[] check = pbkdf2(password, salt, iterations);
+ int zero = 0;
+ for (int idx = 0; idx < check.length; ++idx)
+ zero |= hash[salt.length + idx] ^ check[idx];
+ return zero == 0;
+ }
+
+ private static byte[] pbkdf2(char[] password, byte[] salt, int iterations)
+ {
+ KeySpec spec = new PBEKeySpec(password, salt, iterations, SIZE);
+ try {
+ SecretKeyFactory f = SecretKeyFactory.getInstance(ALGORITHM);
+ return f.generateSecret(spec).getEncoded();
+ }
+ catch (NoSuchAlgorithmException ex) {
+ throw new IllegalStateException("Missing algorithm: " + ALGORITHM, ex);
+ }
+ catch (InvalidKeySpecException ex) {
+ throw new IllegalStateException("Invalid SecretKeyFactory", ex);
+ }
+ }
+
+ /**
+ * Hash a password in an immutable {@code String}.
+ *
+ * Passwords should be stored in a {@code char[]} so that it can be filled
+ * with zeros after use instead of lingering on the heap and elsewhere.
+ *
+ * @deprecated Use {@link #hash(char[])} instead
+ */
+ @Deprecated
+ public String hash(String password)
+ {
+ return hash(password.toCharArray());
+ }
+
+ /**
+ * Authenticate with a password in an immutable {@code String} and a stored
+ * password token.
+ *
+ * @deprecated Use {@link #checkPassword(char[],String)} instead.
+ * @see #hash(String)
+ */
+ @Deprecated
+ public boolean checkPassword(String password, String token)
+ {
+ return checkPassword(password.toCharArray(), token);
+ }
+
+}
diff --git a/core-java/src/main/java/com/baeldung/passwordhashing/SHA512Hasher.java b/core-java/src/main/java/com/baeldung/passwordhashing/SHA512Hasher.java
new file mode 100644
index 0000000000..4f5337f963
--- /dev/null
+++ b/core-java/src/main/java/com/baeldung/passwordhashing/SHA512Hasher.java
@@ -0,0 +1,35 @@
+package com.baeldung.passwordhashing;
+
+import java.nio.charset.StandardCharsets;
+import java.security.MessageDigest;
+import java.security.NoSuchAlgorithmException;
+
+
+/** A really simple SHA_512 Encryption example.
+ *
+ */
+public class SHA512Hasher {
+
+ public String hash(String passwordToHash, byte[] salt){
+ String generatedPassword = null;
+ try {
+ MessageDigest md = MessageDigest.getInstance("SHA-512");
+ md.update(salt);
+ byte[] bytes = md.digest(passwordToHash.getBytes(StandardCharsets.UTF_8));
+ StringBuilder sb = new StringBuilder();
+ for(int i=0; i< bytes.length ;i++){
+ sb.append(Integer.toString((bytes[i] & 0xff) + 0x100, 16).substring(1));
+ }
+ generatedPassword = sb.toString();
+ }
+ catch (NoSuchAlgorithmException e){
+ e.printStackTrace();
+ }
+ return generatedPassword;
+ }
+
+ public boolean checkPassword(String hash, String attempt, byte[] salt){
+ String generatedHash = hash(attempt, salt);
+ return hash.equals(generatedHash);
+ }
+}
diff --git a/core-java/src/main/java/com/baeldung/passwordhashing/SimplePBKDF2Hasher.java b/core-java/src/main/java/com/baeldung/passwordhashing/SimplePBKDF2Hasher.java
new file mode 100644
index 0000000000..36c9b65070
--- /dev/null
+++ b/core-java/src/main/java/com/baeldung/passwordhashing/SimplePBKDF2Hasher.java
@@ -0,0 +1,18 @@
+package com.baeldung.passwordhashing;
+
+import javax.crypto.SecretKeyFactory;
+import javax.crypto.spec.PBEKeySpec;
+import java.security.spec.KeySpec;
+
+/** A really simple SimplePBKDF2 Encryption example.
+ *
+ */
+public class SimplePBKDF2Hasher {
+
+ public static String hashSimple(String password, byte[] salt) throws Exception{
+ KeySpec spec = new PBEKeySpec(password.toCharArray(), salt, 65536, 128);
+ SecretKeyFactory f = SecretKeyFactory.getInstance("PBKDF2WithHmacSHA1");
+ byte[] hash = f.generateSecret(spec).getEncoded();
+ return String.valueOf(hash);
+ }
+}
diff --git a/core-java/src/main/java/com/baeldung/switchstatement/SwitchStatement.java b/core-java/src/main/java/com/baeldung/switchstatement/SwitchStatement.java
new file mode 100644
index 0000000000..69e151bfcb
--- /dev/null
+++ b/core-java/src/main/java/com/baeldung/switchstatement/SwitchStatement.java
@@ -0,0 +1,70 @@
+package com.baeldung.switchstatement;
+
+public class SwitchStatement {
+
+ public String exampleOfIF(String animal) {
+
+ String result;
+
+ if (animal.equals("DOG") || animal.equals("CAT")) {
+ result = "domestic animal";
+ } else if (animal.equals("TIGER")) {
+ result = "wild animal";
+ } else {
+ result = "unknown animal";
+ }
+ return result;
+ }
+
+ public String exampleOfSwitch(String animal) {
+
+ String result;
+
+ switch (animal) {
+ case "DOG":
+ case "CAT":
+ result = "domestic animal";
+ break;
+ case "TIGER":
+ result = "wild animal";
+ break;
+ default:
+ result = "unknown animal";
+ break;
+ }
+ return result;
+ }
+
+ public String forgetBreakInSwitch(String animal) {
+
+ String result;
+
+ switch (animal) {
+
+ case "DOG":
+ System.out.println("domestic animal");
+ result = "domestic animal";
+
+ default:
+ System.out.println("unknown animal");
+ result = "unknown animal";
+
+ }
+ return result;
+ }
+
+ public String constantCaseValue(String animal) {
+
+ String result = "";
+
+ final String dog = "DOG";
+
+ switch (animal) {
+
+ case dog:
+ result = "domestic animal";
+ }
+ return result;
+ }
+
+}
diff --git a/core-java/src/main/java/com/baeldung/zoneddatetime/OffsetDateTimeExample.java b/core-java/src/main/java/com/baeldung/zoneddatetime/OffsetDateTimeExample.java
new file mode 100644
index 0000000000..fb92eb8d0d
--- /dev/null
+++ b/core-java/src/main/java/com/baeldung/zoneddatetime/OffsetDateTimeExample.java
@@ -0,0 +1,13 @@
+package com.baeldung.zoneddatetime;
+
+import java.time.OffsetDateTime;
+import java.time.ZoneOffset;
+
+public class OffsetDateTimeExample {
+
+ public OffsetDateTime getCurrentTimeByZoneOffset(String offset) {
+ ZoneOffset zoneOffSet= ZoneOffset.of(offset);
+ OffsetDateTime date = OffsetDateTime.now(zoneOffSet);
+ return date;
+ }
+}
diff --git a/core-java/src/main/java/com/baeldung/zoneddatetime/OffsetTimeExample.java b/core-java/src/main/java/com/baeldung/zoneddatetime/OffsetTimeExample.java
new file mode 100644
index 0000000000..58e2d4d5ad
--- /dev/null
+++ b/core-java/src/main/java/com/baeldung/zoneddatetime/OffsetTimeExample.java
@@ -0,0 +1,13 @@
+package com.baeldung.zoneddatetime;
+
+import java.time.OffsetTime;
+import java.time.ZoneOffset;
+
+public class OffsetTimeExample {
+
+ public OffsetTime getCurrentTimeByZoneOffset(String offset) {
+ ZoneOffset zoneOffSet = ZoneOffset.of(offset);
+ OffsetTime time = OffsetTime.now(zoneOffSet);
+ return time;
+ }
+}
diff --git a/core-java/src/main/java/com/baeldung/zoneddatetime/ZoneDateTimeExample.java b/core-java/src/main/java/com/baeldung/zoneddatetime/ZoneDateTimeExample.java
new file mode 100644
index 0000000000..b54b8c5225
--- /dev/null
+++ b/core-java/src/main/java/com/baeldung/zoneddatetime/ZoneDateTimeExample.java
@@ -0,0 +1,21 @@
+package com.baeldung.zoneddatetime;
+
+import java.time.ZoneId;
+import java.time.ZonedDateTime;
+
+public class ZoneDateTimeExample {
+
+ public ZonedDateTime getCurrentTimeByZoneId(String region) {
+ ZoneId zone = ZoneId.of(region);
+ ZonedDateTime date = ZonedDateTime.now(zone);
+ return date;
+ }
+
+ public ZonedDateTime convertZonedDateTime(ZonedDateTime sourceDate, String destZone) {
+
+ ZoneId destZoneId = ZoneId.of(destZone);
+ ZonedDateTime destDate = sourceDate.withZoneSameInstant(destZoneId);
+
+ return destDate;
+ }
+}
diff --git a/core-java/src/test/java/com/baeldung/memoryleaks/equalshashcode/PersonMemoryLeakUnitTest.java b/core-java/src/test/java/com/baeldung/memoryleaks/equalshashcode/PersonMemoryLeakUnitTest.java
new file mode 100644
index 0000000000..3fa1db18d2
--- /dev/null
+++ b/core-java/src/test/java/com/baeldung/memoryleaks/equalshashcode/PersonMemoryLeakUnitTest.java
@@ -0,0 +1,33 @@
+package com.baeldung.memoryleaks.equalshashcode;
+
+import static org.junit.Assert.assertTrue;
+
+import java.util.HashMap;
+import java.util.Map;
+
+import org.junit.Ignore;
+import org.junit.Test;
+
+public class PersonMemoryLeakUnitTest {
+ @Test
+ @Ignore // Test deliberately ignored as memory leak tests consume lots of resources
+ public void givenMap_whenEqualsAndHashCodeNotOverridden_thenMemoryLeak() {
+ Map map = new HashMap();
+ for(int i=0; i<10000000; i++) {
+ map.put(new Person("jon"), 1);
+ }
+ assertTrue(map.size() > 1);
+ System.out.print("Debug Point - VisuaLVM");
+ }
+
+ @Test
+ @Ignore // Test deliberately ignored as memory leak tests consume lots of resources
+ public void givenMap_whenEqualsAndHashCodeOverridden_thenNoMemoryLeak() {
+ Map map = new HashMap();
+ for(int i=0; i<10000; i++) {
+ map.put(new PersonOptimized("jon"), 1);
+ }
+ assertTrue(map.size() == 1);
+ System.out.print("Debug Point - VisuaLVM");
+ }
+}
diff --git a/core-java/src/test/java/com/baeldung/memoryleaks/finalize/FinalizeMemoryLeakUnitTest.java b/core-java/src/test/java/com/baeldung/memoryleaks/finalize/FinalizeMemoryLeakUnitTest.java
new file mode 100644
index 0000000000..b6d81a8968
--- /dev/null
+++ b/core-java/src/test/java/com/baeldung/memoryleaks/finalize/FinalizeMemoryLeakUnitTest.java
@@ -0,0 +1,28 @@
+package com.baeldung.memoryleaks.finalize;
+
+import org.junit.Ignore;
+import org.junit.Test;
+
+public class FinalizeMemoryLeakUnitTest {
+ @Test
+ @Ignore // Test deliberately ignored as memory leak tests consume lots of resources
+ public void givenObjectWithFinalizer_whenCreatingAndDestroyingThisObject_thenMemoryLeak() {
+ BulkyObject[] stock = new BulkyObject[100000];
+
+ for(int i=0; i<100000; i++) {
+ stock[i] = new BulkyObject();
+ }
+ System.out.print("Debug Point - VisuaLVM");
+ }
+
+ @Test
+ @Ignore // Test deliberately ignored as memory leak tests consume lots of resources
+ public void givenObjectWithoutFinalizer_whenCreatingAndDestroyingThisObject_thenNoMemoryLeak() {
+ BulkyObjectOptimized[] stock = new BulkyObjectOptimized[100000];
+
+ for(int i=0; i<100000; i++) {
+ stock[i] = new BulkyObjectOptimized();
+ }
+ System.out.print("Debug Point - VisuaLVM");
+ }
+}
diff --git a/core-java/src/test/java/com/baeldung/memoryleaks/innerclass/StaticInnerClassMemoryLeakUnitTest.java b/core-java/src/test/java/com/baeldung/memoryleaks/innerclass/StaticInnerClassMemoryLeakUnitTest.java
new file mode 100644
index 0000000000..0854e4a38a
--- /dev/null
+++ b/core-java/src/test/java/com/baeldung/memoryleaks/innerclass/StaticInnerClassMemoryLeakUnitTest.java
@@ -0,0 +1,20 @@
+package com.baeldung.memoryleaks.innerclass;
+
+import org.junit.Ignore;
+import org.junit.Test;
+
+public class StaticInnerClassMemoryLeakUnitTest {
+ @Test
+ @Ignore // Test deliberately ignored as memory leak tests consume lots of resources
+ public void givenUsingInnerClass_whenInitializingInnerClass_thenInnerClassHoldsReferenceOfOuterObject() {
+ InnerClassWrapper.SimpleInnerClass simpleInnerClassObj = new InnerClassWrapper().new SimpleInnerClass();
+ System.out.print("Debug Point - VisuaLVM");
+ }
+
+ @Test
+ @Ignore // Test deliberately ignored as memory leak tests consume lots of resources
+ public void givenUsingStaticNestedClass_whenInitializingInnerClass_thenStaticNestedClassDoesntReferenceOuterObject() {
+ StaticNestedClassWrapper.StaticNestedClass staticNestedClassObj = new StaticNestedClassWrapper.StaticNestedClass();
+ System.out.print("Debug Point - VisuaLVM");
+ }
+}
diff --git a/core-java/src/test/java/com/baeldung/memoryleaks/internedstrings/StringInternMemoryLeakUnitTest.java b/core-java/src/test/java/com/baeldung/memoryleaks/internedstrings/StringInternMemoryLeakUnitTest.java
new file mode 100644
index 0000000000..6d363e0bdc
--- /dev/null
+++ b/core-java/src/test/java/com/baeldung/memoryleaks/internedstrings/StringInternMemoryLeakUnitTest.java
@@ -0,0 +1,20 @@
+package com.baeldung.memoryleaks.internedstrings;
+
+import org.junit.Ignore;
+import org.junit.Test;
+
+public class StringInternMemoryLeakUnitTest {
+ @Test
+ @Ignore // Test deliberately ignored as memory leak tests consume lots of resources
+ public void givenJava6OrBelow_whenInterningLargeStrings_thenPermgenIncreases() {
+ new InternedString().readString();
+ System.out.print("Debug Point - VisuaLVM");
+ }
+
+ @Test
+ @Ignore // Test deliberately ignored as memory leak tests consume lots of resources
+ public void givenJava6OrBelow_whenNotInterningLargeStrings_thenPermgenDoesntIncrease() {
+ new StringObject().readString();
+ System.out.print("Debug Point - VisuaLVM");
+ }
+}
diff --git a/core-java/src/test/java/com/baeldung/memoryleaks/staticfields/NonStaticFieldsMemoryLeakUnitTest.java b/core-java/src/test/java/com/baeldung/memoryleaks/staticfields/NonStaticFieldsMemoryLeakUnitTest.java
new file mode 100644
index 0000000000..e64fdb73e0
--- /dev/null
+++ b/core-java/src/test/java/com/baeldung/memoryleaks/staticfields/NonStaticFieldsMemoryLeakUnitTest.java
@@ -0,0 +1,26 @@
+package com.baeldung.memoryleaks.staticfields;
+
+import java.util.ArrayList;
+import java.util.List;
+
+import org.junit.Ignore;
+import org.junit.Test;
+
+public class NonStaticFieldsMemoryLeakUnitTest {
+ public List list = new ArrayList<>();
+
+ public void populateList() {
+ for (int i = 0; i < 10000000; i++) {
+ list.add(Math.random());
+ }
+ System.out.println("Debug Point 2");
+ }
+
+ @Test
+ @Ignore // Test deliberately ignored as memory leak tests consume lots of resources
+ public void givenNonStaticLargeList_whenPopulatingList_thenListGarbageCollected() {
+ System.out.println("Debug Point 1");
+ new NonStaticFieldsMemoryLeakUnitTest().populateList();
+ System.out.println("Debug Point 3");
+ }
+}
diff --git a/core-java/src/test/java/com/baeldung/memoryleaks/staticfields/StaticFieldsMemoryLeakUnitTest.java b/core-java/src/test/java/com/baeldung/memoryleaks/staticfields/StaticFieldsMemoryLeakUnitTest.java
new file mode 100644
index 0000000000..1765f0cf0d
--- /dev/null
+++ b/core-java/src/test/java/com/baeldung/memoryleaks/staticfields/StaticFieldsMemoryLeakUnitTest.java
@@ -0,0 +1,26 @@
+package com.baeldung.memoryleaks.staticfields;
+
+import java.util.ArrayList;
+import java.util.List;
+
+import org.junit.Ignore;
+import org.junit.Test;
+
+public class StaticFieldsMemoryLeakUnitTest {
+ public static List list = new ArrayList<>();
+
+ public void populateList() {
+ for (int i = 0; i < 10000000; i++) {
+ list.add(Math.random());
+ }
+ System.out.println("Debug Point 2");
+ }
+
+ @Test
+ @Ignore // Test deliberately ignored as memory leak tests consume lots of resources
+ public void givenStaticLargeList_whenPopulatingList_thenListIsNotGarbageCollected() {
+ System.out.println("Debug Point 1");
+ new StaticFieldsDemo().populateList();
+ System.out.println("Debug Point 3");
+ }
+}
diff --git a/core-java/src/test/java/com/baeldung/nth/root/calculator/NthRootCalculatorUnitTest.java b/core-java/src/test/java/com/baeldung/nth/root/calculator/NthRootCalculatorUnitTest.java
new file mode 100644
index 0000000000..388bceef49
--- /dev/null
+++ b/core-java/src/test/java/com/baeldung/nth/root/calculator/NthRootCalculatorUnitTest.java
@@ -0,0 +1,21 @@
+package com.baeldung.nth.root.calculator;
+
+import org.junit.Test;
+import org.junit.runner.RunWith;
+import org.mockito.InjectMocks;
+import org.mockito.runners.MockitoJUnitRunner;
+
+import static org.junit.Assert.assertEquals;
+
+@RunWith(MockitoJUnitRunner.class)
+public class NthRootCalculatorUnitTest {
+
+ @InjectMocks
+ private NthRootCalculator nthRootCalculator;
+
+ @Test
+ public void giventThatTheBaseIs125_andTheExpIs3_whenCalculateIsCalled_thenTheResultIsTheCorrectOne() {
+ Double result = nthRootCalculator.calculate(125.0, 3.0);
+ assertEquals(result, (Double) 5.0d);
+ }
+}
diff --git a/core-java/src/test/java/com/baeldung/nth/root/main/MainUnitTest.java b/core-java/src/test/java/com/baeldung/nth/root/main/MainUnitTest.java
new file mode 100644
index 0000000000..a2fd839ba4
--- /dev/null
+++ b/core-java/src/test/java/com/baeldung/nth/root/main/MainUnitTest.java
@@ -0,0 +1,34 @@
+package com.baeldung.nth.root.main;
+
+import java.io.ByteArrayOutputStream;
+import java.io.PrintStream;
+
+import org.junit.After;
+import org.junit.Before;
+import org.junit.Test;
+import org.mockito.InjectMocks;
+import static org.junit.Assert.assertEquals;
+
+public class MainUnitTest {
+ @InjectMocks
+ private Main main;
+
+ private final ByteArrayOutputStream outContent = new ByteArrayOutputStream();
+ private final PrintStream originalOut = System.out;
+
+ @Before
+ public void setUpStreams() {
+ System.setOut(new PrintStream(outContent));
+ }
+
+ @After
+ public void restoreStreams() {
+ System.setOut(originalOut);
+ }
+
+ @Test
+ public void givenThatTheBaseIs125_andTheExpIs3_whenMainIsCalled_thenTheCorrectResultIsPrinted() {
+ main.main(new String[]{"125.0", "3.0"});
+ assertEquals("The 3.0 root of 125.0 equals to 5.0.\n", outContent.toString().replaceAll("\r", ""));
+ }
+}
diff --git a/core-java/src/test/java/com/baeldung/passwordhashing/PBKDF2HasherUnitTest.java b/core-java/src/test/java/com/baeldung/passwordhashing/PBKDF2HasherUnitTest.java
new file mode 100644
index 0000000000..8e90725c77
--- /dev/null
+++ b/core-java/src/test/java/com/baeldung/passwordhashing/PBKDF2HasherUnitTest.java
@@ -0,0 +1,41 @@
+package com.baeldung.passwordhashing;
+
+import org.junit.Before;
+import org.junit.Test;
+
+import static org.junit.Assert.*;
+
+
+public class PBKDF2HasherUnitTest {
+
+ private PBKDF2Hasher mPBKDF2Hasher;
+
+ @Before
+ public void setUp() throws Exception {
+ mPBKDF2Hasher = new PBKDF2Hasher();
+ }
+
+ @Test
+ public void givenCorrectMessageAndHash_whenAuthenticated_checkAuthenticationSucceeds() throws Exception {
+ String message1 = "password123";
+
+ String hash1 = mPBKDF2Hasher.hash(message1.toCharArray());
+
+ assertTrue(mPBKDF2Hasher.checkPassword(message1.toCharArray(), hash1));
+
+ }
+
+ @Test
+ public void givenWrongMessage_whenAuthenticated_checkAuthenticationFails() throws Exception {
+ String message1 = "password123";
+
+ String hash1 = mPBKDF2Hasher.hash(message1.toCharArray());
+
+ String wrongPasswordAttempt = "IamWrong";
+
+ assertFalse(mPBKDF2Hasher.checkPassword(wrongPasswordAttempt.toCharArray(), hash1));
+
+ }
+
+
+}
\ No newline at end of file
diff --git a/core-java/src/test/java/com/baeldung/passwordhashing/SHA512HasherUnitTest.java b/core-java/src/test/java/com/baeldung/passwordhashing/SHA512HasherUnitTest.java
new file mode 100644
index 0000000000..3acfb0ba9d
--- /dev/null
+++ b/core-java/src/test/java/com/baeldung/passwordhashing/SHA512HasherUnitTest.java
@@ -0,0 +1,70 @@
+package com.baeldung.passwordhashing;
+
+import org.junit.Before;
+import org.junit.Test;
+
+import java.security.SecureRandom;
+
+import static org.junit.Assert.*;
+
+/**
+ * Created by PhysicsSam on 06-Sep-18.
+ */
+public class SHA512HasherUnitTest {
+
+ private SHA512Hasher hasher;
+ private SecureRandom secureRandom;
+
+ @Before
+ public void setUp() throws Exception {
+ hasher = new SHA512Hasher();
+ secureRandom = new SecureRandom();
+ }
+
+ @Test
+ public void givenSamePasswordAndSalt_whenHashed_checkResultingHashesAreEqual() throws Exception {
+
+ byte[] salt = new byte[16];
+ secureRandom.nextBytes(salt);
+
+ String hash1 = hasher.hash("password", salt);
+ String hash2 = hasher.hash("password", salt);
+
+ assertEquals(hash1, hash2);
+
+ }
+
+ @Test
+ public void givenSamePasswordAndDifferentSalt_whenHashed_checkResultingHashesNotEqual() throws Exception {
+
+ byte[] salt = new byte[16];
+ secureRandom.nextBytes(salt);
+ String hash1 = hasher.hash("password", salt);
+ //generate a second salt
+ byte[] secondSalt = new byte[16];
+ String hash2 = hasher.hash("password", secondSalt);
+
+ assertNotEquals(hash1, hash2);
+
+ }
+
+ @Test
+ public void givenPredefinedHash_whenCorrectAttemptGiven_checkAuthenticationSucceeds() throws Exception {
+ byte[] salt = new byte[16];
+ secureRandom.nextBytes(salt);
+
+ String originalHash = hasher.hash("password123", salt);
+
+ assertTrue(hasher.checkPassword(originalHash, "password123", salt));
+ }
+
+ @Test
+ public void givenPredefinedHash_whenIncorrectAttemptGiven_checkAuthenticationFails() throws Exception {
+ byte[] salt = new byte[16];
+ secureRandom.nextBytes(salt);
+
+ String originalHash = hasher.hash("password123", salt);
+
+ assertFalse(hasher.checkPassword(originalHash, "password124", salt));
+ }
+}
\ No newline at end of file
diff --git a/core-java/src/test/java/com/baeldung/switchstatement/SwitchStatementUnitTest.java b/core-java/src/test/java/com/baeldung/switchstatement/SwitchStatementUnitTest.java
new file mode 100644
index 0000000000..e8ac645531
--- /dev/null
+++ b/core-java/src/test/java/com/baeldung/switchstatement/SwitchStatementUnitTest.java
@@ -0,0 +1,38 @@
+package com.baeldung.switchstatement;
+
+import org.junit.Test;
+
+import org.junit.Assert;
+
+public class SwitchStatementUnitTest {
+ private SwitchStatement s = new SwitchStatement();
+
+
+ @Test
+ public void whenDog_thenDomesticAnimal() {
+
+ String animal = "DOG";
+ Assert.assertEquals("domestic animal", s.exampleOfSwitch(animal));
+ }
+
+ @Test
+ public void whenNoBreaks_thenGoThroughBlocks() {
+ String animal = "DOG";
+ Assert.assertEquals("unknown animal", s.forgetBreakInSwitch(animal));
+ }
+
+ @Test(expected=NullPointerException.class)
+ public void whenSwitchAgumentIsNull_thenNullPointerException() {
+ String animal = null;
+ Assert.assertEquals("domestic animal", s.exampleOfSwitch(animal));
+ }
+
+
+ @Test
+ public void whenCompareStrings_thenByEqual() {
+ String animal = new String("DOG");
+ Assert.assertEquals("domestic animal", s.exampleOfSwitch(animal));
+ }
+
+
+}
diff --git a/core-java/src/test/java/com/baeldung/ternaryoperator/TernaryOperatorUnitTest.java b/core-java/src/test/java/com/baeldung/ternaryoperator/TernaryOperatorUnitTest.java
new file mode 100644
index 0000000000..6b292ad8ab
--- /dev/null
+++ b/core-java/src/test/java/com/baeldung/ternaryoperator/TernaryOperatorUnitTest.java
@@ -0,0 +1,43 @@
+package com.baeldung.ternaryoperator;
+
+import static org.assertj.core.api.Assertions.assertThat;
+import org.junit.Test;
+
+public class TernaryOperatorUnitTest {
+
+ @Test
+ public void givenACondition_whenUsingTernaryOperator_thenItEvaluatesConditionAndReturnsAValue() {
+ int number = 10;
+ String msg = number > 10 ? "Number is greater than 10" : "Number is less than or equal to 10";
+
+ assertThat(msg).isEqualTo("Number is less than or equal to 10");
+ }
+
+ @Test
+ public void givenATrueCondition_whenUsingTernaryOperator_thenOnlyExpression1IsEvaluated() {
+ int exp1 = 0, exp2 = 0;
+ int result = 12 > 10 ? ++exp1 : ++exp2;
+
+ assertThat(exp1).isEqualTo(1);
+ assertThat(exp2).isEqualTo(0);
+ assertThat(result).isEqualTo(1);
+ }
+
+ @Test
+ public void givenAFalseCondition_whenUsingTernaryOperator_thenOnlyExpression2IsEvaluated() {
+ int exp1 = 0, exp2 = 0;
+ int result = 8 > 10 ? ++exp1 : ++exp2;
+
+ assertThat(exp1).isEqualTo(0);
+ assertThat(exp2).isEqualTo(1);
+ assertThat(result).isEqualTo(1);
+ }
+
+ @Test
+ public void givenANestedCondition_whenUsingTernaryOperator_thenCorrectValueIsReturned() {
+ int number = 6;
+ String msg = number > 10 ? "Number is greater than 10" : number > 5 ? "Number is greater than 5" : "Number is less than or equal to 5";
+
+ assertThat(msg).isEqualTo("Number is greater than 5");
+ }
+}
diff --git a/core-java/src/test/java/com/baeldung/zoneddatetime/OffsetDateTimeExampleUnitTest.java b/core-java/src/test/java/com/baeldung/zoneddatetime/OffsetDateTimeExampleUnitTest.java
new file mode 100644
index 0000000000..a08d3737cd
--- /dev/null
+++ b/core-java/src/test/java/com/baeldung/zoneddatetime/OffsetDateTimeExampleUnitTest.java
@@ -0,0 +1,22 @@
+package com.baeldung.zoneddatetime;
+
+import static org.junit.Assert.assertTrue;
+
+import java.time.OffsetDateTime;
+import java.time.ZoneOffset;
+
+import org.junit.Test;
+
+public class OffsetDateTimeExampleUnitTest {
+
+ OffsetDateTimeExample offsetDateTimeExample = new OffsetDateTimeExample();
+
+ @Test
+ public void givenZoneOffset_whenGetCurrentTime_thenResultHasZone() {
+ String offset = "+02:00";
+ OffsetDateTime time = offsetDateTimeExample.getCurrentTimeByZoneOffset(offset);
+
+ assertTrue(time.getOffset()
+ .equals(ZoneOffset.of(offset)));
+ }
+}
diff --git a/core-java/src/test/java/com/baeldung/zoneddatetime/OffsetTimeExampleUnitTest.java b/core-java/src/test/java/com/baeldung/zoneddatetime/OffsetTimeExampleUnitTest.java
new file mode 100644
index 0000000000..488f934179
--- /dev/null
+++ b/core-java/src/test/java/com/baeldung/zoneddatetime/OffsetTimeExampleUnitTest.java
@@ -0,0 +1,22 @@
+package com.baeldung.zoneddatetime;
+
+import static org.junit.Assert.assertTrue;
+
+import java.time.OffsetTime;
+import java.time.ZoneOffset;
+
+import org.junit.Test;
+
+public class OffsetTimeExampleUnitTest {
+
+ OffsetTimeExample offsetTimeExample = new OffsetTimeExample();
+
+ @Test
+ public void givenZoneOffset_whenGetCurrentTime_thenResultHasZone() {
+ String offset = "+02:00";
+ OffsetTime time = offsetTimeExample.getCurrentTimeByZoneOffset(offset);
+
+ assertTrue(time.getOffset()
+ .equals(ZoneOffset.of(offset)));
+ }
+}
diff --git a/core-java/src/test/java/com/baeldung/zoneddatetime/ZoneDateTimeExampleUnitTest.java b/core-java/src/test/java/com/baeldung/zoneddatetime/ZoneDateTimeExampleUnitTest.java
new file mode 100644
index 0000000000..e78ff3e3fd
--- /dev/null
+++ b/core-java/src/test/java/com/baeldung/zoneddatetime/ZoneDateTimeExampleUnitTest.java
@@ -0,0 +1,33 @@
+package com.baeldung.zoneddatetime;
+
+import static org.junit.Assert.assertTrue;
+
+import java.time.ZoneId;
+import java.time.ZonedDateTime;
+
+import org.junit.Test;
+
+public class ZoneDateTimeExampleUnitTest {
+
+ ZoneDateTimeExample zoneDateTimeExample = new ZoneDateTimeExample();
+
+ @Test
+ public void givenZone_whenGetCurrentTime_thenResultHasZone() {
+ String zone = "Europe/Berlin";
+ ZonedDateTime time = zoneDateTimeExample.getCurrentTimeByZoneId(zone);
+
+ assertTrue(time.getZone()
+ .equals(ZoneId.of(zone)));
+ }
+
+ @Test
+ public void givenZones_whenConvertDateByZone_thenGetConstantDiff() {
+ String sourceZone = "Europe/Berlin";
+ String destZone = "Asia/Tokyo";
+ ZonedDateTime sourceDate = zoneDateTimeExample.getCurrentTimeByZoneId(sourceZone);
+ ZonedDateTime destDate = zoneDateTimeExample.convertZonedDateTime(sourceDate, destZone);
+
+ assertTrue(sourceDate.toInstant()
+ .compareTo(destDate.toInstant()) == 0);
+ }
+}
diff --git a/core-kotlin/README.md b/core-kotlin/README.md
index f63451bc02..7d8d5213d1 100644
--- a/core-kotlin/README.md
+++ b/core-kotlin/README.md
@@ -33,4 +33,7 @@
- [Idiomatic Logging in Kotlin](http://www.baeldung.com/kotlin-logging)
- [Kotlin Constructors](https://www.baeldung.com/kotlin-constructors)
- [Creational Design Patterns in Kotlin: Builder](https://www.baeldung.com/kotlin-builder-pattern)
-- [Kotlin Nested and Inner Classes](https://www.baeldung.com/kotlin-inner-classes)
\ No newline at end of file
+- [Kotlin Nested and Inner Classes](https://www.baeldung.com/kotlin-inner-classes)
+- [Kotlin with Ktor](https://www.baeldung.com/kotlin-ktor)
+- [Fuel HTTP Library with Kotlin](https://www.baeldung.com/kotlin-fuel)
+- [Introduction to Kovenant Library for Kotlin](https://www.baeldung.com/kotlin-kovenant)
diff --git a/core-kotlin/src/test/kotlin/com/baeldung/kotlin/CoroutinesTest.kt b/core-kotlin/src/test/kotlin/com/baeldung/kotlin/CoroutinesUnitTest.kt
similarity index 100%
rename from core-kotlin/src/test/kotlin/com/baeldung/kotlin/CoroutinesTest.kt
rename to core-kotlin/src/test/kotlin/com/baeldung/kotlin/CoroutinesUnitTest.kt
diff --git a/ejb/ejb-remote/pom.xml b/ejb/ejb-remote/pom.xml
index fffbbdb1da..dac2fefb84 100755
--- a/ejb/ejb-remote/pom.xml
+++ b/ejb/ejb-remote/pom.xml
@@ -15,7 +15,6 @@
javax
javaee-api
- ${javaee-api.version}
provided
diff --git a/ejb/ejb-session-beans/pom.xml b/ejb/ejb-session-beans/pom.xml
index 14ab0790e7..da76169729 100644
--- a/ejb/ejb-session-beans/pom.xml
+++ b/ejb/ejb-session-beans/pom.xml
@@ -24,7 +24,6 @@
javax
javaee-api
- ${javaee-api.version}
provided
diff --git a/flyway-cdi-extension/pom.xml b/flyway-cdi-extension/pom.xml
new file mode 100644
index 0000000000..c6ee26f783
--- /dev/null
+++ b/flyway-cdi-extension/pom.xml
@@ -0,0 +1,51 @@
+
+
+ 4.0.0
+
+ com.baeldung
+ flyway-cdi-extension
+ 1.0-SNAPSHOT
+
+
+ 1.8
+ 1.8
+
+
+
+
+ javax.enterprise
+ cdi-api
+ 2.0.SP1
+
+
+ org.jboss.weld.se
+ weld-se-core
+ 3.0.5.Final
+ runtime
+
+
+ org.flywaydb
+ flyway-core
+ 5.1.4
+
+
+ org.apache.tomcat
+ tomcat-jdbc
+ 8.5.33
+
+
+ javax.annotation
+ javax.annotation-api
+ 1.3.2
+
+
+ com.h2database
+ h2
+ 1.4.197
+ runtime
+
+
+
+
diff --git a/flyway-cdi-extension/src/main/java/com/baeldung/cdi/extension/FlywayExtension.java b/flyway-cdi-extension/src/main/java/com/baeldung/cdi/extension/FlywayExtension.java
new file mode 100644
index 0000000000..a5019b82c1
--- /dev/null
+++ b/flyway-cdi-extension/src/main/java/com/baeldung/cdi/extension/FlywayExtension.java
@@ -0,0 +1,74 @@
+package com.baeldung.cdi.extension;
+
+import org.apache.tomcat.jdbc.pool.DataSource;
+import org.flywaydb.core.Flyway;
+
+import javax.annotation.sql.DataSourceDefinition;
+import javax.enterprise.context.ApplicationScoped;
+import javax.enterprise.event.Observes;
+import javax.enterprise.inject.Any;
+import javax.enterprise.inject.Default;
+import javax.enterprise.inject.literal.InjectLiteral;
+import javax.enterprise.inject.spi.*;
+import javax.enterprise.util.AnnotationLiteral;
+
+
+/**
+ * Flyway is now under CDI container like:
+ *
+ * @ApplicationScoped
+ * @FlywayType public class Flyway{
+ * @Inject setDataSource(DataSource dataSource){
+ * //...
+ * }
+ * }
+ */
+
+public class FlywayExtension implements Extension {
+
+ DataSourceDefinition dataSourceDefinition = null;
+
+ public void registerFlywayType(@Observes BeforeBeanDiscovery bbdEvent) {
+ bbdEvent.addAnnotatedType(Flyway.class, Flyway.class.getName());
+ }
+
+ public void detectDataSourceDefinition(@Observes @WithAnnotations(DataSourceDefinition.class) ProcessAnnotatedType> patEvent) {
+ AnnotatedType at = patEvent.getAnnotatedType();
+ dataSourceDefinition = at.getAnnotation(DataSourceDefinition.class);
+ }
+
+ public void processAnnotatedType(@Observes ProcessAnnotatedType patEvent) {
+ patEvent.configureAnnotatedType()
+ //Add Scope
+ .add(ApplicationScoped.Literal.INSTANCE)
+ //Add Qualifier
+ .add(new AnnotationLiteral() {
+ })
+ //Decorate setDataSource(DataSource dataSource){} with @Inject
+ .filterMethods(annotatedMethod -> {
+ return annotatedMethod.getParameters().size() == 1 &&
+ annotatedMethod.getParameters().get(0).getBaseType().equals(javax.sql.DataSource.class);
+ })
+ .findFirst().get().add(InjectLiteral.INSTANCE);
+ }
+
+ void afterBeanDiscovery(@Observes AfterBeanDiscovery abdEvent, BeanManager bm) {
+ abdEvent.addBean()
+ .types(javax.sql.DataSource.class, DataSource.class)
+ .qualifiers(new AnnotationLiteral() {}, new AnnotationLiteral() {})
+ .scope(ApplicationScoped.class)
+ .name(DataSource.class.getName())
+ .beanClass(DataSource.class)
+ .createWith(creationalContext -> {
+ DataSource instance = new DataSource();
+ instance.setUrl(dataSourceDefinition.url());
+ instance.setDriverClassName(dataSourceDefinition.className());
+ return instance;
+ });
+ }
+
+ void runFlywayMigration(@Observes AfterDeploymentValidation adv, BeanManager manager) {
+ Flyway flyway = manager.createInstance().select(Flyway.class, new AnnotationLiteral() {}).get();
+ flyway.migrate();
+ }
+}
diff --git a/flyway-cdi-extension/src/main/java/com/baeldung/cdi/extension/FlywayType.java b/flyway-cdi-extension/src/main/java/com/baeldung/cdi/extension/FlywayType.java
new file mode 100644
index 0000000000..7c3a5affa6
--- /dev/null
+++ b/flyway-cdi-extension/src/main/java/com/baeldung/cdi/extension/FlywayType.java
@@ -0,0 +1,14 @@
+package com.baeldung.cdi.extension;
+
+import javax.inject.Qualifier;
+import java.lang.annotation.Retention;
+import java.lang.annotation.RetentionPolicy;
+import java.lang.annotation.Target;
+
+import static java.lang.annotation.ElementType.*;
+
+@Retention(RetentionPolicy.RUNTIME)
+@Target({FIELD, METHOD, PARAMETER, TYPE})
+@Qualifier
+public @interface FlywayType {
+}
\ No newline at end of file
diff --git a/flyway-cdi-extension/src/main/java/com/baeldung/cdi/extension/MainApp.java b/flyway-cdi-extension/src/main/java/com/baeldung/cdi/extension/MainApp.java
new file mode 100644
index 0000000000..1f6c5b43ba
--- /dev/null
+++ b/flyway-cdi-extension/src/main/java/com/baeldung/cdi/extension/MainApp.java
@@ -0,0 +1,16 @@
+package com.baeldung.cdi.extension;
+
+import javax.annotation.sql.DataSourceDefinition;
+import javax.enterprise.context.ApplicationScoped;
+import javax.enterprise.inject.se.SeContainer;
+import javax.enterprise.inject.se.SeContainerInitializer;
+
+@ApplicationScoped
+@DataSourceDefinition(name = "ds", className = "org.h2.Driver", url = "jdbc:h2:mem:testdb")
+public class MainApp {
+ public static void main(String[] args) {
+ SeContainerInitializer initializer = SeContainerInitializer.newInstance();
+ try (SeContainer container = initializer.initialize()) {
+ }
+ }
+}
\ No newline at end of file
diff --git a/flyway-cdi-extension/src/main/resources/META-INF/beans.xml b/flyway-cdi-extension/src/main/resources/META-INF/beans.xml
new file mode 100644
index 0000000000..44959bfa99
--- /dev/null
+++ b/flyway-cdi-extension/src/main/resources/META-INF/beans.xml
@@ -0,0 +1,6 @@
+
+
\ No newline at end of file
diff --git a/flyway-cdi-extension/src/main/resources/META-INF/services/javax.enterprise.inject.spi.Extension b/flyway-cdi-extension/src/main/resources/META-INF/services/javax.enterprise.inject.spi.Extension
new file mode 100644
index 0000000000..a82dc47714
--- /dev/null
+++ b/flyway-cdi-extension/src/main/resources/META-INF/services/javax.enterprise.inject.spi.Extension
@@ -0,0 +1,2 @@
+com.baeldung.cdi.extension.FlywayExtension
+
diff --git a/flyway-cdi-extension/src/main/resources/db/migration/V1__Create_person_table.sql b/flyway-cdi-extension/src/main/resources/db/migration/V1__Create_person_table.sql
new file mode 100644
index 0000000000..6bddc7689e
--- /dev/null
+++ b/flyway-cdi-extension/src/main/resources/db/migration/V1__Create_person_table.sql
@@ -0,0 +1,4 @@
+create table PERSON (
+ ID int not null,
+ NAME varchar(100) not null
+);
diff --git a/flyway-cdi-extension/src/main/resources/db/migration/V2__Add_people.sql b/flyway-cdi-extension/src/main/resources/db/migration/V2__Add_people.sql
new file mode 100644
index 0000000000..d8f1d62667
--- /dev/null
+++ b/flyway-cdi-extension/src/main/resources/db/migration/V2__Add_people.sql
@@ -0,0 +1,3 @@
+insert into PERSON (ID, NAME) values (1, 'Axel');
+insert into PERSON (ID, NAME) values (2, 'Mr. Foo');
+insert into PERSON (ID, NAME) values (3, 'Ms. Bar');
diff --git a/flyway/pom.xml b/flyway/pom.xml
index b1cc58af3d..353bbfb1ec 100644
--- a/flyway/pom.xml
+++ b/flyway/pom.xml
@@ -65,6 +65,7 @@
5.0.2
5.0.2
+ 1.4.195
diff --git a/flyway/src/test/java/com/baeldung/flywaycallbacks/FlywayApplicationTest.java b/flyway/src/test/java/com/baeldung/flywaycallbacks/FlywayApplicationUnitTest.java
similarity index 98%
rename from flyway/src/test/java/com/baeldung/flywaycallbacks/FlywayApplicationTest.java
rename to flyway/src/test/java/com/baeldung/flywaycallbacks/FlywayApplicationUnitTest.java
index 5e96fff64d..bf30ce604d 100644
--- a/flyway/src/test/java/com/baeldung/flywaycallbacks/FlywayApplicationTest.java
+++ b/flyway/src/test/java/com/baeldung/flywaycallbacks/FlywayApplicationUnitTest.java
@@ -16,7 +16,7 @@ import org.springframework.test.context.junit4.SpringRunner;
@RunWith(SpringRunner.class)
@DirtiesContext(classMode = ClassMode.AFTER_EACH_TEST_METHOD)
@ContextConfiguration(classes = FlywayCallbackTestConfig.class)
-public class FlywayApplicationTest {
+public class FlywayApplicationUnitTest {
private Log log = LogFactory.getLog(getClass());
diff --git a/gson/pom.xml b/gson/pom.xml
index 6e7779d26a..8222cb50e1 100644
--- a/gson/pom.xml
+++ b/gson/pom.xml
@@ -1,73 +1,73 @@
- 4.0.0
- com.baeldung
- gson
- 0.1-SNAPSHOT
- gson
+ xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+ xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
+ 4.0.0
+ com.baeldung
+ gson
+ 0.1-SNAPSHOT
+ gson
-
- com.baeldung
- parent-java
- 0.0.1-SNAPSHOT
- ../parent-java
-
+
+ com.baeldung
+ parent-java
+ 0.0.1-SNAPSHOT
+ ../parent-java
+
-
-
-
- org.projectlombok
- lombok
- ${lombok.version}
- provided
-
-
- joda-time
- joda-time
- ${joda-time.version}
-
-
- commons-io
- commons-io
- ${commons-io.version}
-
-
- org.apache.commons
- commons-collections4
- ${commons-collections4.version}
-
-
- org.apache.commons
- commons-lang3
- ${commons-lang3.version}
-
-
-
- com.google.code.gson
- gson
- ${gson.version}
-
-
+
+
+
+ org.projectlombok
+ lombok
+ ${lombok.version}
+ provided
+
+
+ joda-time
+ joda-time
+ ${joda-time.version}
+
+
+ commons-io
+ commons-io
+ ${commons-io.version}
+
+
+ org.apache.commons
+ commons-collections4
+ ${commons-collections4.version}
+
+
+ org.apache.commons
+ commons-lang3
+ ${commons-lang3.version}
+
+
+
+ com.google.code.gson
+ gson
+ ${gson.version}
+
+
-
- gson
-
-
- src/main/resources
- true
-
-
-
+
+ gson
+
+
+ src/main/resources
+ true
+
+
+
-
-
- 2.8.0
-
- 3.5
- 4.1
- 2.9.6
+
+
+ 2.8.0
+
+ 3.5
+ 4.1
+ 2.9.6
1.16.10
-
+
\ No newline at end of file
diff --git a/gson/src/main/java/org/baeldung/gson/entities/Employee.java b/gson/src/main/java/org/baeldung/gson/entities/Employee.java
new file mode 100644
index 0000000000..cedcd6572e
--- /dev/null
+++ b/gson/src/main/java/org/baeldung/gson/entities/Employee.java
@@ -0,0 +1,36 @@
+package org.baeldung.gson.entities;
+
+public class Employee {
+ private int id;
+ private String name;
+ private String address;
+
+ public Employee(int id, String name) {
+ this.id = id;
+ this.name = name;
+ }
+
+ public int getId() {
+ return id;
+ }
+
+ public void setId(int id) {
+ this.id = id;
+ }
+
+ public String getName() {
+ return name;
+ }
+
+ public void setName(String name) {
+ this.name = name;
+ }
+
+ public String getAddress() {
+ return address;
+ }
+
+ public void setAddress(String address) {
+ this.address = address;
+ }
+}
diff --git a/gson/src/main/java/org/baeldung/gson/serialization/HashMapDeserializer.java b/gson/src/main/java/org/baeldung/gson/serialization/HashMapDeserializer.java
new file mode 100644
index 0000000000..bb73e32559
--- /dev/null
+++ b/gson/src/main/java/org/baeldung/gson/serialization/HashMapDeserializer.java
@@ -0,0 +1,66 @@
+package org.baeldung.gson.serialization;
+
+import java.lang.reflect.Type;
+import java.math.BigDecimal;
+import java.util.HashMap;
+import java.util.Map;
+
+import org.baeldung.gson.entities.Employee;
+
+import com.google.gson.*;
+
+public class HashMapDeserializer implements JsonDeserializer> {
+
+ @Override
+ public HashMap deserialize(JsonElement elem, Type type, JsonDeserializationContext context) throws JsonParseException {
+ HashMap map = new HashMap<>();
+ for (Map.Entry entry : elem.getAsJsonObject().entrySet()) {
+ JsonElement jsonValue = entry.getValue();
+ Object value = null;
+ if (jsonValue.isJsonPrimitive()) {
+ value = toPrimitive(jsonValue.getAsJsonPrimitive(), context);
+ } else {
+ value = context.deserialize(jsonValue, Employee.class);
+ }
+ map.put(entry.getKey(), value);
+ }
+ return map;
+
+ }
+
+ private Object toPrimitive(JsonPrimitive jsonValue, JsonDeserializationContext context) {
+ if (jsonValue.isBoolean())
+ return jsonValue.getAsBoolean();
+ else if (jsonValue.isString())
+ return jsonValue.getAsString();
+ else {
+ BigDecimal bigDec = jsonValue.getAsBigDecimal();
+ Long l;
+ Integer i;
+ if ((i = toInteger(bigDec)) != null) {
+ return i;
+ } else if ((l = toLong(bigDec)) != null) {
+ return l;
+ } else {
+ return bigDec.doubleValue();
+ }
+ }
+ }
+
+ private Long toLong(BigDecimal val) {
+ try {
+ return val.toBigIntegerExact().longValue();
+ } catch (ArithmeticException e) {
+ return null;
+ }
+ }
+
+ private Integer toInteger(BigDecimal val) {
+ try {
+ return val.intValueExact();
+ } catch (ArithmeticException e) {
+ return null;
+ }
+ }
+
+}
diff --git a/gson/src/main/resources/logback.xml b/gson/src/main/resources/logback.xml
index 56af2d397e..7bd5154680 100644
--- a/gson/src/main/resources/logback.xml
+++ b/gson/src/main/resources/logback.xml
@@ -7,13 +7,13 @@
-
-
+
+
-
+
-
+
\ No newline at end of file
diff --git a/gson/src/test/java/org/baeldung/gson/deserialization/HashMapDeserializationUnitTest.java b/gson/src/test/java/org/baeldung/gson/deserialization/HashMapDeserializationUnitTest.java
new file mode 100644
index 0000000000..6905ade0da
--- /dev/null
+++ b/gson/src/test/java/org/baeldung/gson/deserialization/HashMapDeserializationUnitTest.java
@@ -0,0 +1,86 @@
+package org.baeldung.gson.deserialization;
+
+import java.lang.reflect.Type;
+import java.util.HashMap;
+
+import org.baeldung.gson.entities.Employee;
+import org.baeldung.gson.serialization.HashMapDeserializer;
+import org.junit.Assert;
+import org.junit.Test;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
+
+import com.google.gson.Gson;
+import com.google.gson.GsonBuilder;
+import com.google.gson.JsonSyntaxException;
+import com.google.gson.internal.LinkedTreeMap;
+import com.google.gson.reflect.TypeToken;
+
+public class HashMapDeserializationUnitTest {
+
+ private static final Logger logger = LoggerFactory.getLogger(HashMapDeserializationUnitTest.class);
+
+ @Test
+ public void whenUsingHashMapClass_thenShouldReturnMapWithDefaultClasses() {
+
+ String jsonString = "{'employee.name':'Bob','employee.salary':10000, 'employee.active':true, "
+ + "'employee':{'id':10, 'name': 'Bob Willis', 'address':'London'}}";
+
+ Gson gson = new Gson();
+ HashMap map = gson.fromJson(jsonString, HashMap.class);
+
+ logger.info("The converted map: {}", map);
+ Assert.assertEquals(4, map.size());
+ Assert.assertEquals(Double.class, map.get("employee.salary").getClass());
+ Assert.assertEquals(LinkedTreeMap.class, map.get("employee").getClass());
+
+ }
+
+ @Test(expected = JsonSyntaxException.class)
+ public void whenUsingJsonStringWithDuplicateKey_thenShouldThrowJsonSyntaxException() {
+
+ String jsonString = "{'employee.name':'Bob', 'employee.name':'Jenny','employee.salary':10000, "
+ + "'employee.active':true, " + "'employee':{'id':10, 'name': 'Bob Willis', 'address':'London'}}";
+
+ Gson gson = new Gson();
+ HashMap map = gson.fromJson(jsonString, HashMap.class);
+
+ logger.info("The converted map: {}", map);
+ }
+
+ @Test
+ public void whenUsingTypeToken_thenShouldReturnMapWithProperClass() {
+
+ String jsonString = "{'Bob':{'id':10, 'name': 'Bob Willis', 'address':'UK'},"
+ + "'Jenny':{'id':10, 'name': 'Jenny McCarthy', 'address':'USA'}, "
+ + "'Steve':{'id':10, 'name': 'Steven Waugh', 'address':'Australia'}}";
+
+ Gson gson = new Gson();
+ Type empMapType = new TypeToken>(){}.getType();
+ HashMap nameEmployeeMap = gson.fromJson(jsonString, empMapType);
+
+ logger.info("The converted map: {}", nameEmployeeMap);
+ Assert.assertEquals(3, nameEmployeeMap.size());
+ Assert.assertEquals(Employee.class, nameEmployeeMap.get("Bob").getClass());
+ }
+
+ @Test
+ public void whenUsingCustomDeserializer_thenShouldReturnMapWithProperClass() {
+
+ String jsonString = "{'employee.name':'Bob','employee.salary':10000, 'employee.active':true, "
+ + "'employee':{'id':10, 'name': 'Bob Willis', 'address':'London'}}";
+
+ Type type = new TypeToken>(){}.getType();
+ Gson gson = new GsonBuilder()
+ .registerTypeAdapter(type, new HashMapDeserializer())
+ .create();
+ HashMap blendedMap = gson.fromJson(jsonString, type);
+
+ logger.info("The converted map: {}", blendedMap);
+ Assert.assertEquals(4, blendedMap.size());
+ Assert.assertEquals(Integer.class, blendedMap.get("employee.salary").getClass());
+ Assert.assertEquals(Employee.class, blendedMap.get("employee").getClass());
+
+ }
+
+}
diff --git a/gson/src/test/resources/logback-test.xml b/gson/src/test/resources/logback-test.xml
new file mode 100644
index 0000000000..7bd5154680
--- /dev/null
+++ b/gson/src/test/resources/logback-test.xml
@@ -0,0 +1,19 @@
+
+
+
+
+ %d{HH:mm:ss.SSS} [%thread] %-5level %logger{36} - %msg%n
+
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/guest/log4j2-example/src/test/java/com/stackify/services/MyServiceTest.java b/guest/log4j2-example/src/test/java/com/stackify/services/MyServiceUnitTest.java
similarity index 98%
rename from guest/log4j2-example/src/test/java/com/stackify/services/MyServiceTest.java
rename to guest/log4j2-example/src/test/java/com/stackify/services/MyServiceUnitTest.java
index 49e367e45b..bd08225be4 100644
--- a/guest/log4j2-example/src/test/java/com/stackify/services/MyServiceTest.java
+++ b/guest/log4j2-example/src/test/java/com/stackify/services/MyServiceUnitTest.java
@@ -18,9 +18,9 @@ import org.junit.Test;
import com.stackify.models.User;
import com.stackify.services.MyService;
-public class MyServiceTest {
+public class MyServiceUnitTest {
- private static final Logger logger = LogManager.getLogger(MyServiceTest.class);
+ private static final Logger logger = LogManager.getLogger(MyServiceUnitTest.class);
@Test
public void testService() {
diff --git a/guest/logback-example/src/test/java/com/stackify/services/EmployeeServiceTest.java b/guest/logback-example/src/test/java/com/stackify/services/EmployeeServiceUnitTest.java
similarity index 98%
rename from guest/logback-example/src/test/java/com/stackify/services/EmployeeServiceTest.java
rename to guest/logback-example/src/test/java/com/stackify/services/EmployeeServiceUnitTest.java
index 187b27e1df..a3051f7087 100644
--- a/guest/logback-example/src/test/java/com/stackify/services/EmployeeServiceTest.java
+++ b/guest/logback-example/src/test/java/com/stackify/services/EmployeeServiceUnitTest.java
@@ -9,7 +9,7 @@ import com.stackify.models.Employee;
import ch.qos.logback.classic.Level;
-public class EmployeeServiceTest {
+public class EmployeeServiceUnitTest {
private static final Logger logger = LoggerFactory.getLogger(Logger.ROOT_LOGGER_NAME);
private EmployeeService employeeService = new EmployeeService();
diff --git a/guest/spring-mvc/pom.xml b/guest/spring-mvc/pom.xml
index 42543b5be0..c0ef451605 100644
--- a/guest/spring-mvc/pom.xml
+++ b/guest/spring-mvc/pom.xml
@@ -12,7 +12,7 @@
org.springframework.boot
spring-boot-starter-parent
- 2.0.0.M5
+ 2.0.0.RELEASE
diff --git a/guest/spring-security/pom.xml b/guest/spring-security/pom.xml
index baca3bce85..8be42ba32b 100644
--- a/guest/spring-security/pom.xml
+++ b/guest/spring-security/pom.xml
@@ -11,7 +11,7 @@
org.springframework.boot
spring-boot-starter-parent
- 2.0.0.M6
+ 2.0.0.RELEASE
diff --git a/guest/webservices/rest-server/src/test/java/com/stackify/services/UserServiceTest.java b/guest/webservices/rest-server/src/test/java/com/stackify/services/UserServiceLiveTest.java
similarity index 95%
rename from guest/webservices/rest-server/src/test/java/com/stackify/services/UserServiceTest.java
rename to guest/webservices/rest-server/src/test/java/com/stackify/services/UserServiceLiveTest.java
index 064951fbbe..be3992b7f7 100644
--- a/guest/webservices/rest-server/src/test/java/com/stackify/services/UserServiceTest.java
+++ b/guest/webservices/rest-server/src/test/java/com/stackify/services/UserServiceLiveTest.java
@@ -6,7 +6,7 @@ import io.restassured.RestAssured;
import static io.restassured.RestAssured.*;
import static org.hamcrest.CoreMatchers.*;
-public class UserServiceTest {
+public class UserServiceLiveTest {
@Test
public void whenAddUser_thenGetUserOk() {
RestAssured.baseURI = "http://localhost:8080/rest-server";
diff --git a/hibernate5/README.md b/hibernate5/README.md
index 8f2f8eb469..b67ab7115f 100644
--- a/hibernate5/README.md
+++ b/hibernate5/README.md
@@ -14,3 +14,4 @@
- [Bootstrapping JPA Programmatically in Java](http://www.baeldung.com/java-bootstrap-jpa)
- [Optimistic Locking in JPA](http://www.baeldung.com/jpa-optimistic-locking)
- [Hibernate Entity Lifecycle](https://www.baeldung.com/hibernate-entity-lifecycle)
+- [@JoinColumn Annotation Explained](https://www.baeldung.com/jpa-join-column)
diff --git a/hibernate5/src/main/java/com/baeldung/hibernate/proxy/BatchEmployee.java b/hibernate5/src/main/java/com/baeldung/hibernate/proxy/BatchEmployee.java
deleted file mode 100644
index 00643ab3dd..0000000000
--- a/hibernate5/src/main/java/com/baeldung/hibernate/proxy/BatchEmployee.java
+++ /dev/null
@@ -1,56 +0,0 @@
-package com.baeldung.hibernate.proxy;
-
-import org.hibernate.annotations.BatchSize;
-
-import javax.persistence.*;
-import java.io.Serializable;
-
-@Entity
-@BatchSize(size = 5)
-public class BatchEmployee implements Serializable {
-
- @Id
- @GeneratedValue (strategy = GenerationType.SEQUENCE)
- private Long id;
-
- @ManyToOne(fetch = FetchType.LAZY)
- private Boss boss;
-
- @Column(name = "name")
- private String name;
-
- @Column(name = "surname")
- private String surname;
-
- public Long getId() {
- return id;
- }
-
- public void setId(Long id) {
- this.id = id;
- }
-
- public Boss getBoss() {
- return boss;
- }
-
- public void setBoss(Boss boss) {
- this.boss = boss;
- }
-
- public String getName() {
- return name;
- }
-
- public void setName(String name) {
- this.name = name;
- }
-
- public String getSurname() {
- return surname;
- }
-
- public void setSurname(String surname) {
- this.surname = surname;
- }
-}
diff --git a/hibernate5/src/main/java/com/baeldung/hibernate/proxy/Boss.java b/hibernate5/src/main/java/com/baeldung/hibernate/proxy/Boss.java
deleted file mode 100644
index b6e01814d0..0000000000
--- a/hibernate5/src/main/java/com/baeldung/hibernate/proxy/Boss.java
+++ /dev/null
@@ -1,49 +0,0 @@
-package com.baeldung.hibernate.proxy;
-
-import javax.persistence.*;
-import java.io.Serializable;
-
-@Entity
-public class Boss implements Serializable {
-
- @Id
- @GeneratedValue(strategy = GenerationType.SEQUENCE)
- private Long id;
-
- @Column(name = "name")
- private String name;
-
- @Column(name = "surname")
- private String surname;
-
- public Boss() { }
-
- public Boss(String name, String surname) {
- this.name = name;
- this.surname = surname;
- }
-
- public Long getId() {
- return id;
- }
-
- public void setId(Long id) {
- this.id = id;
- }
-
- public String getName() {
- return name;
- }
-
- public void setName(String name) {
- this.name = name;
- }
-
- public String getSurname() {
- return surname;
- }
-
- public void setSurname(String surname) {
- this.surname = surname;
- }
-}
diff --git a/hibernate5/src/main/java/com/baeldung/hibernate/proxy/Company.java b/hibernate5/src/main/java/com/baeldung/hibernate/proxy/Company.java
new file mode 100644
index 0000000000..f146a8674e
--- /dev/null
+++ b/hibernate5/src/main/java/com/baeldung/hibernate/proxy/Company.java
@@ -0,0 +1,62 @@
+package com.baeldung.hibernate.proxy;
+
+import javax.persistence.*;
+import java.io.Serializable;
+import java.util.HashSet;
+import java.util.Objects;
+import java.util.Set;
+
+@Entity
+public class Company implements Serializable {
+
+ @Id
+ @GeneratedValue(strategy = GenerationType.SEQUENCE)
+ private Long id;
+
+ @Column(name = "name")
+ private String name;
+
+ @OneToMany
+ @JoinColumn(name = "workplace_id")
+ private Set employees = new HashSet<>();
+
+ public Company() { }
+
+ public Company(String name) {
+ this.name = name;
+ }
+
+ public Long getId() {
+ return id;
+ }
+
+ public void setId(Long id) {
+ this.id = id;
+ }
+
+ public String getName() {
+ return name;
+ }
+
+ public void setName(String name) {
+ this.name = name;
+ }
+
+ public Set getEmployees() {
+ return this.employees;
+ }
+
+ @Override
+ public boolean equals(Object o) {
+ if (this == o) return true;
+ if (o == null || getClass() != o.getClass()) return false;
+ Company company = (Company) o;
+ return Objects.equals(id, company.id) &&
+ Objects.equals(name, company.name);
+ }
+
+ @Override
+ public int hashCode() {
+ return Objects.hash(id, name);
+ }
+}
diff --git a/hibernate5/src/main/java/com/baeldung/hibernate/proxy/Employee.java b/hibernate5/src/main/java/com/baeldung/hibernate/proxy/Employee.java
index 6bc64c35ef..4bc0b8f25c 100644
--- a/hibernate5/src/main/java/com/baeldung/hibernate/proxy/Employee.java
+++ b/hibernate5/src/main/java/com/baeldung/hibernate/proxy/Employee.java
@@ -1,9 +1,13 @@
package com.baeldung.hibernate.proxy;
+import org.hibernate.annotations.BatchSize;
+
import javax.persistence.*;
import java.io.Serializable;
+import java.util.Objects;
@Entity
+@BatchSize(size = 5)
public class Employee implements Serializable {
@Id
@@ -11,13 +15,18 @@ public class Employee implements Serializable {
private Long id;
@ManyToOne(fetch = FetchType.LAZY)
- private Boss boss;
+ @JoinColumn(name = "workplace_id")
+ private Company workplace;
- @Column(name = "name")
- private String name;
+ @Column(name = "first_name")
+ private String firstName;
- @Column(name = "surname")
- private String surname;
+ public Employee() { }
+
+ public Employee(Company workplace, String firstName) {
+ this.workplace = workplace;
+ this.firstName = firstName;
+ }
public Long getId() {
return id;
@@ -27,27 +36,34 @@ public class Employee implements Serializable {
this.id = id;
}
- public Boss getBoss() {
- return boss;
+ public Company getWorkplace() {
+ return workplace;
}
- public void setBoss(Boss boss) {
- this.boss = boss;
+ public void setWorkplace(Company workplace) {
+ this.workplace = workplace;
}
- public String getName() {
- return name;
+ public String getFirstName() {
+ return firstName;
}
- public void setName(String name) {
- this.name = name;
+ public void setFirstName(String firstName) {
+ this.firstName = firstName;
}
- public String getSurname() {
- return surname;
+ @Override
+ public boolean equals(Object o) {
+ if (this == o) return true;
+ if (o == null || getClass() != o.getClass()) return false;
+ Employee employee = (Employee) o;
+ return Objects.equals(id, employee.id) &&
+ Objects.equals(workplace, employee.workplace) &&
+ Objects.equals(firstName, employee.firstName);
}
- public void setSurname(String surname) {
- this.surname = surname;
+ @Override
+ public int hashCode() {
+ return Objects.hash(id, workplace, firstName);
}
}
diff --git a/hibernate5/src/main/java/com/baeldung/hibernate/proxy/HibernateUtil.java b/hibernate5/src/main/java/com/baeldung/hibernate/proxy/HibernateUtil.java
index e6ad0432bd..37c083049f 100644
--- a/hibernate5/src/main/java/com/baeldung/hibernate/proxy/HibernateUtil.java
+++ b/hibernate5/src/main/java/com/baeldung/hibernate/proxy/HibernateUtil.java
@@ -30,7 +30,7 @@ public class HibernateUtil {
private static SessionFactoryBuilder getSessionFactoryBuilder(ServiceRegistry serviceRegistry) {
MetadataSources metadataSources = new MetadataSources(serviceRegistry);
metadataSources.addPackage("com.baeldung.hibernate.proxy");
- metadataSources.addAnnotatedClass(Boss.class);
+ metadataSources.addAnnotatedClass(Company.class);
metadataSources.addAnnotatedClass(Employee.class);
Metadata metadata = metadataSources.buildMetadata();
diff --git a/hibernate5/src/test/java/com/baeldung/hibernate/proxy/HibernateProxyUnitTest.java b/hibernate5/src/test/java/com/baeldung/hibernate/proxy/HibernateProxyUnitTest.java
index fa41797dd2..0a4caf032b 100644
--- a/hibernate5/src/test/java/com/baeldung/hibernate/proxy/HibernateProxyUnitTest.java
+++ b/hibernate5/src/test/java/com/baeldung/hibernate/proxy/HibernateProxyUnitTest.java
@@ -1,6 +1,7 @@
package com.baeldung.hibernate.proxy;
import org.hibernate.*;
+import org.hibernate.proxy.HibernateProxy;
import org.junit.After;
import org.junit.Before;
import org.junit.Test;
@@ -8,25 +9,31 @@ import org.junit.Test;
import static org.junit.Assert.*;
import java.io.IOException;
-import java.util.List;
import static org.junit.Assert.fail;
public class HibernateProxyUnitTest {
+ private SessionFactory factory;
+
private Session session;
+ private Company workplace;
+
+ private Employee albert;
+
+ private Employee bob;
+
+ private Employee charlotte;
+
@Before
public void init(){
try {
- session = HibernateUtil.getSessionFactory("hibernate.properties")
- .openSession();
+ factory = HibernateUtil.getSessionFactory("hibernate.properties");
+ session = factory.openSession();
} catch (HibernateException | IOException e) {
fail("Failed to initiate Hibernate Session [Exception:" + e.toString() + "]");
}
-
- Boss boss = new Boss("Eduard", "Freud");
- session.save(boss);
}
@After
@@ -36,40 +43,114 @@ public class HibernateProxyUnitTest {
}
}
- @Test(expected = NullPointerException.class)
+ @Test
public void givenAnInexistentEmployeeId_whenUseGetMethod_thenReturnNull() {
- Employee employee = session.get(Employee.class, new Long(14));
+ Employee employee = session.get(Employee.class, 14L);
assertNull(employee);
- employee.getId();
}
- @Test
- public void givenAnInexistentEmployeeId_whenUseLoadMethod_thenReturnAProxy() {
- Employee employee = session.load(Employee.class, new Long(14));
+ @Test(expected = ObjectNotFoundException.class)
+ public void givenAnNonExistentEmployeeId_whenUseLoadMethod_thenThrowObjectNotFoundException() {
+ Employee employee = session.load(Employee.class, 999L);
assertNotNull(employee);
+ employee.getFirstName();
}
@Test
- public void givenABatchEmployeeList_whenSaveOne_thenSaveTheWholeBatch() {
- Transaction transaction = session.beginTransaction();
+ public void givenAnNonExistentEmployeeId_whenUseLoadMethod_thenReturnAProxy() {
+ Employee employee = session.load(Employee.class, 14L);
+ assertNotNull(employee);
+ assertTrue(employee instanceof HibernateProxy);
+ }
- for (long i = 1; i <= 5; i++) {
- Employee employee = new Employee();
- employee.setName("Employee " + i);
- session.save(employee);
- }
+ @Test
+ public void givenAnEmployeeFromACompany_whenUseLoadMethod_thenCompanyIsAProxy() {
+ Transaction tx = session.beginTransaction();
+
+ this.workplace = new Company("Bizco");
+ session.save(workplace);
+
+ this.albert = new Employee(workplace, "Albert");
+ session.save(albert);
- //After this line is possible to see all the insertions in the logs
session.flush();
session.clear();
- transaction.commit();
- transaction = session.beginTransaction();
+ tx.commit();
+ this.session = factory.openSession();
- List employeeList = session.createQuery("from Employee")
- .setCacheMode(CacheMode.IGNORE).getResultList();
+ Employee proxyAlbert = session.load(Employee.class, albert.getId());
+ assertTrue(proxyAlbert instanceof HibernateProxy);
- assertEquals(employeeList.size(), 5);
- transaction.commit();
+ // with many-to-one lazy-loading, associations remain proxies
+ assertTrue(proxyAlbert.getWorkplace() instanceof HibernateProxy);
+ }
+
+ @Test
+ public void givenACompanyWithEmployees_whenUseLoadMethod_thenEmployeesAreProxies() {
+ Transaction tx = session.beginTransaction();
+
+ this.workplace = new Company("Bizco");
+ session.save(workplace);
+
+ this.albert = new Employee(workplace, "Albert");
+ session.save(albert);
+
+ session.flush();
+ session.clear();
+
+ tx.commit();
+ this.session = factory.openSession();
+
+ Company proxyBizco = session.load(Company.class, workplace.getId());
+ assertTrue(proxyBizco instanceof HibernateProxy);
+
+ // with one-to-many, associations aren't proxies
+ assertFalse(proxyBizco.getEmployees().iterator().next() instanceof HibernateProxy);
+ }
+
+ @Test
+ public void givenThreeEmployees_whenLoadThemWithBatch_thenReturnAllOfThemWithOneQuery() {
+ Transaction tx = session.beginTransaction();
+
+ //We are saving 3 entities with one flush
+
+ this.workplace = new Company("Bizco");
+ session.save(workplace);
+
+ this.albert = new Employee(workplace, "Albert");
+ session.save(albert);
+
+ this.bob = new Employee(workplace, "Bob");
+ session.save(bob);
+
+ this.charlotte = new Employee(workplace, "Charlotte");
+ session.save(charlotte);
+
+ session.flush();
+ session.clear();
+
+ tx.commit();
+ session = factory.openSession();
+
+ Employee proxyAlbert = session.load(Employee.class, this.albert.getId());
+ assertNotNull(proxyAlbert);
+ assertTrue(proxyAlbert instanceof HibernateProxy);
+
+ Employee proxyBob = session.load(Employee.class, this.bob.getId());
+ assertNotNull(proxyBob);
+ assertTrue(proxyBob instanceof HibernateProxy);
+
+ Employee proxyCharlotte = session.load(Employee.class, this.charlotte.getId());
+ assertNotNull(proxyCharlotte);
+ assertTrue(proxyCharlotte instanceof HibernateProxy);
+
+ //Fetching from database 3 entities with one call
+ //Select from log: where employee0_.id in (?, ?, ?)
+ proxyAlbert.getFirstName();
+
+ assertEquals(proxyAlbert, this.albert);
+ assertEquals(proxyBob, this.bob);
+ assertEquals(proxyCharlotte, this.charlotte);
}
}
diff --git a/java-dates/src/main/java/com/baeldung/date/AgeCalculator.java b/java-dates/src/main/java/com/baeldung/date/AgeCalculator.java
new file mode 100644
index 0000000000..c031c97dec
--- /dev/null
+++ b/java-dates/src/main/java/com/baeldung/date/AgeCalculator.java
@@ -0,0 +1,32 @@
+package com.baeldung.date;
+
+import java.text.DateFormat;
+import java.text.SimpleDateFormat;
+import java.time.LocalDate;
+import java.time.Period;
+import java.util.Date;
+import org.joda.time.Years;
+
+public class AgeCalculator {
+
+ public int calculateAge(LocalDate birthDate, LocalDate currentDate) {
+ // validate inputs ...
+ return Period.between(birthDate, currentDate)
+ .getYears();
+ }
+
+ public int calculateAgeWithJodaTime(org.joda.time.LocalDate birthDate, org.joda.time.LocalDate currentDate) {
+ // validate inputs ...
+ Years age = Years.yearsBetween(birthDate, currentDate);
+ return age.getYears();
+ }
+
+ public int calculateAgeWithJava7(Date birthDate, Date currentDate) {
+ // validate inputs ...
+ DateFormat formatter = new SimpleDateFormat("yyyyMMdd");
+ int d1 = Integer.parseInt(formatter.format(birthDate));
+ int d2 = Integer.parseInt(formatter.format(currentDate));
+ int age = (d2 - d1) / 10000;
+ return age;
+ }
+}
\ No newline at end of file
diff --git a/java-dates/src/test/java/com/baeldung/date/AgeCalculatorUnitTest.java b/java-dates/src/test/java/com/baeldung/date/AgeCalculatorUnitTest.java
new file mode 100644
index 0000000000..dcd261337c
--- /dev/null
+++ b/java-dates/src/test/java/com/baeldung/date/AgeCalculatorUnitTest.java
@@ -0,0 +1,31 @@
+package com.baeldung.date;
+
+import static org.junit.Assert.assertEquals;
+import java.text.ParseException;
+import java.text.SimpleDateFormat;
+import java.time.LocalDate;
+import java.util.Date;
+import org.junit.jupiter.api.Test;
+
+public class AgeCalculatorUnitTest {
+ AgeCalculator ageCalculator = new AgeCalculator();
+
+ @Test
+ public void givenLocalDate_whenCalculateAge_thenOk() {
+ assertEquals(10, ageCalculator.calculateAge(LocalDate.of(2008, 5, 20), LocalDate.of(2018, 9, 20)));
+ }
+
+ @Test
+ public void givenJodaTime_whenCalculateAge_thenOk() {
+ assertEquals(10, ageCalculator.calculateAgeWithJodaTime(new org.joda.time.LocalDate(2008, 5, 20), new org.joda.time.LocalDate(2018, 9, 20)));
+ }
+
+ @Test
+ public void givenDate_whenCalculateAge_thenOk() throws ParseException {
+ SimpleDateFormat sdf = new SimpleDateFormat("yyyy-mm-dd");
+ Date birthDate = sdf.parse("2008-05-20");
+ Date currentDate = sdf.parse("2018-09-20");
+ assertEquals(10, ageCalculator.calculateAgeWithJava7(birthDate, currentDate));
+ }
+
+}
\ No newline at end of file
diff --git a/java-difference-date/src/test/java/com/baeldung/DateDiffTest.java b/java-difference-date/src/test/java/com/baeldung/DateDiffUnitTest.java
similarity index 98%
rename from java-difference-date/src/test/java/com/baeldung/DateDiffTest.java
rename to java-difference-date/src/test/java/com/baeldung/DateDiffUnitTest.java
index 4203f7ef38..2c5323be6f 100644
--- a/java-difference-date/src/test/java/com/baeldung/DateDiffTest.java
+++ b/java-difference-date/src/test/java/com/baeldung/DateDiffUnitTest.java
@@ -14,7 +14,7 @@ import java.util.concurrent.TimeUnit;
import static org.junit.Assert.assertEquals;
-public class DateDiffTest {
+public class DateDiffUnitTest {
@Test
public void givenTwoDatesBeforeJava8_whenDifferentiating_thenWeGetSix() throws ParseException {
SimpleDateFormat sdf = new SimpleDateFormat("MM/dd/yyyy", Locale.ENGLISH);
diff --git a/java-ee-8-security-api/pom.xml b/java-ee-8-security-api/pom.xml
index 5490cd40f7..3d235e10a8 100644
--- a/java-ee-8-security-api/pom.xml
+++ b/java-ee-8-security-api/pom.xml
@@ -3,11 +3,16 @@
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
4.0.0
- com.baeldung
java-ee-8-security-api
1.0-SNAPSHOT
pom
+
+ com.baeldung
+ parent-modules
+ 1.0.0-SNAPSHOT
+
+
@@ -53,10 +58,6 @@
- 1.8
- 1.8
- UTF-8
-
9080
9443
diff --git a/java-numbers/src/main/java/com/baeldung/percentage/PercentageCalculator.java b/java-numbers/src/main/java/com/baeldung/percentage/PercentageCalculator.java
new file mode 100644
index 0000000000..e74de2cc67
--- /dev/null
+++ b/java-numbers/src/main/java/com/baeldung/percentage/PercentageCalculator.java
@@ -0,0 +1,21 @@
+package com.baeldung.percentage;
+
+import java.util.Scanner;
+
+public class PercentageCalculator {
+
+ public double calculatePercentage(double obtained,double total){
+ return obtained*100/total;
+ }
+
+ public static void main(String[] args) {
+ PercentageCalculator pc = new PercentageCalculator();
+ Scanner in = new Scanner(System.in);
+ System.out.println("Enter obtained marks:");
+ double obtained = in.nextDouble();
+ System.out.println("Enter total marks:");
+ double total =in.nextDouble();
+ System.out.println("Percentage obtained :"+pc.calculatePercentage(obtained,total));
+ }
+
+}
diff --git a/java-numbers/src/test/java/com/baeldung/percentage/PercentageCalculatorUnitTest.java b/java-numbers/src/test/java/com/baeldung/percentage/PercentageCalculatorUnitTest.java
new file mode 100644
index 0000000000..202d4f8112
--- /dev/null
+++ b/java-numbers/src/test/java/com/baeldung/percentage/PercentageCalculatorUnitTest.java
@@ -0,0 +1,33 @@
+package com.baeldung.percentage;
+
+import org.junit.Assert;
+import org.junit.Test;
+
+public class PercentageCalculatorUnitTest {
+ private PercentageCalculator pc = new PercentageCalculator();
+
+ @Test
+ public void whenPass2Integers_thenShouldCalculatePercentage(){
+ Assert.assertEquals("Result not as expected",
+ 50.0,pc.calculatePercentage(50,100),0.1);
+ }
+
+ @Test
+ public void whenPassObtainedMarksAsDouble_thenShouldCalculatePercentage(){
+ Assert.assertEquals("Result not as expected",5.05,
+ pc.calculatePercentage(50.5,1000),0.1);
+ }
+
+ @Test
+ public void whenPassTotalMarksAsDouble_thenShouldCalculatePercentage(){
+ Assert.assertEquals("Result not as expected",19.6,
+ pc.calculatePercentage(5,25.5),0.1);
+ }
+
+ @Test
+ public void whenPass2DoubleNumbers_thenShouldCalculatePercentage(){
+ Assert.assertEquals("Result not as expected",20,
+ pc.calculatePercentage(5.5,27.5),0.1);
+ }
+
+}
diff --git a/java-streams/pom.xml b/java-streams/pom.xml
index 023a5f695b..e4670c268d 100644
--- a/java-streams/pom.xml
+++ b/java-streams/pom.xml
@@ -105,7 +105,7 @@
3.5
1.16.12
0.9.0
- 1.13
+ 1.15
0.6.5
2.10
diff --git a/java-streams/src/test/java/com/baeldung/protonpack/ProtonpackUnitTest.java b/java-streams/src/test/java/com/baeldung/protonpack/ProtonpackUnitTest.java
new file mode 100644
index 0000000000..1b64c8924a
--- /dev/null
+++ b/java-streams/src/test/java/com/baeldung/protonpack/ProtonpackUnitTest.java
@@ -0,0 +1,209 @@
+package com.baeldung.protonpack;
+
+import com.codepoetics.protonpack.Indexed;
+import com.codepoetics.protonpack.StreamUtils;
+import com.codepoetics.protonpack.collectors.CollectorUtils;
+import com.codepoetics.protonpack.collectors.NonUniqueValueException;
+import com.codepoetics.protonpack.selectors.Selector;
+import org.junit.Test;
+
+import java.util.Arrays;
+import java.util.List;
+import java.util.Optional;
+import java.util.Set;
+import java.util.concurrent.atomic.AtomicInteger;
+import java.util.function.Function;
+import java.util.stream.Collectors;
+import java.util.stream.Stream;
+
+import static java.util.Arrays.asList;
+import static java.util.Arrays.stream;
+import static org.assertj.core.api.Assertions.assertThat;
+import static org.assertj.core.api.Assertions.assertThatExceptionOfType;
+
+@SuppressWarnings("unchecked")
+public class ProtonpackUnitTest {
+ @Test
+ public void whenTakeWhile_thenTakenWhile() {
+ Stream streamOfInt = Stream.iterate(1, i -> i + 1);
+ List result = StreamUtils.takeWhile(streamOfInt, i -> i < 5).collect(Collectors.toList());
+ assertThat(result).contains(1, 2, 3, 4);
+ }
+
+ @Test
+ public void whenTakeUntil_thenTakenUntil() {
+ Stream streamOfInt = Stream.iterate(1, i -> i + 1);
+ List result = StreamUtils.takeUntil(streamOfInt, i -> i > 50).collect(Collectors.toList());
+ assertThat(result).contains(10, 20, 30, 40);
+ }
+
+ @Test
+ public void givenMultipleStream_whenZipped_thenZipped() {
+ String[] clubs = { "Juventus", "Barcelona", "Liverpool", "PSG" };
+ String[] players = { "Ronaldo", "Messi", "Salah" };
+ Set zippedFrom2Sources = StreamUtils.zip(stream(clubs), stream(players), (club, player) -> club + " " + player)
+ .collect(Collectors.toSet());
+ assertThat(zippedFrom2Sources).contains("Juventus Ronaldo", "Barcelona Messi", "Liverpool Salah");
+
+ String[] leagues = { "Serie A", "La Liga", "Premier League" };
+ Set zippedFrom3Sources = StreamUtils.zip(stream(clubs), stream(players), stream(leagues),
+ (club, player, league) -> club + " " + player + " " + league).collect(Collectors.toSet());
+ assertThat(zippedFrom3Sources).contains("Juventus Ronaldo Serie A", "Barcelona Messi La Liga",
+ "Liverpool Salah Premier League");
+ }
+
+ @Test
+ public void whenZippedWithIndex_thenZippedWithIndex() {
+ Stream streamOfClubs = Stream.of("Juventus", "Barcelona", "Liverpool");
+ Set> zipsWithIndex = StreamUtils.zipWithIndex(streamOfClubs).collect(Collectors.toSet());
+ assertThat(zipsWithIndex).contains(Indexed.index(0, "Juventus"), Indexed.index(1, "Barcelona"),
+ Indexed.index(2, "Liverpool"));
+ }
+
+ @Test
+ public void givenMultipleStream_whenMerged_thenMerged() {
+ Stream streamOfClubs = Stream.of("Juventus", "Barcelona", "Liverpool", "PSG");
+ Stream streamOfPlayers = Stream.of("Ronaldo", "Messi", "Salah");
+ Stream streamOfLeagues = Stream.of("Serie A", "La Liga", "Premier League");
+
+ Set merged = StreamUtils.merge(() -> "", (valOne, valTwo) -> valOne + " " + valTwo, streamOfClubs,
+ streamOfPlayers, streamOfLeagues).collect(Collectors.toSet());
+
+ assertThat(merged).contains(" Juventus Ronaldo Serie A", " Barcelona Messi La Liga", " Liverpool Salah Premier League",
+ " PSG");
+ }
+
+ @Test
+ public void givenMultipleStream_whenMergedToList_thenMergedToList() {
+ Stream streamOfClubs = Stream.of("Juventus", "Barcelona", "PSG");
+ Stream streamOfPlayers = Stream.of("Ronaldo", "Messi");
+
+ List> mergedListOfList = StreamUtils.mergeToList(streamOfClubs, streamOfPlayers)
+ .collect(Collectors.toList());
+ assertThat(mergedListOfList.get(0)).isInstanceOf(List.class);
+ assertThat(mergedListOfList.get(0)).containsExactly("Juventus", "Ronaldo");
+ assertThat(mergedListOfList.get(1)).containsExactly("Barcelona", "Messi");
+ assertThat(mergedListOfList.get(2)).containsExactly("PSG");
+ }
+
+ @Test
+ public void givenMultipleStream_whenInterleaved_thenInterleaved() {
+ Stream streamOfClubs = Stream.of("Juventus", "Barcelona", "Liverpool");
+ Stream streamOfPlayers = Stream.of("Ronaldo", "Messi");
+ Stream streamOfLeagues = Stream.of("Serie A", "La Liga");
+
+ AtomicInteger counter = new AtomicInteger(0);
+ Selector roundRobinSelector = (o) -> {
+ Object[] vals = (Object[]) o;
+ while (counter.get() >= vals.length || vals[counter.get()] == null) {
+ if (counter.incrementAndGet() >= vals.length)
+ counter.set(0);
+ }
+ return counter.getAndIncrement();
+ };
+ Stream interleavedStream = StreamUtils.interleave(roundRobinSelector, streamOfClubs, streamOfPlayers,
+ streamOfLeagues);
+ List interleavedList = interleavedStream.collect(Collectors.toList());
+ assertThat(interleavedList).containsExactly("Juventus", "Ronaldo", "Serie A", "Barcelona", "Messi", "La Liga",
+ "Liverpool");
+ }
+
+ @Test
+ public void whenSkippedUntil_thenSkippedUntil() {
+ Integer[] numbers = { 1, 2, 3, 4, 5, 6, 7, 8, 9, 10 };
+ List skippedUntilGreaterThan5 = StreamUtils.skipUntil(stream(numbers), i -> i > 5).collect(Collectors.toList());
+ assertThat(skippedUntilGreaterThan5).containsExactly(6, 7, 8, 9, 10);
+
+ List skippedUntilLessThanEquals5 = StreamUtils.skipUntil(stream(numbers), i -> i <= 5)
+ .collect(Collectors.toList());
+ assertThat(skippedUntilLessThanEquals5).containsExactly(1, 2, 3, 4, 5, 6, 7, 8, 9, 10);
+ }
+
+ @Test
+ public void whenSkippedWhile_thenSkippedWhile() {
+ Integer[] numbers = { 1, 2, 3, 4, 5, 6, 7, 8, 9, 10 };
+ List skippedWhileLessThanEquals5 = StreamUtils.skipWhile(stream(numbers), i -> i <= 5)
+ .collect(Collectors.toList());
+ assertThat(skippedWhileLessThanEquals5).containsExactly(6, 7, 8, 9, 10);
+
+ List skippedWhileGreaterThan5 = StreamUtils.skipWhile(stream(numbers), i -> i > 5).collect(Collectors.toList());
+ assertThat(skippedWhileGreaterThan5).containsExactly(1, 2, 3, 4, 5, 6, 7, 8, 9, 10);
+ }
+
+ @Test
+ public void givenFibonacciGenerator_whenUnfolded_thenUnfolded() {
+ AtomicInteger lastValue = new AtomicInteger(0);
+ Function> fibonacciGenerator = (i) -> (i < 10) ?
+ Optional.of(i + lastValue.getAndSet(i)) :
+ Optional.empty();
+
+ List fib = StreamUtils.unfold(1, fibonacciGenerator).collect(Collectors.toList());
+ assertThat(fib).containsExactly(1, 1, 2, 3, 5, 8, 13);
+ }
+
+ @Test
+ public void whenWindowed_thenWindowed() {
+ Integer[] numbers = { 1, 2, 3, 4, 5, 6, 7 };
+
+ List> windowedWithSkip1 = StreamUtils.windowed(stream(numbers), 3, 1).collect(Collectors.toList());
+ assertThat(windowedWithSkip1).containsExactly(asList(1, 2, 3), asList(2, 3, 4), asList(3, 4, 5), asList(4, 5, 6),
+ asList(5, 6, 7));
+
+ List> windowedWithSkip2 = StreamUtils.windowed(stream(numbers), 3, 2).collect(Collectors.toList());
+ assertThat(windowedWithSkip2).containsExactly(asList(1, 2, 3), asList(3, 4, 5), asList(5, 6, 7));
+ }
+
+ @Test
+ public void whenAggregated_thenAggregated() {
+ Integer[] numbers = { 1, 2, 2, 3, 4, 4, 4, 5 };
+ List> aggregated = StreamUtils.aggregate(stream(numbers), (int1, int2) -> int1.compareTo(int2) == 0)
+ .collect(Collectors.toList());
+ assertThat(aggregated).containsExactly(asList(1), asList(2, 2), asList(3), asList(4, 4, 4), asList(5));
+
+ List> aggregatedFixSize = StreamUtils.aggregate(stream(numbers), 5).collect(Collectors.toList());
+ assertThat(aggregatedFixSize).containsExactly(asList(1, 2, 2, 3, 4), asList(4, 4, 5));
+ }
+
+ @Test
+ public void whenGroupedRun_thenGroupedRun() {
+ Integer[] numbers = { 1, 1, 2, 3, 4, 4, 5 };
+ List> grouped = StreamUtils.groupRuns(stream(numbers)).collect(Collectors.toList());
+ assertThat(grouped).containsExactly(asList(1, 1), asList(2), asList(3), asList(4, 4), asList(5));
+
+ Integer[] numbers2 = { 1, 2, 3, 1 };
+ List> grouped2 = StreamUtils.groupRuns(stream(numbers2)).collect(Collectors.toList());
+ assertThat(grouped2).containsExactly(asList(1), asList(2), asList(3), asList(1));
+ }
+
+ @Test
+ public void whenAggregatedOnListCondition_thenAggregatedOnListCondition() {
+ Integer[] numbers = { 1, 1, 2, 3, 4, 4, 5 };
+ Stream> aggregated = StreamUtils.aggregateOnListCondition(stream(numbers),
+ (currentList, nextInt) -> currentList.stream().mapToInt(Integer::intValue).sum() + nextInt <= 5);
+ assertThat(aggregated).containsExactly(asList(1, 1, 2), asList(3), asList(4), asList(4), asList(5));
+ }
+
+ @Test
+ public void givenProjectionFunction_whenMaxedBy_thenMaxedBy() {
+ Stream clubs = Stream.of("Juventus", "Barcelona", "PSG");
+ Optional longestName = clubs.collect(CollectorUtils.maxBy(String::length));
+ assertThat(longestName.get()).isEqualTo("Barcelona");
+ }
+
+ @Test
+ public void givenStreamOfMultipleElem_whenUniqueCollector_thenValueReturned() {
+ Stream singleElement = Stream.of(1);
+ Optional unique = singleElement.collect(CollectorUtils.unique());
+ assertThat(unique.get()).isEqualTo(1);
+
+ }
+
+ @Test
+ public void givenStreamOfMultipleElem_whenUniqueCollector_thenExceptionThrown() {
+ Stream multipleElement = Stream.of(1, 2, 3);
+ assertThatExceptionOfType(NonUniqueValueException.class).isThrownBy(() -> {
+ multipleElement.collect(CollectorUtils.unique());
+ });
+ }
+
+}
diff --git a/core-java-collections/src/test/java/com/baeldung/collection/StreamOperateAndRemoveUnitTest.java b/java-streams/src/test/java/com/baeldung/stream/StreamOperateAndRemoveUnitTest.java
similarity index 98%
rename from core-java-collections/src/test/java/com/baeldung/collection/StreamOperateAndRemoveUnitTest.java
rename to java-streams/src/test/java/com/baeldung/stream/StreamOperateAndRemoveUnitTest.java
index 9f002c89a2..c5aa9a1651 100644
--- a/core-java-collections/src/test/java/com/baeldung/collection/StreamOperateAndRemoveUnitTest.java
+++ b/java-streams/src/test/java/com/baeldung/stream/StreamOperateAndRemoveUnitTest.java
@@ -1,4 +1,4 @@
-package com.baeldung.collection;
+package com.baeldung.stream;
import java.util.ArrayList;
import java.util.List;
diff --git a/java-strings/README.md b/java-strings/README.md
index 233d986d98..249f1a351a 100644
--- a/java-strings/README.md
+++ b/java-strings/README.md
@@ -27,3 +27,6 @@
- [Compact Strings in Java 9](http://www.baeldung.com/java-9-compact-string)
- [Java Check a String for Lowercase/Uppercase Letter, Special Character and Digit](https://www.baeldung.com/java-lowercase-uppercase-special-character-digit-regex)
- [Convert java.util.Date to String](https://www.baeldung.com/java-util-date-to-string)
+- [Converting a Stack Trace to a String in Java](https://www.baeldung.com/java-stacktrace-to-string)
+- [Sorting a String Alphabetically in Java](https://www.baeldung.com/java-sort-string-alphabetically)
+- [Remove Emojis from a Java String](https://www.baeldung.com/java-string-remove-emojis)
diff --git a/java-strings/pom.xml b/java-strings/pom.xml
index 2afe18f07a..b1ba49b33a 100644
--- a/java-strings/pom.xml
+++ b/java-strings/pom.xml
@@ -47,11 +47,21 @@
jmh-core
${jmh-core.version}
+
+ org.openjdk.jmh
+ jmh-generator-annprocess
+ ${jmh-core.version}
+
com.ibm.icu
icu4j
${icu4j.version}
+
+ com.google.guava
+ guava
+ ${guava.version}
+
com.vdurmont
@@ -92,6 +102,7 @@
3.6.1
1.19
61.1
+ 26.0-jre
\ No newline at end of file
diff --git a/java-strings/src/main/java/com/baeldung/string/StringPerformance.java b/java-strings/src/main/java/com/baeldung/string/StringPerformance.java
new file mode 100644
index 0000000000..3b0c32991c
--- /dev/null
+++ b/java-strings/src/main/java/com/baeldung/string/StringPerformance.java
@@ -0,0 +1,196 @@
+package com.baeldung.string;
+
+import com.google.common.base.Splitter;
+import org.apache.commons.lang3.StringUtils;
+import org.openjdk.jmh.annotations.*;
+import org.openjdk.jmh.runner.Runner;
+import org.openjdk.jmh.runner.options.Options;
+import org.openjdk.jmh.runner.options.OptionsBuilder;
+
+import java.util.ArrayList;
+import java.util.List;
+import java.util.StringTokenizer;
+import java.util.concurrent.TimeUnit;
+import java.util.regex.Pattern;
+
+@BenchmarkMode(Mode.SingleShotTime)
+@OutputTimeUnit(TimeUnit.MILLISECONDS)
+@Measurement(batchSize = 100000, iterations = 10)
+@Warmup(batchSize = 100000, iterations = 10)
+@State(Scope.Thread)
+public class StringPerformance {
+
+ protected String baeldung = "baeldung";
+ protected String longString = "Hello baeldung, I am a bit longer than other Strings";
+ protected String formatString = "hello %s, nice to meet you";
+ protected String formatDigit = "%d";
+ protected String emptyString = " ";
+ protected String result = "";
+
+ protected int sampleNumber = 100;
+
+ protected Pattern spacePattern = Pattern.compile(emptyString);
+ protected Pattern longPattern = Pattern.compile(longString);
+ protected List stringSplit = new ArrayList<>();
+ protected List stringTokenizer = new ArrayList<>();
+
+ @Benchmark
+ public String benchmarkStringDynamicConcat() {
+ result += baeldung;
+ return result;
+ }
+
+ @Benchmark
+ public StringBuilder benchmarkStringBuilder() {
+ StringBuilder stringBuilder = new StringBuilder(result);
+ stringBuilder.append(baeldung);
+ return stringBuilder;
+ }
+
+ @Benchmark
+ public StringBuffer benchmarkStringBuffer() {
+ StringBuffer stringBuffer = new StringBuffer(result);
+ stringBuffer.append(baeldung);
+ return stringBuffer;
+ }
+
+ @Benchmark
+ public String benchmarkStringConstructor() {
+ String result = new String("baeldung");
+ return result;
+ }
+
+ @Benchmark
+ public String benchmarkStringLiteral() {
+ String result = "baeldung";
+ return result;
+ }
+
+ @Benchmark
+ public String benchmarkStringFormat_s() {
+ return String.format(formatString, baeldung);
+ }
+
+ @Benchmark
+ public String benchmarkStringConcat() {
+ result = result.concat(baeldung);
+ return result;
+ }
+
+ @Benchmark
+ public String benchmarkStringIntern() {
+ return baeldung.intern();
+ }
+
+ @Benchmark
+ public String benchmarkStringReplace() {
+ return longString.replace("average", " average !!!");
+ }
+
+ @Benchmark
+ public String benchmarkStringUtilsReplace() {
+ return StringUtils.replace(longString, "average", " average !!!");
+ }
+
+ @Benchmark
+ public List benchmarkGuavaSplitter() {
+ return Splitter.on(" ").trimResults()
+ .omitEmptyStrings()
+ .splitToList(longString);
+ }
+
+ @Benchmark
+ public String [] benchmarkStringSplit() {
+ return longString.split(emptyString);
+ }
+
+ @Benchmark
+ public String [] benchmarkStringSplitPattern() {
+ return spacePattern.split(longString, 0);
+ }
+
+ @Benchmark
+ public List benchmarkStringTokenizer() {
+ StringTokenizer st = new StringTokenizer(longString);
+ while (st.hasMoreTokens()) {
+ stringTokenizer.add(st.nextToken());
+ }
+ return stringTokenizer;
+ }
+
+ @Benchmark
+ public List benchmarkStringIndexOf() {
+ int pos = 0, end;
+ while ((end = longString.indexOf(' ', pos)) >= 0) {
+ stringSplit.add(longString.substring(pos, end));
+ pos = end + 1;
+ }
+ return stringSplit;
+ }
+
+ @Benchmark
+ public String benchmarkIntegerToString() {
+ return Integer.toString(sampleNumber);
+ }
+
+ @Benchmark
+ public String benchmarkStringValueOf() {
+ return String.valueOf(sampleNumber);
+ }
+
+
+ @Benchmark
+ public String benchmarkStringConvertPlus() {
+ return sampleNumber + "";
+ }
+
+ @Benchmark
+ public String benchmarkStringFormat_d() {
+ return String.format(formatDigit, sampleNumber);
+ }
+
+ @Benchmark
+ public boolean benchmarkStringEquals() {
+ return longString.equals(baeldung);
+ }
+
+
+ @Benchmark
+ public boolean benchmarkStringEqualsIgnoreCase() {
+ return longString.equalsIgnoreCase(baeldung);
+ }
+
+ @Benchmark
+ public boolean benchmarkStringMatches() {
+ return longString.matches(baeldung);
+ }
+
+ @Benchmark
+ public boolean benchmarkPrecompiledMatches() {
+ return longPattern.matcher(baeldung).matches();
+ }
+
+ @Benchmark
+ public int benchmarkStringCompareTo() {
+ return longString.compareTo(baeldung);
+ }
+
+ @Benchmark
+ public boolean benchmarkStringIsEmpty() {
+ return longString.isEmpty();
+ }
+
+ @Benchmark
+ public boolean benchmarkStringLengthZero() {
+ return longString.length() == 0;
+ }
+
+ public static void main(String[] args) throws Exception {
+ Options options = new OptionsBuilder()
+ .include(StringPerformance.class.getSimpleName()).threads(1)
+ .forks(1).shouldFailOnError(true)
+ .shouldDoGC(true)
+ .jvmArgs("-server").build();
+ new Runner(options).run();
+ }
+}
diff --git a/java-strings/src/test/java/com/baeldung/string/StringEmptyUnitTest.java b/java-strings/src/test/java/com/baeldung/string/StringEmptyUnitTest.java
new file mode 100644
index 0000000000..17b13f89de
--- /dev/null
+++ b/java-strings/src/test/java/com/baeldung/string/StringEmptyUnitTest.java
@@ -0,0 +1,51 @@
+package com.baeldung.string;
+
+import static org.hamcrest.CoreMatchers.not;
+import static org.hamcrest.text.IsEmptyString.isEmptyOrNullString;
+import static org.hamcrest.text.IsEmptyString.isEmptyString;
+import static org.junit.Assert.assertFalse;
+import static org.junit.Assert.assertNotEquals;
+import static org.junit.Assert.assertNotSame;
+import static org.junit.Assert.assertThat;
+import static org.junit.Assert.assertTrue;
+
+import org.apache.commons.lang3.StringUtils;
+import org.assertj.core.api.Assertions;
+import org.junit.Test;
+
+import com.google.common.base.Strings;
+
+public class StringEmptyUnitTest {
+
+ private String text = "baeldung";
+
+ @Test
+ public void givenAString_whenCheckedForEmptyUsingJunit_shouldAssertSuccessfully() {
+ assertTrue(!text.isEmpty());
+ assertFalse(text.isEmpty());
+ assertNotEquals("", text);
+ assertNotSame("", text);
+ }
+
+ @Test
+ public void givenAString_whenCheckedForEmptyUsingHamcrest_shouldAssertSuccessfully() {
+ assertThat(text, not(isEmptyString()));
+ assertThat(text, not(isEmptyOrNullString()));
+ }
+
+ @Test
+ public void givenAString_whenCheckedForEmptyUsingCommonsLang_shouldAssertSuccessfully() {
+ assertTrue(StringUtils.isNotBlank(text));
+ }
+
+ @Test
+ public void givenAString_whenCheckedForEmptyUsingAssertJ_shouldAssertSuccessfully() {
+ Assertions.assertThat(text).isNotEmpty();
+ }
+
+ @Test
+ public void givenAString_whenCheckedForEmptyUsingGuava_shouldAssertSuccessfully() {
+ assertFalse(Strings.isNullOrEmpty(text));
+ }
+
+}
diff --git a/javaxval/pom.xml b/javaxval/pom.xml
index 7af766261b..63cb4c1d1d 100644
--- a/javaxval/pom.xml
+++ b/javaxval/pom.xml
@@ -1,55 +1,73 @@
-
- 4.0.0
- com.baeldung
- javaxval
- 0.1-SNAPSHOT
-
-
- com.baeldung
- parent-modules
- 1.0.0-SNAPSHOT
-
-
-
-
- org.hibernate
- hibernate-validator
- ${hibernate-validator.version}
-
-
- org.hibernate
- hibernate-validator-annotation-processor
- ${hibernate-validator.version}
-
-
- javax.el
- javax.el-api
- ${javax.el-api.version}
-
-
- org.glassfish.web
- javax.el
- ${javax.el.version}
-
-
- org.springframework
- spring-context
- ${org.springframework.version}
-
-
- org.springframework
- spring-test
- ${org.springframework.version}
-
-
-
-
- 2.0.1.Final
- 6.0.7.Final
- 3.0.0
- 2.2.6
- 5.0.2.RELEASE
-
-
+
+ 4.0.0
+ com.baeldung
+ javaxval
+ 0.1-SNAPSHOT
+
+
+ com.baeldung
+ parent-modules
+ 1.0.0-SNAPSHOT
+
+
+
+
+ javax.validation
+ validation-api
+ ${validation-api.version}
+
+
+ org.hibernate
+ hibernate-validator
+ ${hibernate-validator.version}
+
+
+ org.hibernate
+ hibernate-validator-annotation-processor
+ ${hibernate-validator.version}
+
+
+ javax.el
+ javax.el-api
+ ${javax.el-api.version}
+
+
+ org.glassfish.web
+ javax.el
+ ${javax.el.version}
+
+
+ org.springframework
+ spring-context
+ ${org.springframework.version}
+
+
+ org.springframework
+ spring-test
+ ${org.springframework.version}
+
+
+ junit
+ junit
+ ${junit.version}
+ test
+
+
+ org.assertj
+ assertj-core
+ ${assertj.version}
+ test
+
+
+
+
+ 2.0.1.Final
+ 6.0.7.Final
+ 3.0.0
+ 2.2.6
+ 5.0.2.RELEASE
+ 4.12
+ 3.11.1
+
\ No newline at end of file
diff --git a/javaxval/src/main/java/org/baeldung/javabeanconstraints/appplication/Application.java b/javaxval/src/main/java/org/baeldung/javabeanconstraints/appplication/Application.java
new file mode 100644
index 0000000000..c9f2ab6f98
--- /dev/null
+++ b/javaxval/src/main/java/org/baeldung/javabeanconstraints/appplication/Application.java
@@ -0,0 +1,14 @@
+package org.baeldung.javabeanconstraints.appplication;
+
+import javax.validation.Validation;
+import javax.validation.Validator;
+import org.baeldung.javabeanconstraints.entities.UserNotBlank;
+
+public class Application {
+
+ public static void main(String[] args) throws Exception {
+ Validator validator = Validation.buildDefaultValidatorFactory().getValidator();
+ UserNotBlank user = new UserNotBlank(" ");
+ validator.validate(user).stream().forEach(violation -> System.out.println(violation.getMessage()));
+ }
+}
diff --git a/javaxval/src/main/java/org/baeldung/javabeanconstraints/entities/UserNotBlank.java b/javaxval/src/main/java/org/baeldung/javabeanconstraints/entities/UserNotBlank.java
new file mode 100644
index 0000000000..2ea6a3af56
--- /dev/null
+++ b/javaxval/src/main/java/org/baeldung/javabeanconstraints/entities/UserNotBlank.java
@@ -0,0 +1,22 @@
+package org.baeldung.javabeanconstraints.entities;
+
+import javax.validation.constraints.NotBlank;
+
+public class UserNotBlank {
+
+ @NotBlank(message = "Name is mandatory")
+ private final String name;
+
+ public UserNotBlank(String name) {
+ this.name = name;
+ }
+
+ public String getName() {
+ return name;
+ }
+
+ @Override
+ public String toString() {
+ return "User{" + "name=" + name + "}";
+ }
+}
diff --git a/javaxval/src/main/java/org/baeldung/javabeanconstraints/entities/UserNotEmpty.java b/javaxval/src/main/java/org/baeldung/javabeanconstraints/entities/UserNotEmpty.java
new file mode 100644
index 0000000000..39e34b63d3
--- /dev/null
+++ b/javaxval/src/main/java/org/baeldung/javabeanconstraints/entities/UserNotEmpty.java
@@ -0,0 +1,22 @@
+package org.baeldung.javabeanconstraints.entities;
+
+import javax.validation.constraints.NotEmpty;
+
+public class UserNotEmpty {
+
+ @NotEmpty(message = "Name is mandatory")
+ private final String name;
+
+ public UserNotEmpty(String name) {
+ this.name = name;
+ }
+
+ public String getName() {
+ return name;
+ }
+
+ @Override
+ public String toString() {
+ return "User{" + "name=" + name + "}";
+ }
+}
diff --git a/javaxval/src/main/java/org/baeldung/javabeanconstraints/entities/UserNotNull.java b/javaxval/src/main/java/org/baeldung/javabeanconstraints/entities/UserNotNull.java
new file mode 100644
index 0000000000..598c9ba9f9
--- /dev/null
+++ b/javaxval/src/main/java/org/baeldung/javabeanconstraints/entities/UserNotNull.java
@@ -0,0 +1,22 @@
+package org.baeldung.javabeanconstraints.entities;
+
+import javax.validation.constraints.NotNull;
+
+public class UserNotNull {
+
+ @NotNull(message = "Name is mandatory")
+ private final String name;
+
+ public UserNotNull(String name) {
+ this.name = name;
+ }
+
+ public String getName() {
+ return name;
+ }
+
+ @Override
+ public String toString() {
+ return "User{" + "name=" + name + "}";
+ }
+}
diff --git a/javaxval/src/test/java/org/baeldung/javabeanconstraints/test/UserNotBlankUnitTest.java b/javaxval/src/test/java/org/baeldung/javabeanconstraints/test/UserNotBlankUnitTest.java
new file mode 100644
index 0000000000..954833fef1
--- /dev/null
+++ b/javaxval/src/test/java/org/baeldung/javabeanconstraints/test/UserNotBlankUnitTest.java
@@ -0,0 +1,63 @@
+package org.baeldung.javabeanconstraints.test;
+
+import java.util.Set;
+import javax.validation.ConstraintViolation;
+import javax.validation.Validation;
+import javax.validation.Validator;
+import static org.assertj.core.api.Assertions.assertThat;
+import org.baeldung.javabeanconstraints.entities.UserNotBlank;
+import org.junit.BeforeClass;
+import org.junit.Test;
+
+public class UserNotBlankUnitTest {
+
+ private static Validator validator;
+
+ @BeforeClass
+ public static void setupValidatorInstance() {
+ validator = Validation.buildDefaultValidatorFactory().getValidator();
+ }
+
+ @Test
+ public void whenNotBlankName_thenNoConstraintViolations() {
+ UserNotBlank user = new UserNotBlank("John");
+
+ Set> violations = validator.validate(user);
+
+ assertThat(violations.size()).isEqualTo(0);
+ }
+
+ @Test
+ public void whenBlankName_thenOneConstraintViolation() {
+ UserNotBlank user = new UserNotBlank(" ");
+
+ Set> violations = validator.validate(user);
+
+ assertThat(violations.size()).isEqualTo(1);
+ }
+
+ @Test
+ public void whenEmptyName_thenOneConstraintViolation() {
+ UserNotBlank user = new UserNotBlank("");
+
+ Set> violations = validator.validate(user);
+
+ assertThat(violations.size()).isEqualTo(1);
+ }
+
+ @Test
+ public void whenNullName_thenOneConstraintViolation() {
+ UserNotBlank user = new UserNotBlank(null);
+
+ Set> violations = validator.validate(user);
+
+ assertThat(violations.size()).isEqualTo(1);
+ }
+
+ @Test
+ public void whenToString_thenCorrect() {
+ UserNotBlank user = new UserNotBlank("John");
+
+ assertThat(user.toString()).isEqualTo("User{name=John}");
+ }
+}
diff --git a/javaxval/src/test/java/org/baeldung/javabeanconstraints/test/UserNotEmptyUnitTest.java b/javaxval/src/test/java/org/baeldung/javabeanconstraints/test/UserNotEmptyUnitTest.java
new file mode 100644
index 0000000000..c2675ed8b6
--- /dev/null
+++ b/javaxval/src/test/java/org/baeldung/javabeanconstraints/test/UserNotEmptyUnitTest.java
@@ -0,0 +1,54 @@
+package org.baeldung.javabeanconstraints.test;
+
+import java.util.Set;
+import javax.validation.ConstraintViolation;
+import javax.validation.Validation;
+import javax.validation.Validator;
+import static org.assertj.core.api.Assertions.assertThat;
+import org.baeldung.javabeanconstraints.entities.UserNotEmpty;
+import org.junit.BeforeClass;
+import org.junit.Test;
+
+public class UserNotEmptyUnitTest {
+
+ private static Validator validator;
+
+ @BeforeClass
+ public static void setupValidatorInstance() {
+ validator = Validation.buildDefaultValidatorFactory().getValidator();
+ }
+
+ @Test
+ public void whenNotEmptyName_thenNoConstraintViolations() {
+ UserNotEmpty user = new UserNotEmpty("John");
+
+ Set> violations = validator.validate(user);
+
+ assertThat(violations.size()).isEqualTo(0);
+ }
+
+ @Test
+ public void whenEmptyName_thenOneConstraintViolation() {
+ UserNotEmpty user = new UserNotEmpty("");
+
+ Set> violations = validator.validate(user);
+
+ assertThat(violations.size()).isEqualTo(1);
+ }
+
+ @Test
+ public void whenNullName_thenOneConstraintViolation() {
+ UserNotEmpty user = new UserNotEmpty(null);
+
+ Set> violations = validator.validate(user);
+
+ assertThat(violations.size()).isEqualTo(1);
+ }
+
+ @Test
+ public void whenToString_thenCorrect() {
+ UserNotEmpty user = new UserNotEmpty("John");
+
+ assertThat(user.toString()).isEqualTo("User{name=John}");
+ }
+}
diff --git a/javaxval/src/test/java/org/baeldung/javabeanconstraints/test/UserNotNullUnitTest.java b/javaxval/src/test/java/org/baeldung/javabeanconstraints/test/UserNotNullUnitTest.java
new file mode 100644
index 0000000000..3dd1811947
--- /dev/null
+++ b/javaxval/src/test/java/org/baeldung/javabeanconstraints/test/UserNotNullUnitTest.java
@@ -0,0 +1,54 @@
+package org.baeldung.javabeanconstraints.test;
+
+import java.util.Set;
+import javax.validation.ConstraintViolation;
+import javax.validation.Validation;
+import javax.validation.Validator;
+import static org.assertj.core.api.Assertions.assertThat;
+import org.baeldung.javabeanconstraints.entities.UserNotNull;
+import org.junit.BeforeClass;
+import org.junit.Test;
+
+public class UserNotNullUnitTest {
+
+ private static Validator validator;
+
+ @BeforeClass
+ public static void setupValidatorInstance() {
+ validator = Validation.buildDefaultValidatorFactory().getValidator();
+ }
+
+ @Test
+ public void whenNotNullName_thenNoConstraintViolations() {
+ UserNotNull user = new UserNotNull("John");
+
+ Set> violations = validator.validate(user);
+
+ assertThat(violations.size()).isEqualTo(0);
+ }
+
+ @Test
+ public void whenNullName_thenOneConstraintViolation() {
+ UserNotNull user = new UserNotNull(null);
+
+ Set> violations = validator.validate(user);
+
+ assertThat(violations.size()).isEqualTo(1);
+ }
+
+ @Test
+ public void whenEmptyName_thenNoConstraintViolations() {
+ UserNotNull user = new UserNotNull("");
+
+ Set> violations = validator.validate(user);
+
+ assertThat(violations.size()).isEqualTo(0);
+ }
+
+ @Test
+ public void whenToString_thenCorrect() {
+ UserNotNull user = new UserNotNull("John");
+
+ assertThat(user.toString()).isEqualTo("User{name=John}");
+ }
+}
diff --git a/jee-7/README.md b/jee-7/README.md
index 08a180cfa3..f0bd65fdf2 100644
--- a/jee-7/README.md
+++ b/jee-7/README.md
@@ -6,3 +6,4 @@
- [A Guide to Java EE Web-Related Annotations](http://www.baeldung.com/javaee-web-annotations)
- [Introduction to Testing with Arquillian](http://www.baeldung.com/arquillian)
- [Securing Java EE with Spring Security](http://www.baeldung.com/java-ee-spring-security)
+- [A Guide to Java EE Web-Related Annotations](https://www.baeldung.com/javaee-web-annotations)
\ No newline at end of file
diff --git a/jee-7/pom.xml b/jee-7/pom.xml
index 08c8b5a068..4f6e6a20fb 100644
--- a/jee-7/pom.xml
+++ b/jee-7/pom.xml
@@ -2,7 +2,6 @@
4.0.0
- com.baeldung
jee-7
1.0-SNAPSHOT
war
@@ -131,7 +130,7 @@
maven-war-plugin
${maven-war-plugin.version}
- webapp
+ src/main/webapp
false
diff --git a/jee-7/src/main/java/com/baeldung/javaeeannotations/JavaEEAnnotationsSample/src/main/java/com/baeldung/javaeeannotations/AccountServlet.java b/jee-7/src/main/java/com/baeldung/javaeeannotations/AccountServlet.java
similarity index 94%
rename from jee-7/src/main/java/com/baeldung/javaeeannotations/JavaEEAnnotationsSample/src/main/java/com/baeldung/javaeeannotations/AccountServlet.java
rename to jee-7/src/main/java/com/baeldung/javaeeannotations/AccountServlet.java
index a487d4c3b1..30dc82aa58 100644
--- a/jee-7/src/main/java/com/baeldung/javaeeannotations/JavaEEAnnotationsSample/src/main/java/com/baeldung/javaeeannotations/AccountServlet.java
+++ b/jee-7/src/main/java/com/baeldung/javaeeannotations/AccountServlet.java
@@ -1,4 +1,4 @@
-package com.baeldung.javaeeannotations.JavaEEAnnotationsSample.src.main.java.com.baeldung.javaeeannotations;
+package com.baeldung.javaeeannotations;
import java.io.IOException;
import java.io.PrintWriter;
diff --git a/jee-7/src/main/java/com/baeldung/javaeeannotations/JavaEEAnnotationsSample/src/main/java/com/baeldung/javaeeannotations/BankAppServletContextListener.java b/jee-7/src/main/java/com/baeldung/javaeeannotations/BankAppServletContextListener.java
similarity index 82%
rename from jee-7/src/main/java/com/baeldung/javaeeannotations/JavaEEAnnotationsSample/src/main/java/com/baeldung/javaeeannotations/BankAppServletContextListener.java
rename to jee-7/src/main/java/com/baeldung/javaeeannotations/BankAppServletContextListener.java
index dc9a91d059..ee1b624cd1 100644
--- a/jee-7/src/main/java/com/baeldung/javaeeannotations/JavaEEAnnotationsSample/src/main/java/com/baeldung/javaeeannotations/BankAppServletContextListener.java
+++ b/jee-7/src/main/java/com/baeldung/javaeeannotations/BankAppServletContextListener.java
@@ -1,4 +1,4 @@
-package com.baeldung.javaeeannotations.JavaEEAnnotationsSample.src.main.java.com.baeldung.javaeeannotations;
+package com.baeldung.javaeeannotations;
import javax.servlet.ServletContextEvent;
import javax.servlet.ServletContextListener;
diff --git a/jee-7/src/main/java/com/baeldung/javaeeannotations/JavaEEAnnotationsSample/README.txt b/jee-7/src/main/java/com/baeldung/javaeeannotations/JavaEEAnnotationsSample/README.txt
deleted file mode 100644
index 0f95e588b8..0000000000
--- a/jee-7/src/main/java/com/baeldung/javaeeannotations/JavaEEAnnotationsSample/README.txt
+++ /dev/null
@@ -1,76 +0,0 @@
-About the application
----------------------
-This application demonstrates the usage of JavaEE Web Annotations.
-
-
-Contents of the application
----------------------------
-1. AccountServlet.java - Demonstrates the @WebServlet and @ServletSecurity annotation.
-
-NOTES: @WebServlet annotation designates the AccountServlet class as a Servlet component.
- The usage of its parameters 'urlPatterns' & 'initParams' can be observed.
- An initialization parameter 'type' is being set to denote the type of the bank account.
-
- @ServletSecurity annotation imposes security constraints on the AccountServlet based on
- the tomcat-users.xml.
-
- This code assumes that your tomcat-users.xml looks as follows:
-
-
-
-
-
-
-
-
-N.B : To see @ServletSecurity annotation in action, please uncomment the annotation code
- for @ServletSecurity.
-
-
-2. BankAppServletContextListener.java - Demonstrates the @WebListener annotation for denoting a class as a ServletContextListener.
-
-NOTES: Sets a Servlet context attribute ATTR_DEFAULT_LANGUAGE to 'english' on web application start up,
- which can then be used throughout the application.
-
-
-3. LogInFilter.java - Demonstrates the @WebFilter annotation.
-
-NOTES: @WebFilter annotation designates the LogInFilter class as a Filter component.
- It filters all requests to the bank account servlet and redirects them to
- the login page.
-
-N.B : To see @WebFilter annotation in action, please uncomment the annotation code for @WebFilter.
-
-
-4. UploadCustomerDocumentsServlet.java - Demonstrates the @MultipartConfig annotation.
-
-NOTES: @MultipartConfig anotation designates the UploadCustomerDocumentsServlet Servlet component,
- to handle multipart/form-data requests.
- To see it in action, deploy the web application an access the url: http://:/JavaEEAnnotationsSample/upload.jsp
- Once you upload a file from here, it will get uploaded to D:/custDocs (assuming such a folder exists).
-
-
-5. index.jsp - This is the welcome page.
-
-NOTES: You can enter a deposit amount here and click on the 'Deposit' button to see the AccountServlet in action.
-
-6. login.jsp - All requests to the AccountServlet are redirected to this page, if the LogInFilter is imposed.
-
-7. upload.jsp - Demonstrates the usage of handling multipart/form-data requests by the UploadCustomerDocumentsServlet.
-
-
-Building and Running the application
-------------------------------------
-To build the application:
-
-1. Open the project in eclipse
-2. Right click on it in eclispe and choose Run As > Maven build
-3. Give 'clean install' under Goals
-4. This should build the WAR file of the application
-
-To run the application:
-
-1. Right click on the project
-2. Run as > Run on Server
-3. This will start you Tomcat server and deploy the application (Provided that you have configured Tomcat in your eclipse)
-4. You should now be able to access the url : http://:/JavaEEAnnotationsSample
diff --git a/jee-7/src/main/java/com/baeldung/javaeeannotations/JavaEEAnnotationsSample/pom.xml b/jee-7/src/main/java/com/baeldung/javaeeannotations/JavaEEAnnotationsSample/pom.xml
deleted file mode 100644
index 6a0dd05180..0000000000
--- a/jee-7/src/main/java/com/baeldung/javaeeannotations/JavaEEAnnotationsSample/pom.xml
+++ /dev/null
@@ -1,52 +0,0 @@
-
- 4.0.0
- com.baeldung.javaeeannotations
- JavaEEAnnotationsSample
- 0.0.1-SNAPSHOT
- war
- JavaEEAnnotationsSample
- JavaEEAnnotationsSample
-
- com.baeldung
- parent-modules
- 1.0.0-SNAPSHOT
-
-
-
-
- javax.annotation
- javax.annotation-api
- 1.3
-
-
-
- javax.servlet
- javax.servlet-api
- 3.1.0
-
-
-
- javax.servlet.jsp
- jsp-api
- 2.1
-
-
-
-
-
-
-
- org.apache.maven.plugins
- maven-war-plugin
- 2.4
-
- src/main/webapp
- SpringFieldConstructorInjection
- false
-
-
-
-
- JavaEEAnnotationsSample
-
-
\ No newline at end of file
diff --git a/jee-7/src/main/java/com/baeldung/javaeeannotations/JavaEEAnnotationsSample/src/main/webapp/WEB-INF/web.xml b/jee-7/src/main/java/com/baeldung/javaeeannotations/JavaEEAnnotationsSample/src/main/webapp/WEB-INF/web.xml
deleted file mode 100644
index a92885ec11..0000000000
--- a/jee-7/src/main/java/com/baeldung/javaeeannotations/JavaEEAnnotationsSample/src/main/webapp/WEB-INF/web.xml
+++ /dev/null
@@ -1,10 +0,0 @@
-
-
-
- BASIC
- default
-
-
diff --git a/jee-7/src/main/java/com/baeldung/javaeeannotations/JavaEEAnnotationsSample/src/main/webapp/login.jsp b/jee-7/src/main/java/com/baeldung/javaeeannotations/JavaEEAnnotationsSample/src/main/webapp/login.jsp
deleted file mode 100644
index 6892cb0420..0000000000
--- a/jee-7/src/main/java/com/baeldung/javaeeannotations/JavaEEAnnotationsSample/src/main/webapp/login.jsp
+++ /dev/null
@@ -1,12 +0,0 @@
-<%@ page language="java" contentType="text/html; charset=ISO-8859-1"
- pageEncoding="ISO-8859-1"%>
-
-
-
-
-Login
-
-
-Login Here...
-
-
\ No newline at end of file
diff --git a/jee-7/src/main/java/com/baeldung/javaeeannotations/JavaEEAnnotationsSample/src/main/java/com/baeldung/javaeeannotations/LogInFilter.java b/jee-7/src/main/java/com/baeldung/javaeeannotations/LogInFilter.java
similarity index 90%
rename from jee-7/src/main/java/com/baeldung/javaeeannotations/JavaEEAnnotationsSample/src/main/java/com/baeldung/javaeeannotations/LogInFilter.java
rename to jee-7/src/main/java/com/baeldung/javaeeannotations/LogInFilter.java
index bfe1a39377..5ee420f6a2 100644
--- a/jee-7/src/main/java/com/baeldung/javaeeannotations/JavaEEAnnotationsSample/src/main/java/com/baeldung/javaeeannotations/LogInFilter.java
+++ b/jee-7/src/main/java/com/baeldung/javaeeannotations/LogInFilter.java
@@ -1,4 +1,4 @@
-package com.baeldung.javaeeannotations.JavaEEAnnotationsSample.src.main.java.com.baeldung.javaeeannotations;
+package com.baeldung.javaeeannotations;
import java.io.IOException;
diff --git a/jee-7/src/main/java/com/baeldung/javaeeannotations/JavaEEAnnotationsSample/src/main/java/com/baeldung/javaeeannotations/UploadCustomerDocumentsServlet.java b/jee-7/src/main/java/com/baeldung/javaeeannotations/UploadCustomerDocumentsServlet.java
similarity index 90%
rename from jee-7/src/main/java/com/baeldung/javaeeannotations/JavaEEAnnotationsSample/src/main/java/com/baeldung/javaeeannotations/UploadCustomerDocumentsServlet.java
rename to jee-7/src/main/java/com/baeldung/javaeeannotations/UploadCustomerDocumentsServlet.java
index 6945f663bb..28922dba46 100644
--- a/jee-7/src/main/java/com/baeldung/javaeeannotations/JavaEEAnnotationsSample/src/main/java/com/baeldung/javaeeannotations/UploadCustomerDocumentsServlet.java
+++ b/jee-7/src/main/java/com/baeldung/javaeeannotations/UploadCustomerDocumentsServlet.java
@@ -1,4 +1,4 @@
-package com.baeldung.javaeeannotations.JavaEEAnnotationsSample.src.main.java.com.baeldung.javaeeannotations;
+package com.baeldung.javaeeannotations;
import java.io.IOException;
import java.io.PrintWriter;
diff --git a/jee-7/src/main/java/com/baeldung/javaeeannotations/JavaEEAnnotationsSample/src/main/webapp/index.jsp b/jee-7/src/main/webapp/account.jsp
similarity index 100%
rename from jee-7/src/main/java/com/baeldung/javaeeannotations/JavaEEAnnotationsSample/src/main/webapp/index.jsp
rename to jee-7/src/main/webapp/account.jsp
diff --git a/jee-7/src/main/java/com/baeldung/javaeeannotations/JavaEEAnnotationsSample/src/main/webapp/upload.jsp b/jee-7/src/main/webapp/upload.jsp
similarity index 100%
rename from jee-7/src/main/java/com/baeldung/javaeeannotations/JavaEEAnnotationsSample/src/main/webapp/upload.jsp
rename to jee-7/src/main/webapp/upload.jsp
diff --git a/jenkins/hello-world/pom.xml b/jenkins/hello-world/pom.xml
index 5684deaea3..fb2154c7ad 100644
--- a/jenkins/hello-world/pom.xml
+++ b/jenkins/hello-world/pom.xml
@@ -7,13 +7,6 @@
hpi
Hello World Plugin
A sample Jenkins Hello World plugin
- https://wiki.jenkins-ci.org/display/JENKINS/TODO+Plugin
-
-
- MIT License
- http://opensource.org/licenses/MIT
-
-
org.jenkins-ci.plugins
diff --git a/jersey/README.md b/jersey/README.md
index 89e93107f7..c548a79c6d 100644
--- a/jersey/README.md
+++ b/jersey/README.md
@@ -1,3 +1,4 @@
- [Jersey Filters and Interceptors](http://www.baeldung.com/jersey-filters-interceptors)
- [Jersey MVC Support](https://www.baeldung.com/jersey-mvc)
- [Bean Validation in Jersey](https://www.baeldung.com/jersey-bean-validation)
+- [Set a Response Body in JAX-RS](https://www.baeldung.com/jax-rs-response)
diff --git a/jhipster/jhipster-microservice/car-app/pom.xml b/jhipster/jhipster-microservice/car-app/pom.xml
index c52def554f..b05979b9c5 100644
--- a/jhipster/jhipster-microservice/car-app/pom.xml
+++ b/jhipster/jhipster-microservice/car-app/pom.xml
@@ -1,17 +1,15 @@
-
+
4.0.0
- parent-boot-1
- com.baeldung
- 0.0.1-SNAPSHOT
- ../../../parent-boot-1
+ jhipster-microservice
+ com.baeldung.jhipster
+ 1.0.0-SNAPSHOT
+
com.car.app
car-app
- 0.0.1-SNAPSHOT
war
car-app
@@ -37,9 +35,11 @@
0.7.0
3.6
2.0.0
+ 3.6.2
4.8
jdt_apt
1.1.0.Final
+ 2.10
1.4.1
3.0.1
yyyyMMddHHmmss
@@ -186,12 +186,10 @@
commons-io
commons-io
- ${commons-io.version}
io.dropwizard.metrics
metrics-annotation
- ${dropwizard-metrics.version}
io.dropwizard.metrics
@@ -200,17 +198,14 @@
io.dropwizard.metrics
metrics-json
- ${dropwizard-metrics.version}
io.dropwizard.metrics
metrics-jvm
- ${dropwizard-metrics.version}
io.dropwizard.metrics
metrics-servlet
- ${dropwizard-metrics.version}
io.dropwizard.metrics
@@ -505,8 +500,6 @@
maven-compiler-plugin
${maven-compiler-plugin.version}
-
- ${maven.compiler.target}
org.mapstruct
@@ -519,6 +512,7 @@
org.apache.maven.plugins
maven-eclipse-plugin
+ ${maven-eclipse-plugin.version}
true
true
diff --git a/jhipster/jhipster-microservice/dealer-app/pom.xml b/jhipster/jhipster-microservice/dealer-app/pom.xml
index a9366e9bd3..803a0f62e6 100644
--- a/jhipster/jhipster-microservice/dealer-app/pom.xml
+++ b/jhipster/jhipster-microservice/dealer-app/pom.xml
@@ -1,54 +1,113 @@
-
+
4.0.0
+
+
+ jhipster-microservice
+ com.baeldung.jhipster
+ 1.0.0-SNAPSHOT
+
+
com.dealer.app
dealer-app
- 0.0.1-SNAPSHOT
war
dealer-app
-
- parent-boot-1
- com.baeldung
- 0.0.1-SNAPSHOT
- ../../../parent-boot-1
-
+
+ ${maven.version}
+
+
+
+ -Djava.security.egd=file:/dev/./urandom -Xmx256m
+ 3.6.2
+ 2.0.0
+ 2.5
+ 3.5
+ 0.4.13
+ 1.2
+ 5.2.8.Final
+ 2.6.0
+ 0.7.9
+ 3.21.0-GA
+ 1.0.0
+ 1.1.0
+ 0.7.0
+ 3.6
+ 2.0.0
+ 3.6.2
+ 4.8
+ jdt_apt
+ 1.1.0.Final
+ 2.10
+ 1.4.1
+ 3.0.1
+ yyyyMMddHHmmss
+ 3.0.0
+ 3.1.3
+ v6.10.0
+
+
+
+
+ ${project.build.directory}/test-results
+ 0.0.20
+ false
+ 3.2.2
+ 2.12.1
+ 3.2
+
+ src/main/webapp/content/**/*.*, src/main/webapp/bower_components/**/*.*, src/main/webapp/i18n/*.js, target/www/**/*.*
+
+ S3437,UndocumentedApi,BoldAndItalicTagsCheck
+
+
+ src/main/webapp/app/**/*.*
+ Web:BoldAndItalicTagsCheck
+
+ src/main/java/**/*
+ squid:S3437
+
+ src/main/java/**/*
+ squid:UndocumentedApi
+
+ ${project.testresult.directory}/coverage/jacoco/jacoco-it.exec
+ ${project.testresult.directory}/coverage/jacoco/jacoco.exec
+ jacoco
+
+ ${project.testresult.directory}/karma
+
+ ${project.testresult.directory}/coverage/report-lcov/lcov.info
+
+ ${project.testresult.directory}/coverage/report-lcov/lcov.info
+
+ ${project.basedir}/src/main/
+ ${project.testresult.directory}/surefire-reports
+ ${project.basedir}/src/test/
+
+ 2.5.0
+
+ Camden.SR5
+ 2.6.1
+ 1.4.10.Final
+ 1.1.0.Final
+ v0.21.3
+
+
+
+
+
+ org.springframework.cloud
+ spring-cloud-dependencies
+ ${spring-cloud.version}
+ pom
+ import
+
+
+
-
- io.github.jhipster
- jhipster
- ${jhipster.server.version}
-
-
- io.dropwizard.metrics
- metrics-core
-
-
- io.dropwizard.metrics
- metrics-annotation
- ${dropwizard-metrics.version}
-
-
- io.dropwizard.metrics
- metrics-json
- ${dropwizard-metrics.version}
-
-
- io.dropwizard.metrics
- metrics-jvm
- ${dropwizard-metrics.version}
-
-
- io.dropwizard.metrics
- metrics-servlet
- ${dropwizard-metrics.version}
-
-
- io.dropwizard.metrics
- metrics-servlets
-
com.fasterxml.jackson.datatype
jackson-datatype-hibernate5
@@ -59,11 +118,11 @@
com.fasterxml.jackson.datatype
- jackson-datatype-jsr310
+ jackson-datatype-json-org
com.fasterxml.jackson.datatype
- jackson-datatype-json-org
+ jackson-datatype-jsr310
com.h2database
@@ -82,34 +141,12 @@
com.hazelcast
hazelcast-spring
-
- org.awaitility
- awaitility
- ${awaitility.version}
- test
-
com.jayway.jsonpath
json-path
test
-
- io.springfox
- springfox-swagger2
- ${springfox.version}
-
-
- org.mapstruct
- mapstruct
-
-
-
-
- io.springfox
- springfox-bean-validators
- ${springfox.version}
-
com.mattbertolini
liquibase-slf4j
@@ -121,16 +158,16 @@
${metrics-spring.version}
- com.codahale.metrics
metrics-annotation
+ com.codahale.metrics
- com.codahale.metrics
metrics-core
+ com.codahale.metrics
- com.codahale.metrics
metrics-healthchecks
+ com.codahale.metrics
@@ -148,12 +185,56 @@
commons-io
commons-io
- ${commons-io.version}
- org.apache.commons
- commons-lang3
- ${commons-lang.version}
+ io.dropwizard.metrics
+ metrics-annotation
+
+
+ io.dropwizard.metrics
+ metrics-core
+
+
+ io.dropwizard.metrics
+ metrics-json
+
+
+ io.dropwizard.metrics
+ metrics-jvm
+
+
+ io.dropwizard.metrics
+ metrics-servlet
+
+
+ io.dropwizard.metrics
+ metrics-servlets
+
+
+ io.github.jhipster
+ jhipster
+ ${jhipster.server.version}
+
+
+ io.jsonwebtoken
+ jjwt
+ ${jjwt.version}
+
+
+ io.springfox
+ springfox-bean-validators
+ ${springfox.version}
+
+
+ io.springfox
+ springfox-swagger2
+ ${springfox.version}
+
+
+ mapstruct
+ org.mapstruct
+
+
javax.cache
@@ -163,11 +244,41 @@
mysql
mysql-connector-java
+
+ net.logstash.logback
+ logstash-logback-encoder
+ ${logstash-logback-encoder.version}
+
+
+ logback-core
+ ch.qos.logback
+
+
+ logback-classic
+ ch.qos.logback
+
+
+ logback-access
+ ch.qos.logback
+
+
+
+
+ org.apache.commons
+ commons-lang3
+ ${commons-lang.version}
+
org.assertj
assertj-core
test
+
+ org.awaitility
+ awaitility
+ ${awaitility.version}
+ test
+
org.hibernate
hibernate-envers
@@ -216,6 +327,10 @@
org.springframework.boot
spring-boot-starter-aop
+
+ org.springframework.boot
+ spring-boot-starter-cloud-connectors
+
org.springframework.boot
spring-boot-starter-data-jpa
@@ -232,16 +347,6 @@
org.springframework.boot
spring-boot-starter-security
-
- org.springframework.security
- spring-security-test
- test
-
-
- org.springframework.boot
- spring-boot-test
- test
-
org.springframework.boot
spring-boot-starter-thymeleaf
@@ -251,15 +356,15 @@
spring-boot-starter-web
- org.springframework.boot
spring-boot-starter-tomcat
+ org.springframework.boot
- io.jsonwebtoken
- jjwt
- ${jjwt.version}
+ org.springframework.boot
+ spring-boot-test
+ test
@@ -268,19 +373,31 @@
org.springframework.cloud
- spring-cloud-starter-ribbon
-
-
-
- io.netty
- netty-transport-native-epoll
-
-
+ spring-cloud-starter-config
+
+
+ org.springframework.cloud
+ spring-cloud-starter-eureka
+
+
+ org.springframework.cloud
+ spring-cloud-starter-feign
org.springframework.cloud
spring-cloud-starter-hystrix
+
+ org.springframework.cloud
+ spring-cloud-starter-ribbon
+
+
+
+ netty-transport-native-epoll
+ io.netty
+
+
+
org.springframework.cloud
spring-cloud-starter-spectator
@@ -289,51 +406,51 @@
org.springframework.retry
spring-retry
-
- org.springframework.cloud
- spring-cloud-starter-eureka
-
-
- org.springframework.cloud
- spring-cloud-starter-config
-
-
- org.springframework.cloud
- spring-cloud-starter-feign
-
-
- net.logstash.logback
- logstash-logback-encoder
- ${logstash-logback-encoder.version}
-
-
- ch.qos.logback
- logback-core
-
-
- ch.qos.logback
- logback-classic
-
-
- ch.qos.logback
- logback-access
-
-
-
-
- org.springframework.boot
- spring-boot-starter-cloud-connectors
-
org.springframework.security
spring-security-data
+
+ org.springframework.security
+ spring-security-test
+ test
+
spring-boot:run
+
+
+
+
+ org.eclipse.m2e
+ lifecycle-mapping
+ 1.0.0
+
+
+
+
+
+ org.jacoco
+ jacoco-maven-plugin
+ ${jacoco-maven-plugin.version}
+
+ prepare-agent
+
+
+
+
+
+
+
+
+
+
+
+
com.github.ekryd.sortpom
@@ -356,6 +473,22 @@
false
+
+ com.spotify
+ docker-maven-plugin
+ ${docker-maven-plugin.version}
+
+ dealerapp
+ src/main/docker
+
+
+ /
+ ${project.build.directory}
+ ${project.build.finalName}.war
+
+
+
+
org.apache.maven.plugins
maven-compiler-plugin
@@ -373,6 +506,7 @@
org.apache.maven.plugins
maven-eclipse-plugin
+ ${maven-eclipse-plugin.version}
true
true
@@ -479,28 +613,16 @@
-
- org.sonarsource.scanner.maven
- sonar-maven-plugin
- ${sonar-maven-plugin.version}
-
org.liquibase
liquibase-maven-plugin
${liquibase.version}
-
- src/main/resources/config/liquibase/master.xml
- src/main/resources/config/liquibase/changelog/${maven.build.timestamp}_changelog.xml
- org.h2.Driver
- jdbc:h2:file:./target/h2db/db/dealerapp
-
- dealerapp
-
- hibernate:spring:com.dealer.app.domain?dialect=org.hibernate.dialect.H2Dialect&hibernate.physical_naming_strategy=org.springframework.boot.orm.jpa.hibernate.SpringPhysicalNamingStrategy&hibernate.implicit_naming_strategy=org.springframework.boot.orm.jpa.hibernate.SpringImplicitNamingStrategy
- true
- debug
-
+
+ javax.validation
+ validation-api
+ ${validation-api.version}
+
org.javassist
javassist
@@ -516,12 +638,24 @@
spring-boot-starter-data-jpa
${project.parent.version}
-
- javax.validation
- validation-api
- ${validation-api.version}
-
+
+ src/main/resources/config/liquibase/master.xml
+ src/main/resources/config/liquibase/changelog/${maven.build.timestamp}_changelog.xml
+ org.h2.Driver
+ jdbc:h2:file:./target/h2db/db/dealerapp
+
+ dealerapp
+
+ hibernate:spring:com.dealer.app.domain?dialect=org.hibernate.dialect.H2Dialect&hibernate.physical_naming_strategy=org.springframework.boot.orm.jpa.hibernate.SpringPhysicalNamingStrategy&hibernate.implicit_naming_strategy=org.springframework.boot.orm.jpa.hibernate.SpringImplicitNamingStrategy
+ true
+ debug
+
+
+
+ org.sonarsource.scanner.maven
+ sonar-maven-plugin
+ ${sonar-maven-plugin.version}
org.springframework.boot
@@ -532,58 +666,8 @@
-
- com.spotify
- docker-maven-plugin
- ${docker-maven-plugin.version}
-
- dealerapp
- src/main/docker
-
-
- /
- ${project.build.directory}
- ${project.build.finalName}.war
-
-
-
-
-
-
-
-
- org.eclipse.m2e
- lifecycle-mapping
- 1.0.0
-
-
-
-
-
- org.jacoco
-
- jacoco-maven-plugin
-
-
- ${jacoco-maven-plugin.version}
-
-
- prepare-agent
-
-
-
-
-
-
-
-
-
-
-
-
@@ -604,24 +688,12 @@
true
-
-
- org.springframework.boot
- spring-boot-starter-undertow
-
-
- org.springframework.boot
- spring-boot-devtools
- true
-
-
org.apache.maven.plugins
maven-war-plugin
-
-
+
@@ -631,15 +703,20 @@
dev${profile.no-liquibase}
-
-
- prod
+
+ org.springframework.boot
+ spring-boot-devtools
+ true
+
org.springframework.boot
spring-boot-starter-undertow
+
+
+ prod
@@ -655,15 +732,11 @@
org.apache.maven.plugins
maven-war-plugin
-
-
+
org.springframework.boot
spring-boot-maven-plugin
-
- true
-
@@ -671,6 +744,9 @@
+
+ true
+
@@ -680,56 +756,20 @@
prod${profile.swagger}${profile.no-liquibase}
+
+
+ org.springframework.boot
+ spring-boot-starter-undertow
+
+
cc
-
-
- org.springframework.boot
- spring-boot-starter-undertow
-
-
- org.springframework.boot
- spring-boot-devtools
- true
-
-
-
- org.apache.maven.plugins
- maven-war-plugin
-
- src/main/webapp/
-
-
-
- org.springframework.boot
- spring-boot-maven-plugin
-
- true
- true
- true
-
-
-
-
- org.apache.maven.plugins
- maven-compiler-plugin
-
-
- default-compile
- none
-
-
- default-testCompile
- none
-
-
-
net.alchim31.maven
scala-maven-plugin
@@ -758,6 +798,37 @@
${scala.version}
+
+ org.apache.maven.plugins
+ maven-compiler-plugin
+
+
+ default-compile
+ none
+
+
+ default-testCompile
+ none
+
+
+
+
+ org.apache.maven.plugins
+ maven-war-plugin
+
+ src/main/webapp/
+
+
+
+ org.springframework.boot
+ spring-boot-maven-plugin
+
+ true
+ true
+ true
+
+
+
@@ -766,6 +837,17 @@
dev,swagger
+
+
+ org.springframework.boot
+ spring-boot-devtools
+ true
+
+
+ org.springframework.boot
+ spring-boot-starter-undertow
+
+
@@ -788,12 +870,12 @@
io.prometheus
- simpleclient_servlet
+ simpleclient_dropwizard
${prometheus-simpleclient.version}
io.prometheus
- simpleclient_dropwizard
+ simpleclient_servlet
${prometheus-simpleclient.version}
@@ -811,96 +893,4 @@
-
-
-
- org.springframework.cloud
- spring-cloud-dependencies
- ${spring-cloud.version}
- pom
- import
-
-
-
-
-
- ${maven.version}
-
-
-
- -Djava.security.egd=file:/dev/./urandom -Xmx256m
- 3.6.2
- 2.0.0
- 2.5
- 3.5
- 0.4.13
- 1.2
- 5.2.8.Final
- 2.6.0
- 0.7.9
- 3.21.0-GA
- 1.0.0
- 1.1.0
- 0.7.0
- 3.6
- 2.0.0
- 4.8
- jdt_apt
- 1.1.0.Final
- 1.4.1
- 3.0.1
- yyyyMMddHHmmss
- 3.0.0
- 3.1.3
- v6.10.0
-
-
-
- 0.0.20
-
- ${project.build.directory}/test-results
- false
- 3.2.2
- 2.12.1
- 3.2
-
- src/main/webapp/content/**/*.*, src/main/webapp/bower_components/**/*.*, src/main/webapp/i18n/*.js, target/www/**/*.*
-
- S3437,UndocumentedApi,BoldAndItalicTagsCheck
-
-
- src/main/webapp/app/**/*.*
- Web:BoldAndItalicTagsCheck
-
- src/main/java/**/*
- squid:S3437
-
- src/main/java/**/*
- squid:UndocumentedApi
-
- ${project.testresult.directory}/coverage/jacoco/jacoco-it.exec
- ${project.testresult.directory}/coverage/jacoco/jacoco.exec
- jacoco
-
- ${project.testresult.directory}/karma
-
- ${project.testresult.directory}/coverage/report-lcov/lcov.info
-
- ${project.testresult.directory}/coverage/report-lcov/lcov.info
-
- ${project.basedir}/src/main/
- ${project.testresult.directory}/surefire-reports
- ${project.basedir}/src/test/
-
- 2.5.0
-
- Camden.SR5
- 2.6.1
- 1.4.10.Final
- 1.1.0.Final
- v0.21.3
-
-
diff --git a/jhipster/jhipster-microservice/gateway-app/pom.xml b/jhipster/jhipster-microservice/gateway-app/pom.xml
index 0ae74e11bb..ed0c929027 100644
--- a/jhipster/jhipster-microservice/gateway-app/pom.xml
+++ b/jhipster/jhipster-microservice/gateway-app/pom.xml
@@ -1,53 +1,136 @@
-
+
4.0.0
+
+
+ jhipster-microservice
+ com.baeldung.jhipster
+ 1.0.0-SNAPSHOT
+
+
com.gateway
gateway-app
- 0.0.1-SNAPSHOT
war
gateway-app
-
- parent-boot-1
- com.baeldung
- 0.0.1-SNAPSHOT
- ../../../parent-boot-1
-
+
+ ${maven.version}
+
+
+
+ -Djava.security.egd=file:/dev/./urandom -Xmx256m
+ 3.6.2
+ 2.0.0
+ 3.6.0
+ 1.10
+ 2.5
+ 3.5
+ 0.4.13
+ 1.3
+ 1.2
+ 5.2.8.Final
+ 2.6.0
+ 0.7.9
+ 3.21.0-GA
+ 1.0.0
+ 1.1.0
+ 0.7.0
+ 3.6
+ 2.0.0
+ 3.6.2
+ 4.8
+ 1.3.0
+ jdt_apt
+ 1.1.0.Final
+ 2.10
+ 1.4.1
+ 3.0.1
+ yyyyMMddHHmmss
+ 3.0.0
+ 3.1.3
+ v6.10.0
+
+
+
+
+ ${project.build.directory}/test-results
+ 0.0.20
+ false
+ 3.2.2
+ 2.12.1
+ 3.2
+
+ src/main/webapp/content/**/*.*, src/main/webapp/bower_components/**/*.*, src/main/webapp/i18n/*.js, target/www/**/*.*
+
+ S3437,UndocumentedApi,BoldAndItalicTagsCheck
+
+
+ src/main/webapp/app/**/*.*
+ Web:BoldAndItalicTagsCheck
+
+ src/main/java/**/*
+ squid:S3437
+
+ src/main/java/**/*
+ squid:UndocumentedApi
+
+ ${project.testresult.directory}/coverage/jacoco/jacoco-it.exec
+ ${project.testresult.directory}/coverage/jacoco/jacoco.exec
+ jacoco
+
+ ${project.testresult.directory}/karma
+
+ ${project.testresult.directory}/coverage/report-lcov/lcov.info
+
+ ${project.testresult.directory}/coverage/report-lcov/lcov.info
+
+ ${project.basedir}/src/main/
+ ${project.testresult.directory}/surefire-reports
+ ${project.basedir}/src/test/
+
+ 2.5.0
+
+ Camden.SR5
+ 2.6.1
+ 1.4.10.Final
+ 1.1.0.Final
+ v0.21.3
+
+
+
+
+
+ org.springframework.cloud
+ spring-cloud-dependencies
+ ${spring-cloud.version}
+ pom
+ import
+
+
+
+
- io.github.jhipster
- jhipster
- ${jhipster.server.version}
+ com.datastax.cassandra
+ cassandra-driver-core
+
+
+ metrics-core
+ com.codahale.metrics
+
+
- io.dropwizard.metrics
- metrics-core
+ com.datastax.cassandra
+ cassandra-driver-extras
+ ${cassandra-driver.version}
- io.dropwizard.metrics
- metrics-annotation
- ${dropwizard-metrics.version}
-
-
- io.dropwizard.metrics
- metrics-json
- ${dropwizard-metrics.version}
-
-
- io.dropwizard.metrics
- metrics-jvm
- ${dropwizard-metrics.version}
-
-
- io.dropwizard.metrics
- metrics-servlet
- ${dropwizard-metrics.version}
-
-
- io.dropwizard.metrics
- metrics-servlets
+ com.datastax.cassandra
+ cassandra-driver-mapping
com.fasterxml.jackson.datatype
@@ -59,11 +142,11 @@
com.fasterxml.jackson.datatype
- jackson-datatype-jsr310
+ jackson-datatype-json-org
com.fasterxml.jackson.datatype
- jackson-datatype-json-org
+ jackson-datatype-jsr310
com.h2database
@@ -82,34 +165,12 @@
com.hazelcast
hazelcast-spring
-
- org.awaitility
- awaitility
- ${awaitility.version}
- test
-
com.jayway.jsonpath
json-path
test
-
- io.springfox
- springfox-swagger2
- ${springfox.version}
-
-
- org.mapstruct
- mapstruct
-
-
-
-
- io.springfox
- springfox-bean-validators
- ${springfox.version}
-
com.mattbertolini
liquibase-slf4j
@@ -121,16 +182,16 @@
${metrics-spring.version}
- com.codahale.metrics
metrics-annotation
+ com.codahale.metrics
- com.codahale.metrics
metrics-core
+ com.codahale.metrics
- com.codahale.metrics
metrics-healthchecks
+ com.codahale.metrics
@@ -148,17 +209,60 @@
commons-codec
commons-codec
- ${commons-codec.version}
commons-io
commons-io
- ${commons-io.version}
- org.apache.commons
- commons-lang3
- ${commons-lang.version}
+ io.dropwizard.metrics
+ metrics-annotation
+
+
+ io.dropwizard.metrics
+ metrics-core
+
+
+ io.dropwizard.metrics
+ metrics-json
+
+
+ io.dropwizard.metrics
+ metrics-jvm
+
+
+ io.dropwizard.metrics
+ metrics-servlet
+
+
+ io.dropwizard.metrics
+ metrics-servlets
+
+
+ io.github.jhipster
+ jhipster
+ ${jhipster.server.version}
+
+
+ io.jsonwebtoken
+ jjwt
+ ${jjwt.version}
+
+
+ io.springfox
+ springfox-bean-validators
+ ${springfox.version}
+
+
+ io.springfox
+ springfox-swagger2
+ ${springfox.version}
+
+
+ mapstruct
+ org.mapstruct
+
+
javax.cache
@@ -173,11 +277,41 @@
lz4
${lz4.version}
+
+ net.logstash.logback
+ logstash-logback-encoder
+ ${logstash-logback-encoder.version}
+
+
+ logback-core
+ ch.qos.logback
+
+
+ logback-classic
+ ch.qos.logback
+
+
+ logback-access
+ ch.qos.logback
+
+
+
+
+ org.apache.commons
+ commons-lang3
+ ${commons-lang.version}
+
org.assertj
assertj-core
test
+
+ org.awaitility
+ awaitility
+ ${awaitility.version}
+ test
+
org.hibernate
hibernate-envers
@@ -226,6 +360,10 @@
org.springframework.boot
spring-boot-starter-aop
+
+ org.springframework.boot
+ spring-boot-starter-cloud-connectors
+
org.springframework.boot
spring-boot-starter-data-jpa
@@ -247,16 +385,6 @@
spring-boot-starter-test
test
-
- org.springframework.security
- spring-security-test
- test
-
-
- org.springframework.boot
- spring-boot-test
- test
-
org.springframework.boot
spring-boot-starter-thymeleaf
@@ -266,40 +394,15 @@
spring-boot-starter-web
- org.springframework.boot
spring-boot-starter-tomcat
+ org.springframework.boot
- io.jsonwebtoken
- jjwt
- ${jjwt.version}
-
-
-
- com.datastax.cassandra
- cassandra-driver-core
-
-
- com.codahale.metrics
- metrics-core
-
-
-
-
- com.datastax.cassandra
- cassandra-driver-extras
- ${cassandra-driver.version}
-
-
- com.datastax.cassandra
- cassandra-driver-mapping
-
-
-
- org.springframework.cloud
- spring-cloud-starter-zuul
+ org.springframework.boot
+ spring-boot-test
+ test
org.springframework.cloud
@@ -307,72 +410,105 @@
org.springframework.cloud
- spring-cloud-starter-ribbon
-
-
-
- io.netty
- netty-transport-native-epoll
-
-
-
-
- org.springframework.cloud
- spring-cloud-starter-hystrix
-
-
- org.springframework.cloud
- spring-cloud-starter-spectator
-
-
- org.springframework.retry
- spring-retry
+ spring-cloud-starter-config
org.springframework.cloud
spring-cloud-starter-eureka
-
- org.springframework.cloud
- spring-cloud-starter-config
-
org.springframework.cloud
spring-cloud-starter-feign
- net.logstash.logback
- logstash-logback-encoder
- ${logstash-logback-encoder.version}
+ org.springframework.cloud
+ spring-cloud-starter-hystrix
+
+
+ org.springframework.cloud
+ spring-cloud-starter-ribbon
+
- ch.qos.logback
- logback-core
-
-
- ch.qos.logback
- logback-classic
-
-
- ch.qos.logback
- logback-access
+ netty-transport-native-epoll
+ io.netty
- org.springframework.boot
- spring-boot-starter-cloud-connectors
+ org.springframework.cloud
+ spring-cloud-starter-spectator
+
+
+
+ org.springframework.cloud
+ spring-cloud-starter-zuul
+
+
+ org.springframework.retry
+ spring-retry
org.springframework.security
spring-security-data
+
+ org.springframework.security
+ spring-security-test
+ test
+
spring-boot:run
+
+
+
+
+ org.eclipse.m2e
+ lifecycle-mapping
+ 1.0.0
+
+
+
+
+
+ org.jacoco
+ jacoco-maven-plugin
+ ${jacoco-maven-plugin.version}
+
+ prepare-agent
+
+
+
+
+
+
+
+
+ com.github.eirslett
+ frontend-maven-plugin
+ ${frontend-maven-plugin.version}
+
+ install-node-and-yarn
+ yarn
+ bower
+ gulp
+
+
+
+
+
+
+
+
+
+
+
+
com.github.ekryd.sortpom
@@ -395,6 +531,22 @@
false
+
+ com.spotify
+ docker-maven-plugin
+ ${docker-maven-plugin.version}
+
+ gateway
+ src/main/docker
+
+
+ /
+ ${project.build.directory}
+ ${project.build.finalName}.war
+
+
+
+
org.apache.maven.plugins
maven-compiler-plugin
@@ -412,6 +564,7 @@
org.apache.maven.plugins
maven-eclipse-plugin
+ ${maven-eclipse-plugin.version}
true
true
@@ -518,28 +671,16 @@
-
- org.sonarsource.scanner.maven
- sonar-maven-plugin
- ${sonar-maven-plugin.version}
-
org.liquibase
liquibase-maven-plugin
${liquibase.version}
-
- src/main/resources/config/liquibase/master.xml
- src/main/resources/config/liquibase/changelog/${maven.build.timestamp}_changelog.xml
- org.h2.Driver
- jdbc:h2:file:./target/h2db/db/gateway
-
- gateway
-
- hibernate:spring:com.gateway.domain?dialect=org.hibernate.dialect.H2Dialect&hibernate.physical_naming_strategy=org.springframework.boot.orm.jpa.hibernate.SpringPhysicalNamingStrategy&hibernate.implicit_naming_strategy=org.springframework.boot.orm.jpa.hibernate.SpringImplicitNamingStrategy
- true
- debug
-
+
+ javax.validation
+ validation-api
+ ${validation-api.version}
+
org.javassist
javassist
@@ -555,12 +696,24 @@
spring-boot-starter-data-jpa
${project.parent.version}
-
- javax.validation
- validation-api
- ${validation-api.version}
-
+
+ src/main/resources/config/liquibase/master.xml
+ src/main/resources/config/liquibase/changelog/${maven.build.timestamp}_changelog.xml
+ org.h2.Driver
+ jdbc:h2:file:./target/h2db/db/gateway
+
+ gateway
+
+ hibernate:spring:com.gateway.domain?dialect=org.hibernate.dialect.H2Dialect&hibernate.physical_naming_strategy=org.springframework.boot.orm.jpa.hibernate.SpringPhysicalNamingStrategy&hibernate.implicit_naming_strategy=org.springframework.boot.orm.jpa.hibernate.SpringImplicitNamingStrategy
+ true
+ debug
+
+
+
+ org.sonarsource.scanner.maven
+ sonar-maven-plugin
+ ${sonar-maven-plugin.version}
org.springframework.boot
@@ -571,74 +724,8 @@
-
- com.spotify
- docker-maven-plugin
- ${docker-maven-plugin.version}
-
- gateway
- src/main/docker
-
-
- /
- ${project.build.directory}
- ${project.build.finalName}.war
-
-
-
-
-
-
-
-
- org.eclipse.m2e
- lifecycle-mapping
- 1.0.0
-
-
-
-
-
- org.jacoco
-
- jacoco-maven-plugin
-
-
- ${jacoco-maven-plugin.version}
-
-
- prepare-agent
-
-
-
-
-
-
-
-
- com.github.eirslett
- frontend-maven-plugin
- ${frontend-maven-plugin.version}
-
- install-node-and-yarn
- yarn
- bower
- gulp
-
-
-
-
-
-
-
-
-
-
-
-
@@ -659,17 +746,6 @@
true
-
-
- org.springframework.boot
- spring-boot-starter-undertow
-
-
- org.springframework.boot
- spring-boot-devtools
- true
-
-
@@ -687,48 +763,22 @@
dev${profile.no-liquibase}
-
-
- prod
+
+ org.springframework.boot
+ spring-boot-devtools
+ true
+
org.springframework.boot
spring-boot-starter-undertow
+
+
+ prod
-
- maven-clean-plugin
-
-
-
- target/www/
-
-
-
-
-
- org.apache.maven.plugins
- maven-war-plugin
-
- target/www/
-
-
-
- org.springframework.boot
- spring-boot-maven-plugin
-
- true
-
-
-
-
- build-info
-
-
-
-
com.github.eirslett
frontend-maven-plugin
@@ -773,16 +823,47 @@
gulp test
+ test
gulp
- test
test --no-notification
+
+ maven-clean-plugin
+
+
+
+ target/www/
+
+
+
+
+
+ org.apache.maven.plugins
+ maven-war-plugin
+
+ target/www/
+
+
+
+ org.springframework.boot
+ spring-boot-maven-plugin
+
+
+
+ build-info
+
+
+
+
+ true
+
+
@@ -791,56 +872,20 @@
prod${profile.swagger}${profile.no-liquibase}
+
+
+ org.springframework.boot
+ spring-boot-starter-undertow
+
+
cc
-
-
- org.springframework.boot
- spring-boot-starter-undertow
-
-
- org.springframework.boot
- spring-boot-devtools
- true
-
-
-
- org.apache.maven.plugins
- maven-war-plugin
-
- src/main/webapp/
-
-
-
- org.springframework.boot
- spring-boot-maven-plugin
-
- true
- true
- true
-
-
-
-
- org.apache.maven.plugins
- maven-compiler-plugin
-
-
- default-compile
- none
-
-
- default-testCompile
- none
-
-
-
net.alchim31.maven
scala-maven-plugin
@@ -869,6 +914,37 @@
${scala.version}
+
+ org.apache.maven.plugins
+ maven-compiler-plugin
+
+
+ default-compile
+ none
+
+
+ default-testCompile
+ none
+
+
+
+
+ org.apache.maven.plugins
+ maven-war-plugin
+
+ src/main/webapp/
+
+
+
+ org.springframework.boot
+ spring-boot-maven-plugin
+
+ true
+ true
+ true
+
+
+
@@ -877,6 +953,17 @@
dev,swagger
+
+
+ org.springframework.boot
+ spring-boot-devtools
+ true
+
+
+ org.springframework.boot
+ spring-boot-starter-undertow
+
+
@@ -899,12 +986,12 @@
io.prometheus
- simpleclient_servlet
+ simpleclient_dropwizard
${prometheus-simpleclient.version}
io.prometheus
- simpleclient_dropwizard
+ simpleclient_servlet
${prometheus-simpleclient.version}
@@ -922,99 +1009,4 @@
-
-
-
- org.springframework.cloud
- spring-cloud-dependencies
- ${spring-cloud.version}
- pom
- import
-
-
-
-
-
- ${maven.version}
-
-
-
- -Djava.security.egd=file:/dev/./urandom -Xmx256m
- 3.6.2
- 2.0.0
- 1.10
- 2.5
- 3.5
- 0.4.13
- 1.3
- 1.2
- 5.2.8.Final
- 2.6.0
- 0.7.9
- 3.21.0-GA
- 1.0.0
- 1.1.0
- 0.7.0
- 3.6
- 2.0.0
- 4.8
- 1.3.0
- jdt_apt
- 1.1.0.Final
- 1.4.1
- 3.0.1
- yyyyMMddHHmmss
- 3.0.0
- 3.1.3
- v6.10.0
-
-
-
- 0.0.20
-
- ${project.build.directory}/test-results
- false
- 3.2.2
- 2.12.1
- 3.2
-
- src/main/webapp/content/**/*.*, src/main/webapp/bower_components/**/*.*, src/main/webapp/i18n/*.js, target/www/**/*.*
-
- S3437,UndocumentedApi,BoldAndItalicTagsCheck
-
-
- src/main/webapp/app/**/*.*
- Web:BoldAndItalicTagsCheck
-
- src/main/java/**/*
- squid:S3437
-
- src/main/java/**/*
- squid:UndocumentedApi
-
- ${project.testresult.directory}/coverage/jacoco/jacoco-it.exec
- ${project.testresult.directory}/coverage/jacoco/jacoco.exec
- jacoco
-
- ${project.testresult.directory}/karma
-
- ${project.testresult.directory}/coverage/report-lcov/lcov.info
-
- ${project.testresult.directory}/coverage/report-lcov/lcov.info
-
- ${project.basedir}/src/main/
- ${project.testresult.directory}/surefire-reports
- ${project.basedir}/src/test/
-
- 2.5.0
-
- Camden.SR5
- 2.6.1
- 1.4.10.Final
- 1.1.0.Final
- v0.21.3
-
-
diff --git a/jhipster/jhipster-microservice/pom.xml b/jhipster/jhipster-microservice/pom.xml
new file mode 100644
index 0000000000..4a60e47f87
--- /dev/null
+++ b/jhipster/jhipster-microservice/pom.xml
@@ -0,0 +1,20 @@
+
+
+ 4.0.0
+ jhipster-microservice
+ pom
+ JHipster Microservice
+
+
+ jhipster
+ com.baeldung.jhipster
+ 1.0.0-SNAPSHOT
+
+
+
+ car-app
+ dealer-app
+ gateway-app
+
+
diff --git a/jhipster/jhipster-monolithic/pom.xml b/jhipster/jhipster-monolithic/pom.xml
index 9708b83a70..e242668759 100644
--- a/jhipster/jhipster-monolithic/pom.xml
+++ b/jhipster/jhipster-monolithic/pom.xml
@@ -6,10 +6,9 @@
JHipster Monolithic Application
- parent-boot-1
- com.baeldung
- 0.0.1-SNAPSHOT
- ../../parent-boot-1
+ jhipster
+ com.baeldung.jhipster
+ 1.0.0-SNAPSHOT
diff --git a/jhipster/pom.xml b/jhipster/pom.xml
new file mode 100644
index 0000000000..2bf7bcb233
--- /dev/null
+++ b/jhipster/pom.xml
@@ -0,0 +1,23 @@
+
+
+ 4.0.0
+ com.baeldung.jhipster
+ jhipster
+ 1.0.0-SNAPSHOT
+ pom
+ JHipster
+
+
+ parent-boot-1
+ com.baeldung
+ 0.0.1-SNAPSHOT
+ ../parent-boot-1
+
+
+
+ jhipster-monolithic
+ jhipster-microservice
+
+
+
diff --git a/jni/pom.xml b/jni/pom.xml
index 274b9b58c3..d4cc409d33 100644
--- a/jni/pom.xml
+++ b/jni/pom.xml
@@ -1,21 +1,12 @@
4.0.0
- com.baeldung
jni
- 0.0.1-SNAPSHOT
-
-
- junit
- junit
- ${junit.version}
- test
-
-
-
-
- 4.8.1
-
+
+ com.baeldung
+ parent-modules
+ 1.0.0-SNAPSHOT
+
\ No newline at end of file
diff --git a/jni/src/test/java/com/baeldung/jni/JNINativeTests.java b/jni/src/test/java/com/baeldung/jni/JNINativeManualTest.java
similarity index 98%
rename from jni/src/test/java/com/baeldung/jni/JNINativeTests.java
rename to jni/src/test/java/com/baeldung/jni/JNINativeManualTest.java
index 42e572d41b..8201945644 100644
--- a/jni/src/test/java/com/baeldung/jni/JNINativeTests.java
+++ b/jni/src/test/java/com/baeldung/jni/JNINativeManualTest.java
@@ -7,7 +7,7 @@ import static org.junit.Assert.assertTrue;
import org.junit.Before;
import org.junit.Test;
-public class JNINativeTests {
+public class JNINativeManualTest {
@Before
public void setup() {
diff --git a/jooby/pom.xml b/jooby/pom.xml
index 2867b7f4b6..83dd650701 100644
--- a/jooby/pom.xml
+++ b/jooby/pom.xml
@@ -1,60 +1,63 @@
- 4.0.0
- jooby
- com.baeldung.jooby
- 1.0
- jooby
+ xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd">
+ 4.0.0
+ jooby
+ com.baeldung.jooby
+ 1.0
+ jooby
-
- org.jooby
- modules
- 1.1.3
-
+
+ com.baeldung
+ parent-modules
+ 1.0.0-SNAPSHOT
+
-
-
- org.jooby
- jooby-netty
-
-
- org.jooby
- jooby-jedis
- ${jooby-jedis.version}
-
-
- ch.qos.logback
- logback-classic
-
-
- junit
- junit
- test
-
-
- io.rest-assured
- rest-assured
- test
-
-
+
+
+
+ org.jooby
+ modules
+ ${jooby.version}
+ pom
+
+
+
-
-
-
- org.apache.maven.plugins
- maven-shade-plugin
- ${maven-shade-plugin.version}
-
-
-
+
+
+ org.jooby
+ jooby-netty
+ ${jooby.version}
+
+
+ org.jooby
+ jooby-jedis
+ ${jooby.version}
+
+
+ io.rest-assured
+ rest-assured
+ test
+ ${rest-assured.version}
+
+
-
- 1.1.3
- com.baeldung.jooby.App
- 1.1.3
-
- 2.4.3
-
+
+
+
+ org.apache.maven.plugins
+ maven-shade-plugin
+ ${maven-shade-plugin.version}
+
+
+
+
+
+ 1.1.3
+ 3.1.1
+ com.baeldung.jooby.App
+ 2.4.3
+
diff --git a/jooby/src/test/java/com/baeldung/jooby/AppTest.java b/jooby/src/test/java/com/baeldung/jooby/AppUnitTest.java
similarity index 96%
rename from jooby/src/test/java/com/baeldung/jooby/AppTest.java
rename to jooby/src/test/java/com/baeldung/jooby/AppUnitTest.java
index af2626c046..ab7388f5f4 100644
--- a/jooby/src/test/java/com/baeldung/jooby/AppTest.java
+++ b/jooby/src/test/java/com/baeldung/jooby/AppUnitTest.java
@@ -9,7 +9,7 @@ import org.jooby.test.MockRouter;
import org.junit.ClassRule;
import org.junit.Test;
-public class AppTest {
+public class AppUnitTest {
@ClassRule
public static JoobyRule app = new JoobyRule(new App());
diff --git a/jta/README.md b/jta/README.md
new file mode 100644
index 0000000000..445a291c8f
--- /dev/null
+++ b/jta/README.md
@@ -0,0 +1,2 @@
+### Relevant Articles:
+- [Guide to Java EE JTA](https://www.baeldung.com/jee-jta)
diff --git a/libraries-security/.gitignore b/libraries-security/.gitignore
new file mode 100644
index 0000000000..71881ad3ca
--- /dev/null
+++ b/libraries-security/.gitignore
@@ -0,0 +1,14 @@
+*.class
+
+#folders#
+/target
+/neoDb*
+/data
+/src/main/webapp/WEB-INF/classes
+*/META-INF/*
+
+# Packaged files #
+*.jar
+*.war
+*.ear
+/bin/
diff --git a/libraries-security/pom.xml b/libraries-security/pom.xml
new file mode 100644
index 0000000000..3077abc29c
--- /dev/null
+++ b/libraries-security/pom.xml
@@ -0,0 +1,61 @@
+
+
+ 4.0.0
+ libraries-security
+ libraries-security
+ jar
+
+
+ com.baeldung
+ parent-boot-1
+ 0.0.1-SNAPSHOT
+ ../parent-boot-1
+
+
+
+
+
+ org.springframework.boot
+ spring-boot-starter-web
+
+
+
+ org.springframework.security.oauth
+ spring-security-oauth2
+ 2.3.3.RELEASE
+
+
+
+ com.github.scribejava
+ scribejava-apis
+ ${scribejava.version}
+
+
+
+ junit
+ junit
+ ${junit.version}
+ test
+
+
+ org.passay
+ passay
+ 1.3.1
+
+
+ org.cryptacular
+ cryptacular
+ 1.2.2
+
+
+
+
+
+ 4.12
+ 2.0.4.RELEASE
+ 5.6.0
+
+
+
+
diff --git a/libraries-security/src/main/java/com/baeldung/scribejava/ScribejavaApplication.java b/libraries-security/src/main/java/com/baeldung/scribejava/ScribejavaApplication.java
new file mode 100644
index 0000000000..bb86c497b0
--- /dev/null
+++ b/libraries-security/src/main/java/com/baeldung/scribejava/ScribejavaApplication.java
@@ -0,0 +1,15 @@
+package com.baeldung.scribejava;
+
+import org.springframework.boot.SpringApplication;
+import org.springframework.boot.autoconfigure.SpringBootApplication;
+
+
+@SpringBootApplication
+public class ScribejavaApplication {
+
+ public static void main(String[] args) {
+ SpringApplication.run(ScribejavaApplication.class, args);
+ }
+
+
+}
diff --git a/libraries-security/src/main/java/com/baeldung/scribejava/api/MyApi.java b/libraries-security/src/main/java/com/baeldung/scribejava/api/MyApi.java
new file mode 100644
index 0000000000..cf073d3035
--- /dev/null
+++ b/libraries-security/src/main/java/com/baeldung/scribejava/api/MyApi.java
@@ -0,0 +1,27 @@
+package com.baeldung.scribejava.api;
+
+import com.github.scribejava.core.builder.api.DefaultApi20;
+
+public class MyApi extends DefaultApi20 {
+
+ private MyApi() {
+ }
+
+ private static class InstanceHolder {
+ private static final MyApi INSTANCE = new MyApi();
+ }
+
+ public static MyApi instance() {
+ return InstanceHolder.INSTANCE;
+ }
+
+ @Override
+ public String getAccessTokenEndpoint() {
+ return "http://localhost:8080/oauth/token";
+ }
+
+ @Override
+ protected String getAuthorizationBaseUrl() {
+ return null;
+ }
+}
diff --git a/libraries-security/src/main/java/com/baeldung/scribejava/controller/GoogleController.java b/libraries-security/src/main/java/com/baeldung/scribejava/controller/GoogleController.java
new file mode 100644
index 0000000000..ffe4f0cc8a
--- /dev/null
+++ b/libraries-security/src/main/java/com/baeldung/scribejava/controller/GoogleController.java
@@ -0,0 +1,49 @@
+package com.baeldung.scribejava.controller;
+
+import com.baeldung.scribejava.service.GoogleService;
+import com.github.scribejava.core.model.OAuth2AccessToken;
+import com.github.scribejava.core.model.OAuthRequest;
+import com.github.scribejava.core.model.Response;
+import com.github.scribejava.core.model.Verb;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.web.bind.annotation.GetMapping;
+import org.springframework.web.bind.annotation.RequestParam;
+import org.springframework.web.bind.annotation.RestController;
+
+import javax.servlet.http.HttpServletResponse;
+
+@RestController
+public class GoogleController {
+
+ @Autowired
+ private GoogleService service;
+
+
+ @GetMapping(value ="/me/google")
+ public void me(HttpServletResponse response){
+ String auth = service.getService().getAuthorizationUrl();
+
+ response.setHeader("Location", auth);
+ response.setStatus(302);
+
+ }
+
+ @GetMapping(value = "/auth/google")
+ public String google(@RequestParam String code, HttpServletResponse servletResponse){
+
+ try {
+ OAuth2AccessToken token = service.getService().getAccessToken(code);
+
+ OAuthRequest request = new OAuthRequest(Verb.GET, "https://www.googleapis.com/oauth2/v1/userinfo?alt=json");
+ service.getService().signRequest(token, request);
+ Response response = service.getService().execute(request);
+ return response.getBody();
+
+ }catch (Exception e){
+ servletResponse.setStatus(HttpServletResponse.SC_BAD_REQUEST);
+ }
+
+ return null;
+ }
+
+}
diff --git a/libraries-security/src/main/java/com/baeldung/scribejava/controller/TwitterController.java b/libraries-security/src/main/java/com/baeldung/scribejava/controller/TwitterController.java
new file mode 100644
index 0000000000..bfcd6d960c
--- /dev/null
+++ b/libraries-security/src/main/java/com/baeldung/scribejava/controller/TwitterController.java
@@ -0,0 +1,57 @@
+package com.baeldung.scribejava.controller;
+
+import com.baeldung.scribejava.service.TwitterService;
+import com.github.scribejava.core.model.*;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.web.bind.annotation.GetMapping;
+import org.springframework.web.bind.annotation.RestController;
+
+import javax.servlet.http.HttpServletResponse;
+import java.io.IOException;
+import java.util.Scanner;
+import java.util.concurrent.ExecutionException;
+
+@RestController
+public class TwitterController {
+
+ @Autowired
+ private TwitterService service;
+
+
+ @GetMapping(value ="/me/twitter")
+ public String me(HttpServletResponse servletResponse){
+ try {
+ OAuth1RequestToken requestToken = service.getService().getRequestToken();
+
+ String auth = service.getService().getAuthorizationUrl(requestToken);
+
+ Runtime runtime = Runtime.getRuntime();
+ try {
+ runtime.exec("rundll32 url.dll,FileProtocolHandler " + auth);
+ } catch (IOException e) {
+ servletResponse.setStatus(HttpServletResponse.SC_BAD_REQUEST);
+ return null;
+ }
+
+ System.out.println("Insert twitter code:");
+ Scanner in = new Scanner(System.in);
+
+ String oauthverifier = in.nextLine();
+
+ final OAuth1AccessToken accessToken = service.getService().getAccessToken(requestToken,oauthverifier);
+
+ OAuthRequest request = new OAuthRequest(Verb.GET, "https://api.twitter.com/1.1/account/verify_credentials.json");
+ service.getService().signRequest(accessToken, request);
+ Response response = service.getService().execute(request);
+ return response.getBody();
+
+ } catch (IOException | InterruptedException | ExecutionException e) {
+ servletResponse.setStatus(HttpServletResponse.SC_BAD_REQUEST);
+ }
+
+ return null;
+ }
+
+
+
+}
diff --git a/libraries-security/src/main/java/com/baeldung/scribejava/controller/UserController.java b/libraries-security/src/main/java/com/baeldung/scribejava/controller/UserController.java
new file mode 100644
index 0000000000..68a11250de
--- /dev/null
+++ b/libraries-security/src/main/java/com/baeldung/scribejava/controller/UserController.java
@@ -0,0 +1,46 @@
+package com.baeldung.scribejava.controller;
+
+import com.baeldung.scribejava.service.MyService;
+import com.github.scribejava.core.model.OAuth2AccessToken;
+import com.github.scribejava.core.model.OAuthRequest;
+import com.github.scribejava.core.model.Response;
+import com.github.scribejava.core.model.Verb;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.web.bind.annotation.GetMapping;
+import org.springframework.web.bind.annotation.RequestParam;
+import org.springframework.web.bind.annotation.RestController;
+
+import javax.servlet.http.HttpServletResponse;
+import java.security.Principal;
+
+@RestController(value = "/user")
+public class UserController {
+
+ @Autowired
+ private MyService service;
+
+ @GetMapping("/me/myapi")
+ public String me(@RequestParam String username, @RequestParam String password, HttpServletResponse responsehttp) {
+
+ try {
+ OAuth2AccessToken token = service.getService().getAccessTokenPasswordGrant(username, password);
+
+ OAuthRequest request = new OAuthRequest(Verb.GET, "http://localhost:8080/me");
+ service.getService().signRequest(token, request);
+ Response response = service.getService().execute(request);
+
+ return response.getBody();
+
+ } catch (Exception e) {
+ responsehttp.setStatus(HttpServletResponse.SC_BAD_REQUEST);
+ }
+
+ return null;
+
+ }
+
+ @GetMapping("/me")
+ public Principal user(Principal principal) {
+ return principal;
+ }
+}
diff --git a/libraries-security/src/main/java/com/baeldung/scribejava/oauth/AuthServiceConfig.java b/libraries-security/src/main/java/com/baeldung/scribejava/oauth/AuthServiceConfig.java
new file mode 100644
index 0000000000..2c7162399b
--- /dev/null
+++ b/libraries-security/src/main/java/com/baeldung/scribejava/oauth/AuthServiceConfig.java
@@ -0,0 +1,45 @@
+package com.baeldung.scribejava.oauth;
+
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.beans.factory.annotation.Qualifier;
+import org.springframework.context.annotation.Configuration;
+import org.springframework.http.HttpMethod;
+import org.springframework.security.authentication.AuthenticationManager;
+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.configuration.EnableAuthorizationServer;
+import org.springframework.security.oauth2.config.annotation.web.configurers.AuthorizationServerEndpointsConfigurer;
+import org.springframework.security.oauth2.config.annotation.web.configurers.AuthorizationServerSecurityConfigurer;
+
+
+@Configuration
+@EnableAuthorizationServer
+public class AuthServiceConfig extends AuthorizationServerConfigurerAdapter {
+
+ @Autowired
+ @Qualifier("authenticationManagerBean")
+ private AuthenticationManager authenticationManager;
+
+ @Override
+ public void configure(AuthorizationServerSecurityConfigurer oauthServer) throws Exception {
+ oauthServer.tokenKeyAccess("permitAll()")
+ .checkTokenAccess("isAuthenticated()");
+ }
+
+ @Override
+ public void configure(ClientDetailsServiceConfigurer clients) throws Exception {
+ clients.inMemory()
+ .withClient("baeldung_api_key")
+ .secret("baeldung_api_secret")
+ .authorizedGrantTypes("password","refresh_token")
+ .scopes("read","write").autoApprove(true);
+ }
+
+ @Override
+ public void configure(AuthorizationServerEndpointsConfigurer endpoints) throws Exception {
+ endpoints
+ .authenticationManager(authenticationManager)
+ .allowedTokenEndpointRequestMethods(HttpMethod.GET, HttpMethod.POST);
+ }
+
+}
diff --git a/libraries-security/src/main/java/com/baeldung/scribejava/oauth/WebSecurityConfig.java b/libraries-security/src/main/java/com/baeldung/scribejava/oauth/WebSecurityConfig.java
new file mode 100644
index 0000000000..7aa51400ea
--- /dev/null
+++ b/libraries-security/src/main/java/com/baeldung/scribejava/oauth/WebSecurityConfig.java
@@ -0,0 +1,53 @@
+package com.baeldung.scribejava.oauth;
+
+import org.springframework.context.annotation.Bean;
+import org.springframework.context.annotation.Configuration;
+import org.springframework.security.authentication.AuthenticationManager;
+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.oauth2.config.annotation.web.configuration.EnableResourceServer;
+import org.springframework.security.oauth2.config.annotation.web.configuration.ResourceServerConfigurerAdapter;
+
+@Configuration
+@EnableResourceServer
+public class WebSecurityConfig extends WebSecurityConfigurerAdapter {
+
+ @Override
+ protected void configure(HttpSecurity http) throws Exception {
+ http
+ .headers().frameOptions().disable()
+ .and()
+ .csrf().disable();
+ }
+
+ @Override
+ protected void configure(AuthenticationManagerBuilder auth) throws Exception {
+ auth.inMemoryAuthentication()
+ .withUser("baeldung")
+ .password("scribejava")
+ .roles("USER");
+ }
+
+ @Override
+ @Bean
+ public AuthenticationManager authenticationManagerBean() throws Exception {
+ return super.authenticationManagerBean();
+ }
+
+
+ @EnableResourceServer
+ @Configuration
+ public class ResourceServerConfig extends ResourceServerConfigurerAdapter {
+
+ @Override
+ public void configure(HttpSecurity http) throws Exception {
+ http
+ .authorizeRequests()
+ .antMatchers("/user/me").authenticated()
+ .and()
+ .csrf().disable();
+ }
+ }
+
+}
diff --git a/libraries-security/src/main/java/com/baeldung/scribejava/service/GoogleService.java b/libraries-security/src/main/java/com/baeldung/scribejava/service/GoogleService.java
new file mode 100644
index 0000000000..fbcc39763c
--- /dev/null
+++ b/libraries-security/src/main/java/com/baeldung/scribejava/service/GoogleService.java
@@ -0,0 +1,31 @@
+package com.baeldung.scribejava.service;
+
+import com.github.scribejava.apis.GoogleApi20;
+import com.github.scribejava.core.builder.ServiceBuilder;
+import com.github.scribejava.core.oauth.OAuth20Service;
+import org.springframework.stereotype.Component;
+
+import javax.annotation.PostConstruct;
+@Component
+public class GoogleService {
+
+ private OAuth20Service service;
+ private final String API_KEY = "api_key";
+ private final String API_SECRET = "api_secret";
+ private final String SCOPE = "https://www.googleapis.com/auth/userinfo.email";
+ private final String CALLBACK = "http://localhost:8080/auth/google";
+
+ @PostConstruct
+ private void init(){
+ this.service = new ServiceBuilder(API_KEY)
+ .apiSecret(API_SECRET)
+ .scope(SCOPE)
+ .callback(CALLBACK)
+ .build(GoogleApi20.instance());
+ }
+
+
+ public OAuth20Service getService() {
+ return service;
+ }
+}
diff --git a/libraries-security/src/main/java/com/baeldung/scribejava/service/MyService.java b/libraries-security/src/main/java/com/baeldung/scribejava/service/MyService.java
new file mode 100644
index 0000000000..739c82172c
--- /dev/null
+++ b/libraries-security/src/main/java/com/baeldung/scribejava/service/MyService.java
@@ -0,0 +1,29 @@
+package com.baeldung.scribejava.service;
+
+import com.baeldung.scribejava.api.MyApi;
+import com.github.scribejava.core.builder.ServiceBuilder;
+import com.github.scribejava.core.oauth.OAuth20Service;
+import org.springframework.stereotype.Component;
+
+import javax.annotation.PostConstruct;
+
+@Component
+public class MyService {
+
+ private OAuth20Service service;
+ private final String API_KEY = "baeldung_api_key";
+ private final String API_SECRET = "baeldung_api_secret";
+
+ @PostConstruct
+ private void init(){
+ this.service = new ServiceBuilder(API_KEY)
+ .apiSecret(API_SECRET)
+ .scope("read write")
+ .build(MyApi.instance());
+ }
+
+
+ public OAuth20Service getService() {
+ return service;
+ }
+}
diff --git a/libraries-security/src/main/java/com/baeldung/scribejava/service/TwitterService.java b/libraries-security/src/main/java/com/baeldung/scribejava/service/TwitterService.java
new file mode 100644
index 0000000000..df49f74679
--- /dev/null
+++ b/libraries-security/src/main/java/com/baeldung/scribejava/service/TwitterService.java
@@ -0,0 +1,29 @@
+package com.baeldung.scribejava.service;
+
+import com.github.scribejava.apis.TwitterApi;
+import com.github.scribejava.core.builder.ServiceBuilder;
+import com.github.scribejava.core.oauth.OAuth10aService;
+import org.springframework.stereotype.Component;
+
+import javax.annotation.PostConstruct;
+
+@Component
+public class TwitterService {
+
+ private final String API_KEY = "api_key";
+ private final String API_SECRET = "api_secret";
+ private OAuth10aService service;
+
+ @PostConstruct
+ private void init(){
+ this.service = new ServiceBuilder(API_KEY)
+ .apiSecret(API_SECRET)
+ .build(TwitterApi.instance());
+ }
+
+ public OAuth10aService getService(){
+ return service;
+ }
+
+
+}
diff --git a/libraries-security/src/main/resources/application.properties b/libraries-security/src/main/resources/application.properties
new file mode 100644
index 0000000000..71c6176533
--- /dev/null
+++ b/libraries-security/src/main/resources/application.properties
@@ -0,0 +1 @@
+security.oauth2.resource.filter-order = 3
\ No newline at end of file
diff --git a/libraries-security/src/test/java/com/baeldung/passay/NegativeMatchingRulesUnitTest.java b/libraries-security/src/test/java/com/baeldung/passay/NegativeMatchingRulesUnitTest.java
new file mode 100644
index 0000000000..5054a5880e
--- /dev/null
+++ b/libraries-security/src/test/java/com/baeldung/passay/NegativeMatchingRulesUnitTest.java
@@ -0,0 +1,149 @@
+package com.baeldung.passay;
+
+import org.cryptacular.bean.EncodingHashBean;
+import org.cryptacular.spec.CodecSpec;
+import org.cryptacular.spec.DigestSpec;
+import org.junit.Assert;
+import org.junit.Test;
+import org.passay.DictionaryRule;
+import org.passay.DictionarySubstringRule;
+import org.passay.DigestHistoryRule;
+import org.passay.EnglishSequenceData;
+import org.passay.HistoryRule;
+import org.passay.IllegalCharacterRule;
+import org.passay.IllegalRegexRule;
+import org.passay.IllegalSequenceRule;
+import org.passay.NumberRangeRule;
+import org.passay.PasswordData;
+import org.passay.PasswordValidator;
+import org.passay.RepeatCharacterRegexRule;
+import org.passay.RuleResult;
+import org.passay.SourceRule;
+import org.passay.UsernameRule;
+import org.passay.WhitespaceRule;
+import org.passay.dictionary.ArrayWordList;
+import org.passay.dictionary.WordListDictionary;
+
+import java.util.Arrays;
+import java.util.List;
+
+import static org.junit.Assert.assertEquals;
+import static org.junit.Assert.assertFalse;
+
+public class NegativeMatchingRulesUnitTest {
+
+ @Test
+ public void givenDictionaryRules_whenValidatePassword_thenFoundIllegalWordsFromDictionary() {
+ ArrayWordList arrayWordList = new ArrayWordList(new String[] { "bar", "foobar" });
+
+ WordListDictionary wordListDictionary = new WordListDictionary(arrayWordList);
+
+ DictionaryRule dictionaryRule = new DictionaryRule(wordListDictionary);
+ DictionarySubstringRule dictionarySubstringRule = new DictionarySubstringRule(wordListDictionary);
+
+ PasswordValidator passwordValidator = new PasswordValidator(dictionaryRule, dictionarySubstringRule);
+ RuleResult validate = passwordValidator.validate(new PasswordData("foobar"));
+
+ assertFalse(validate.isValid());
+ assertEquals("ILLEGAL_WORD:{matchingWord=foobar}", getDetail(validate, 0));
+ assertEquals("ILLEGAL_WORD:{matchingWord=bar}", getDetail(validate, 1));
+ }
+
+ @Test
+ public void givenHistoryRule_whenValidatePassword_thenFoundIllegalWordsFromHistory() {
+ HistoryRule historyRule = new HistoryRule();
+
+ PasswordData passwordData = new PasswordData("123");
+ passwordData.setPasswordReferences(new PasswordData.HistoricalReference("12345"), new PasswordData.HistoricalReference("1234"), new PasswordData.HistoricalReference("123"));
+
+ PasswordValidator passwordValidator = new PasswordValidator(historyRule);
+
+ RuleResult validate = passwordValidator.validate(passwordData);
+
+ assertFalse(validate.isValid());
+ assertEquals("HISTORY_VIOLATION:{historySize=3}", getDetail(validate, 0));
+ }
+
+ @Test
+ public void givenSeveralIllegalRules_whenValidatePassword_thenFoundSeveralIllegalPatterns() {
+ IllegalCharacterRule illegalCharacterRule = new IllegalCharacterRule(new char[] { 'a' });
+ IllegalRegexRule illegalRegexRule = new IllegalRegexRule("\\w{2}\\d{2}");
+ IllegalSequenceRule illegalSequenceRule = new IllegalSequenceRule(EnglishSequenceData.Alphabetical, 3, true);
+ NumberRangeRule numberRangeRule = new NumberRangeRule(1, 10);
+ WhitespaceRule whitespaceRule = new WhitespaceRule();
+
+ PasswordValidator passwordValidator = new PasswordValidator(illegalCharacterRule, illegalRegexRule, illegalSequenceRule, numberRangeRule, whitespaceRule);
+
+ RuleResult validate = passwordValidator.validate(new PasswordData("abcd22 "));
+
+ assertFalse(validate.isValid());
+ assertEquals("ILLEGAL_CHAR:{illegalCharacter=a, matchBehavior=contains}", getDetail(validate, 0));
+ assertEquals("ILLEGAL_MATCH:{match=cd22, pattern=\\w{2}\\d{2}}", getDetail(validate, 1));
+ assertEquals("ILLEGAL_ALPHABETICAL_SEQUENCE:{sequence=abc}", getDetail(validate, 2));
+ assertEquals("ILLEGAL_ALPHABETICAL_SEQUENCE:{sequence=bcd}", getDetail(validate, 3));
+ assertEquals("ILLEGAL_NUMBER_RANGE:{number=2, matchBehavior=contains}", getDetail(validate, 4));
+ assertEquals("ILLEGAL_WHITESPACE:{whitespaceCharacter= , matchBehavior=contains}", getDetail(validate, 5));
+ }
+
+ @Test
+ public void givenSourceRule_whenValidatePassword_thenFoundIllegalWordsFromSource() {
+ SourceRule sourceRule = new SourceRule();
+
+ PasswordData passwordData = new PasswordData("password");
+ passwordData.setPasswordReferences(new PasswordData.SourceReference("source", "password"));
+
+ PasswordValidator passwordValidator = new PasswordValidator(sourceRule);
+ RuleResult validate = passwordValidator.validate(passwordData);
+
+ assertFalse(validate.isValid());
+ assertEquals("SOURCE_VIOLATION:{source=source}", getDetail(validate, 0));
+ }
+
+ @Test
+ public void givenRepeatCharacterRegexRuleRule_whenValidatePassword_thenFoundIllegalPatternMatches() {
+ RepeatCharacterRegexRule repeatCharacterRegexRule = new RepeatCharacterRegexRule(3);
+
+ PasswordValidator passwordValidator = new PasswordValidator(repeatCharacterRegexRule);
+
+ RuleResult validate = passwordValidator.validate(new PasswordData("aaabbb"));
+
+ assertFalse(validate.isValid());
+ assertEquals("ILLEGAL_MATCH:{match=aaa, pattern=([^\\x00-\\x1F])\\1{2}}", getDetail(validate, 0));
+ assertEquals("ILLEGAL_MATCH:{match=bbb, pattern=([^\\x00-\\x1F])\\1{2}}", getDetail(validate, 1));
+ }
+
+ @Test
+ public void givenUserNameRule_whenValidatePassword_thenFoundUserNameInPassword() {
+ PasswordValidator passwordValidator = new PasswordValidator(new UsernameRule());
+
+ PasswordData passwordData = new PasswordData("testuser1234");
+ passwordData.setUsername("testuser");
+
+ RuleResult validate = passwordValidator.validate(passwordData);
+
+ assertFalse(validate.isValid());
+ assertEquals("ILLEGAL_USERNAME:{username=testuser, matchBehavior=contains}", getDetail(validate, 0));
+ }
+
+ @Test
+ public void givenPasswordAndHashBeanAndEncryptedReferences_whenValidate_thenPasswordValidationShouldPass() {
+ List historicalReferences = Arrays.asList(new PasswordData.HistoricalReference("SHA256", "2e4551de804e27aacf20f9df5be3e8cd384ed64488b21ab079fb58e8c90068ab"));
+ PasswordData passwordData = new PasswordData("example!");
+ passwordData.setPasswordReferences(historicalReferences);
+
+ EncodingHashBean encodingHashBean = new EncodingHashBean(new CodecSpec("Base64"), new DigestSpec("SHA256"), 1, false);
+
+ PasswordValidator passwordValidator = new PasswordValidator(new DigestHistoryRule(encodingHashBean));
+
+ RuleResult validate = passwordValidator.validate(passwordData);
+
+ Assert.assertTrue(validate.isValid());
+ }
+
+ private String getDetail(RuleResult validate, int i) {
+ return validate.getDetails()
+ .get(i)
+ .toString();
+ }
+
+}
diff --git a/libraries-security/src/test/java/com/baeldung/passay/PasswordGeneratorUnitTest.java b/libraries-security/src/test/java/com/baeldung/passay/PasswordGeneratorUnitTest.java
new file mode 100644
index 0000000000..ff279e9317
--- /dev/null
+++ b/libraries-security/src/test/java/com/baeldung/passay/PasswordGeneratorUnitTest.java
@@ -0,0 +1,50 @@
+package com.baeldung.passay;
+
+import org.junit.Assert;
+import org.junit.Test;
+import org.passay.CharacterData;
+import org.passay.CharacterRule;
+import org.passay.EnglishCharacterData;
+import org.passay.PasswordGenerator;
+
+import java.util.stream.Stream;
+
+public class PasswordGeneratorUnitTest {
+
+ @Test
+ public void givenDigitsGenerator_whenGeneratingPassword_thenPasswordContainsDigitsHasLength10() {
+ CharacterRule digits = new CharacterRule(EnglishCharacterData.Digit);
+
+ PasswordGenerator passwordGenerator = new PasswordGenerator();
+ String password = passwordGenerator.generatePassword(10, digits);
+
+ Assert.assertTrue(password.length() == 10);
+ Assert.assertTrue(containsOnlyCharactersFromSet(password, "0123456789"));
+ }
+
+ @Test
+ public void givenCustomizedRule_whenGenerating_thenGeneratedPasswordContainsCustomizedCharacters() {
+ CharacterRule specialCharacterRule = new CharacterRule(new CharacterData() {
+ @Override
+ public String getErrorCode() {
+ return "SAMPLE_ERROR_CODE";
+ }
+
+ @Override
+ public String getCharacters() {
+ return "ABCxyz123!@#";
+ }
+ });
+
+ PasswordGenerator passwordGenerator = new PasswordGenerator();
+ String password = passwordGenerator.generatePassword(10, specialCharacterRule);
+
+ Assert.assertTrue(containsOnlyCharactersFromSet(password, "ABCxyz123!@#"));
+ }
+
+ private boolean containsOnlyCharactersFromSet(String password, String setOfCharacters) {
+ return Stream.of(password.split(""))
+ .allMatch(it -> setOfCharacters.contains(it));
+ }
+
+}
diff --git a/libraries-security/src/test/java/com/baeldung/passay/PasswordValidatorUnitTest.java b/libraries-security/src/test/java/com/baeldung/passay/PasswordValidatorUnitTest.java
new file mode 100644
index 0000000000..3fc59a82d5
--- /dev/null
+++ b/libraries-security/src/test/java/com/baeldung/passay/PasswordValidatorUnitTest.java
@@ -0,0 +1,81 @@
+package com.baeldung.passay;
+
+import org.junit.Assert;
+import org.junit.Test;
+import org.passay.LengthRule;
+import org.passay.MessageResolver;
+import org.passay.PasswordData;
+import org.passay.PasswordValidator;
+import org.passay.PropertiesMessageResolver;
+import org.passay.RuleResult;
+import org.passay.RuleResultDetail;
+import org.passay.RuleResultMetadata;
+import org.passay.WhitespaceRule;
+
+import java.io.FileInputStream;
+import java.io.IOException;
+import java.net.URL;
+import java.util.Properties;
+
+import static org.junit.Assert.assertEquals;
+import static org.junit.Assert.assertFalse;
+
+public class PasswordValidatorUnitTest {
+
+ @Test
+ public void givenPasswordValidatorWithLengthRule_whenValidation_thenTooShortPassword() {
+ PasswordData passwordData = new PasswordData("1234");
+
+ PasswordValidator passwordValidator = new PasswordValidator(new LengthRule(5));
+
+ RuleResult validate = passwordValidator.validate(passwordData);
+ assertEquals(false, validate.isValid());
+
+ RuleResultDetail ruleResultDetail = validate.getDetails()
+ .get(0);
+ assertEquals("TOO_SHORT", ruleResultDetail.getErrorCode());
+ assertEquals(5, ruleResultDetail.getParameters()
+ .get("minimumLength"));
+ assertEquals(5, ruleResultDetail.getParameters()
+ .get("maximumLength"));
+
+ Integer lengthCount = validate.getMetadata()
+ .getCounts()
+ .get(RuleResultMetadata.CountCategory.Length);
+ assertEquals(Integer.valueOf(4), lengthCount);
+ }
+
+ @Test
+ public void givenPasswordValidatorWithLengthRule_whenValidation_thenTooLongPassword() {
+ PasswordData passwordData = new PasswordData("123456");
+
+ PasswordValidator passwordValidator = new PasswordValidator(new LengthRule(5));
+
+ RuleResult validate = passwordValidator.validate(passwordData);
+ assertFalse(validate.isValid());
+ Assert.assertEquals("TOO_LONG", validate.getDetails()
+ .get(0)
+ .getErrorCode());
+ }
+
+ @Test
+ public void givenPasswordValidatorWithLengthRule_whenValidation_thenCustomizedMeesagesAvailable() throws IOException {
+ URL resource = this.getClass()
+ .getClassLoader()
+ .getResource("messages.properties");
+ Properties props = new Properties();
+ props.load(new FileInputStream(resource.getPath()));
+
+ MessageResolver resolver = new PropertiesMessageResolver(props);
+ PasswordValidator validator = new PasswordValidator(resolver, new LengthRule(8, 16), new WhitespaceRule());
+
+ RuleResult tooShort = validator.validate(new PasswordData("XXXX"));
+ RuleResult tooLong = validator.validate(new PasswordData("ZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZ"));
+
+ assertEquals("Password must not contain less characters than 16.", validator.getMessages(tooShort)
+ .get(0));
+ assertEquals("Password must not have more characters than 16.", validator.getMessages(tooLong)
+ .get(0));
+ }
+
+}
diff --git a/libraries-security/src/test/java/com/baeldung/passay/PositiveMatchingRulesUnitTest.java b/libraries-security/src/test/java/com/baeldung/passay/PositiveMatchingRulesUnitTest.java
new file mode 100644
index 0000000000..0da1b43335
--- /dev/null
+++ b/libraries-security/src/test/java/com/baeldung/passay/PositiveMatchingRulesUnitTest.java
@@ -0,0 +1,76 @@
+package com.baeldung.passay;
+
+import org.junit.Test;
+import org.passay.AllowedCharacterRule;
+import org.passay.AllowedRegexRule;
+import org.passay.CharacterCharacteristicsRule;
+import org.passay.CharacterRule;
+import org.passay.EnglishCharacterData;
+import org.passay.LengthComplexityRule;
+import org.passay.LengthRule;
+import org.passay.PasswordData;
+import org.passay.PasswordValidator;
+import org.passay.RuleResult;
+
+import static org.junit.Assert.*;
+
+public class PositiveMatchingRulesUnitTest {
+
+ @Test
+ public void givenPasswordValidationRules_whenValidatingPassword_thenPosswordIsNotValidWithSeveralErrors() {
+ PasswordValidator passwordValidator = new PasswordValidator(new AllowedCharacterRule(new char[] { 'a', 'b', 'c' }), new AllowedRegexRule("\\d{2}\\w{10}"), new CharacterRule(EnglishCharacterData.LowerCase, 5), new LengthRule(8, 10));
+
+ RuleResult validate = passwordValidator.validate(new PasswordData("12abc"));
+
+ assertFalse(validate.isValid());
+ assertEquals("ALLOWED_CHAR:{illegalCharacter=1, matchBehavior=contains}", getDetail(validate, 0));
+ assertEquals("ALLOWED_CHAR:{illegalCharacter=2, matchBehavior=contains}", getDetail(validate, 1));
+ assertEquals("ALLOWED_MATCH:{pattern=\\d{2}\\w{10}}", getDetail(validate, 2));
+ assertEquals("INSUFFICIENT_LOWERCASE:{" + "minimumRequired=5, matchingCharacterCount=3, " + "validCharacters=abcdefghijklmnopqrstuvwxyz, " + "matchingCharacters=abc}", getDetail(validate, 3));
+ assertEquals("TOO_SHORT:{minimumLength=8, maximumLength=10}", getDetail(validate, 4));
+ }
+
+ @Test
+ public void givenRulesForDifferentPasswordLength_whenValidatingTwoDifferentPassword_thenBothOfThemAreInvalid() {
+ PasswordData shortPassword = new PasswordData("12ab");
+ PasswordData longPassword = new PasswordData("1234abcde");
+
+ LengthComplexityRule lengthComplexityRule = new LengthComplexityRule();
+ lengthComplexityRule.addRules("[1,5]", new CharacterRule(EnglishCharacterData.LowerCase, 5));
+ lengthComplexityRule.addRules("[6,10]", new AllowedCharacterRule(new char[] { 'a', 'b', 'c', 'd' }));
+
+ PasswordValidator passwordValidator = new PasswordValidator(lengthComplexityRule);
+
+ RuleResult validateShort = passwordValidator.validate(shortPassword);
+ RuleResult validateLong = passwordValidator.validate(longPassword);
+
+ assertFalse(validateShort.isValid());
+ assertFalse(validateLong.isValid());
+
+ assertEquals("INSUFFICIENT_LOWERCASE:{" + "minimumRequired=5, " + "matchingCharacterCount=2, " + "validCharacters=abcdefghijklmnopqrstuvwxyz, " + "matchingCharacters=ab}", getDetail(validateShort, 0));
+ assertEquals("ALLOWED_CHAR:{illegalCharacter=1, matchBehavior=contains}", getDetail(validateLong, 0));
+ }
+
+ @Test
+ public void givenCharacterCharacteristicsRule_whenValidatingPassword_thenItIsInvalidAsItBreaksToManyRules() {
+ PasswordData shortPassword = new PasswordData();
+ shortPassword.setPassword("12345abcde!");
+
+ CharacterCharacteristicsRule characterCharacteristicsRule = new CharacterCharacteristicsRule(4, new CharacterRule(EnglishCharacterData.LowerCase, 5), new CharacterRule(EnglishCharacterData.UpperCase, 5), new CharacterRule(EnglishCharacterData.Digit),
+ new CharacterRule(EnglishCharacterData.Special));
+
+ PasswordValidator passwordValidator = new PasswordValidator(characterCharacteristicsRule);
+
+ RuleResult validate = passwordValidator.validate(shortPassword);
+ assertFalse(validate.isValid());
+
+ assertEquals("INSUFFICIENT_UPPERCASE:{" + "minimumRequired=5, " + "matchingCharacterCount=0, " + "validCharacters=ABCDEFGHIJKLMNOPQRSTUVWXYZ, " + "matchingCharacters=}", getDetail(validate, 0));
+ assertEquals("INSUFFICIENT_CHARACTERISTICS:{" + "successCount=3, " + "minimumRequired=4, " + "ruleCount=4}", getDetail(validate, 1));
+ }
+
+ private String getDetail(RuleResult validate, int i) {
+ return validate.getDetails()
+ .get(i)
+ .toString();
+ }
+}
diff --git a/spring-cloud-data-flow/log-sink/src/test/java/org/baeldung/spring/cloud/LogSinkApplicationIntegrationTest.java b/libraries-security/src/test/java/com/baeldung/scribejava/ScribejavaUnitTest.java
similarity index 67%
rename from spring-cloud-data-flow/log-sink/src/test/java/org/baeldung/spring/cloud/LogSinkApplicationIntegrationTest.java
rename to libraries-security/src/test/java/com/baeldung/scribejava/ScribejavaUnitTest.java
index b362d72705..6565a5b085 100644
--- a/spring-cloud-data-flow/log-sink/src/test/java/org/baeldung/spring/cloud/LogSinkApplicationIntegrationTest.java
+++ b/libraries-security/src/test/java/com/baeldung/scribejava/ScribejavaUnitTest.java
@@ -1,4 +1,4 @@
-package org.baeldung.spring.cloud;
+package com.baeldung.scribejava;
import org.junit.Test;
import org.junit.runner.RunWith;
@@ -7,10 +7,11 @@ import org.springframework.test.context.junit4.SpringRunner;
@RunWith(SpringRunner.class)
@SpringBootTest
-public class LogSinkApplicationIntegrationTest {
+public class ScribejavaUnitTest {
@Test
- public void contextLoads() {
+ public void contextLoad(){
+
}
}
diff --git a/libraries-security/src/test/resources/messages.properties b/libraries-security/src/test/resources/messages.properties
new file mode 100644
index 0000000000..ad0039d71d
--- /dev/null
+++ b/libraries-security/src/test/resources/messages.properties
@@ -0,0 +1,2 @@
+TOO_LONG=Password must not have more characters than %2$s.
+TOO_SHORT=Password must not contain less characters than %2$s.
\ No newline at end of file
diff --git a/libraries/src/main/java/com/baeldung/kafka/TransactionalMessageProducer.java b/libraries/src/main/java/com/baeldung/kafka/TransactionalMessageProducer.java
new file mode 100644
index 0000000000..15488bbaf4
--- /dev/null
+++ b/libraries/src/main/java/com/baeldung/kafka/TransactionalMessageProducer.java
@@ -0,0 +1,56 @@
+package com.baeldung.kafka;
+
+import org.apache.kafka.clients.producer.KafkaProducer;
+import org.apache.kafka.clients.producer.ProducerRecord;
+import org.apache.kafka.common.KafkaException;
+
+import java.util.Properties;
+import java.util.stream.Stream;
+
+import static org.apache.kafka.clients.consumer.ConsumerConfig.BOOTSTRAP_SERVERS_CONFIG;
+import static org.apache.kafka.clients.producer.ProducerConfig.ENABLE_IDEMPOTENCE_CONFIG;
+import static org.apache.kafka.clients.producer.ProducerConfig.KEY_SERIALIZER_CLASS_CONFIG;
+import static org.apache.kafka.clients.producer.ProducerConfig.TRANSACTIONAL_ID_CONFIG;
+import static org.apache.kafka.clients.producer.ProducerConfig.VALUE_SERIALIZER_CLASS_CONFIG;
+
+public class TransactionalMessageProducer {
+
+ private static final String DATA_MESSAGE_1 = "Put any space separated data here for count";
+ private static final String DATA_MESSAGE_2 = "Output will contain count of every word in the message";
+
+ public static void main(String[] args) {
+
+ KafkaProducer producer = createKafkaProducer();
+
+ producer.initTransactions();
+
+ try{
+
+ producer.beginTransaction();
+
+ Stream.of(DATA_MESSAGE_1, DATA_MESSAGE_2).forEach(s -> producer.send(
+ new ProducerRecord("input", null, s)));
+
+ producer.commitTransaction();
+
+ }catch (KafkaException e){
+
+ producer.abortTransaction();
+
+ }
+
+ }
+
+ private static KafkaProducer createKafkaProducer() {
+
+ Properties props = new Properties();
+ props.put(BOOTSTRAP_SERVERS_CONFIG, "localhost:9092");
+ props.put(ENABLE_IDEMPOTENCE_CONFIG, "true");
+ props.put(TRANSACTIONAL_ID_CONFIG, "prod-0");
+ props.put(KEY_SERIALIZER_CLASS_CONFIG, "org.apache.kafka.common.serialization.StringSerializer");
+ props.put(VALUE_SERIALIZER_CLASS_CONFIG, "org.apache.kafka.common.serialization.StringSerializer");
+
+ return new KafkaProducer(props);
+
+ }
+}
diff --git a/libraries/src/main/java/com/baeldung/kafka/TransactionalApp.java b/libraries/src/main/java/com/baeldung/kafka/TransactionalWordCount.java
similarity index 66%
rename from libraries/src/main/java/com/baeldung/kafka/TransactionalApp.java
rename to libraries/src/main/java/com/baeldung/kafka/TransactionalWordCount.java
index 1e95041a0d..0563ba6684 100644
--- a/libraries/src/main/java/com/baeldung/kafka/TransactionalApp.java
+++ b/libraries/src/main/java/com/baeldung/kafka/TransactionalWordCount.java
@@ -14,6 +14,8 @@ import java.util.HashMap;
import java.util.List;
import java.util.Map;
import java.util.Properties;
+import java.util.stream.Collectors;
+import java.util.stream.Stream;
import static java.time.Duration.ofSeconds;
import static java.util.Collections.singleton;
@@ -21,16 +23,16 @@ import static org.apache.kafka.clients.consumer.ConsumerConfig.*;
import static org.apache.kafka.clients.consumer.ConsumerConfig.BOOTSTRAP_SERVERS_CONFIG;
import static org.apache.kafka.clients.producer.ProducerConfig.*;
-public class TransactionalApp {
+public class TransactionalWordCount {
- private static final String CONSUMER_GROUP_ID = "test";
+ private static final String CONSUMER_GROUP_ID = "my-group-id";
private static final String OUTPUT_TOPIC = "output";
private static final String INPUT_TOPIC = "input";
public static void main(String[] args) {
- KafkaConsumer consumer = initConsumer();
- KafkaProducer producer = initProducer();
+ KafkaConsumer consumer = createKafkaConsumer();
+ KafkaProducer producer = createKafkaProducer();
producer.initTransactions();
@@ -38,12 +40,17 @@ public class TransactionalApp {
while (true) {
- ConsumerRecords records = consumer.poll(ofSeconds(20));
+ ConsumerRecords records = consumer.poll(ofSeconds(60));
+
+ Map wordCountMap = records.records(new TopicPartition(INPUT_TOPIC, 0))
+ .stream()
+ .flatMap(record -> Stream.of(record.value().split(" ")))
+ .map(word -> Tuple.of(word, 1))
+ .collect(Collectors.toMap(tuple -> tuple.getKey(), t1 -> t1.getValue(), (v1, v2) -> v1 + v2));
producer.beginTransaction();
- for (ConsumerRecord record : records)
- producer.send(new ProducerRecord(OUTPUT_TOPIC, record));
+ wordCountMap.forEach((key, value) -> producer.send(new ProducerRecord(OUTPUT_TOPIC, key, value.toString())));
Map offsetsToCommit = new HashMap<>();
@@ -51,7 +58,7 @@ public class TransactionalApp {
List> partitionedRecords = records.records(partition);
long offset = partitionedRecords.get(partitionedRecords.size() - 1).offset();
- offsetsToCommit.put(partition, new OffsetAndMetadata(offset));
+ offsetsToCommit.put(partition, new OffsetAndMetadata(offset + 1));
}
producer.sendOffsetsToTransaction(offsetsToCommit, CONSUMER_GROUP_ID);
@@ -68,11 +75,12 @@ public class TransactionalApp {
}
- private static KafkaConsumer initConsumer() {
+ private static KafkaConsumer createKafkaConsumer() {
Properties props = new Properties();
props.put(BOOTSTRAP_SERVERS_CONFIG, "localhost:9092");
props.put(GROUP_ID_CONFIG, CONSUMER_GROUP_ID);
props.put(ENABLE_AUTO_COMMIT_CONFIG, "false");
+ props.put(ISOLATION_LEVEL_CONFIG, "read_committed");
props.put(KEY_DESERIALIZER_CLASS_CONFIG, "org.apache.kafka.common.serialization.StringDeserializer");
props.put(VALUE_DESERIALIZER_CLASS_CONFIG, "org.apache.kafka.common.serialization.StringDeserializer");
@@ -81,19 +89,14 @@ public class TransactionalApp {
return consumer;
}
- private static KafkaProducer initProducer() {
+ private static KafkaProducer createKafkaProducer() {
Properties props = new Properties();
- props.put(ProducerConfig.BOOTSTRAP_SERVERS_CONFIG, "localhost:9092");
- props.put(ACKS_CONFIG, "all");
- props.put(RETRIES_CONFIG, 3);
- props.put(BATCH_SIZE_CONFIG, 16384);
- props.put(LINGER_MS_CONFIG, 1);
- props.put(BUFFER_MEMORY_CONFIG, 33554432);
+ props.put(BOOTSTRAP_SERVERS_CONFIG, "localhost:9092");
props.put(ENABLE_IDEMPOTENCE_CONFIG, "true");
props.put(TRANSACTIONAL_ID_CONFIG, "prod-1");
- props.put(ProducerConfig.KEY_SERIALIZER_CLASS_CONFIG, "org.apache.kafka.common.serialization.StringSerializer");
- props.put(ProducerConfig.VALUE_SERIALIZER_CLASS_CONFIG, "org.apache.kafka.common.serialization.StringSerializer");
+ props.put(KEY_SERIALIZER_CLASS_CONFIG, "org.apache.kafka.common.serialization.StringSerializer");
+ props.put(VALUE_SERIALIZER_CLASS_CONFIG, "org.apache.kafka.common.serialization.StringSerializer");
return new KafkaProducer(props);
diff --git a/libraries/src/main/java/com/baeldung/kafka/Tuple.java b/libraries/src/main/java/com/baeldung/kafka/Tuple.java
new file mode 100644
index 0000000000..883de4ba21
--- /dev/null
+++ b/libraries/src/main/java/com/baeldung/kafka/Tuple.java
@@ -0,0 +1,24 @@
+package com.baeldung.kafka;
+
+public class Tuple {
+
+ private String key;
+ private Integer value;
+
+ private Tuple(String key, Integer value) {
+ this.key = key;
+ this.value = value;
+ }
+
+ public static Tuple of(String key, Integer value){
+ return new Tuple(key,value);
+ }
+
+ public String getKey() {
+ return key;
+ }
+
+ public Integer getValue() {
+ return value;
+ }
+}
diff --git a/lombok/README.md b/lombok/README.md
index 1a787e32c7..d12c14416d 100644
--- a/lombok/README.md
+++ b/lombok/README.md
@@ -1,3 +1,5 @@
## Relevant Articles:
- [Introduction to Project Lombok](http://www.baeldung.com/intro-to-project-lombok)
- [Using Lombok’s @Builder Annotation](http://www.baeldung.com/lombok-builder)
+- [Using Lombok’s @Getter for Boolean Fields](https://www.baeldung.com/lombok-getter-boolean)
+- [Lombok @Builder with Inheritance](https://www.baeldung.com/lombok-builder-inheritance)
diff --git a/mustache/pom.xml b/mustache/pom.xml
index d385246182..a276dfbf43 100644
--- a/mustache/pom.xml
+++ b/mustache/pom.xml
@@ -3,7 +3,6 @@
4.0.0
mustache
- 0.0.1-SNAPSHOT
jar
mustache
@@ -24,10 +23,8 @@
org.assertj
assertj-core
- ${assertj.version}
-
log4j
log4j
@@ -55,13 +52,6 @@
${datafactory.version}
-
- junit
- junit
- ${junit.version}
- test
-
-
@@ -73,90 +63,13 @@
-
-
- integration
-
-
-
- org.apache.maven.plugins
- maven-surefire-plugin
-
-
- integration-test
-
- test
-
-
-
- **/*LiveTest.java
- **/AutoconfigurationTest.java
-
-
- **/*IntegrationTest.java
- **/*IntTest.java
-
-
-
-
-
-
- json
-
-
-
-
-
-
-
- autoconfiguration
-
-
-
- org.apache.maven.plugins
- maven-surefire-plugin
-
-
- integration-test
-
- test
-
-
-
- **/*LiveTest.java
- **/*IntegrationTest.java
- **/*IntTest.java
-
-
- **/AutoconfigurationTest.java
-
-
-
-
-
-
- json
-
-
-
-
-
-
-
-
0.9.2
- 3.7.0
1.2.16
- 4.12
- UTF-8
- 3.7.0
- 2.21.0
0.8
3.3.7
- 1.8
\ No newline at end of file
diff --git a/optaplanner/README.md b/optaplanner/README.md
index d793be1f2a..1568a615c0 100644
--- a/optaplanner/README.md
+++ b/optaplanner/README.md
@@ -1,3 +1,3 @@
### Relevant articles
-- [Guide to OptaPlanner](https://www.baeldung.com/opta-planner)
+- [A Guide to OptaPlanner](https://www.baeldung.com/opta-planner)
diff --git a/persistence-modules/spring-data-cassandra/src/test/java/org/baeldung/SpringContextIntegrationTest.java b/persistence-modules/spring-data-cassandra/src/test/java/org/baeldung/SpringContextIntegrationTest.java
new file mode 100644
index 0000000000..46ee3cd368
--- /dev/null
+++ b/persistence-modules/spring-data-cassandra/src/test/java/org/baeldung/SpringContextIntegrationTest.java
@@ -0,0 +1,67 @@
+package org.baeldung;
+
+import java.io.IOException;
+import java.util.HashMap;
+
+import org.apache.cassandra.exceptions.ConfigurationException;
+import org.apache.thrift.transport.TTransportException;
+import org.baeldung.spring.data.cassandra.config.CassandraConfig;
+import org.baeldung.spring.data.cassandra.model.Book;
+import org.cassandraunit.utils.EmbeddedCassandraServerHelper;
+import org.junit.After;
+import org.junit.AfterClass;
+import org.junit.Before;
+import org.junit.BeforeClass;
+import org.junit.Test;
+import org.junit.runner.RunWith;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.cassandra.core.cql.CqlIdentifier;
+import org.springframework.data.cassandra.core.CassandraAdminOperations;
+import org.springframework.test.context.ContextConfiguration;
+import org.springframework.test.context.junit4.SpringJUnit4ClassRunner;
+
+import com.datastax.driver.core.Cluster;
+import com.datastax.driver.core.Session;
+
+@RunWith(SpringJUnit4ClassRunner.class)
+@ContextConfiguration(classes = CassandraConfig.class)
+public class SpringContextIntegrationTest {
+
+ public static final String KEYSPACE_CREATION_QUERY = "CREATE KEYSPACE IF NOT EXISTS testKeySpace " + "WITH replication = { 'class': 'SimpleStrategy', 'replication_factor': '3' };";
+
+ public static final String KEYSPACE_ACTIVATE_QUERY = "USE testKeySpace;";
+
+ public static final String DATA_TABLE_NAME = "book";
+
+ @Autowired
+ private CassandraAdminOperations adminTemplate;
+
+ @BeforeClass
+ public static void startCassandraEmbedded() throws InterruptedException, TTransportException, ConfigurationException, IOException {
+ EmbeddedCassandraServerHelper.startEmbeddedCassandra();
+ final Cluster cluster = Cluster.builder().addContactPoints("127.0.0.1").withPort(9142).build();
+ final Session session = cluster.connect();
+ session.execute(KEYSPACE_CREATION_QUERY);
+ session.execute(KEYSPACE_ACTIVATE_QUERY);
+ Thread.sleep(5000);
+ }
+
+ @Before
+ public void createTable() throws InterruptedException, TTransportException, ConfigurationException, IOException {
+ adminTemplate.createTable(true, CqlIdentifier.cqlId(DATA_TABLE_NAME), Book.class, new HashMap());
+ }
+
+ @Test
+ public void whenSpringContextIsBootstrapped_thenNoExceptions() {
+ }
+
+ @After
+ public void dropTable() {
+ adminTemplate.dropTable(CqlIdentifier.cqlId(DATA_TABLE_NAME));
+ }
+
+ @AfterClass
+ public static void stopCassandraEmbedded() {
+ EmbeddedCassandraServerHelper.cleanEmbeddedCassandra();
+ }
+}
diff --git a/persistence-modules/spring-data-dynamodb/src/test/java/org/baeldung/SpringContextIntegrationTest.java b/persistence-modules/spring-data-dynamodb/src/test/java/org/baeldung/SpringContextIntegrationTest.java
new file mode 100644
index 0000000000..7f906bdbcd
--- /dev/null
+++ b/persistence-modules/spring-data-dynamodb/src/test/java/org/baeldung/SpringContextIntegrationTest.java
@@ -0,0 +1,17 @@
+package org.baeldung;
+
+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.Application;
+
+@RunWith(SpringRunner.class)
+@SpringBootTest(classes = Application.class)
+public class SpringContextIntegrationTest {
+
+ @Test
+ public void whenSpringContextIsBootstrapped_thenNoExceptions() {
+ }
+}
diff --git a/persistence-modules/spring-data-eclipselink/src/test/java/org/baeldung/SpringContextIntegrationTest.java b/persistence-modules/spring-data-eclipselink/src/test/java/org/baeldung/SpringContextIntegrationTest.java
new file mode 100644
index 0000000000..4be5891e3e
--- /dev/null
+++ b/persistence-modules/spring-data-eclipselink/src/test/java/org/baeldung/SpringContextIntegrationTest.java
@@ -0,0 +1,17 @@
+package org.baeldung;
+
+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.eclipselink.springdata.EclipselinkSpringDataApplication;
+
+@RunWith(SpringRunner.class)
+@SpringBootTest(classes = EclipselinkSpringDataApplication.class)
+public class SpringContextIntegrationTest {
+
+ @Test
+ public void whenSpringContextIsBootstrapped_thenNoExceptions() {
+ }
+}
diff --git a/persistence-modules/spring-data-gemfire/src/test/java/org/baeldung/SpringContextIntegrationTest.java b/persistence-modules/spring-data-gemfire/src/test/java/org/baeldung/SpringContextIntegrationTest.java
new file mode 100644
index 0000000000..2f0557ccc1
--- /dev/null
+++ b/persistence-modules/spring-data-gemfire/src/test/java/org/baeldung/SpringContextIntegrationTest.java
@@ -0,0 +1,18 @@
+package org.baeldung;
+
+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.support.AnnotationConfigContextLoader;
+
+import com.baeldung.spring.data.gemfire.function.GemfireConfiguration;
+
+@RunWith(SpringJUnit4ClassRunner.class)
+@ContextConfiguration(classes=GemfireConfiguration.class, loader=AnnotationConfigContextLoader.class)
+public class SpringContextIntegrationTest {
+
+ @Test
+ public void whenSpringContextIsBootstrapped_thenNoExceptions() {
+ }
+}
diff --git a/persistence-modules/spring-data-neo4j/src/test/java/org/baeldung/SpringContextIntegrationTest.java b/persistence-modules/spring-data-neo4j/src/test/java/org/baeldung/SpringContextIntegrationTest.java
new file mode 100644
index 0000000000..ea32ed324b
--- /dev/null
+++ b/persistence-modules/spring-data-neo4j/src/test/java/org/baeldung/SpringContextIntegrationTest.java
@@ -0,0 +1,19 @@
+package org.baeldung;
+
+import org.junit.Test;
+import org.junit.runner.RunWith;
+import org.springframework.test.context.ActiveProfiles;
+import org.springframework.test.context.ContextConfiguration;
+import org.springframework.test.context.junit4.SpringJUnit4ClassRunner;
+
+import com.baeldung.spring.data.neo4j.config.MovieDatabaseNeo4jTestConfiguration;
+
+@RunWith(SpringJUnit4ClassRunner.class)
+@ContextConfiguration(classes = MovieDatabaseNeo4jTestConfiguration.class)
+@ActiveProfiles(profiles = "test")
+public class SpringContextIntegrationTest {
+
+ @Test
+ public void whenSpringContextIsBootstrapped_thenNoExceptions() {
+ }
+}
diff --git a/persistence-modules/spring-data-redis/src/test/java/org/baeldung/SpringContextIntegrationTest.java b/persistence-modules/spring-data-redis/src/test/java/org/baeldung/SpringContextIntegrationTest.java
new file mode 100644
index 0000000000..e093892365
--- /dev/null
+++ b/persistence-modules/spring-data-redis/src/test/java/org/baeldung/SpringContextIntegrationTest.java
@@ -0,0 +1,17 @@
+package org.baeldung;
+
+import org.junit.Test;
+import org.junit.runner.RunWith;
+import org.springframework.test.context.ContextConfiguration;
+import org.springframework.test.context.junit4.SpringJUnit4ClassRunner;
+
+import com.baeldung.spring.data.redis.config.RedisConfig;
+
+@RunWith(SpringJUnit4ClassRunner.class)
+@ContextConfiguration(classes = RedisConfig.class)
+public class SpringContextIntegrationTest {
+
+ @Test
+ public void whenSpringContextIsBootstrapped_thenNoExceptions() {
+ }
+}
diff --git a/persistence-modules/spring-data-solr/src/test/java/org/baeldung/SpringContextIntegrationTest.java b/persistence-modules/spring-data-solr/src/test/java/org/baeldung/SpringContextIntegrationTest.java
new file mode 100644
index 0000000000..e76967ae8a
--- /dev/null
+++ b/persistence-modules/spring-data-solr/src/test/java/org/baeldung/SpringContextIntegrationTest.java
@@ -0,0 +1,17 @@
+package org.baeldung;
+
+import org.junit.Test;
+import org.junit.runner.RunWith;
+import org.springframework.test.context.ContextConfiguration;
+import org.springframework.test.context.junit4.SpringJUnit4ClassRunner;
+
+import com.baeldung.spring.data.solr.config.SolrConfig;
+
+@RunWith(SpringJUnit4ClassRunner.class)
+@ContextConfiguration(classes = SolrConfig.class)
+public class SpringContextIntegrationTest {
+
+ @Test
+ public void whenSpringContextIsBootstrapped_thenNoExceptions() {
+ }
+}
diff --git a/persistence-modules/spring-hibernate-3/src/test/java/org/baeldung/SpringContextIntegrationTest.java b/persistence-modules/spring-hibernate-3/src/test/java/org/baeldung/SpringContextIntegrationTest.java
new file mode 100644
index 0000000000..a81a4eedb1
--- /dev/null
+++ b/persistence-modules/spring-hibernate-3/src/test/java/org/baeldung/SpringContextIntegrationTest.java
@@ -0,0 +1,17 @@
+package org.baeldung;
+
+import org.baeldung.spring.PersistenceConfig;
+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.support.AnnotationConfigContextLoader;
+
+@RunWith(SpringJUnit4ClassRunner.class)
+@ContextConfiguration(classes = { PersistenceConfig.class }, loader = AnnotationConfigContextLoader.class)
+public class SpringContextIntegrationTest {
+
+ @Test
+ public void whenSpringContextIsBootstrapped_thenNoExceptions() {
+ }
+}
diff --git a/persistence-modules/spring-hibernate-5/src/test/java/org/baeldung/SpringContextIntegrationTest.java b/persistence-modules/spring-hibernate-5/src/test/java/org/baeldung/SpringContextIntegrationTest.java
new file mode 100644
index 0000000000..af4618d0f3
--- /dev/null
+++ b/persistence-modules/spring-hibernate-5/src/test/java/org/baeldung/SpringContextIntegrationTest.java
@@ -0,0 +1,18 @@
+package org.baeldung;
+
+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.support.AnnotationConfigContextLoader;
+
+import com.baeldung.spring.PersistenceConfig;
+
+@RunWith(SpringJUnit4ClassRunner.class)
+@ContextConfiguration(classes = { PersistenceConfig.class }, loader = AnnotationConfigContextLoader.class)
+public class SpringContextIntegrationTest {
+
+ @Test
+ public void whenSpringContextIsBootstrapped_thenNoExceptions() {
+ }
+}
diff --git a/pom.xml b/pom.xml
index 66293fe31b..ef34881cef 100644
--- a/pom.xml
+++ b/pom.xml
@@ -290,7 +290,7 @@
- default
+ default-first
@@ -332,6 +332,7 @@
annotations
apache-cxf
apache-fop
+ apache-geode
apache-poi
apache-tika
apache-thrift
@@ -398,7 +399,7 @@
javafx
jgroups
jee-7
- jhipster/jhipster-monolithic
+ jhipster
jjwt
jsf
json-path
@@ -408,6 +409,7 @@
libraries
libraries-data
+ libraries-security
libraries-server
linkrest
logging-modules/log-mdc
@@ -470,10 +472,11 @@
spring-boot-persistence
spring-boot-security
spring-boot-mvc
- spring-boot-vue
+ spring-boot-vue
spring-boot-logging-log4j2
spring-cloud-data-flow
spring-cloud
+ spring-cloud-bus
spring-core
spring-cucumber
spring-ejb
@@ -520,9 +523,9 @@
spring-rest-angular
spring-rest-full
spring-rest-query-language
- spring-rest
+
+
spring-resttemplate
- spring-rest-simple
spring-security-acl
spring-security-cache-control
spring-security-client/spring-security-jsp-authentication
@@ -560,124 +563,318 @@
spring-reactor
spring-vertx
spring-jinq
- spring-rest-embedded-tomcat
- testing-modules/testing
- testing-modules/testng
- video-tutorials
- xml
- xmlunit-2
- struts-2
- apache-velocity
- apache-solrj
- rabbitmq
- vertx
- persistence-modules/spring-data-gemfire
- mybatis
- spring-drools
- drools
- persistence-modules/liquibase
- spring-boot-property-exp
- testing-modules/mockserver
- testing-modules/test-containers
- undertow
- vaadin
- vertx-and-rxjava
- saas
- deeplearning4j
- lucene
- vraptor
- persistence-modules/java-cockroachdb
- spring-security-thymeleaf
- persistence-modules/java-jdbi
- jersey
- java-spi
- performance-tests
- twilio
- spring-boot-ctx-fluent
- java-ee-8-security-api
- spring-webflux-amqp
- antlr
- maven-archetype
- optaplanner
- apache-meecrowave
- spring-reactive-kotlin
- jnosql
- spring-boot-angular-ecommerce
- jta
-
- java-websocket
-
-
-
- apache-bval
- apache-shiro
- apache-spark
-
- checker-plugin
-
-
- core-java-sun
- custom-pmd
- dagger
- data-structures
- dubbo
-
-
-
-
- jni
- jooby
-
-
-
- ratpack
-
- spring-boot-autoconfiguration
+
+
+
+
+
+ default-second
+
+
+
+
+ org.apache.maven.plugins
+ maven-surefire-plugin
+ ${maven-surefire-plugin.version}
+
+ 3
+ true
+
+ **/*IntegrationTest.java
+ **/*IntTest.java
+ **/*LongRunningUnitTest.java
+ **/*ManualTest.java
+ **/JdbcTest.java
+ **/*LiveTest.java
+
+
+
+
+
+
+
+
+ parent-boot-1
+ parent-boot-2
+ parent-spring-4
+ parent-spring-5
+ parent-java
+ parent-kotlin
+
+ spring-rest-embedded-tomcat
+ testing-modules/testing
+ testing-modules/testng
+ video-tutorials
+ xml
+ xmlunit-2
+ struts-2
+ apache-velocity
+ apache-solrj
+ rabbitmq
+ vertx
+ persistence-modules/spring-data-gemfire
+ mybatis
+ spring-drools
+ drools
+ persistence-modules/liquibase
+ spring-boot-property-exp
+ testing-modules/mockserver
+ testing-modules/test-containers
+ undertow
+ vaadin
+ vertx-and-rxjava
+ saas
+ deeplearning4j
+ lucene
+ vraptor
+ persistence-modules/java-cockroachdb
+ spring-security-thymeleaf
+ persistence-modules/java-jdbi
+ jersey
+ java-spi
+ performance-tests
+ twilio
+ spring-boot-ctx-fluent
+ java-ee-8-security-api
+ spring-webflux-amqp
+ antlr
+ maven-archetype
+ optaplanner
+ apache-meecrowave
+ spring-reactive-kotlin
+ jnosql
+ spring-boot-angular-ecommerce
+ cdi-portable-extension
+ jta
+
+ java-websocket
+ activejdbc
+ animal-sniffer-mvn-plugin
+ apache-avro
+ apache-bval
+ apache-shiro
+ apache-spark
+ asciidoctor
+ checker-plugin
+
+
+ core-java-sun
+ custom-pmd
+ dagger
+ data-structures
+ dubbo
+ flyway
+
+ java-difference-date
+
+ jni
+ jooby
+
+
+
+ ratpack
+ rest-with-spark-java
+ spring-boot-autoconfiguration
+ spring-boot-custom-starter
+ spring-boot-jasypt
+ spring-custom-aop
+ spring-data-rest-querydsl
+ spring-groovy
+ spring-mobile
+ spring-mustache
+ spring-mvc-simple
+ spring-mybatis
+ spring-rest-hal-browser
+ spring-rest-shell
+ spring-rest-template
+ spring-roo
+ spring-security-stormpath
+ sse-jaxrs
+ static-analysis
+ stripe
+
+ Twitter4J
+ wicket
+ xstream
+ cas/cas-secured-app
+ cas/cas-server
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ spring-boot-custom-starter/greeter
+ spring-boot-h2/spring-boot-h2-database
+
+
+
+
+ flyway-cdi-extension
+
+
+
+
+
+ spring-context
+
+
+
+
+ org.apache.maven.plugins
+ maven-surefire-plugin
+ ${maven-surefire-plugin.version}
+
+ 3
+ true
+
+ **/*SpringContextIntegrationTest.java
+
+
+
+
+
+
+
+
+ spring-5
+ spring-5-data-reactive
+ spring-5-reactive
+ spring-5-reactive-client
+ spring-5-reactive-security
+ spring-5-security
+ spring-activiti
+ spring-akka
+ spring-all
+ spring-aop
+ spring-apache-camel
+ spring-batch
+ spring-bom
+ spring-boot-admin/spring-boot-admin-client
+ spring-boot-admin/spring-boot-admin-server
+ spring-boot-bootstrap
+ spring-boot-bootstrap
+ spring-boot-camel
+ spring-boot-client
spring-boot-custom-starter
-
-
- spring-data-rest-querydsl
-
- spring-mobile
-
- spring-mvc-simple
-
- spring-rest-hal-browser
- spring-rest-shell
- spring-rest-template
- spring-roo
- spring-security-stormpath
- sse-jaxrs
-
- stripe
-
-
- wicket
- xstream
- cas/cas-secured-app
-
-
-
-
-
-
-
-
-
-
-
-
-
- jenkins/hello-world
-
-
-
- spring-boot-custom-starter/greeter
+ greeter-spring-boot-autoconfigure
+ greeter-spring-boot-sample-app
spring-boot-h2/spring-boot-h2-database
- spring-boot-h2/spring-boot-h2-remote-app
-
-
-
+ spring-boot-jasypt
+ spring-boot-keycloak
+ spring-boot-mvc
+ spring-boot-property-exp/property-exp-custom-config
+ spring-boot-property-exp/property-exp-default-config
+ spring-boot-vue
+ spring-cloud
+ spring-cloud/spring-cloud-archaius/basic-config
+ spring-cloud/spring-cloud-archaius/extra-configs
+ spring-cloud/spring-cloud-bootstrap/config
+ spring-cloud/spring-cloud-contract/spring-cloud-contract-consumer
+ spring-cloud/spring-cloud-contract/spring-cloud-contract-producer
+ spring-cloud/spring-cloud-gateway
+ spring-cloud/spring-cloud-kubernetes/demo-backend
+ spring-cloud/spring-cloud-rest/spring-cloud-rest-config-server
+ spring-cloud/spring-cloud-ribbon-client
+ spring-cloud/spring-cloud-security/auth-client
+ spring-cloud/spring-cloud-security/auth-resource
+ spring-cloud/spring-cloud-security/auth-server
+ spring-cloud/spring-cloud-stream/spring-cloud-stream-rabbit
+ spring-cloud/spring-cloud-task/springcloudtasksink
+ spring-cloud/spring-cloud-zookeeper
+ spring-cloud/spring-cloud-bus/spring-cloud-config-server
+ spring-cloud/spring-cloud-data-flow/log-sink
+ spring-cloud/spring-cloud-data-flow/time-processor
+ spring-cloud/spring-cloud-data-flow/time-source
+ spring-cucumber
+ spring-data-keyvalue
+ spring-data-rest
+ spring-dispatcher-servlet
+ spring-drools
+ spring-freemarker
+ spring-hibernate-3
+ spring-hibernate4
+ spring-integration
+ spring-jenkins-pipeline
+ spring-jersey
+ spring-jinq
+ spring-jms
+ spring-kafka
+ spring-katharsis
+ spring-ldap
+ spring-mobile
+ spring-mockito
+ spring-mvc-forms-thymeleaf
+ spring-mvc-java
+ spring-mvc-velocity
+ spring-mvc-webflow
+ spring-protobuf
+ spring-quartz
+ remoting-hessian-burlap/spring-remoting-hessian-burlap-client
+ remoting-hessian-burlap/remoting-hessian-burlap-server
+ spring-reactor
+ spring-remoting/
+ spring-remoting/remoting-http/remoting-http-server
+ spring-remoting/remoting-jms/remoting-jms-client
+ spring-remoting/remoting-rmi/remoting-rmi-server
+ spring-rest
+ spring-rest-angular
+ spring-rest-embedded-tomcat
+ spring-rest-full
+ spring-rest-simple
+ spring-resttemplate
+ spring-security-acl
+ spring-security-angular
+ spring-security-cache-control
+ spring-security-client/spring-security-jsp-authentication
+ spring-security-client/spring-security-jsp-authorize
+ spring-security-client/spring-security-jsp-config
+ spring-security-client/spring-security-mvc
+ spring-security-client/spring-security-thymeleaf-authentication
+ spring-security-client/spring-security-thymeleaf-authorize
+ spring-security-client/spring-security-thymeleaf-config
+ spring-security-core
+ spring-security-mvc-boot
+ spring-security-mvc-custom
+ spring-security-mvc-digest-auth
+ spring-security-mvc-ldap
+ spring-security-mvc-persisted-remember-me
+ spring-security-mvc-session
+ spring-security-mvc-socket
+ spring-security-rest
+ spring-security-sso/spring-security-sso-auth-server
+ spring-security-sso/spring-security-sso-ui
+ spring-security-sso/spring-security-sso-ui-2
+ spring-security-thymeleaf/spring-security-thymeleaf-authentication
+ spring-security-thymeleaf/spring-security-thymeleaf-authorize
+ spring-security-thymeleaf/spring-security-thymeleaf-config
+ spring-security-x509/spring-security-x509-basic-auth
+ spring-security-x509/spring-security-x509-client-auth
+ spring-session/spring-session-jdbc
+ spring-sleuth
+ spring-social-login
+ spring-spel
+ spring-state-machine
+ spring-swagger-codegen/spring-swagger-codegen-app
+ spring-thymeleaf
+ spring-userservice
+ spring-vault
+ spring-vertx
+ spring-zuul/spring-zuul-foos-resource
+ persistence-modules/spring-data-dynamodb
+ persistence-modules/spring-data-eclipselink
+ persistence-modules/spring-data-solr
+ persistence-modules/spring-hibernate-5
@@ -821,6 +1018,7 @@
spring-boot-logging-log4j2
spring-cloud-data-flow
spring-cloud
+ spring-cloud-bus
spring-core
spring-cucumber
spring-ejb
@@ -875,7 +1073,7 @@
spring-rest
spring-resttemplate
spring-rest-simple
- spring-reactive-kotlin
+ spring-reactive-kotlin
@@ -923,13 +1121,13 @@
java-websocket
-
-
-
+ activejdbc
+ animal-sniffer-mvn-plugin
+ apache-avro
apache-bval
apache-shiro
apache-spark
-
+ asciidoctor
checker-plugin
@@ -938,9 +1136,9 @@
dagger
data-structures
dubbo
-
+ flyway
-
+ java-difference-date
jni
jooby
@@ -948,24 +1146,24 @@
ratpack
-
+ rest-with-spark-java
spring-boot-autoconfiguration
spring-boot-custom-starter
-
-
+ spring-boot-jasypt
+ spring-custom-aop
spring-data-rest-querydsl
-
+ spring-groovy
spring-mobile
-
+ spring-mustache
spring-mvc-simple
-
+ spring-mybatis
spring-rest-hal-browser
spring-rest-shell
spring-rest-template
spring-roo
spring-security-stormpath
sse-jaxrs
-
+ static-analysis
stripe
@@ -976,13 +1174,13 @@
-
-
+
+
-
-
+
+
jenkins/hello-world
@@ -991,9 +1189,9 @@
spring-boot-custom-starter/greeter
spring-boot-h2/spring-boot-h2-database
- spring-boot-h2/spring-boot-h2-remote-app
+
-
+
@@ -1175,6 +1373,7 @@
spring-boot-logging-log4j2
spring-cloud-data-flow
spring-cloud
+ spring-cloud-bus
spring-core
spring-cucumber
spring-ejb
@@ -1288,7 +1487,6 @@
spring-security-thymeleaf
persistence-modules/java-jdbi
jersey
- jersey-client-rx
java-spi
performance-tests
twilio
@@ -1382,7 +1580,7 @@
parent-kotlin
libraries
geotools
- jhipster/jhipster-monolithic
+ jhipster
testing-modules/gatling
spring-boot
spring-boot-ops
diff --git a/ratpack/README.md b/ratpack/README.md
index 02b91da0bd..dded42fab6 100644
--- a/ratpack/README.md
+++ b/ratpack/README.md
@@ -4,4 +4,4 @@
- [Ratpack Google Guice Integration](http://www.baeldung.com/ratpack-google-guice)
- [Ratpack Integration with Spring Boot](http://www.baeldung.com/ratpack-spring-boot)
- [Ratpack with Hystrix](http://www.baeldung.com/ratpack-hystrix)
-
+- [Ratpack HTTP Client](https://www.baeldung.com/ratpack-http-client)
diff --git a/rest-with-spark-java/src/test/java/com/baeldung/AppTest.java b/rest-with-spark-java/src/test/java/com/baeldung/AppLiveTest.java
similarity index 96%
rename from rest-with-spark-java/src/test/java/com/baeldung/AppTest.java
rename to rest-with-spark-java/src/test/java/com/baeldung/AppLiveTest.java
index c7b88dd6d1..9e24879767 100644
--- a/rest-with-spark-java/src/test/java/com/baeldung/AppTest.java
+++ b/rest-with-spark-java/src/test/java/com/baeldung/AppLiveTest.java
@@ -16,16 +16,16 @@ import junit.framework.Test;
import junit.framework.TestCase;
import junit.framework.TestSuite;
-public class AppTest extends TestCase {
+public class AppLiveTest extends TestCase {
ObjectMapper mapper = new ObjectMapper();
- public AppTest( String testName ) {
+ public AppLiveTest( String testName ) {
super( testName );
}
public static Test suite() {
- return new TestSuite( AppTest.class );
+ return new TestSuite( AppLiveTest.class );
}
public void testApp() throws IOException, ClassNotFoundException {
diff --git a/rxjava-2/README.md b/rxjava-2/README.md
index ccf575757f..78eb6e6428 100644
--- a/rxjava-2/README.md
+++ b/rxjava-2/README.md
@@ -2,5 +2,6 @@
- [RxJava and Error Handling](http://www.baeldung.com/rxjava-error-handling)
- [RxJava 2 – Flowable](http://www.baeldung.com/rxjava-2-flowable)
+- [RxJava 2 - Completable](http://www.baeldung.com/rxjava-completable)
- [RxJava Maybe](http://www.baeldung.com/rxjava-maybe)
-- [Introduction to RxRelay for RxJava](http://www.baeldung.com/rx-relay)
\ No newline at end of file
+- [Introduction to RxRelay for RxJava](http://www.baeldung.com/rx-relay)
diff --git a/rxjava-2/pom.xml b/rxjava-2/pom.xml
index 4c5ea014d7..a18b096b6d 100644
--- a/rxjava-2/pom.xml
+++ b/rxjava-2/pom.xml
@@ -38,9 +38,8 @@
3.8.0
- 2.1.3
+ 2.2.2
1.7.0
2.0.0
-
\ No newline at end of file
diff --git a/rxjava-2/src/test/java/com/baeldung/rxjava/CompletableUnitTest.java b/rxjava-2/src/test/java/com/baeldung/rxjava/CompletableUnitTest.java
new file mode 100644
index 0000000000..6acda310a5
--- /dev/null
+++ b/rxjava-2/src/test/java/com/baeldung/rxjava/CompletableUnitTest.java
@@ -0,0 +1,112 @@
+package com.baeldung.rxjava;
+
+import io.reactivex.Completable;
+import io.reactivex.Flowable;
+import io.reactivex.Single;
+import io.reactivex.observers.DisposableCompletableObserver;
+import org.junit.Before;
+import org.junit.Test;
+
+public class CompletableUnitTest {
+
+ Completable first;
+ Completable second;
+ Completable error;
+ Throwable throwable = new RuntimeException();
+
+ @Before
+ public void setUpCompletables() {
+ first = Completable.fromSingle(Single.just(1));
+ second = Completable.fromRunnable(() -> {});
+ error = Single.error(throwable)
+ .ignoreElement();
+ }
+
+ @Test
+ public void whenCompletableConstructed_thenCompletedSuccessfully() {
+ Completable completed = Completable.complete();
+ completed.subscribe(new DisposableCompletableObserver() {
+ @Override
+ public void onComplete() {
+ System.out.println("Completed!");
+ }
+
+ @Override
+ public void onError(Throwable e) {
+ e.printStackTrace();
+ }
+ });
+ Flowable flowable = Flowable.just("request received", "user logged in");
+ Completable flowableCompletable = Completable.fromPublisher(flowable);
+ Completable singleCompletable = Single.just(1)
+ .ignoreElement();
+
+ completed.andThen(flowableCompletable)
+ .andThen(singleCompletable)
+ .test()
+ .assertComplete();
+ }
+
+ @Test
+ public void whenCombiningCompletables_thenCompletedSuccessfully() {
+ first.andThen(second)
+ .test()
+ .assertComplete();
+ }
+
+ @Test
+ public void whenCombinedWithError_thenCompletedWithError() {
+ first.andThen(second)
+ .andThen(error)
+ .test()
+ .assertError(throwable);
+ }
+
+ @Test
+ public void whenCombinedWithNever_thenDoesNotComplete() {
+ first.andThen(second)
+ .andThen(Completable.never())
+ .test()
+ .assertNotComplete();
+ }
+
+ @Test
+ public void whenMergedCompletables_thenCompletedSuccessfully() {
+ Completable.mergeArray(first, second)
+ .test()
+ .assertComplete();
+ }
+
+ @Test
+ public void whenMergedWithError_thenCompletedWithError() {
+ Completable.mergeArray(first, second, error)
+ .test()
+ .assertError(throwable);
+ }
+
+ @Test
+ public void whenFlatMaped_thenCompletedSuccessfully() {
+ Completable allElementsCompletable = Flowable.just("request received", "user logged in")
+ .flatMapCompletable(message -> Completable
+ .fromRunnable(() -> System.out.println(message))
+ );
+ allElementsCompletable
+ .test()
+ .assertComplete();
+ }
+
+ @Test
+ public void whenAmbWithNever_thenCompletedSuccessfully() {
+ Completable.ambArray(first, Completable.never(), second)
+ .test()
+ .assertComplete();
+ }
+
+ @Test
+ public void whenAmbWithError_thenCompletedWithError() {
+ Completable.ambArray(error, first, second)
+ .test()
+ .assertError(throwable);
+ }
+
+}
diff --git a/spring-4/pom.xml b/spring-4/pom.xml
index cf10f64aa2..78939bba95 100644
--- a/spring-4/pom.xml
+++ b/spring-4/pom.xml
@@ -71,10 +71,8 @@
- UTF-8
1.0.1
1.16.18
- 1.8
1.4.197
diff --git a/spring-4/src/test/java/org/baeldung/SpringContextIntegrationTest.java b/spring-4/src/test/java/org/baeldung/SpringContextIntegrationTest.java
new file mode 100644
index 0000000000..9dfac2bd9e
--- /dev/null
+++ b/spring-4/src/test/java/org/baeldung/SpringContextIntegrationTest.java
@@ -0,0 +1,17 @@
+package org.baeldung;
+
+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.flips.ApplicationConfig;
+
+@RunWith(SpringRunner.class)
+@SpringBootTest(classes = ApplicationConfig.class)
+public class SpringContextIntegrationTest {
+
+ @Test
+ public void whenSpringContextIsBootstrapped_thenNoExceptions() {
+ }
+}
diff --git a/spring-5-data-reactive/pom.xml b/spring-5-data-reactive/pom.xml
index e4dd454635..5c723c6e29 100644
--- a/spring-5-data-reactive/pom.xml
+++ b/spring-5-data-reactive/pom.xml
@@ -62,28 +62,6 @@
spring-boot-starter-test
test
-
-
- org.junit.jupiter
- junit-jupiter-api
-
-
- org.junit.jupiter
- junit-jupiter-engine
- test
-
-
- org.junit.platform
- junit-platform-surefire-provider
- ${junit.platform.version}
- test
-
-
- org.junit.platform
- junit-platform-runner
- ${junit.platform.version}
- test
-
@@ -175,32 +153,13 @@
-
- org.apache.maven.plugins
- maven-surefire-plugin
-
- 3
- true
- methods
- true
-
- **/*IntegrationTest.java
- **/*IntTest.java
- **/*LiveTest.java
-
-
-
- UTF-8
- UTF-8
- 1.8
1.2.40
1.2.40
- 1.0.0
- 5.0.2
+
diff --git a/spring-5-data-reactive/src/test/java/org/baeldung/SpringContextIntegrationTest.java b/spring-5-data-reactive/src/test/java/org/baeldung/SpringContextIntegrationTest.java
new file mode 100644
index 0000000000..ce4c172960
--- /dev/null
+++ b/spring-5-data-reactive/src/test/java/org/baeldung/SpringContextIntegrationTest.java
@@ -0,0 +1,17 @@
+package org.baeldung;
+
+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.reactive.Spring5ReactiveApplication;
+
+@RunWith(SpringRunner.class)
+@SpringBootTest(classes = Spring5ReactiveApplication.class)
+public class SpringContextIntegrationTest {
+
+ @Test
+ public void whenSpringContextIsBootstrapped_thenNoExceptions() {
+ }
+}
diff --git a/spring-5-reactive-client/src/test/java/org/baeldung/SpringContextIntegrationTest.java b/spring-5-reactive-client/src/test/java/org/baeldung/SpringContextIntegrationTest.java
new file mode 100644
index 0000000000..7843a8968d
--- /dev/null
+++ b/spring-5-reactive-client/src/test/java/org/baeldung/SpringContextIntegrationTest.java
@@ -0,0 +1,17 @@
+package org.baeldung;
+
+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.reactive.Spring5ReactiveTestApplication;
+
+@RunWith(SpringRunner.class)
+@SpringBootTest(classes = Spring5ReactiveTestApplication.class)
+public class SpringContextIntegrationTest {
+
+ @Test
+ public void whenSpringContextIsBootstrapped_thenNoExceptions() {
+ }
+}
diff --git a/spring-5-reactive-security/src/main/java/com/baeldung/reactive/functional/EmployeeFunctionalConfig.java b/spring-5-reactive-security/src/main/java/com/baeldung/reactive/functional/EmployeeFunctionalConfig.java
index 8d7860ccdc..76b697c1aa 100644
--- a/spring-5-reactive-security/src/main/java/com/baeldung/reactive/functional/EmployeeFunctionalConfig.java
+++ b/spring-5-reactive-security/src/main/java/com/baeldung/reactive/functional/EmployeeFunctionalConfig.java
@@ -39,7 +39,7 @@ public class EmployeeFunctionalConfig {
}
@Bean
- RouterFunction updateEmployee() {
+ RouterFunction updateEmployeeRoute() {
return route(POST("/employees/update"),
req -> req.body(toMono(Employee.class))
.doOnNext(employeeRepository()::updateEmployee)
diff --git a/spring-5-reactive-security/src/test/java/com/baeldung/reactive/functional/EmployeeSpringFunctionalIntegrationTest.java b/spring-5-reactive-security/src/test/java/com/baeldung/reactive/functional/EmployeeSpringFunctionalIntegrationTest.java
index 1197820066..6e73e8072c 100644
--- a/spring-5-reactive-security/src/test/java/com/baeldung/reactive/functional/EmployeeSpringFunctionalIntegrationTest.java
+++ b/spring-5-reactive-security/src/test/java/com/baeldung/reactive/functional/EmployeeSpringFunctionalIntegrationTest.java
@@ -1,13 +1,37 @@
package com.baeldung.reactive.functional;
+import static org.mockito.BDDMockito.given;
+import static org.mockito.Mockito.verify;
+
+import java.util.ArrayList;
+import java.util.List;
+
+import org.junit.FixMethodOrder;
import org.junit.Test;
+import org.junit.runner.RunWith;
+import org.junit.runners.MethodSorters;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.boot.test.context.SpringBootTest;
+import org.springframework.boot.test.mock.mockito.MockBean;
+import org.springframework.test.context.junit4.SpringRunner;
import org.springframework.test.web.reactive.server.WebTestClient;
import com.baeldung.webflux.Employee;
+import com.baeldung.webflux.EmployeeRepository;
+import reactor.core.publisher.Flux;
+import reactor.core.publisher.Mono;
+
+@RunWith(SpringRunner.class)
+@SpringBootTest(webEnvironment = SpringBootTest.WebEnvironment.RANDOM_PORT, classes = EmployeeSpringFunctionalApplication.class)
+@FixMethodOrder(MethodSorters.NAME_ASCENDING)
public class EmployeeSpringFunctionalIntegrationTest {
- private static EmployeeFunctionalConfig config = new EmployeeFunctionalConfig();
+ @Autowired
+ private EmployeeFunctionalConfig config;
+
+ @MockBean
+ private EmployeeRepository employeeRepository;
@Test
public void givenEmployeeId_whenGetEmployeeById_thenCorrectEmployee() {
@@ -15,7 +39,9 @@ public class EmployeeSpringFunctionalIntegrationTest {
.bindToRouterFunction(config.getEmployeeByIdRoute())
.build();
- Employee expected = new Employee("1", "Employee 1");
+ Employee employee = new Employee("1", "Employee 1");
+
+ given(employeeRepository.findEmployeeById("1")).willReturn(Mono.just(employee));
client.get()
.uri("/employees/1")
@@ -23,6 +49,50 @@ public class EmployeeSpringFunctionalIntegrationTest {
.expectStatus()
.isOk()
.expectBody(Employee.class)
- .isEqualTo(expected);
+ .isEqualTo(employee);
+ }
+
+ @Test
+ public void whenGetAllEmployees_thenCorrectEmployees() {
+ WebTestClient client = WebTestClient
+ .bindToRouterFunction(config.getAllEmployeesRoute())
+ .build();
+
+ List employeeList = new ArrayList<>();
+
+ Employee employee1 = new Employee("1", "Employee 1");
+ Employee employee2 = new Employee("2", "Employee 2");
+
+ employeeList.add(employee1);
+ employeeList.add(employee2);
+
+ Flux employeeFlux = Flux.fromIterable(employeeList);
+ given(employeeRepository.findAllEmployees()).willReturn(employeeFlux);
+
+ client.get()
+ .uri("/employees")
+ .exchange()
+ .expectStatus()
+ .isOk()
+ .expectBodyList(Employee.class)
+ .isEqualTo(employeeList);
+ }
+
+ @Test
+ public void whenUpdateEmployee_thenEmployeeUpdated() {
+ WebTestClient client = WebTestClient
+ .bindToRouterFunction(config.updateEmployeeRoute())
+ .build();
+
+ Employee employee = new Employee("1", "Employee 1 Updated");
+
+ client.post()
+ .uri("/employees/update")
+ .body(Mono.just(employee), Employee.class)
+ .exchange()
+ .expectStatus()
+ .isOk();
+
+ verify(employeeRepository).updateEmployee(employee);
}
}
diff --git a/spring-5-reactive-security/src/test/java/org/baeldung/SpringContextIntegrationTest.java b/spring-5-reactive-security/src/test/java/org/baeldung/SpringContextIntegrationTest.java
new file mode 100644
index 0000000000..2bcd974510
--- /dev/null
+++ b/spring-5-reactive-security/src/test/java/org/baeldung/SpringContextIntegrationTest.java
@@ -0,0 +1,17 @@
+package org.baeldung;
+
+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.reactive.security.SpringSecurity5Application;
+
+@RunWith(SpringRunner.class)
+@SpringBootTest(classes = SpringSecurity5Application.class)
+public class SpringContextIntegrationTest {
+
+ @Test
+ public void whenSpringContextIsBootstrapped_thenNoExceptions() {
+ }
+}
diff --git a/spring-5-reactive/README.md b/spring-5-reactive/README.md
index 0665eb4f57..7977fd820f 100644
--- a/spring-5-reactive/README.md
+++ b/spring-5-reactive/README.md
@@ -13,3 +13,4 @@ The "REST With Spring" Classes: http://bit.ly/restwithspring
- [How to Set a Header on a Response with Spring 5](http://www.baeldung.com/spring-response-header)
- [Spring Webflux and CORS](http://www.baeldung.com/spring-webflux-cors)
- [Handling Errors in Spring WebFlux](http://www.baeldung.com/spring-webflux-errors)
+- [Server-Sent Events in Spring](https://www.baeldung.com/spring-server-sent-events)
diff --git a/spring-5-reactive/src/test/java/org/baeldung/SpringContextIntegrationTest.java b/spring-5-reactive/src/test/java/org/baeldung/SpringContextIntegrationTest.java
new file mode 100644
index 0000000000..ce4c172960
--- /dev/null
+++ b/spring-5-reactive/src/test/java/org/baeldung/SpringContextIntegrationTest.java
@@ -0,0 +1,17 @@
+package org.baeldung;
+
+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.reactive.Spring5ReactiveApplication;
+
+@RunWith(SpringRunner.class)
+@SpringBootTest(classes = Spring5ReactiveApplication.class)
+public class SpringContextIntegrationTest {
+
+ @Test
+ public void whenSpringContextIsBootstrapped_thenNoExceptions() {
+ }
+}
diff --git a/spring-5-security/src/test/java/org/baeldung/SpringContextIntegrationTest.java b/spring-5-security/src/test/java/org/baeldung/SpringContextIntegrationTest.java
new file mode 100644
index 0000000000..967f67e760
--- /dev/null
+++ b/spring-5-security/src/test/java/org/baeldung/SpringContextIntegrationTest.java
@@ -0,0 +1,17 @@
+package org.baeldung;
+
+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.dsl.CustomConfigurerApplication;
+
+@RunWith(SpringRunner.class)
+@SpringBootTest(classes = CustomConfigurerApplication.class)
+public class SpringContextIntegrationTest {
+
+ @Test
+ public void whenSpringContextIsBootstrapped_thenNoExceptions() {
+ }
+}
diff --git a/spring-5/src/test/java/org/baeldung/SpringContextIntegrationTest.java b/spring-5/src/test/java/org/baeldung/SpringContextIntegrationTest.java
new file mode 100644
index 0000000000..75b3df4978
--- /dev/null
+++ b/spring-5/src/test/java/org/baeldung/SpringContextIntegrationTest.java
@@ -0,0 +1,17 @@
+package org.baeldung;
+
+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.Spring5Application;
+
+@RunWith(SpringRunner.class)
+@SpringBootTest(classes = Spring5Application.class)
+public class SpringContextIntegrationTest {
+
+ @Test
+ public void whenSpringContextIsBootstrapped_thenNoExceptions() {
+ }
+}
diff --git a/spring-activiti/src/test/java/org/baeldung/SpringContextIntegrationTest.java b/spring-activiti/src/test/java/org/baeldung/SpringContextIntegrationTest.java
new file mode 100644
index 0000000000..ae37e77f86
--- /dev/null
+++ b/spring-activiti/src/test/java/org/baeldung/SpringContextIntegrationTest.java
@@ -0,0 +1,17 @@
+package org.baeldung;
+
+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.example.activitiwithspring.ActivitiWithSpringApplication;
+
+@RunWith(SpringRunner.class)
+@SpringBootTest(classes = ActivitiWithSpringApplication.class)
+public class SpringContextIntegrationTest {
+
+ @Test
+ public void whenSpringContextIsBootstrapped_thenNoExceptions() {
+ }
+}
diff --git a/spring-amqp-simple/src/test/java/org/baeldung/SpringContextIntegrationTest.java b/spring-amqp-simple/src/test/java/org/baeldung/SpringContextIntegrationTest.java
new file mode 100644
index 0000000000..f134074cf8
--- /dev/null
+++ b/spring-amqp-simple/src/test/java/org/baeldung/SpringContextIntegrationTest.java
@@ -0,0 +1,17 @@
+package org.baeldung;
+
+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.springamqpsimple.SpringAmqpApplication;
+
+@RunWith(SpringRunner.class)
+@SpringBootTest(classes = SpringAmqpApplication.class)
+public class SpringContextIntegrationTest {
+
+ @Test
+ public void whenSpringContextIsBootstrapped_thenNoExceptions() {
+ }
+}
diff --git a/spring-aop/src/test/java/org/baeldung/SpringContextIntegrationTest.java b/spring-aop/src/test/java/org/baeldung/SpringContextIntegrationTest.java
new file mode 100644
index 0000000000..cf1ac7de89
--- /dev/null
+++ b/spring-aop/src/test/java/org/baeldung/SpringContextIntegrationTest.java
@@ -0,0 +1,15 @@
+package org.baeldung;
+
+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 = Application.class)
+public class SpringContextIntegrationTest {
+
+ @Test
+ public void whenSpringContextIsBootstrapped_thenNoExceptions() {
+ }
+}
diff --git a/spring-apache-camel/src/test/java/org/baeldung/SpringContextIntegrationTest.java b/spring-apache-camel/src/test/java/org/baeldung/SpringContextIntegrationTest.java
new file mode 100644
index 0000000000..efd0603c76
--- /dev/null
+++ b/spring-apache-camel/src/test/java/org/baeldung/SpringContextIntegrationTest.java
@@ -0,0 +1,13 @@
+package org.baeldung;
+
+import org.junit.Test;
+
+import com.baeldung.camel.main.App;
+
+public class SpringContextIntegrationTest {
+
+ @Test
+ public final void testMain() throws Exception {
+ App.main(null);
+ }
+}
diff --git a/spring-batch/repository.sqlite b/spring-batch/repository.sqlite
new file mode 100644
index 0000000000..4456ef63cc
Binary files /dev/null and b/spring-batch/repository.sqlite differ
diff --git a/spring-batch/src/test/java/org/baeldung/SpringContextIntegrationTest.java b/spring-batch/src/test/java/org/baeldung/SpringContextIntegrationTest.java
new file mode 100644
index 0000000000..c3a9f74759
--- /dev/null
+++ b/spring-batch/src/test/java/org/baeldung/SpringContextIntegrationTest.java
@@ -0,0 +1,12 @@
+package org.baeldung;
+
+import org.baeldung.batch.App;
+import org.junit.Test;
+
+public class SpringContextIntegrationTest {
+
+ @Test
+ public final void testMain() throws Exception {
+ App.main(null);
+ }
+}
diff --git a/spring-bom/src/test/java/org/baeldung/SpringContextIntegrationTest.java b/spring-bom/src/test/java/org/baeldung/SpringContextIntegrationTest.java
new file mode 100644
index 0000000000..6dee4b808e
--- /dev/null
+++ b/spring-bom/src/test/java/org/baeldung/SpringContextIntegrationTest.java
@@ -0,0 +1,13 @@
+package org.baeldung;
+
+import org.junit.Test;
+
+import com.baeldung.spring.bom.HelloWorldApp;
+
+public class SpringContextIntegrationTest {
+
+ @Test
+ public final void testMain() throws Exception {
+ HelloWorldApp.main(null);
+ }
+}
diff --git a/spring-boot-admin/spring-boot-admin-client/src/test/java/org/baeldung/SpringContextIntegrationTest.java b/spring-boot-admin/spring-boot-admin-client/src/test/java/org/baeldung/SpringContextIntegrationTest.java
new file mode 100644
index 0000000000..1f1fae17bc
--- /dev/null
+++ b/spring-boot-admin/spring-boot-admin-client/src/test/java/org/baeldung/SpringContextIntegrationTest.java
@@ -0,0 +1,17 @@
+package org.baeldung;
+
+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.springbootadminclient.SpringBootAdminClientApplication;
+
+@RunWith(SpringRunner.class)
+@SpringBootTest(classes = SpringBootAdminClientApplication.class)
+public class SpringContextIntegrationTest {
+
+ @Test
+ public void whenSpringContextIsBootstrapped_thenNoExceptions() {
+ }
+}
diff --git a/spring-boot-admin/spring-boot-admin-server/src/test/java/org/baeldung/SpringContextIntegrationTest.java b/spring-boot-admin/spring-boot-admin-server/src/test/java/org/baeldung/SpringContextIntegrationTest.java
new file mode 100644
index 0000000000..4c151d97df
--- /dev/null
+++ b/spring-boot-admin/spring-boot-admin-server/src/test/java/org/baeldung/SpringContextIntegrationTest.java
@@ -0,0 +1,17 @@
+package org.baeldung;
+
+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.springbootadminserver.SpringBootAdminServerApplication;
+
+@RunWith(SpringRunner.class)
+@SpringBootTest(classes = SpringBootAdminServerApplication.class)
+public class SpringContextIntegrationTest {
+
+ @Test
+ public void whenSpringContextIsBootstrapped_thenNoExceptions() {
+ }
+}
diff --git a/spring-boot-angular-ecommerce/src/test/java/org/baeldung/SpringContextIntegrationTest.java b/spring-boot-angular-ecommerce/src/test/java/org/baeldung/SpringContextIntegrationTest.java
new file mode 100644
index 0000000000..4f595916f7
--- /dev/null
+++ b/spring-boot-angular-ecommerce/src/test/java/org/baeldung/SpringContextIntegrationTest.java
@@ -0,0 +1,17 @@
+package org.baeldung;
+
+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.ecommerce.EcommerceApplication;
+
+@RunWith(SpringRunner.class)
+@SpringBootTest(classes = EcommerceApplication.class)
+public class SpringContextIntegrationTest {
+
+ @Test
+ public void whenSpringContextIsBootstrapped_thenNoExceptions() {
+ }
+}
diff --git a/spring-boot-autoconfiguration/src/main/java/com/baeldung/autoconfiguration/MySQLAutoconfiguration.java b/spring-boot-autoconfiguration/src/main/java/com/baeldung/autoconfiguration/MySQLAutoconfiguration.java
index 4f4f6fb6af..d6fc1836c7 100644
--- a/spring-boot-autoconfiguration/src/main/java/com/baeldung/autoconfiguration/MySQLAutoconfiguration.java
+++ b/spring-boot-autoconfiguration/src/main/java/com/baeldung/autoconfiguration/MySQLAutoconfiguration.java
@@ -1,10 +1,27 @@
package com.baeldung.autoconfiguration;
+import java.util.Arrays;
+import java.util.Properties;
+
+import javax.persistence.EntityManagerFactory;
+import javax.sql.DataSource;
+
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.boot.autoconfigure.AutoConfigureOrder;
-import org.springframework.boot.autoconfigure.condition.*;
+import org.springframework.boot.autoconfigure.condition.ConditionMessage;
import org.springframework.boot.autoconfigure.condition.ConditionMessage.Style;
-import org.springframework.context.annotation.*;
+import org.springframework.boot.autoconfigure.condition.ConditionOutcome;
+import org.springframework.boot.autoconfigure.condition.ConditionalOnBean;
+import org.springframework.boot.autoconfigure.condition.ConditionalOnClass;
+import org.springframework.boot.autoconfigure.condition.ConditionalOnMissingBean;
+import org.springframework.boot.autoconfigure.condition.ConditionalOnProperty;
+import org.springframework.boot.autoconfigure.condition.ConditionalOnResource;
+import org.springframework.boot.autoconfigure.condition.SpringBootCondition;
+import org.springframework.context.annotation.Bean;
+import org.springframework.context.annotation.ConditionContext;
+import org.springframework.context.annotation.Conditional;
+import org.springframework.context.annotation.Configuration;
+import org.springframework.context.annotation.PropertySource;
import org.springframework.core.Ordered;
import org.springframework.core.env.Environment;
import org.springframework.core.type.AnnotatedTypeMetadata;
@@ -14,11 +31,6 @@ import org.springframework.orm.jpa.LocalContainerEntityManagerFactoryBean;
import org.springframework.orm.jpa.vendor.HibernateJpaVendorAdapter;
import org.springframework.util.ClassUtils;
-import javax.persistence.EntityManagerFactory;
-import javax.sql.DataSource;
-import java.util.Arrays;
-import java.util.Properties;
-
@Configuration
@ConditionalOnClass(DataSource.class)
@AutoConfigureOrder(Ordered.HIGHEST_PRECEDENCE)
diff --git a/spring-boot-autoconfiguration/src/test/java/org/baeldung/SpringContextIntegrationTest.java b/spring-boot-autoconfiguration/src/test/java/org/baeldung/SpringContextIntegrationTest.java
new file mode 100644
index 0000000000..136ea2481f
--- /dev/null
+++ b/spring-boot-autoconfiguration/src/test/java/org/baeldung/SpringContextIntegrationTest.java
@@ -0,0 +1,19 @@
+package org.baeldung;
+
+import org.junit.Test;
+import org.junit.runner.RunWith;
+import org.springframework.boot.test.context.SpringBootTest;
+import org.springframework.data.jpa.repository.config.EnableJpaRepositories;
+import org.springframework.test.context.junit4.SpringRunner;
+
+import com.baeldung.autoconfiguration.example.AutoconfigurationApplication;
+
+@RunWith(SpringRunner.class)
+@SpringBootTest(classes = AutoconfigurationApplication.class)
+@EnableJpaRepositories(basePackages = { "com.baeldung.autoconfiguration.example" })
+public class SpringContextIntegrationTest {
+
+ @Test
+ public void whenSpringContextIsBootstrapped_thenNoExceptions() {
+ }
+}
diff --git a/spring-boot-bootstrap/README.md b/spring-boot-bootstrap/README.md
index 519b36ce4f..4b09f11714 100644
--- a/spring-boot-bootstrap/README.md
+++ b/spring-boot-bootstrap/README.md
@@ -2,3 +2,4 @@
- [Bootstrap a Simple Application using Spring Boot](http://www.baeldung.com/spring-boot-start)
- [Spring Boot Dependency Management with a Custom Parent](http://www.baeldung.com/spring-boot-dependency-management-custom-parent)
- [Thin JARs with Spring Boot](http://www.baeldung.com/spring-boot-thin-jar)
+- [Deploying a Spring Boot Application to Cloud Foundry](https://www.baeldung.com/spring-boot-app-deploy-to-cloud-foundry)
diff --git a/spring-boot-bootstrap/pom.xml b/spring-boot-bootstrap/pom.xml
index c1ce4df6e2..b5bcc587b1 100644
--- a/spring-boot-bootstrap/pom.xml
+++ b/spring-boot-bootstrap/pom.xml
@@ -78,6 +78,43 @@
+
+ cloud-gcp
+
+
+ org.springframework.cloud
+ spring-cloud-gcp-starter
+ 1.0.0.RELEASE
+
+
+ org.springframework.cloud
+ spring-cloud-gcp-starter-sql-mysql
+ 1.0.0.RELEASE
+
+
+
+ ${project.name}-gcp
+
+
+ src/main/resources
+
+ **/logback.xml
+
+
+
+
+
+ com.google.cloud.tools
+ appengine-maven-plugin
+ 1.3.2
+
+
+ org.springframework.boot
+ spring-boot-maven-plugin
+
+
+
+
cloudfoundry
@@ -91,6 +128,7 @@
+ ${project.name}-cf
src/main/resources
@@ -103,9 +141,6 @@
org.springframework.boot
spring-boot-maven-plugin
-
- ${project.name}-cf
-
org.apache.maven.plugins
diff --git a/spring-boot-bootstrap/src/main/appengine/app.yaml b/spring-boot-bootstrap/src/main/appengine/app.yaml
new file mode 100644
index 0000000000..a65ec6533a
--- /dev/null
+++ b/spring-boot-bootstrap/src/main/appengine/app.yaml
@@ -0,0 +1,19 @@
+runtime: java
+env: flex
+runtime_config:
+ jdk: openjdk8
+env_variables:
+ SPRING_PROFILES_ACTIVE: "gcp,mysql"
+handlers:
+- url: /.*
+ script: this field is required, but ignored
+resources:
+ cpu: 2
+ memory_gb: 2
+ disk_size_gb: 10
+ volumes:
+ - name: ramdisk1
+ volume_type: tmpfs
+ size_gb: 0.5
+manual_scaling:
+ instances: 1
diff --git a/spring-boot-bootstrap/src/main/resources/application-gcp.properties b/spring-boot-bootstrap/src/main/resources/application-gcp.properties
new file mode 100644
index 0000000000..3dd11eeb8c
--- /dev/null
+++ b/spring-boot-bootstrap/src/main/resources/application-gcp.properties
@@ -0,0 +1,3 @@
+spring.cloud.gcp.sql.instance-connection-name=baeldung-spring-boot-bootstrap:europe-west2:baeldung-spring-boot-bootstrap-db
+spring.cloud.gcp.sql.database-name=baeldung_bootstrap_db
+spring.cloud.gcp.logging.enabled=true
\ No newline at end of file
diff --git a/spring-boot-bootstrap/src/main/resources/application.properties b/spring-boot-bootstrap/src/main/resources/application.properties
index eee89ca460..d83166d843 100644
--- a/spring-boot-bootstrap/src/main/resources/application.properties
+++ b/spring-boot-bootstrap/src/main/resources/application.properties
@@ -8,4 +8,5 @@ spring.thymeleaf.suffix=.html
server.error.path=/error
server.error.whitelabel.enabled=false
-spring.jpa.generate-ddl=true
\ No newline at end of file
+spring.jpa.generate-ddl=true
+spring.jpa.hibernate.ddl-auto=update
\ No newline at end of file
diff --git a/spring-boot-bootstrap/src/main/resources/logback-gcp.xml b/spring-boot-bootstrap/src/main/resources/logback-gcp.xml
new file mode 100644
index 0000000000..9a9c1c633d
--- /dev/null
+++ b/spring-boot-bootstrap/src/main/resources/logback-gcp.xml
@@ -0,0 +1,12 @@
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/spring-boot-bootstrap/src/main/resources/spring-cloud-bootstrap.properties b/spring-boot-bootstrap/src/main/resources/spring-cloud-bootstrap.properties
new file mode 100644
index 0000000000..6ba0b5ffcc
--- /dev/null
+++ b/spring-boot-bootstrap/src/main/resources/spring-cloud-bootstrap.properties
@@ -0,0 +1 @@
+spring.cloud.appId=baeldung-spring-boot-bootstrap
diff --git a/spring-cloud/spring-cloud-rest/spring-cloud-rest-config-server/src/test/java/org/baeldung/SpringCloudRestConfigIntegrationTest.java b/spring-boot-bootstrap/src/test/java/org/baeldung/SpringContextIntegrationTest.java
similarity index 85%
rename from spring-cloud/spring-cloud-rest/spring-cloud-rest-config-server/src/test/java/org/baeldung/SpringCloudRestConfigIntegrationTest.java
rename to spring-boot-bootstrap/src/test/java/org/baeldung/SpringContextIntegrationTest.java
index 8cc30a32ab..9ae417a546 100644
--- a/spring-cloud/spring-cloud-rest/spring-cloud-rest-config-server/src/test/java/org/baeldung/SpringCloudRestConfigIntegrationTest.java
+++ b/spring-boot-bootstrap/src/test/java/org/baeldung/SpringContextIntegrationTest.java
@@ -7,9 +7,9 @@ import org.springframework.test.context.junit4.SpringRunner;
@RunWith(SpringRunner.class)
@SpringBootTest
-public class SpringCloudRestConfigIntegrationTest {
+public class SpringContextIntegrationTest {
+
@Test
public void contextLoads() {
}
-
}
diff --git a/spring-boot-camel/pom.xml b/spring-boot-camel/pom.xml
index f04e8e34f7..19a0bec809 100644
--- a/spring-boot-camel/pom.xml
+++ b/spring-boot-camel/pom.xml
@@ -38,6 +38,12 @@
spring-boot-starter-web
${spring-boot-starter.version}
+
+ org.springframework.boot
+ spring-boot-starter-test
+ ${spring-boot-starter.version}
+ test
+
diff --git a/spring-boot-camel/src/test/java/org/baeldung/SpringContextIntegrationTest.java b/spring-boot-camel/src/test/java/org/baeldung/SpringContextIntegrationTest.java
new file mode 100644
index 0000000000..6eee0abf1e
--- /dev/null
+++ b/spring-boot-camel/src/test/java/org/baeldung/SpringContextIntegrationTest.java
@@ -0,0 +1,17 @@
+package org.baeldung;
+
+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.camel.Application;
+
+@RunWith(SpringRunner.class)
+@SpringBootTest(classes = Application.class)
+public class SpringContextIntegrationTest {
+
+ @Test
+ public void whenSpringContextIsBootstrapped_thenNoExceptions() {
+ }
+}
diff --git a/spring-boot-client/src/test/java/org/baeldung/SpringContextIntegrationTest.java b/spring-boot-client/src/test/java/org/baeldung/SpringContextIntegrationTest.java
new file mode 100644
index 0000000000..97debc5b63
--- /dev/null
+++ b/spring-boot-client/src/test/java/org/baeldung/SpringContextIntegrationTest.java
@@ -0,0 +1,16 @@
+package org.baeldung;
+
+import org.baeldung.boot.Application;
+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 = Application.class)
+public class SpringContextIntegrationTest {
+
+ @Test
+ public void whenSpringContextIsBootstrapped_thenNoExceptions() {
+ }
+}
diff --git a/spring-boot-ctx-fluent/src/test/java/org/baeldung/SpringContextIntegrationTest.java b/spring-boot-ctx-fluent/src/test/java/org/baeldung/SpringContextIntegrationTest.java
new file mode 100644
index 0000000000..c9f7220ab9
--- /dev/null
+++ b/spring-boot-ctx-fluent/src/test/java/org/baeldung/SpringContextIntegrationTest.java
@@ -0,0 +1,13 @@
+package org.baeldung;
+
+import org.junit.Test;
+
+import com.baeldung.parent.App;
+
+public class SpringContextIntegrationTest {
+
+ @Test
+ public final void testMain() throws Exception {
+ App.main(new String[] {});
+ }
+}
diff --git a/spring-boot-custom-starter/greeter-spring-boot-autoconfigure/pom.xml b/spring-boot-custom-starter/greeter-spring-boot-autoconfigure/pom.xml
index 9c2d85da86..5862bdd6c8 100644
--- a/spring-boot-custom-starter/greeter-spring-boot-autoconfigure/pom.xml
+++ b/spring-boot-custom-starter/greeter-spring-boot-autoconfigure/pom.xml
@@ -40,6 +40,13 @@
${greeter.version}
true
+
+
+ org.springframework.boot
+ spring-boot-starter-test
+ 1.5.10.RELEASE
+ test
+
diff --git a/spring-boot-custom-starter/greeter-spring-boot-autoconfigure/src/test/java/org/baeldung/SpringContextIntegrationTest.java b/spring-boot-custom-starter/greeter-spring-boot-autoconfigure/src/test/java/org/baeldung/SpringContextIntegrationTest.java
new file mode 100644
index 0000000000..9c8d825ea4
--- /dev/null
+++ b/spring-boot-custom-starter/greeter-spring-boot-autoconfigure/src/test/java/org/baeldung/SpringContextIntegrationTest.java
@@ -0,0 +1,17 @@
+package org.baeldung;
+
+import org.junit.Test;
+import org.junit.runner.RunWith;
+import org.springframework.test.context.ContextConfiguration;
+import org.springframework.test.context.junit4.SpringJUnit4ClassRunner;
+
+import com.baeldung.greeter.autoconfigure.GreeterAutoConfiguration;
+
+@RunWith(SpringJUnit4ClassRunner.class)
+@ContextConfiguration(classes = GreeterAutoConfiguration.class)
+public class SpringContextIntegrationTest {
+
+ @Test
+ public void whenSpringContextIsBootstrapped_thenNoExceptions() {
+ }
+}
diff --git a/spring-boot-custom-starter/greeter-spring-boot-sample-app/src/test/java/org/baeldung/SpringContextIntegrationTest.java b/spring-boot-custom-starter/greeter-spring-boot-sample-app/src/test/java/org/baeldung/SpringContextIntegrationTest.java
new file mode 100644
index 0000000000..23f285238b
--- /dev/null
+++ b/spring-boot-custom-starter/greeter-spring-boot-sample-app/src/test/java/org/baeldung/SpringContextIntegrationTest.java
@@ -0,0 +1,17 @@
+package org.baeldung;
+
+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.greeter.sample.GreeterSampleApplication;
+
+@RunWith(SpringRunner.class)
+@SpringBootTest(classes = GreeterSampleApplication.class)
+public class SpringContextIntegrationTest {
+
+ @Test
+ public void whenSpringContextIsBootstrapped_thenNoExceptions() {
+ }
+}
diff --git a/spring-boot-h2/README.md b/spring-boot-h2/README.md
new file mode 100644
index 0000000000..af5f395440
--- /dev/null
+++ b/spring-boot-h2/README.md
@@ -0,0 +1,2 @@
+### Relevant Articles:
+- [Access the Same In-Memory H2 Database in Multiple Spring Boot Applications](https://www.baeldung.com/spring-boot-access-h2-database-multiple-apps)
diff --git a/spring-boot-h2/spring-boot-h2-database/pom.xml b/spring-boot-h2/spring-boot-h2-database/pom.xml
index 4b660334da..94f2293c34 100644
--- a/spring-boot-h2/spring-boot-h2-database/pom.xml
+++ b/spring-boot-h2/spring-boot-h2-database/pom.xml
@@ -22,6 +22,8 @@
UTF-8
UTF-8
1.8
+
+ com.mycorp.starter.HelloWorldApplication
diff --git a/spring-boot-h2/spring-boot-h2-remote-app/src/main/java/com/baeldung/h2db/demo/ClientSpringBootApp.java b/spring-boot-h2/spring-boot-h2-database/src/main/java/com/baeldung/h2db/demo/client/ClientSpringBootApp.java
similarity index 85%
rename from spring-boot-h2/spring-boot-h2-remote-app/src/main/java/com/baeldung/h2db/demo/ClientSpringBootApp.java
rename to spring-boot-h2/spring-boot-h2-database/src/main/java/com/baeldung/h2db/demo/client/ClientSpringBootApp.java
index 39e52afd2c..7402312e1c 100644
--- a/spring-boot-h2/spring-boot-h2-remote-app/src/main/java/com/baeldung/h2db/demo/ClientSpringBootApp.java
+++ b/spring-boot-h2/spring-boot-h2-database/src/main/java/com/baeldung/h2db/demo/client/ClientSpringBootApp.java
@@ -1,4 +1,4 @@
-package com.baeldung.h2db.demo;
+package com.baeldung.h2db.demo.client;
import java.sql.ResultSet;
import java.sql.SQLException;
@@ -7,16 +7,20 @@ import javax.annotation.PostConstruct;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
+import org.springframework.context.annotation.ComponentScan;
+import org.springframework.context.annotation.PropertySource;
import org.springframework.jdbc.core.JdbcTemplate;
import org.springframework.jdbc.core.RowMapper;
@SpringBootApplication
+@ComponentScan("com.baeldung.h2db.demo.client")
public class ClientSpringBootApp {
@Autowired
private JdbcTemplate jdbcTemplate;
public static void main(String[] args) {
+ System.setProperty("spring.datasource.url","jdbc:h2:tcp://localhost:9091/mem:mydb");
SpringApplication.run(ClientSpringBootApp.class, args);
}
@@ -46,4 +50,4 @@ public class ClientSpringBootApp {
}
});
}
-}
\ No newline at end of file
+}
diff --git a/spring-boot-h2/spring-boot-h2-database/src/main/java/com/baeldung/h2db/demo/SpringBootApp.java b/spring-boot-h2/spring-boot-h2-database/src/main/java/com/baeldung/h2db/demo/server/SpringBootApp.java
similarity index 88%
rename from spring-boot-h2/spring-boot-h2-database/src/main/java/com/baeldung/h2db/demo/SpringBootApp.java
rename to spring-boot-h2/spring-boot-h2-database/src/main/java/com/baeldung/h2db/demo/server/SpringBootApp.java
index 1fe080ec22..e75b42a934 100644
--- a/spring-boot-h2/spring-boot-h2-database/src/main/java/com/baeldung/h2db/demo/SpringBootApp.java
+++ b/spring-boot-h2/spring-boot-h2-database/src/main/java/com/baeldung/h2db/demo/server/SpringBootApp.java
@@ -1,4 +1,4 @@
-package com.baeldung.h2db.demo;
+package com.baeldung.h2db.demo.server;
import java.sql.ResultSet;
import java.sql.SQLException;
@@ -9,10 +9,12 @@ import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
import org.springframework.context.annotation.Bean;
+import org.springframework.context.annotation.ComponentScan;
import org.springframework.jdbc.core.JdbcTemplate;
import org.springframework.jdbc.core.RowMapper;
@SpringBootApplication
+@ComponentScan("com.baeldung.h2db.demo.server")
public class SpringBootApp {
@Autowired
@@ -24,8 +26,7 @@ public class SpringBootApp {
@PostConstruct
private void initDb() {
- System.out.println(String.format(
- "****** Creating table: %s, and Inserting test data ******", "Employees"));
+ System.out.println(String.format("****** Creating table: %s, and Inserting test data ******", "Employees"));
String sqlStatements[] = {
"drop table employees if exists",
@@ -57,4 +58,4 @@ public class SpringBootApp {
public Server inMemoryH2DatabaseServer() throws SQLException {
return Server.createTcpServer("-tcp", "-tcpAllowOthers", "-tcpPort", "9091");
}
-}
\ No newline at end of file
+}
diff --git a/spring-boot-h2/spring-boot-h2-remote-app/.gitignore b/spring-boot-h2/spring-boot-h2-remote-app/.gitignore
deleted file mode 100644
index 82eca336e3..0000000000
--- a/spring-boot-h2/spring-boot-h2-remote-app/.gitignore
+++ /dev/null
@@ -1,25 +0,0 @@
-/target/
-!.mvn/wrapper/maven-wrapper.jar
-
-### STS ###
-.apt_generated
-.classpath
-.factorypath
-.project
-.settings
-.springBeans
-.sts4-cache
-
-### IntelliJ IDEA ###
-.idea
-*.iws
-*.iml
-*.ipr
-
-### NetBeans ###
-/nbproject/private/
-/build/
-/nbbuild/
-/dist/
-/nbdist/
-/.nb-gradle/
\ No newline at end of file
diff --git a/spring-boot-h2/spring-boot-h2-remote-app/pom.xml b/spring-boot-h2/spring-boot-h2-remote-app/pom.xml
deleted file mode 100644
index 8eb59d2098..0000000000
--- a/spring-boot-h2/spring-boot-h2-remote-app/pom.xml
+++ /dev/null
@@ -1,55 +0,0 @@
-
-
- 4.0.0
-
- com.baeldung.h2db
- spring-boot-h2-remote-app
- 0.0.1-SNAPSHOT
- jar
-
- Demo Spring Boot applications that access H2 in memory database created
- in another Spring Boot application
-
-
-
- org.springframework.boot
- spring-boot-starter-parent
- 2.0.4.RELEASE
-
-
-
-
- UTF-8
- UTF-8
- 1.8
-
-
-
-
- org.springframework.boot
- spring-boot-starter-data-jpa
-
-
-
- com.h2database
- h2
-
-
-
- org.springframework.boot
- spring-boot-starter-test
- test
-
-
-
-
-
-
- org.springframework.boot
- spring-boot-maven-plugin
-
-
-
-
diff --git a/spring-boot-h2/spring-boot-h2-remote-app/src/main/resources/application.properties b/spring-boot-h2/spring-boot-h2-remote-app/src/main/resources/application.properties
deleted file mode 100644
index 6c3446f03a..0000000000
--- a/spring-boot-h2/spring-boot-h2-remote-app/src/main/resources/application.properties
+++ /dev/null
@@ -1,5 +0,0 @@
-spring.datasource.url=jdbc:h2:tcp://localhost:9091/mem:mydb
-spring.datasource.driverClassName=org.h2.Driver
-spring.datasource.username=sa
-spring.datasource.password=
-spring.jpa.hibernate.ddl-auto=create
\ No newline at end of file
diff --git a/spring-boot-h2/spring-boot-h2-remote-app/src/test/java/org/baeldung/SpringContextIntegrationTest.java b/spring-boot-h2/spring-boot-h2-remote-app/src/test/java/org/baeldung/SpringContextIntegrationTest.java
new file mode 100644
index 0000000000..f48199d4e8
--- /dev/null
+++ b/spring-boot-h2/spring-boot-h2-remote-app/src/test/java/org/baeldung/SpringContextIntegrationTest.java
@@ -0,0 +1,17 @@
+package org.baeldung;
+
+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.h2db.demo.ClientSpringBootApp;
+
+@RunWith(SpringRunner.class)
+@SpringBootTest(classes = ClientSpringBootApp.class)
+public class SpringContextIntegrationTest {
+
+ @Test
+ public void whenSpringContextIsBootstrapped_thenNoExceptions() {
+ }
+}
diff --git a/spring-boot-jasypt/pom.xml b/spring-boot-jasypt/pom.xml
index 212f524da6..de0df92678 100644
--- a/spring-boot-jasypt/pom.xml
+++ b/spring-boot-jasypt/pom.xml
@@ -5,7 +5,6 @@
com.example.jasypt
spring-boot-jasypt
- 0.0.1-SNAPSHOT
jar
spring-boot-jasypt
Demo project for Spring Boot
@@ -52,9 +51,6 @@
- UTF-8
- UTF-8
- 1.8
2.0.0
diff --git a/spring-boot-jasypt/src/test/java/com/baeldung/jasypt/CustomJasyptTest.java b/spring-boot-jasypt/src/test/java/com/baeldung/jasypt/CustomJasyptIntegrationTest.java
similarity index 94%
rename from spring-boot-jasypt/src/test/java/com/baeldung/jasypt/CustomJasyptTest.java
rename to spring-boot-jasypt/src/test/java/com/baeldung/jasypt/CustomJasyptIntegrationTest.java
index 58c2dc7bb2..c24cfe6efa 100644
--- a/spring-boot-jasypt/src/test/java/com/baeldung/jasypt/CustomJasyptTest.java
+++ b/spring-boot-jasypt/src/test/java/com/baeldung/jasypt/CustomJasyptIntegrationTest.java
@@ -14,7 +14,7 @@ import com.baeldung.jasypt.Main;
@RunWith(SpringRunner.class)
@SpringBootTest(classes = {Main.class})
-public class CustomJasyptTest {
+public class CustomJasyptIntegrationTest {
@Autowired
ApplicationContext appCtx;
diff --git a/spring-boot-jasypt/src/test/java/com/baeldung/jasypt/JasyptSimpleTest.java b/spring-boot-jasypt/src/test/java/com/baeldung/jasypt/JasyptSimpleIntegrationTest.java
similarity index 95%
rename from spring-boot-jasypt/src/test/java/com/baeldung/jasypt/JasyptSimpleTest.java
rename to spring-boot-jasypt/src/test/java/com/baeldung/jasypt/JasyptSimpleIntegrationTest.java
index f9b66b5044..e8dda73b4a 100644
--- a/spring-boot-jasypt/src/test/java/com/baeldung/jasypt/JasyptSimpleTest.java
+++ b/spring-boot-jasypt/src/test/java/com/baeldung/jasypt/JasyptSimpleIntegrationTest.java
@@ -13,7 +13,7 @@ import com.baeldung.jasypt.simple.PropertyServiceForJasyptSimple;
@RunWith(SpringRunner.class)
@SpringBootTest
-public class JasyptSimpleTest {
+public class JasyptSimpleIntegrationTest {
@Autowired
ApplicationContext appCtx;
diff --git a/spring-boot-jasypt/src/test/java/com/baeldung/jasypt/JasyptWithStarterTest.java b/spring-boot-jasypt/src/test/java/com/baeldung/jasypt/JasyptWithStarterIntegrationTest.java
similarity index 95%
rename from spring-boot-jasypt/src/test/java/com/baeldung/jasypt/JasyptWithStarterTest.java
rename to spring-boot-jasypt/src/test/java/com/baeldung/jasypt/JasyptWithStarterIntegrationTest.java
index d246c21036..5f5d409ab9 100644
--- a/spring-boot-jasypt/src/test/java/com/baeldung/jasypt/JasyptWithStarterTest.java
+++ b/spring-boot-jasypt/src/test/java/com/baeldung/jasypt/JasyptWithStarterIntegrationTest.java
@@ -14,7 +14,7 @@ import com.baeldung.jasypt.starter.PropertyServiceForJasyptStarter;
@RunWith(SpringRunner.class)
@SpringBootTest
-public class JasyptWithStarterTest {
+public class JasyptWithStarterIntegrationTest {
@Autowired
ApplicationContext appCtx;
diff --git a/spring-boot-jasypt/src/test/java/org/baeldung/SpringContextIntegrationTest.java b/spring-boot-jasypt/src/test/java/org/baeldung/SpringContextIntegrationTest.java
new file mode 100644
index 0000000000..dce3819a26
--- /dev/null
+++ b/spring-boot-jasypt/src/test/java/org/baeldung/SpringContextIntegrationTest.java
@@ -0,0 +1,17 @@
+package org.baeldung;
+
+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.jasypt.Main;
+
+@RunWith(SpringRunner.class)
+@SpringBootTest(classes = Main.class)
+public class SpringContextIntegrationTest {
+
+ @Test
+ public void whenSpringContextIsBootstrapped_thenNoExceptions() {
+ }
+}
diff --git a/spring-boot-keycloak/src/test/java/org/baeldung/SpringContextIntegrationTest.java b/spring-boot-keycloak/src/test/java/org/baeldung/SpringContextIntegrationTest.java
new file mode 100644
index 0000000000..7367568611
--- /dev/null
+++ b/spring-boot-keycloak/src/test/java/org/baeldung/SpringContextIntegrationTest.java
@@ -0,0 +1,17 @@
+package org.baeldung;
+
+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.keycloak.SpringBoot;
+
+@RunWith(SpringRunner.class)
+@SpringBootTest(classes = SpringBoot.class)
+public class SpringContextIntegrationTest {
+
+ @Test
+ public void whenSpringContextIsBootstrapped_thenNoExceptions() {
+ }
+}
diff --git a/spring-boot-logging-log4j2/disabling-console-logging/disabling-console-jul/pom.xml b/spring-boot-logging-log4j2/disabling-console-logging/disabling-console-jul/pom.xml
index c4f9b12676..c3bad74352 100644
--- a/spring-boot-logging-log4j2/disabling-console-logging/disabling-console-jul/pom.xml
+++ b/spring-boot-logging-log4j2/disabling-console-logging/disabling-console-jul/pom.xml
@@ -1,15 +1,13 @@
4.0.0
- com.baeldung
- 0.0.1-SNAPSHOT
disabling-console-jul
-
- org.springframework.boot
- spring-boot-starter-parent
- 2.0.4.RELEASE
-
+
+ com.baeldung
+ disabling-console-logging
+ 0.0.1-SNAPSHOT
+
@@ -45,9 +43,4 @@
-
- UTF-8
- UTF-8
- 1.8
-
\ No newline at end of file
diff --git a/spring-boot-logging-log4j2/disabling-console-logging/disabling-console-log4j2/pom.xml b/spring-boot-logging-log4j2/disabling-console-logging/disabling-console-log4j2/pom.xml
index 97d10c574a..f9b34ec7d9 100644
--- a/spring-boot-logging-log4j2/disabling-console-logging/disabling-console-log4j2/pom.xml
+++ b/spring-boot-logging-log4j2/disabling-console-logging/disabling-console-log4j2/pom.xml
@@ -1,49 +1,42 @@
- 4.0.0
- com.baeldung
- 0.0.1-SNAPSHOT
- disabling-console-log4j2
-
- org.springframework.boot
- spring-boot-starter-parent
- 2.0.4.RELEASE
-
+ xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
+ 4.0.0
+ disabling-console-log4j2
-
-
- org.springframework.boot
- spring-boot-starter-web
-
-
- org.springframework.boot
- spring-boot-starter
-
-
- org.springframework.boot
- spring-boot-starter-logging
-
-
-
-
- org.springframework.boot
- spring-boot-starter-log4j2
-
-
+
+ com.baeldung
+ disabling-console-logging
+ 0.0.1-SNAPSHOT
+
-
-
-
- org.springframework.boot
- spring-boot-maven-plugin
-
-
-
+
+
+ org.springframework.boot
+ spring-boot-starter-web
+
+
+ org.springframework.boot
+ spring-boot-starter
+
+
+ org.springframework.boot
+ spring-boot-starter-logging
+
+
+
+
+ org.springframework.boot
+ spring-boot-starter-log4j2
+
+
-
- UTF-8
- UTF-8
- 1.8
-
+
+
+
+ org.springframework.boot
+ spring-boot-maven-plugin
+
+
+
\ No newline at end of file
diff --git a/spring-boot-logging-log4j2/disabling-console-logging/pom.xml b/spring-boot-logging-log4j2/disabling-console-logging/pom.xml
index bc248e49b2..39a4a40f12 100644
--- a/spring-boot-logging-log4j2/disabling-console-logging/pom.xml
+++ b/spring-boot-logging-log4j2/disabling-console-logging/pom.xml
@@ -1,8 +1,6 @@
4.0.0
- 0.0.1-SNAPSHOT
- com.baeldung
disabling-console-logging
pom
Projects for Disabling Spring Boot Console Logging tutorials
diff --git a/spring-boot-logging-log4j2/pom.xml b/spring-boot-logging-log4j2/pom.xml
index ee4d07c3e8..7caf1e8690 100644
--- a/spring-boot-logging-log4j2/pom.xml
+++ b/spring-boot-logging-log4j2/pom.xml
@@ -3,9 +3,7 @@
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
4.0.0
- com.baeldung
spring-boot-logging-log4j2
- 0.0.1-SNAPSHOT
pom
Projects for Spring Boot Logging tutorials
@@ -43,10 +41,4 @@
-
- UTF-8
- UTF-8
- 1.8
-
-
diff --git a/spring-boot-logging-log4j2/spring-boot-logging-log4j2-app/pom.xml b/spring-boot-logging-log4j2/spring-boot-logging-log4j2-app/pom.xml
index 1d4c8867fb..571794167e 100644
--- a/spring-boot-logging-log4j2/spring-boot-logging-log4j2-app/pom.xml
+++ b/spring-boot-logging-log4j2/spring-boot-logging-log4j2-app/pom.xml
@@ -3,9 +3,7 @@
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
4.0.0
- com.baeldung
spring-boot-logging-log4j2-app
- 0.0.1-SNAPSHOT
jar
Demo project for Spring Boot Logging with Log4J2
diff --git a/spring-boot-logging-log4j2/spring-boot-logging-log4j2-app/src/test/java/org/baeldung/SpringContextIntegrationTest.java b/spring-boot-logging-log4j2/spring-boot-logging-log4j2-app/src/test/java/org/baeldung/SpringContextIntegrationTest.java
new file mode 100644
index 0000000000..2d46b21ba5
--- /dev/null
+++ b/spring-boot-logging-log4j2/spring-boot-logging-log4j2-app/src/test/java/org/baeldung/SpringContextIntegrationTest.java
@@ -0,0 +1,17 @@
+package org.baeldung;
+
+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.springbootlogging.SpringBootLoggingApplication;
+
+@RunWith(SpringRunner.class)
+@SpringBootTest(classes = SpringBootLoggingApplication.class)
+public class SpringContextIntegrationTest {
+
+ @Test
+ public void whenSpringContextIsBootstrapped_thenNoExceptions() {
+ }
+}
diff --git a/spring-boot-mvc/pom.xml b/spring-boot-mvc/pom.xml
index 9ca187db5d..65d23ebfc6 100644
--- a/spring-boot-mvc/pom.xml
+++ b/spring-boot-mvc/pom.xml
@@ -2,12 +2,10 @@
4.0.0
- com.baeldung
spring-boot-mvc
- 0.0.1-SNAPSHOT
jar
spring-boot-mvc
- Demo project for Spring Boot
+ Module For Spring Boot MVC
parent-boot-2
@@ -21,6 +19,16 @@
org.springframework.boot
spring-boot-starter-web
+
+ org.apache.tomcat.embed
+ tomcat-embed-jasper
+
+
+
+ org.glassfish
+ javax.faces
+ 2.3.7
+
org.springframework.boot
@@ -55,9 +63,6 @@
- UTF-8
- UTF-8
- 1.8
1.10.0
com.baeldung.springbootmvc.SpringBootMvcApplication
diff --git a/spring-boot-mvc/src/main/java/com/baeldung/springbootmvc/nosuchbeandefinitionexception/BeanA.java b/spring-boot-mvc/src/main/java/com/baeldung/nosuchbeandefinitionexception/BeanA.java
similarity index 73%
rename from spring-boot-mvc/src/main/java/com/baeldung/springbootmvc/nosuchbeandefinitionexception/BeanA.java
rename to spring-boot-mvc/src/main/java/com/baeldung/nosuchbeandefinitionexception/BeanA.java
index 21d7007917..030216b747 100644
--- a/spring-boot-mvc/src/main/java/com/baeldung/springbootmvc/nosuchbeandefinitionexception/BeanA.java
+++ b/spring-boot-mvc/src/main/java/com/baeldung/nosuchbeandefinitionexception/BeanA.java
@@ -1,4 +1,4 @@
-package com.baeldung.springbootmvc.nosuchbeandefinitionexception;
+package com.baeldung.nosuchbeandefinitionexception;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Component;
diff --git a/spring-boot-mvc/src/main/java/com/baeldung/nosuchbeandefinitionexception/BeanB.java b/spring-boot-mvc/src/main/java/com/baeldung/nosuchbeandefinitionexception/BeanB.java
new file mode 100644
index 0000000000..f0cc263504
--- /dev/null
+++ b/spring-boot-mvc/src/main/java/com/baeldung/nosuchbeandefinitionexception/BeanB.java
@@ -0,0 +1,5 @@
+package com.baeldung.nosuchbeandefinitionexception;
+
+public class BeanB {
+
+}
diff --git a/spring-boot-mvc/src/main/java/com/baeldung/springbootmvc/nosuchbeandefinitionexception/NoSuchBeanDefinitionDemoApp.java b/spring-boot-mvc/src/main/java/com/baeldung/nosuchbeandefinitionexception/NoSuchBeanDefinitionDemoApp.java
similarity index 82%
rename from spring-boot-mvc/src/main/java/com/baeldung/springbootmvc/nosuchbeandefinitionexception/NoSuchBeanDefinitionDemoApp.java
rename to spring-boot-mvc/src/main/java/com/baeldung/nosuchbeandefinitionexception/NoSuchBeanDefinitionDemoApp.java
index 01d19437c5..8709cf85ac 100644
--- a/spring-boot-mvc/src/main/java/com/baeldung/springbootmvc/nosuchbeandefinitionexception/NoSuchBeanDefinitionDemoApp.java
+++ b/spring-boot-mvc/src/main/java/com/baeldung/nosuchbeandefinitionexception/NoSuchBeanDefinitionDemoApp.java
@@ -1,4 +1,4 @@
-package com.baeldung.springbootmvc.nosuchbeandefinitionexception;
+package com.baeldung.nosuchbeandefinitionexception;
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
diff --git a/spring-boot-mvc/src/main/java/com/baeldung/springbootmvc/jsfapplication/JsfApplication.java b/spring-boot-mvc/src/main/java/com/baeldung/springbootmvc/jsfapplication/JsfApplication.java
new file mode 100644
index 0000000000..5b4250d5e3
--- /dev/null
+++ b/spring-boot-mvc/src/main/java/com/baeldung/springbootmvc/jsfapplication/JsfApplication.java
@@ -0,0 +1,31 @@
+package com.baeldung.springbootmvc.jsfapplication;
+
+import javax.faces.webapp.FacesServlet;
+
+import org.springframework.boot.SpringApplication;
+import org.springframework.boot.autoconfigure.SpringBootApplication;
+import org.springframework.boot.web.servlet.ServletRegistrationBean;
+import org.springframework.boot.web.servlet.support.SpringBootServletInitializer;
+import org.springframework.context.annotation.Bean;
+import org.springframework.context.annotation.ComponentScan;
+
+import com.baeldung.springbootmvc.jsfapplication.controller.JsfController;
+import com.baeldung.springbootmvc.jsfapplication.model.TodoDao;
+import com.baeldung.springbootmvc.jsfapplication.service.TodoService;
+
+@SpringBootApplication
+@ComponentScan(basePackageClasses = { JsfController.class, TodoDao.class, TodoService.class })
+public class JsfApplication extends SpringBootServletInitializer {
+
+ public static void main(String[] args) {
+ SpringApplication.run(JsfApplication.class, args);
+ }
+
+ @Bean
+ public ServletRegistrationBean servletRegistrationBean() {
+ FacesServlet servlet = new FacesServlet();
+ ServletRegistrationBean servletRegistrationBean = new ServletRegistrationBean(servlet, "*.jsf");
+ return servletRegistrationBean;
+ }
+
+}
diff --git a/spring-boot-mvc/src/main/java/com/baeldung/springbootmvc/jsfapplication/controller/JsfController.java b/spring-boot-mvc/src/main/java/com/baeldung/springbootmvc/jsfapplication/controller/JsfController.java
new file mode 100644
index 0000000000..a9d21175c7
--- /dev/null
+++ b/spring-boot-mvc/src/main/java/com/baeldung/springbootmvc/jsfapplication/controller/JsfController.java
@@ -0,0 +1,19 @@
+package com.baeldung.springbootmvc.jsfapplication.controller;
+
+import org.springframework.context.annotation.Scope;
+import org.springframework.stereotype.Component;
+
+@Scope(value = "session")
+@Component(value = "jsfController")
+public class JsfController {
+
+ public String loadTodoPage() {
+ checkPermission();
+ return "/todo.xhtml";
+ }
+
+ private void checkPermission() {
+ // Details omitted
+ }
+
+}
diff --git a/spring-boot-mvc/src/main/java/com/baeldung/springbootmvc/jsfapplication/model/Dao.java b/spring-boot-mvc/src/main/java/com/baeldung/springbootmvc/jsfapplication/model/Dao.java
new file mode 100644
index 0000000000..0b97c5a78e
--- /dev/null
+++ b/spring-boot-mvc/src/main/java/com/baeldung/springbootmvc/jsfapplication/model/Dao.java
@@ -0,0 +1,17 @@
+package com.baeldung.springbootmvc.jsfapplication.model;
+
+import java.util.Collection;
+import java.util.Optional;
+
+public interface Dao {
+
+ Optional get(int id);
+
+ Collection getAll();
+
+ int save(T t);
+
+ void update(T t);
+
+ void delete(T t);
+}
\ No newline at end of file
diff --git a/spring-boot-mvc/src/main/java/com/baeldung/springbootmvc/jsfapplication/model/Todo.java b/spring-boot-mvc/src/main/java/com/baeldung/springbootmvc/jsfapplication/model/Todo.java
new file mode 100644
index 0000000000..7aa8480f43
--- /dev/null
+++ b/spring-boot-mvc/src/main/java/com/baeldung/springbootmvc/jsfapplication/model/Todo.java
@@ -0,0 +1,32 @@
+package com.baeldung.springbootmvc.jsfapplication.model;
+
+public class Todo {
+
+ private int id;
+ private String message;
+ private int priority;
+
+ public int getId() {
+ return id;
+ }
+
+ public void setId(int id) {
+ this.id = id;
+ }
+
+ public String getMessage() {
+ return message;
+ }
+
+ public void setMessage(String message) {
+ this.message = message;
+ }
+
+ public int getPriority() {
+ return priority;
+ }
+
+ public void setPriority(int priority) {
+ this.priority = priority;
+ }
+}
diff --git a/spring-boot-mvc/src/main/java/com/baeldung/springbootmvc/jsfapplication/model/TodoDao.java b/spring-boot-mvc/src/main/java/com/baeldung/springbootmvc/jsfapplication/model/TodoDao.java
new file mode 100644
index 0000000000..96d44474af
--- /dev/null
+++ b/spring-boot-mvc/src/main/java/com/baeldung/springbootmvc/jsfapplication/model/TodoDao.java
@@ -0,0 +1,48 @@
+package com.baeldung.springbootmvc.jsfapplication.model;
+
+import java.util.ArrayList;
+import java.util.Collection;
+import java.util.Collections;
+import java.util.List;
+import java.util.Objects;
+import java.util.Optional;
+import java.util.stream.Collectors;
+
+import org.springframework.stereotype.Component;
+
+@Component
+public class TodoDao implements Dao {
+
+ private List todoList = new ArrayList<>();
+
+ @Override
+ public Optional get(int id) {
+ return Optional.ofNullable(todoList.get(id));
+ }
+
+ @Override
+ public Collection getAll() {
+ return todoList.stream()
+ .filter(Objects::nonNull)
+ .collect(Collectors.collectingAndThen(Collectors.toList(), Collections::unmodifiableList));
+ }
+
+ @Override
+ public int save(Todo todo) {
+ todoList.add(todo);
+ int index = todoList.size() - 1;
+ todo.setId(index);
+ return index;
+ }
+
+ @Override
+ public void update(Todo todo) {
+ todoList.set(todo.getId(), todo);
+ }
+
+ @Override
+ public void delete(Todo todo) {
+ todoList.set(todo.getId(), null);
+ }
+
+}
\ No newline at end of file
diff --git a/spring-boot-mvc/src/main/java/com/baeldung/springbootmvc/jsfapplication/service/TodoService.java b/spring-boot-mvc/src/main/java/com/baeldung/springbootmvc/jsfapplication/service/TodoService.java
new file mode 100644
index 0000000000..89af3c66b9
--- /dev/null
+++ b/spring-boot-mvc/src/main/java/com/baeldung/springbootmvc/jsfapplication/service/TodoService.java
@@ -0,0 +1,50 @@
+package com.baeldung.springbootmvc.jsfapplication.service;
+
+import java.util.Collection;
+import java.util.Comparator;
+import java.util.stream.Collectors;
+
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.context.annotation.Scope;
+import org.springframework.stereotype.Component;
+
+import com.baeldung.springbootmvc.jsfapplication.model.Dao;
+import com.baeldung.springbootmvc.jsfapplication.model.Todo;
+
+@Scope(value = "session")
+@Component(value = "todoService")
+public class TodoService {
+
+ @Autowired
+ private Dao todoDao;
+ private Todo todo = new Todo();
+
+ public void save() {
+ todoDao.save(todo);
+ todo = new Todo();
+ }
+
+ public Collection getAllTodo() {
+ return todoDao.getAll();
+ }
+
+ public Collection getAllTodoSortedByPriority() {
+ return todoDao.getAll()
+ .stream()
+ .sorted(Comparator.comparingInt(Todo::getId))
+ .collect(Collectors.toList());
+ }
+
+ public int saveTodo(Todo todo) {
+ validate(todo);
+ return todoDao.save(todo);
+ }
+
+ private void validate(Todo todo) {
+ // Details omitted
+ }
+
+ public Todo getTodo() {
+ return todo;
+ }
+}
diff --git a/spring-boot-mvc/src/main/java/com/baeldung/springbootmvc/nosuchbeandefinitionexception/BeanB.java b/spring-boot-mvc/src/main/java/com/baeldung/springbootmvc/nosuchbeandefinitionexception/BeanB.java
deleted file mode 100644
index 3dd72aacc6..0000000000
--- a/spring-boot-mvc/src/main/java/com/baeldung/springbootmvc/nosuchbeandefinitionexception/BeanB.java
+++ /dev/null
@@ -1,5 +0,0 @@
-package com.baeldung.springbootmvc.nosuchbeandefinitionexception;
-
-public class BeanB {
-
-}
diff --git a/spring-boot-mvc/src/main/webapp/WEB-INF/faces-config.xml b/spring-boot-mvc/src/main/webapp/WEB-INF/faces-config.xml
new file mode 100644
index 0000000000..9e31a2e09d
--- /dev/null
+++ b/spring-boot-mvc/src/main/webapp/WEB-INF/faces-config.xml
@@ -0,0 +1,9 @@
+
+
+
+ org.springframework.web.jsf.el.SpringBeanFacesELResolver
+
+
\ No newline at end of file
diff --git a/spring-boot-mvc/src/main/webapp/WEB-INF/web.xml b/spring-boot-mvc/src/main/webapp/WEB-INF/web.xml
new file mode 100644
index 0000000000..e0cd4d8850
--- /dev/null
+++ b/spring-boot-mvc/src/main/webapp/WEB-INF/web.xml
@@ -0,0 +1,21 @@
+
+
+
+
+ Faces Servlet
+ javax.faces.webapp.FacesServlet
+ 1
+
+
+ Faces Servlet
+ *.jsf
+
+
+ com.sun.faces.forceLoadConfiguration
+ true
+
+
\ No newline at end of file
diff --git a/spring-boot-mvc/src/main/webapp/index.xhtml b/spring-boot-mvc/src/main/webapp/index.xhtml
new file mode 100644
index 0000000000..40042b812c
--- /dev/null
+++ b/spring-boot-mvc/src/main/webapp/index.xhtml
@@ -0,0 +1,20 @@
+
+
+
+
+ TO-DO application
+
+
+
+
Welcome in the TO-DO application!
+
+ This is a static message rendered from xhtml.
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/spring-boot-mvc/src/main/webapp/todo.xhtml b/spring-boot-mvc/src/main/webapp/todo.xhtml
new file mode 100644
index 0000000000..426e101908
--- /dev/null
+++ b/spring-boot-mvc/src/main/webapp/todo.xhtml
@@ -0,0 +1,38 @@
+
+
+
+
+ TO-DO application
+
+
+
+
+ List of TO-DO items
+
+
+
+ Message
+ #{item.message}
+
+
+ Priority
+ #{item.priority}
+
+
+
+
+
+ Add new to-do item:
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/spring-boot-mvc/src/test/java/org/baeldung/SpringContextIntegrationTest.java b/spring-boot-mvc/src/test/java/org/baeldung/SpringContextIntegrationTest.java
new file mode 100644
index 0000000000..6ed93e8c44
--- /dev/null
+++ b/spring-boot-mvc/src/test/java/org/baeldung/SpringContextIntegrationTest.java
@@ -0,0 +1,17 @@
+package org.baeldung;
+
+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.springbootmvc.SpringBootMvcApplication;
+
+@RunWith(SpringRunner.class)
+@SpringBootTest(classes = SpringBootMvcApplication.class)
+public class SpringContextIntegrationTest {
+
+ @Test
+ public void whenSpringContextIsBootstrapped_thenNoExceptions() {
+ }
+}
diff --git a/spring-boot-property-exp/property-exp-custom-config/pom.xml b/spring-boot-property-exp/property-exp-custom-config/pom.xml
index 958a07a86b..ab22c5ad30 100644
--- a/spring-boot-property-exp/property-exp-custom-config/pom.xml
+++ b/spring-boot-property-exp/property-exp-custom-config/pom.xml
@@ -20,7 +20,14 @@
spring-boot-starter
${spring-boot.version}
+
+ org.springframework.boot
+ spring-boot-starter-test
+ ${spring-boot.version}
+ test
+
+
diff --git a/spring-boot-property-exp/property-exp-custom-config/src/test/java/org/baeldung/SpringContextIntegrationTest.java b/spring-boot-property-exp/property-exp-custom-config/src/test/java/org/baeldung/SpringContextIntegrationTest.java
new file mode 100644
index 0000000000..6dd3419d39
--- /dev/null
+++ b/spring-boot-property-exp/property-exp-custom-config/src/test/java/org/baeldung/SpringContextIntegrationTest.java
@@ -0,0 +1,17 @@
+package org.baeldung;
+
+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.propertyexpansion.SpringBootPropertyExpansionApp;
+
+@RunWith(SpringRunner.class)
+@SpringBootTest(classes = SpringBootPropertyExpansionApp.class)
+public class SpringContextIntegrationTest {
+
+ @Test
+ public void whenSpringContextIsBootstrapped_thenNoExceptions() {
+ }
+}
diff --git a/spring-boot-property-exp/property-exp-default-config/src/test/java/org/baeldung/SpringContextIntegrationTest.java b/spring-boot-property-exp/property-exp-default-config/src/test/java/org/baeldung/SpringContextIntegrationTest.java
new file mode 100644
index 0000000000..6dd3419d39
--- /dev/null
+++ b/spring-boot-property-exp/property-exp-default-config/src/test/java/org/baeldung/SpringContextIntegrationTest.java
@@ -0,0 +1,17 @@
+package org.baeldung;
+
+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.propertyexpansion.SpringBootPropertyExpansionApp;
+
+@RunWith(SpringRunner.class)
+@SpringBootTest(classes = SpringBootPropertyExpansionApp.class)
+public class SpringContextIntegrationTest {
+
+ @Test
+ public void whenSpringContextIsBootstrapped_thenNoExceptions() {
+ }
+}
diff --git a/spring-boot-security/README.md b/spring-boot-security/README.md
index a79e7de610..30a3218672 100644
--- a/spring-boot-security/README.md
+++ b/spring-boot-security/README.md
@@ -9,3 +9,5 @@
### Relevant Articles:
- [Spring Boot Security Auto-Configuration](http://www.baeldung.com/spring-boot-security-autoconfiguration)
+- [Spring Security for Spring Boot Integration Tests](https://www.baeldung.com/spring-security-integration-tests)
+- [Introduction to Spring Security Taglibs](https://www.baeldung.com/spring-security-taglibs)
diff --git a/spring-boot-vue/src/test/java/org/baeldung/SpringContextIntegrationTest.java b/spring-boot-vue/src/test/java/org/baeldung/SpringContextIntegrationTest.java
new file mode 100644
index 0000000000..6ed93e8c44
--- /dev/null
+++ b/spring-boot-vue/src/test/java/org/baeldung/SpringContextIntegrationTest.java
@@ -0,0 +1,17 @@
+package org.baeldung;
+
+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.springbootmvc.SpringBootMvcApplication;
+
+@RunWith(SpringRunner.class)
+@SpringBootTest(classes = SpringBootMvcApplication.class)
+public class SpringContextIntegrationTest {
+
+ @Test
+ public void whenSpringContextIsBootstrapped_thenNoExceptions() {
+ }
+}
diff --git a/spring-boot/README.MD b/spring-boot/README.MD
index 54382992d4..192c4f9fed 100644
--- a/spring-boot/README.MD
+++ b/spring-boot/README.MD
@@ -33,3 +33,4 @@ The "REST With Spring" Classes: http://bit.ly/restwithspring
- [Container Configuration in Spring Boot 2](http://www.baeldung.com/embeddedservletcontainercustomizer-configurableembeddedservletcontainer-spring-boot)
- [Introduction to Chaos Monkey](https://www.baeldung.com/spring-boot-chaos-monkey)
- [Spring Component Scanning](https://www.baeldung.com/spring-component-scanning)
+- [Load Spring Boot Properties From a JSON File](https://www.baeldung.com/spring-boot-json-properties)
diff --git a/spring-boot/pom.xml b/spring-boot/pom.xml
index 50859f674c..0ea6b6156f 100644
--- a/spring-boot/pom.xml
+++ b/spring-boot/pom.xml
@@ -145,6 +145,20 @@
chaos-monkey-spring-boot
${chaos.monkey.version}
+
+
+
+
+ org.springframework.boot
+ spring-boot-starter-log4j
+ 1.3.8.RELEASE
+
+
+ org.graylog2
+ gelfj
+ 1.1.16
+ compile
+
@@ -224,4 +238,4 @@
2.2.4
-
\ No newline at end of file
+
diff --git a/spring-boot/src/main/java/com/baeldung/graylog/GraylogDemoApplication.java b/spring-boot/src/main/java/com/baeldung/graylog/GraylogDemoApplication.java
new file mode 100644
index 0000000000..be49a0e927
--- /dev/null
+++ b/spring-boot/src/main/java/com/baeldung/graylog/GraylogDemoApplication.java
@@ -0,0 +1,17 @@
+package com.baeldung.graylog;
+
+import org.apache.log4j.Logger;
+import org.springframework.boot.SpringApplication;
+import org.springframework.boot.autoconfigure.SpringBootApplication;
+
+@SpringBootApplication
+public class GraylogDemoApplication {
+
+ private final static Logger LOG =
+ Logger.getLogger(GraylogDemoApplication.class);
+
+ public static void main(String[] args) {
+ SpringApplication.run(GraylogDemoApplication.class, args);
+ LOG.info("Hello from Spring Boot");
+ }
+}
diff --git a/spring-boot/src/main/resources/log4j.xml b/spring-boot/src/main/resources/log4j.xml
new file mode 100644
index 0000000000..61c1b7b229
--- /dev/null
+++ b/spring-boot/src/main/resources/log4j.xml
@@ -0,0 +1,24 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/spring-cloud-bus/pom.xml b/spring-cloud-bus/pom.xml
new file mode 100644
index 0000000000..d493c4e984
--- /dev/null
+++ b/spring-cloud-bus/pom.xml
@@ -0,0 +1,39 @@
+
+
+ 4.0.0
+ com.baeldung.spring.cloud
+ spring-cloud-bus
+ 1.0.0-SNAPSHOT
+ pom
+
+
+ parent-boot-1
+ com.baeldung
+ 0.0.1-SNAPSHOT
+ ../parent-boot-1
+
+
+
+ spring-cloud-config-client
+ spring-cloud-config-server
+
+
+
+
+
+ org.springframework.cloud
+ spring-cloud-dependencies
+ ${spring-cloud-dependencies.version}
+ pom
+ import
+
+
+
+
+
+ Brixton.SR7
+
+
+
diff --git a/spring-cloud-bus/spring-cloud-config-client/pom.xml b/spring-cloud-bus/spring-cloud-config-client/pom.xml
index bd9fb45587..b2b69303bf 100644
--- a/spring-cloud-bus/spring-cloud-config-client/pom.xml
+++ b/spring-cloud-bus/spring-cloud-config-client/pom.xml
@@ -1,76 +1,53 @@
- 4.0.0
+ xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
+ 4.0.0
+ spring-cloud-config-client
+ jar
- com.baeldung.spring.cloud
- spring-cloud-config-client
- 0.0.1-SNAPSHOT
- jar
+ spring-cloud-config-client
+ Demo Spring Cloud Config Client
- spring-cloud-config-client
- Demo Spring Cloud Config Client
+
+ spring-cloud-bus
+ com.baeldung.spring.cloud
+ 1.0.0-SNAPSHOT
+
-
- parent-boot-1
- com.baeldung
- 0.0.1-SNAPSHOT
- ../../parent-boot-1
-
+
+
+ org.springframework.cloud
+ spring-cloud-starter-config
+
+
+ org.springframework.boot
+ spring-boot-starter-web
+
-
-
- org.springframework.cloud
- spring-cloud-starter-config
-
-
- org.springframework.boot
- spring-boot-starter-web
-
+
+ org.springframework.boot
+ spring-boot-starter-test
+ test
+
-
- org.springframework.boot
- spring-boot-starter-test
- test
-
+
+ org.springframework.boot
+ spring-boot-actuator
+
-
- org.springframework.boot
- spring-boot-actuator
-
+
+ org.springframework.cloud
+ spring-cloud-starter-bus-amqp
+
+
-
- org.springframework.cloud
- spring-cloud-starter-bus-amqp
-
-
-
-
-
-
- org.springframework.cloud
- spring-cloud-dependencies
- ${spring-cloud.version}
- pom
- import
-
-
-
-
-
-
-
- org.springframework.boot
- spring-boot-maven-plugin
-
-
-
-
-
- UTF-8
- UTF-8
- 1.8
- Dalston.SR1
-
+
+
+
+ org.springframework.boot
+ spring-boot-maven-plugin
+
+
+
diff --git a/spring-cloud/spring-cloud-kubernetes/demo-frontend/src/test/java/com/baeldung/spring/cloud/kubernetes/frontend/KubernetesFrontendApplicationIntegrationTest.java b/spring-cloud-bus/spring-cloud-config-client/src/test/java/org/baeldung/SpringContextIntegrationTest.java
similarity index 56%
rename from spring-cloud/spring-cloud-kubernetes/demo-frontend/src/test/java/com/baeldung/spring/cloud/kubernetes/frontend/KubernetesFrontendApplicationIntegrationTest.java
rename to spring-cloud-bus/spring-cloud-config-client/src/test/java/org/baeldung/SpringContextIntegrationTest.java
index 19ad9676cb..c0298daeb1 100644
--- a/spring-cloud/spring-cloud-kubernetes/demo-frontend/src/test/java/com/baeldung/spring/cloud/kubernetes/frontend/KubernetesFrontendApplicationIntegrationTest.java
+++ b/spring-cloud-bus/spring-cloud-config-client/src/test/java/org/baeldung/SpringContextIntegrationTest.java
@@ -1,13 +1,15 @@
-package com.baeldung.spring.cloud.kubernetes.frontend;
+package org.baeldung;
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.SpringCloudConfigClientApplication;
+
@RunWith(SpringRunner.class)
-@SpringBootTest
-public class KubernetesFrontendApplicationIntegrationTest {
+@SpringBootTest(classes = SpringCloudConfigClientApplication.class)
+public class SpringContextIntegrationTest {
@Test
public void contextLoads() {
diff --git a/spring-cloud-bus/spring-cloud-config-server/pom.xml b/spring-cloud-bus/spring-cloud-config-server/pom.xml
index 194289ea1e..f50b78ff18 100644
--- a/spring-cloud-bus/spring-cloud-config-server/pom.xml
+++ b/spring-cloud-bus/spring-cloud-config-server/pom.xml
@@ -1,77 +1,54 @@
- 4.0.0
+ xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
+ 4.0.0
+ spring-cloud-config-server
+ jar
- com.baeldung.spring.cloud
- spring-cloud-config-server
- 0.0.1-SNAPSHOT
- jar
+ spring-cloud-config-server
+ Demo Spring Cloud Config Server
- spring-cloud-config-server
- Demo Spring Cloud Config Server
+
+ spring-cloud-bus
+ com.baeldung.spring.cloud
+ 1.0.0-SNAPSHOT
+
-
- parent-boot-1
- com.baeldung
- 0.0.1-SNAPSHOT
- ../../parent-boot-1
-
+
+
+ org.springframework.cloud
+ spring-cloud-config-server
+
-
-
- org.springframework.cloud
- spring-cloud-config-server
-
+
+ org.springframework.boot
+ spring-boot-starter-security
+
-
- org.springframework.boot
- spring-boot-starter-security
-
+
+ org.springframework.boot
+ spring-boot-starter-test
+ test
+
-
- org.springframework.boot
- spring-boot-starter-test
- test
-
+
+ org.springframework.cloud
+ spring-cloud-config-monitor
+
-
- org.springframework.cloud
- spring-cloud-config-monitor
-
+
+ org.springframework.cloud
+ spring-cloud-starter-stream-rabbit
+
+
-
- org.springframework.cloud
- spring-cloud-starter-stream-rabbit
-
-
-
-
-
-
- org.springframework.cloud
- spring-cloud-dependencies
- ${spring-cloud.version}
- pom
- import
-
-
-
-
-
-
-
- org.springframework.boot
- spring-boot-maven-plugin
-
-
-
-
-
- UTF-8
- UTF-8
- 1.8
- Dalston.SR1
-
+
+
+
+ org.springframework.boot
+ spring-boot-maven-plugin
+
+
+
diff --git a/spring-cloud-bus/spring-cloud-config-client/src/test/java/com/baeldung/SpringCloudConfigClientLiveTest.java b/spring-cloud-bus/spring-cloud-config-server/src/test/java/com/baeldung/SpringCloudConfigServerApplicationIntegrationTest.java
similarity index 81%
rename from spring-cloud-bus/spring-cloud-config-client/src/test/java/com/baeldung/SpringCloudConfigClientLiveTest.java
rename to spring-cloud-bus/spring-cloud-config-server/src/test/java/com/baeldung/SpringCloudConfigServerApplicationIntegrationTest.java
index 364368713a..12e0928ad8 100644
--- a/spring-cloud-bus/spring-cloud-config-client/src/test/java/com/baeldung/SpringCloudConfigClientLiveTest.java
+++ b/spring-cloud-bus/spring-cloud-config-server/src/test/java/com/baeldung/SpringCloudConfigServerApplicationIntegrationTest.java
@@ -7,7 +7,7 @@ import org.springframework.test.context.junit4.SpringRunner;
@RunWith(SpringRunner.class)
@SpringBootTest
-public class SpringCloudConfigClientLiveTest {
+public class SpringCloudConfigServerApplicationIntegrationTest {
@Test
public void contextLoads() {
diff --git a/spring-cloud-bus/spring-cloud-config-server/src/test/java/org/baeldung/SpringContextIntegrationTest.java b/spring-cloud-bus/spring-cloud-config-server/src/test/java/org/baeldung/SpringContextIntegrationTest.java
new file mode 100644
index 0000000000..c43bb9f067
--- /dev/null
+++ b/spring-cloud-bus/spring-cloud-config-server/src/test/java/org/baeldung/SpringContextIntegrationTest.java
@@ -0,0 +1,18 @@
+package org.baeldung;
+
+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.SpringCloudConfigServerApplication;
+
+@RunWith(SpringRunner.class)
+@SpringBootTest(classes = SpringCloudConfigServerApplication.class)
+public class SpringContextIntegrationTest {
+
+ @Test
+ public void contextLoads() {
+ }
+
+}
diff --git a/spring-cloud-data-flow/batch-job/src/test/java/org/baeldung/SpringContextIntegrationTest.java b/spring-cloud-data-flow/batch-job/src/test/java/org/baeldung/SpringContextIntegrationTest.java
new file mode 100644
index 0000000000..b87ace74a4
--- /dev/null
+++ b/spring-cloud-data-flow/batch-job/src/test/java/org/baeldung/SpringContextIntegrationTest.java
@@ -0,0 +1,18 @@
+package org.baeldung;
+
+import org.baeldung.spring.cloud.JobConfiguration;
+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.SpringRunner;
+
+@RunWith(SpringRunner.class)
+@SpringBootTest
+@ContextConfiguration(classes = JobConfiguration.class)
+public class SpringContextIntegrationTest {
+
+ @Test
+ public void whenSpringContextIsBootstrapped_thenNoExceptions() {
+ }
+}
diff --git a/spring-cloud-data-flow/data-flow-server/src/test/java/org/baeldung/SpringContextIntegrationTest.java b/spring-cloud-data-flow/data-flow-server/src/test/java/org/baeldung/SpringContextIntegrationTest.java
new file mode 100644
index 0000000000..eb2a5c54ef
--- /dev/null
+++ b/spring-cloud-data-flow/data-flow-server/src/test/java/org/baeldung/SpringContextIntegrationTest.java
@@ -0,0 +1,16 @@
+package org.baeldung;
+
+import org.baeldung.spring.cloud.DataFlowServerApplication;
+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 = DataFlowServerApplication.class)
+public class SpringContextIntegrationTest {
+
+ @Test
+ public void whenSpringContextIsBootstrapped_thenNoExceptions() {
+ }
+}
diff --git a/spring-cloud-data-flow/data-flow-shell/src/test/java/org/baeldung/SpringContextIntegrationTest.java b/spring-cloud-data-flow/data-flow-shell/src/test/java/org/baeldung/SpringContextIntegrationTest.java
new file mode 100644
index 0000000000..28dbc9a8d8
--- /dev/null
+++ b/spring-cloud-data-flow/data-flow-shell/src/test/java/org/baeldung/SpringContextIntegrationTest.java
@@ -0,0 +1,17 @@
+package org.baeldung;
+
+import org.baeldung.spring.cloud.DataFlowShellApplication;
+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 = DataFlowShellApplication.class)
+public class SpringContextIntegrationTest {
+
+ @Test
+ public void contextLoads() {
+ }
+
+}
diff --git a/spring-cloud-data-flow/log-sink/src/test/java/org/baeldung/SpringContextIntegrationTest.java b/spring-cloud-data-flow/log-sink/src/test/java/org/baeldung/SpringContextIntegrationTest.java
new file mode 100644
index 0000000000..8dc814ddce
--- /dev/null
+++ b/spring-cloud-data-flow/log-sink/src/test/java/org/baeldung/SpringContextIntegrationTest.java
@@ -0,0 +1,17 @@
+package org.baeldung;
+
+import org.baeldung.spring.cloud.LogSinkApplication;
+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 = LogSinkApplication.class)
+public class SpringContextIntegrationTest {
+
+ @Test
+ public void contextLoads() {
+ }
+
+}
diff --git a/spring-cloud-data-flow/time-processor/src/test/java/org/baeldung/SpringContextIntegrationTest.java b/spring-cloud-data-flow/time-processor/src/test/java/org/baeldung/SpringContextIntegrationTest.java
new file mode 100644
index 0000000000..dcfeafa2bb
--- /dev/null
+++ b/spring-cloud-data-flow/time-processor/src/test/java/org/baeldung/SpringContextIntegrationTest.java
@@ -0,0 +1,17 @@
+package org.baeldung;
+
+import org.baeldung.spring.cloud.TimeProcessorApplication;
+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 = TimeProcessorApplication.class)
+public class SpringContextIntegrationTest {
+
+ @Test
+ public void contextLoads() {
+ }
+
+}
diff --git a/spring-cloud-data-flow/time-source/src/test/java/org/baeldung/SpringContextIntegrationTest.java b/spring-cloud-data-flow/time-source/src/test/java/org/baeldung/SpringContextIntegrationTest.java
new file mode 100644
index 0000000000..2c402824f0
--- /dev/null
+++ b/spring-cloud-data-flow/time-source/src/test/java/org/baeldung/SpringContextIntegrationTest.java
@@ -0,0 +1,17 @@
+package org.baeldung;
+
+import org.baeldung.spring.cloud.TimeSourceApplication;
+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 = TimeSourceApplication.class)
+public class SpringContextIntegrationTest {
+
+ @Test
+ public void contextLoads() {
+ }
+
+}
diff --git a/spring-cloud-data-flow/time-source/src/test/java/org/baeldung/spring/cloud/TimeSourceApplicationIntegrationTest.java b/spring-cloud-data-flow/time-source/src/test/java/org/baeldung/spring/cloud/TimeSourceApplicationIntegrationTest.java
deleted file mode 100644
index 6d71a785a3..0000000000
--- a/spring-cloud-data-flow/time-source/src/test/java/org/baeldung/spring/cloud/TimeSourceApplicationIntegrationTest.java
+++ /dev/null
@@ -1,16 +0,0 @@
-package org.baeldung.spring.cloud;
-
-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 TimeSourceApplicationIntegrationTest {
-
- @Test
- public void contextLoads() {
- }
-
-}
diff --git a/spring-cloud/pom.xml b/spring-cloud/pom.xml
index 376d8099ed..924ea2be36 100644
--- a/spring-cloud/pom.xml
+++ b/spring-cloud/pom.xml
@@ -35,6 +35,8 @@
spring-cloud-archaius
spring-cloud-functions
spring-cloud-vault
+ spring-cloud-security
+ spring-cloud-task
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/org/baeldung/SpringContextIntegrationTest.java
new file mode 100644
index 0000000000..e5ebbce1aa
--- /dev/null
+++ b/spring-cloud/spring-cloud-archaius/additional-sources-simple/src/test/java/org/baeldung/SpringContextIntegrationTest.java
@@ -0,0 +1,17 @@
+package org.baeldung;
+
+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 {
+
+ @Test
+ public void whenSpringContextIsBootstrapped_thenNoExceptions() {
+ }
+}
diff --git a/spring-cloud/spring-cloud-archaius/basic-config/src/test/java/org/baeldung/SpringContextIntegrationTest.java b/spring-cloud/spring-cloud-archaius/basic-config/src/test/java/org/baeldung/SpringContextIntegrationTest.java
new file mode 100644
index 0000000000..16542981e8
--- /dev/null
+++ b/spring-cloud/spring-cloud-archaius/basic-config/src/test/java/org/baeldung/SpringContextIntegrationTest.java
@@ -0,0 +1,17 @@
+package org.baeldung;
+
+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.basic.BasicArchaiusApplication;
+
+@RunWith(SpringRunner.class)
+@SpringBootTest(classes = BasicArchaiusApplication.class)
+public class SpringContextIntegrationTest {
+
+ @Test
+ public void whenSpringContextIsBootstrapped_thenNoExceptions() {
+ }
+}
diff --git a/spring-cloud/spring-cloud-archaius/dynamodb-config/pom.xml b/spring-cloud/spring-cloud-archaius/dynamodb-config/pom.xml
new file mode 100644
index 0000000000..3ffbf8f619
--- /dev/null
+++ b/spring-cloud/spring-cloud-archaius/dynamodb-config/pom.xml
@@ -0,0 +1,47 @@
+
+
+ 4.0.0
+ dynamodb-config
+ jar
+
+
+ com.baeldung.spring.cloud
+ spring-cloud-archaius
+ 1.0.0-SNAPSHOT
+ ..
+
+
+
+
+ org.springframework.boot
+ spring-boot-starter-web
+
+
+ com.amazonaws
+ aws-java-sdk-dynamodb
+ ${aws.sdk.dynamo.version}
+
+
+ com.github.derjust
+ spring-data-dynamodb
+ ${spring.dynamo.version}
+
+
+ com.netflix.archaius
+ archaius-aws
+ ${archaius.version}
+
+
+ org.projectlombok
+ lombok
+ provided
+
+
+
+
+ 1.11.407
+ 5.0.3
+ 0.7.6
+
+
diff --git a/spring-cloud/spring-cloud-archaius/dynamodb-config/src/main/java/com/baeldung/spring/cloud/archaius/dynamosources/DynamoSourcesApplication.java b/spring-cloud/spring-cloud-archaius/dynamodb-config/src/main/java/com/baeldung/spring/cloud/archaius/dynamosources/DynamoSourcesApplication.java
new file mode 100644
index 0000000000..ee08f2b1fb
--- /dev/null
+++ b/spring-cloud/spring-cloud-archaius/dynamodb-config/src/main/java/com/baeldung/spring/cloud/archaius/dynamosources/DynamoSourcesApplication.java
@@ -0,0 +1,12 @@
+package com.baeldung.spring.cloud.archaius.dynamosources;
+
+import org.springframework.boot.SpringApplication;
+import org.springframework.boot.autoconfigure.SpringBootApplication;
+
+@SpringBootApplication
+public class DynamoSourcesApplication {
+
+ public static void main(String[] args) {
+ SpringApplication.run(DynamoSourcesApplication.class, args);
+ }
+}
diff --git a/spring-cloud/spring-cloud-archaius/dynamodb-config/src/main/java/com/baeldung/spring/cloud/archaius/dynamosources/config/ApplicationPropertiesConfigurations.java b/spring-cloud/spring-cloud-archaius/dynamodb-config/src/main/java/com/baeldung/spring/cloud/archaius/dynamosources/config/ApplicationPropertiesConfigurations.java
new file mode 100644
index 0000000000..7b533e8021
--- /dev/null
+++ b/spring-cloud/spring-cloud-archaius/dynamodb-config/src/main/java/com/baeldung/spring/cloud/archaius/dynamosources/config/ApplicationPropertiesConfigurations.java
@@ -0,0 +1,52 @@
+package com.baeldung.spring.cloud.archaius.dynamosources.config;
+
+import java.util.Arrays;
+
+import org.apache.commons.configuration.AbstractConfiguration;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.context.annotation.Bean;
+import org.springframework.context.annotation.Configuration;
+
+import com.amazonaws.services.dynamodbv2.AmazonDynamoDB;
+import com.amazonaws.services.dynamodbv2.datamodeling.DynamoDBMapper;
+import com.amazonaws.services.dynamodbv2.model.CreateTableRequest;
+import com.amazonaws.services.dynamodbv2.model.ProvisionedThroughput;
+import com.amazonaws.services.dynamodbv2.util.TableUtils;
+import com.baeldung.spring.cloud.archaius.dynamosources.dynamodb.ArchaiusProperties;
+import com.baeldung.spring.cloud.archaius.dynamosources.dynamodb.ArchaiusPropertiesRepository;
+import com.netflix.config.DynamicConfiguration;
+import com.netflix.config.FixedDelayPollingScheduler;
+import com.netflix.config.PolledConfigurationSource;
+import com.netflix.config.sources.DynamoDbConfigurationSource;
+
+@Configuration
+public class ApplicationPropertiesConfigurations {
+
+ @Autowired
+ AmazonDynamoDB amazonDynamoDb;
+
+ @Autowired
+ private ArchaiusPropertiesRepository repository;
+
+ @Bean
+ public AbstractConfiguration addApplicationPropertiesSource() {
+ // Normally, the DB Table would be already created and populated.
+ // In this case, we'll do it just before creating the archaius config source that uses it
+ initDatabase();
+ PolledConfigurationSource source = new DynamoDbConfigurationSource(amazonDynamoDb);
+ return new DynamicConfiguration(source, new FixedDelayPollingScheduler());
+ }
+
+ private void initDatabase() {
+ // Create the table
+ DynamoDBMapper mapper = new DynamoDBMapper(amazonDynamoDb);
+ CreateTableRequest tableRequest = mapper.generateCreateTableRequest(ArchaiusProperties.class);
+ tableRequest.setProvisionedThroughput(new ProvisionedThroughput(1L, 1L));
+ TableUtils.createTableIfNotExists(amazonDynamoDb, tableRequest);
+
+ // Populate the table
+ ArchaiusProperties property = new ArchaiusProperties("baeldung.archaius.properties.one", "one FROM:dynamoDB");
+ ArchaiusProperties property3 = new ArchaiusProperties("baeldung.archaius.properties.three", "three FROM:dynamoDB");
+ repository.saveAll(Arrays.asList(property, property3));
+ }
+}
diff --git a/spring-cloud/spring-cloud-archaius/dynamodb-config/src/main/java/com/baeldung/spring/cloud/archaius/dynamosources/config/DynamoDbConfiguration.java b/spring-cloud/spring-cloud-archaius/dynamodb-config/src/main/java/com/baeldung/spring/cloud/archaius/dynamosources/config/DynamoDbConfiguration.java
new file mode 100644
index 0000000000..8f12051a7f
--- /dev/null
+++ b/spring-cloud/spring-cloud-archaius/dynamodb-config/src/main/java/com/baeldung/spring/cloud/archaius/dynamosources/config/DynamoDbConfiguration.java
@@ -0,0 +1,46 @@
+package com.baeldung.spring.cloud.archaius.dynamosources.config;
+
+import org.socialsignin.spring.data.dynamodb.repository.config.EnableDynamoDBRepositories;
+import org.springframework.beans.factory.annotation.Value;
+import org.springframework.context.annotation.Bean;
+import org.springframework.context.annotation.Configuration;
+
+import com.amazonaws.auth.AWSCredentialsProvider;
+import com.amazonaws.auth.AWSStaticCredentialsProvider;
+import com.amazonaws.auth.BasicAWSCredentials;
+import com.amazonaws.client.builder.AwsClientBuilder.EndpointConfiguration;
+import com.amazonaws.regions.Regions;
+import com.amazonaws.services.dynamodbv2.AmazonDynamoDB;
+import com.amazonaws.services.dynamodbv2.AmazonDynamoDBClientBuilder;
+
+@Configuration
+@EnableDynamoDBRepositories(basePackages = "com.baeldung.spring.cloud.archaius.dynamosources.dynamodb")
+public class DynamoDbConfiguration {
+
+ @Value("${amazon.dynamodb.endpoint}")
+ private String amazonDynamoDBEndpoint;
+
+ @Value("${aws.accessKeyId}")
+ private String amazonDynamoDBAccessKeyId;
+
+ @Value("${aws.secretKey}")
+ private String amazonDynamoDBSecretKey;
+
+ @Bean
+ public AmazonDynamoDB amazonDynamoDB() {
+ AmazonDynamoDB amazonDynamoDB = AmazonDynamoDBClientBuilder.standard()
+ .withCredentials(amazonAWSCredentials())
+ .withEndpointConfiguration(setupEndpointConfiguration())
+ .build();
+
+ return amazonDynamoDB;
+ }
+
+ private AWSCredentialsProvider amazonAWSCredentials() {
+ return new AWSStaticCredentialsProvider(new BasicAWSCredentials(amazonDynamoDBAccessKeyId, amazonDynamoDBSecretKey));
+ }
+
+ private EndpointConfiguration setupEndpointConfiguration() {
+ return new EndpointConfiguration(amazonDynamoDBEndpoint, Regions.DEFAULT_REGION.getName());
+ }
+}
diff --git a/spring-cloud/spring-cloud-archaius/dynamodb-config/src/main/java/com/baeldung/spring/cloud/archaius/dynamosources/controller/ConfigPropertiesController.java b/spring-cloud/spring-cloud-archaius/dynamodb-config/src/main/java/com/baeldung/spring/cloud/archaius/dynamosources/controller/ConfigPropertiesController.java
new file mode 100644
index 0000000000..2ac5055fe3
--- /dev/null
+++ b/spring-cloud/spring-cloud-archaius/dynamodb-config/src/main/java/com/baeldung/spring/cloud/archaius/dynamosources/controller/ConfigPropertiesController.java
@@ -0,0 +1,32 @@
+package com.baeldung.spring.cloud.archaius.dynamosources.controller;
+
+import java.util.HashMap;
+import java.util.Map;
+
+import org.springframework.web.bind.annotation.GetMapping;
+import org.springframework.web.bind.annotation.RestController;
+
+import com.netflix.config.DynamicPropertyFactory;
+import com.netflix.config.DynamicStringProperty;
+
+@RestController
+public class ConfigPropertiesController {
+
+ private DynamicStringProperty propertyOneWithDynamic = DynamicPropertyFactory.getInstance()
+ .getStringProperty("baeldung.archaius.properties.one", "not found!");
+
+ private DynamicStringProperty propertyTwoWithDynamic = DynamicPropertyFactory.getInstance()
+ .getStringProperty("baeldung.archaius.properties.two", "not found!");
+
+ private DynamicStringProperty propertyThreeWithDynamic = DynamicPropertyFactory.getInstance()
+ .getStringProperty("baeldung.archaius.properties.three", "not found!");
+
+ @GetMapping("/properties-from-dynamic")
+ public Map getPropertiesFromDynamic() {
+ Map properties = new HashMap<>();
+ properties.put(propertyOneWithDynamic.getName(), propertyOneWithDynamic.get());
+ properties.put(propertyTwoWithDynamic.getName(), propertyTwoWithDynamic.get());
+ properties.put(propertyThreeWithDynamic.getName(), propertyThreeWithDynamic.get());
+ return properties;
+ }
+}
diff --git a/spring-cloud/spring-cloud-archaius/dynamodb-config/src/main/java/com/baeldung/spring/cloud/archaius/dynamosources/dynamodb/ArchaiusProperties.java b/spring-cloud/spring-cloud-archaius/dynamodb-config/src/main/java/com/baeldung/spring/cloud/archaius/dynamosources/dynamodb/ArchaiusProperties.java
new file mode 100644
index 0000000000..016f8433cf
--- /dev/null
+++ b/spring-cloud/spring-cloud-archaius/dynamodb-config/src/main/java/com/baeldung/spring/cloud/archaius/dynamosources/dynamodb/ArchaiusProperties.java
@@ -0,0 +1,23 @@
+package com.baeldung.spring.cloud.archaius.dynamosources.dynamodb;
+
+import com.amazonaws.services.dynamodbv2.datamodeling.DynamoDBAttribute;
+import com.amazonaws.services.dynamodbv2.datamodeling.DynamoDBHashKey;
+import com.amazonaws.services.dynamodbv2.datamodeling.DynamoDBTable;
+
+import lombok.AllArgsConstructor;
+import lombok.Getter;
+import lombok.Setter;
+
+@Getter
+@Setter
+@AllArgsConstructor
+@DynamoDBTable(tableName = "archaiusProperties")
+public class ArchaiusProperties {
+
+ @DynamoDBHashKey
+ @DynamoDBAttribute
+ private String key;
+
+ @DynamoDBAttribute
+ private String value;
+}
diff --git a/spring-cloud/spring-cloud-archaius/dynamodb-config/src/main/java/com/baeldung/spring/cloud/archaius/dynamosources/dynamodb/ArchaiusPropertiesRepository.java b/spring-cloud/spring-cloud-archaius/dynamodb-config/src/main/java/com/baeldung/spring/cloud/archaius/dynamosources/dynamodb/ArchaiusPropertiesRepository.java
new file mode 100644
index 0000000000..fbcc953261
--- /dev/null
+++ b/spring-cloud/spring-cloud-archaius/dynamodb-config/src/main/java/com/baeldung/spring/cloud/archaius/dynamosources/dynamodb/ArchaiusPropertiesRepository.java
@@ -0,0 +1,7 @@
+package com.baeldung.spring.cloud.archaius.dynamosources.dynamodb;
+
+import org.springframework.data.repository.CrudRepository;
+
+public interface ArchaiusPropertiesRepository extends CrudRepository {
+
+}
diff --git a/spring-cloud/spring-cloud-archaius/dynamodb-config/src/main/resources/application.properties b/spring-cloud/spring-cloud-archaius/dynamodb-config/src/main/resources/application.properties
new file mode 100644
index 0000000000..3823d2685f
--- /dev/null
+++ b/spring-cloud/spring-cloud-archaius/dynamodb-config/src/main/resources/application.properties
@@ -0,0 +1,6 @@
+server.port=8082
+baeldung.archaius.properties.one=one FROM:application.properties
+baeldung.archaius.properties.two=two FROM:application.properties
+amazon.dynamodb.endpoint=http://localhost:8000/
+aws.accessKeyId=key
+aws.secretKey=key2
diff --git a/spring-cloud/spring-cloud-archaius/dynamodb-config/src/test/java/com/baeldung/spring/cloud/archaius/dynamosources/ArchaiusDynamoDbLiveTest.java b/spring-cloud/spring-cloud-archaius/dynamodb-config/src/test/java/com/baeldung/spring/cloud/archaius/dynamosources/ArchaiusDynamoDbLiveTest.java
new file mode 100644
index 0000000000..3802cb99cd
--- /dev/null
+++ b/spring-cloud/spring-cloud-archaius/dynamodb-config/src/test/java/com/baeldung/spring/cloud/archaius/dynamosources/ArchaiusDynamoDbLiveTest.java
@@ -0,0 +1,53 @@
+package com.baeldung.spring.cloud.archaius.dynamosources;
+
+import static org.assertj.core.api.Assertions.assertThat;
+
+import java.util.HashMap;
+import java.util.Map;
+
+import org.junit.Test;
+import org.junit.runner.RunWith;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.boot.test.context.SpringBootTest;
+import org.springframework.boot.test.web.client.TestRestTemplate;
+import org.springframework.context.ConfigurableApplicationContext;
+import org.springframework.core.ParameterizedTypeReference;
+import org.springframework.http.HttpMethod;
+import org.springframework.test.context.junit4.SpringRunner;
+
+@RunWith(SpringRunner.class)
+@SpringBootTest(webEnvironment = SpringBootTest.WebEnvironment.RANDOM_PORT)
+public class ArchaiusDynamoDbLiveTest {
+
+ private static final String BASE_URL = "http://localhost:8082";
+
+ private static final String DYNAMIC_PROPERTIES_URL = "/properties-from-dynamic";
+ private static final Map EXPECTED_ARCHAIUS_PROPERTIES = createExpectedArchaiusProperties();
+
+ private static Map createExpectedArchaiusProperties() {
+ Map map = new HashMap<>();
+ map.put("baeldung.archaius.properties.one", "one FROM:dynamoDB");
+ map.put("baeldung.archaius.properties.two", "two FROM:application.properties");
+ map.put("baeldung.archaius.properties.three", "three FROM:dynamoDB");
+ return map;
+ }
+
+ @Autowired
+ ConfigurableApplicationContext context;
+
+ @Autowired
+ private TestRestTemplate template;
+
+ private Map exchangeAsMap(String uri, ParameterizedTypeReference
-
- 1.2.2.RELEASE
- 1.4.2.RELEASE
-
diff --git a/spring-cloud/spring-cloud-config/client/src/test/java/com/baeldung/spring/cloud/config/client/ConfigClientLiveTest.java b/spring-cloud/spring-cloud-config/client/src/test/java/org/baeldung/SpringContextIntegrationTest.java
similarity index 76%
rename from spring-cloud/spring-cloud-config/client/src/test/java/com/baeldung/spring/cloud/config/client/ConfigClientLiveTest.java
rename to spring-cloud/spring-cloud-config/client/src/test/java/org/baeldung/SpringContextIntegrationTest.java
index 9bca369c64..d727772cf9 100644
--- a/spring-cloud/spring-cloud-config/client/src/test/java/com/baeldung/spring/cloud/config/client/ConfigClientLiveTest.java
+++ b/spring-cloud/spring-cloud-config/client/src/test/java/org/baeldung/SpringContextIntegrationTest.java
@@ -1,4 +1,4 @@
-package com.baeldung.spring.cloud.config.client;
+package org.baeldung;
import org.junit.Test;
import org.junit.runner.RunWith;
@@ -6,10 +6,12 @@ import org.springframework.boot.test.context.SpringBootTest;
import org.springframework.test.context.junit4.SpringJUnit4ClassRunner;
import org.springframework.test.context.web.WebAppConfiguration;
+import com.baeldung.spring.cloud.config.client.ConfigClient;
+
@RunWith(SpringJUnit4ClassRunner.class)
@SpringBootTest(classes = ConfigClient.class)
@WebAppConfiguration
-public class ConfigClientLiveTest {
+public class SpringContextIntegrationTest {
@Test
public void contextLoads() {
}
diff --git a/spring-cloud/spring-cloud-config/server/pom.xml b/spring-cloud/spring-cloud-config/server/pom.xml
index 61b27244b6..7bbb903cf9 100644
--- a/spring-cloud/spring-cloud-config/server/pom.xml
+++ b/spring-cloud/spring-cloud-config/server/pom.xml
@@ -15,23 +15,19 @@
org.springframework.cloud
spring-cloud-config-server
- ${spring-cloud-config-server.version}
-
+
org.springframework.boot
spring-boot-starter-security
- ${org.springframework.boot.version}
-
+
org.springframework.boot
spring-boot-starter-web
- ${org.springframework.boot.version}
-
+
org.springframework.boot
spring-boot-starter-test
- ${org.springframework.boot.version}
test
@@ -41,14 +37,8 @@
org.springframework.boot
spring-boot-maven-plugin
- ${org.springframework.boot.version}
-
+
-
- 1.2.2.RELEASE
- 1.4.2.RELEASE
-
-
diff --git a/spring-cloud/spring-cloud-config/server/src/test/java/org/baeldung/SpringContextIntegrationTest.java b/spring-cloud/spring-cloud-config/server/src/test/java/org/baeldung/SpringContextIntegrationTest.java
new file mode 100644
index 0000000000..cd30392d4f
--- /dev/null
+++ b/spring-cloud/spring-cloud-config/server/src/test/java/org/baeldung/SpringContextIntegrationTest.java
@@ -0,0 +1,18 @@
+package org.baeldung;
+
+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;
+
+import com.baeldung.spring.cloud.config.server.ConfigServer;
+
+@RunWith(SpringJUnit4ClassRunner.class)
+@SpringBootTest(classes = ConfigServer.class)
+@WebAppConfiguration
+public class SpringContextIntegrationTest {
+ @Test
+ public void contextLoads() {
+ }
+}
diff --git a/spring-cloud/spring-cloud-connectors-heroku/src/test/java/org/baeldung/SpringContextIntegrationTest.java b/spring-cloud/spring-cloud-connectors-heroku/src/test/java/org/baeldung/SpringContextIntegrationTest.java
new file mode 100644
index 0000000000..a705f18bc6
--- /dev/null
+++ b/spring-cloud/spring-cloud-connectors-heroku/src/test/java/org/baeldung/SpringContextIntegrationTest.java
@@ -0,0 +1,17 @@
+package org.baeldung;
+
+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.connectors.heroku.ConnectorsHerokuApplication;
+
+@RunWith(SpringRunner.class)
+@SpringBootTest(classes = ConnectorsHerokuApplication.class)
+public class SpringContextIntegrationTest {
+
+ @Test
+ public void whenSpringContextIsBootstrapped_thenNoExceptions() {
+ }
+}
diff --git a/spring-cloud/spring-cloud-consul/pom.xml b/spring-cloud/spring-cloud-consul/pom.xml
index 8181832bea..2a2714d597 100644
--- a/spring-cloud/spring-cloud-consul/pom.xml
+++ b/spring-cloud/spring-cloud-consul/pom.xml
@@ -25,6 +25,13 @@
spring-cloud-starter-consul-config
${spring-cloud-starter-consul.version}
+
+
+ org.springframework.boot
+ spring-boot-starter-test
+ 1.5.10.RELEASE
+ test
+
diff --git a/spring-cloud/spring-cloud-consul/src/test/java/org/baeldung/SpringContextIntegrationTest.java b/spring-cloud/spring-cloud-consul/src/test/java/org/baeldung/SpringContextIntegrationTest.java
new file mode 100644
index 0000000000..6290ccc03e
--- /dev/null
+++ b/spring-cloud/spring-cloud-consul/src/test/java/org/baeldung/SpringContextIntegrationTest.java
@@ -0,0 +1,20 @@
+package org.baeldung;
+
+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.consul.discovery.DiscoveryClientApplication;
+import com.baeldung.spring.cloud.consul.health.ServiceDiscoveryApplication;
+import com.baeldung.spring.cloud.consul.properties.DistributedPropertiesApplication;
+
+@RunWith(SpringRunner.class)
+@SpringBootTest(classes = { DiscoveryClientApplication.class, ServiceDiscoveryApplication.class,
+ DistributedPropertiesApplication.class })
+public class SpringContextIntegrationTest {
+
+ @Test
+ public void whenSpringContextIsBootstrapped_thenNoExceptions() {
+ }
+}
diff --git a/spring-cloud/spring-cloud-contract/spring-cloud-contract-consumer/src/test/java/org/baeldung/SpringContextIntegrationTest.java b/spring-cloud/spring-cloud-contract/spring-cloud-contract-consumer/src/test/java/org/baeldung/SpringContextIntegrationTest.java
new file mode 100644
index 0000000000..1c1192cc3f
--- /dev/null
+++ b/spring-cloud/spring-cloud-contract/spring-cloud-contract-consumer/src/test/java/org/baeldung/SpringContextIntegrationTest.java
@@ -0,0 +1,17 @@
+package org.baeldung;
+
+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.springcloudcontractconsumer.SpringCloudContractConsumerApplication;
+
+@RunWith(SpringRunner.class)
+@SpringBootTest(classes = SpringCloudContractConsumerApplication.class)
+public class SpringContextIntegrationTest {
+
+ @Test
+ public void whenSpringContextIsBootstrapped_thenNoExceptions() {
+ }
+}
diff --git a/spring-cloud/spring-cloud-contract/spring-cloud-contract-producer/src/test/java/org/baeldung/SpringContextIntegrationTest.java b/spring-cloud/spring-cloud-contract/spring-cloud-contract-producer/src/test/java/org/baeldung/SpringContextIntegrationTest.java
new file mode 100644
index 0000000000..2b6703ae5c
--- /dev/null
+++ b/spring-cloud/spring-cloud-contract/spring-cloud-contract-producer/src/test/java/org/baeldung/SpringContextIntegrationTest.java
@@ -0,0 +1,17 @@
+package org.baeldung;
+
+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.springcloudcontractproducer.SpringCloudContractProducerApplication;
+
+@RunWith(SpringRunner.class)
+@SpringBootTest(classes = SpringCloudContractProducerApplication.class)
+public class SpringContextIntegrationTest {
+
+ @Test
+ public void whenSpringContextIsBootstrapped_thenNoExceptions() {
+ }
+}
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 c7822d51ee..8bc51adcab 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
@@ -28,6 +28,24 @@
spring-boot-starter-web
${spring-boot-starter-web.version}
+
+ org.springframework.boot
+ spring-boot-starter-test
+ 1.5.10.RELEASE
+ test
+
+
+ org.springframework.boot
+ spring-boot-test
+ 1.5.10.RELEASE
+ test
+
+
+ org.springframework
+ spring-test
+ 4.0.5.RELEASE
+ test
+
diff --git a/spring-cloud/spring-cloud-functions/README.MD b/spring-cloud/spring-cloud-functions/README.MD
new file mode 100644
index 0000000000..c766dd1dc6
--- /dev/null
+++ b/spring-cloud/spring-cloud-functions/README.MD
@@ -0,0 +1,2 @@
+### Relevant Articles:
+- [Serverless Functions with Spring Cloud Function](https://www.baeldung.com/spring-cloud-function)
diff --git a/spring-cloud/spring-cloud-functions/pom.xml b/spring-cloud/spring-cloud-functions/pom.xml
index e3c17329d0..8b2b0ad385 100644
--- a/spring-cloud/spring-cloud-functions/pom.xml
+++ b/spring-cloud/spring-cloud-functions/pom.xml
@@ -1,19 +1,94 @@
-
+
4.0.0
- spring-cloud-functions
- pom
+
+ com.baeldung.spring
+ cloudfunction-aws
+ 0.0.1-SNAPSHOT
+ jar
+
+ cloudfunction-aws
+ Demo project for Spring Cloud Function
- parent-boot-2
- com.baeldung
- 0.0.1-SNAPSHOT
- ../../parent-boot-2
+ org.springframework.boot
+ spring-boot-starter-parent
+ 2.0.4.RELEASE
+
-
- spring-cloud-function-aws
-
-
-
\ No newline at end of file
+
+ UTF-8
+ UTF-8
+ 1.8
+ 1.0.1.RELEASE
+ 2.0.2
+
+
+
+
+ org.springframework.cloud
+ spring-cloud-function-adapter-aws
+ ${spring-cloud-function.version}
+
+
+
+
+ org.springframework.cloud
+ spring-cloud-starter-function-web
+ 1.0.1.RELEASE
+
+
+ com.amazonaws
+ aws-lambda-java-events
+ ${aws-lambda-events.version}
+ provided
+
+
+ com.amazonaws
+ aws-lambda-java-core
+ 1.1.0
+ provided
+
+
+ org.springframework.boot
+ spring-boot-starter-test
+ test
+
+
+
+
+
+
+ org.apache.maven.plugins
+ maven-deploy-plugin
+
+ true
+
+
+
+ org.springframework.boot
+ spring-boot-maven-plugin
+
+
+ org.springframework.boot.experimental
+ spring-boot-thin-layout
+ 1.0.10.RELEASE
+
+
+
+
+ org.apache.maven.plugins
+ maven-shade-plugin
+
+ false
+ true
+ aws
+
+
+
+
+
+
diff --git a/spring-cloud/spring-cloud-functions/spring-cloud-function-aws/pom.xml b/spring-cloud/spring-cloud-functions/spring-cloud-function-aws/pom.xml
deleted file mode 100644
index 8b2b0ad385..0000000000
--- a/spring-cloud/spring-cloud-functions/spring-cloud-function-aws/pom.xml
+++ /dev/null
@@ -1,94 +0,0 @@
-
-
- 4.0.0
-
- com.baeldung.spring
- cloudfunction-aws
- 0.0.1-SNAPSHOT
- jar
-
- cloudfunction-aws
- Demo project for Spring Cloud Function
-
-
- org.springframework.boot
- spring-boot-starter-parent
- 2.0.4.RELEASE
-
-
-
-
- UTF-8
- UTF-8
- 1.8
- 1.0.1.RELEASE
- 2.0.2
-
-
-
-
- org.springframework.cloud
- spring-cloud-function-adapter-aws
- ${spring-cloud-function.version}
-
-
-
-
- org.springframework.cloud
- spring-cloud-starter-function-web
- 1.0.1.RELEASE
-
-
- com.amazonaws
- aws-lambda-java-events
- ${aws-lambda-events.version}
- provided
-
-
- com.amazonaws
- aws-lambda-java-core
- 1.1.0
- provided
-
-
- org.springframework.boot
- spring-boot-starter-test
- test
-
-
-
-
-
-
- org.apache.maven.plugins
- maven-deploy-plugin
-
- true
-
-
-
- org.springframework.boot
- spring-boot-maven-plugin
-
-
- org.springframework.boot.experimental
- spring-boot-thin-layout
- 1.0.10.RELEASE
-
-
-
-
- org.apache.maven.plugins
- maven-shade-plugin
-
- false
- true
- aws
-
-
-
-
-
-
diff --git a/spring-cloud/spring-cloud-functions/spring-cloud-function-aws/src/main/java/com/baeldung/spring/cloudfunction/CloudFunctionAwsApplication.java b/spring-cloud/spring-cloud-functions/src/main/java/com/baeldung/spring/cloudfunction/aws/CloudFunctionAwsApplication.java
similarity index 92%
rename from spring-cloud/spring-cloud-functions/spring-cloud-function-aws/src/main/java/com/baeldung/spring/cloudfunction/CloudFunctionAwsApplication.java
rename to spring-cloud/spring-cloud-functions/src/main/java/com/baeldung/spring/cloudfunction/aws/CloudFunctionAwsApplication.java
index cc8f11beca..34e97d3b6c 100644
--- a/spring-cloud/spring-cloud-functions/spring-cloud-function-aws/src/main/java/com/baeldung/spring/cloudfunction/CloudFunctionAwsApplication.java
+++ b/spring-cloud/spring-cloud-functions/src/main/java/com/baeldung/spring/cloudfunction/aws/CloudFunctionAwsApplication.java
@@ -1,4 +1,4 @@
-package com.baeldung.spring.cloudfunction;
+package com.baeldung.spring.cloudfunction.aws;
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
diff --git a/spring-cloud/spring-cloud-functions/spring-cloud-function-aws/src/main/java/com/baeldung/spring/cloudfunction/StringReverseHandler.java b/spring-cloud/spring-cloud-functions/src/main/java/com/baeldung/spring/cloudfunction/aws/StringReverseHandler.java
similarity index 78%
rename from spring-cloud/spring-cloud-functions/spring-cloud-function-aws/src/main/java/com/baeldung/spring/cloudfunction/StringReverseHandler.java
rename to spring-cloud/spring-cloud-functions/src/main/java/com/baeldung/spring/cloudfunction/aws/StringReverseHandler.java
index d103bc98d9..52514dcd12 100644
--- a/spring-cloud/spring-cloud-functions/spring-cloud-function-aws/src/main/java/com/baeldung/spring/cloudfunction/StringReverseHandler.java
+++ b/spring-cloud/spring-cloud-functions/src/main/java/com/baeldung/spring/cloudfunction/aws/StringReverseHandler.java
@@ -1,4 +1,4 @@
-package com.baeldung.spring.cloudfunction;
+package com.baeldung.spring.cloudfunction.aws;
import org.springframework.cloud.function.adapter.aws.SpringBootRequestHandler;
diff --git a/spring-cloud/spring-cloud-functions/spring-cloud-function-aws/src/main/java/com/baeldung/spring/cloudfunction/functions/Greeter.java b/spring-cloud/spring-cloud-functions/src/main/java/com/baeldung/spring/cloudfunction/aws/functions/Greeter.java
similarity index 80%
rename from spring-cloud/spring-cloud-functions/spring-cloud-function-aws/src/main/java/com/baeldung/spring/cloudfunction/functions/Greeter.java
rename to spring-cloud/spring-cloud-functions/src/main/java/com/baeldung/spring/cloudfunction/aws/functions/Greeter.java
index 124aefe56e..c443b98c18 100644
--- a/spring-cloud/spring-cloud-functions/spring-cloud-function-aws/src/main/java/com/baeldung/spring/cloudfunction/functions/Greeter.java
+++ b/spring-cloud/spring-cloud-functions/src/main/java/com/baeldung/spring/cloudfunction/aws/functions/Greeter.java
@@ -1,4 +1,4 @@
-package com.baeldung.spring.cloudfunction.functions;
+package com.baeldung.spring.cloudfunction.functions.aws;
import java.util.function.Function;
diff --git a/spring-cloud/spring-cloud-functions/spring-cloud-function-aws/src/main/resources/application.properties b/spring-cloud/spring-cloud-functions/src/main/resources/application.properties
similarity index 76%
rename from spring-cloud/spring-cloud-functions/spring-cloud-function-aws/src/main/resources/application.properties
rename to spring-cloud/spring-cloud-functions/src/main/resources/application.properties
index 14426a848c..b445bfa4ed 100644
--- a/spring-cloud/spring-cloud-functions/spring-cloud-function-aws/src/main/resources/application.properties
+++ b/spring-cloud/spring-cloud-functions/src/main/resources/application.properties
@@ -1 +1 @@
-spring.cloud.function.scan.packages: com.baeldung.spring.cloudfunction.functions
\ No newline at end of file
+spring.cloud.function.scan.packages: com.baeldung.spring.cloudfunction.functions.aws
\ No newline at end of file
diff --git a/spring-cloud/spring-cloud-functions/spring-cloud-function-aws/src/test/java/com/baeldung/spring/cloudfunction/CloudFunctionApplicationTests.java b/spring-cloud/spring-cloud-functions/src/test/java/com/baeldung/spring/cloudfunction/aws/CloudFunctionApplicationTests.java
similarity index 96%
rename from spring-cloud/spring-cloud-functions/spring-cloud-function-aws/src/test/java/com/baeldung/spring/cloudfunction/CloudFunctionApplicationTests.java
rename to spring-cloud/spring-cloud-functions/src/test/java/com/baeldung/spring/cloudfunction/aws/CloudFunctionApplicationTests.java
index 01199475fb..6039debe3f 100644
--- a/spring-cloud/spring-cloud-functions/spring-cloud-function-aws/src/test/java/com/baeldung/spring/cloudfunction/CloudFunctionApplicationTests.java
+++ b/spring-cloud/spring-cloud-functions/src/test/java/com/baeldung/spring/cloudfunction/aws/CloudFunctionApplicationTests.java
@@ -1,4 +1,4 @@
-package com.baeldung.spring.cloudfunction;
+package com.baeldung.spring.cloudfunction.aws;
import org.junit.Test;
import org.junit.runner.RunWith;
diff --git a/spring-cloud/spring-cloud-gateway/pom.xml b/spring-cloud/spring-cloud-gateway/pom.xml
index 8babbff274..4d8b57d4cf 100644
--- a/spring-cloud/spring-cloud-gateway/pom.xml
+++ b/spring-cloud/spring-cloud-gateway/pom.xml
@@ -38,6 +38,11 @@
org.springframework.boot
spring-boot-starter-webflux
+
+ org.springframework.boot
+ spring-boot-starter-test
+ test
+
org.hibernate
diff --git a/spring-cloud/spring-cloud-gateway/src/test/java/org/baeldung/SpringContextIntegrationTest.java b/spring-cloud/spring-cloud-gateway/src/test/java/org/baeldung/SpringContextIntegrationTest.java
new file mode 100644
index 0000000000..f2addf5c1a
--- /dev/null
+++ b/spring-cloud/spring-cloud-gateway/src/test/java/org/baeldung/SpringContextIntegrationTest.java
@@ -0,0 +1,17 @@
+package org.baeldung;
+
+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.GatewayApplication;
+
+@RunWith(SpringRunner.class)
+@SpringBootTest(classes = GatewayApplication.class)
+public class SpringContextIntegrationTest {
+
+ @Test
+ public void whenSpringContextIsBootstrapped_thenNoExceptions() {
+ }
+}
diff --git a/spring-cloud/spring-cloud-hystrix/feign-rest-consumer/pom.xml b/spring-cloud/spring-cloud-hystrix/feign-rest-consumer/pom.xml
index ce1e1856ed..11b9275b46 100644
--- a/spring-cloud/spring-cloud-hystrix/feign-rest-consumer/pom.xml
+++ b/spring-cloud/spring-cloud-hystrix/feign-rest-consumer/pom.xml
@@ -24,33 +24,32 @@
org.springframework.cloud
spring-cloud-starter-hystrix
- ${spring-cloud-starter-hystrix.version}
org.springframework.cloud
spring-cloud-starter-hystrix-dashboard
- ${spring-cloud-starter-hystrix.version}
org.springframework.cloud
spring-cloud-starter-feign
- ${spring-cloud-starter-feign.version}
org.springframework.boot
spring-boot-starter-web
- ${spring-boot-starter-web.version}
org.springframework.boot
spring-boot-starter-thymeleaf
- ${spring-boot-starter-web.version}
org.springframework.boot
spring-boot-starter-actuator
- ${spring-boot-starter-web.version}
+
+ org.springframework.boot
+ spring-boot-starter-test
+ test
+
diff --git a/spring-cloud/spring-cloud-kubernetes/demo-backend/src/test/java/com/baeldung/spring/cloud/kubernetes/backend/KubernetesBackendApplicationIntegrationTest.java b/spring-cloud/spring-cloud-kubernetes/demo-backend/src/test/java/com/baeldung/spring/cloud/kubernetes/backend/KubernetesBackendApplicationIntegrationTest.java
deleted file mode 100644
index 2440b97aaf..0000000000
--- a/spring-cloud/spring-cloud-kubernetes/demo-backend/src/test/java/com/baeldung/spring/cloud/kubernetes/backend/KubernetesBackendApplicationIntegrationTest.java
+++ /dev/null
@@ -1,16 +0,0 @@
-package com.baeldung.spring.cloud.kubernetes.backend;
-
-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 KubernetesBackendApplicationIntegrationTest {
-
- @Test
- public void contextLoads() {
- }
-
-}
diff --git a/spring-cloud/spring-cloud-kubernetes/demo-backend/src/test/java/org/baeldung/SpringContextIntegrationTest.java b/spring-cloud/spring-cloud-kubernetes/demo-backend/src/test/java/org/baeldung/SpringContextIntegrationTest.java
new file mode 100644
index 0000000000..ce57cf5052
--- /dev/null
+++ b/spring-cloud/spring-cloud-kubernetes/demo-backend/src/test/java/org/baeldung/SpringContextIntegrationTest.java
@@ -0,0 +1,18 @@
+package org.baeldung;
+
+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.kubernetes.backend.KubernetesBackendApplication;
+
+@RunWith(SpringRunner.class)
+@SpringBootTest(classes = KubernetesBackendApplication.class)
+public class SpringContextIntegrationTest {
+
+ @Test
+ public void contextLoads() {
+ }
+
+}
diff --git a/spring-cloud/spring-cloud-kubernetes/demo-frontend/src/test/java/org/baeldung/SpringContextIntegrationTest.java b/spring-cloud/spring-cloud-kubernetes/demo-frontend/src/test/java/org/baeldung/SpringContextIntegrationTest.java
new file mode 100644
index 0000000000..f7e9e35540
--- /dev/null
+++ b/spring-cloud/spring-cloud-kubernetes/demo-frontend/src/test/java/org/baeldung/SpringContextIntegrationTest.java
@@ -0,0 +1,18 @@
+package org.baeldung;
+
+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.kubernetes.frontend.KubernetesFrontendApplication;
+
+@RunWith(SpringRunner.class)
+@SpringBootTest(classes = KubernetesFrontendApplication.class)
+public class SpringContextIntegrationTest {
+
+ @Test
+ public void contextLoads() {
+ }
+
+}
diff --git a/spring-cloud/spring-cloud-rest/spring-cloud-rest-books-api/src/test/java/org/baeldung/SpringContextIntegrationTest.java b/spring-cloud/spring-cloud-rest/spring-cloud-rest-books-api/src/test/java/org/baeldung/SpringContextIntegrationTest.java
new file mode 100644
index 0000000000..24e758ff82
--- /dev/null
+++ b/spring-cloud/spring-cloud-rest/spring-cloud-rest-books-api/src/test/java/org/baeldung/SpringContextIntegrationTest.java
@@ -0,0 +1,15 @@
+package org.baeldung;
+
+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 = BooksApiApplication.class)
+public class SpringContextIntegrationTest {
+
+ @Test
+ public void whenSpringContextIsBootstrapped_thenNoExceptions() {
+ }
+}
diff --git a/spring-boot-bootstrap/src/test/java/org/baeldung/SpringBootBootstrapApplicationIntegrationTest.java b/spring-cloud/spring-cloud-rest/spring-cloud-rest-config-server/src/test/java/org/baeldung/SpringContextIntegrationTest.java
similarity index 72%
rename from spring-boot-bootstrap/src/test/java/org/baeldung/SpringBootBootstrapApplicationIntegrationTest.java
rename to spring-cloud/spring-cloud-rest/spring-cloud-rest-config-server/src/test/java/org/baeldung/SpringContextIntegrationTest.java
index 7c54288665..28c6e67377 100644
--- a/spring-boot-bootstrap/src/test/java/org/baeldung/SpringBootBootstrapApplicationIntegrationTest.java
+++ b/spring-cloud/spring-cloud-rest/spring-cloud-rest-config-server/src/test/java/org/baeldung/SpringContextIntegrationTest.java
@@ -6,10 +6,10 @@ import org.springframework.boot.test.context.SpringBootTest;
import org.springframework.test.context.junit4.SpringRunner;
@RunWith(SpringRunner.class)
-@SpringBootTest
-public class SpringBootBootstrapApplicationIntegrationTest {
-
+@SpringBootTest(classes = SpringCloudRestConfigApplication.class)
+public class SpringContextIntegrationTest {
@Test
public void contextLoads() {
}
+
}
diff --git a/spring-cloud/spring-cloud-rest/spring-cloud-rest-discovery-server/src/test/java/org/baeldung/SpringContextIntegrationTest.java b/spring-cloud/spring-cloud-rest/spring-cloud-rest-discovery-server/src/test/java/org/baeldung/SpringContextIntegrationTest.java
new file mode 100644
index 0000000000..e22359a016
--- /dev/null
+++ b/spring-cloud/spring-cloud-rest/spring-cloud-rest-discovery-server/src/test/java/org/baeldung/SpringContextIntegrationTest.java
@@ -0,0 +1,15 @@
+package org.baeldung;
+
+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 = SpringCloudRestServerApplication.class)
+public class SpringContextIntegrationTest {
+
+ @Test
+ public void whenSpringContextIsBootstrapped_thenNoExceptions() {
+ }
+}
diff --git a/spring-cloud/spring-cloud-rest/spring-cloud-rest-reviews-api/src/test/java/org/baeldung/SpringContextIntegrationTest.java b/spring-cloud/spring-cloud-rest/spring-cloud-rest-reviews-api/src/test/java/org/baeldung/SpringContextIntegrationTest.java
new file mode 100644
index 0000000000..07d7db0505
--- /dev/null
+++ b/spring-cloud/spring-cloud-rest/spring-cloud-rest-reviews-api/src/test/java/org/baeldung/SpringContextIntegrationTest.java
@@ -0,0 +1,15 @@
+package org.baeldung;
+
+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 = BookReviewsApiApplication.class)
+public class SpringContextIntegrationTest {
+
+ @Test
+ public void whenSpringContextIsBootstrapped_thenNoExceptions() {
+ }
+}
diff --git a/spring-cloud/spring-cloud-ribbon-client/src/test/java/org/baeldung/SpringContextIntegrationTest.java b/spring-cloud/spring-cloud-ribbon-client/src/test/java/org/baeldung/SpringContextIntegrationTest.java
new file mode 100644
index 0000000000..baa1b12eff
--- /dev/null
+++ b/spring-cloud/spring-cloud-ribbon-client/src/test/java/org/baeldung/SpringContextIntegrationTest.java
@@ -0,0 +1,17 @@
+package org.baeldung;
+
+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.ribbon.client.ServerLocationApp;
+
+@RunWith(SpringRunner.class)
+@SpringBootTest(classes = ServerLocationApp.class)
+public class SpringContextIntegrationTest {
+
+ @Test
+ public void whenSpringContextIsBootstrapped_thenNoExceptions() {
+ }
+}
diff --git a/spring-cloud/spring-cloud-security/README.md b/spring-cloud/spring-cloud-security/README.md
deleted file mode 100644
index 39af52c077..0000000000
--- a/spring-cloud/spring-cloud-security/README.md
+++ /dev/null
@@ -1,29 +0,0 @@
-# README #
-
-This README would normally document whatever steps are necessary to get your application up and running.
-
-### What is this repository for? ###
-
-* Quick summary
-* Version
-* [Learn Markdown](https://bitbucket.org/tutorials/markdowndemo)
-
-### How do I get set up? ###
-
-* Summary of set up
-* Configuration
-* Dependencies
-* Database configuration
-* How to run tests
-* Deployment instructions
-
-### Contribution guidelines ###
-
-* Writing tests
-* Code review
-* Other guidelines
-
-### Who do I talk to? ###
-
-* Repo owner or admin
-* Other community or team contact
\ No newline at end of file
diff --git a/spring-cloud/spring-cloud-security/auth-client/pom.xml b/spring-cloud/spring-cloud-security/auth-client/pom.xml
index f2d6308374..340c276c2d 100644
--- a/spring-cloud/spring-cloud-security/auth-client/pom.xml
+++ b/spring-cloud/spring-cloud-security/auth-client/pom.xml
@@ -2,18 +2,15 @@
4.0.0
- com.baeldung
auth-client
- 0.0.1-SNAPSHOT
jar
auth-client
- Demo project for Spring Boot
-
+ Spring Cloud Security APP Client Module
+
- parent-boot-1
+ spring-cloud-security
com.baeldung
- 0.0.1-SNAPSHOT
- ../../../parent-boot-1
+ 1.0.0-SNAPSHOT
@@ -88,9 +85,6 @@
- UTF-8
- UTF-8
- 1.8
2.1.0
Dalston.SR4
diff --git a/spring-cloud/spring-cloud-security/auth-client/src/test/java/com/example/springoath2/Springoath2ApplicationTests.java b/spring-cloud/spring-cloud-security/auth-client/src/test/java/com/example/springoath2/Springoath2ApplicationIntegrationTest.java
similarity index 87%
rename from spring-cloud/spring-cloud-security/auth-client/src/test/java/com/example/springoath2/Springoath2ApplicationTests.java
rename to spring-cloud/spring-cloud-security/auth-client/src/test/java/com/example/springoath2/Springoath2ApplicationIntegrationTest.java
index ca89575ee0..37cff095db 100644
--- a/spring-cloud/spring-cloud-security/auth-client/src/test/java/com/example/springoath2/Springoath2ApplicationTests.java
+++ b/spring-cloud/spring-cloud-security/auth-client/src/test/java/com/example/springoath2/Springoath2ApplicationIntegrationTest.java
@@ -9,7 +9,7 @@ import com.baeldung.CloudSite;
@RunWith(SpringRunner.class)
@SpringBootTest(classes = CloudSite.class)
-public class Springoath2ApplicationTests {
+public class Springoath2ApplicationIntegrationTest {
@Test
public void contextLoads() {
diff --git a/spring-cloud-bus/spring-cloud-config-server/src/test/java/com/baeldung/SpringCloudConfigServerApplicationTests.java b/spring-cloud/spring-cloud-security/auth-client/src/test/java/org/baeldung/SpringContextIntegrationTest.java
similarity index 64%
rename from spring-cloud-bus/spring-cloud-config-server/src/test/java/com/baeldung/SpringCloudConfigServerApplicationTests.java
rename to spring-cloud/spring-cloud-security/auth-client/src/test/java/org/baeldung/SpringContextIntegrationTest.java
index 3969c7ba2d..60a208d6f4 100644
--- a/spring-cloud-bus/spring-cloud-config-server/src/test/java/com/baeldung/SpringCloudConfigServerApplicationTests.java
+++ b/spring-cloud/spring-cloud-security/auth-client/src/test/java/org/baeldung/SpringContextIntegrationTest.java
@@ -1,13 +1,15 @@
-package com.baeldung;
+package org.baeldung;
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.CloudSite;
+
@RunWith(SpringRunner.class)
-@SpringBootTest
-public class SpringCloudConfigServerApplicationTests {
+@SpringBootTest(classes = CloudSite.class)
+public class SpringContextIntegrationTest {
@Test
public void contextLoads() {
diff --git a/spring-cloud/spring-cloud-security/auth-resource/pom.xml b/spring-cloud/spring-cloud-security/auth-resource/pom.xml
index 0115259108..09474b2a4d 100644
--- a/spring-cloud/spring-cloud-security/auth-resource/pom.xml
+++ b/spring-cloud/spring-cloud-security/auth-resource/pom.xml
@@ -3,21 +3,18 @@
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
4.0.0
- com.baeldung
auth-resource
- 0.0.1-SNAPSHOT
jar
auth-resource
- Demo project for Spring Boot
+ Spring Cloud Security APP Resource Module
- parent-boot-1
+ spring-cloud-security
com.baeldung
- 0.0.1-SNAPSHOT
- ../../../parent-boot-1
+ 1.0.0-SNAPSHOT
-
+
org.springframework.security.oauth
@@ -60,9 +57,6 @@
- UTF-8
- UTF-8
- 1.8
Edgware.RELEASE
diff --git a/spring-cloud/spring-cloud-security/auth-resource/src/test/java/com/baeldung/service/personservice/PersonserviceApplicationTests.java b/spring-cloud/spring-cloud-security/auth-resource/src/test/java/com/baeldung/service/personservice/PersonserviceApplicationIntegrationTest.java
similarity index 85%
rename from spring-cloud/spring-cloud-security/auth-resource/src/test/java/com/baeldung/service/personservice/PersonserviceApplicationTests.java
rename to spring-cloud/spring-cloud-security/auth-resource/src/test/java/com/baeldung/service/personservice/PersonserviceApplicationIntegrationTest.java
index e0fe7006d9..3caa06ba4d 100644
--- a/spring-cloud/spring-cloud-security/auth-resource/src/test/java/com/baeldung/service/personservice/PersonserviceApplicationTests.java
+++ b/spring-cloud/spring-cloud-security/auth-resource/src/test/java/com/baeldung/service/personservice/PersonserviceApplicationIntegrationTest.java
@@ -7,7 +7,7 @@ import org.springframework.test.context.junit4.SpringRunner;
@RunWith(SpringRunner.class)
@SpringBootTest
-public class PersonserviceApplicationTests {
+public class PersonserviceApplicationIntegrationTest {
@Test
public void contextLoads() {
diff --git a/spring-cloud-data-flow/data-flow-shell/src/test/java/org/baeldung/spring/cloud/DataFlowShellApplicationIntegrationTest.java b/spring-cloud/spring-cloud-security/auth-resource/src/test/java/org/baeldung/SpringContextIntegrationTest.java
similarity index 64%
rename from spring-cloud-data-flow/data-flow-shell/src/test/java/org/baeldung/spring/cloud/DataFlowShellApplicationIntegrationTest.java
rename to spring-cloud/spring-cloud-security/auth-resource/src/test/java/org/baeldung/SpringContextIntegrationTest.java
index 5ab3292388..4d4c312bce 100644
--- a/spring-cloud-data-flow/data-flow-shell/src/test/java/org/baeldung/spring/cloud/DataFlowShellApplicationIntegrationTest.java
+++ b/spring-cloud/spring-cloud-security/auth-resource/src/test/java/org/baeldung/SpringContextIntegrationTest.java
@@ -1,13 +1,15 @@
-package org.baeldung.spring.cloud;
+package org.baeldung;
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.Application;
+
@RunWith(SpringRunner.class)
-@SpringBootTest
-public class DataFlowShellApplicationIntegrationTest {
+@SpringBootTest(classes = Application.class)
+public class SpringContextIntegrationTest {
@Test
public void contextLoads() {
diff --git a/spring-cloud/spring-cloud-security/auth-server/pom.xml b/spring-cloud/spring-cloud-security/auth-server/pom.xml
index b4367935e3..92f92808f6 100644
--- a/spring-cloud/spring-cloud-security/auth-server/pom.xml
+++ b/spring-cloud/spring-cloud-security/auth-server/pom.xml
@@ -2,15 +2,13 @@
4.0.0
- com.baeldung
auth-server
- 0.0.1-SNAPSHOT
-
+ Spring Cloud Security APP Server Module
+
- parent-boot-1
+ spring-cloud-security
com.baeldung
- 0.0.1-SNAPSHOT
- ../../../parent-boot-1
+ 1.0.0-SNAPSHOT
diff --git a/spring-cloud-data-flow/time-processor/src/test/java/org/baeldung/spring/cloud/TimeProcessorApplicationIntegrationTest.java b/spring-cloud/spring-cloud-security/auth-server/src/test/java/org/baeldung/SpringContextIntegrationTest.java
similarity index 64%
rename from spring-cloud-data-flow/time-processor/src/test/java/org/baeldung/spring/cloud/TimeProcessorApplicationIntegrationTest.java
rename to spring-cloud/spring-cloud-security/auth-server/src/test/java/org/baeldung/SpringContextIntegrationTest.java
index 9bd0fd8c24..63a89ac45c 100644
--- a/spring-cloud-data-flow/time-processor/src/test/java/org/baeldung/spring/cloud/TimeProcessorApplicationIntegrationTest.java
+++ b/spring-cloud/spring-cloud-security/auth-server/src/test/java/org/baeldung/SpringContextIntegrationTest.java
@@ -1,13 +1,15 @@
-package org.baeldung.spring.cloud;
+package org.baeldung;
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.AuthServer;
+
@RunWith(SpringRunner.class)
-@SpringBootTest
-public class TimeProcessorApplicationIntegrationTest {
+@SpringBootTest(classes = AuthServer.class)
+public class SpringContextIntegrationTest {
@Test
public void contextLoads() {
diff --git a/spring-cloud/spring-cloud-security/pom.xml b/spring-cloud/spring-cloud-security/pom.xml
new file mode 100644
index 0000000000..1cf8751548
--- /dev/null
+++ b/spring-cloud/spring-cloud-security/pom.xml
@@ -0,0 +1,23 @@
+
+
+ 4.0.0
+ spring-cloud-security
+ pom
+ 1.0.0-SNAPSHOT
+ spring-cloud-security
+
+
+ parent-boot-1
+ com.baeldung
+ 0.0.1-SNAPSHOT
+ ../../parent-boot-1
+
+
+
+ auth-client
+ auth-resource
+ auth-server
+
+
+
diff --git a/spring-cloud/spring-cloud-stream-starters/twitterhdfs/pom.xml b/spring-cloud/spring-cloud-stream-starters/twitterhdfs/pom.xml
index bf725da5cf..6f582576d8 100644
--- a/spring-cloud/spring-cloud-stream-starters/twitterhdfs/pom.xml
+++ b/spring-cloud/spring-cloud-stream-starters/twitterhdfs/pom.xml
@@ -1,11 +1,11 @@
-
-
+
+
4.0.0
com.baeldung.twitterhdfs
twitterhdfs
jar
- 1.0.0
+ 1.0.0-SNAPSHOT
twitterhdfs
@@ -45,9 +45,6 @@
- UTF-8
- UTF-8
- 1.8
1.3.1.RELEASE
diff --git a/spring-cloud/spring-cloud-stream-starters/twitterhdfs/src/test/java/org/baeldung/SpringContextIntegrationTest.java b/spring-cloud/spring-cloud-stream-starters/twitterhdfs/src/test/java/org/baeldung/SpringContextIntegrationTest.java
new file mode 100644
index 0000000000..3d370e7b48
--- /dev/null
+++ b/spring-cloud/spring-cloud-stream-starters/twitterhdfs/src/test/java/org/baeldung/SpringContextIntegrationTest.java
@@ -0,0 +1,20 @@
+package org.baeldung;
+
+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.twitterhdfs.aggregate.AggregateApp;
+import com.baeldung.twitterhdfs.processor.ProcessorApp;
+import com.baeldung.twitterhdfs.sink.SinkApp;
+import com.baeldung.twitterhdfs.source.SourceApp;
+
+@RunWith(SpringRunner.class)
+@SpringBootTest(classes = {AggregateApp.class, ProcessorApp.class, SinkApp.class, SourceApp.class})
+public class SpringContextIntegrationTest {
+
+ @Test
+ public void whenSpringContextIsBootstrapped_thenNoExceptions() {
+ }
+}
diff --git a/spring-cloud/spring-cloud-stream/spring-cloud-stream-rabbit/src/test/java/org/baeldung/SpringContextIntegrationTest.java b/spring-cloud/spring-cloud-stream/spring-cloud-stream-rabbit/src/test/java/org/baeldung/SpringContextIntegrationTest.java
new file mode 100644
index 0000000000..70c5f46aa1
--- /dev/null
+++ b/spring-cloud/spring-cloud-stream/spring-cloud-stream-rabbit/src/test/java/org/baeldung/SpringContextIntegrationTest.java
@@ -0,0 +1,17 @@
+package org.baeldung;
+
+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.stream.rabbit.MultipleOutputsServiceApplication;
+
+@RunWith(SpringRunner.class)
+@SpringBootTest(classes = MultipleOutputsServiceApplication.class)
+public class SpringContextIntegrationTest {
+
+ @Test
+ public void whenSpringContextIsBootstrapped_thenNoExceptions() {
+ }
+}
diff --git a/spring-cloud/spring-cloud-task/pom.xml b/spring-cloud/spring-cloud-task/pom.xml
new file mode 100644
index 0000000000..ef76d464bc
--- /dev/null
+++ b/spring-cloud/spring-cloud-task/pom.xml
@@ -0,0 +1,46 @@
+
+
+ 4.0.0
+ com.baeldung.spring.cloud
+ spring-cloud-task
+ 1.0.0-SNAPSHOT
+ pom
+
+
+ parent-boot-1
+ com.baeldung
+ 0.0.1-SNAPSHOT
+ ../../parent-boot-1
+
+
+
+ springcloudtaskbatch
+ springcloudtasksink
+
+
+
+
+
+ org.springframework.cloud
+ spring-cloud-task-dependencies
+ ${spring-cloud-task.version}
+ pom
+ import
+
+
+ org.springframework.cloud
+ spring-cloud-dependencies
+ ${spring-cloud-dependencies.version}
+ pom
+ import
+
+
+
+
+
+ Brixton.SR7
+ 1.2.2.RELEASE
+
+
+
diff --git a/spring-cloud/spring-cloud-task/springcloudtaskbatch/pom.xml b/spring-cloud/spring-cloud-task/springcloudtaskbatch/pom.xml
index f97d78099f..89c9318c4e 100644
--- a/spring-cloud/spring-cloud-task/springcloudtaskbatch/pom.xml
+++ b/spring-cloud/spring-cloud-task/springcloudtaskbatch/pom.xml
@@ -3,14 +3,12 @@
4.0.0
org.baeldung.cloud
springcloudtaskbatch
- 0.0.1-SNAPSHOT
- springcloudtaskbatch
+ springcloudtaskbatch
- parent-boot-1
- com.baeldung
- 0.0.1-SNAPSHOT
- ../../../parent-boot-1
+ spring-cloud-task
+ com.baeldung.spring.cloud
+ 1.0.0-SNAPSHOT
@@ -47,18 +45,6 @@
-
-
-
- org.springframework.cloud
- spring-cloud-task-dependencies
- ${spring-cloud-task.version}
- pom
- import
-
-
-
-
@@ -70,10 +56,6 @@
com.baeldung.TaskDemo
- UTF-8
- UTF-8
- 1.8
- 1.2.2.RELEASE
diff --git a/spring-cloud/spring-cloud-task/springcloudtaskbatch/src/test/java/org/baeldung/SpringContextIntegrationTest.java b/spring-cloud/spring-cloud-task/springcloudtaskbatch/src/test/java/org/baeldung/SpringContextIntegrationTest.java
new file mode 100644
index 0000000000..4b5aff2db8
--- /dev/null
+++ b/spring-cloud/spring-cloud-task/springcloudtaskbatch/src/test/java/org/baeldung/SpringContextIntegrationTest.java
@@ -0,0 +1,17 @@
+package org.baeldung;
+
+import org.junit.Test;
+import org.junit.runner.RunWith;
+import org.springframework.test.context.ContextConfiguration;
+import org.springframework.test.context.junit4.SpringJUnit4ClassRunner;
+
+import com.baeldung.task.JobConfiguration;
+
+@RunWith(SpringJUnit4ClassRunner.class)
+@ContextConfiguration(classes = JobConfiguration.class)
+public class SpringContextIntegrationTest {
+
+ @Test
+ public void whenSpringContextIsBootstrapped_thenNoExceptions() {
+ }
+}
diff --git a/spring-cloud/spring-cloud-task/springcloudtasksink/pom.xml b/spring-cloud/spring-cloud-task/springcloudtasksink/pom.xml
index fdcbabdd51..ca0de342a9 100644
--- a/spring-cloud/spring-cloud-task/springcloudtasksink/pom.xml
+++ b/spring-cloud/spring-cloud-task/springcloudtasksink/pom.xml
@@ -2,19 +2,15 @@
4.0.0
-
- com.baeldung
SpringCloudTaskSink
- 0.0.1-SNAPSHOT
jar
SpringCloudTaskSink
Demo project for Spring Boot
-
- parent-boot-1
- com.baeldung
- 0.0.1-SNAPSHOT
- ../../../parent-boot-1
+
+ spring-cloud-task
+ com.baeldung.spring.cloud
+ 1.0.0-SNAPSHOT
@@ -36,11 +32,6 @@
spring-boot-starter-test
test
-
- org.springframework.boot
- spring-boot-starter-test
- test
-
org.springframework.cloud
@@ -49,25 +40,6 @@
-
-
-
- org.springframework.cloud
- spring-cloud-task-dependencies
- ${spring-cloud-task.version}
- pom
- import
-
-
- org.springframework.cloud
- spring-cloud-dependencies
- ${spring-cloud.version}
- pom
- import
-
-
-
-
@@ -78,11 +50,7 @@
- UTF-8
- UTF-8
- 1.8
1.2.2.RELEASE
- Edgware.SR2
1.3.0.RELEASE
diff --git a/spring-cloud/spring-cloud-task/springcloudtasksink/src/test/java/com/baeldung/SpringCloudTaskFinal/SpringCloudTaskSinkApplicationTests.java b/spring-cloud/spring-cloud-task/springcloudtasksink/src/test/java/com/baeldung/SpringCloudTaskFinal/SpringCloudTaskSinkApplicationIntegrationTest.java
similarity index 97%
rename from spring-cloud/spring-cloud-task/springcloudtasksink/src/test/java/com/baeldung/SpringCloudTaskFinal/SpringCloudTaskSinkApplicationTests.java
rename to spring-cloud/spring-cloud-task/springcloudtasksink/src/test/java/com/baeldung/SpringCloudTaskFinal/SpringCloudTaskSinkApplicationIntegrationTest.java
index 1f47eada14..104c04138e 100644
--- a/spring-cloud/spring-cloud-task/springcloudtasksink/src/test/java/com/baeldung/SpringCloudTaskFinal/SpringCloudTaskSinkApplicationTests.java
+++ b/spring-cloud/spring-cloud-task/springcloudtasksink/src/test/java/com/baeldung/SpringCloudTaskFinal/SpringCloudTaskSinkApplicationIntegrationTest.java
@@ -24,7 +24,7 @@ import static org.mockito.Mockito.verify;
@RunWith(SpringRunner.class)
@SpringBootTest(
classes = SpringCloudTaskSinkApplication.class)
-public class SpringCloudTaskSinkApplicationTests {
+public class SpringCloudTaskSinkApplicationIntegrationTest {
@Autowired
ApplicationContext context;
diff --git a/spring-cloud/spring-cloud-task/springcloudtasksink/src/test/java/org/baeldung/SpringContextIntegrationTest.java b/spring-cloud/spring-cloud-task/springcloudtasksink/src/test/java/org/baeldung/SpringContextIntegrationTest.java
new file mode 100644
index 0000000000..b8dd03d65f
--- /dev/null
+++ b/spring-cloud/spring-cloud-task/springcloudtasksink/src/test/java/org/baeldung/SpringContextIntegrationTest.java
@@ -0,0 +1,17 @@
+package org.baeldung;
+
+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.SpringCloudTaskFinal.SpringCloudTaskSinkApplication;
+
+@RunWith(SpringRunner.class)
+@SpringBootTest(classes = SpringCloudTaskSinkApplication.class)
+public class SpringContextIntegrationTest {
+
+ @Test
+ public void whenSpringContextIsBootstrapped_thenNoExceptions() {
+ }
+}
diff --git a/spring-cloud/spring-cloud-zookeeper/Greeting/src/test/baeldung/SpringContextIntegrationTest.java b/spring-cloud/spring-cloud-zookeeper/Greeting/src/test/baeldung/SpringContextIntegrationTest.java
new file mode 100644
index 0000000000..0f544b3ed1
--- /dev/null
+++ b/spring-cloud/spring-cloud-zookeeper/Greeting/src/test/baeldung/SpringContextIntegrationTest.java
@@ -0,0 +1,17 @@
+package org.baeldung;
+
+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.ribbon.client.ServerLocationApp;
+
+@RunWith(SpringRunner.class)
+@SpringBootTest(classes = GreetingApplication.class)
+public class SpringContextIntegrationTest {
+
+ @Test
+ public void whenSpringContextIsBootstrapped_thenNoExceptions() {
+ }
+}
diff --git a/spring-core/src/main/java/com/baeldung/definition/Config.java b/spring-core/src/main/java/com/baeldung/definition/Config.java
new file mode 100644
index 0000000000..126e6259ca
--- /dev/null
+++ b/spring-core/src/main/java/com/baeldung/definition/Config.java
@@ -0,0 +1,16 @@
+package com.baeldung.definition;
+
+import com.baeldung.definition.domain.Address;
+import com.baeldung.definition.domain.Company;
+import org.springframework.context.annotation.Bean;
+import org.springframework.context.annotation.ComponentScan;
+import org.springframework.context.annotation.Configuration;
+
+@Configuration
+@ComponentScan(basePackageClasses = Company.class)
+public class Config {
+ @Bean
+ public Address getAddress() {
+ return new Address("High Street", 1000);
+ }
+}
diff --git a/spring-core/src/main/java/com/baeldung/definition/domain/Address.java b/spring-core/src/main/java/com/baeldung/definition/domain/Address.java
new file mode 100644
index 0000000000..91be18398e
--- /dev/null
+++ b/spring-core/src/main/java/com/baeldung/definition/domain/Address.java
@@ -0,0 +1,14 @@
+package com.baeldung.definition.domain;
+
+import lombok.Data;
+
+@Data
+public class Address {
+ private String street;
+ private int number;
+
+ public Address(String street, int number) {
+ this.street = street;
+ this.number = number;
+ }
+}
diff --git a/spring-core/src/main/java/com/baeldung/definition/domain/Company.java b/spring-core/src/main/java/com/baeldung/definition/domain/Company.java
new file mode 100644
index 0000000000..eabde8afdf
--- /dev/null
+++ b/spring-core/src/main/java/com/baeldung/definition/domain/Company.java
@@ -0,0 +1,14 @@
+package com.baeldung.definition.domain;
+
+import lombok.Data;
+import org.springframework.stereotype.Component;
+
+@Data
+@Component
+public class Company {
+ private Address address;
+
+ public Company(Address address) {
+ this.address = address;
+ }
+}
diff --git a/spring-core/src/test/java/com/baeldung/definition/SpringBeanIntegrationTest.java b/spring-core/src/test/java/com/baeldung/definition/SpringBeanIntegrationTest.java
new file mode 100644
index 0000000000..0057611308
--- /dev/null
+++ b/spring-core/src/test/java/com/baeldung/definition/SpringBeanIntegrationTest.java
@@ -0,0 +1,18 @@
+package com.baeldung.definition;
+
+import com.baeldung.definition.domain.Company;
+import org.junit.Test;
+import org.springframework.context.ApplicationContext;
+import org.springframework.context.annotation.AnnotationConfigApplicationContext;
+
+import static org.junit.Assert.assertEquals;
+
+public class SpringBeanIntegrationTest {
+ @Test
+ public void whenUsingIoC_thenDependenciesAreInjected() {
+ ApplicationContext context = new AnnotationConfigApplicationContext(Config.class);
+ Company company = context.getBean("company", Company.class);
+ assertEquals("High Street", company.getAddress().getStreet());
+ assertEquals(1000, company.getAddress().getNumber());
+ }
+}
diff --git a/spring-cucumber/src/test/java/org/baeldung/SpringContextIntegrationTest.java b/spring-cucumber/src/test/java/org/baeldung/SpringContextIntegrationTest.java
new file mode 100644
index 0000000000..80efd86f13
--- /dev/null
+++ b/spring-cucumber/src/test/java/org/baeldung/SpringContextIntegrationTest.java
@@ -0,0 +1,17 @@
+package org.baeldung;
+
+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.SpringDemoApplication;
+
+@RunWith(SpringRunner.class)
+@SpringBootTest(classes = SpringDemoApplication.class)
+public class SpringContextIntegrationTest {
+
+ @Test
+ public void whenSpringContextIsBootstrapped_thenNoExceptions() {
+ }
+}
diff --git a/spring-custom-aop/pom.xml b/spring-custom-aop/pom.xml
index fd5f87a476..f0b1dbb5ac 100644
--- a/spring-custom-aop/pom.xml
+++ b/spring-custom-aop/pom.xml
@@ -149,6 +149,7 @@
3.1.7
8.5.11
18.0
+ 8.0.43
diff --git a/spring-custom-aop/src/test/java/org/baeldung/SpringContextIntegrationTest.java b/spring-custom-aop/src/test/java/org/baeldung/SpringContextIntegrationTest.java
new file mode 100644
index 0000000000..0384c67e26
--- /dev/null
+++ b/spring-custom-aop/src/test/java/org/baeldung/SpringContextIntegrationTest.java
@@ -0,0 +1,25 @@
+package org.baeldung;
+
+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.annotation.servletcomponentscan.SpringBootAnnotatedApp;
+import com.baeldung.annotation.servletcomponentscan.SpringBootPlainApp;
+import com.baeldung.git.CommitIdApplication;
+import com.baeldung.internationalization.InternationalizationApp;
+import com.baeldung.intro.App;
+import com.baeldung.servlets.ApplicationMain;
+import com.baeldung.webjar.WebjarsdemoApplication;
+
+@RunWith(SpringRunner.class)
+@SpringBootTest(classes = { SpringBootAnnotatedApp.class, SpringBootPlainApp.class, CommitIdApplication.class,
+ InternationalizationApp.class, App.class, ApplicationMain.class, Application.class,
+ WebjarsdemoApplication.class })
+public class SpringContextIntegrationTest {
+
+ @Test
+ public void whenSpringContextIsBootstrapped_thenNoExceptions() {
+ }
+}
diff --git a/spring-data-couchbase-2/src/test/java/org/baeldung/SpringContextIntegrationTest.java b/spring-data-couchbase-2/src/test/java/org/baeldung/SpringContextIntegrationTest.java
new file mode 100644
index 0000000000..9c9d58dd0b
--- /dev/null
+++ b/spring-data-couchbase-2/src/test/java/org/baeldung/SpringContextIntegrationTest.java
@@ -0,0 +1,20 @@
+package org.baeldung;
+
+import org.baeldung.spring.data.couchbase2b.MultiBucketCouchbaseConfig;
+import org.baeldung.spring.data.couchbase2b.MultiBucketIntegrationTestConfig;
+import org.junit.Test;
+import org.junit.runner.RunWith;
+import org.springframework.test.context.ContextConfiguration;
+import org.springframework.test.context.TestExecutionListeners;
+import org.springframework.test.context.junit4.SpringJUnit4ClassRunner;
+import org.springframework.test.context.support.DependencyInjectionTestExecutionListener;
+
+@RunWith(SpringJUnit4ClassRunner.class)
+@ContextConfiguration(classes = { MultiBucketCouchbaseConfig.class, MultiBucketIntegrationTestConfig.class })
+@TestExecutionListeners(listeners = { DependencyInjectionTestExecutionListener.class })
+public class SpringContextIntegrationTest {
+
+ @Test
+ public void whenSpringContextIsBootstrapped_thenNoExceptions() {
+ }
+}
diff --git a/spring-data-elasticsearch/src/test/java/org/baeldung/SpringContextIntegrationTest.java b/spring-data-elasticsearch/src/test/java/org/baeldung/SpringContextIntegrationTest.java
new file mode 100644
index 0000000000..6f45039c96
--- /dev/null
+++ b/spring-data-elasticsearch/src/test/java/org/baeldung/SpringContextIntegrationTest.java
@@ -0,0 +1,17 @@
+package org.baeldung;
+
+import org.junit.Test;
+import org.junit.runner.RunWith;
+import org.springframework.test.context.ContextConfiguration;
+import org.springframework.test.context.junit4.SpringJUnit4ClassRunner;
+
+import com.baeldung.spring.data.es.config.Config;
+
+@RunWith(SpringJUnit4ClassRunner.class)
+@ContextConfiguration(classes = Config.class)
+public class SpringContextIntegrationTest {
+
+ @Test
+ public void whenSpringContextIsBootstrapped_thenNoExceptions() {
+ }
+}
diff --git a/spring-data-jpa/README.md b/spring-data-jpa/README.md
index 20e9d41839..8817020eec 100644
--- a/spring-data-jpa/README.md
+++ b/spring-data-jpa/README.md
@@ -11,6 +11,9 @@
- [Spring Data Java 8 Support](http://www.baeldung.com/spring-data-java-8)
- [A Simple Tagging Implementation with JPA](http://www.baeldung.com/jpa-tagging)
- [Spring Data Composable Repositories](https://www.baeldung.com/spring-data-composable-repositories)
+- [Auditing with JPA, Hibernate, and Spring Data JPA](https://www.baeldung.com/database-auditing-jpa)
+- [Query Entities by Dates and Times with Spring Data JPA](https://www.baeldung.com/spring-data-jpa-query-by-date)
+- [DDD Aggregates and @DomainEvents](https://www.baeldung.com/spring-data-ddd)
### Eclipse Config
After importing the project into Eclipse, you may see the following error:
diff --git a/spring-data-jpa/src/test/java/org/baeldung/SpringContextIntegrationTest.java b/spring-data-jpa/src/test/java/org/baeldung/SpringContextIntegrationTest.java
new file mode 100644
index 0000000000..0a60412813
--- /dev/null
+++ b/spring-data-jpa/src/test/java/org/baeldung/SpringContextIntegrationTest.java
@@ -0,0 +1,22 @@
+package org.baeldung;
+
+import org.junit.Test;
+import org.junit.runner.RunWith;
+import org.springframework.boot.test.autoconfigure.orm.jpa.DataJpaTest;
+import org.springframework.boot.test.context.SpringBootTest;
+import org.springframework.test.context.junit4.SpringRunner;
+
+import com.baeldung.Application;
+import com.baeldung.config.PersistenceConfiguration;
+import com.baeldung.config.PersistenceProductConfiguration;
+import com.baeldung.config.PersistenceUserConfiguration;
+
+@RunWith(SpringRunner.class)
+@DataJpaTest(excludeAutoConfiguration = {PersistenceConfiguration.class, PersistenceUserConfiguration.class, PersistenceProductConfiguration.class})
+@SpringBootTest(classes = Application.class)
+public class SpringContextIntegrationTest {
+
+ @Test
+ public void whenSpringContextIsBootstrapped_thenNoExceptions() {
+ }
+}
diff --git a/spring-data-keyvalue/pom.xml b/spring-data-keyvalue/pom.xml
index 6ab928303d..edd8967b97 100644
--- a/spring-data-keyvalue/pom.xml
+++ b/spring-data-keyvalue/pom.xml
@@ -1,9 +1,7 @@
4.0.0
- com.baeldung
spring-data-keyvalue
- 1.0
parent-boot-2
@@ -13,7 +11,6 @@
-
org.springframework.boot
spring-boot-starter
@@ -30,8 +27,4 @@
-
- 2.0.3.RELEASE
-
-
\ No newline at end of file
diff --git a/spring-data-keyvalue/src/test/java/org/baeldung/SpringContextIntegrationTest.java b/spring-data-keyvalue/src/test/java/org/baeldung/SpringContextIntegrationTest.java
new file mode 100644
index 0000000000..d28bdcbc89
--- /dev/null
+++ b/spring-data-keyvalue/src/test/java/org/baeldung/SpringContextIntegrationTest.java
@@ -0,0 +1,17 @@
+package org.baeldung;
+
+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.data.keyvalue.SpringDataKeyValueApplication;
+
+@RunWith(SpringRunner.class)
+@SpringBootTest(classes = SpringDataKeyValueApplication.class)
+public class SpringContextIntegrationTest {
+
+ @Test
+ public void whenSpringContextIsBootstrapped_thenNoExceptions() {
+ }
+}
diff --git a/spring-data-mongodb/src/test/java/org/baeldung/SpringContextIntegrationTest.java b/spring-data-mongodb/src/test/java/org/baeldung/SpringContextIntegrationTest.java
new file mode 100644
index 0000000000..04d549a288
--- /dev/null
+++ b/spring-data-mongodb/src/test/java/org/baeldung/SpringContextIntegrationTest.java
@@ -0,0 +1,18 @@
+package org.baeldung;
+
+import org.junit.Test;
+import org.junit.runner.RunWith;
+import org.springframework.test.context.ContextConfiguration;
+import org.springframework.test.context.junit4.SpringJUnit4ClassRunner;
+
+import com.baeldung.config.MongoConfig;
+import com.baeldung.config.SimpleMongoConfig;
+
+@RunWith(SpringJUnit4ClassRunner.class)
+@ContextConfiguration(classes = { MongoConfig.class, SimpleMongoConfig.class })
+public class SpringContextIntegrationTest {
+
+ @Test
+ public void whenSpringContextIsBootstrapped_thenNoExceptions() {
+ }
+}
diff --git a/spring-data-rest-querydsl/src/test/java/org/baeldung/SpringContextIntegrationTest.java b/spring-data-rest-querydsl/src/test/java/org/baeldung/SpringContextIntegrationTest.java
new file mode 100644
index 0000000000..7f906bdbcd
--- /dev/null
+++ b/spring-data-rest-querydsl/src/test/java/org/baeldung/SpringContextIntegrationTest.java
@@ -0,0 +1,17 @@
+package org.baeldung;
+
+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.Application;
+
+@RunWith(SpringRunner.class)
+@SpringBootTest(classes = Application.class)
+public class SpringContextIntegrationTest {
+
+ @Test
+ public void whenSpringContextIsBootstrapped_thenNoExceptions() {
+ }
+}
diff --git a/spring-data-rest/src/test/java/org/baeldung/SpringContextIntegrationTest.java b/spring-data-rest/src/test/java/org/baeldung/SpringContextIntegrationTest.java
new file mode 100644
index 0000000000..0380e3dc2f
--- /dev/null
+++ b/spring-data-rest/src/test/java/org/baeldung/SpringContextIntegrationTest.java
@@ -0,0 +1,17 @@
+package org.baeldung;
+
+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.SpringDataRestApplication;
+
+@RunWith(SpringRunner.class)
+@SpringBootTest(classes = SpringDataRestApplication.class)
+public class SpringContextIntegrationTest {
+
+ @Test
+ public void whenSpringContextIsBootstrapped_thenNoExceptions() {
+ }
+}
diff --git a/spring-dispatcher-servlet/pom.xml b/spring-dispatcher-servlet/pom.xml
index 4e4346e43b..7ac291740e 100644
--- a/spring-dispatcher-servlet/pom.xml
+++ b/spring-dispatcher-servlet/pom.xml
@@ -61,6 +61,12 @@
commons-fileupload
${commons-fileupload.version}
+
+ org.springframework.boot
+ spring-boot-starter-test
+ 1.5.10.RELEASE
+ test
+
diff --git a/spring-dispatcher-servlet/src/test/java/org/baeldung/SpringContextIntegrationTest.java b/spring-dispatcher-servlet/src/test/java/org/baeldung/SpringContextIntegrationTest.java
new file mode 100644
index 0000000000..8a9d3421c2
--- /dev/null
+++ b/spring-dispatcher-servlet/src/test/java/org/baeldung/SpringContextIntegrationTest.java
@@ -0,0 +1,19 @@
+package org.baeldung;
+
+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;
+
+import com.baeldung.springdispatcherservlet.configuration.AppConfig;
+
+@RunWith(SpringJUnit4ClassRunner.class)
+@ContextConfiguration(classes = AppConfig.class)
+@WebAppConfiguration
+public class SpringContextIntegrationTest {
+
+ @Test
+ public void whenSpringContextIsBootstrapped_thenNoExceptions() {
+ }
+}
diff --git a/spring-drools/src/test/java/org/baeldung/SpringContextIntegrationTest.java b/spring-drools/src/test/java/org/baeldung/SpringContextIntegrationTest.java
new file mode 100644
index 0000000000..68325682e5
--- /dev/null
+++ b/spring-drools/src/test/java/org/baeldung/SpringContextIntegrationTest.java
@@ -0,0 +1,17 @@
+package org.baeldung;
+
+import org.junit.Test;
+import org.junit.runner.RunWith;
+import org.springframework.test.context.ContextConfiguration;
+import org.springframework.test.context.junit4.SpringJUnit4ClassRunner;
+
+import com.baeldung.spring.drools.service.TaxiFareConfiguration;
+
+@RunWith(SpringJUnit4ClassRunner.class)
+@ContextConfiguration(classes = TaxiFareConfiguration.class)
+public class SpringContextIntegrationTest {
+
+ @Test
+ public void whenSpringContextIsBootstrapped_thenNoExceptions() {
+ }
+}
diff --git a/spring-ejb/spring-ejb-client/src/test/java/org/baeldung/SpringContextIntegrationTest.java b/spring-ejb/spring-ejb-client/src/test/java/org/baeldung/SpringContextIntegrationTest.java
new file mode 100644
index 0000000000..4d2d83646d
--- /dev/null
+++ b/spring-ejb/spring-ejb-client/src/test/java/org/baeldung/SpringContextIntegrationTest.java
@@ -0,0 +1,17 @@
+package org.baeldung;
+
+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.springejbclient.SpringEjbClientApplication;
+
+@RunWith(SpringRunner.class)
+@SpringBootTest(classes = SpringEjbClientApplication.class)
+public class SpringContextIntegrationTest {
+
+ @Test
+ public void whenSpringContextIsBootstrapped_thenNoExceptions() {
+ }
+}
diff --git a/spring-exceptions/src/test/java/org/baeldung/SpringContextIntegrationTest.java b/spring-exceptions/src/test/java/org/baeldung/SpringContextIntegrationTest.java
new file mode 100644
index 0000000000..492673b168
--- /dev/null
+++ b/spring-exceptions/src/test/java/org/baeldung/SpringContextIntegrationTest.java
@@ -0,0 +1,18 @@
+package org.baeldung;
+
+import org.baeldung.spring.config.CoreConfig;
+import org.baeldung.spring.config.MvcConfig;
+import org.baeldung.spring.config.PersistenceConfig;
+import org.junit.Test;
+import org.junit.runner.RunWith;
+import org.springframework.test.context.ContextConfiguration;
+import org.springframework.test.context.junit4.SpringJUnit4ClassRunner;
+
+@RunWith(SpringJUnit4ClassRunner.class)
+@ContextConfiguration(classes = { CoreConfig.class, MvcConfig.class, PersistenceConfig.class})
+public class SpringContextIntegrationTest {
+
+ @Test
+ public void whenSpringContextIsBootstrapped_thenNoExceptions() {
+ }
+}
diff --git a/spring-freemarker/pom.xml b/spring-freemarker/pom.xml
index f0626195fd..4ff57e27f0 100644
--- a/spring-freemarker/pom.xml
+++ b/spring-freemarker/pom.xml
@@ -44,6 +44,13 @@
freemarker
${freemarker.version}
+
+
+ org.springframework.boot
+ spring-boot-starter-test
+ 1.5.10.RELEASE
+ test
+
diff --git a/spring-freemarker/src/test/java/org/baeldung/SpringContextIntegrationTest.java b/spring-freemarker/src/test/java/org/baeldung/SpringContextIntegrationTest.java
new file mode 100644
index 0000000000..ab0e6e8f49
--- /dev/null
+++ b/spring-freemarker/src/test/java/org/baeldung/SpringContextIntegrationTest.java
@@ -0,0 +1,20 @@
+package org.baeldung;
+
+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;
+
+import com.baeldung.freemarker.config.SpringWebConfig;
+import com.baeldung.freemarker.config.WebConfiguration;
+
+@RunWith(SpringJUnit4ClassRunner.class)
+@ContextConfiguration(classes = { SpringWebConfig.class, WebConfiguration.class })
+@WebAppConfiguration
+public class SpringContextIntegrationTest {
+
+ @Test
+ public void whenSpringContextIsBootstrapped_thenNoExceptions() {
+ }
+}
diff --git a/spring-groovy/src/test/java/com/baeldug/groovyconfig/GroovyConfigurationTest.java b/spring-groovy/src/test/java/com/baeldug/groovyconfig/GroovyConfigurationUnitTest.java
similarity index 97%
rename from spring-groovy/src/test/java/com/baeldug/groovyconfig/GroovyConfigurationTest.java
rename to spring-groovy/src/test/java/com/baeldug/groovyconfig/GroovyConfigurationUnitTest.java
index 91ca6dbfe9..dbefba5ba5 100644
--- a/spring-groovy/src/test/java/com/baeldug/groovyconfig/GroovyConfigurationTest.java
+++ b/spring-groovy/src/test/java/com/baeldug/groovyconfig/GroovyConfigurationUnitTest.java
@@ -7,7 +7,7 @@ import java.io.File;
import org.junit.Test;
import org.springframework.context.support.GenericGroovyApplicationContext;
-public class GroovyConfigurationTest {
+public class GroovyConfigurationUnitTest {
private static final String FILE_NAME = "GroovyBeanConfig.groovy";
private static final String FILE_PATH = "src/main/java/com/baeldug/groovyconfig/";
diff --git a/spring-groovy/src/test/java/com/baeldug/groovyconfig/JavaConfigurationTest.java b/spring-groovy/src/test/java/com/baeldug/groovyconfig/JavaConfigurationUnitTest.java
similarity index 93%
rename from spring-groovy/src/test/java/com/baeldug/groovyconfig/JavaConfigurationTest.java
rename to spring-groovy/src/test/java/com/baeldug/groovyconfig/JavaConfigurationUnitTest.java
index 2d9b1000ff..c1e16f1b62 100644
--- a/spring-groovy/src/test/java/com/baeldug/groovyconfig/JavaConfigurationTest.java
+++ b/spring-groovy/src/test/java/com/baeldug/groovyconfig/JavaConfigurationUnitTest.java
@@ -5,7 +5,7 @@ import static org.junit.Assert.assertEquals;
import org.junit.Test;
import org.springframework.context.annotation.AnnotationConfigApplicationContext;
-public class JavaConfigurationTest {
+public class JavaConfigurationUnitTest {
@Test
public void whenJavaConfig_thenCorrectPerson() {
diff --git a/spring-groovy/src/test/java/com/baeldug/groovyconfig/XmlConfigurationTest.java b/spring-groovy/src/test/java/com/baeldug/groovyconfig/XmlConfigurationUnitTest.java
similarity index 94%
rename from spring-groovy/src/test/java/com/baeldug/groovyconfig/XmlConfigurationTest.java
rename to spring-groovy/src/test/java/com/baeldug/groovyconfig/XmlConfigurationUnitTest.java
index 3ee724207c..b8d341ee39 100644
--- a/spring-groovy/src/test/java/com/baeldug/groovyconfig/XmlConfigurationTest.java
+++ b/spring-groovy/src/test/java/com/baeldug/groovyconfig/XmlConfigurationUnitTest.java
@@ -6,7 +6,7 @@ import org.junit.Test;
import org.springframework.context.ApplicationContext;
import org.springframework.context.support.ClassPathXmlApplicationContext;
-public class XmlConfigurationTest {
+public class XmlConfigurationUnitTest {
@Test
public void whenXmlConfig_thenCorrectPerson() {
diff --git a/spring-groovy/src/test/java/com/baeldug/spring_groovy/AppTest.java b/spring-groovy/src/test/java/com/baeldug/spring_groovy/AppUnitTest.java
similarity index 82%
rename from spring-groovy/src/test/java/com/baeldug/spring_groovy/AppTest.java
rename to spring-groovy/src/test/java/com/baeldug/spring_groovy/AppUnitTest.java
index 19eefb6c0f..3d8fa3e2d8 100644
--- a/spring-groovy/src/test/java/com/baeldug/spring_groovy/AppTest.java
+++ b/spring-groovy/src/test/java/com/baeldug/spring_groovy/AppUnitTest.java
@@ -7,7 +7,7 @@ import junit.framework.TestSuite;
/**
* Unit test for simple App.
*/
-public class AppTest
+public class AppUnitTest
extends TestCase
{
/**
@@ -15,7 +15,7 @@ public class AppTest
*
* @param testName name of the test case
*/
- public AppTest( String testName )
+ public AppUnitTest( String testName )
{
super( testName );
}
@@ -25,7 +25,7 @@ public class AppTest
*/
public static Test suite()
{
- return new TestSuite( AppTest.class );
+ return new TestSuite( AppUnitTest.class );
}
/**
diff --git a/spring-hibernate4/src/test/java/org/baeldung/SpringContextIntegrationTest.java b/spring-hibernate4/src/test/java/org/baeldung/SpringContextIntegrationTest.java
new file mode 100644
index 0000000000..af4618d0f3
--- /dev/null
+++ b/spring-hibernate4/src/test/java/org/baeldung/SpringContextIntegrationTest.java
@@ -0,0 +1,18 @@
+package org.baeldung;
+
+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.support.AnnotationConfigContextLoader;
+
+import com.baeldung.spring.PersistenceConfig;
+
+@RunWith(SpringJUnit4ClassRunner.class)
+@ContextConfiguration(classes = { PersistenceConfig.class }, loader = AnnotationConfigContextLoader.class)
+public class SpringContextIntegrationTest {
+
+ @Test
+ public void whenSpringContextIsBootstrapped_thenNoExceptions() {
+ }
+}
diff --git a/spring-integration/src/test/java/org/baeldung/SpringContextIntegrationTest.java b/spring-integration/src/test/java/org/baeldung/SpringContextIntegrationTest.java
new file mode 100644
index 0000000000..92e80a0903
--- /dev/null
+++ b/spring-integration/src/test/java/org/baeldung/SpringContextIntegrationTest.java
@@ -0,0 +1,21 @@
+package org.baeldung;
+
+import org.junit.Test;
+import org.junit.runner.RunWith;
+import org.springframework.test.context.ContextConfiguration;
+import org.springframework.test.context.junit4.SpringJUnit4ClassRunner;
+
+import com.baeldung.si.security.MessageConsumer;
+import com.baeldung.si.security.SecuredDirectChannel;
+import com.baeldung.si.security.SecurityConfig;
+import com.baeldung.si.security.SecurityPubSubChannel;
+
+@RunWith(SpringJUnit4ClassRunner.class)
+@ContextConfiguration(classes = { SecurityConfig.class, SecuredDirectChannel.class, SecurityPubSubChannel.class,
+ MessageConsumer.class })
+public class SpringContextIntegrationTest {
+
+ @Test
+ public void whenSpringContextIsBootstrapped_thenNoExceptions() {
+ }
+}
diff --git a/spring-jenkins-pipeline/src/test/java/org/baeldung/SpringContextIntegrationTest.java b/spring-jenkins-pipeline/src/test/java/org/baeldung/SpringContextIntegrationTest.java
new file mode 100644
index 0000000000..8eb1589de7
--- /dev/null
+++ b/spring-jenkins-pipeline/src/test/java/org/baeldung/SpringContextIntegrationTest.java
@@ -0,0 +1,17 @@
+package org.baeldung;
+
+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.SpringJenkinsPipelineApplication;
+
+@RunWith(SpringRunner.class)
+@SpringBootTest(classes = SpringJenkinsPipelineApplication.class)
+public class SpringContextIntegrationTest {
+
+ @Test
+ public void whenSpringContextIsBootstrapped_thenNoExceptions() {
+ }
+}
diff --git a/spring-jersey/pom.xml b/spring-jersey/pom.xml
index 40dc91a88d..872835177d 100644
--- a/spring-jersey/pom.xml
+++ b/spring-jersey/pom.xml
@@ -118,6 +118,14 @@
3.10.0
test
+
+
+
+ org.springframework.boot
+ spring-boot-starter-test
+ 1.5.10.RELEASE
+ test
+
diff --git a/spring-jersey/src/test/java/org/baeldung/SpringContextIntegrationTest.java b/spring-jersey/src/test/java/org/baeldung/SpringContextIntegrationTest.java
new file mode 100644
index 0000000000..21f180854c
--- /dev/null
+++ b/spring-jersey/src/test/java/org/baeldung/SpringContextIntegrationTest.java
@@ -0,0 +1,17 @@
+package org.baeldung;
+
+import org.junit.Test;
+import org.junit.runner.RunWith;
+import org.springframework.test.context.ContextConfiguration;
+import org.springframework.test.context.junit4.SpringJUnit4ClassRunner;
+
+import com.baeldung.server.config.RestConfig;
+
+@RunWith(SpringJUnit4ClassRunner.class)
+@ContextConfiguration(classes = RestConfig.class)
+public class SpringContextIntegrationTest {
+
+ @Test
+ public void whenSpringContextIsBootstrapped_thenNoExceptions() {
+ }
+}
diff --git a/spring-jinq/src/test/java/org/baeldung/SpringContextIntegrationTest.java b/spring-jinq/src/test/java/org/baeldung/SpringContextIntegrationTest.java
new file mode 100644
index 0000000000..ccf774330f
--- /dev/null
+++ b/spring-jinq/src/test/java/org/baeldung/SpringContextIntegrationTest.java
@@ -0,0 +1,17 @@
+package org.baeldung;
+
+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.jinq.JinqApplication;
+
+@RunWith(SpringRunner.class)
+@SpringBootTest(classes = JinqApplication.class)
+public class SpringContextIntegrationTest {
+
+ @Test
+ public void whenSpringContextIsBootstrapped_thenNoExceptions() {
+ }
+}
diff --git a/spring-jms/pom.xml b/spring-jms/pom.xml
index 949a78b2a1..814875f77b 100644
--- a/spring-jms/pom.xml
+++ b/spring-jms/pom.xml
@@ -33,6 +33,14 @@
activemq-all
${activemq.version}
+
+
+
+ org.springframework.boot
+ spring-boot-starter-test
+ 1.5.10.RELEASE
+ test
+
diff --git a/spring-jms/src/test/java/org/baeldung/SpringContextIntegrationTest.java b/spring-jms/src/test/java/org/baeldung/SpringContextIntegrationTest.java
new file mode 100644
index 0000000000..e13809f571
--- /dev/null
+++ b/spring-jms/src/test/java/org/baeldung/SpringContextIntegrationTest.java
@@ -0,0 +1,15 @@
+package org.baeldung;
+
+import org.junit.Test;
+import org.junit.runner.RunWith;
+import org.springframework.test.context.ContextConfiguration;
+import org.springframework.test.context.junit4.SpringJUnit4ClassRunner;
+
+@RunWith(SpringJUnit4ClassRunner.class)
+@ContextConfiguration(locations = {"classpath:applicationContext.xml", "classpath:EmbeddedActiveMQ.xml"})
+public class SpringContextIntegrationTest {
+
+ @Test
+ public void whenSpringContextIsBootstrapped_thenNoExceptions() {
+ }
+}
diff --git a/spring-kafka/src/test/java/org/baeldung/SpringContextIntegrationTest.java b/spring-kafka/src/test/java/org/baeldung/SpringContextIntegrationTest.java
new file mode 100644
index 0000000000..40bf86c76f
--- /dev/null
+++ b/spring-kafka/src/test/java/org/baeldung/SpringContextIntegrationTest.java
@@ -0,0 +1,17 @@
+package org.baeldung;
+
+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.kafka.KafkaApplication;
+
+@RunWith(SpringRunner.class)
+@SpringBootTest(classes = KafkaApplication.class)
+public class SpringContextIntegrationTest {
+
+ @Test
+ public void whenSpringContextIsBootstrapped_thenNoExceptions() {
+ }
+}
diff --git a/spring-katharsis/src/test/java/org/baeldung/SpringContextIntegrationTest.java b/spring-katharsis/src/test/java/org/baeldung/SpringContextIntegrationTest.java
new file mode 100644
index 0000000000..48081903b6
--- /dev/null
+++ b/spring-katharsis/src/test/java/org/baeldung/SpringContextIntegrationTest.java
@@ -0,0 +1,16 @@
+package org.baeldung;
+
+import org.baeldung.Application;
+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 = Application.class)
+public class SpringContextIntegrationTest {
+
+ @Test
+ public void whenSpringContextIsBootstrapped_thenNoExceptions() {
+ }
+}
diff --git a/spring-ldap/src/test/java/org/baeldung/SpringContextIntegrationTest.java b/spring-ldap/src/test/java/org/baeldung/SpringContextIntegrationTest.java
new file mode 100644
index 0000000000..9c233e6562
--- /dev/null
+++ b/spring-ldap/src/test/java/org/baeldung/SpringContextIntegrationTest.java
@@ -0,0 +1,17 @@
+package org.baeldung;
+
+import org.junit.Test;
+import org.junit.runner.RunWith;
+import org.springframework.test.context.ContextConfiguration;
+import org.springframework.test.context.junit4.SpringJUnit4ClassRunner;
+
+import com.baeldung.ldap.javaconfig.AppConfig;
+
+@RunWith(SpringJUnit4ClassRunner.class)
+@ContextConfiguration(classes = AppConfig.class)
+public class SpringContextIntegrationTest {
+
+ @Test
+ public void whenSpringContextIsBootstrapped_thenNoExceptions() {
+ }
+}
diff --git a/spring-mobile/src/test/java/org/baeldung/SpringContextIntegrationTest.java b/spring-mobile/src/test/java/org/baeldung/SpringContextIntegrationTest.java
new file mode 100644
index 0000000000..7f906bdbcd
--- /dev/null
+++ b/spring-mobile/src/test/java/org/baeldung/SpringContextIntegrationTest.java
@@ -0,0 +1,17 @@
+package org.baeldung;
+
+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.Application;
+
+@RunWith(SpringRunner.class)
+@SpringBootTest(classes = Application.class)
+public class SpringContextIntegrationTest {
+
+ @Test
+ public void whenSpringContextIsBootstrapped_thenNoExceptions() {
+ }
+}
diff --git a/spring-mockito/src/test/java/org/baeldung/SpringContextIntegrationTest.java b/spring-mockito/src/test/java/org/baeldung/SpringContextIntegrationTest.java
new file mode 100644
index 0000000000..7ce9f70302
--- /dev/null
+++ b/spring-mockito/src/test/java/org/baeldung/SpringContextIntegrationTest.java
@@ -0,0 +1,17 @@
+package org.baeldung;
+
+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.MocksApplication;
+
+@RunWith(SpringRunner.class)
+@SpringBootTest(classes = MocksApplication.class)
+public class SpringContextIntegrationTest {
+
+ @Test
+ public void whenSpringContextIsBootstrapped_thenNoExceptions() {
+ }
+}
diff --git a/spring-mustache/pom.xml b/spring-mustache/pom.xml
index 4e7a1ba5a3..9e4c528ee0 100644
--- a/spring-mustache/pom.xml
+++ b/spring-mustache/pom.xml
@@ -3,9 +3,7 @@
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
4.0.0
- com.baeldung
spring-mustache
- 0.0.1-SNAPSHOT
jar
spring-mustache
Demo project for Spring Boot
@@ -50,9 +48,6 @@
- UTF-8
- UTF-8
- 1.8
3.3.7
0.8
diff --git a/spring-mustache/src/test/java/com/baeldung/springmustache/SpringMustacheApplicationTests.java b/spring-mustache/src/test/java/com/baeldung/springmustache/SpringMustacheApplicationIntegrationTest.java
similarity index 94%
rename from spring-mustache/src/test/java/com/baeldung/springmustache/SpringMustacheApplicationTests.java
rename to spring-mustache/src/test/java/com/baeldung/springmustache/SpringMustacheApplicationIntegrationTest.java
index 9138dfe92b..1eecf58986 100644
--- a/spring-mustache/src/test/java/com/baeldung/springmustache/SpringMustacheApplicationTests.java
+++ b/spring-mustache/src/test/java/com/baeldung/springmustache/SpringMustacheApplicationIntegrationTest.java
@@ -13,7 +13,7 @@ import org.springframework.test.context.junit4.SpringRunner;
@RunWith(SpringRunner.class)
@SpringBootTest(webEnvironment = WebEnvironment.RANDOM_PORT)
-public class SpringMustacheApplicationTests {
+public class SpringMustacheApplicationIntegrationTest {
@Autowired
private TestRestTemplate restTemplate;
diff --git a/spring-mvc-forms-jsp/pom.xml b/spring-mvc-forms-jsp/pom.xml
index 6c75c9299b..5536314086 100644
--- a/spring-mvc-forms-jsp/pom.xml
+++ b/spring-mvc-forms-jsp/pom.xml
@@ -63,6 +63,12 @@
jackson-databind
${jackson-databind.version}
+
+ org.springframework.boot
+ spring-boot-starter-test
+ 1.5.10.RELEASE
+ test
+
diff --git a/spring-mvc-forms-jsp/src/main/java/com/baeldung/springmvcforms/configuration/ApplicationConfiguration.java b/spring-mvc-forms-jsp/src/main/java/com/baeldung/springmvcforms/configuration/ApplicationConfiguration.java
index b8b36df84e..2b2844e0de 100644
--- a/spring-mvc-forms-jsp/src/main/java/com/baeldung/springmvcforms/configuration/ApplicationConfiguration.java
+++ b/spring-mvc-forms-jsp/src/main/java/com/baeldung/springmvcforms/configuration/ApplicationConfiguration.java
@@ -14,7 +14,7 @@ import org.springframework.web.servlet.view.InternalResourceViewResolver;
@Configuration
@EnableWebMvc
@ComponentScan(basePackages = {"com.baeldung.springmvcforms", "com.baeldung.jstl"})
-class ApplicationConfiguration implements WebMvcConfigurer {
+public class ApplicationConfiguration implements WebMvcConfigurer {
@Override
public void configureDefaultServletHandling(DefaultServletHandlerConfigurer configurer) {
diff --git a/spring-mvc-forms-jsp/src/test/java/org/baeldung/SpringContextIntegrationTest.java b/spring-mvc-forms-jsp/src/test/java/org/baeldung/SpringContextIntegrationTest.java
new file mode 100644
index 0000000000..c1e9b71550
--- /dev/null
+++ b/spring-mvc-forms-jsp/src/test/java/org/baeldung/SpringContextIntegrationTest.java
@@ -0,0 +1,19 @@
+package org.baeldung;
+
+import com.baeldung.springmvcforms.configuration.ApplicationConfiguration;
+
+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 = ApplicationConfiguration.class)
+@WebAppConfiguration
+public class SpringContextIntegrationTest {
+
+ @Test
+ public void whenSpringContextIsBootstrapped_thenNoExceptions() {
+ }
+}
diff --git a/spring-mvc-forms-thymeleaf/src/test/java/org/baeldung/listbindingexample/SpringContextIntegrationTest.java b/spring-mvc-forms-thymeleaf/src/test/java/org/baeldung/listbindingexample/SpringContextIntegrationTest.java
new file mode 100644
index 0000000000..da87a6830a
--- /dev/null
+++ b/spring-mvc-forms-thymeleaf/src/test/java/org/baeldung/listbindingexample/SpringContextIntegrationTest.java
@@ -0,0 +1,17 @@
+package org.baeldung.listbindingexample;
+
+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.listbindingexample.ListBindingApplication;
+
+@RunWith(SpringRunner.class)
+@SpringBootTest(classes = {ListBindingApplication.class})
+public class SpringContextIntegrationTest {
+
+ @Test
+ public void whenSpringContextIsBootstrapped_thenNoExceptions() {
+ }
+}
diff --git a/spring-mvc-forms-thymeleaf/src/test/java/org/baeldung/sessionattrs/SpringContextIntegrationTest.java b/spring-mvc-forms-thymeleaf/src/test/java/org/baeldung/sessionattrs/SpringContextIntegrationTest.java
new file mode 100644
index 0000000000..e6b0dbf98c
--- /dev/null
+++ b/spring-mvc-forms-thymeleaf/src/test/java/org/baeldung/sessionattrs/SpringContextIntegrationTest.java
@@ -0,0 +1,17 @@
+package org.baeldung.sessionattrs;
+
+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.sessionattrs.SessionAttrsApplication;
+
+@RunWith(SpringRunner.class)
+@SpringBootTest(classes = {SessionAttrsApplication.class})
+public class SpringContextIntegrationTest {
+
+ @Test
+ public void whenSpringContextIsBootstrapped_thenNoExceptions() {
+ }
+}
diff --git a/spring-mvc-java/README.md b/spring-mvc-java/README.md
index 44b1d65bc8..3a580202cf 100644
--- a/spring-mvc-java/README.md
+++ b/spring-mvc-java/README.md
@@ -30,3 +30,5 @@ The "REST With Spring" Classes: http://bit.ly/restwithspring
- [A Quick Example of Spring Websockets’ @SendToUser Annotation](http://www.baeldung.com/spring-websockets-sendtouser)
- [Using Spring ResponseEntity to Manipulate the HTTP Response](http://www.baeldung.com/spring-response-entity)
- [Using Spring @ResponseStatus to Set HTTP Status Code](http://www.baeldung.com/spring-response-status)
+- [Bootstrap a Web Application with Spring 5](https://www.baeldung.com/bootstraping-a-web-application-with-spring-and-java-based-configuration)
+- [Spring MVC Tutorial](https://www.baeldung.com/spring-mvc-tutorial)
diff --git a/spring-mvc-velocity/src/test/java/org/baeldung/SpringContextIntegrationTest.java b/spring-mvc-velocity/src/test/java/org/baeldung/SpringContextIntegrationTest.java
new file mode 100644
index 0000000000..3649332870
--- /dev/null
+++ b/spring-mvc-velocity/src/test/java/org/baeldung/SpringContextIntegrationTest.java
@@ -0,0 +1,20 @@
+package org.baeldung;
+
+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;
+
+import com.baeldung.mvc.velocity.spring.config.WebConfig;
+import com.baeldung.mvc.velocity.test.config.TestConfig;
+
+@RunWith(SpringJUnit4ClassRunner.class)
+@ContextConfiguration(classes = { TestConfig.class, WebConfig.class })
+@WebAppConfiguration
+public class SpringContextIntegrationTest {
+
+ @Test
+ public void whenSpringContextIsBootstrapped_thenNoExceptions() {
+ }
+}
diff --git a/spring-mvc-webflow/pom.xml b/spring-mvc-webflow/pom.xml
index f7070efb94..e1a279a787 100644
--- a/spring-mvc-webflow/pom.xml
+++ b/spring-mvc-webflow/pom.xml
@@ -52,6 +52,14 @@
log4j-over-slf4j
${org.slf4j.version}
+
+
+
+ org.springframework.boot
+ spring-boot-starter-test
+ 1.5.10.RELEASE
+ test
+
diff --git a/spring-mvc-webflow/src/test/java/org/baeldung/SpringContextIntegrationTest.java b/spring-mvc-webflow/src/test/java/org/baeldung/SpringContextIntegrationTest.java
new file mode 100644
index 0000000000..6f028c78d8
--- /dev/null
+++ b/spring-mvc-webflow/src/test/java/org/baeldung/SpringContextIntegrationTest.java
@@ -0,0 +1,19 @@
+package org.baeldung;
+
+import org.baeldung.spring.WebFlowConfig;
+import org.baeldung.spring.WebMvcConfig;
+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 = {WebFlowConfig.class, WebMvcConfig.class})
+@WebAppConfiguration
+public class SpringContextIntegrationTest {
+
+ @Test
+ public void whenSpringContextIsBootstrapped_thenNoExceptions() {
+ }
+}
diff --git a/spring-mvc-xml/pom.xml b/spring-mvc-xml/pom.xml
index fd33c25241..7187b5c270 100644
--- a/spring-mvc-xml/pom.xml
+++ b/spring-mvc-xml/pom.xml
@@ -86,6 +86,13 @@
+
+
+ org.springframework.boot
+ spring-boot-starter-test
+ 1.5.10.RELEASE
+ test
+
diff --git a/spring-mvc-xml/src/main/java/com/baeldung/spring/ClientWebConfig.java b/spring-mvc-xml/src/main/java/com/baeldung/spring/ClientWebConfig.java
index 9752526963..22260fca70 100644
--- a/spring-mvc-xml/src/main/java/com/baeldung/spring/ClientWebConfig.java
+++ b/spring-mvc-xml/src/main/java/com/baeldung/spring/ClientWebConfig.java
@@ -1,11 +1,13 @@
package com.baeldung.spring;
+import org.springframework.context.annotation.ComponentScan;
import org.springframework.context.annotation.Configuration;
import org.springframework.context.annotation.ImportResource;
import org.springframework.web.servlet.config.annotation.WebMvcConfigurer;
@ImportResource("classpath:webMvcConfig.xml")
@Configuration
+@ComponentScan
public class ClientWebConfig implements WebMvcConfigurer {
public ClientWebConfig() {
diff --git a/spring-mvc-xml/src/test/java/org/baeldung/SpringContextIntegrationTest.java b/spring-mvc-xml/src/test/java/org/baeldung/SpringContextIntegrationTest.java
new file mode 100644
index 0000000000..ec34abd367
--- /dev/null
+++ b/spring-mvc-xml/src/test/java/org/baeldung/SpringContextIntegrationTest.java
@@ -0,0 +1,19 @@
+package org.baeldung;
+
+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;
+
+import com.baeldung.spring.ClientWebConfig;
+
+@RunWith(SpringJUnit4ClassRunner.class)
+@ContextConfiguration(classes = ClientWebConfig.class)
+@WebAppConfiguration
+public class SpringContextIntegrationTest {
+
+ @Test
+ public void whenSpringContextIsBootstrapped_thenNoExceptions() {
+ }
+}
diff --git a/spring-mybatis/src/main/java/com/baeldung/spring/mybatis/controller/StudentController.java b/spring-mybatis/src/main/java/com/baeldung/spring/mybatis/controller/StudentController.java
index 427613f23f..c1e5579103 100644
--- a/spring-mybatis/src/main/java/com/baeldung/spring/mybatis/controller/StudentController.java
+++ b/spring-mybatis/src/main/java/com/baeldung/spring/mybatis/controller/StudentController.java
@@ -31,7 +31,7 @@ public class StudentController {
@RequestMapping(value = "/signup", method = RequestMethod.POST)
public String signup(@Validated @ModelAttribute("student") Student student, BindingResult result, ModelMap model) {
- if (studentService.getStudentByUserName(student.getUserName())) {
+ if (studentService.getStudentByUserName(student.getUserName()) != null) {
model.addAttribute("message", "User Name exists. Try another user name");
return "signup";
} else {
@@ -50,7 +50,7 @@ public class StudentController {
@RequestMapping(value = "/login", method = RequestMethod.POST)
public String login(@ModelAttribute("studentLogin") StudentLogin studentLogin, BindingResult result, ModelMap model) {
- boolean found = studentService.getStudentByLogin(studentLogin.getUserName(), studentLogin.getPassword());
+ boolean found = studentService.getStudentByLogin(studentLogin.getUserName(), studentLogin.getPassword()) != null;
if (found) {
return "success";
} else {
diff --git a/spring-protobuf/src/test/java/org/baeldung/SpringContextIntegrationTest.java b/spring-protobuf/src/test/java/org/baeldung/SpringContextIntegrationTest.java
new file mode 100644
index 0000000000..615ebd5f4a
--- /dev/null
+++ b/spring-protobuf/src/test/java/org/baeldung/SpringContextIntegrationTest.java
@@ -0,0 +1,17 @@
+package org.baeldung;
+
+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.protobuf.Application;
+
+@RunWith(SpringRunner.class)
+@SpringBootTest(classes = Application.class)
+public class SpringContextIntegrationTest {
+
+ @Test
+ public void whenSpringContextIsBootstrapped_thenNoExceptions() {
+ }
+}
diff --git a/spring-quartz/src/test/java/org/baeldung/SpringContextIntegrationTest.java b/spring-quartz/src/test/java/org/baeldung/SpringContextIntegrationTest.java
new file mode 100644
index 0000000000..516cc587a7
--- /dev/null
+++ b/spring-quartz/src/test/java/org/baeldung/SpringContextIntegrationTest.java
@@ -0,0 +1,16 @@
+package org.baeldung;
+
+import org.baeldung.springquartz.SpringQuartzApp;
+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 = SpringQuartzApp.class)
+public class SpringContextIntegrationTest {
+
+ @Test
+ public void whenSpringContextIsBootstrapped_thenNoExceptions() {
+ }
+}
diff --git a/spring-reactor/src/test/java/org/baeldung/SpringContextIntegrationTest.java b/spring-reactor/src/test/java/org/baeldung/SpringContextIntegrationTest.java
new file mode 100644
index 0000000000..7f906bdbcd
--- /dev/null
+++ b/spring-reactor/src/test/java/org/baeldung/SpringContextIntegrationTest.java
@@ -0,0 +1,17 @@
+package org.baeldung;
+
+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.Application;
+
+@RunWith(SpringRunner.class)
+@SpringBootTest(classes = Application.class)
+public class SpringContextIntegrationTest {
+
+ @Test
+ public void whenSpringContextIsBootstrapped_thenNoExceptions() {
+ }
+}
diff --git a/spring-remoting/remoting-amqp/remoting-amqp-client/src/test/java/org/baeldung/SpringContextIntegrationTest.java b/spring-remoting/remoting-amqp/remoting-amqp-client/src/test/java/org/baeldung/SpringContextIntegrationTest.java
new file mode 100644
index 0000000000..2de3ed94d1
--- /dev/null
+++ b/spring-remoting/remoting-amqp/remoting-amqp-client/src/test/java/org/baeldung/SpringContextIntegrationTest.java
@@ -0,0 +1,17 @@
+package org.baeldung;
+
+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.client.AmqpClient;
+
+@RunWith(SpringRunner.class)
+@SpringBootTest(classes = AmqpClient.class)
+public class SpringContextIntegrationTest {
+
+ @Test
+ public void whenSpringContextIsBootstrapped_thenNoExceptions() {
+ }
+}
diff --git a/spring-remoting/remoting-amqp/remoting-amqp-server/src/test/java/org/baeldung/SpringContextIntegrationTest.java b/spring-remoting/remoting-amqp/remoting-amqp-server/src/test/java/org/baeldung/SpringContextIntegrationTest.java
new file mode 100644
index 0000000000..5dc6d1df75
--- /dev/null
+++ b/spring-remoting/remoting-amqp/remoting-amqp-server/src/test/java/org/baeldung/SpringContextIntegrationTest.java
@@ -0,0 +1,17 @@
+package org.baeldung;
+
+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.server.AmqpServer;
+
+@RunWith(SpringRunner.class)
+@SpringBootTest(classes = AmqpServer.class)
+public class SpringContextIntegrationTest {
+
+ @Test
+ public void whenSpringContextIsBootstrapped_thenNoExceptions() {
+ }
+}
diff --git a/spring-remoting/remoting-hessian-burlap/remoting-hessian-burlap-client/src/test/java/org/baeldung/SpringContextIntegrationTest.java b/spring-remoting/remoting-hessian-burlap/remoting-hessian-burlap-client/src/test/java/org/baeldung/SpringContextIntegrationTest.java
new file mode 100644
index 0000000000..1aec444aa0
--- /dev/null
+++ b/spring-remoting/remoting-hessian-burlap/remoting-hessian-burlap-client/src/test/java/org/baeldung/SpringContextIntegrationTest.java
@@ -0,0 +1,18 @@
+package org.baeldung;
+
+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.client.BurlapClient;
+import com.baeldung.client.HessianClient;
+
+@SpringBootTest(classes = {BurlapClient.class, HessianClient.class})
+@RunWith(SpringRunner.class)
+public class SpringContextIntegrationTest {
+
+ @Test
+ public void whenSpringContextIsBootstrapped_thenNoExceptions() {
+ }
+}
diff --git a/spring-remoting/remoting-hessian-burlap/remoting-hessian-burlap-server/src/test/java/org/baeldung/SpringContextIntegrationTest.java b/spring-remoting/remoting-hessian-burlap/remoting-hessian-burlap-server/src/test/java/org/baeldung/SpringContextIntegrationTest.java
new file mode 100644
index 0000000000..f1aad1f601
--- /dev/null
+++ b/spring-remoting/remoting-hessian-burlap/remoting-hessian-burlap-server/src/test/java/org/baeldung/SpringContextIntegrationTest.java
@@ -0,0 +1,17 @@
+package org.baeldung;
+
+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.server.Server;
+
+@SpringBootTest(classes = Server.class)
+@RunWith(SpringRunner.class)
+public class SpringContextIntegrationTest {
+
+ @Test
+ public void whenSpringContextIsBootstrapped_thenNoExceptions() {
+ }
+}
diff --git a/spring-remoting/remoting-http/remoting-http-server/src/test/java/org/baeldung/SpringContextIntegrationTest.java b/spring-remoting/remoting-http/remoting-http-server/src/test/java/org/baeldung/SpringContextIntegrationTest.java
new file mode 100644
index 0000000000..f1aad1f601
--- /dev/null
+++ b/spring-remoting/remoting-http/remoting-http-server/src/test/java/org/baeldung/SpringContextIntegrationTest.java
@@ -0,0 +1,17 @@
+package org.baeldung;
+
+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.server.Server;
+
+@SpringBootTest(classes = Server.class)
+@RunWith(SpringRunner.class)
+public class SpringContextIntegrationTest {
+
+ @Test
+ public void whenSpringContextIsBootstrapped_thenNoExceptions() {
+ }
+}
diff --git a/spring-remoting/remoting-jms/remoting-jms-client/src/test/java/org/baeldung/SpringContextIntegrationTest.java b/spring-remoting/remoting-jms/remoting-jms-client/src/test/java/org/baeldung/SpringContextIntegrationTest.java
new file mode 100644
index 0000000000..a94e639dc8
--- /dev/null
+++ b/spring-remoting/remoting-jms/remoting-jms-client/src/test/java/org/baeldung/SpringContextIntegrationTest.java
@@ -0,0 +1,17 @@
+package org.baeldung;
+
+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.client.JmsClient;
+
+@SpringBootTest(classes = JmsClient.class)
+@RunWith(SpringRunner.class)
+public class SpringContextIntegrationTest {
+
+ @Test
+ public void whenSpringContextIsBootstrapped_thenNoExceptions() {
+ }
+}
diff --git a/spring-remoting/remoting-jms/remoting-jms-server/src/test/java/org/baeldung/SpringContextIntegrationTest.java b/spring-remoting/remoting-jms/remoting-jms-server/src/test/java/org/baeldung/SpringContextIntegrationTest.java
new file mode 100644
index 0000000000..5c9cc5f872
--- /dev/null
+++ b/spring-remoting/remoting-jms/remoting-jms-server/src/test/java/org/baeldung/SpringContextIntegrationTest.java
@@ -0,0 +1,17 @@
+package org.baeldung;
+
+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.server.JmsServer;
+
+@SpringBootTest(classes = JmsServer.class)
+@RunWith(SpringRunner.class)
+public class SpringContextIntegrationTest {
+
+ @Test
+ public void whenSpringContextIsBootstrapped_thenNoExceptions() {
+ }
+}
diff --git a/spring-remoting/remoting-rmi/remoting-rmi-client/src/test/java/org/baeldung/SpringContextIntegrationTest.java b/spring-remoting/remoting-rmi/remoting-rmi-client/src/test/java/org/baeldung/SpringContextIntegrationTest.java
new file mode 100644
index 0000000000..3460792fc6
--- /dev/null
+++ b/spring-remoting/remoting-rmi/remoting-rmi-client/src/test/java/org/baeldung/SpringContextIntegrationTest.java
@@ -0,0 +1,17 @@
+package org.baeldung;
+
+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.client.RmiClient;
+
+@SpringBootTest(classes = RmiClient.class)
+@RunWith(SpringRunner.class)
+public class SpringContextIntegrationTest {
+
+ @Test
+ public void whenSpringContextIsBootstrapped_thenNoExceptions() {
+ }
+}
diff --git a/spring-remoting/remoting-rmi/remoting-rmi-server/src/test/java/org/baeldung/SpringContextIntegrationTest.java b/spring-remoting/remoting-rmi/remoting-rmi-server/src/test/java/org/baeldung/SpringContextIntegrationTest.java
new file mode 100644
index 0000000000..2063dd5e6e
--- /dev/null
+++ b/spring-remoting/remoting-rmi/remoting-rmi-server/src/test/java/org/baeldung/SpringContextIntegrationTest.java
@@ -0,0 +1,17 @@
+package org.baeldung;
+
+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.server.RmiServer;
+
+@SpringBootTest(classes = RmiServer.class)
+@RunWith(SpringRunner.class)
+public class SpringContextIntegrationTest {
+
+ @Test
+ public void whenSpringContextIsBootstrapped_thenNoExceptions() {
+ }
+}
diff --git a/spring-rest-angular/src/test/java/org/baeldung/SpringContextIntegrationTest.java b/spring-rest-angular/src/test/java/org/baeldung/SpringContextIntegrationTest.java
new file mode 100644
index 0000000000..228d0019bd
--- /dev/null
+++ b/spring-rest-angular/src/test/java/org/baeldung/SpringContextIntegrationTest.java
@@ -0,0 +1,16 @@
+package org.baeldung;
+
+import org.baeldung.web.main.Application;
+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 = Application.class)
+public class SpringContextIntegrationTest {
+
+ @Test
+ public void whenSpringContextIsBootstrapped_thenNoExceptions() {
+ }
+}
diff --git a/spring-rest-embedded-tomcat/pom.xml b/spring-rest-embedded-tomcat/pom.xml
index 9f6eb0d703..a8c53dbc3a 100644
--- a/spring-rest-embedded-tomcat/pom.xml
+++ b/spring-rest-embedded-tomcat/pom.xml
@@ -3,7 +3,6 @@
4.0.0
org.baeldung.embedded
spring-rest-embedded-tomcat
- 0.0.1-SNAPSHOT
spring-rest-embedded-tomcat
war
@@ -58,36 +57,18 @@
httpcore
${httpcore.version}
+
+
+ org.springframework.boot
+ spring-boot-starter-test
+ 1.5.10.RELEASE
+ test
+
-
- spring-rest-embedded-tomcat
-
-
- org.apache.maven.plugins
- maven-surefire-plugin
- ${maven-surefire-plugin.version}
-
- 3
- true
-
- **/*IntegrationTest.java
- **/*IntTest.java
- **/*LongRunningUnitTest.java
- **/*ManualTest.java
- **/JdbcTest.java
- **/*LiveTest.java
-
-
-
-
-
-
2.9.2
- 1.8
- 1.8
4.0.0
9.0.1
4.5.3
diff --git a/spring-rest-embedded-tomcat/src/test/java/org/baeldung/SpringContextIntegrationTest.java b/spring-rest-embedded-tomcat/src/test/java/org/baeldung/SpringContextIntegrationTest.java
new file mode 100644
index 0000000000..8b8ff1a322
--- /dev/null
+++ b/spring-rest-embedded-tomcat/src/test/java/org/baeldung/SpringContextIntegrationTest.java
@@ -0,0 +1,18 @@
+package org.baeldung;
+
+import org.baeldung.embedded.configuration.UserConfiguration;
+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 = { UserConfiguration.class })
+@WebAppConfiguration
+public class SpringContextIntegrationTest {
+
+ @Test
+ public void whenSpringContextIsBootstrapped_thenNoExceptions() {
+ }
+}
diff --git a/spring-rest-full/src/test/java/org/baeldung/SpringContextIntegrationTest.java b/spring-rest-full/src/test/java/org/baeldung/SpringContextIntegrationTest.java
new file mode 100644
index 0000000000..35939c992f
--- /dev/null
+++ b/spring-rest-full/src/test/java/org/baeldung/SpringContextIntegrationTest.java
@@ -0,0 +1,16 @@
+package org.baeldung;
+
+import org.baeldung.spring.Application;
+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 = Application.class)
+public class SpringContextIntegrationTest {
+
+ @Test
+ public void whenSpringContextIsBootstrapped_thenNoExceptions() {
+ }
+}
diff --git a/spring-rest-query-language/src/test/java/org/baeldung/SpringContextIntegrationTest.java b/spring-rest-query-language/src/test/java/org/baeldung/SpringContextIntegrationTest.java
new file mode 100644
index 0000000000..35939c992f
--- /dev/null
+++ b/spring-rest-query-language/src/test/java/org/baeldung/SpringContextIntegrationTest.java
@@ -0,0 +1,16 @@
+package org.baeldung;
+
+import org.baeldung.spring.Application;
+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 = Application.class)
+public class SpringContextIntegrationTest {
+
+ @Test
+ public void whenSpringContextIsBootstrapped_thenNoExceptions() {
+ }
+}
diff --git a/spring-rest-shell/pom.xml b/spring-rest-shell/pom.xml
index 2f7d1c8933..7a604946b6 100644
--- a/spring-rest-shell/pom.xml
+++ b/spring-rest-shell/pom.xml
@@ -2,9 +2,7 @@
4.0.0
- com.baeldung
spring-rest-shell
- 0.0.1-SNAPSHOT
jar
spring-rest-shell
A simple project to demonstrate Spring REST Shell features.
@@ -48,10 +46,4 @@
-
- UTF-8
- UTF-8
- 1.8
-
-
diff --git a/spring-rest-simple/src/test/java/org/baeldung/SpringContextIntegrationTest.java b/spring-rest-simple/src/test/java/org/baeldung/SpringContextIntegrationTest.java
new file mode 100644
index 0000000000..66243ef00d
--- /dev/null
+++ b/spring-rest-simple/src/test/java/org/baeldung/SpringContextIntegrationTest.java
@@ -0,0 +1,16 @@
+package org.baeldung;
+
+import org.baeldung.config.Application;
+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 = Application.class)
+public class SpringContextIntegrationTest {
+
+ @Test
+ public void whenSpringContextIsBootstrapped_thenNoExceptions() {
+ }
+}
diff --git a/spring-rest/src/test/java/org/baeldung/SpringContextIntegrationTest.java b/spring-rest/src/test/java/org/baeldung/SpringContextIntegrationTest.java
new file mode 100644
index 0000000000..d99dacd331
--- /dev/null
+++ b/spring-rest/src/test/java/org/baeldung/SpringContextIntegrationTest.java
@@ -0,0 +1,24 @@
+package org.baeldung;
+
+import org.baeldung.config.MainApplication;
+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.custom.CustomApplication;
+import com.baeldung.produceimage.ImageApplication;
+import com.baeldung.propertyeditor.PropertyEditorApplication;
+import com.baeldung.responseheaders.ResponseHeadersApplication;
+import com.baeldung.web.log.app.Application;
+
+@RunWith(SpringRunner.class)
+@SpringBootTest(classes = { CustomApplication.class, ImageApplication.class, PropertyEditorApplication.class,
+ ResponseHeadersApplication.class, Application.class, com.baeldung.web.upload.app.Application.class,
+ MainApplication.class})
+public class SpringContextIntegrationTest {
+
+ @Test
+ public void whenSpringContextIsBootstrapped_thenNoExceptions() {
+ }
+}
diff --git a/spring-resttemplate/src/test/java/org/baeldung/SpringContextIntegrationTest.java b/spring-resttemplate/src/test/java/org/baeldung/SpringContextIntegrationTest.java
new file mode 100644
index 0000000000..3a5a20cfeb
--- /dev/null
+++ b/spring-resttemplate/src/test/java/org/baeldung/SpringContextIntegrationTest.java
@@ -0,0 +1,16 @@
+package org.baeldung;
+
+import org.baeldung.resttemplate.configuration.RestTemplateConfigurationApplication;
+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 = RestTemplateConfigurationApplication.class)
+public class SpringContextIntegrationTest {
+
+ @Test
+ public void whenSpringContextIsBootstrapped_thenNoExceptions() {
+ }
+}
diff --git a/spring-security-acl/src/test/java/org/baeldung/SpringContextIntegrationTest.java b/spring-security-acl/src/test/java/org/baeldung/SpringContextIntegrationTest.java
new file mode 100644
index 0000000000..c7890d79ac
--- /dev/null
+++ b/spring-security-acl/src/test/java/org/baeldung/SpringContextIntegrationTest.java
@@ -0,0 +1,16 @@
+package org.baeldung;
+
+import org.baeldung.acl.Application;
+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 = Application.class)
+public class SpringContextIntegrationTest {
+
+ @Test
+ public void whenSpringContextIsBootstrapped_thenNoExceptions() {
+ }
+}
diff --git a/spring-security-angular/server/src/test/java/org/baeldung/SpringContextIntegrationTest.java b/spring-security-angular/server/src/test/java/org/baeldung/SpringContextIntegrationTest.java
new file mode 100644
index 0000000000..8c62ac5e91
--- /dev/null
+++ b/spring-security-angular/server/src/test/java/org/baeldung/SpringContextIntegrationTest.java
@@ -0,0 +1,17 @@
+package org.baeldung;
+
+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.springbootsecurityrest.basicauth.SpringBootSecurityApplication;
+
+@RunWith(SpringRunner.class)
+@SpringBootTest(classes = SpringBootSecurityApplication.class)
+public class SpringContextIntegrationTest {
+
+ @Test
+ public void whenSpringContextIsBootstrapped_thenNoExceptions() {
+ }
+}
diff --git a/spring-security-cache-control/src/test/java/org/baeldung/SpringContextIntegrationTest.java b/spring-security-cache-control/src/test/java/org/baeldung/SpringContextIntegrationTest.java
new file mode 100644
index 0000000000..c047fc6210
--- /dev/null
+++ b/spring-security-cache-control/src/test/java/org/baeldung/SpringContextIntegrationTest.java
@@ -0,0 +1,17 @@
+package org.baeldung;
+
+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.cachecontrol.AppRunner;
+
+@RunWith(SpringRunner.class)
+@SpringBootTest(classes = AppRunner.class)
+public class SpringContextIntegrationTest {
+
+ @Test
+ public void whenSpringContextIsBootstrapped_thenNoExceptions() {
+ }
+}
diff --git a/spring-security-client/spring-security-jsp-authentication/src/test/java/org/baeldung/SpringContextIntegrationTest.java b/spring-security-client/spring-security-jsp-authentication/src/test/java/org/baeldung/SpringContextIntegrationTest.java
new file mode 100644
index 0000000000..66243ef00d
--- /dev/null
+++ b/spring-security-client/spring-security-jsp-authentication/src/test/java/org/baeldung/SpringContextIntegrationTest.java
@@ -0,0 +1,16 @@
+package org.baeldung;
+
+import org.baeldung.config.Application;
+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 = Application.class)
+public class SpringContextIntegrationTest {
+
+ @Test
+ public void whenSpringContextIsBootstrapped_thenNoExceptions() {
+ }
+}
diff --git a/spring-security-client/spring-security-jsp-authorize/src/test/java/org/baeldung/SpringContextIntegrationTest.java b/spring-security-client/spring-security-jsp-authorize/src/test/java/org/baeldung/SpringContextIntegrationTest.java
new file mode 100644
index 0000000000..66243ef00d
--- /dev/null
+++ b/spring-security-client/spring-security-jsp-authorize/src/test/java/org/baeldung/SpringContextIntegrationTest.java
@@ -0,0 +1,16 @@
+package org.baeldung;
+
+import org.baeldung.config.Application;
+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 = Application.class)
+public class SpringContextIntegrationTest {
+
+ @Test
+ public void whenSpringContextIsBootstrapped_thenNoExceptions() {
+ }
+}
diff --git a/spring-security-client/spring-security-jsp-config/src/test/java/org/baeldung/SpringContextIntegrationTest.java b/spring-security-client/spring-security-jsp-config/src/test/java/org/baeldung/SpringContextIntegrationTest.java
new file mode 100644
index 0000000000..66243ef00d
--- /dev/null
+++ b/spring-security-client/spring-security-jsp-config/src/test/java/org/baeldung/SpringContextIntegrationTest.java
@@ -0,0 +1,16 @@
+package org.baeldung;
+
+import org.baeldung.config.Application;
+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 = Application.class)
+public class SpringContextIntegrationTest {
+
+ @Test
+ public void whenSpringContextIsBootstrapped_thenNoExceptions() {
+ }
+}
diff --git a/spring-security-client/spring-security-mvc/src/test/java/org/baeldung/SpringContextIntegrationTest.java b/spring-security-client/spring-security-mvc/src/test/java/org/baeldung/SpringContextIntegrationTest.java
new file mode 100644
index 0000000000..66243ef00d
--- /dev/null
+++ b/spring-security-client/spring-security-mvc/src/test/java/org/baeldung/SpringContextIntegrationTest.java
@@ -0,0 +1,16 @@
+package org.baeldung;
+
+import org.baeldung.config.Application;
+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 = Application.class)
+public class SpringContextIntegrationTest {
+
+ @Test
+ public void whenSpringContextIsBootstrapped_thenNoExceptions() {
+ }
+}
diff --git a/spring-security-client/spring-security-thymeleaf-authentication/src/test/java/org/baeldung/SpringContextIntegrationTest.java b/spring-security-client/spring-security-thymeleaf-authentication/src/test/java/org/baeldung/SpringContextIntegrationTest.java
new file mode 100644
index 0000000000..66243ef00d
--- /dev/null
+++ b/spring-security-client/spring-security-thymeleaf-authentication/src/test/java/org/baeldung/SpringContextIntegrationTest.java
@@ -0,0 +1,16 @@
+package org.baeldung;
+
+import org.baeldung.config.Application;
+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 = Application.class)
+public class SpringContextIntegrationTest {
+
+ @Test
+ public void whenSpringContextIsBootstrapped_thenNoExceptions() {
+ }
+}
diff --git a/spring-security-client/spring-security-thymeleaf-authorize/src/test/java/org/baeldung/SpringContextIntegrationTest.java b/spring-security-client/spring-security-thymeleaf-authorize/src/test/java/org/baeldung/SpringContextIntegrationTest.java
new file mode 100644
index 0000000000..66243ef00d
--- /dev/null
+++ b/spring-security-client/spring-security-thymeleaf-authorize/src/test/java/org/baeldung/SpringContextIntegrationTest.java
@@ -0,0 +1,16 @@
+package org.baeldung;
+
+import org.baeldung.config.Application;
+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 = Application.class)
+public class SpringContextIntegrationTest {
+
+ @Test
+ public void whenSpringContextIsBootstrapped_thenNoExceptions() {
+ }
+}
diff --git a/spring-security-client/spring-security-thymeleaf-config/src/test/java/org/baeldung/SpringContextIntegrationTest.java b/spring-security-client/spring-security-thymeleaf-config/src/test/java/org/baeldung/SpringContextIntegrationTest.java
new file mode 100644
index 0000000000..66243ef00d
--- /dev/null
+++ b/spring-security-client/spring-security-thymeleaf-config/src/test/java/org/baeldung/SpringContextIntegrationTest.java
@@ -0,0 +1,16 @@
+package org.baeldung;
+
+import org.baeldung.config.Application;
+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 = Application.class)
+public class SpringContextIntegrationTest {
+
+ @Test
+ public void whenSpringContextIsBootstrapped_thenNoExceptions() {
+ }
+}
diff --git a/spring-security-core/src/test/java/org/baeldung/SpringContextIntegrationTest.java b/spring-security-core/src/test/java/org/baeldung/SpringContextIntegrationTest.java
new file mode 100644
index 0000000000..5698afa417
--- /dev/null
+++ b/spring-security-core/src/test/java/org/baeldung/SpringContextIntegrationTest.java
@@ -0,0 +1,16 @@
+package org.baeldung;
+
+import org.baeldung.app.App;
+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 = App.class)
+public class SpringContextIntegrationTest {
+
+ @Test
+ public void whenSpringContextIsBootstrapped_thenNoExceptions() {
+ }
+}
diff --git a/spring-security-mvc-boot/README.MD b/spring-security-mvc-boot/README.MD
index eec61f087f..6bd9b9295c 100644
--- a/spring-security-mvc-boot/README.MD
+++ b/spring-security-mvc-boot/README.MD
@@ -10,3 +10,4 @@ The "REST With Spring" Classes: http://github.learnspringsecurity.com
- [Multiple Authentication Providers in Spring Security](http://www.baeldung.com/spring-security-multiple-auth-providers)
- [Granted Authority Versus Role in Spring Security](http://www.baeldung.com/spring-security-granted-authority-vs-role)
- [Spring Data with Spring Security](https://www.baeldung.com/spring-data-security)
+- [Spring Security – Whitelist IP Range](https://www.baeldung.com/spring-security-whitelist-ip-range)
diff --git a/spring-security-mvc-boot/src/main/java/org/baeldung/ip/config/SecurityConfig.java b/spring-security-mvc-boot/src/main/java/org/baeldung/ip/config/SecurityConfig.java
index b4ed8277d6..3a8032a734 100644
--- a/spring-security-mvc-boot/src/main/java/org/baeldung/ip/config/SecurityConfig.java
+++ b/spring-security-mvc-boot/src/main/java/org/baeldung/ip/config/SecurityConfig.java
@@ -8,7 +8,7 @@ import org.springframework.security.config.annotation.web.configuration.EnableWe
import org.springframework.security.config.annotation.web.configuration.WebSecurityConfigurerAdapter;
@Configuration
-@EnableWebSecurity
+@EnableWebSecurity//(debug = true)
public class SecurityConfig extends WebSecurityConfigurerAdapter {
@Autowired
diff --git a/spring-security-mvc-boot/src/main/java/org/baeldung/ip/web/MainController.java b/spring-security-mvc-boot/src/main/java/org/baeldung/ip/web/MainController.java
index da5db5e825..940194c421 100644
--- a/spring-security-mvc-boot/src/main/java/org/baeldung/ip/web/MainController.java
+++ b/spring-security-mvc-boot/src/main/java/org/baeldung/ip/web/MainController.java
@@ -1,8 +1,15 @@
package org.baeldung.ip.web;
+import java.util.List;
+
+import javax.servlet.Filter;
import javax.servlet.http.HttpServletRequest;
import org.baeldung.custom.persistence.model.Foo;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.beans.factory.annotation.Qualifier;
+import org.springframework.security.web.FilterChainProxy;
+import org.springframework.security.web.SecurityFilterChain;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.PathVariable;
import org.springframework.web.bind.annotation.RequestMapping;
@@ -12,6 +19,20 @@ import org.springframework.web.bind.annotation.ResponseBody;
@Controller
public class MainController {
+ @Autowired
+ @Qualifier("springSecurityFilterChain")
+ private Filter springSecurityFilterChain;
+
+ @RequestMapping(method = RequestMethod.GET, value = "/filters")
+ @ResponseBody
+ public void getFilters() {
+ FilterChainProxy filterChainProxy = (FilterChainProxy) springSecurityFilterChain;
+ List list = filterChainProxy.getFilterChains();
+ list.stream()
+ .flatMap(chain -> chain.getFilters().stream())
+ .forEach(filter -> System.out.println(filter.getClass()));
+ }
+
@RequestMapping(method = RequestMethod.GET, value = "/foos/{id}")
@ResponseBody
public Foo findById(@PathVariable final long id, HttpServletRequest request) {
diff --git a/spring-security-mvc-boot/src/main/resources/application.properties b/spring-security-mvc-boot/src/main/resources/application.properties
index f015086a4f..25eac743d1 100644
--- a/spring-security-mvc-boot/src/main/resources/application.properties
+++ b/spring-security-mvc-boot/src/main/resources/application.properties
@@ -6,4 +6,7 @@ spring.datasource.password=
spring.jpa.hibernate.ddl-auto=create-drop
spring.jpa.database=H2
spring.jpa.show-sql=false
-spring.jpa.properties.hibernate.dialect=org.hibernate.dialect.H2Dialect
\ No newline at end of file
+spring.jpa.properties.hibernate.dialect=org.hibernate.dialect.H2Dialect
+
+
+#logging.level.org.springframework.security.web.FilterChainProxy=DEBUG
\ No newline at end of file
diff --git a/spring-security-mvc-custom/src/test/java/org/baeldung/SpringContextIntegrationTest.java b/spring-security-mvc-custom/src/test/java/org/baeldung/SpringContextIntegrationTest.java
new file mode 100644
index 0000000000..9e74e83a53
--- /dev/null
+++ b/spring-security-mvc-custom/src/test/java/org/baeldung/SpringContextIntegrationTest.java
@@ -0,0 +1,19 @@
+package org.baeldung;
+
+import org.baeldung.spring.MvcConfig;
+import org.baeldung.spring.SecSecurityConfig;
+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 = { MvcConfig.class, SecSecurityConfig.class })
+@WebAppConfiguration
+public class SpringContextIntegrationTest {
+
+ @Test
+ public void whenSpringContextIsBootstrapped_thenNoExceptions() {
+ }
+}
diff --git a/spring-security-mvc-digest-auth/src/test/java/org/baeldung/SpringContextIntegrationTest.java b/spring-security-mvc-digest-auth/src/test/java/org/baeldung/SpringContextIntegrationTest.java
new file mode 100644
index 0000000000..a4a85a8fa2
--- /dev/null
+++ b/spring-security-mvc-digest-auth/src/test/java/org/baeldung/SpringContextIntegrationTest.java
@@ -0,0 +1,20 @@
+package org.baeldung;
+
+import org.baeldung.spring.ClientConfig;
+import org.baeldung.spring.MvcConfig;
+import org.baeldung.spring.SecSecurityConfig;
+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 = { ClientConfig.class, MvcConfig.class, SecSecurityConfig.class })
+@WebAppConfiguration
+public class SpringContextIntegrationTest {
+
+ @Test
+ public void whenSpringContextIsBootstrapped_thenNoExceptions() {
+ }
+}
diff --git a/spring-security-mvc-ldap/src/test/java/org/baeldung/SpringContextIntegrationTest.java b/spring-security-mvc-ldap/src/test/java/org/baeldung/SpringContextIntegrationTest.java
new file mode 100644
index 0000000000..0b701e9acf
--- /dev/null
+++ b/spring-security-mvc-ldap/src/test/java/org/baeldung/SpringContextIntegrationTest.java
@@ -0,0 +1,15 @@
+package org.baeldung;
+
+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 = SampleLDAPApplication.class)
+public class SpringContextIntegrationTest {
+
+ @Test
+ public void whenSpringContextIsBootstrapped_thenNoExceptions() {
+ }
+}
diff --git a/spring-security-mvc-login/src/test/java/org/baeldung/SpringContextIntegrationTest.java b/spring-security-mvc-login/src/test/java/org/baeldung/SpringContextIntegrationTest.java
new file mode 100644
index 0000000000..1d7f9ae497
--- /dev/null
+++ b/spring-security-mvc-login/src/test/java/org/baeldung/SpringContextIntegrationTest.java
@@ -0,0 +1,16 @@
+package org.baeldung;
+
+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({ "/RedirectionWebSecurityConfig.xml", "/mvc-servlet.xml" })
+@WebAppConfiguration
+public class SpringContextIntegrationTest {
+ @Test
+ public void whenSpringContextIsBootstrapped_thenNoExceptions() {
+ }
+}
diff --git a/spring-security-mvc-persisted-remember-me/pom.xml b/spring-security-mvc-persisted-remember-me/pom.xml
index 2add895ecb..8b15e658e8 100644
--- a/spring-security-mvc-persisted-remember-me/pom.xml
+++ b/spring-security-mvc-persisted-remember-me/pom.xml
@@ -133,6 +133,14 @@
guava
${guava.version}
+
+
+
+ org.springframework.boot
+ spring-boot-starter-test
+ 1.5.10.RELEASE
+ test
+
diff --git a/spring-security-mvc-persisted-remember-me/src/test/java/org/baeldung/SpringContextIntegrationTest.java b/spring-security-mvc-persisted-remember-me/src/test/java/org/baeldung/SpringContextIntegrationTest.java
new file mode 100644
index 0000000000..f1df880862
--- /dev/null
+++ b/spring-security-mvc-persisted-remember-me/src/test/java/org/baeldung/SpringContextIntegrationTest.java
@@ -0,0 +1,20 @@
+package org.baeldung;
+
+import org.baeldung.spring.MvcConfig;
+import org.baeldung.spring.PersistenceConfig;
+import org.baeldung.spring.SecurityConfig;
+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 = { MvcConfig.class, PersistenceConfig.class, SecurityConfig.class })
+@WebAppConfiguration
+public class SpringContextIntegrationTest {
+
+ @Test
+ public void whenSpringContextIsBootstrapped_thenNoExceptions() {
+ }
+}
diff --git a/spring-security-mvc-session/pom.xml b/spring-security-mvc-session/pom.xml
index 7ffbd76aac..85c8475657 100644
--- a/spring-security-mvc-session/pom.xml
+++ b/spring-security-mvc-session/pom.xml
@@ -113,6 +113,14 @@
metrics-core
${codahale.metrics.version}
+
+
+
+ org.springframework.boot
+ spring-boot-starter-test
+ 1.5.10.RELEASE
+ test
+
diff --git a/spring-security-mvc-session/src/test/java/org/baeldung/SpringContextIntegrationTest.java b/spring-security-mvc-session/src/test/java/org/baeldung/SpringContextIntegrationTest.java
new file mode 100644
index 0000000000..9e74e83a53
--- /dev/null
+++ b/spring-security-mvc-session/src/test/java/org/baeldung/SpringContextIntegrationTest.java
@@ -0,0 +1,19 @@
+package org.baeldung;
+
+import org.baeldung.spring.MvcConfig;
+import org.baeldung.spring.SecSecurityConfig;
+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 = { MvcConfig.class, SecSecurityConfig.class })
+@WebAppConfiguration
+public class SpringContextIntegrationTest {
+
+ @Test
+ public void whenSpringContextIsBootstrapped_thenNoExceptions() {
+ }
+}
diff --git a/spring-security-mvc-socket/README.md b/spring-security-mvc-socket/README.md
index 828d9a3448..6c2ad7b985 100644
--- a/spring-security-mvc-socket/README.md
+++ b/spring-security-mvc-socket/README.md
@@ -1,3 +1,10 @@
+To build the project, run the command: mvn clean install. This will build a war file in the target folder that you can deploye on a server like Tomcat.
+
+Alternatively, run the project from an IDE.
+
+To login, use credentials from the data.sql file in src/main/resource, eg: user/password.
+
+
### Relevant Articles:
- [Intro to Security and WebSockets](http://www.baeldung.com/spring-security-websockets)
-- [Spring WebSockets: Specific User Chat](http://www.baeldung.com/spring-websocket-specific-user-chat)
\ No newline at end of file
+- [Spring WebSockets: Build an User Chat](https://www.baeldung.com/spring-websockets-send-message-to-user)
diff --git a/spring-security-mvc-socket/pom.xml b/spring-security-mvc-socket/pom.xml
index b7559753b5..d1b8365077 100644
--- a/spring-security-mvc-socket/pom.xml
+++ b/spring-security-mvc-socket/pom.xml
@@ -148,10 +148,18 @@
jackson-annotations
${jackson.version}
+
+
+
+ org.springframework.boot
+ spring-boot-starter-test
+ 1.5.10.RELEASE
+ test
+
-
+
org.apache.tomcat.maven
@@ -171,7 +179,6 @@
-
spring-security-mvc-socket
diff --git a/spring-security-mvc-socket/src/test/java/org/baeldung/SpringContextIntegrationTest.java b/spring-security-mvc-socket/src/test/java/org/baeldung/SpringContextIntegrationTest.java
new file mode 100644
index 0000000000..00202a98cb
--- /dev/null
+++ b/spring-security-mvc-socket/src/test/java/org/baeldung/SpringContextIntegrationTest.java
@@ -0,0 +1,24 @@
+package org.baeldung;
+
+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;
+
+import com.baeldung.springsecuredsockets.config.AppConfig;
+import com.baeldung.springsecuredsockets.config.DataStoreConfig;
+import com.baeldung.springsecuredsockets.config.SecurityConfig;
+import com.baeldung.springsecuredsockets.config.SocketBrokerConfig;
+import com.baeldung.springsecuredsockets.config.SocketSecurityConfig;
+
+@RunWith(SpringJUnit4ClassRunner.class)
+@ContextConfiguration(classes = { AppConfig.class, DataStoreConfig.class, SecurityConfig.class,
+ SocketBrokerConfig.class, SocketSecurityConfig.class })
+@WebAppConfiguration
+public class SpringContextIntegrationTest {
+
+ @Test
+ public void whenSpringContextIsBootstrapped_thenNoExceptions() {
+ }
+}
diff --git a/spring-security-openid/pom.xml b/spring-security-openid/pom.xml
index a2c0b6b119..4343996e02 100644
--- a/spring-security-openid/pom.xml
+++ b/spring-security-openid/pom.xml
@@ -3,9 +3,7 @@
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
4.0.0
- com.baeldung
spring-security-openid
- 0.0.1-SNAPSHOT
war
spring-security-openid
Spring OpenID sample project
diff --git a/spring-security-openid/src/test/java/org/baeldung/SpringContextIntegrationTest.java b/spring-security-openid/src/test/java/org/baeldung/SpringContextIntegrationTest.java
new file mode 100644
index 0000000000..79a725dcae
--- /dev/null
+++ b/spring-security-openid/src/test/java/org/baeldung/SpringContextIntegrationTest.java
@@ -0,0 +1,16 @@
+package org.baeldung;
+
+import org.baeldung.config.SpringOpenidApplication;
+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 = SpringOpenidApplication.class)
+public class SpringContextIntegrationTest {
+
+ @Test
+ public void whenSpringContextIsBootstrapped_thenNoExceptions() {
+ }
+}
diff --git a/spring-security-react/pom.xml b/spring-security-react/pom.xml
index 11ad679128..32817945be 100644
--- a/spring-security-react/pom.xml
+++ b/spring-security-react/pom.xml
@@ -82,6 +82,14 @@
${jstl.version}
runtime
+
+
+
+ org.springframework.boot
+ spring-boot-starter-test
+ 1.5.10.RELEASE
+ test
+
diff --git a/spring-security-react/src/test/java/org/baeldung/SpringContextIntegrationTest.java b/spring-security-react/src/test/java/org/baeldung/SpringContextIntegrationTest.java
new file mode 100644
index 0000000000..a921976fc3
--- /dev/null
+++ b/spring-security-react/src/test/java/org/baeldung/SpringContextIntegrationTest.java
@@ -0,0 +1,17 @@
+package org.baeldung;
+
+import org.baeldung.spring.MvcConfig;
+import org.baeldung.spring.SecSecurityConfig;
+import org.junit.Test;
+import org.junit.runner.RunWith;
+import org.springframework.test.context.ContextConfiguration;
+import org.springframework.test.context.junit4.SpringJUnit4ClassRunner;
+
+@RunWith(SpringJUnit4ClassRunner.class)
+@ContextConfiguration(classes = { MvcConfig.class, SecSecurityConfig.class })
+public class SpringContextIntegrationTest {
+
+ @Test
+ public void whenSpringContextIsBootstrapped_thenNoExceptions() {
+ }
+}
diff --git a/spring-security-rest-basic-auth/src/test/java/org/baeldung/SpringContextIntegrationTest.java b/spring-security-rest-basic-auth/src/test/java/org/baeldung/SpringContextIntegrationTest.java
new file mode 100644
index 0000000000..6cf624c179
--- /dev/null
+++ b/spring-security-rest-basic-auth/src/test/java/org/baeldung/SpringContextIntegrationTest.java
@@ -0,0 +1,15 @@
+package org.baeldung;
+
+import org.junit.Test;
+import org.junit.runner.RunWith;
+import org.springframework.test.context.ContextConfiguration;
+import org.springframework.test.context.junit4.SpringJUnit4ClassRunner;
+
+@RunWith(SpringJUnit4ClassRunner.class)
+@ContextConfiguration({ "/WebSecurityConfig.xml" })
+public class SpringContextIntegrationTest {
+
+ @Test
+ public void whenSpringContextIsBootstrapped_thenNoExceptions() {
+ }
+}
diff --git a/spring-security-rest/pom.xml b/spring-security-rest/pom.xml
index 5bde78db7e..57ce5ddb92 100644
--- a/spring-security-rest/pom.xml
+++ b/spring-security-rest/pom.xml
@@ -300,7 +300,7 @@
2.9.0
- 2.7.0
+ 2.9.2
2.6
diff --git a/spring-security-rest/src/test/java/org/baeldung/SpringContextIntegrationTest.java b/spring-security-rest/src/test/java/org/baeldung/SpringContextIntegrationTest.java
new file mode 100644
index 0000000000..e2e9f2af2b
--- /dev/null
+++ b/spring-security-rest/src/test/java/org/baeldung/SpringContextIntegrationTest.java
@@ -0,0 +1,20 @@
+package org.baeldung;
+
+import org.baeldung.spring.ClientWebConfig;
+import org.baeldung.spring.SecurityJavaConfig;
+import org.baeldung.spring.WebConfig;
+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)
+@WebAppConfiguration
+@ContextConfiguration(classes = { ClientWebConfig.class, SecurityJavaConfig.class, WebConfig.class })
+public class SpringContextIntegrationTest {
+
+ @Test
+ public void whenSpringContextIsBootstrapped_thenNoExceptions() {
+ }
+}
diff --git a/spring-security-sso/spring-security-sso-auth-server/src/test/java/org/baeldung/test/AuthServerIntegrationTest.java b/spring-security-sso/spring-security-sso-auth-server/src/test/java/org/baeldung/SpringContextIntegrationTest.java
similarity index 88%
rename from spring-security-sso/spring-security-sso-auth-server/src/test/java/org/baeldung/test/AuthServerIntegrationTest.java
rename to spring-security-sso/spring-security-sso-auth-server/src/test/java/org/baeldung/SpringContextIntegrationTest.java
index 9e2d6feca1..66ee232b10 100644
--- a/spring-security-sso/spring-security-sso-auth-server/src/test/java/org/baeldung/test/AuthServerIntegrationTest.java
+++ b/spring-security-sso/spring-security-sso-auth-server/src/test/java/org/baeldung/SpringContextIntegrationTest.java
@@ -1,4 +1,4 @@
-package org.baeldung.test;
+package org.baeldung;
import org.baeldung.config.AuthorizationServerApplication;
import org.junit.Test;
@@ -9,7 +9,7 @@ import org.springframework.test.context.junit4.SpringRunner;
@RunWith(SpringRunner.class)
@SpringBootTest(classes = AuthorizationServerApplication.class, webEnvironment = WebEnvironment.RANDOM_PORT)
-public class AuthServerIntegrationTest {
+public class SpringContextIntegrationTest {
@Test
public void whenLoadApplication_thenSuccess() {
diff --git a/spring-security-sso/spring-security-sso-ui/src/test/java/org/baeldung/test/UiIntegrationTest.java b/spring-security-sso/spring-security-sso-ui-2/src/test/java/org/baeldung/SpringContextIntegrationTest.java
similarity index 88%
rename from spring-security-sso/spring-security-sso-ui/src/test/java/org/baeldung/test/UiIntegrationTest.java
rename to spring-security-sso/spring-security-sso-ui-2/src/test/java/org/baeldung/SpringContextIntegrationTest.java
index 6386eac0b8..2fb0210929 100644
--- a/spring-security-sso/spring-security-sso-ui/src/test/java/org/baeldung/test/UiIntegrationTest.java
+++ b/spring-security-sso/spring-security-sso-ui-2/src/test/java/org/baeldung/SpringContextIntegrationTest.java
@@ -1,4 +1,4 @@
-package org.baeldung.test;
+package org.baeldung;
import org.baeldung.config.UiApplication;
import org.junit.Test;
@@ -9,7 +9,7 @@ import org.springframework.test.context.junit4.SpringRunner;
@RunWith(SpringRunner.class)
@SpringBootTest(classes = UiApplication.class, webEnvironment = WebEnvironment.RANDOM_PORT)
-public class UiIntegrationTest {
+public class SpringContextIntegrationTest {
@Test
public void whenLoadApplication_thenSuccess() {
diff --git a/spring-security-sso/spring-security-sso-ui-2/src/test/java/org/baeldung/test/UiIntegrationTest.java b/spring-security-sso/spring-security-sso-ui/src/test/java/org/baeldung/SpringContextIntegrationTest.java
similarity index 88%
rename from spring-security-sso/spring-security-sso-ui-2/src/test/java/org/baeldung/test/UiIntegrationTest.java
rename to spring-security-sso/spring-security-sso-ui/src/test/java/org/baeldung/SpringContextIntegrationTest.java
index 6386eac0b8..2fb0210929 100644
--- a/spring-security-sso/spring-security-sso-ui-2/src/test/java/org/baeldung/test/UiIntegrationTest.java
+++ b/spring-security-sso/spring-security-sso-ui/src/test/java/org/baeldung/SpringContextIntegrationTest.java
@@ -1,4 +1,4 @@
-package org.baeldung.test;
+package org.baeldung;
import org.baeldung.config.UiApplication;
import org.junit.Test;
@@ -9,7 +9,7 @@ import org.springframework.test.context.junit4.SpringRunner;
@RunWith(SpringRunner.class)
@SpringBootTest(classes = UiApplication.class, webEnvironment = WebEnvironment.RANDOM_PORT)
-public class UiIntegrationTest {
+public class SpringContextIntegrationTest {
@Test
public void whenLoadApplication_thenSuccess() {
diff --git a/spring-security-x509/spring-security-x509-basic-auth/src/test/java/org/baeldung/SpringContextIntegrationTest.java b/spring-security-x509/spring-security-x509-basic-auth/src/test/java/org/baeldung/SpringContextIntegrationTest.java
new file mode 100644
index 0000000000..7ec6125f84
--- /dev/null
+++ b/spring-security-x509/spring-security-x509-basic-auth/src/test/java/org/baeldung/SpringContextIntegrationTest.java
@@ -0,0 +1,17 @@
+package org.baeldung;
+
+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.security.x509.X509AuthenticationServer;
+
+@RunWith(SpringRunner.class)
+@SpringBootTest(classes = X509AuthenticationServer.class)
+public class SpringContextIntegrationTest {
+
+ @Test
+ public void whenSpringContextIsBootstrapped_thenNoExceptions() {
+ }
+}
diff --git a/spring-security-x509/spring-security-x509-client-auth/src/test/java/org/baeldung/SpringContextIntegrationTest.java b/spring-security-x509/spring-security-x509-client-auth/src/test/java/org/baeldung/SpringContextIntegrationTest.java
new file mode 100644
index 0000000000..7ec6125f84
--- /dev/null
+++ b/spring-security-x509/spring-security-x509-client-auth/src/test/java/org/baeldung/SpringContextIntegrationTest.java
@@ -0,0 +1,17 @@
+package org.baeldung;
+
+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.security.x509.X509AuthenticationServer;
+
+@RunWith(SpringRunner.class)
+@SpringBootTest(classes = X509AuthenticationServer.class)
+public class SpringContextIntegrationTest {
+
+ @Test
+ public void whenSpringContextIsBootstrapped_thenNoExceptions() {
+ }
+}
diff --git a/spring-session/spring-session-jdbc/src/test/java/org/baeldung/SpringContextIntegrationTest.java b/spring-session/spring-session-jdbc/src/test/java/org/baeldung/SpringContextIntegrationTest.java
new file mode 100644
index 0000000000..b921f76a0d
--- /dev/null
+++ b/spring-session/spring-session-jdbc/src/test/java/org/baeldung/SpringContextIntegrationTest.java
@@ -0,0 +1,17 @@
+package org.baeldung;
+
+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.springsessionjdbc.SpringSessionJdbcApplication;
+
+@RunWith(SpringRunner.class)
+@SpringBootTest(classes = SpringSessionJdbcApplication.class)
+public class SpringContextIntegrationTest {
+
+ @Test
+ public void whenSpringContextIsBootstrapped_thenNoExceptions() {
+ }
+}
diff --git a/spring-session/spring-session-redis/src/test/java/org/baeldung/SpringContextIntegrationTest.java b/spring-session/spring-session-redis/src/test/java/org/baeldung/SpringContextIntegrationTest.java
new file mode 100644
index 0000000000..a62e728826
--- /dev/null
+++ b/spring-session/spring-session-redis/src/test/java/org/baeldung/SpringContextIntegrationTest.java
@@ -0,0 +1,17 @@
+package org.baeldung;
+
+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.session.SessionWebApplication;
+
+@RunWith(SpringRunner.class)
+@SpringBootTest(classes = SessionWebApplication.class)
+public class SpringContextIntegrationTest {
+
+ @Test
+ public void whenSpringContextIsBootstrapped_thenNoExceptions() {
+ }
+}
diff --git a/spring-sleuth/src/test/java/org/baeldung/SpringContextIntegrationTest.java b/spring-sleuth/src/test/java/org/baeldung/SpringContextIntegrationTest.java
new file mode 100644
index 0000000000..ef722ecba0
--- /dev/null
+++ b/spring-sleuth/src/test/java/org/baeldung/SpringContextIntegrationTest.java
@@ -0,0 +1,17 @@
+package org.baeldung;
+
+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.session.SleuthWebApp;
+
+@RunWith(SpringRunner.class)
+@SpringBootTest(classes = SleuthWebApp.class)
+public class SpringContextIntegrationTest {
+
+ @Test
+ public void whenSpringContextIsBootstrapped_thenNoExceptions() {
+ }
+}
diff --git a/spring-social-login/src/test/java/org/baeldung/test/ApplicationIntegrationTest.java b/spring-social-login/src/test/java/org/baeldung/SpringContextIntegrationTest.java
similarity index 87%
rename from spring-social-login/src/test/java/org/baeldung/test/ApplicationIntegrationTest.java
rename to spring-social-login/src/test/java/org/baeldung/SpringContextIntegrationTest.java
index 43aaea18b1..29ed401118 100644
--- a/spring-social-login/src/test/java/org/baeldung/test/ApplicationIntegrationTest.java
+++ b/spring-social-login/src/test/java/org/baeldung/SpringContextIntegrationTest.java
@@ -1,4 +1,4 @@
-package org.baeldung.test;
+package org.baeldung;
import org.baeldung.config.Application;
import org.junit.Test;
@@ -9,7 +9,7 @@ import org.springframework.test.context.junit4.SpringRunner;
@RunWith(SpringRunner.class)
@SpringBootTest(classes = Application.class, webEnvironment = WebEnvironment.RANDOM_PORT)
-public class ApplicationIntegrationTest {
+public class SpringContextIntegrationTest {
@Test
public void whenLoadApplication_thenSuccess() {
diff --git a/spring-spel/src/test/java/org/baeldung/SpringContextIntegrationTest.java b/spring-spel/src/test/java/org/baeldung/SpringContextIntegrationTest.java
new file mode 100644
index 0000000000..f394374a94
--- /dev/null
+++ b/spring-spel/src/test/java/org/baeldung/SpringContextIntegrationTest.java
@@ -0,0 +1,15 @@
+package org.baeldung;
+
+import org.junit.Test;
+import org.junit.runner.RunWith;
+import org.springframework.test.context.ContextConfiguration;
+import org.springframework.test.context.junit4.SpringJUnit4ClassRunner;
+
+@RunWith(SpringJUnit4ClassRunner.class)
+@ContextConfiguration(locations = {"classpath:applicationContext.xml"})
+public class SpringContextIntegrationTest {
+
+ @Test
+ public void whenSpringContextIsBootstrapped_thenNoExceptions() {
+ }
+}
diff --git a/spring-state-machine/src/test/java/org/baeldung/SpringContextIntegrationTest.java b/spring-state-machine/src/test/java/org/baeldung/SpringContextIntegrationTest.java
new file mode 100644
index 0000000000..72292a5089
--- /dev/null
+++ b/spring-state-machine/src/test/java/org/baeldung/SpringContextIntegrationTest.java
@@ -0,0 +1,23 @@
+package org.baeldung;
+
+import org.junit.Test;
+import org.junit.runner.RunWith;
+import org.springframework.test.context.ContextConfiguration;
+import org.springframework.test.context.junit4.SpringJUnit4ClassRunner;
+
+import com.baeldung.spring.statemachine.config.ForkJoinStateMachineConfiguration;
+import com.baeldung.spring.statemachine.config.HierarchicalStateMachineConfiguration;
+import com.baeldung.spring.statemachine.config.JunctionStateMachineConfiguration;
+import com.baeldung.spring.statemachine.config.SimpleEnumStateMachineConfiguration;
+import com.baeldung.spring.statemachine.config.SimpleStateMachineConfiguration;
+
+@RunWith(SpringJUnit4ClassRunner.class)
+@ContextConfiguration(classes = { SimpleStateMachineConfiguration.class, SimpleEnumStateMachineConfiguration.class,
+ JunctionStateMachineConfiguration.class, HierarchicalStateMachineConfiguration.class,
+ ForkJoinStateMachineConfiguration.class })
+public class SpringContextIntegrationTest {
+
+ @Test
+ public void whenSpringContextIsBootstrapped_thenNoExceptions() {
+ }
+}
diff --git a/spring-swagger-codegen/pom.xml b/spring-swagger-codegen/pom.xml
index d14dcc3176..8e551d850f 100644
--- a/spring-swagger-codegen/pom.xml
+++ b/spring-swagger-codegen/pom.xml
@@ -1,7 +1,6 @@
4.0.0
- com.baeldung
spring-swagger-codegen
0.0.1-SNAPSHOT
pom
diff --git a/spring-swagger-codegen/spring-swagger-codegen-api-client/pom.xml b/spring-swagger-codegen/spring-swagger-codegen-api-client/pom.xml
index 0f1cfa27ac..06a92ffae7 100644
--- a/spring-swagger-codegen/spring-swagger-codegen-api-client/pom.xml
+++ b/spring-swagger-codegen/spring-swagger-codegen-api-client/pom.xml
@@ -38,23 +38,6 @@
-
- org.apache.maven.plugins
- maven-surefire-plugin
- ${maven-surefire-plugin.version}
-
-
-
- loggerPath
- conf/log4j.properties
-
-
- -Xms512m -Xmx1500m
- methods
- pertest
-
-
-
org.apache.maven.plugins
diff --git a/spring-swagger-codegen/spring-swagger-codegen-app/pom.xml b/spring-swagger-codegen/spring-swagger-codegen-app/pom.xml
index 281ed59857..4aff696828 100644
--- a/spring-swagger-codegen/spring-swagger-codegen-app/pom.xml
+++ b/spring-swagger-codegen/spring-swagger-codegen-app/pom.xml
@@ -1,11 +1,8 @@
4.0.0
-
- com.baeldung
spring-swagger-codegen-app
- 0.0.1-SNAPSHOT
-
+
com.baeldung
spring-swagger-codegen
@@ -24,6 +21,12 @@
spring-boot-starter-web
${spring.version}
+
+ org.springframework.boot
+ spring-boot-starter-test
+ ${spring.version}
+ test
+
@@ -37,7 +40,6 @@
- 1.8
0.0.1-SNAPSHOT
1.5.10.RELEASE
diff --git a/spring-swagger-codegen/spring-swagger-codegen-app/src/test/java/org/baeldung/SpringContextIntegrationTest.java b/spring-swagger-codegen/spring-swagger-codegen-app/src/test/java/org/baeldung/SpringContextIntegrationTest.java
new file mode 100644
index 0000000000..2143dc7f4d
--- /dev/null
+++ b/spring-swagger-codegen/spring-swagger-codegen-app/src/test/java/org/baeldung/SpringContextIntegrationTest.java
@@ -0,0 +1,17 @@
+package org.baeldung;
+
+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.petstore.app.PetStoreApplication;
+
+@RunWith(SpringRunner.class)
+@SpringBootTest(classes = PetStoreApplication.class)
+public class SpringContextIntegrationTest {
+
+ @Test
+ public void whenSpringContextIsBootstrapped_thenNoExceptions() {
+ }
+}
diff --git a/spring-thymeleaf/src/test/java/org/baeldung/SpringContextIntegrationTest.java b/spring-thymeleaf/src/test/java/org/baeldung/SpringContextIntegrationTest.java
new file mode 100644
index 0000000000..c7a0b4fc60
--- /dev/null
+++ b/spring-thymeleaf/src/test/java/org/baeldung/SpringContextIntegrationTest.java
@@ -0,0 +1,22 @@
+package org.baeldung;
+
+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;
+
+import com.baeldung.thymeleaf.config.InitSecurity;
+import com.baeldung.thymeleaf.config.WebApp;
+import com.baeldung.thymeleaf.config.WebMVCConfig;
+import com.baeldung.thymeleaf.config.WebMVCSecurity;
+
+@RunWith(SpringJUnit4ClassRunner.class)
+@WebAppConfiguration
+@ContextConfiguration(classes = { WebApp.class, WebMVCConfig.class, WebMVCSecurity.class, InitSecurity.class })
+public class SpringContextIntegrationTest {
+
+ @Test
+ public void whenSpringContextIsBootstrapped_thenNoExceptions() {
+ }
+}
diff --git a/spring-userservice/src/test/java/org/baeldung/SpringContextIntegrationTest.java b/spring-userservice/src/test/java/org/baeldung/SpringContextIntegrationTest.java
new file mode 100644
index 0000000000..825b89eb10
--- /dev/null
+++ b/spring-userservice/src/test/java/org/baeldung/SpringContextIntegrationTest.java
@@ -0,0 +1,18 @@
+package org.baeldung;
+
+import org.baeldung.custom.config.MvcConfig;
+import org.baeldung.custom.config.PersistenceDerbyJPAConfig;
+import org.baeldung.custom.config.SecSecurityConfig;
+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 = { MvcConfig.class, PersistenceDerbyJPAConfig.class, SecSecurityConfig.class })
+public class SpringContextIntegrationTest {
+
+ @Test
+ public void whenSpringContextIsBootstrapped_thenNoExceptions() {
+ }
+}
diff --git a/spring-vault/README.md b/spring-vault/README.md
new file mode 100644
index 0000000000..8db065a3dd
--- /dev/null
+++ b/spring-vault/README.md
@@ -0,0 +1,2 @@
+### Relevant Articles:
+- [Spring Vault](https://www.baeldung.com/spring-vault)
diff --git a/spring-vault/src/test/java/org/baeldung/SpringContextIntegrationTest.java b/spring-vault/src/test/java/org/baeldung/SpringContextIntegrationTest.java
new file mode 100644
index 0000000000..a2d727ea79
--- /dev/null
+++ b/spring-vault/src/test/java/org/baeldung/SpringContextIntegrationTest.java
@@ -0,0 +1,16 @@
+package org.baeldung;
+
+import org.baeldung.springvault.SpringVaultApplication;
+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 = SpringVaultApplication.class)
+public class SpringContextIntegrationTest {
+
+ @Test
+ public void whenSpringContextIsBootstrapped_thenNoExceptions() {
+ }
+}
diff --git a/spring-vertx/pom.xml b/spring-vertx/pom.xml
index 69a043ed01..790eeff128 100644
--- a/spring-vertx/pom.xml
+++ b/spring-vertx/pom.xml
@@ -3,9 +3,7 @@
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
4.0.0
- com.baeldung
spring-vertx
- 0.0.1-SNAPSHOT
jar
Spring Vertx
A demo project with vertx spring integration
@@ -57,31 +55,10 @@
org.springframework.boot
spring-boot-maven-plugin
-
- org.apache.maven.plugins
- maven-surefire-plugin
- ${maven-surefire-plugin.version}
-
- 3
- true
-
- **/*IntegrationTest.java
- **/*IntTest.java
- **/*LongRunningUnitTest.java
- **/*ManualTest.java
- **/JdbcTest.java
- **/*LiveTest.java
-
-
-
-
- UTF-8
- UTF-8
- 1.8
3.4.1
diff --git a/spring-vertx/src/test/java/org/baeldung/SpringContextIntegrationTest.java b/spring-vertx/src/test/java/org/baeldung/SpringContextIntegrationTest.java
new file mode 100644
index 0000000000..b1f7b39f7e
--- /dev/null
+++ b/spring-vertx/src/test/java/org/baeldung/SpringContextIntegrationTest.java
@@ -0,0 +1,17 @@
+package org.baeldung;
+
+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.vertxspring.VertxSpringApplication;
+
+@RunWith(SpringRunner.class)
+@SpringBootTest(classes = VertxSpringApplication.class)
+public class SpringContextIntegrationTest {
+
+ @Test
+ public void whenSpringContextIsBootstrapped_thenNoExceptions() {
+ }
+}
diff --git a/spring-webflux-amqp/src/test/java/org/baeldung/SpringContextIntegrationTest.java b/spring-webflux-amqp/src/test/java/org/baeldung/SpringContextIntegrationTest.java
new file mode 100644
index 0000000000..35efff49c2
--- /dev/null
+++ b/spring-webflux-amqp/src/test/java/org/baeldung/SpringContextIntegrationTest.java
@@ -0,0 +1,16 @@
+package org.baeldung;
+
+import org.baeldung.spring.amqp.SpringWebfluxAmqpApplication;
+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 = SpringWebfluxAmqpApplication.class)
+public class SpringContextIntegrationTest {
+
+ @Test
+ public void whenSpringContextIsBootstrapped_thenNoExceptions() {
+ }
+}
diff --git a/spring-zuul/spring-zuul-foos-resource/src/test/java/org/baeldung/SpringContextIntegrationTest.java b/spring-zuul/spring-zuul-foos-resource/src/test/java/org/baeldung/SpringContextIntegrationTest.java
new file mode 100644
index 0000000000..623966373b
--- /dev/null
+++ b/spring-zuul/spring-zuul-foos-resource/src/test/java/org/baeldung/SpringContextIntegrationTest.java
@@ -0,0 +1,16 @@
+package org.baeldung;
+
+import org.baeldung.config.ResourceServerApplication;
+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 = ResourceServerApplication.class)
+public class SpringContextIntegrationTest {
+
+ @Test
+ public void whenSpringContextIsBootstrapped_thenNoExceptions() {
+ }
+}
diff --git a/spring-zuul/spring-zuul-ui/src/test/java/org/baeldung/SpringContextIntegrationTest.java b/spring-zuul/spring-zuul-ui/src/test/java/org/baeldung/SpringContextIntegrationTest.java
new file mode 100644
index 0000000000..a3d49627e5
--- /dev/null
+++ b/spring-zuul/spring-zuul-ui/src/test/java/org/baeldung/SpringContextIntegrationTest.java
@@ -0,0 +1,16 @@
+package org.baeldung;
+
+import org.baeldung.config.UiApplication;
+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 = UiApplication.class)
+public class SpringContextIntegrationTest {
+
+ @Test
+ public void whenSpringContextIsBootstrapped_thenNoExceptions() {
+ }
+}
diff --git a/static-analysis/src/test/java/com/baeldung/pmd/CntTest.java b/static-analysis/src/test/java/com/baeldung/pmd/CntUnitTest.java
similarity index 92%
rename from static-analysis/src/test/java/com/baeldung/pmd/CntTest.java
rename to static-analysis/src/test/java/com/baeldung/pmd/CntUnitTest.java
index ed72602f99..cdbf9f6f5e 100644
--- a/static-analysis/src/test/java/com/baeldung/pmd/CntTest.java
+++ b/static-analysis/src/test/java/com/baeldung/pmd/CntUnitTest.java
@@ -4,7 +4,7 @@ import static org.junit.Assert.assertEquals;
import org.junit.Test;
-public class CntTest {
+public class CntUnitTest {
private Cnt service;
diff --git a/testing-modules/junit-5/README.md b/testing-modules/junit-5/README.md
index 40c4e8cde9..836848282b 100644
--- a/testing-modules/junit-5/README.md
+++ b/testing-modules/junit-5/README.md
@@ -1,7 +1,6 @@
### Relevant Articles:
- [The Basics of JUnit 5 – A Preview](http://www.baeldung.com/junit-5-preview)
- [A Guide to JUnit 5](http://www.baeldung.com/junit-5)
-- [Guide to Dynamic Tests in Junit 5](http://www.baeldung.com/junit5-dynamic-tests)
- [A Guide to @RepeatedTest in Junit 5](http://www.baeldung.com/junit-5-repeated-test)
- [Guide to Dynamic Tests in Junit 5](http://www.baeldung.com/junit5-dynamic-tests)
- [A Guied to JUnit 5 Extensions](http://www.baeldung.com/junit-5-extensions)
diff --git a/testing-modules/spring-context-testing/pom.xml b/testing-modules/spring-context-testing/pom.xml
deleted file mode 100644
index 148192d6c5..0000000000
--- a/testing-modules/spring-context-testing/pom.xml
+++ /dev/null
@@ -1,25 +0,0 @@
-
- 4.0.0
- com.baeldung
- spring-context-testing
- 0.0.1-SNAPSHOT
-
-
-
- org.springframework.boot
- spring-boot-starter
- ${spring.boot.starter.version}
-
-
- org.springframework.boot
- spring-boot-starter-test
- test
- ${spring.boot.starter.version}
-
-
-
-
- 2.0.4.RELEASE
-
-
diff --git a/testing-modules/spring-context-testing/src/main/java/com/baeldung/testpropertysource/ClassUsingProperty.java b/testing-modules/spring-testing/src/main/java/com/baeldung/testpropertysource/ClassUsingProperty.java
similarity index 100%
rename from testing-modules/spring-context-testing/src/main/java/com/baeldung/testpropertysource/ClassUsingProperty.java
rename to testing-modules/spring-testing/src/main/java/com/baeldung/testpropertysource/ClassUsingProperty.java
diff --git a/testing-modules/spring-context-testing/src/test/java/com/baeldung/testpropertysource/DefaultTestPropertySourceIntegrationTest.java b/testing-modules/spring-testing/src/test/java/com/baeldung/testpropertysource/DefaultTestPropertySourceIntegrationTest.java
similarity index 100%
rename from testing-modules/spring-context-testing/src/test/java/com/baeldung/testpropertysource/DefaultTestPropertySourceIntegrationTest.java
rename to testing-modules/spring-testing/src/test/java/com/baeldung/testpropertysource/DefaultTestPropertySourceIntegrationTest.java
diff --git a/testing-modules/spring-context-testing/src/test/java/com/baeldung/testpropertysource/LocationTestPropertySourceIntegrationTest.java b/testing-modules/spring-testing/src/test/java/com/baeldung/testpropertysource/LocationTestPropertySourceIntegrationTest.java
similarity index 100%
rename from testing-modules/spring-context-testing/src/test/java/com/baeldung/testpropertysource/LocationTestPropertySourceIntegrationTest.java
rename to testing-modules/spring-testing/src/test/java/com/baeldung/testpropertysource/LocationTestPropertySourceIntegrationTest.java
diff --git a/testing-modules/spring-context-testing/src/test/java/com/baeldung/testpropertysource/PropertiesTestPropertySourceIntegrationTest.java b/testing-modules/spring-testing/src/test/java/com/baeldung/testpropertysource/PropertiesTestPropertySourceIntegrationTest.java
similarity index 100%
rename from testing-modules/spring-context-testing/src/test/java/com/baeldung/testpropertysource/PropertiesTestPropertySourceIntegrationTest.java
rename to testing-modules/spring-testing/src/test/java/com/baeldung/testpropertysource/PropertiesTestPropertySourceIntegrationTest.java
diff --git a/testing-modules/spring-context-testing/src/test/resources/com/baeldung/testpropertysource/DefaultTestPropertySourceIntegrationTest.properties b/testing-modules/spring-testing/src/test/resources/com/baeldung/testpropertysource/DefaultTestPropertySourceIntegrationTest.properties
similarity index 100%
rename from testing-modules/spring-context-testing/src/test/resources/com/baeldung/testpropertysource/DefaultTestPropertySourceIntegrationTest.properties
rename to testing-modules/spring-testing/src/test/resources/com/baeldung/testpropertysource/DefaultTestPropertySourceIntegrationTest.properties
diff --git a/testing-modules/spring-context-testing/src/test/resources/other-location.properties b/testing-modules/spring-testing/src/test/resources/other-location.properties
similarity index 100%
rename from testing-modules/spring-context-testing/src/test/resources/other-location.properties
rename to testing-modules/spring-testing/src/test/resources/other-location.properties
diff --git a/twilio/pom.xml b/twilio/pom.xml
index 8683192b5c..610cc04b60 100644
--- a/twilio/pom.xml
+++ b/twilio/pom.xml
@@ -2,11 +2,15 @@
4.0.0
-
- com.baeldung
twilio
1.0-SNAPSHOT
+
+ parent-modules
+ com.baeldung
+ 1.0.0-SNAPSHOT
+
+
com.twilio.sdk
@@ -15,9 +19,4 @@
-
- 1.8
- 1.8
-
-
diff --git a/vaadin-spring/README.md b/vaadin-spring/README.md
deleted file mode 100644
index 347c92d7b5..0000000000
--- a/vaadin-spring/README.md
+++ /dev/null
@@ -1,3 +0,0 @@
-### Relevant articles
-
-- [Sample Application with Spring Boot and Vaadin](https://www.baeldung.com/spring-boot-vaadin)