From 1889628daa76b4f8b846a2596bab47229a101f51 Mon Sep 17 00:00:00 2001 From: Krzysztof Majewski Date: Tue, 3 Sep 2019 16:27:36 +0200 Subject: [PATCH 01/29] BAEL-2966 --- .../interpolation/NotNullRequest.java | 17 ++++++++++ .../interpolation/RestController.java | 15 +++++++++ .../interpolation/ValidationExamples.java | 31 +++++++++++++++++++ 3 files changed, 63 insertions(+) create mode 100644 spring-core-2/src/main/java/com/baeldung/interpolation/NotNullRequest.java create mode 100644 spring-core-2/src/main/java/com/baeldung/interpolation/RestController.java create mode 100644 spring-core-2/src/main/java/com/baeldung/interpolation/ValidationExamples.java diff --git a/spring-core-2/src/main/java/com/baeldung/interpolation/NotNullRequest.java b/spring-core-2/src/main/java/com/baeldung/interpolation/NotNullRequest.java new file mode 100644 index 0000000000..9a2b00be8f --- /dev/null +++ b/spring-core-2/src/main/java/com/baeldung/interpolation/NotNullRequest.java @@ -0,0 +1,17 @@ +package com.baeldung.interpolation; + +import javax.validation.constraints.NotNull; + +public class NotNullRequest { + + @NotNull(message = "stringValue has to be present") + private String stringValue; + + public String getStringValue() { + return stringValue; + } + + public void setStringValue(String stringValue) { + this.stringValue = stringValue; + } +} diff --git a/spring-core-2/src/main/java/com/baeldung/interpolation/RestController.java b/spring-core-2/src/main/java/com/baeldung/interpolation/RestController.java new file mode 100644 index 0000000000..87b16320fe --- /dev/null +++ b/spring-core-2/src/main/java/com/baeldung/interpolation/RestController.java @@ -0,0 +1,15 @@ +package com.baeldung.interpolation; + +import javax.validation.Valid; +import org.springframework.web.bind.annotation.PostMapping; +import org.springframework.web.bind.annotation.RequestBody; +import org.springframework.web.bind.annotation.RestController; + +@RestController +public class RestController { + + @PostMapping("/test-not-null") + public void testNotNull(@Valid @RequestBody NotNullRequest request) { + + } +} diff --git a/spring-core-2/src/main/java/com/baeldung/interpolation/ValidationExamples.java b/spring-core-2/src/main/java/com/baeldung/interpolation/ValidationExamples.java new file mode 100644 index 0000000000..d353e4f7f2 --- /dev/null +++ b/spring-core-2/src/main/java/com/baeldung/interpolation/ValidationExamples.java @@ -0,0 +1,31 @@ +package com.baeldung.interpolation; + +import java.util.Formatter; +import javax.validation.constraints.Size; +import javax.validation.constraints.Min; +import javax.validation.constraints.DecimalMin; + +public class ValidationExamples { + + private static final Formatter formatter = new Formatter(); + + @Size( + min = 5, + max = 14, + message = "The author email '${validatedValue}' must be between {min} and {max} characters long" + ) + private String authorEmail; + + @Min( + value = 1, + message = "There must be at least {value} test{value > 1 ? 's' : ''} int the test case" + ) + private int testCount; + + @DecimalMin( + value = "50", + message = "The code coverage ${formatter.format('%1$.2f', validatedValue)} must be higher than {value}%" + ) + private double codeCoverage; + +} From 40ec4b95982661c03d93a9dec24c14e5cc46c61d Mon Sep 17 00:00:00 2001 From: Krzysztof Majewski Date: Tue, 3 Sep 2019 16:32:13 +0200 Subject: [PATCH 02/29] add validation to pom --- spring-core-2/pom.xml | 8 +++++++- 1 file changed, 7 insertions(+), 1 deletion(-) diff --git a/spring-core-2/pom.xml b/spring-core-2/pom.xml index d68beda64a..6c2635c88b 100644 --- a/spring-core-2/pom.xml +++ b/spring-core-2/pom.xml @@ -41,6 +41,11 @@ ${junit-jupiter.version} test + + javax.validation + validation-api + ${validation-api.version} + @@ -55,6 +60,7 @@ 2.22.1 + 2.0.1.Final - \ No newline at end of file + From 017992bf74006e111b0a4152035a5ed2f586f9be Mon Sep 17 00:00:00 2001 From: Krzysztof Majewski Date: Tue, 3 Sep 2019 16:39:23 +0200 Subject: [PATCH 03/29] move to new module --- spring-core-2/pom.xml | 6 ------ .../java/com/baeldung/interpolation/NotNullRequest.java | 0 .../java/com/baeldung/interpolation/RestController.java | 0 .../java/com/baeldung/interpolation/ValidationExamples.java | 0 4 files changed, 6 deletions(-) rename {spring-core-2 => spring-mvc-simple-2}/src/main/java/com/baeldung/interpolation/NotNullRequest.java (100%) rename {spring-core-2 => spring-mvc-simple-2}/src/main/java/com/baeldung/interpolation/RestController.java (100%) rename {spring-core-2 => spring-mvc-simple-2}/src/main/java/com/baeldung/interpolation/ValidationExamples.java (100%) diff --git a/spring-core-2/pom.xml b/spring-core-2/pom.xml index 6c2635c88b..e24839b737 100644 --- a/spring-core-2/pom.xml +++ b/spring-core-2/pom.xml @@ -41,11 +41,6 @@ ${junit-jupiter.version} test - - javax.validation - validation-api - ${validation-api.version} - @@ -60,7 +55,6 @@ 2.22.1 - 2.0.1.Final diff --git a/spring-core-2/src/main/java/com/baeldung/interpolation/NotNullRequest.java b/spring-mvc-simple-2/src/main/java/com/baeldung/interpolation/NotNullRequest.java similarity index 100% rename from spring-core-2/src/main/java/com/baeldung/interpolation/NotNullRequest.java rename to spring-mvc-simple-2/src/main/java/com/baeldung/interpolation/NotNullRequest.java diff --git a/spring-core-2/src/main/java/com/baeldung/interpolation/RestController.java b/spring-mvc-simple-2/src/main/java/com/baeldung/interpolation/RestController.java similarity index 100% rename from spring-core-2/src/main/java/com/baeldung/interpolation/RestController.java rename to spring-mvc-simple-2/src/main/java/com/baeldung/interpolation/RestController.java diff --git a/spring-core-2/src/main/java/com/baeldung/interpolation/ValidationExamples.java b/spring-mvc-simple-2/src/main/java/com/baeldung/interpolation/ValidationExamples.java similarity index 100% rename from spring-core-2/src/main/java/com/baeldung/interpolation/ValidationExamples.java rename to spring-mvc-simple-2/src/main/java/com/baeldung/interpolation/ValidationExamples.java From 6627bcdc841e7bec124a281770a9070e39b225e9 Mon Sep 17 00:00:00 2001 From: Krzysztof Majewski Date: Tue, 3 Sep 2019 16:41:50 +0200 Subject: [PATCH 04/29] rename file --- .../{RestController.java => ValidationController.java} | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) rename spring-mvc-simple-2/src/main/java/com/baeldung/interpolation/{RestController.java => ValidationController.java} (91%) diff --git a/spring-mvc-simple-2/src/main/java/com/baeldung/interpolation/RestController.java b/spring-mvc-simple-2/src/main/java/com/baeldung/interpolation/ValidationController.java similarity index 91% rename from spring-mvc-simple-2/src/main/java/com/baeldung/interpolation/RestController.java rename to spring-mvc-simple-2/src/main/java/com/baeldung/interpolation/ValidationController.java index 87b16320fe..3fed170fdf 100644 --- a/spring-mvc-simple-2/src/main/java/com/baeldung/interpolation/RestController.java +++ b/spring-mvc-simple-2/src/main/java/com/baeldung/interpolation/ValidationController.java @@ -6,7 +6,7 @@ import org.springframework.web.bind.annotation.RequestBody; import org.springframework.web.bind.annotation.RestController; @RestController -public class RestController { +public class ValidationController { @PostMapping("/test-not-null") public void testNotNull(@Valid @RequestBody NotNullRequest request) { From 68d755274960d71920fd4f08cdd238694c631731 Mon Sep 17 00:00:00 2001 From: Krzysztof Majewski Date: Thu, 5 Sep 2019 09:50:34 +0200 Subject: [PATCH 05/29] Update pom.xml From f173646635285a51abc83cca1d2381cac80db7d6 Mon Sep 17 00:00:00 2001 From: Krzysztof Majewski Date: Thu, 5 Sep 2019 09:56:24 +0200 Subject: [PATCH 06/29] Update pom.xml From b003e69e0a57b57a766b8f3aa1d58f162e8f9479 Mon Sep 17 00:00:00 2001 From: Krzysztof Majewski Date: Thu, 5 Sep 2019 09:59:01 +0200 Subject: [PATCH 07/29] update pom --- spring-core-2/pom.xml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/spring-core-2/pom.xml b/spring-core-2/pom.xml index e24839b737..d68beda64a 100644 --- a/spring-core-2/pom.xml +++ b/spring-core-2/pom.xml @@ -57,4 +57,4 @@ 2.22.1 - + \ No newline at end of file From e48b29d58c714ed79b09e1a9a21fc5c1302f6ad7 Mon Sep 17 00:00:00 2001 From: Krzysztof Majewski Date: Tue, 10 Sep 2019 11:35:35 +0200 Subject: [PATCH 08/29] add custom interpolator --- .../interpolation/MyMessageInterpolator.java | 28 +++++++++++++++++++ 1 file changed, 28 insertions(+) create mode 100644 spring-mvc-simple-2/src/main/java/com/baeldung/interpolation/MyMessageInterpolator.java diff --git a/spring-mvc-simple-2/src/main/java/com/baeldung/interpolation/MyMessageInterpolator.java b/spring-mvc-simple-2/src/main/java/com/baeldung/interpolation/MyMessageInterpolator.java new file mode 100644 index 0000000000..8251138b9b --- /dev/null +++ b/spring-mvc-simple-2/src/main/java/com/baeldung/interpolation/MyMessageInterpolator.java @@ -0,0 +1,28 @@ +package com.baeldung.interpolation; + +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; +import javax.validation.MessageInterpolator; +import java.util.Locale; + +public class MyMessageInterpolator implements MessageInterpolator { + + private static Logger logger = LoggerFactory.getLogger(MyMessageInterpolator.class); + + private final MessageInterpolator defaultInterpolator; + + public MyMessageInterpolator(MessageInterpolator interpolator) { + this.defaultInterpolator = interpolator; + } + + @Override + public String interpolate(String messageTemplate, Context context) { + logger.debug("Selecting the language " + Locale.getDefault() + " for the error message."); + return defaultInterpolator.interpolate(messageTemplate, context, Locale.getDefault()); + } + + @Override + public String interpolate(String messageTemplate, Context context, Locale locale) { + return defaultInterpolator.interpolate(messageTemplate, context, locale); + } +} From dd5a432614153e57326b58afef3c1624385cd132 Mon Sep 17 00:00:00 2001 From: Anshul Bansal Date: Sun, 15 Sep 2019 16:54:50 +0300 Subject: [PATCH 09/29] BAEL-3191 - Categories in Groovy --- .../baeldung/category/BaeldungCategory.groovy | 17 ++++ .../baeldung/category/NumberCategory.groovy | 16 +++ .../baeldung/category/CategoryUnitTest.groovy | 99 +++++++++++++++++++ 3 files changed, 132 insertions(+) create mode 100644 core-groovy-2/src/main/groovy/com/baeldung/category/BaeldungCategory.groovy create mode 100644 core-groovy-2/src/main/groovy/com/baeldung/category/NumberCategory.groovy create mode 100644 core-groovy-2/src/test/groovy/com/baeldung/category/CategoryUnitTest.groovy diff --git a/core-groovy-2/src/main/groovy/com/baeldung/category/BaeldungCategory.groovy b/core-groovy-2/src/main/groovy/com/baeldung/category/BaeldungCategory.groovy new file mode 100644 index 0000000000..366dd182c8 --- /dev/null +++ b/core-groovy-2/src/main/groovy/com/baeldung/category/BaeldungCategory.groovy @@ -0,0 +1,17 @@ +package com.baeldung.category; + +class BaeldungCategory { + + public static String capitalize(String self) { + String capitalizedStr = self; + if (self.size() > 0) { + capitalizedStr = self.substring(0, 1).toUpperCase() + self.substring(1); + } + return capitalizedStr + } + + public static Number square(Number self) { + return self*self; + } + +} diff --git a/core-groovy-2/src/main/groovy/com/baeldung/category/NumberCategory.groovy b/core-groovy-2/src/main/groovy/com/baeldung/category/NumberCategory.groovy new file mode 100644 index 0000000000..cf0e5282fc --- /dev/null +++ b/core-groovy-2/src/main/groovy/com/baeldung/category/NumberCategory.groovy @@ -0,0 +1,16 @@ +package com.baeldung.category; + +import groovy.lang.Category + +@Category(Number) +class NumberCategory { + + public Number cube() { + return this*this*this + } + + public Number toThePower(Number exponent) { + return Math.pow(this, exponent) + } + +} diff --git a/core-groovy-2/src/test/groovy/com/baeldung/category/CategoryUnitTest.groovy b/core-groovy-2/src/test/groovy/com/baeldung/category/CategoryUnitTest.groovy new file mode 100644 index 0000000000..2e10efbe03 --- /dev/null +++ b/core-groovy-2/src/test/groovy/com/baeldung/category/CategoryUnitTest.groovy @@ -0,0 +1,99 @@ +package com.baeldung.category + +import groovy.time.* +import java.text.SimpleDateFormat +import groovy.xml.* +import groovy.xml.dom.* +import com.baeldung.category.BaeldungCategory +import com.baeldung.category.NumberCategory + +class CategoryUnitTest extends GroovyTestCase { + + void test_whenUsingTimeCategory_thenOperationOnDate() { + def jan_1_2019 = new Date("01/01/2019") + use (TimeCategory) { + assert jan_1_2019 + 10.seconds == new Date("01/01/2019 00:00:10") + + assert jan_1_2019 + 20.minutes == new Date("01/01/2019 00:20:00") + + assert jan_1_2019 + 2.hours == new Date("01/01/2019 02:00:00") + + assert jan_1_2019 - 1.day == new Date("12/31/2018") + + assert jan_1_2019 + 2.weeks == new Date("01/15/2019") + + assert jan_1_2019 - 2.months == new Date("11/01/2018") + + assert jan_1_2019 + 3.years == new Date("01/01/2022") + } + } + + void test_whenUsingTimeCategory_thenOperationOnNumber() { + SimpleDateFormat sdf = new SimpleDateFormat("dd/MM/yyyy") + use (TimeCategory) { + assert sdf.format(5.days.from.now) == sdf.format(new Date() + 5.days) + + sdf = new SimpleDateFormat("dd/MM/yyyy hh:mm:ss") + assert sdf.format(10.minutes.from.now) == sdf.format(new Date() + 10.minutes) + assert sdf.format(2.hours.ago) == sdf.format(new Date() - 2.hours) + } + } + + void test_whenUsingDOMCategory_thenOperationOnXML() { + + def baeldungArticlesText = """ + +
+ An Intro to the Java Debug Interface (JDI) + A quick and practical overview of Java Debug Interface. +
+
+ A Quick Guide to Working with Web Services in Groovy + Learn how to work with Web Services in Groovy. +
+
+""" + def baeldungArticlesDom = DOMBuilder.newInstance().parseText(baeldungArticlesText) + + def root = baeldungArticlesDom.documentElement + + use (DOMCategory) { + assert root.article.size() == 2 + + def articles = root.article + + assert articles[0].title.text() == "An Intro to the Java Debug Interface (JDI)" + assert articles[1].desc.text() == "Learn how to work with Web Services in Groovy." + + def articleNode3 = root.appendNode(new QName("article"), ["core-java": "false"]) + + articleNode3.appendNode("title", "Metaprogramming in Groovy") + articleNode3.appendNode("desc", "Explore the concept of runtime and compile-time metaprogramming in Groovy") + + assert root.article.size() == 3 + + assert root.article[2].title.text() == "Metaprogramming in Groovy" + } + } + + void test_whenUsingBaeldungCategory_thenCapitalizeString() { + use (BaeldungCategory) { + assert "norman".capitalize() == "Norman" + } + } + + void test_whenUsingBaeldungCategory_thenSquareNumber() { + use (BaeldungCategory) { + assert 50.square() == 2500 + assert 20.01.square() == 400.4001 + } + } + + void test_whenUsingNumberUtils_thenCubeNumber() { + use (NumberCategory) { + assert 3.cube() == 27 + assert 2.4.toThePower(4) == 33.1776 + } + } + +} From b3b7e78ce6aa895761dfe0a314f3f45dc6d18793 Mon Sep 17 00:00:00 2001 From: Krzysztof Majewski Date: Tue, 17 Sep 2019 09:07:47 +0200 Subject: [PATCH 10/29] review updates --- .../interpolation/MyMessageInterpolator.java | 3 ++- .../baeldung/interpolation/ValidationExamples.java | 14 +++++++------- 2 files changed, 9 insertions(+), 8 deletions(-) diff --git a/spring-mvc-simple-2/src/main/java/com/baeldung/interpolation/MyMessageInterpolator.java b/spring-mvc-simple-2/src/main/java/com/baeldung/interpolation/MyMessageInterpolator.java index 8251138b9b..efa3d62b88 100644 --- a/spring-mvc-simple-2/src/main/java/com/baeldung/interpolation/MyMessageInterpolator.java +++ b/spring-mvc-simple-2/src/main/java/com/baeldung/interpolation/MyMessageInterpolator.java @@ -17,12 +17,13 @@ public class MyMessageInterpolator implements MessageInterpolator { @Override public String interpolate(String messageTemplate, Context context) { - logger.debug("Selecting the language " + Locale.getDefault() + " for the error message."); + messageTemplate = messageTemplate.toUpperCase(); return defaultInterpolator.interpolate(messageTemplate, context, Locale.getDefault()); } @Override public String interpolate(String messageTemplate, Context context, Locale locale) { + messageTemplate = messageTemplate.toUpperCase(); return defaultInterpolator.interpolate(messageTemplate, context, locale); } } diff --git a/spring-mvc-simple-2/src/main/java/com/baeldung/interpolation/ValidationExamples.java b/spring-mvc-simple-2/src/main/java/com/baeldung/interpolation/ValidationExamples.java index d353e4f7f2..30d770205e 100644 --- a/spring-mvc-simple-2/src/main/java/com/baeldung/interpolation/ValidationExamples.java +++ b/spring-mvc-simple-2/src/main/java/com/baeldung/interpolation/ValidationExamples.java @@ -10,21 +10,21 @@ public class ValidationExamples { private static final Formatter formatter = new Formatter(); @Size( - min = 5, - max = 14, - message = "The author email '${validatedValue}' must be between {min} and {max} characters long" + min = 5, + max = 14, + message = "The author email '${validatedValue}' must be between {min} and {max} characters long" ) private String authorEmail; @Min( - value = 1, - message = "There must be at least {value} test{value > 1 ? 's' : ''} int the test case" + value = 1, + message = "There must be at least {value} test{value > 1 ? 's' : ''} int the test case" ) private int testCount; @DecimalMin( - value = "50", - message = "The code coverage ${formatter.format('%1$.2f', validatedValue)} must be higher than {value}%" + value = "50", + message = "The code coverage ${formatter.format('%1$.2f', validatedValue)} must be higher than {value}%" ) private double codeCoverage; From b7368cb6dbca187efaf136137128e11e052d0ef8 Mon Sep 17 00:00:00 2001 From: Anshul Bansal Date: Sun, 22 Sep 2019 22:26:47 +0300 Subject: [PATCH 11/29] BAEL-3191 - review changes --- .../com/baeldung/category/BaeldungCategory.groovy | 4 ++-- .../com/baeldung/category/NumberCategory.groovy | 9 +++++---- .../com/baeldung/category/CategoryUnitTest.groovy | 12 +++++++----- 3 files changed, 14 insertions(+), 11 deletions(-) diff --git a/core-groovy-2/src/main/groovy/com/baeldung/category/BaeldungCategory.groovy b/core-groovy-2/src/main/groovy/com/baeldung/category/BaeldungCategory.groovy index 366dd182c8..479c39699f 100644 --- a/core-groovy-2/src/main/groovy/com/baeldung/category/BaeldungCategory.groovy +++ b/core-groovy-2/src/main/groovy/com/baeldung/category/BaeldungCategory.groovy @@ -10,8 +10,8 @@ class BaeldungCategory { return capitalizedStr } - public static Number square(Number self) { - return self*self; + public static double toThePower(Number self, Number exponent) { + return Math.pow(self, exponent); } } diff --git a/core-groovy-2/src/main/groovy/com/baeldung/category/NumberCategory.groovy b/core-groovy-2/src/main/groovy/com/baeldung/category/NumberCategory.groovy index cf0e5282fc..ccf2ed519b 100644 --- a/core-groovy-2/src/main/groovy/com/baeldung/category/NumberCategory.groovy +++ b/core-groovy-2/src/main/groovy/com/baeldung/category/NumberCategory.groovy @@ -4,13 +4,14 @@ import groovy.lang.Category @Category(Number) class NumberCategory { - + public Number cube() { return this*this*this } - - public Number toThePower(Number exponent) { - return Math.pow(this, exponent) + + public int divideWithRoundUp(BigDecimal divisor, boolean isRoundUp) { + def mathRound = isRoundUp ? BigDecimal.ROUND_UP : BigDecimal.ROUND_DOWN + return (int)new BigDecimal(this).divide(divisor, 0, mathRound) } } diff --git a/core-groovy-2/src/test/groovy/com/baeldung/category/CategoryUnitTest.groovy b/core-groovy-2/src/test/groovy/com/baeldung/category/CategoryUnitTest.groovy index 2e10efbe03..a1f67b1e2e 100644 --- a/core-groovy-2/src/test/groovy/com/baeldung/category/CategoryUnitTest.groovy +++ b/core-groovy-2/src/test/groovy/com/baeldung/category/CategoryUnitTest.groovy @@ -82,17 +82,19 @@ class CategoryUnitTest extends GroovyTestCase { } } - void test_whenUsingBaeldungCategory_thenSquareNumber() { + void test_whenUsingBaeldungCategory_thenOperationsOnNumber() { use (BaeldungCategory) { - assert 50.square() == 2500 - assert 20.01.square() == 400.4001 + assert 50.toThePower(2) == 2500 + assert 2.4.toThePower(4) == 33.1776 } } - void test_whenUsingNumberUtils_thenCubeNumber() { + void test_whenUsingNumberCategory_thenOperationsOnNumber() { use (NumberCategory) { assert 3.cube() == 27 - assert 2.4.toThePower(4) == 33.1776 + assert 25.divideWithRoundUp(6, true) == 5 + assert 120.23.divideWithRoundUp(6.1, true) == 20 + assert 150.9.divideWithRoundUp(12.1, false) == 12 } } From dac59fbec2360eaf0624aba85e661647cf5c33c5 Mon Sep 17 00:00:00 2001 From: wugangca Date: Sun, 22 Sep 2019 20:23:27 -0600 Subject: [PATCH 12/29] BAEL-2988 Using Enums as Request Parameters in Spring (#7815) * BAEL-2988 Using Enums as Request Parameters in Spring * Remove the unused annotation based on PR feedback * Simplify code based on the PR feedback * Make the methods consistent with the article. --- .../main/java/com/baeldung/Application.java | 2 -- .../java/com/baeldung/config/MvcConfig.java | 7 ++++++ .../converter/StringToEnumConverter.java | 20 +++++++++++++++ .../com/baeldung/cors/EnumController.java | 25 +++++++++++++++++++ .../GlobalControllerExceptionHandler.java | 16 ++++++++++++ .../main/java/com/baeldung/model/Modes.java | 5 ++++ 6 files changed, 73 insertions(+), 2 deletions(-) create mode 100644 spring-rest-simple/src/main/java/com/baeldung/config/converter/StringToEnumConverter.java create mode 100644 spring-rest-simple/src/main/java/com/baeldung/cors/EnumController.java create mode 100644 spring-rest-simple/src/main/java/com/baeldung/exceptions/GlobalControllerExceptionHandler.java create mode 100644 spring-rest-simple/src/main/java/com/baeldung/model/Modes.java diff --git a/spring-rest-simple/src/main/java/com/baeldung/Application.java b/spring-rest-simple/src/main/java/com/baeldung/Application.java index dc6bfcb970..f4147568ce 100644 --- a/spring-rest-simple/src/main/java/com/baeldung/Application.java +++ b/spring-rest-simple/src/main/java/com/baeldung/Application.java @@ -4,11 +4,9 @@ import org.springframework.boot.SpringApplication; import org.springframework.boot.autoconfigure.EnableAutoConfiguration; import org.springframework.boot.autoconfigure.SpringBootApplication; import org.springframework.boot.web.servlet.support.SpringBootServletInitializer; -import org.springframework.context.annotation.ComponentScan; @EnableAutoConfiguration @SpringBootApplication -@ComponentScan("com.baeldung.cors") public class Application extends SpringBootServletInitializer { public static void main(final String[] args) { diff --git a/spring-rest-simple/src/main/java/com/baeldung/config/MvcConfig.java b/spring-rest-simple/src/main/java/com/baeldung/config/MvcConfig.java index 48b627a344..246049b722 100644 --- a/spring-rest-simple/src/main/java/com/baeldung/config/MvcConfig.java +++ b/spring-rest-simple/src/main/java/com/baeldung/config/MvcConfig.java @@ -2,6 +2,7 @@ package com.baeldung.config; import org.springframework.context.annotation.ComponentScan; import org.springframework.context.annotation.Configuration; +import org.springframework.format.FormatterRegistry; import org.springframework.http.MediaType; import org.springframework.http.converter.HttpMessageConverter; import org.springframework.http.converter.StringHttpMessageConverter; @@ -17,6 +18,7 @@ import org.springframework.web.servlet.config.annotation.EnableWebMvc; import org.springframework.web.servlet.config.annotation.WebMvcConfigurer; import com.baeldung.config.converter.KryoHttpMessageConverter; +import com.baeldung.config.converter.StringToEnumConverter; import java.text.SimpleDateFormat; import java.util.List; @@ -71,4 +73,9 @@ public class MvcConfig implements WebMvcConfigurer { public void addCorsMappings(CorsRegistry registry) { registry.addMapping("/**"); } + + @Override + public void addFormatters(FormatterRegistry registry) { + registry.addConverter(new StringToEnumConverter()); + } } diff --git a/spring-rest-simple/src/main/java/com/baeldung/config/converter/StringToEnumConverter.java b/spring-rest-simple/src/main/java/com/baeldung/config/converter/StringToEnumConverter.java new file mode 100644 index 0000000000..349ee5a796 --- /dev/null +++ b/spring-rest-simple/src/main/java/com/baeldung/config/converter/StringToEnumConverter.java @@ -0,0 +1,20 @@ +package com.baeldung.config.converter; + +import org.springframework.core.convert.converter.Converter; +import org.springframework.stereotype.Component; + +import com.baeldung.model.Modes; + +@Component +public class StringToEnumConverter implements Converter { + @Override + public Modes convert(String source) { + // Remove the try-catch block if we want to handle the exception globally in GlobalControllerExceptionHandler + try { + return Modes.valueOf(source.toUpperCase()); + } catch (IllegalArgumentException e) { + return null; + } + + } +} diff --git a/spring-rest-simple/src/main/java/com/baeldung/cors/EnumController.java b/spring-rest-simple/src/main/java/com/baeldung/cors/EnumController.java new file mode 100644 index 0000000000..6bd5a16439 --- /dev/null +++ b/spring-rest-simple/src/main/java/com/baeldung/cors/EnumController.java @@ -0,0 +1,25 @@ +package com.baeldung.cors; + +import org.springframework.web.bind.annotation.CrossOrigin; +import org.springframework.web.bind.annotation.PathVariable; +import org.springframework.web.bind.annotation.RequestMapping; +import org.springframework.web.bind.annotation.RequestParam; +import org.springframework.web.bind.annotation.RestController; + +import com.baeldung.model.Modes; + +@CrossOrigin(maxAge = 3600) +@RestController +@RequestMapping("/enums") +public class EnumController { + + @RequestMapping("/mode2str") + public String getStringToMode(@RequestParam("mode") Modes mode) { + return "good"; + } + + @RequestMapping("/findbymode/{mode}") + public String findByEnum(@PathVariable Modes mode) { + return "good"; + } +} \ No newline at end of file diff --git a/spring-rest-simple/src/main/java/com/baeldung/exceptions/GlobalControllerExceptionHandler.java b/spring-rest-simple/src/main/java/com/baeldung/exceptions/GlobalControllerExceptionHandler.java new file mode 100644 index 0000000000..78fbcf97dd --- /dev/null +++ b/spring-rest-simple/src/main/java/com/baeldung/exceptions/GlobalControllerExceptionHandler.java @@ -0,0 +1,16 @@ +package com.baeldung.exceptions; + +import org.springframework.core.convert.ConversionFailedException; +import org.springframework.http.HttpStatus; +import org.springframework.http.ResponseEntity; +import org.springframework.web.bind.annotation.ControllerAdvice; +import org.springframework.web.bind.annotation.ExceptionHandler; + +@ControllerAdvice +public class GlobalControllerExceptionHandler { + @ExceptionHandler(ConversionFailedException.class) + public ResponseEntity handleConflict(RuntimeException ex) { + // Remove the try-catch block in the StringToEnumConverter if we want to handle the exception here + return new ResponseEntity<>(ex.getMessage(), HttpStatus.BAD_REQUEST); + } +} diff --git a/spring-rest-simple/src/main/java/com/baeldung/model/Modes.java b/spring-rest-simple/src/main/java/com/baeldung/model/Modes.java new file mode 100644 index 0000000000..a82df17d7d --- /dev/null +++ b/spring-rest-simple/src/main/java/com/baeldung/model/Modes.java @@ -0,0 +1,5 @@ +package com.baeldung.model; + +public enum Modes { + ALPHA, DELTA +} From 6073d2d451d4a3a08b6b9e7e8d25070b3a95521b Mon Sep 17 00:00:00 2001 From: Catalin Burcea Date: Mon, 23 Sep 2019 16:55:02 +0300 Subject: [PATCH 13/29] Split or move core-java-modules/core-java-concurrency-basic module (#7799) --- .../core-java-concurrency-basic-2/README.md | 10 ++++++ .../core-java-concurrency-basic-2/pom.xml | 33 +++++++++++++++++++ .../com/baeldung/concurrent/delay/Delay.java | 0 .../concurrent/sleepwait/ThreadA.java | 0 .../concurrent/sleepwait/ThreadB.java | 0 .../sleepwait/WaitSleepExample.java | 0 .../BaeldungSynchronizedBlocks.java | 0 .../BaeldungSynchronizedMethods.java | 0 .../threadlifecycle/BlockedState.java | 0 .../concurrent/threadlifecycle/NewState.java | 0 .../threadlifecycle/RunnableState.java | 0 .../threadlifecycle/TerminatedState.java | 0 .../threadlifecycle/TimedWaitingState.java | 0 .../threadlifecycle/WaitingState.java | 0 .../concurrent/waitandnotify/Data.java | 0 .../waitandnotify/NetworkDriver.java | 0 .../concurrent/waitandnotify/Receiver.java | 0 .../concurrent/waitandnotify/Sender.java | 0 .../src/main/resources/logback.xml | 19 +++++++++++ .../BaeldungSychronizedBlockUnitTest.java | 0 .../BaeldungSynchronizeMethodsUnitTest.java | 0 .../waitandnotify/NetworkIntegrationTest.java | 8 ++--- .../core-java-concurrency-basic/README.md | 21 +++++------- .../threadsafety/CounterUnitTest.java} | 10 +++--- .../ExtrinsicLockCounterUnitTest.java} | 10 +++--- .../threadsafety/MathUtilsUnitTest.java} | 9 +++-- .../threadsafety/MessageServiceUnitTest.java} | 10 +++--- .../ReentrantLockCounterUnitTest.java} | 10 +++--- ...eentrantReadWriteLockCounterUnitTest.java} | 14 ++++---- pom.xml | 2 ++ 30 files changed, 114 insertions(+), 42 deletions(-) create mode 100644 core-java-modules/core-java-concurrency-basic-2/README.md create mode 100644 core-java-modules/core-java-concurrency-basic-2/pom.xml rename core-java-modules/{core-java-concurrency-basic => core-java-concurrency-basic-2}/src/main/java/com/baeldung/concurrent/delay/Delay.java (100%) rename core-java-modules/{core-java-concurrency-basic => core-java-concurrency-basic-2}/src/main/java/com/baeldung/concurrent/sleepwait/ThreadA.java (100%) rename core-java-modules/{core-java-concurrency-basic => core-java-concurrency-basic-2}/src/main/java/com/baeldung/concurrent/sleepwait/ThreadB.java (100%) rename core-java-modules/{core-java-concurrency-basic => core-java-concurrency-basic-2}/src/main/java/com/baeldung/concurrent/sleepwait/WaitSleepExample.java (100%) rename core-java-modules/{core-java-concurrency-basic => core-java-concurrency-basic-2}/src/main/java/com/baeldung/concurrent/synchronize/BaeldungSynchronizedBlocks.java (100%) rename core-java-modules/{core-java-concurrency-basic => core-java-concurrency-basic-2}/src/main/java/com/baeldung/concurrent/synchronize/BaeldungSynchronizedMethods.java (100%) rename core-java-modules/{core-java-concurrency-basic => core-java-concurrency-basic-2}/src/main/java/com/baeldung/concurrent/threadlifecycle/BlockedState.java (100%) rename core-java-modules/{core-java-concurrency-basic => core-java-concurrency-basic-2}/src/main/java/com/baeldung/concurrent/threadlifecycle/NewState.java (100%) rename core-java-modules/{core-java-concurrency-basic => core-java-concurrency-basic-2}/src/main/java/com/baeldung/concurrent/threadlifecycle/RunnableState.java (100%) rename core-java-modules/{core-java-concurrency-basic => core-java-concurrency-basic-2}/src/main/java/com/baeldung/concurrent/threadlifecycle/TerminatedState.java (100%) rename core-java-modules/{core-java-concurrency-basic => core-java-concurrency-basic-2}/src/main/java/com/baeldung/concurrent/threadlifecycle/TimedWaitingState.java (100%) rename core-java-modules/{core-java-concurrency-basic => core-java-concurrency-basic-2}/src/main/java/com/baeldung/concurrent/threadlifecycle/WaitingState.java (100%) rename core-java-modules/{core-java-concurrency-basic => core-java-concurrency-basic-2}/src/main/java/com/baeldung/concurrent/waitandnotify/Data.java (100%) rename core-java-modules/{core-java-concurrency-basic => core-java-concurrency-basic-2}/src/main/java/com/baeldung/concurrent/waitandnotify/NetworkDriver.java (100%) rename core-java-modules/{core-java-concurrency-basic => core-java-concurrency-basic-2}/src/main/java/com/baeldung/concurrent/waitandnotify/Receiver.java (100%) rename core-java-modules/{core-java-concurrency-basic => core-java-concurrency-basic-2}/src/main/java/com/baeldung/concurrent/waitandnotify/Sender.java (100%) create mode 100644 core-java-modules/core-java-concurrency-basic-2/src/main/resources/logback.xml rename core-java-modules/{core-java-concurrency-basic => core-java-concurrency-basic-2}/src/test/java/com/baeldung/concurrent/synchronize/BaeldungSychronizedBlockUnitTest.java (100%) rename core-java-modules/{core-java-concurrency-basic => core-java-concurrency-basic-2}/src/test/java/com/baeldung/concurrent/synchronize/BaeldungSynchronizeMethodsUnitTest.java (100%) rename core-java-modules/{core-java-concurrency-basic => core-java-concurrency-basic-2}/src/test/java/com/baeldung/concurrent/waitandnotify/NetworkIntegrationTest.java (100%) rename core-java-modules/core-java-concurrency-basic/src/test/{com/baeldung/concurrent/threadsafety/tests/CounterTest.java => java/com/baeldung/concurrent/threadsafety/CounterUnitTest.java} (91%) rename core-java-modules/core-java-concurrency-basic/src/test/{com/baeldung/concurrent/threadsafety/tests/ExtrinsicLockCounterTest.java => java/com/baeldung/concurrent/threadsafety/ExtrinsicLockCounterUnitTest.java} (91%) rename core-java-modules/core-java-concurrency-basic/src/test/{com/baeldung/concurrent/threadsafety/tests/MathUtilsTest.java => java/com/baeldung/concurrent/threadsafety/MathUtilsUnitTest.java} (55%) rename core-java-modules/core-java-concurrency-basic/src/test/{com/baeldung/concurrent/threadsafety/tests/MessageServiceTest.java => java/com/baeldung/concurrent/threadsafety/MessageServiceUnitTest.java} (91%) rename core-java-modules/core-java-concurrency-basic/src/test/{com/baeldung/concurrent/threadsafety/tests/ReentrantLockCounterTest.java => java/com/baeldung/concurrent/threadsafety/ReentrantLockCounterUnitTest.java} (91%) rename core-java-modules/core-java-concurrency-basic/src/test/{com/baeldung/concurrent/threadsafety/tests/ReentrantReadWriteLockCounterTest.java => java/com/baeldung/concurrent/threadsafety/ReentrantReadWriteLockCounterUnitTest.java} (90%) diff --git a/core-java-modules/core-java-concurrency-basic-2/README.md b/core-java-modules/core-java-concurrency-basic-2/README.md new file mode 100644 index 0000000000..e72725b7cb --- /dev/null +++ b/core-java-modules/core-java-concurrency-basic-2/README.md @@ -0,0 +1,10 @@ +========= + +## Core Java Concurrency Basic 2 Examples + +### Relevant Articles: +- [How to Delay Code Execution in Java](https://www.baeldung.com/java-delay-code-execution) +- [wait and notify() Methods in Java](https://www.baeldung.com/java-wait-notify) +- [Difference Between Wait and Sleep in Java](https://www.baeldung.com/java-wait-and-sleep) +- [Guide to the Synchronized Keyword in Java](https://www.baeldung.com/java-synchronized) +- [Life Cycle of a Thread in Java](https://www.baeldung.com/java-thread-lifecycle) diff --git a/core-java-modules/core-java-concurrency-basic-2/pom.xml b/core-java-modules/core-java-concurrency-basic-2/pom.xml new file mode 100644 index 0000000000..7e0a160456 --- /dev/null +++ b/core-java-modules/core-java-concurrency-basic-2/pom.xml @@ -0,0 +1,33 @@ + + 4.0.0 + com.baeldung + core-java-concurrency-basic-2 + 0.1.0-SNAPSHOT + core-java-concurrency-basic-2 + jar + + + com.baeldung + parent-java + 0.0.1-SNAPSHOT + ../../parent-java + + + + + + + core-java-concurrency-basic-2 + + + src/main/resources + true + + + + + + + + diff --git a/core-java-modules/core-java-concurrency-basic/src/main/java/com/baeldung/concurrent/delay/Delay.java b/core-java-modules/core-java-concurrency-basic-2/src/main/java/com/baeldung/concurrent/delay/Delay.java similarity index 100% rename from core-java-modules/core-java-concurrency-basic/src/main/java/com/baeldung/concurrent/delay/Delay.java rename to core-java-modules/core-java-concurrency-basic-2/src/main/java/com/baeldung/concurrent/delay/Delay.java diff --git a/core-java-modules/core-java-concurrency-basic/src/main/java/com/baeldung/concurrent/sleepwait/ThreadA.java b/core-java-modules/core-java-concurrency-basic-2/src/main/java/com/baeldung/concurrent/sleepwait/ThreadA.java similarity index 100% rename from core-java-modules/core-java-concurrency-basic/src/main/java/com/baeldung/concurrent/sleepwait/ThreadA.java rename to core-java-modules/core-java-concurrency-basic-2/src/main/java/com/baeldung/concurrent/sleepwait/ThreadA.java diff --git a/core-java-modules/core-java-concurrency-basic/src/main/java/com/baeldung/concurrent/sleepwait/ThreadB.java b/core-java-modules/core-java-concurrency-basic-2/src/main/java/com/baeldung/concurrent/sleepwait/ThreadB.java similarity index 100% rename from core-java-modules/core-java-concurrency-basic/src/main/java/com/baeldung/concurrent/sleepwait/ThreadB.java rename to core-java-modules/core-java-concurrency-basic-2/src/main/java/com/baeldung/concurrent/sleepwait/ThreadB.java diff --git a/core-java-modules/core-java-concurrency-basic/src/main/java/com/baeldung/concurrent/sleepwait/WaitSleepExample.java b/core-java-modules/core-java-concurrency-basic-2/src/main/java/com/baeldung/concurrent/sleepwait/WaitSleepExample.java similarity index 100% rename from core-java-modules/core-java-concurrency-basic/src/main/java/com/baeldung/concurrent/sleepwait/WaitSleepExample.java rename to core-java-modules/core-java-concurrency-basic-2/src/main/java/com/baeldung/concurrent/sleepwait/WaitSleepExample.java diff --git a/core-java-modules/core-java-concurrency-basic/src/main/java/com/baeldung/concurrent/synchronize/BaeldungSynchronizedBlocks.java b/core-java-modules/core-java-concurrency-basic-2/src/main/java/com/baeldung/concurrent/synchronize/BaeldungSynchronizedBlocks.java similarity index 100% rename from core-java-modules/core-java-concurrency-basic/src/main/java/com/baeldung/concurrent/synchronize/BaeldungSynchronizedBlocks.java rename to core-java-modules/core-java-concurrency-basic-2/src/main/java/com/baeldung/concurrent/synchronize/BaeldungSynchronizedBlocks.java diff --git a/core-java-modules/core-java-concurrency-basic/src/main/java/com/baeldung/concurrent/synchronize/BaeldungSynchronizedMethods.java b/core-java-modules/core-java-concurrency-basic-2/src/main/java/com/baeldung/concurrent/synchronize/BaeldungSynchronizedMethods.java similarity index 100% rename from core-java-modules/core-java-concurrency-basic/src/main/java/com/baeldung/concurrent/synchronize/BaeldungSynchronizedMethods.java rename to core-java-modules/core-java-concurrency-basic-2/src/main/java/com/baeldung/concurrent/synchronize/BaeldungSynchronizedMethods.java diff --git a/core-java-modules/core-java-concurrency-basic/src/main/java/com/baeldung/concurrent/threadlifecycle/BlockedState.java b/core-java-modules/core-java-concurrency-basic-2/src/main/java/com/baeldung/concurrent/threadlifecycle/BlockedState.java similarity index 100% rename from core-java-modules/core-java-concurrency-basic/src/main/java/com/baeldung/concurrent/threadlifecycle/BlockedState.java rename to core-java-modules/core-java-concurrency-basic-2/src/main/java/com/baeldung/concurrent/threadlifecycle/BlockedState.java diff --git a/core-java-modules/core-java-concurrency-basic/src/main/java/com/baeldung/concurrent/threadlifecycle/NewState.java b/core-java-modules/core-java-concurrency-basic-2/src/main/java/com/baeldung/concurrent/threadlifecycle/NewState.java similarity index 100% rename from core-java-modules/core-java-concurrency-basic/src/main/java/com/baeldung/concurrent/threadlifecycle/NewState.java rename to core-java-modules/core-java-concurrency-basic-2/src/main/java/com/baeldung/concurrent/threadlifecycle/NewState.java diff --git a/core-java-modules/core-java-concurrency-basic/src/main/java/com/baeldung/concurrent/threadlifecycle/RunnableState.java b/core-java-modules/core-java-concurrency-basic-2/src/main/java/com/baeldung/concurrent/threadlifecycle/RunnableState.java similarity index 100% rename from core-java-modules/core-java-concurrency-basic/src/main/java/com/baeldung/concurrent/threadlifecycle/RunnableState.java rename to core-java-modules/core-java-concurrency-basic-2/src/main/java/com/baeldung/concurrent/threadlifecycle/RunnableState.java diff --git a/core-java-modules/core-java-concurrency-basic/src/main/java/com/baeldung/concurrent/threadlifecycle/TerminatedState.java b/core-java-modules/core-java-concurrency-basic-2/src/main/java/com/baeldung/concurrent/threadlifecycle/TerminatedState.java similarity index 100% rename from core-java-modules/core-java-concurrency-basic/src/main/java/com/baeldung/concurrent/threadlifecycle/TerminatedState.java rename to core-java-modules/core-java-concurrency-basic-2/src/main/java/com/baeldung/concurrent/threadlifecycle/TerminatedState.java diff --git a/core-java-modules/core-java-concurrency-basic/src/main/java/com/baeldung/concurrent/threadlifecycle/TimedWaitingState.java b/core-java-modules/core-java-concurrency-basic-2/src/main/java/com/baeldung/concurrent/threadlifecycle/TimedWaitingState.java similarity index 100% rename from core-java-modules/core-java-concurrency-basic/src/main/java/com/baeldung/concurrent/threadlifecycle/TimedWaitingState.java rename to core-java-modules/core-java-concurrency-basic-2/src/main/java/com/baeldung/concurrent/threadlifecycle/TimedWaitingState.java diff --git a/core-java-modules/core-java-concurrency-basic/src/main/java/com/baeldung/concurrent/threadlifecycle/WaitingState.java b/core-java-modules/core-java-concurrency-basic-2/src/main/java/com/baeldung/concurrent/threadlifecycle/WaitingState.java similarity index 100% rename from core-java-modules/core-java-concurrency-basic/src/main/java/com/baeldung/concurrent/threadlifecycle/WaitingState.java rename to core-java-modules/core-java-concurrency-basic-2/src/main/java/com/baeldung/concurrent/threadlifecycle/WaitingState.java diff --git a/core-java-modules/core-java-concurrency-basic/src/main/java/com/baeldung/concurrent/waitandnotify/Data.java b/core-java-modules/core-java-concurrency-basic-2/src/main/java/com/baeldung/concurrent/waitandnotify/Data.java similarity index 100% rename from core-java-modules/core-java-concurrency-basic/src/main/java/com/baeldung/concurrent/waitandnotify/Data.java rename to core-java-modules/core-java-concurrency-basic-2/src/main/java/com/baeldung/concurrent/waitandnotify/Data.java diff --git a/core-java-modules/core-java-concurrency-basic/src/main/java/com/baeldung/concurrent/waitandnotify/NetworkDriver.java b/core-java-modules/core-java-concurrency-basic-2/src/main/java/com/baeldung/concurrent/waitandnotify/NetworkDriver.java similarity index 100% rename from core-java-modules/core-java-concurrency-basic/src/main/java/com/baeldung/concurrent/waitandnotify/NetworkDriver.java rename to core-java-modules/core-java-concurrency-basic-2/src/main/java/com/baeldung/concurrent/waitandnotify/NetworkDriver.java diff --git a/core-java-modules/core-java-concurrency-basic/src/main/java/com/baeldung/concurrent/waitandnotify/Receiver.java b/core-java-modules/core-java-concurrency-basic-2/src/main/java/com/baeldung/concurrent/waitandnotify/Receiver.java similarity index 100% rename from core-java-modules/core-java-concurrency-basic/src/main/java/com/baeldung/concurrent/waitandnotify/Receiver.java rename to core-java-modules/core-java-concurrency-basic-2/src/main/java/com/baeldung/concurrent/waitandnotify/Receiver.java diff --git a/core-java-modules/core-java-concurrency-basic/src/main/java/com/baeldung/concurrent/waitandnotify/Sender.java b/core-java-modules/core-java-concurrency-basic-2/src/main/java/com/baeldung/concurrent/waitandnotify/Sender.java similarity index 100% rename from core-java-modules/core-java-concurrency-basic/src/main/java/com/baeldung/concurrent/waitandnotify/Sender.java rename to core-java-modules/core-java-concurrency-basic-2/src/main/java/com/baeldung/concurrent/waitandnotify/Sender.java diff --git a/core-java-modules/core-java-concurrency-basic-2/src/main/resources/logback.xml b/core-java-modules/core-java-concurrency-basic-2/src/main/resources/logback.xml new file mode 100644 index 0000000000..56af2d397e --- /dev/null +++ b/core-java-modules/core-java-concurrency-basic-2/src/main/resources/logback.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/core-java-modules/core-java-concurrency-basic/src/test/java/com/baeldung/concurrent/synchronize/BaeldungSychronizedBlockUnitTest.java b/core-java-modules/core-java-concurrency-basic-2/src/test/java/com/baeldung/concurrent/synchronize/BaeldungSychronizedBlockUnitTest.java similarity index 100% rename from core-java-modules/core-java-concurrency-basic/src/test/java/com/baeldung/concurrent/synchronize/BaeldungSychronizedBlockUnitTest.java rename to core-java-modules/core-java-concurrency-basic-2/src/test/java/com/baeldung/concurrent/synchronize/BaeldungSychronizedBlockUnitTest.java diff --git a/core-java-modules/core-java-concurrency-basic/src/test/java/com/baeldung/concurrent/synchronize/BaeldungSynchronizeMethodsUnitTest.java b/core-java-modules/core-java-concurrency-basic-2/src/test/java/com/baeldung/concurrent/synchronize/BaeldungSynchronizeMethodsUnitTest.java similarity index 100% rename from core-java-modules/core-java-concurrency-basic/src/test/java/com/baeldung/concurrent/synchronize/BaeldungSynchronizeMethodsUnitTest.java rename to core-java-modules/core-java-concurrency-basic-2/src/test/java/com/baeldung/concurrent/synchronize/BaeldungSynchronizeMethodsUnitTest.java diff --git a/core-java-modules/core-java-concurrency-basic/src/test/java/com/baeldung/concurrent/waitandnotify/NetworkIntegrationTest.java b/core-java-modules/core-java-concurrency-basic-2/src/test/java/com/baeldung/concurrent/waitandnotify/NetworkIntegrationTest.java similarity index 100% rename from core-java-modules/core-java-concurrency-basic/src/test/java/com/baeldung/concurrent/waitandnotify/NetworkIntegrationTest.java rename to core-java-modules/core-java-concurrency-basic-2/src/test/java/com/baeldung/concurrent/waitandnotify/NetworkIntegrationTest.java index e2bc328df3..473fe6ff8e 100644 --- a/core-java-modules/core-java-concurrency-basic/src/test/java/com/baeldung/concurrent/waitandnotify/NetworkIntegrationTest.java +++ b/core-java-modules/core-java-concurrency-basic-2/src/test/java/com/baeldung/concurrent/waitandnotify/NetworkIntegrationTest.java @@ -1,15 +1,15 @@ package com.baeldung.concurrent.waitandnotify; -import static org.junit.Assert.assertEquals; +import org.junit.After; +import org.junit.Before; +import org.junit.Test; import java.io.ByteArrayOutputStream; import java.io.PrintStream; import java.io.PrintWriter; import java.io.StringWriter; -import org.junit.After; -import org.junit.Before; -import org.junit.Test; +import static org.junit.Assert.assertEquals; public class NetworkIntegrationTest { diff --git a/core-java-modules/core-java-concurrency-basic/README.md b/core-java-modules/core-java-concurrency-basic/README.md index c498bed315..2f9d014103 100644 --- a/core-java-modules/core-java-concurrency-basic/README.md +++ b/core-java-modules/core-java-concurrency-basic/README.md @@ -3,18 +3,13 @@ ## Core Java Concurrency Basic Examples ### Relevant Articles: -- [Guide To CompletableFuture](http://www.baeldung.com/java-completablefuture) -- [A Guide to the Java ExecutorService](http://www.baeldung.com/java-executor-service-tutorial) -- [Guide to java.util.concurrent.Future](http://www.baeldung.com/java-future) -- [Difference Between Wait and Sleep in Java](http://www.baeldung.com/java-wait-and-sleep) -- [Guide to the Synchronized Keyword in Java](http://www.baeldung.com/java-synchronized) -- [Overview of the java.util.concurrent](http://www.baeldung.com/java-util-concurrent) -- [Implementing a Runnable vs Extending a Thread](http://www.baeldung.com/java-runnable-vs-extending-thread) -- [How to Kill a Java Thread](http://www.baeldung.com/java-thread-stop) -- [ExecutorService – Waiting for Threads to Finish](http://www.baeldung.com/java-executor-wait-for-threads) -- [wait and notify() Methods in Java](http://www.baeldung.com/java-wait-notify) -- [Life Cycle of a Thread in Java](http://www.baeldung.com/java-thread-lifecycle) -- [Runnable vs. Callable in Java](http://www.baeldung.com/java-runnable-callable) +- [Guide To CompletableFuture](https://www.baeldung.com/java-completablefuture) +- [A Guide to the Java ExecutorService](https://www.baeldung.com/java-executor-service-tutorial) +- [Guide to java.util.concurrent.Future](https://www.baeldung.com/java-future) +- [Overview of the java.util.concurrent](https://www.baeldung.com/java-util-concurrent) +- [Implementing a Runnable vs Extending a Thread](https://www.baeldung.com/java-runnable-vs-extending-thread) +- [How to Kill a Java Thread](https://www.baeldung.com/java-thread-stop) +- [ExecutorService – Waiting for Threads to Finish](https://www.baeldung.com/java-executor-wait-for-threads) +- [Runnable vs. Callable in Java](https://www.baeldung.com/java-runnable-callable) - [What is Thread-Safety and How to Achieve it?](https://www.baeldung.com/java-thread-safety) - [How to Start a Thread in Java](https://www.baeldung.com/java-start-thread) -- [How to Delay Code Execution in Java](https://www.baeldung.com/java-delay-code-execution) diff --git a/core-java-modules/core-java-concurrency-basic/src/test/com/baeldung/concurrent/threadsafety/tests/CounterTest.java b/core-java-modules/core-java-concurrency-basic/src/test/java/com/baeldung/concurrent/threadsafety/CounterUnitTest.java similarity index 91% rename from core-java-modules/core-java-concurrency-basic/src/test/com/baeldung/concurrent/threadsafety/tests/CounterTest.java rename to core-java-modules/core-java-concurrency-basic/src/test/java/com/baeldung/concurrent/threadsafety/CounterUnitTest.java index 176151083c..6761b05282 100644 --- a/core-java-modules/core-java-concurrency-basic/src/test/com/baeldung/concurrent/threadsafety/tests/CounterTest.java +++ b/core-java-modules/core-java-concurrency-basic/src/test/java/com/baeldung/concurrent/threadsafety/CounterUnitTest.java @@ -1,14 +1,16 @@ -package com.baeldung.concurrent.threadsafety.tests; +package com.baeldung.concurrent.threadsafety; -import org.junit.Test; -import static org.assertj.core.api.Assertions.assertThat; import com.baeldung.concurrent.threadsafety.callables.CounterCallable; import com.baeldung.concurrent.threadsafety.services.Counter; +import org.junit.Test; + import java.util.concurrent.ExecutorService; import java.util.concurrent.Executors; import java.util.concurrent.Future; -public class CounterTest { +import static org.assertj.core.api.Assertions.assertThat; + +public class CounterUnitTest { @Test public void whenCalledIncrementCounter_thenCorrect() throws Exception { diff --git a/core-java-modules/core-java-concurrency-basic/src/test/com/baeldung/concurrent/threadsafety/tests/ExtrinsicLockCounterTest.java b/core-java-modules/core-java-concurrency-basic/src/test/java/com/baeldung/concurrent/threadsafety/ExtrinsicLockCounterUnitTest.java similarity index 91% rename from core-java-modules/core-java-concurrency-basic/src/test/com/baeldung/concurrent/threadsafety/tests/ExtrinsicLockCounterTest.java rename to core-java-modules/core-java-concurrency-basic/src/test/java/com/baeldung/concurrent/threadsafety/ExtrinsicLockCounterUnitTest.java index e34eb250bf..2dcb846bf4 100644 --- a/core-java-modules/core-java-concurrency-basic/src/test/com/baeldung/concurrent/threadsafety/tests/ExtrinsicLockCounterTest.java +++ b/core-java-modules/core-java-concurrency-basic/src/test/java/com/baeldung/concurrent/threadsafety/ExtrinsicLockCounterUnitTest.java @@ -1,14 +1,16 @@ -package com.baeldung.concurrent.threadsafety.tests; +package com.baeldung.concurrent.threadsafety; -import org.junit.Test; -import static org.assertj.core.api.Assertions.assertThat; import com.baeldung.concurrent.threadsafety.callables.ExtrinsicLockCounterCallable; import com.baeldung.concurrent.threadsafety.services.ExtrinsicLockCounter; +import org.junit.Test; + import java.util.concurrent.ExecutorService; import java.util.concurrent.Executors; import java.util.concurrent.Future; -public class ExtrinsicLockCounterTest { +import static org.assertj.core.api.Assertions.assertThat; + +public class ExtrinsicLockCounterUnitTest { @Test public void whenCalledIncrementCounter_thenCorrect() throws Exception { diff --git a/core-java-modules/core-java-concurrency-basic/src/test/com/baeldung/concurrent/threadsafety/tests/MathUtilsTest.java b/core-java-modules/core-java-concurrency-basic/src/test/java/com/baeldung/concurrent/threadsafety/MathUtilsUnitTest.java similarity index 55% rename from core-java-modules/core-java-concurrency-basic/src/test/com/baeldung/concurrent/threadsafety/tests/MathUtilsTest.java rename to core-java-modules/core-java-concurrency-basic/src/test/java/com/baeldung/concurrent/threadsafety/MathUtilsUnitTest.java index 2708152906..018d4164f0 100644 --- a/core-java-modules/core-java-concurrency-basic/src/test/com/baeldung/concurrent/threadsafety/tests/MathUtilsTest.java +++ b/core-java-modules/core-java-concurrency-basic/src/test/java/com/baeldung/concurrent/threadsafety/MathUtilsUnitTest.java @@ -1,13 +1,16 @@ -package com.baeldung.concurrent.threadsafety.tests; +package com.baeldung.concurrent.threadsafety; import com.baeldung.concurrent.threadsafety.mathutils.MathUtils; import org.junit.Test; + +import java.math.BigInteger; + import static org.assertj.core.api.Assertions.assertThat; -public class MathUtilsTest { +public class MathUtilsUnitTest { @Test public void whenCalledFactorialMethod_thenCorrect() { - assertThat(MathUtils.factorial(2)).isEqualTo(2); + assertThat(MathUtils.factorial(2)).isEqualTo(new BigInteger("2")); } } diff --git a/core-java-modules/core-java-concurrency-basic/src/test/com/baeldung/concurrent/threadsafety/tests/MessageServiceTest.java b/core-java-modules/core-java-concurrency-basic/src/test/java/com/baeldung/concurrent/threadsafety/MessageServiceUnitTest.java similarity index 91% rename from core-java-modules/core-java-concurrency-basic/src/test/com/baeldung/concurrent/threadsafety/tests/MessageServiceTest.java rename to core-java-modules/core-java-concurrency-basic/src/test/java/com/baeldung/concurrent/threadsafety/MessageServiceUnitTest.java index e62206c09a..4df695a537 100644 --- a/core-java-modules/core-java-concurrency-basic/src/test/com/baeldung/concurrent/threadsafety/tests/MessageServiceTest.java +++ b/core-java-modules/core-java-concurrency-basic/src/test/java/com/baeldung/concurrent/threadsafety/MessageServiceUnitTest.java @@ -1,14 +1,16 @@ -package com.baeldung.concurrent.threadsafety.tests; +package com.baeldung.concurrent.threadsafety; -import org.junit.Test; -import static org.assertj.core.api.Assertions.assertThat; import com.baeldung.concurrent.threadsafety.callables.MessageServiceCallable; import com.baeldung.concurrent.threadsafety.services.MessageService; +import org.junit.Test; + import java.util.concurrent.ExecutorService; import java.util.concurrent.Executors; import java.util.concurrent.Future; -public class MessageServiceTest { +import static org.assertj.core.api.Assertions.assertThat; + +public class MessageServiceUnitTest { @Test public void whenCalledgetMessage_thenCorrect() throws Exception { diff --git a/core-java-modules/core-java-concurrency-basic/src/test/com/baeldung/concurrent/threadsafety/tests/ReentrantLockCounterTest.java b/core-java-modules/core-java-concurrency-basic/src/test/java/com/baeldung/concurrent/threadsafety/ReentrantLockCounterUnitTest.java similarity index 91% rename from core-java-modules/core-java-concurrency-basic/src/test/com/baeldung/concurrent/threadsafety/tests/ReentrantLockCounterTest.java rename to core-java-modules/core-java-concurrency-basic/src/test/java/com/baeldung/concurrent/threadsafety/ReentrantLockCounterUnitTest.java index 20fa2c74da..330d2d4c86 100644 --- a/core-java-modules/core-java-concurrency-basic/src/test/com/baeldung/concurrent/threadsafety/tests/ReentrantLockCounterTest.java +++ b/core-java-modules/core-java-concurrency-basic/src/test/java/com/baeldung/concurrent/threadsafety/ReentrantLockCounterUnitTest.java @@ -1,14 +1,16 @@ -package com.baeldung.concurrent.threadsafety.tests; +package com.baeldung.concurrent.threadsafety; import com.baeldung.concurrent.threadsafety.callables.ReentrantLockCounterCallable; import com.baeldung.concurrent.threadsafety.services.ReentrantLockCounter; +import org.junit.Test; + import java.util.concurrent.ExecutorService; import java.util.concurrent.Executors; import java.util.concurrent.Future; -import static org.assertj.core.api.Assertions.assertThat; -import org.junit.Test; -public class ReentrantLockCounterTest { +import static org.assertj.core.api.Assertions.assertThat; + +public class ReentrantLockCounterUnitTest { @Test public void whenCalledIncrementCounter_thenCorrect() throws Exception { diff --git a/core-java-modules/core-java-concurrency-basic/src/test/com/baeldung/concurrent/threadsafety/tests/ReentrantReadWriteLockCounterTest.java b/core-java-modules/core-java-concurrency-basic/src/test/java/com/baeldung/concurrent/threadsafety/ReentrantReadWriteLockCounterUnitTest.java similarity index 90% rename from core-java-modules/core-java-concurrency-basic/src/test/com/baeldung/concurrent/threadsafety/tests/ReentrantReadWriteLockCounterTest.java rename to core-java-modules/core-java-concurrency-basic/src/test/java/com/baeldung/concurrent/threadsafety/ReentrantReadWriteLockCounterUnitTest.java index 6113473cac..71fad2c87f 100644 --- a/core-java-modules/core-java-concurrency-basic/src/test/com/baeldung/concurrent/threadsafety/tests/ReentrantReadWriteLockCounterTest.java +++ b/core-java-modules/core-java-concurrency-basic/src/test/java/com/baeldung/concurrent/threadsafety/ReentrantReadWriteLockCounterUnitTest.java @@ -1,14 +1,16 @@ -package com.baeldung.concurrent.threadsafety.tests; +package com.baeldung.concurrent.threadsafety; import com.baeldung.concurrent.threadsafety.callables.ReentranReadWriteLockCounterCallable; import com.baeldung.concurrent.threadsafety.services.ReentrantReadWriteLockCounter; +import org.junit.Test; + import java.util.concurrent.ExecutorService; import java.util.concurrent.Executors; import java.util.concurrent.Future; -import static org.assertj.core.api.Assertions.assertThat; -import org.junit.Test; -public class ReentrantReadWriteLockCounterTest { +import static org.assertj.core.api.Assertions.assertThat; + +public class ReentrantReadWriteLockCounterUnitTest { @Test public void whenCalledIncrementCounter_thenCorrect() throws Exception { @@ -16,9 +18,9 @@ public class ReentrantReadWriteLockCounterTest { ReentrantReadWriteLockCounter counter = new ReentrantReadWriteLockCounter(); Future future1 = (Future) executorService.submit(new ReentranReadWriteLockCounterCallable(counter)); Future future2 = (Future) executorService.submit(new ReentranReadWriteLockCounterCallable(counter)); - - assertThat(future1.get()).isEqualTo(1); + assertThat(future2.get()).isEqualTo(2); + assertThat(future1.get()).isEqualTo(1); } } diff --git a/pom.xml b/pom.xml index d44bae0453..6972736288 100644 --- a/pom.xml +++ b/pom.xml @@ -407,6 +407,7 @@ core-java-modules/core-java-collections-array-list core-java-modules/core-java-collections-set core-java-modules/core-java-concurrency-basic + core-java-modules/core-java-concurrency-basic-2 core-java-modules/core-java-concurrency-collections core-java-modules/core-java-io core-java-modules/core-java-io-files @@ -1146,6 +1147,7 @@ core-java-modules/core-java-collections-array-list core-java-modules/core-java-collections-set core-java-modules/core-java-concurrency-basic + core-java-modules/core-java-concurrency-basic-2 core-java-modules/core-java-concurrency-collections core-java-modules/core-java-io core-java-modules/core-java-io-files From 7da66ebd84bc7575765c3d33b92349a66b9b7200 Mon Sep 17 00:00:00 2001 From: Dhawal Kapil Date: Mon, 23 Sep 2019 19:45:10 +0530 Subject: [PATCH 14/29] BAEL-16977 Week 38 | go through the integration test results and see what NEW failing tests we have (#7837) - Minor fixes for integration tests --- spring-jooq/src/test/resources/application.properties | 2 ++ .../baeldung/example/EmployeeDAOIntegrationTest.java | 10 +++++++--- .../com/baeldung/tags/EmployeeDAOIntegrationTest.java | 10 +++++++--- 3 files changed, 16 insertions(+), 6 deletions(-) create mode 100644 spring-jooq/src/test/resources/application.properties diff --git a/spring-jooq/src/test/resources/application.properties b/spring-jooq/src/test/resources/application.properties new file mode 100644 index 0000000000..dc5d81acfb --- /dev/null +++ b/spring-jooq/src/test/resources/application.properties @@ -0,0 +1,2 @@ +spring.datasource.url=jdbc:h2:tcp:~/jooq;DB_CLOSE_ON_EXIT=FALSE;AUTO_SERVER=TRUE +spring.jpa.hibernate.ddl-auto=update diff --git a/testing-modules/junit-5-basics/src/test/java/com/baeldung/example/EmployeeDAOIntegrationTest.java b/testing-modules/junit-5-basics/src/test/java/com/baeldung/example/EmployeeDAOIntegrationTest.java index d3b6a52726..2595f2b13c 100644 --- a/testing-modules/junit-5-basics/src/test/java/com/baeldung/example/EmployeeDAOIntegrationTest.java +++ b/testing-modules/junit-5-basics/src/test/java/com/baeldung/example/EmployeeDAOIntegrationTest.java @@ -1,18 +1,22 @@ package com.baeldung.example; -import com.baeldung.junit.tags.example.Employee; -import com.baeldung.junit.tags.example.EmployeeDAO; -import com.baeldung.junit.tags.example.SpringJdbcConfig; import org.junit.Assert; import org.junit.Test; import org.junit.runner.RunWith; import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.test.annotation.DirtiesContext; +import org.springframework.test.annotation.DirtiesContext.ClassMode; import org.springframework.test.context.ContextConfiguration; import org.springframework.test.context.junit4.SpringJUnit4ClassRunner; import org.springframework.test.context.support.AnnotationConfigContextLoader; +import com.baeldung.junit.tags.example.Employee; +import com.baeldung.junit.tags.example.EmployeeDAO; +import com.baeldung.junit.tags.example.SpringJdbcConfig; + @RunWith(SpringJUnit4ClassRunner.class) @ContextConfiguration(classes = { SpringJdbcConfig.class }, loader = AnnotationConfigContextLoader.class) +@DirtiesContext(classMode = ClassMode.BEFORE_EACH_TEST_METHOD) public class EmployeeDAOIntegrationTest { @Autowired diff --git a/testing-modules/junit-5-basics/src/test/java/com/baeldung/tags/EmployeeDAOIntegrationTest.java b/testing-modules/junit-5-basics/src/test/java/com/baeldung/tags/EmployeeDAOIntegrationTest.java index bcd76cb4c2..7f0720b96d 100644 --- a/testing-modules/junit-5-basics/src/test/java/com/baeldung/tags/EmployeeDAOIntegrationTest.java +++ b/testing-modules/junit-5-basics/src/test/java/com/baeldung/tags/EmployeeDAOIntegrationTest.java @@ -1,8 +1,5 @@ package com.baeldung.tags; -import com.baeldung.junit.tags.example.Employee; -import com.baeldung.junit.tags.example.EmployeeDAO; -import com.baeldung.junit.tags.example.SpringJdbcConfig; import org.junit.jupiter.api.Assertions; import org.junit.jupiter.api.BeforeEach; import org.junit.jupiter.api.Tag; @@ -13,12 +10,19 @@ import org.mockito.Mockito; import org.mockito.MockitoAnnotations; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.jdbc.core.JdbcTemplate; +import org.springframework.test.annotation.DirtiesContext; +import org.springframework.test.annotation.DirtiesContext.ClassMode; import org.springframework.test.context.ContextConfiguration; import org.springframework.test.context.junit.jupiter.SpringExtension; import org.springframework.test.context.support.AnnotationConfigContextLoader; +import com.baeldung.junit.tags.example.Employee; +import com.baeldung.junit.tags.example.EmployeeDAO; +import com.baeldung.junit.tags.example.SpringJdbcConfig; + @ExtendWith(SpringExtension.class) @ContextConfiguration(classes = { SpringJdbcConfig.class }, loader = AnnotationConfigContextLoader.class) +@DirtiesContext(classMode = ClassMode.BEFORE_EACH_TEST_METHOD) public class EmployeeDAOIntegrationTest { @Autowired From 933b41c8b5162ee1aad719d710e24d6b8394420c Mon Sep 17 00:00:00 2001 From: Amy DeGregorio Date: Mon, 23 Sep 2019 15:41:37 -0400 Subject: [PATCH 15/29] Bael 3329 - Updates to Spring Boot Admin (#7856) * BAEL-3222 Example Code and update to spring-boot-admin examples * BAEL-3329 Fix integration tests * BAEL-3329 Fix integration tests --- ...AdminClientApplicationIntegrationTest.java | 14 +++++----- .../spring-boot-admin-server/pom.xml | 10 ++++--- .../configs/NotifierConfiguration.java | 26 ++++++++++++------- .../configs/WebSecurityConfig.java | 2 ++ .../src/main/resources/application.properties | 14 +++++----- .../NotifierConfigurationIntegrationTest.java | 16 ++++++------ .../WebSecurityConfigIntegrationTest.java | 9 ++++--- 7 files changed, 52 insertions(+), 39 deletions(-) diff --git a/spring-boot-admin/spring-boot-admin-client/src/test/java/com/baeldung/springbootadminclient/SpringBootAdminClientApplicationIntegrationTest.java b/spring-boot-admin/spring-boot-admin-client/src/test/java/com/baeldung/springbootadminclient/SpringBootAdminClientApplicationIntegrationTest.java index 0201deabca..f9e969c06a 100644 --- a/spring-boot-admin/spring-boot-admin-client/src/test/java/com/baeldung/springbootadminclient/SpringBootAdminClientApplicationIntegrationTest.java +++ b/spring-boot-admin/spring-boot-admin-client/src/test/java/com/baeldung/springbootadminclient/SpringBootAdminClientApplicationIntegrationTest.java @@ -15,7 +15,7 @@ import static org.junit.Assert.assertEquals; import static org.springframework.boot.test.context.SpringBootTest.WebEnvironment.RANDOM_PORT; import static org.springframework.security.test.web.servlet.request.SecurityMockMvcRequestPostProcessors.httpBasic; import static org.springframework.test.web.servlet.request.MockMvcRequestBuilders.get; -import static org.springframework.test.web.servlet.result.MockMvcResultMatchers.status; +import static org.springframework.security.test.web.servlet.response.SecurityMockMvcResultMatchers.unauthenticated; @RunWith(SpringRunner.class) @SpringBootTest(webEnvironment = RANDOM_PORT) @@ -36,20 +36,20 @@ public class SpringBootAdminClientApplicationIntegrationTest { @Test public void whenEnvironmentAvailable_ThenAdminServerPropertiesExist() { - assertEquals(environment.getProperty("spring.boot.admin.url"), "http://localhost:8080"); - assertEquals(environment.getProperty("spring.boot.admin.username"), "admin"); - assertEquals(environment.getProperty("spring.boot.admin.password"), "admin"); + assertEquals(environment.getProperty("spring.boot.admin.client.url"), "http://localhost:8080"); + assertEquals(environment.getProperty("spring.boot.admin.client.username"), "admin"); + assertEquals(environment.getProperty("spring.boot.admin.client.password"), "admin"); } @Test public void whenHttpBasicAttempted_ThenSuccess() throws Exception { - mockMvc.perform(get("/env").with(httpBasic("client", "client"))); + mockMvc.perform(get("/actuator/env").with(httpBasic("client", "client"))); } @Test public void whenInvalidHttpBasicAttempted_ThenUnauthorized() throws Exception { mockMvc - .perform(get("/env").with(httpBasic("client", "invalid"))) - .andExpect(status().isUnauthorized()); + .perform(get("/actuator/env").with(httpBasic("client", "invalid"))) + .andExpect(unauthenticated()); } } diff --git a/spring-boot-admin/spring-boot-admin-server/pom.xml b/spring-boot-admin/spring-boot-admin-server/pom.xml index 142cf420f4..5ef99976c8 100644 --- a/spring-boot-admin/spring-boot-admin-server/pom.xml +++ b/spring-boot-admin/spring-boot-admin-server/pom.xml @@ -51,10 +51,12 @@ ${spring-boot-admin-starter-client.version} - - - - + + + org.springframework.boot + spring-boot-starter-mail + + org.springframework.boot spring-boot-starter-test diff --git a/spring-boot-admin/spring-boot-admin-server/src/main/java/com/baeldung/springbootadminserver/configs/NotifierConfiguration.java b/spring-boot-admin/spring-boot-admin-server/src/main/java/com/baeldung/springbootadminserver/configs/NotifierConfiguration.java index d43f4b430a..f9abee11b7 100644 --- a/spring-boot-admin/spring-boot-admin-server/src/main/java/com/baeldung/springbootadminserver/configs/NotifierConfiguration.java +++ b/spring-boot-admin/spring-boot-admin-server/src/main/java/com/baeldung/springbootadminserver/configs/NotifierConfiguration.java @@ -1,32 +1,40 @@ package com.baeldung.springbootadminserver.configs; import java.time.Duration; +import java.util.Collections; +import java.util.List; -import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.beans.factory.ObjectProvider; import org.springframework.context.annotation.Bean; import org.springframework.context.annotation.Configuration; import org.springframework.context.annotation.Primary; import de.codecentric.boot.admin.server.domain.entities.InstanceRepository; +import de.codecentric.boot.admin.server.notify.CompositeNotifier; import de.codecentric.boot.admin.server.notify.LoggingNotifier; +import de.codecentric.boot.admin.server.notify.Notifier; import de.codecentric.boot.admin.server.notify.RemindingNotifier; import de.codecentric.boot.admin.server.notify.filter.FilteringNotifier; @Configuration public class NotifierConfiguration { - @Autowired - private InstanceRepository repository; + private final InstanceRepository repository; + private final ObjectProvider> otherNotifiers; - // @Autowired private Notifier notifier; - - @Bean - public LoggingNotifier notifier() { - return new LoggingNotifier(repository); + public NotifierConfiguration(InstanceRepository repository, ObjectProvider> otherNotifiers) { + this.repository = repository; + this.otherNotifiers = otherNotifiers; } @Bean public FilteringNotifier filteringNotifier() { - return new FilteringNotifier(notifier(), repository); + CompositeNotifier delegate = new CompositeNotifier(this.otherNotifiers.getIfAvailable(Collections::emptyList)); + return new FilteringNotifier(delegate, this.repository); + } + + @Bean + public LoggingNotifier notifier() { + return new LoggingNotifier(repository); } @Primary diff --git a/spring-boot-admin/spring-boot-admin-server/src/main/java/com/baeldung/springbootadminserver/configs/WebSecurityConfig.java b/spring-boot-admin/spring-boot-admin-server/src/main/java/com/baeldung/springbootadminserver/configs/WebSecurityConfig.java index ee37d2f0b3..1943c61ff4 100644 --- a/spring-boot-admin/spring-boot-admin-server/src/main/java/com/baeldung/springbootadminserver/configs/WebSecurityConfig.java +++ b/spring-boot-admin/spring-boot-admin-server/src/main/java/com/baeldung/springbootadminserver/configs/WebSecurityConfig.java @@ -5,6 +5,7 @@ import java.util.UUID; import org.springframework.context.annotation.Configuration; import org.springframework.http.HttpMethod; import org.springframework.security.config.annotation.web.builders.HttpSecurity; +import org.springframework.security.config.annotation.web.configuration.EnableWebSecurity; import org.springframework.security.config.annotation.web.configuration.WebSecurityConfigurerAdapter; import org.springframework.security.web.authentication.SavedRequestAwareAuthenticationSuccessHandler; import org.springframework.security.web.csrf.CookieCsrfTokenRepository; @@ -13,6 +14,7 @@ import org.springframework.security.web.util.matcher.AntPathRequestMatcher; import de.codecentric.boot.admin.server.config.AdminServerProperties; @Configuration +@EnableWebSecurity public class WebSecurityConfig extends WebSecurityConfigurerAdapter { private final AdminServerProperties adminServer; diff --git a/spring-boot-admin/spring-boot-admin-server/src/main/resources/application.properties b/spring-boot-admin/spring-boot-admin-server/src/main/resources/application.properties index ba7a7de2a0..273c11468c 100644 --- a/spring-boot-admin/spring-boot-admin-server/src/main/resources/application.properties +++ b/spring-boot-admin/spring-boot-admin-server/src/main/resources/application.properties @@ -16,14 +16,14 @@ management.endpoints.web.exposure.include=* management.endpoint.health.show-details=always #mail notifications -#spring.mail.host=smtp.gmail.com -#spring.mail.username=test@gmail.com -#spring.mail.password=password -#spring.mail.port=587 -#spring.mail.properties.mail.smtp.auth=true -#spring.mail.properties.mail.smtp.starttls.enable=true +spring.mail.host= +spring.mail.username= +spring.mail.password= +spring.mail.port= +spring.mail.properties.mail.smtp.auth= +spring.mail.properties.mail.smtp.starttls.enable= -#spring.boot.admin.notify.mail.to=test@gmail.com +spring.boot.admin.notify.mail.to= #hipchat notifications #spring.boot.admin.notify.hipchat.auth-token= diff --git a/spring-boot-admin/spring-boot-admin-server/src/test/java/com/baeldung/springbootadminserver/NotifierConfigurationIntegrationTest.java b/spring-boot-admin/spring-boot-admin-server/src/test/java/com/baeldung/springbootadminserver/NotifierConfigurationIntegrationTest.java index fc8acc4e4d..eca83b6f6c 100644 --- a/spring-boot-admin/spring-boot-admin-server/src/test/java/com/baeldung/springbootadminserver/NotifierConfigurationIntegrationTest.java +++ b/spring-boot-admin/spring-boot-admin-server/src/test/java/com/baeldung/springbootadminserver/NotifierConfigurationIntegrationTest.java @@ -1,10 +1,7 @@ package com.baeldung.springbootadminserver; -import com.baeldung.springbootadminserver.configs.NotifierConfiguration; - -import de.codecentric.boot.admin.server.notify.Notifier; -import de.codecentric.boot.admin.server.notify.RemindingNotifier; -import de.codecentric.boot.admin.server.notify.filter.FilteringNotifier; +import static org.junit.Assert.assertNotEquals; +import static org.springframework.boot.test.context.SpringBootTest.WebEnvironment.NONE; import org.junit.Test; import org.junit.runner.RunWith; @@ -13,11 +10,14 @@ import org.springframework.boot.test.context.SpringBootTest; import org.springframework.context.ApplicationContext; import org.springframework.test.context.junit4.SpringRunner; -import static org.junit.Assert.assertNotEquals; -import static org.springframework.boot.test.context.SpringBootTest.WebEnvironment.NONE; +import com.baeldung.springbootadminserver.configs.NotifierConfiguration; + +import de.codecentric.boot.admin.server.notify.Notifier; +import de.codecentric.boot.admin.server.notify.RemindingNotifier; +import de.codecentric.boot.admin.server.notify.filter.FilteringNotifier; @RunWith(SpringRunner.class) -@SpringBootTest(classes = { NotifierConfiguration.class }, webEnvironment = NONE) +@SpringBootTest(classes = { NotifierConfiguration.class, SpringBootAdminServerApplication.class }, webEnvironment = NONE) public class NotifierConfigurationIntegrationTest { @Autowired private ApplicationContext applicationContext; diff --git a/spring-boot-admin/spring-boot-admin-server/src/test/java/com/baeldung/springbootadminserver/WebSecurityConfigIntegrationTest.java b/spring-boot-admin/spring-boot-admin-server/src/test/java/com/baeldung/springbootadminserver/WebSecurityConfigIntegrationTest.java index 0c0695e6c2..e5018f5f5f 100644 --- a/spring-boot-admin/spring-boot-admin-server/src/test/java/com/baeldung/springbootadminserver/WebSecurityConfigIntegrationTest.java +++ b/spring-boot-admin/spring-boot-admin-server/src/test/java/com/baeldung/springbootadminserver/WebSecurityConfigIntegrationTest.java @@ -14,6 +14,7 @@ import static org.springframework.security.test.web.servlet.request.SecurityMock import static org.springframework.security.test.web.servlet.request.SecurityMockMvcRequestPostProcessors.httpBasic; import static org.springframework.test.web.servlet.request.MockMvcRequestBuilders.get; import static org.springframework.test.web.servlet.result.MockMvcResultMatchers.status; +import static org.springframework.security.test.web.servlet.response.SecurityMockMvcResultMatchers.unauthenticated; @RunWith(SpringRunner.class) @SpringBootTest(webEnvironment = SpringBootTest.WebEnvironment.RANDOM_PORT) @@ -51,21 +52,21 @@ public class WebSecurityConfigIntegrationTest { .password("admin")); mockMvc - .perform(get("/api/applications/")) + .perform(get("/applications/")) .andExpect(status().is2xxSuccessful()); } @Test public void whenHttpBasicAttempted_ThenSuccess() throws Exception { - mockMvc.perform(get("/env").with(httpBasic("admin", "admin"))); + mockMvc.perform(get("/actuator/env").with(httpBasic("admin", "admin"))); } @Test public void whenInvalidHttpBasicAttempted_ThenUnauthorized() throws Exception { mockMvc - .perform(get("/env").with(httpBasic("admin", "invalid"))) - .andExpect(status().isUnauthorized()); + .perform(get("/actuator/env").with(httpBasic("admin", "invalid"))) + .andExpect(unauthenticated()); } } From ee9f90ab2f07c2f5094b309f9aaa54f35f17b6f0 Mon Sep 17 00:00:00 2001 From: Sam Millington Date: Tue, 24 Sep 2019 14:12:44 +0100 Subject: [PATCH 16/29] [BAEL-17477] Add links between reactive & reactive-2 (#7839) --- spring-5-reactive-2/README.md | 1 + spring-5-reactive/README.md | 2 +- 2 files changed, 2 insertions(+), 1 deletion(-) diff --git a/spring-5-reactive-2/README.md b/spring-5-reactive-2/README.md index a8204932f7..1d21425fb8 100644 --- a/spring-5-reactive-2/README.md +++ b/spring-5-reactive-2/README.md @@ -3,3 +3,4 @@ This module contains articles about reactive Spring 5 - [Spring WebClient vs. RestTemplate](https://www.baeldung.com/spring-webclient-resttemplate) +- More articles: [[<-- prev]](/spring-5-reactive) diff --git a/spring-5-reactive/README.md b/spring-5-reactive/README.md index b782f817ad..89ff4fea9f 100644 --- a/spring-5-reactive/README.md +++ b/spring-5-reactive/README.md @@ -22,4 +22,4 @@ The "REST With Spring" Classes: http://bit.ly/restwithspring - [Testing Reactive Streams Using StepVerifier and TestPublisher](https://www.baeldung.com/reactive-streams-step-verifier-test-publisher) - [Debugging Reactive Streams in Spring 5](https://www.baeldung.com/spring-debugging-reactive-streams) - [Static Content in Spring WebFlux](https://www.baeldung.com/spring-webflux-static-content) -- [more...](/spring-5-reactive-2) +- More articles: [[next -->]](/spring-5-reactive-2) \ No newline at end of file From f4b4a9eea5a508d9b31e62f21b11a6d32aa8e2e8 Mon Sep 17 00:00:00 2001 From: Catalin Burcea Date: Tue, 24 Sep 2019 16:18:08 +0300 Subject: [PATCH 17/29] Split or move java-collections-maps module (#7802) --- java-collections-maps-2/README.md | 8 ++++++ java-collections-maps-2/pom.xml | 19 ++++++++++++++ .../baeldung/map}/convert/MapToString.java | 2 +- .../baeldung/map}/convert/StringToMap.java | 2 +- .../map/{ => copyhashmap}/CopyHashMap.java | 6 ++--- .../map/initialize/MapInitializer.java | 2 +- .../baeldung/map/iteration/MapIteration.java | 0 .../java/com/baeldung/map/mapmax}/MapMax.java | 8 ++---- .../com/baeldung/map/mergemaps}/Employee.java | 2 +- .../baeldung/map/mergemaps}/MergeMaps.java | 4 +-- .../map/{ => primitives}/PrimitiveMaps.java | 2 +- .../com/baeldung/map}/sort/SortHashMap.java | 4 +-- .../map}/convert/MapToStringUnitTest.java | 2 +- .../map}/convert/StringToMapUnitTest.java | 2 +- .../CopyHashMapUnitTest.java | 9 +++---- .../map/{ => copyhashmap}/Employee.java | 2 +- .../initialize/MapInitializerUnitTest.java | 6 ++--- .../baeldung/map/mapmax}/MapMaxUnitTest.java | 9 +++---- .../TreeMapVsHashMapUnitTest.java | 14 +++++------ .../map}/weakhashmap/WeakHashMapUnitTest.java | 2 +- java-collections-maps/README.md | 18 ++++--------- java-collections-maps/pom.xml | 6 ----- .../com/baeldung/{java => }/map/MapUtil.java | 4 +-- .../com/baeldung/{java => }/map/MyKey.java | 2 +- .../{java => }/map/MyLinkedHashMap.java | 2 +- .../{java => }/map/ImmutableMapUnitTest.java | 11 +++----- .../{java => }/map/KeyCheckUnitTest.java | 8 +++--- .../map/MapMultipleValuesUnitTest.java | 21 ++++++---------- .../baeldung/{java => }/map/MapUnitTest.java | 2 +- .../{java => }/map/MapUtilUnitTest.java | 13 +++++----- .../map/MultiValuedMapUnitTest.java | 24 +++++++++--------- .../compare/HashMapComparisonUnitTest.java | 25 ++++++++----------- 32 files changed, 116 insertions(+), 125 deletions(-) rename {java-collections-maps/src/main/java/com/baeldung => java-collections-maps-2/src/main/java/com/baeldung/map}/convert/MapToString.java (96%) rename {java-collections-maps/src/main/java/com/baeldung => java-collections-maps-2/src/main/java/com/baeldung/map}/convert/StringToMap.java (94%) rename java-collections-maps-2/src/main/java/com/baeldung/map/{ => copyhashmap}/CopyHashMap.java (98%) rename {java-collections-maps/src/main/java/com/baeldung/java => java-collections-maps-2/src/main/java/com/baeldung}/map/initialize/MapInitializer.java (98%) rename {java-collections-maps => java-collections-maps-2}/src/main/java/com/baeldung/map/iteration/MapIteration.java (100%) rename {java-collections-maps/src/main/java/com/baeldung/map/util => java-collections-maps-2/src/main/java/com/baeldung/map/mapmax}/MapMax.java (94%) rename {java-collections-maps/src/main/java/com/baeldung/sort => java-collections-maps-2/src/main/java/com/baeldung/map/mergemaps}/Employee.java (97%) rename {java-collections-maps/src/main/java/com/baeldung/map/java_8 => java-collections-maps-2/src/main/java/com/baeldung/map/mergemaps}/MergeMaps.java (97%) rename java-collections-maps-2/src/main/java/com/baeldung/map/{ => primitives}/PrimitiveMaps.java (98%) rename {java-collections-maps/src/main/java/com/baeldung => java-collections-maps-2/src/main/java/com/baeldung/map}/sort/SortHashMap.java (97%) rename {java-collections-maps/src/test/java/com/baeldung => java-collections-maps-2/src/test/java/com/baeldung/map}/convert/MapToStringUnitTest.java (97%) rename {java-collections-maps/src/test/java/com/baeldung => java-collections-maps-2/src/test/java/com/baeldung/map}/convert/StringToMapUnitTest.java (95%) rename java-collections-maps-2/src/test/java/com/baeldung/map/{ => copyhashmap}/CopyHashMapUnitTest.java (98%) rename java-collections-maps-2/src/test/java/com/baeldung/map/{ => copyhashmap}/Employee.java (91%) rename {java-collections-maps/src/test/java/com/baeldung/java => java-collections-maps-2/src/test/java/com/baeldung}/map/initialize/MapInitializerUnitTest.java (94%) rename {java-collections-maps/src/test/java/com/baeldung/map/util => java-collections-maps-2/src/test/java/com/baeldung/map/mapmax}/MapMaxUnitTest.java (97%) rename java-collections-maps/src/test/java/com/baeldung/collection/WhenComparingTreeMapVsHashMap.java => java-collections-maps-2/src/test/java/com/baeldung/map/treemaphashmap/TreeMapVsHashMapUnitTest.java (91%) rename {java-collections-maps/src/test/java/com/baeldung => java-collections-maps-2/src/test/java/com/baeldung/map}/weakhashmap/WeakHashMapUnitTest.java (98%) rename java-collections-maps/src/main/java/com/baeldung/{java => }/map/MapUtil.java (96%) rename java-collections-maps/src/main/java/com/baeldung/{java => }/map/MyKey.java (97%) rename java-collections-maps/src/main/java/com/baeldung/{java => }/map/MyLinkedHashMap.java (94%) rename java-collections-maps/src/test/java/com/baeldung/{java => }/map/ImmutableMapUnitTest.java (92%) rename java-collections-maps/src/test/java/com/baeldung/{java => }/map/KeyCheckUnitTest.java (78%) rename java-collections-maps/src/test/java/com/baeldung/{java => }/map/MapMultipleValuesUnitTest.java (96%) rename java-collections-maps/src/test/java/com/baeldung/{java => }/map/MapUnitTest.java (99%) rename java-collections-maps/src/test/java/com/baeldung/{java => }/map/MapUtilUnitTest.java (99%) rename java-collections-maps/src/test/java/com/baeldung/{java => }/map/MultiValuedMapUnitTest.java (99%) rename java-collections-maps/src/test/java/com/baeldung/{java => }/map/compare/HashMapComparisonUnitTest.java (97%) diff --git a/java-collections-maps-2/README.md b/java-collections-maps-2/README.md index ff84e93ce4..7aef942ff0 100644 --- a/java-collections-maps-2/README.md +++ b/java-collections-maps-2/README.md @@ -1,3 +1,11 @@ ## Relevant Articles: - [Map of Primitives in Java](https://www.baeldung.com/java-map-primitives) - [Copying a HashMap in Java](https://www.baeldung.com/java-copy-hashmap) +- [Guide to WeakHashMap in Java](https://www.baeldung.com/java-weakhashmap) +- [Map to String Conversion in Java](https://www.baeldung.com/java-map-to-string-conversion) +- [Iterate over a Map in Java](https://www.baeldung.com/java-iterate-map) +- [Merging Two Maps with Java 8](https://www.baeldung.com/java-merge-maps) +- [Sort a HashMap in Java](https://www.baeldung.com/java-hashmap-sort) +- [Finding the Highest Value in a Java Map](https://www.baeldung.com/java-find-map-max) +- [Initialize a HashMap in Java](https://www.baeldung.com/java-initialize-hashmap) +- [Java TreeMap vs HashMap](https://www.baeldung.com/java-treemap-vs-hashmap) diff --git a/java-collections-maps-2/pom.xml b/java-collections-maps-2/pom.xml index e242a8655e..a246559f61 100644 --- a/java-collections-maps-2/pom.xml +++ b/java-collections-maps-2/pom.xml @@ -41,6 +41,22 @@ commons-lang3 ${commons-lang3.version} + + org.apache.commons + commons-collections4 + ${commons-collections4.version} + + + one.util + streamex + ${streamex.version} + + + com.jayway.awaitility + awaitility + ${avaitility.version} + test + org.assertj assertj-core @@ -50,6 +66,9 @@ + 0.6.5 + 4.1 + 1.7.0 8.2.0 3.0.2 8.1.0 diff --git a/java-collections-maps/src/main/java/com/baeldung/convert/MapToString.java b/java-collections-maps-2/src/main/java/com/baeldung/map/convert/MapToString.java similarity index 96% rename from java-collections-maps/src/main/java/com/baeldung/convert/MapToString.java rename to java-collections-maps-2/src/main/java/com/baeldung/map/convert/MapToString.java index aca0d05ef1..d13be924ff 100644 --- a/java-collections-maps/src/main/java/com/baeldung/convert/MapToString.java +++ b/java-collections-maps-2/src/main/java/com/baeldung/map/convert/MapToString.java @@ -1,4 +1,4 @@ -package com.baeldung.convert; +package com.baeldung.map.convert; import com.google.common.base.Joiner; import org.apache.commons.lang3.StringUtils; diff --git a/java-collections-maps/src/main/java/com/baeldung/convert/StringToMap.java b/java-collections-maps-2/src/main/java/com/baeldung/map/convert/StringToMap.java similarity index 94% rename from java-collections-maps/src/main/java/com/baeldung/convert/StringToMap.java rename to java-collections-maps-2/src/main/java/com/baeldung/map/convert/StringToMap.java index caabca4a09..416ba4dd9a 100644 --- a/java-collections-maps/src/main/java/com/baeldung/convert/StringToMap.java +++ b/java-collections-maps-2/src/main/java/com/baeldung/map/convert/StringToMap.java @@ -1,4 +1,4 @@ -package com.baeldung.convert; +package com.baeldung.map.convert; import com.google.common.base.Splitter; diff --git a/java-collections-maps-2/src/main/java/com/baeldung/map/CopyHashMap.java b/java-collections-maps-2/src/main/java/com/baeldung/map/copyhashmap/CopyHashMap.java similarity index 98% rename from java-collections-maps-2/src/main/java/com/baeldung/map/CopyHashMap.java rename to java-collections-maps-2/src/main/java/com/baeldung/map/copyhashmap/CopyHashMap.java index 2ebc9413c8..cb18f3aa11 100644 --- a/java-collections-maps-2/src/main/java/com/baeldung/map/CopyHashMap.java +++ b/java-collections-maps-2/src/main/java/com/baeldung/map/copyhashmap/CopyHashMap.java @@ -1,4 +1,6 @@ -package com.baeldung.map; +package com.baeldung.map.copyhashmap; + +import org.apache.commons.lang3.SerializationUtils; import java.util.HashMap; import java.util.Map; @@ -6,8 +8,6 @@ import java.util.Map.Entry; import java.util.Set; import java.util.stream.Collectors; -import org.apache.commons.lang3.SerializationUtils; - public class CopyHashMap { public static HashMap copyUsingConstructor(HashMap originalMap) { diff --git a/java-collections-maps/src/main/java/com/baeldung/java/map/initialize/MapInitializer.java b/java-collections-maps-2/src/main/java/com/baeldung/map/initialize/MapInitializer.java similarity index 98% rename from java-collections-maps/src/main/java/com/baeldung/java/map/initialize/MapInitializer.java rename to java-collections-maps-2/src/main/java/com/baeldung/map/initialize/MapInitializer.java index 4dbaceac62..4d63abcfd0 100644 --- a/java-collections-maps/src/main/java/com/baeldung/java/map/initialize/MapInitializer.java +++ b/java-collections-maps-2/src/main/java/com/baeldung/map/initialize/MapInitializer.java @@ -1,4 +1,4 @@ -package com.baeldung.java.map.initialize; +package com.baeldung.map.initialize; import java.util.AbstractMap; import java.util.Collections; diff --git a/java-collections-maps/src/main/java/com/baeldung/map/iteration/MapIteration.java b/java-collections-maps-2/src/main/java/com/baeldung/map/iteration/MapIteration.java similarity index 100% rename from java-collections-maps/src/main/java/com/baeldung/map/iteration/MapIteration.java rename to java-collections-maps-2/src/main/java/com/baeldung/map/iteration/MapIteration.java diff --git a/java-collections-maps/src/main/java/com/baeldung/map/util/MapMax.java b/java-collections-maps-2/src/main/java/com/baeldung/map/mapmax/MapMax.java similarity index 94% rename from java-collections-maps/src/main/java/com/baeldung/map/util/MapMax.java rename to java-collections-maps-2/src/main/java/com/baeldung/map/mapmax/MapMax.java index 93a98ba6fd..8c33c857ee 100644 --- a/java-collections-maps/src/main/java/com/baeldung/map/util/MapMax.java +++ b/java-collections-maps-2/src/main/java/com/baeldung/map/mapmax/MapMax.java @@ -1,11 +1,7 @@ -package com.baeldung.map.util; +package com.baeldung.map.mapmax; -import java.util.Collections; -import java.util.Comparator; -import java.util.HashMap; -import java.util.Map; +import java.util.*; import java.util.Map.Entry; -import java.util.Optional; public class MapMax { diff --git a/java-collections-maps/src/main/java/com/baeldung/sort/Employee.java b/java-collections-maps-2/src/main/java/com/baeldung/map/mergemaps/Employee.java similarity index 97% rename from java-collections-maps/src/main/java/com/baeldung/sort/Employee.java rename to java-collections-maps-2/src/main/java/com/baeldung/map/mergemaps/Employee.java index b5e56f6141..d7fb0d1a1d 100644 --- a/java-collections-maps/src/main/java/com/baeldung/sort/Employee.java +++ b/java-collections-maps-2/src/main/java/com/baeldung/map/mergemaps/Employee.java @@ -1,4 +1,4 @@ -package com.baeldung.sort; +package com.baeldung.map.mergemaps; public class Employee implements Comparable { diff --git a/java-collections-maps/src/main/java/com/baeldung/map/java_8/MergeMaps.java b/java-collections-maps-2/src/main/java/com/baeldung/map/mergemaps/MergeMaps.java similarity index 97% rename from java-collections-maps/src/main/java/com/baeldung/map/java_8/MergeMaps.java rename to java-collections-maps-2/src/main/java/com/baeldung/map/mergemaps/MergeMaps.java index 052cfb8bad..4f187bad90 100644 --- a/java-collections-maps/src/main/java/com/baeldung/map/java_8/MergeMaps.java +++ b/java-collections-maps-2/src/main/java/com/baeldung/map/mergemaps/MergeMaps.java @@ -1,7 +1,7 @@ -package com.baeldung.map.java_8; +package com.baeldung.map.mergemaps; -import com.baeldung.sort.Employee; import one.util.streamex.EntryStream; + import java.util.HashMap; import java.util.Map; import java.util.stream.Collectors; diff --git a/java-collections-maps-2/src/main/java/com/baeldung/map/PrimitiveMaps.java b/java-collections-maps-2/src/main/java/com/baeldung/map/primitives/PrimitiveMaps.java similarity index 98% rename from java-collections-maps-2/src/main/java/com/baeldung/map/PrimitiveMaps.java rename to java-collections-maps-2/src/main/java/com/baeldung/map/primitives/PrimitiveMaps.java index d835950c68..30bec12ccc 100644 --- a/java-collections-maps-2/src/main/java/com/baeldung/map/PrimitiveMaps.java +++ b/java-collections-maps-2/src/main/java/com/baeldung/map/primitives/PrimitiveMaps.java @@ -1,4 +1,4 @@ -package com.baeldung.map; +package com.baeldung.map.primitives; import cern.colt.map.AbstractIntDoubleMap; import cern.colt.map.OpenIntDoubleHashMap; diff --git a/java-collections-maps/src/main/java/com/baeldung/sort/SortHashMap.java b/java-collections-maps-2/src/main/java/com/baeldung/map/sort/SortHashMap.java similarity index 97% rename from java-collections-maps/src/main/java/com/baeldung/sort/SortHashMap.java rename to java-collections-maps-2/src/main/java/com/baeldung/map/sort/SortHashMap.java index b8a2b32060..14610ffb00 100644 --- a/java-collections-maps/src/main/java/com/baeldung/sort/SortHashMap.java +++ b/java-collections-maps-2/src/main/java/com/baeldung/map/sort/SortHashMap.java @@ -1,8 +1,8 @@ -package com.baeldung.sort; +package com.baeldung.map.sort; +import com.baeldung.map.mergemaps.Employee; import com.google.common.base.Functions; import com.google.common.collect.ImmutableSortedMap; -import com.google.common.collect.Lists; import com.google.common.collect.Ordering; import java.util.*; diff --git a/java-collections-maps/src/test/java/com/baeldung/convert/MapToStringUnitTest.java b/java-collections-maps-2/src/test/java/com/baeldung/map/convert/MapToStringUnitTest.java similarity index 97% rename from java-collections-maps/src/test/java/com/baeldung/convert/MapToStringUnitTest.java rename to java-collections-maps-2/src/test/java/com/baeldung/map/convert/MapToStringUnitTest.java index d9923e74a0..4517dea328 100644 --- a/java-collections-maps/src/test/java/com/baeldung/convert/MapToStringUnitTest.java +++ b/java-collections-maps-2/src/test/java/com/baeldung/map/convert/MapToStringUnitTest.java @@ -1,4 +1,4 @@ -package com.baeldung.convert; +package com.baeldung.map.convert; import org.apache.commons.collections4.MapUtils; import org.junit.Assert; diff --git a/java-collections-maps/src/test/java/com/baeldung/convert/StringToMapUnitTest.java b/java-collections-maps-2/src/test/java/com/baeldung/map/convert/StringToMapUnitTest.java similarity index 95% rename from java-collections-maps/src/test/java/com/baeldung/convert/StringToMapUnitTest.java rename to java-collections-maps-2/src/test/java/com/baeldung/map/convert/StringToMapUnitTest.java index 8fb906efd0..2f80b30871 100644 --- a/java-collections-maps/src/test/java/com/baeldung/convert/StringToMapUnitTest.java +++ b/java-collections-maps-2/src/test/java/com/baeldung/map/convert/StringToMapUnitTest.java @@ -1,4 +1,4 @@ -package com.baeldung.convert; +package com.baeldung.map.convert; import org.junit.Assert; import org.junit.jupiter.api.Test; diff --git a/java-collections-maps-2/src/test/java/com/baeldung/map/CopyHashMapUnitTest.java b/java-collections-maps-2/src/test/java/com/baeldung/map/copyhashmap/CopyHashMapUnitTest.java similarity index 98% rename from java-collections-maps-2/src/test/java/com/baeldung/map/CopyHashMapUnitTest.java rename to java-collections-maps-2/src/test/java/com/baeldung/map/copyhashmap/CopyHashMapUnitTest.java index c400eea153..e2d5e327e1 100644 --- a/java-collections-maps-2/src/test/java/com/baeldung/map/CopyHashMapUnitTest.java +++ b/java-collections-maps-2/src/test/java/com/baeldung/map/copyhashmap/CopyHashMapUnitTest.java @@ -1,13 +1,12 @@ -package com.baeldung.map; +package com.baeldung.map.copyhashmap; -import static org.assertj.core.api.Assertions.assertThat; +import com.google.common.collect.ImmutableMap; +import org.junit.Test; import java.util.HashMap; import java.util.Map; -import org.junit.Test; - -import com.google.common.collect.ImmutableMap; +import static org.assertj.core.api.Assertions.assertThat; public class CopyHashMapUnitTest { diff --git a/java-collections-maps-2/src/test/java/com/baeldung/map/Employee.java b/java-collections-maps-2/src/test/java/com/baeldung/map/copyhashmap/Employee.java similarity index 91% rename from java-collections-maps-2/src/test/java/com/baeldung/map/Employee.java rename to java-collections-maps-2/src/test/java/com/baeldung/map/copyhashmap/Employee.java index 7963fa811c..5db55c26ea 100644 --- a/java-collections-maps-2/src/test/java/com/baeldung/map/Employee.java +++ b/java-collections-maps-2/src/test/java/com/baeldung/map/copyhashmap/Employee.java @@ -1,4 +1,4 @@ -package com.baeldung.map; +package com.baeldung.map.copyhashmap; import java.io.Serializable; diff --git a/java-collections-maps/src/test/java/com/baeldung/java/map/initialize/MapInitializerUnitTest.java b/java-collections-maps-2/src/test/java/com/baeldung/map/initialize/MapInitializerUnitTest.java similarity index 94% rename from java-collections-maps/src/test/java/com/baeldung/java/map/initialize/MapInitializerUnitTest.java rename to java-collections-maps-2/src/test/java/com/baeldung/map/initialize/MapInitializerUnitTest.java index 80a8983d6f..7c6dffe787 100644 --- a/java-collections-maps/src/test/java/com/baeldung/java/map/initialize/MapInitializerUnitTest.java +++ b/java-collections-maps-2/src/test/java/com/baeldung/map/initialize/MapInitializerUnitTest.java @@ -1,10 +1,10 @@ -package com.baeldung.java.map.initialize; +package com.baeldung.map.initialize; -import static org.junit.Assert.assertEquals; +import org.junit.Test; import java.util.Map; -import org.junit.Test; +import static org.junit.Assert.assertEquals; public class MapInitializerUnitTest { diff --git a/java-collections-maps/src/test/java/com/baeldung/map/util/MapMaxUnitTest.java b/java-collections-maps-2/src/test/java/com/baeldung/map/mapmax/MapMaxUnitTest.java similarity index 97% rename from java-collections-maps/src/test/java/com/baeldung/map/util/MapMaxUnitTest.java rename to java-collections-maps-2/src/test/java/com/baeldung/map/mapmax/MapMaxUnitTest.java index 883265cc8b..30b945bfc8 100644 --- a/java-collections-maps/src/test/java/com/baeldung/map/util/MapMaxUnitTest.java +++ b/java-collections-maps-2/src/test/java/com/baeldung/map/mapmax/MapMaxUnitTest.java @@ -1,14 +1,13 @@ -package com.baeldung.map.util; +package com.baeldung.map.mapmax; - -import static org.junit.Assert.assertEquals; +import org.junit.Before; +import org.junit.Test; import java.util.HashMap; import java.util.Map; -import org.junit.Before; -import org.junit.Test; +import static org.junit.Assert.assertEquals; public class MapMaxUnitTest { diff --git a/java-collections-maps/src/test/java/com/baeldung/collection/WhenComparingTreeMapVsHashMap.java b/java-collections-maps-2/src/test/java/com/baeldung/map/treemaphashmap/TreeMapVsHashMapUnitTest.java similarity index 91% rename from java-collections-maps/src/test/java/com/baeldung/collection/WhenComparingTreeMapVsHashMap.java rename to java-collections-maps-2/src/test/java/com/baeldung/map/treemaphashmap/TreeMapVsHashMapUnitTest.java index f2dfc992c2..1057e3b9f0 100644 --- a/java-collections-maps/src/test/java/com/baeldung/collection/WhenComparingTreeMapVsHashMap.java +++ b/java-collections-maps-2/src/test/java/com/baeldung/map/treemaphashmap/TreeMapVsHashMapUnitTest.java @@ -1,16 +1,14 @@ -package com.baeldung.collection; - -import java.util.ConcurrentModificationException; -import java.util.HashMap; -import java.util.Iterator; -import java.util.Map; -import java.util.TreeMap; +package com.baeldung.map.treemaphashmap; import org.hamcrest.Matchers; import org.junit.Assert; import org.junit.Test; -public class WhenComparingTreeMapVsHashMap { +import java.util.HashMap; +import java.util.Map; +import java.util.TreeMap; + +public class TreeMapVsHashMapUnitTest { @Test public void whenInsertObjectsTreeMap_thenNaturalOrder() { diff --git a/java-collections-maps/src/test/java/com/baeldung/weakhashmap/WeakHashMapUnitTest.java b/java-collections-maps-2/src/test/java/com/baeldung/map/weakhashmap/WeakHashMapUnitTest.java similarity index 98% rename from java-collections-maps/src/test/java/com/baeldung/weakhashmap/WeakHashMapUnitTest.java rename to java-collections-maps-2/src/test/java/com/baeldung/map/weakhashmap/WeakHashMapUnitTest.java index d7bcb31867..293f24c378 100644 --- a/java-collections-maps/src/test/java/com/baeldung/weakhashmap/WeakHashMapUnitTest.java +++ b/java-collections-maps-2/src/test/java/com/baeldung/map/weakhashmap/WeakHashMapUnitTest.java @@ -1,4 +1,4 @@ -package com.baeldung.weakhashmap; +package com.baeldung.map.weakhashmap; import org.junit.Test; diff --git a/java-collections-maps/README.md b/java-collections-maps/README.md index 2eeb2c8843..3a6ad1d10c 100644 --- a/java-collections-maps/README.md +++ b/java-collections-maps/README.md @@ -3,21 +3,13 @@ ## Java Collections Cookbooks and Examples ### Relevant Articles: -- [Guide to WeakHashMap in Java](http://www.baeldung.com/java-weakhashmap) -- [Guide to the Guava BiMap](http://www.baeldung.com/guava-bimap) -- [The Java HashMap Under the Hood](http://www.baeldung.com/java-hashmap) -- [A Guide to LinkedHashMap in Java](http://www.baeldung.com/java-linked-hashmap) -- [A Guide to TreeMap in Java](http://www.baeldung.com/java-treemap) -- [Iterate over a Map in Java](http://www.baeldung.com/java-iterate-map) -- [Java TreeMap vs HashMap](http://www.baeldung.com/java-treemap-vs-hashmap) -- [How to Store Duplicate Keys in a Map in Java?](http://www.baeldung.com/java-map-duplicate-keys) -- [Initialize a HashMap in Java](https://www.baeldung.com/java-initialize-hashmap) +- [Guide to the Guava BiMap](https://www.baeldung.com/guava-bimap) +- [The Java HashMap Under the Hood](https://www.baeldung.com/java-hashmap) +- [A Guide to LinkedHashMap in Java](https://www.baeldung.com/java-linked-hashmap) +- [A Guide to TreeMap in Java](https://www.baeldung.com/java-treemap) +- [How to Store Duplicate Keys in a Map in Java?](https://www.baeldung.com/java-map-duplicate-keys) - [Get the Key for a Value from a Java Map](https://www.baeldung.com/java-map-key-from-value) -- [Sort a HashMap in Java](https://www.baeldung.com/java-hashmap-sort) -- [Finding the Highest Value in a Java Map](https://www.baeldung.com/java-find-map-max) -- [Merging Two Maps with Java 8](https://www.baeldung.com/java-merge-maps) - [How to Check If a Key Exists in a Map](https://www.baeldung.com/java-map-key-exists) - [Comparing Two HashMaps in Java](https://www.baeldung.com/java-compare-hashmaps) - [Immutable Map Implementations in Java](https://www.baeldung.com/java-immutable-maps) -- [Map to String Conversion in Java](https://www.baeldung.com/java-map-to-string-conversion) - [Guide to Apache Commons MultiValuedMap](https://www.baeldung.com/apache-commons-multi-valued-map) diff --git a/java-collections-maps/pom.xml b/java-collections-maps/pom.xml index 83cc97a21e..b755582580 100644 --- a/java-collections-maps/pom.xml +++ b/java-collections-maps/pom.xml @@ -36,11 +36,6 @@ ${assertj.version} test - - one.util - streamex - ${streamex.version} - @@ -49,6 +44,5 @@ 1.7.0 3.6.1 7.1.0 - 0.6.5 diff --git a/java-collections-maps/src/main/java/com/baeldung/java/map/MapUtil.java b/java-collections-maps/src/main/java/com/baeldung/map/MapUtil.java similarity index 96% rename from java-collections-maps/src/main/java/com/baeldung/java/map/MapUtil.java rename to java-collections-maps/src/main/java/com/baeldung/map/MapUtil.java index 688c7592f3..91b7197a92 100644 --- a/java-collections-maps/src/main/java/com/baeldung/java/map/MapUtil.java +++ b/java-collections-maps/src/main/java/com/baeldung/map/MapUtil.java @@ -1,12 +1,12 @@ /** * */ -package com.baeldung.java.map; +package com.baeldung.map; import java.util.HashSet; import java.util.Map; -import java.util.Set; import java.util.Map.Entry; +import java.util.Set; import java.util.stream.Stream; /** diff --git a/java-collections-maps/src/main/java/com/baeldung/java/map/MyKey.java b/java-collections-maps/src/main/java/com/baeldung/map/MyKey.java similarity index 97% rename from java-collections-maps/src/main/java/com/baeldung/java/map/MyKey.java rename to java-collections-maps/src/main/java/com/baeldung/map/MyKey.java index ae3c3edc39..9993d7862c 100644 --- a/java-collections-maps/src/main/java/com/baeldung/java/map/MyKey.java +++ b/java-collections-maps/src/main/java/com/baeldung/map/MyKey.java @@ -1,4 +1,4 @@ -package com.baeldung.java.map; +package com.baeldung.map; import org.slf4j.Logger; import org.slf4j.LoggerFactory; diff --git a/java-collections-maps/src/main/java/com/baeldung/java/map/MyLinkedHashMap.java b/java-collections-maps/src/main/java/com/baeldung/map/MyLinkedHashMap.java similarity index 94% rename from java-collections-maps/src/main/java/com/baeldung/java/map/MyLinkedHashMap.java rename to java-collections-maps/src/main/java/com/baeldung/map/MyLinkedHashMap.java index 1e237580ec..b687e57d85 100644 --- a/java-collections-maps/src/main/java/com/baeldung/java/map/MyLinkedHashMap.java +++ b/java-collections-maps/src/main/java/com/baeldung/map/MyLinkedHashMap.java @@ -1,4 +1,4 @@ -package com.baeldung.java.map; +package com.baeldung.map; import java.util.LinkedHashMap; import java.util.Map; diff --git a/java-collections-maps/src/test/java/com/baeldung/java/map/ImmutableMapUnitTest.java b/java-collections-maps/src/test/java/com/baeldung/map/ImmutableMapUnitTest.java similarity index 92% rename from java-collections-maps/src/test/java/com/baeldung/java/map/ImmutableMapUnitTest.java rename to java-collections-maps/src/test/java/com/baeldung/map/ImmutableMapUnitTest.java index b239ae07d8..d308aac7eb 100644 --- a/java-collections-maps/src/test/java/com/baeldung/java/map/ImmutableMapUnitTest.java +++ b/java-collections-maps/src/test/java/com/baeldung/map/ImmutableMapUnitTest.java @@ -1,16 +1,13 @@ -package com.baeldung.java.map; +package com.baeldung.map; -import static org.junit.jupiter.api.Assertions.assertFalse; -import static org.junit.jupiter.api.Assertions.assertThrows; -import static org.junit.jupiter.api.Assertions.assertTrue; +import com.google.common.collect.ImmutableMap; +import org.junit.jupiter.api.Test; import java.util.Collections; import java.util.HashMap; import java.util.Map; -import org.junit.jupiter.api.Test; - -import com.google.common.collect.ImmutableMap; +import static org.junit.jupiter.api.Assertions.*; public class ImmutableMapUnitTest { diff --git a/java-collections-maps/src/test/java/com/baeldung/java/map/KeyCheckUnitTest.java b/java-collections-maps/src/test/java/com/baeldung/map/KeyCheckUnitTest.java similarity index 78% rename from java-collections-maps/src/test/java/com/baeldung/java/map/KeyCheckUnitTest.java rename to java-collections-maps/src/test/java/com/baeldung/map/KeyCheckUnitTest.java index 2c97a97690..dbad2e5b5e 100644 --- a/java-collections-maps/src/test/java/com/baeldung/java/map/KeyCheckUnitTest.java +++ b/java-collections-maps/src/test/java/com/baeldung/map/KeyCheckUnitTest.java @@ -1,13 +1,11 @@ -package com.baeldung.java.map; +package com.baeldung.map; -import static org.junit.Assert.assertFalse; -import static org.junit.Assert.assertNull; -import static org.junit.Assert.assertTrue; +import org.junit.Test; import java.util.Collections; import java.util.Map; -import org.junit.Test; +import static org.junit.Assert.*; public class KeyCheckUnitTest { diff --git a/java-collections-maps/src/test/java/com/baeldung/java/map/MapMultipleValuesUnitTest.java b/java-collections-maps/src/test/java/com/baeldung/map/MapMultipleValuesUnitTest.java similarity index 96% rename from java-collections-maps/src/test/java/com/baeldung/java/map/MapMultipleValuesUnitTest.java rename to java-collections-maps/src/test/java/com/baeldung/map/MapMultipleValuesUnitTest.java index 3a0affa6f3..721b48ea7b 100644 --- a/java-collections-maps/src/test/java/com/baeldung/java/map/MapMultipleValuesUnitTest.java +++ b/java-collections-maps/src/test/java/com/baeldung/map/MapMultipleValuesUnitTest.java @@ -1,13 +1,9 @@ -package com.baeldung.java.map; - -import static org.assertj.core.api.Assertions.assertThat; - -import java.util.ArrayList; -import java.util.Collection; -import java.util.HashMap; -import java.util.List; -import java.util.Map; +package com.baeldung.map; +import com.google.common.collect.ArrayListMultimap; +import com.google.common.collect.LinkedHashMultimap; +import com.google.common.collect.Multimap; +import com.google.common.collect.TreeMultimap; import org.apache.commons.collections4.MultiMap; import org.apache.commons.collections4.MultiMapUtils; import org.apache.commons.collections4.MultiValuedMap; @@ -18,10 +14,9 @@ import org.junit.Test; import org.slf4j.Logger; import org.slf4j.LoggerFactory; -import com.google.common.collect.ArrayListMultimap; -import com.google.common.collect.LinkedHashMultimap; -import com.google.common.collect.Multimap; -import com.google.common.collect.TreeMultimap; +import java.util.*; + +import static org.assertj.core.api.Assertions.assertThat; public class MapMultipleValuesUnitTest { private static final Logger LOG = LoggerFactory.getLogger(MapMultipleValuesUnitTest.class); diff --git a/java-collections-maps/src/test/java/com/baeldung/java/map/MapUnitTest.java b/java-collections-maps/src/test/java/com/baeldung/map/MapUnitTest.java similarity index 99% rename from java-collections-maps/src/test/java/com/baeldung/java/map/MapUnitTest.java rename to java-collections-maps/src/test/java/com/baeldung/map/MapUnitTest.java index 7582eb87fb..eaf68ccba5 100644 --- a/java-collections-maps/src/test/java/com/baeldung/java/map/MapUnitTest.java +++ b/java-collections-maps/src/test/java/com/baeldung/map/MapUnitTest.java @@ -1,4 +1,4 @@ -package com.baeldung.java.map; +package com.baeldung.map; import org.junit.Test; import org.slf4j.Logger; diff --git a/java-collections-maps/src/test/java/com/baeldung/java/map/MapUtilUnitTest.java b/java-collections-maps/src/test/java/com/baeldung/map/MapUtilUnitTest.java similarity index 99% rename from java-collections-maps/src/test/java/com/baeldung/java/map/MapUtilUnitTest.java rename to java-collections-maps/src/test/java/com/baeldung/map/MapUtilUnitTest.java index e31385e972..f8e4c8fd8a 100644 --- a/java-collections-maps/src/test/java/com/baeldung/java/map/MapUtilUnitTest.java +++ b/java-collections-maps/src/test/java/com/baeldung/map/MapUtilUnitTest.java @@ -1,9 +1,12 @@ /** * */ -package com.baeldung.java.map; +package com.baeldung.map; -import static org.junit.Assert.assertEquals; +import com.google.common.collect.HashBiMap; +import org.apache.commons.collections4.BidiMap; +import org.apache.commons.collections4.bidimap.DualHashBidiMap; +import org.junit.Test; import java.util.Arrays; import java.util.HashMap; @@ -11,11 +14,7 @@ import java.util.HashSet; import java.util.Map; import java.util.stream.Collectors; -import org.apache.commons.collections4.BidiMap; -import org.apache.commons.collections4.bidimap.DualHashBidiMap; -import org.junit.Test; - -import com.google.common.collect.HashBiMap; +import static org.junit.Assert.assertEquals; /** * @author swpraman diff --git a/java-collections-maps/src/test/java/com/baeldung/java/map/MultiValuedMapUnitTest.java b/java-collections-maps/src/test/java/com/baeldung/map/MultiValuedMapUnitTest.java similarity index 99% rename from java-collections-maps/src/test/java/com/baeldung/java/map/MultiValuedMapUnitTest.java rename to java-collections-maps/src/test/java/com/baeldung/map/MultiValuedMapUnitTest.java index b3aaf8925f..686c1cef87 100644 --- a/java-collections-maps/src/test/java/com/baeldung/java/map/MultiValuedMapUnitTest.java +++ b/java-collections-maps/src/test/java/com/baeldung/map/MultiValuedMapUnitTest.java @@ -1,15 +1,4 @@ -package com.baeldung.java.map; - -import static org.assertj.core.api.Assertions.assertThat; -import static org.junit.Assert.assertTrue; -import static org.junit.jupiter.api.Assertions.assertEquals; -import static org.junit.jupiter.api.Assertions.assertFalse; - -import java.util.Arrays; -import java.util.Collection; -import java.util.Map; -import java.util.Map.Entry; -import java.util.Set; +package com.baeldung.map; import org.apache.commons.collections4.MultiMapUtils; import org.apache.commons.collections4.MultiSet; @@ -18,6 +7,17 @@ import org.apache.commons.collections4.multimap.ArrayListValuedHashMap; import org.apache.commons.collections4.multimap.HashSetValuedHashMap; import org.junit.Test; +import java.util.Arrays; +import java.util.Collection; +import java.util.Map; +import java.util.Map.Entry; +import java.util.Set; + +import static org.assertj.core.api.Assertions.assertThat; +import static org.junit.Assert.assertTrue; +import static org.junit.jupiter.api.Assertions.assertEquals; +import static org.junit.jupiter.api.Assertions.assertFalse; + public class MultiValuedMapUnitTest { @Test diff --git a/java-collections-maps/src/test/java/com/baeldung/java/map/compare/HashMapComparisonUnitTest.java b/java-collections-maps/src/test/java/com/baeldung/map/compare/HashMapComparisonUnitTest.java similarity index 97% rename from java-collections-maps/src/test/java/com/baeldung/java/map/compare/HashMapComparisonUnitTest.java rename to java-collections-maps/src/test/java/com/baeldung/map/compare/HashMapComparisonUnitTest.java index e8aa12d4bd..0edd0cd87b 100644 --- a/java-collections-maps/src/test/java/com/baeldung/java/map/compare/HashMapComparisonUnitTest.java +++ b/java-collections-maps/src/test/java/com/baeldung/map/compare/HashMapComparisonUnitTest.java @@ -1,24 +1,21 @@ -package com.baeldung.java.map.compare; +package com.baeldung.map.compare; -import static org.hamcrest.MatcherAssert.assertThat; -import static org.hamcrest.collection.IsMapContaining.hasEntry; -import static org.hamcrest.collection.IsMapContaining.hasKey; -import static org.junit.Assert.assertEquals; -import static org.junit.Assert.assertFalse; -import static org.junit.Assert.assertTrue; +import com.google.common.base.Equivalence; +import com.google.common.collect.MapDifference; +import com.google.common.collect.MapDifference.ValueDifference; +import com.google.common.collect.Maps; +import org.junit.Before; +import org.junit.Test; import java.util.Arrays; import java.util.HashMap; import java.util.Map; import java.util.stream.Collectors; -import org.junit.Before; -import org.junit.Test; - -import com.google.common.base.Equivalence; -import com.google.common.collect.MapDifference; -import com.google.common.collect.MapDifference.ValueDifference; -import com.google.common.collect.Maps; +import static org.hamcrest.MatcherAssert.assertThat; +import static org.hamcrest.collection.IsMapContaining.hasEntry; +import static org.hamcrest.collection.IsMapContaining.hasKey; +import static org.junit.Assert.*; public class HashMapComparisonUnitTest { From f822c1032baf2fa9cf8a36d604338f8bd2e492a6 Mon Sep 17 00:00:00 2001 From: Sam Millington Date: Tue, 24 Sep 2019 14:27:23 +0100 Subject: [PATCH 18/29] [BAEL-17699 (#7860) --- .../src/main/resources/factorybean-abstract-spring-ctx.xml | 0 .../src/main/resources/factorybean-spring-ctx.xml | 0 .../src/test/resources/beanfactory-example.xml | 0 3 files changed, 0 insertions(+), 0 deletions(-) rename {spring-core => spring-core-2}/src/main/resources/factorybean-abstract-spring-ctx.xml (100%) rename {spring-core => spring-core-2}/src/main/resources/factorybean-spring-ctx.xml (100%) rename {spring-core => spring-core-2}/src/test/resources/beanfactory-example.xml (100%) diff --git a/spring-core/src/main/resources/factorybean-abstract-spring-ctx.xml b/spring-core-2/src/main/resources/factorybean-abstract-spring-ctx.xml similarity index 100% rename from spring-core/src/main/resources/factorybean-abstract-spring-ctx.xml rename to spring-core-2/src/main/resources/factorybean-abstract-spring-ctx.xml diff --git a/spring-core/src/main/resources/factorybean-spring-ctx.xml b/spring-core-2/src/main/resources/factorybean-spring-ctx.xml similarity index 100% rename from spring-core/src/main/resources/factorybean-spring-ctx.xml rename to spring-core-2/src/main/resources/factorybean-spring-ctx.xml diff --git a/spring-core/src/test/resources/beanfactory-example.xml b/spring-core-2/src/test/resources/beanfactory-example.xml similarity index 100% rename from spring-core/src/test/resources/beanfactory-example.xml rename to spring-core-2/src/test/resources/beanfactory-example.xml From 2757d0a3ad27e9e8348077029945b283b4e51e61 Mon Sep 17 00:00:00 2001 From: Sam Millington Date: Tue, 24 Sep 2019 14:28:05 +0100 Subject: [PATCH 19/29] [BAEL-17697] - Fixed integration tests (#7859) --- spring-di/src/main/java/com/baeldung/sample/AppConfig.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/spring-di/src/main/java/com/baeldung/sample/AppConfig.java b/spring-di/src/main/java/com/baeldung/sample/AppConfig.java index c948011c69..d13023d89e 100644 --- a/spring-di/src/main/java/com/baeldung/sample/AppConfig.java +++ b/spring-di/src/main/java/com/baeldung/sample/AppConfig.java @@ -4,7 +4,7 @@ import org.springframework.context.annotation.ComponentScan; import org.springframework.context.annotation.Configuration; @Configuration -@ComponentScan("org.baeldung.sample") +@ComponentScan("com.baeldung.sample") public class AppConfig { } From 0a67756dee186b703bf96df3a3d211375f626dfa Mon Sep 17 00:00:00 2001 From: Dilip Date: Tue, 24 Sep 2019 15:56:43 -0500 Subject: [PATCH 20/29] Spring WebClient Mocking Code Repo (#7525) * adding complete code implementation of Hexagonal Architectute example * refactored the code * added the webclient mocking * removed the unwanted repo * updated the test cases * removed commented code * fixed the code review comments * fixed the test cases * removed unwanted dependencies * removed the unwanted project * fixed the code review comments * added the mock to the variable name * added the mock to the variable name * addressed the code review comments * removed the unnecessary semi colon * fixed the compilation issues * Update spring-5-reactive-client/pom.xml Co-Authored-By: KevinGilmore * Update spring-5-reactive-client/pom.xml Co-Authored-By: KevinGilmore * added the missing dependency * fixed the compilation issue in the pom.xml file --- spring-5-reactive-client/pom.xml | 50 +++++++- .../com/baeldung/reactive/enums/Role.java | 5 + .../com/baeldung/reactive/model/Employee.java | 64 +++++++++ .../reactive/service/EmployeeService.java | 55 ++++++++ .../EmployeeServiceIntegrationTest.java | 121 ++++++++++++++++++ .../service/EmployeeServiceUnitTest.java | 114 +++++++++++++++++ 6 files changed, 407 insertions(+), 2 deletions(-) create mode 100644 spring-5-reactive-client/src/main/java/com/baeldung/reactive/enums/Role.java create mode 100644 spring-5-reactive-client/src/main/java/com/baeldung/reactive/model/Employee.java create mode 100644 spring-5-reactive-client/src/main/java/com/baeldung/reactive/service/EmployeeService.java create mode 100644 spring-5-reactive-client/src/test/java/com/baeldung/reactive/service/EmployeeServiceIntegrationTest.java create mode 100644 spring-5-reactive-client/src/test/java/com/baeldung/reactive/service/EmployeeServiceUnitTest.java diff --git a/spring-5-reactive-client/pom.xml b/spring-5-reactive-client/pom.xml index 70771f6832..9e574b2196 100644 --- a/spring-5-reactive-client/pom.xml +++ b/spring-5-reactive-client/pom.xml @@ -54,6 +54,18 @@ org.apache.commons commons-lang3 + + + com.squareup.okhttp3 + okhttp + 4.0.1 + + + com.squareup.okhttp3 + mockwebserver + 4.0.1 + test + @@ -88,14 +100,25 @@ org.projectlombok lombok - - + + org.mockito + mockito-junit-jupiter + 2.23.0 + test + + + io.projectreactor + reactor-test + 3.2.10.RELEASE + test + org.eclipse.jetty jetty-reactive-httpclient ${jetty-reactive-httpclient.version} test + @@ -108,6 +131,29 @@ JAR + + org.apache.maven.plugins + maven-compiler-plugin + + 1.8 + 1.8 + + + + maven-surefire-plugin + 2.22.0 + + + maven-surefire-plugin + 2.19.1 + + + org.junit.platform + junit-platform-surefire-provider + 1.0.1 + + + diff --git a/spring-5-reactive-client/src/main/java/com/baeldung/reactive/enums/Role.java b/spring-5-reactive-client/src/main/java/com/baeldung/reactive/enums/Role.java new file mode 100644 index 0000000000..6b11f14734 --- /dev/null +++ b/spring-5-reactive-client/src/main/java/com/baeldung/reactive/enums/Role.java @@ -0,0 +1,5 @@ +package com.baeldung.reactive.enums; + +public enum Role { + ENGINEER, SENIOR_ENGINEER, LEAD_ENGINEER +} diff --git a/spring-5-reactive-client/src/main/java/com/baeldung/reactive/model/Employee.java b/spring-5-reactive-client/src/main/java/com/baeldung/reactive/model/Employee.java new file mode 100644 index 0000000000..6a8daaf6de --- /dev/null +++ b/spring-5-reactive-client/src/main/java/com/baeldung/reactive/model/Employee.java @@ -0,0 +1,64 @@ +package com.baeldung.reactive.model; + + +import com.baeldung.reactive.enums.Role; + +public class Employee { + private Integer employeeId; + private String firstName; + private String lastName; + private Integer age; + private Role role; + + public Employee() { + } + + public Employee(Integer employeeId, String firstName, String lastName, Integer age, Role role) { + this.employeeId = employeeId; + this.firstName = firstName; + this.lastName = lastName; + this.age = age; + this.role = role; + } + + public Integer getEmployeeId() { + return employeeId; + } + + public void setEmployeeId(Integer employeeId) { + this.employeeId = employeeId; + } + + public String getFirstName() { + return firstName; + } + + public void setFirstName(String firstName) { + this.firstName = firstName; + } + + public String getLastName() { + return lastName; + } + + public void setLastName(String lastName) { + this.lastName = lastName; + } + + public Integer getAge() { + return age; + } + + public void setAge(Integer age) { + this.age = age; + } + + public Role getRole() { + return role; + } + + public void setRole(Role role) { + this.role = role; + } +} + diff --git a/spring-5-reactive-client/src/main/java/com/baeldung/reactive/service/EmployeeService.java b/spring-5-reactive-client/src/main/java/com/baeldung/reactive/service/EmployeeService.java new file mode 100644 index 0000000000..b841dbfe3f --- /dev/null +++ b/spring-5-reactive-client/src/main/java/com/baeldung/reactive/service/EmployeeService.java @@ -0,0 +1,55 @@ +package com.baeldung.reactive.service; +import com.baeldung.reactive.model.Employee; +import org.springframework.web.reactive.function.client.WebClient; +import reactor.core.publisher.Mono; + +public class EmployeeService { + + private WebClient webClient; + public static String PATH_PARAM_BY_ID = "/employee/{id}"; + public static String ADD_EMPLOYEE = "/employee"; + + public EmployeeService(WebClient webClient) { + this.webClient = webClient; + } + + public EmployeeService(String baseUrl) { + this.webClient = WebClient.create(baseUrl); + } + + public Mono getEmployeeById(Integer employeeId) { + return webClient + .get() + .uri(PATH_PARAM_BY_ID, employeeId) + .retrieve() + .bodyToMono(Employee.class); + } + + public Mono addNewEmployee(Employee newEmployee) { + + return webClient + .post() + .uri(ADD_EMPLOYEE) + .syncBody(newEmployee) + .retrieve(). + bodyToMono(Employee.class); + } + + public Mono updateEmployee(Integer employeeId, Employee updateEmployee) { + + return webClient + .put() + .uri(PATH_PARAM_BY_ID,employeeId) + .syncBody(updateEmployee) + .retrieve() + .bodyToMono(Employee.class); + } + + public Mono deleteEmployeeById(Integer employeeId) { + return webClient + .delete() + .uri(PATH_PARAM_BY_ID,employeeId) + .retrieve() + .bodyToMono(String.class); + } +} diff --git a/spring-5-reactive-client/src/test/java/com/baeldung/reactive/service/EmployeeServiceIntegrationTest.java b/spring-5-reactive-client/src/test/java/com/baeldung/reactive/service/EmployeeServiceIntegrationTest.java new file mode 100644 index 0000000000..f5d9529ada --- /dev/null +++ b/spring-5-reactive-client/src/test/java/com/baeldung/reactive/service/EmployeeServiceIntegrationTest.java @@ -0,0 +1,121 @@ +package com.baeldung.reactive.service; + +import com.baeldung.reactive.model.Employee; +import com.baeldung.reactive.enums.Role; +import com.fasterxml.jackson.core.JsonProcessingException; +import com.fasterxml.jackson.databind.ObjectMapper; +import okhttp3.mockwebserver.MockResponse; +import okhttp3.mockwebserver.MockWebServer; +import okhttp3.mockwebserver.RecordedRequest; +import org.junit.Rule; +import org.junit.jupiter.api.*; +import reactor.core.publisher.Mono; +import reactor.test.StepVerifier; + +import java.io.IOException; + +import static org.junit.jupiter.api.Assertions.*; + +class EmployeeServiceIntegrationTest { + + public static MockWebServer mockBackEnd; + private EmployeeService employeeService; + private ObjectMapper MAPPER = new ObjectMapper(); + + @BeforeAll + static void setUp() throws IOException { + mockBackEnd = new MockWebServer(); + mockBackEnd.start(); + } + + @AfterAll + static void tearDown() throws IOException { + mockBackEnd.shutdown(); + } + + @BeforeEach + void initialize() { + + String baseUrl = String.format("http://localhost:%s", mockBackEnd.getPort()); + employeeService = new EmployeeService(baseUrl); + } + + @Test + void getEmployeeById() throws Exception { + + Employee mockEmployee = new Employee(100, "Adam", "Sandler", 32, Role.LEAD_ENGINEER); + mockBackEnd.enqueue(new MockResponse().setBody(MAPPER.writeValueAsString(mockEmployee)) + .addHeader("Content-Type", "application/json")); + + Mono employeeMono = employeeService.getEmployeeById(100); + + StepVerifier.create(employeeMono) + .expectNextMatches(employee -> employee.getRole().equals(Role.LEAD_ENGINEER)) + .verifyComplete(); + + RecordedRequest recordedRequest = mockBackEnd.takeRequest(); + assertEquals("GET", recordedRequest.getMethod()); + assertEquals("/employee/100", recordedRequest.getPath()); + } + + @Test + void addNewEmployee() throws Exception { + + Employee newEmployee = new Employee(null, "Adam", "Sandler", 32, Role.LEAD_ENGINEER); + Employee webClientResponse = new Employee(100, "Adam", "Sandler", 32, Role.LEAD_ENGINEER); + mockBackEnd.enqueue(new MockResponse().setBody(MAPPER.writeValueAsString(webClientResponse)) + .addHeader("Content-Type", "application/json")); + + Mono employeeMono = employeeService.addNewEmployee(newEmployee); + + StepVerifier.create(employeeMono) + .expectNextMatches(employee -> employee.getEmployeeId().equals(100)) + .verifyComplete(); + + RecordedRequest recordedRequest = mockBackEnd.takeRequest(); + assertEquals("POST", recordedRequest.getMethod()); + assertEquals("/employee", recordedRequest.getPath()); + } + + @Test + void updateEmployee() throws Exception { + + Integer newAge = 33; + String newLastName = "Sandler New"; + Employee updateEmployee = new Employee(100, "Adam", newLastName, newAge, Role.LEAD_ENGINEER); + mockBackEnd.enqueue(new MockResponse().setBody(MAPPER.writeValueAsString(updateEmployee)) + .addHeader("Content-Type", "application/json")); + + Mono updatedEmploye = employeeService.updateEmployee(100, updateEmployee); + + StepVerifier.create(updatedEmploye) + .expectNextMatches(employee -> employee.getLastName().equals(newLastName) && employee.getAge() == newAge) + .verifyComplete(); + + RecordedRequest recordedRequest = mockBackEnd.takeRequest(); + assertEquals("PUT", recordedRequest.getMethod()); + assertEquals("/employee/100", recordedRequest.getPath()); + + } + + + @Test + void deleteEmployee() throws Exception { + + String responseMessage = "Employee Deleted SuccessFully"; + Integer employeeId = 100; + mockBackEnd.enqueue(new MockResponse().setBody(MAPPER.writeValueAsString(responseMessage)) + .addHeader("Content-Type", "application/json")); + + Mono deletedEmployee = employeeService.deleteEmployeeById(employeeId); + + StepVerifier.create(deletedEmployee) + .expectNext("\"Employee Deleted SuccessFully\"") + .verifyComplete(); + + RecordedRequest recordedRequest = mockBackEnd.takeRequest(); + assertEquals("DELETE", recordedRequest.getMethod()); + assertEquals("/employee/100", recordedRequest.getPath()); + } + +} \ No newline at end of file diff --git a/spring-5-reactive-client/src/test/java/com/baeldung/reactive/service/EmployeeServiceUnitTest.java b/spring-5-reactive-client/src/test/java/com/baeldung/reactive/service/EmployeeServiceUnitTest.java new file mode 100644 index 0000000000..1d1a8fd2e4 --- /dev/null +++ b/spring-5-reactive-client/src/test/java/com/baeldung/reactive/service/EmployeeServiceUnitTest.java @@ -0,0 +1,114 @@ +package com.baeldung.reactive.service; + + +import com.baeldung.reactive.model.Employee; +import com.baeldung.reactive.enums.Role; +import org.junit.jupiter.api.BeforeEach; +import org.junit.jupiter.api.Test; +import org.junit.jupiter.api.extension.ExtendWith; +import org.mockito.Mock; +import org.mockito.exceptions.base.MockitoException; +import org.mockito.junit.MockitoJUnitRunner; +import org.mockito.junit.jupiter.MockitoExtension; +import org.springframework.web.reactive.function.client.WebClient; +import reactor.core.publisher.Mono; +import reactor.test.StepVerifier; + +import static org.mockito.ArgumentMatchers.any; +import static org.mockito.ArgumentMatchers.eq; +import static org.mockito.Mockito.mock; +import static org.mockito.Mockito.when; + +@ExtendWith(MockitoExtension.class) +class EmployeeServiceUnitTest { + + EmployeeService employeeService; + @Mock + private WebClient webClientMock; + @Mock + private WebClient.RequestHeadersSpec requestHeadersMock; + @Mock + private WebClient.RequestHeadersUriSpec requestHeadersUriMock; + @Mock + private WebClient.RequestBodySpec requestBodyMock; + @Mock + private WebClient.RequestBodyUriSpec requestBodyUriMock; + @Mock + private WebClient.ResponseSpec responseMock; + + @BeforeEach + void setUp() { + employeeService = new EmployeeService(webClientMock); + } + + @Test + void givenEmployeeId_whenGetEmployeeById_thenReturnEmployee() { + + Integer employeeId = 100; + Employee mockEmployee = new Employee(100, "Adam", "Sandler", 32, Role.LEAD_ENGINEER); + when(webClientMock.get()).thenReturn(requestHeadersUriMock); + when(requestHeadersUriMock.uri("/employee/{id}", employeeId)).thenReturn(requestHeadersMock); + when(requestHeadersMock.retrieve()).thenReturn(responseMock); + when(responseMock.bodyToMono(Employee.class)).thenReturn(Mono.just(mockEmployee)); + + Mono employeeMono = employeeService.getEmployeeById(employeeId); + + StepVerifier.create(employeeMono) + .expectNextMatches(employee -> employee.getRole().equals(Role.LEAD_ENGINEER)) + .verifyComplete(); + } + + @Test + void givenEmployee_whenAddEmployee_thenAddNewEmployee() { + + Employee newEmployee = new Employee(null, "Adam", "Sandler", 32, Role.LEAD_ENGINEER); + Employee webClientResponse = new Employee(100, "Adam", "Sandler", 32, Role.LEAD_ENGINEER); + when(webClientMock.post()).thenReturn(requestBodyUriMock); + when(requestBodyUriMock.uri(EmployeeService.ADD_EMPLOYEE)).thenReturn(requestBodyMock); + when(requestBodyMock.syncBody(newEmployee)).thenReturn(requestHeadersMock); + when(requestHeadersMock.retrieve()).thenReturn(responseMock); + when(responseMock.bodyToMono(Employee.class)).thenReturn(Mono.just(webClientResponse)); + + Mono employeeMono = employeeService.addNewEmployee(newEmployee); + + StepVerifier.create(employeeMono) + .expectNextMatches(employee -> employee.getEmployeeId().equals(100)) + .verifyComplete(); + } + + @Test + void givenEmployee_whenupdateEmployee_thenUpdatedEmployee() { + + Integer newAge = 33; + String newLastName = "Sandler New"; + Employee updateEmployee = new Employee(100, "Adam", newLastName, newAge, Role.LEAD_ENGINEER); + when(webClientMock.put()).thenReturn(requestBodyUriMock); + when(requestBodyUriMock.uri(EmployeeService.PATH_PARAM_BY_ID, 100)).thenReturn(requestBodyMock); + when(requestBodyMock.syncBody(updateEmployee)).thenReturn(requestHeadersMock); + when(requestHeadersMock.retrieve()).thenReturn(responseMock); + when(responseMock.bodyToMono(Employee.class)).thenReturn(Mono.just(updateEmployee)); + + Mono updatedEmployee = employeeService.updateEmployee(100, updateEmployee); + + StepVerifier.create(updatedEmployee) + .expectNextMatches(employee -> employee.getLastName().equals(newLastName) && employee.getAge() == newAge) + .verifyComplete(); + + } + + @Test + void givenEmployee_whenDeleteEmployeeById_thenDeleteSuccessful() { + + String responseMessage = "Employee Deleted SuccessFully"; + when(webClientMock.delete()).thenReturn(requestHeadersUriMock); + when(requestHeadersUriMock.uri(EmployeeService.PATH_PARAM_BY_ID, 100)).thenReturn(requestHeadersMock); + when(requestHeadersMock.retrieve()).thenReturn(responseMock); + when(responseMock.bodyToMono(String.class)).thenReturn(Mono.just(responseMessage)); + + Mono deletedEmployee = employeeService.deleteEmployeeById(100); + + StepVerifier.create(deletedEmployee) + .expectNext(responseMessage) + .verifyComplete(); + } +} \ No newline at end of file From 6f9c3399864afa1e5faeb29f2ed8508f24ff5b0f Mon Sep 17 00:00:00 2001 From: Alfred Samanga Date: Wed, 25 Sep 2019 08:13:00 +0200 Subject: [PATCH 21/29] BAEL-3321 Flogger Fluent Logging (#7872) * Added Flogger maven dependency * Implemented Flogger logging examples * Finished implementing Flogger logging examples * Changed Flogger Test to Integration tests * Adding examples on optimisation * Added support for Slf4j and Log4j backends * Added support for Slf4j and Log4j backends, uncommended dependencies in pom, removed log4j config file --- logging-modules/flogger/pom.xml | 39 +++++++++++++++++++ .../flogger/FloggerIntegrationTest.java | 23 +++++++++++ 2 files changed, 62 insertions(+) diff --git a/logging-modules/flogger/pom.xml b/logging-modules/flogger/pom.xml index 2b96332bf6..0bba719616 100644 --- a/logging-modules/flogger/pom.xml +++ b/logging-modules/flogger/pom.xml @@ -17,11 +17,50 @@ flogger 0.4 + com.google.flogger flogger-system-backend 0.4 runtime + + + com.google.flogger + flogger-slf4j-backend + 0.4 + + + + com.google.flogger + flogger-log4j-backend + 0.4 + + + com.sun.jmx + jmxri + + + com.sun.jdmk + jmxtools + + + javax.jms + jms + + + + + + log4j + log4j + 1.2.17 + + + log4j + apache-log4j-extras + 1.2.17 + + \ No newline at end of file diff --git a/logging-modules/flogger/src/test/java/com/baeldung/flogger/FloggerIntegrationTest.java b/logging-modules/flogger/src/test/java/com/baeldung/flogger/FloggerIntegrationTest.java index 69460dc045..80fa0edd96 100644 --- a/logging-modules/flogger/src/test/java/com/baeldung/flogger/FloggerIntegrationTest.java +++ b/logging-modules/flogger/src/test/java/com/baeldung/flogger/FloggerIntegrationTest.java @@ -12,6 +12,10 @@ import java.util.stream.IntStream; import static com.google.common.flogger.LazyArgs.lazy; public class FloggerIntegrationTest { + static { +// System.setProperty("flogger.backend_factory", "com.google.common.flogger.backend.log4j.Log4jBackendFactory#getInstance"); + System.setProperty("flogger.backend_factory", "com.google.common.flogger.backend.slf4j.Slf4jBackendFactory#getInstance"); + } private static final FluentLogger logger = FluentLogger.forEnclosingClass(); @Test @@ -28,6 +32,16 @@ public class FloggerIntegrationTest { }); } + @Test + public void givenAnObject_shouldLogTheObject() { + User user = new User(); + logger.atInfo().log("The user is: %s", user); //correct + + //The following ways of logging are not recommended + logger.atInfo().log("The user is: %s", user.toString()); + logger.atInfo().log("The user is: %s" + user); + } + @Test public void givenASimpleOperation_shouldLogTheResult() { int result = 45 / 3; @@ -70,4 +84,13 @@ public class FloggerIntegrationTest { int s = 30; return String.format("%d seconds elapsed so far. %d items pending processing", s, items); } + + private class User { + String name = "Test"; + + @Override + public String toString() { + return name; + } + } } From af75e04e5085a5e9a3ad4ede025275ebec43c750 Mon Sep 17 00:00:00 2001 From: Dhawal Kapil Date: Wed, 25 Sep 2019 18:55:50 +0530 Subject: [PATCH 22/29] BAEL-9496 Fix failing context tests (#7855) * BAEL-9496 Fix failing context tests - Fixes for SpringContextIntegrationTest in several projects * BAEL-9496 Fix failing context tests -Fixed ContextTests for spring-jms and further fixes spring-session-mongodb * BAEL-9496 Fix failing context tests -Fixed context tests from spring-rest-angular project --- .../baeldung/SpringContextIntegrationTest.java | 17 ----------------- .../org/baeldung/SpringContextLiveTest.java | 9 +++++++++ .../gateway/SpringContextLiveTest.java | 9 +++++++++ .../SpringContextIntegrationTest.java | 15 --------------- .../vaultsample/SpringContextLiveTest.java | 9 +++++++++ .../src/test/resources/application.properties | 2 ++ .../baeldung/SpringContextIntegrationTest.java | 2 +- .../java/org/baeldung/SpringContextTest.java | 2 +- .../baeldung/web/main/PersistenceConfig.java | 2 +- .../src/main/resources/application.properties | 3 ++- .../src/main/resources/{db/sql => }/data.sql | 7 ------- .../baeldung/SpringContextIntegrationTest.java | 4 +++- .../java/com/baeldung/SpringContextTest.java | 9 +++++---- spring-session/spring-session-mongodb/pom.xml | 6 ++++++ .../baeldung/SpringContextIntegrationTest.java | 2 +- ...textLiveTest.java => SpringContextTest.java} | 4 ++-- .../src/test/resources/application.properties | 2 ++ .../baeldung/SpringContextIntegrationTest.java | 17 ----------------- .../org/baeldung/SpringContextLiveTest.java | 4 ++++ .../baeldung/SpringContextIntegrationTest.java | 16 ---------------- .../org/baeldung/SpringContextLiveTest.java | 9 +++++++++ .../src/test/resources/application.properties | 1 + .../src/main/resources/application.yml | 2 +- .../baeldung/SpringContextIntegrationTest.java | 16 ---------------- .../org/baeldung/SpringContextLiveTest.java | 9 +++++++++ 25 files changed, 77 insertions(+), 101 deletions(-) delete mode 100644 spring-cloud-data-flow/spring-cloud-data-flow-stream-processing/data-flow-shell/src/test/java/org/baeldung/SpringContextIntegrationTest.java delete mode 100644 spring-cloud/spring-cloud-vault/src/test/java/org/baeldung/spring/cloud/vaultsample/SpringContextIntegrationTest.java create mode 100644 spring-jenkins-pipeline/src/test/resources/application.properties rename spring-rest-angular/src/main/resources/{db/sql => }/data.sql (90%) rename spring-cloud/spring-cloud-bootstrap/gateway/src/test/java/com/baeldung/spring/cloud/bootstrap/gateway/SpringContextIntegrationTest.java => spring-security-mvc/src/test/java/com/baeldung/SpringContextTest.java (64%) rename spring-session/spring-session-mongodb/src/test/java/org/baeldung/{SpringContextLiveTest.java => SpringContextTest.java} (71%) create mode 100644 spring-session/spring-session-mongodb/src/test/resources/application.properties delete mode 100644 spring-session/spring-session-redis/src/test/java/org/baeldung/SpringContextIntegrationTest.java delete mode 100644 spring-vault/src/test/java/org/baeldung/SpringContextIntegrationTest.java create mode 100644 spring-vault/src/test/resources/application.properties delete mode 100644 spring-webflux-amqp/src/test/java/org/baeldung/SpringContextIntegrationTest.java diff --git a/spring-cloud-data-flow/spring-cloud-data-flow-stream-processing/data-flow-shell/src/test/java/org/baeldung/SpringContextIntegrationTest.java b/spring-cloud-data-flow/spring-cloud-data-flow-stream-processing/data-flow-shell/src/test/java/org/baeldung/SpringContextIntegrationTest.java deleted file mode 100644 index 28dbc9a8d8..0000000000 --- a/spring-cloud-data-flow/spring-cloud-data-flow-stream-processing/data-flow-shell/src/test/java/org/baeldung/SpringContextIntegrationTest.java +++ /dev/null @@ -1,17 +0,0 @@ -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/spring-cloud-data-flow-stream-processing/data-flow-shell/src/test/java/org/baeldung/SpringContextLiveTest.java b/spring-cloud-data-flow/spring-cloud-data-flow-stream-processing/data-flow-shell/src/test/java/org/baeldung/SpringContextLiveTest.java index 5be4f9c077..1784eb772a 100644 --- a/spring-cloud-data-flow/spring-cloud-data-flow-stream-processing/data-flow-shell/src/test/java/org/baeldung/SpringContextLiveTest.java +++ b/spring-cloud-data-flow/spring-cloud-data-flow-stream-processing/data-flow-shell/src/test/java/org/baeldung/SpringContextLiveTest.java @@ -6,6 +6,15 @@ import org.junit.runner.RunWith; import org.springframework.boot.test.context.SpringBootTest; import org.springframework.test.context.junit4.SpringRunner; +/** + * This live test requires: + * complete data-flow server and shell setup running + * + *
+ * For more info: + * https://www.baeldung.com/spring-cloud-data-flow-stream-processing + * + */ @RunWith(SpringRunner.class) @SpringBootTest(classes = DataFlowShellApplication.class) public class SpringContextLiveTest { diff --git a/spring-cloud/spring-cloud-bootstrap/gateway/src/test/java/com/baeldung/spring/cloud/bootstrap/gateway/SpringContextLiveTest.java b/spring-cloud/spring-cloud-bootstrap/gateway/src/test/java/com/baeldung/spring/cloud/bootstrap/gateway/SpringContextLiveTest.java index a3cbb3310d..a5c6ab612a 100644 --- a/spring-cloud/spring-cloud-bootstrap/gateway/src/test/java/com/baeldung/spring/cloud/bootstrap/gateway/SpringContextLiveTest.java +++ b/spring-cloud/spring-cloud-bootstrap/gateway/src/test/java/com/baeldung/spring/cloud/bootstrap/gateway/SpringContextLiveTest.java @@ -5,6 +5,15 @@ import org.junit.runner.RunWith; import org.springframework.boot.test.context.SpringBootTest; import org.springframework.test.context.junit4.SpringRunner; +/** + * This live test requires: + * Eureka server and Gateway application up and running + * + *
+ * For more info: + * https://www.baeldung.com/spring-cloud-netflix-eureka + * https://www.baeldung.com/spring-cloud-gateway-pattern + */ @RunWith(SpringRunner.class) @SpringBootTest public class SpringContextLiveTest { diff --git a/spring-cloud/spring-cloud-vault/src/test/java/org/baeldung/spring/cloud/vaultsample/SpringContextIntegrationTest.java b/spring-cloud/spring-cloud-vault/src/test/java/org/baeldung/spring/cloud/vaultsample/SpringContextIntegrationTest.java deleted file mode 100644 index e1eb2f8e24..0000000000 --- a/spring-cloud/spring-cloud-vault/src/test/java/org/baeldung/spring/cloud/vaultsample/SpringContextIntegrationTest.java +++ /dev/null @@ -1,15 +0,0 @@ -package org.baeldung.spring.cloud.vaultsample; - -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 = VaultSampleApplication.class) -public class SpringContextIntegrationTest { - - @Test - public void whenSpringContextIsBootstrapped_thenNoExceptions() { - } -} \ No newline at end of file diff --git a/spring-cloud/spring-cloud-vault/src/test/java/org/baeldung/spring/cloud/vaultsample/SpringContextLiveTest.java b/spring-cloud/spring-cloud-vault/src/test/java/org/baeldung/spring/cloud/vaultsample/SpringContextLiveTest.java index 3be4d96964..82fe3d7a4a 100644 --- a/spring-cloud/spring-cloud-vault/src/test/java/org/baeldung/spring/cloud/vaultsample/SpringContextLiveTest.java +++ b/spring-cloud/spring-cloud-vault/src/test/java/org/baeldung/spring/cloud/vaultsample/SpringContextLiveTest.java @@ -5,6 +5,15 @@ import org.junit.runner.RunWith; import org.springframework.boot.test.context.SpringBootTest; import org.springframework.test.context.junit4.SpringRunner; +/** + * This live test requires: + * vault server up and running on the environment + * + *
+ * For more info on setting up the vault server: + * https://www.baeldung.com/vault + * + */ @RunWith(SpringRunner.class) @SpringBootTest(classes = VaultSampleApplication.class) public class SpringContextLiveTest { diff --git a/spring-jenkins-pipeline/src/test/resources/application.properties b/spring-jenkins-pipeline/src/test/resources/application.properties new file mode 100644 index 0000000000..4ee830556a --- /dev/null +++ b/spring-jenkins-pipeline/src/test/resources/application.properties @@ -0,0 +1,2 @@ +#To use a randomly allocated free port during tests to avoid port conflict across tests +spring.data.mongodb.port=0 diff --git a/spring-jms/src/test/java/org/baeldung/SpringContextIntegrationTest.java b/spring-jms/src/test/java/org/baeldung/SpringContextIntegrationTest.java index e13809f571..483ffec208 100644 --- a/spring-jms/src/test/java/org/baeldung/SpringContextIntegrationTest.java +++ b/spring-jms/src/test/java/org/baeldung/SpringContextIntegrationTest.java @@ -6,7 +6,7 @@ import org.springframework.test.context.ContextConfiguration; import org.springframework.test.context.junit4.SpringJUnit4ClassRunner; @RunWith(SpringJUnit4ClassRunner.class) -@ContextConfiguration(locations = {"classpath:applicationContext.xml", "classpath:EmbeddedActiveMQ.xml"}) +@ContextConfiguration(locations = { "classpath:applicationContext.xml" }) public class SpringContextIntegrationTest { @Test diff --git a/spring-jms/src/test/java/org/baeldung/SpringContextTest.java b/spring-jms/src/test/java/org/baeldung/SpringContextTest.java index e89faeebb7..11c9d9bca6 100644 --- a/spring-jms/src/test/java/org/baeldung/SpringContextTest.java +++ b/spring-jms/src/test/java/org/baeldung/SpringContextTest.java @@ -6,7 +6,7 @@ import org.springframework.test.context.ContextConfiguration; import org.springframework.test.context.junit4.SpringJUnit4ClassRunner; @RunWith(SpringJUnit4ClassRunner.class) -@ContextConfiguration(locations = {"classpath:applicationContext.xml", "classpath:EmbeddedActiveMQ.xml"}) +@ContextConfiguration(locations = { "classpath:applicationContext.xml" }) public class SpringContextTest { @Test diff --git a/spring-rest-angular/src/main/java/org/baeldung/web/main/PersistenceConfig.java b/spring-rest-angular/src/main/java/org/baeldung/web/main/PersistenceConfig.java index e0f6002733..0fc6b74892 100644 --- a/spring-rest-angular/src/main/java/org/baeldung/web/main/PersistenceConfig.java +++ b/spring-rest-angular/src/main/java/org/baeldung/web/main/PersistenceConfig.java @@ -26,7 +26,7 @@ public class PersistenceConfig { @Bean public DataSource dataSource() { EmbeddedDatabaseBuilder builder = new EmbeddedDatabaseBuilder(); - EmbeddedDatabase db = builder.setType(EmbeddedDatabaseType.HSQL).addScript("db/sql/data.sql").build(); + EmbeddedDatabase db = builder.setType(EmbeddedDatabaseType.HSQL).build(); return db; } diff --git a/spring-rest-angular/src/main/resources/application.properties b/spring-rest-angular/src/main/resources/application.properties index 2571d286a3..cfa27938c9 100644 --- a/spring-rest-angular/src/main/resources/application.properties +++ b/spring-rest-angular/src/main/resources/application.properties @@ -1,4 +1,5 @@ server.servlet.contextPath=/ spring.h2.console.enabled=true logging.level.org.hibernate.SQL=info -spring.jpa.hibernate.ddl-auto=none \ No newline at end of file +spring.jpa.generate-ddl=true +spring.jpa.hibernate.ddl-auto=create \ No newline at end of file diff --git a/spring-rest-angular/src/main/resources/db/sql/data.sql b/spring-rest-angular/src/main/resources/data.sql similarity index 90% rename from spring-rest-angular/src/main/resources/db/sql/data.sql rename to spring-rest-angular/src/main/resources/data.sql index 418381a681..71e54b29ce 100644 --- a/spring-rest-angular/src/main/resources/db/sql/data.sql +++ b/spring-rest-angular/src/main/resources/data.sql @@ -1,10 +1,3 @@ -CREATE TABLE student ( - id INTEGER PRIMARY KEY, - name VARCHAR(30), - gender VARCHAR(10), - age INTEGER -); - INSERT INTO student (id,name,gender,age) VALUES (1,'Bryan', 'Male',20); INSERT INTO student (id,name,gender,age) diff --git a/spring-security-mvc/src/test/java/com/baeldung/SpringContextIntegrationTest.java b/spring-security-mvc/src/test/java/com/baeldung/SpringContextIntegrationTest.java index 8e53a6371a..ac9da5ca60 100644 --- a/spring-security-mvc/src/test/java/com/baeldung/SpringContextIntegrationTest.java +++ b/spring-security-mvc/src/test/java/com/baeldung/SpringContextIntegrationTest.java @@ -5,8 +5,10 @@ import org.junit.runner.RunWith; import org.springframework.boot.test.context.SpringBootTest; import org.springframework.test.context.junit4.SpringRunner; +import com.baeldung.session.SpringSessionApplication; + @RunWith(SpringRunner.class) -@SpringBootTest +@SpringBootTest(classes = SpringSessionApplication.class) public class SpringContextIntegrationTest { @Test diff --git a/spring-cloud/spring-cloud-bootstrap/gateway/src/test/java/com/baeldung/spring/cloud/bootstrap/gateway/SpringContextIntegrationTest.java b/spring-security-mvc/src/test/java/com/baeldung/SpringContextTest.java similarity index 64% rename from spring-cloud/spring-cloud-bootstrap/gateway/src/test/java/com/baeldung/spring/cloud/bootstrap/gateway/SpringContextIntegrationTest.java rename to spring-security-mvc/src/test/java/com/baeldung/SpringContextTest.java index dc635cd003..f1c3801c8a 100644 --- a/spring-cloud/spring-cloud-bootstrap/gateway/src/test/java/com/baeldung/spring/cloud/bootstrap/gateway/SpringContextIntegrationTest.java +++ b/spring-security-mvc/src/test/java/com/baeldung/SpringContextTest.java @@ -1,16 +1,17 @@ -package com.baeldung.spring.cloud.bootstrap.gateway; +package com.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.session.SpringSessionApplication; + @RunWith(SpringRunner.class) -@SpringBootTest -public class SpringContextIntegrationTest { +@SpringBootTest(classes = SpringSessionApplication.class) +public class SpringContextTest { @Test public void whenSpringContextIsBootstrapped_thenNoExceptions() { } - } diff --git a/spring-session/spring-session-mongodb/pom.xml b/spring-session/spring-session-mongodb/pom.xml index dc055ff32d..b9e06615de 100644 --- a/spring-session/spring-session-mongodb/pom.xml +++ b/spring-session/spring-session-mongodb/pom.xml @@ -40,6 +40,12 @@ spring-boot-starter-test test + + + de.flapdoodle.embed + de.flapdoodle.embed.mongo + test + diff --git a/spring-session/spring-session-mongodb/src/test/java/org/baeldung/SpringContextIntegrationTest.java b/spring-session/spring-session-mongodb/src/test/java/org/baeldung/SpringContextIntegrationTest.java index 16b7404f57..1acc6a5cb1 100644 --- a/spring-session/spring-session-mongodb/src/test/java/org/baeldung/SpringContextIntegrationTest.java +++ b/spring-session/spring-session-mongodb/src/test/java/org/baeldung/SpringContextIntegrationTest.java @@ -7,7 +7,7 @@ import org.springframework.boot.test.context.SpringBootTest; import org.springframework.test.context.junit4.SpringRunner; @RunWith(SpringRunner.class) -@SpringBootTest(classes = SpringSessionMongoDBApplication.class) +@SpringBootTest(classes = SpringSessionMongoDBApplication.class, webEnvironment = SpringBootTest.WebEnvironment.RANDOM_PORT) public class SpringContextIntegrationTest { @Test diff --git a/spring-session/spring-session-mongodb/src/test/java/org/baeldung/SpringContextLiveTest.java b/spring-session/spring-session-mongodb/src/test/java/org/baeldung/SpringContextTest.java similarity index 71% rename from spring-session/spring-session-mongodb/src/test/java/org/baeldung/SpringContextLiveTest.java rename to spring-session/spring-session-mongodb/src/test/java/org/baeldung/SpringContextTest.java index b41f2b0338..cc935b8cfb 100644 --- a/spring-session/spring-session-mongodb/src/test/java/org/baeldung/SpringContextLiveTest.java +++ b/spring-session/spring-session-mongodb/src/test/java/org/baeldung/SpringContextTest.java @@ -7,8 +7,8 @@ import org.springframework.boot.test.context.SpringBootTest; import org.springframework.test.context.junit4.SpringRunner; @RunWith(SpringRunner.class) -@SpringBootTest(classes = SpringSessionMongoDBApplication.class) -public class SpringContextLiveTest { +@SpringBootTest(classes = SpringSessionMongoDBApplication.class, webEnvironment = SpringBootTest.WebEnvironment.RANDOM_PORT) +public class SpringContextTest { @Test public void whenSpringContextIsBootstrapped_thenNoExceptions() { diff --git a/spring-session/spring-session-mongodb/src/test/resources/application.properties b/spring-session/spring-session-mongodb/src/test/resources/application.properties new file mode 100644 index 0000000000..4ee830556a --- /dev/null +++ b/spring-session/spring-session-mongodb/src/test/resources/application.properties @@ -0,0 +1,2 @@ +#To use a randomly allocated free port during tests to avoid port conflict across tests +spring.data.mongodb.port=0 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 deleted file mode 100644 index a62e728826..0000000000 --- a/spring-session/spring-session-redis/src/test/java/org/baeldung/SpringContextIntegrationTest.java +++ /dev/null @@ -1,17 +0,0 @@ -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-session/spring-session-redis/src/test/java/org/baeldung/SpringContextLiveTest.java b/spring-session/spring-session-redis/src/test/java/org/baeldung/SpringContextLiveTest.java index b23ce7dbbb..3a4f14e9e6 100644 --- a/spring-session/spring-session-redis/src/test/java/org/baeldung/SpringContextLiveTest.java +++ b/spring-session/spring-session-redis/src/test/java/org/baeldung/SpringContextLiveTest.java @@ -7,6 +7,10 @@ import org.springframework.test.context.junit4.SpringRunner; import com.baeldung.spring.session.SessionWebApplication; +/** + * This live test requires: + * redis instance running on the environment + */ @RunWith(SpringRunner.class) @SpringBootTest(classes = SessionWebApplication.class) public class SpringContextLiveTest { diff --git a/spring-vault/src/test/java/org/baeldung/SpringContextIntegrationTest.java b/spring-vault/src/test/java/org/baeldung/SpringContextIntegrationTest.java deleted file mode 100644 index a2d727ea79..0000000000 --- a/spring-vault/src/test/java/org/baeldung/SpringContextIntegrationTest.java +++ /dev/null @@ -1,16 +0,0 @@ -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-vault/src/test/java/org/baeldung/SpringContextLiveTest.java b/spring-vault/src/test/java/org/baeldung/SpringContextLiveTest.java index 1b3db59ecb..60dc119f13 100644 --- a/spring-vault/src/test/java/org/baeldung/SpringContextLiveTest.java +++ b/spring-vault/src/test/java/org/baeldung/SpringContextLiveTest.java @@ -6,6 +6,15 @@ import org.junit.runner.RunWith; import org.springframework.boot.test.context.SpringBootTest; import org.springframework.test.context.junit4.SpringRunner; +/** + * This live test requires: + * vault server up and running on the environment + * + *
+ * For more info on setting up the vault server: + * https://www.baeldung.com/vault + * + */ @RunWith(SpringRunner.class) @SpringBootTest(classes = SpringVaultApplication.class) public class SpringContextLiveTest { diff --git a/spring-vault/src/test/resources/application.properties b/spring-vault/src/test/resources/application.properties new file mode 100644 index 0000000000..709574239b --- /dev/null +++ b/spring-vault/src/test/resources/application.properties @@ -0,0 +1 @@ +spring.main.allow-bean-definition-overriding=true \ No newline at end of file diff --git a/spring-webflux-amqp/src/main/resources/application.yml b/spring-webflux-amqp/src/main/resources/application.yml index 3f527ce4c5..702aaba357 100755 --- a/spring-webflux-amqp/src/main/resources/application.yml +++ b/spring-webflux-amqp/src/main/resources/application.yml @@ -1,6 +1,6 @@ spring: rabbitmq: - host: 192.168.99.100 + host: localhost port: 5672 username: guest password: guest diff --git a/spring-webflux-amqp/src/test/java/org/baeldung/SpringContextIntegrationTest.java b/spring-webflux-amqp/src/test/java/org/baeldung/SpringContextIntegrationTest.java deleted file mode 100644 index 35efff49c2..0000000000 --- a/spring-webflux-amqp/src/test/java/org/baeldung/SpringContextIntegrationTest.java +++ /dev/null @@ -1,16 +0,0 @@ -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-webflux-amqp/src/test/java/org/baeldung/SpringContextLiveTest.java b/spring-webflux-amqp/src/test/java/org/baeldung/SpringContextLiveTest.java index effe8d2cfa..4d9f658cdc 100644 --- a/spring-webflux-amqp/src/test/java/org/baeldung/SpringContextLiveTest.java +++ b/spring-webflux-amqp/src/test/java/org/baeldung/SpringContextLiveTest.java @@ -6,6 +6,15 @@ import org.junit.runner.RunWith; import org.springframework.boot.test.context.SpringBootTest; import org.springframework.test.context.junit4.SpringRunner; +/** + * This live test requires: + * rabbitmq instance running on the environment + * + *
+ * To run rabbitmq using docker image: + * (e.g. `docker run -d --name rabbitmq -p 5672:5672 rabbitmq:3`) + * + */ @RunWith(SpringRunner.class) @SpringBootTest(classes = SpringWebfluxAmqpApplication.class) public class SpringContextLiveTest { From 9f18b6bcbe175f898295360d8a01ea51f9b46733 Mon Sep 17 00:00:00 2001 From: Sam Millington Date: Wed, 25 Sep 2019 14:28:28 +0100 Subject: [PATCH 23/29] [BAEL-17495] - Add README descriptions 11 (#7861) * [BAEL-17495] - Add README descriptions 11 * Changed wording for the REST modules --- spring-reactive-kotlin/README.md | 4 ++++ spring-reactor/README.md | 4 ++++ spring-remoting/README.md | 4 +++- spring-rest-angular/README.md | 4 +++- spring-rest-compress/README.md | 7 ++++--- spring-rest-full/README.md | 5 +++-- spring-rest-hal-browser/README.md | 4 ++++ spring-rest-query-language/README.md | 9 +++------ spring-rest-shell/README.md | 4 +++- spring-rest/README.md | 4 +++- 10 files changed, 34 insertions(+), 15 deletions(-) diff --git a/spring-reactive-kotlin/README.md b/spring-reactive-kotlin/README.md index cf5debc617..46f4b580fd 100644 --- a/spring-reactive-kotlin/README.md +++ b/spring-reactive-kotlin/README.md @@ -1,2 +1,6 @@ +## Spring Reactive Kotlin + +This module contains articles about reactive Kotlin + ### Relevant Articles: - [Spring Webflux with Kotlin](http://www.baeldung.com/spring-webflux-kotlin) diff --git a/spring-reactor/README.md b/spring-reactor/README.md index 0da2d6be51..e7d7eb927d 100644 --- a/spring-reactor/README.md +++ b/spring-reactor/README.md @@ -1,3 +1,7 @@ +## Spring Reactor + +This module contains articles about Spring Reactor + ## Relevant articles: - [Introduction to Spring Reactor](http://www.baeldung.com/spring-reactor) diff --git a/spring-remoting/README.md b/spring-remoting/README.md index 0898b9b002..247aa52db2 100644 --- a/spring-remoting/README.md +++ b/spring-remoting/README.md @@ -1,4 +1,6 @@ -## Spring Remoting Tutorials +## Spring Remoting + +This module contains articles about Spring Remoting ### Relevant Articles - [Intro to Spring Remoting with HTTP Invokers](http://www.baeldung.com/spring-remoting-http-invoker) diff --git a/spring-rest-angular/README.md b/spring-rest-angular/README.md index d2c2879649..5cd2570152 100644 --- a/spring-rest-angular/README.md +++ b/spring-rest-angular/README.md @@ -1,4 +1,6 @@ -## Spring REST Angular Example Project +## Spring REST Angular + +This module contains articles about REST APIs with Spring and Angular ### Relevant Articles: diff --git a/spring-rest-compress/README.md b/spring-rest-compress/README.md index 238c28e4b5..ce627d8595 100644 --- a/spring-rest-compress/README.md +++ b/spring-rest-compress/README.md @@ -1,5 +1,6 @@ -========================================================================= -## How to compress requests using the Spring RestTemplate Example Project +## Spring REST Compress + +This module contains articles about request compression with Spring ### Relevant Articles: -- [How to compress requests using the Spring RestTemplate]() +- [How to compress requests using the Spring RestTemplate](https://www.baeldung.com/spring-resttemplate-compressing-requests) diff --git a/spring-rest-full/README.md b/spring-rest-full/README.md index b7b006d75e..a0e6e74179 100644 --- a/spring-rest-full/README.md +++ b/spring-rest-full/README.md @@ -1,8 +1,9 @@ -========= +## Spring REST Full -## REST Example Project with Spring +This module contains articles about REST APIs with Spring ### Courses + The "REST With Spring" Classes: http://bit.ly/restwithspring The "Learn Spring Security" Classes: http://github.learnspringsecurity.com diff --git a/spring-rest-hal-browser/README.md b/spring-rest-hal-browser/README.md index d9760c8295..027937f116 100644 --- a/spring-rest-hal-browser/README.md +++ b/spring-rest-hal-browser/README.md @@ -1,2 +1,6 @@ +## Spring REST HAL Browser + +This module contains articles about Spring REST with the HAL browser + ### Relevant Articles: - [Spring REST and HAL Browser](http://www.baeldung.com/spring-rest-hal) diff --git a/spring-rest-query-language/README.md b/spring-rest-query-language/README.md index 7677f96379..383cecec36 100644 --- a/spring-rest-query-language/README.md +++ b/spring-rest-query-language/README.md @@ -1,8 +1,9 @@ -========= +## Spring REST Query Language -## REST Example Project Query Language +This module contains articles about the REST query language with Spring ### Courses + The "REST With Spring" Classes: http://bit.ly/restwithspring The "Learn Spring Security" Classes: http://github.learnspringsecurity.com @@ -16,15 +17,11 @@ The "Learn Spring Security" Classes: http://github.learnspringsecurity.com - [REST Query Language with RSQL](http://www.baeldung.com/rest-api-search-language-rsql-fiql) - [REST Query Language – Implementing OR Operation](http://www.baeldung.com/rest-api-query-search-or-operation) - - - ### Build the Project ``` mvn clean install ``` - ### Set up MySQL ``` mysql -u root -p diff --git a/spring-rest-shell/README.md b/spring-rest-shell/README.md index b250f06a4b..0b126e6b1c 100644 --- a/spring-rest-shell/README.md +++ b/spring-rest-shell/README.md @@ -1,4 +1,6 @@ -## Spring REST Shell Project +## Spring REST Shell + +This module contains articles about Spring REST Shell ### Relevant Articles diff --git a/spring-rest/README.md b/spring-rest/README.md index 54b47604d4..1d713c05c0 100644 --- a/spring-rest/README.md +++ b/spring-rest/README.md @@ -1,4 +1,6 @@ -## Spring REST Example Project +## Spring REST + +This module contains articles about REST APIs with Spring ### The Course The "REST With Spring" Classes: http://bit.ly/restwithspring From 2a381c38aa30ce02d35a704bd4e1840cad5adbd0 Mon Sep 17 00:00:00 2001 From: Sam Millington Date: Wed, 25 Sep 2019 14:30:01 +0100 Subject: [PATCH 24/29] [BAEL-17496] - Add README descriptions 12 (#7862) * [BAEL-17496] - Add README descriptions 12 * Small changes --- spring-rest-simple/README.md | 4 ++++ spring-resttemplate/README.md | 4 +++- spring-roo/README.md | 4 ++++ spring-security-acl/README.md | 4 +++- spring-security-angular/README.md | 4 ++++ spring-security-cache-control/README.md | 4 ++-- spring-security-core/README.md | 18 +++++++++++------- .../{README.MD => README.md} | 4 ++++ spring-security-mvc-custom/README.md | 4 ++-- spring-security-mvc-digest-auth/README.md | 4 ++-- 10 files changed, 39 insertions(+), 15 deletions(-) rename spring-security-mvc-boot/{README.MD => README.md} (91%) diff --git a/spring-rest-simple/README.md b/spring-rest-simple/README.md index c01f27bd98..d60f57b227 100644 --- a/spring-rest-simple/README.md +++ b/spring-rest-simple/README.md @@ -1,3 +1,7 @@ +## Spring REST Simple + +This module contains articles about REST APIs in Spring + ## Relevant articles: - [Guide to UriComponentsBuilder in Spring](http://www.baeldung.com/spring-uricomponentsbuilder) diff --git a/spring-resttemplate/README.md b/spring-resttemplate/README.md index 97a89ff7aa..9b75e1aa81 100644 --- a/spring-resttemplate/README.md +++ b/spring-resttemplate/README.md @@ -1,4 +1,6 @@ -## Spring REST Example Project +## Spring RestTemplate + +This module contains articles about Spring RestTemplate ### The Course The "REST With Spring" Classes: http://bit.ly/restwithspring diff --git a/spring-roo/README.md b/spring-roo/README.md index b63b6f35d4..5a8ce6e30f 100644 --- a/spring-roo/README.md +++ b/spring-roo/README.md @@ -1,2 +1,6 @@ +## Spring Roo + +This module contains articles about Spring Roo + ### Relevant Articles: [Quick Guide to Spring Roo](http://www.baeldung.com/spring-roo) diff --git a/spring-security-acl/README.md b/spring-security-acl/README.md index fb3e8160ab..2f95793f8d 100644 --- a/spring-security-acl/README.md +++ b/spring-security-acl/README.md @@ -1,4 +1,6 @@ -## Spring Security ACL Project +## Spring Security ACL + +This module contains articles about Spring Security ACL ### Relevant Articles - [Introduction to Spring Security ACL](http://www.baeldung.com/spring-security-acl) diff --git a/spring-security-angular/README.md b/spring-security-angular/README.md index 80312c4bab..2b376a539f 100644 --- a/spring-security-angular/README.md +++ b/spring-security-angular/README.md @@ -1,2 +1,6 @@ +## Spring Security Angular + +This module contains articles about Spring Security with Angular + ### Relevant Articles: - [Spring Security Login Page with Angular](https://www.baeldung.com/spring-security-login-angular) diff --git a/spring-security-cache-control/README.md b/spring-security-cache-control/README.md index 4b0bab72cb..fc5bdda1f6 100644 --- a/spring-security-cache-control/README.md +++ b/spring-security-cache-control/README.md @@ -1,6 +1,6 @@ -========= - ## Spring Security Cache Control +This module contains articles about cache control with Spring Security + ### Relevant Articles: - [Spring Security – Cache Control Headers](http://www.baeldung.com/spring-security-cache-control-headers) diff --git a/spring-security-core/README.md b/spring-security-core/README.md index bc9a8afed7..3dfcb276d7 100644 --- a/spring-security-core/README.md +++ b/spring-security-core/README.md @@ -1,13 +1,17 @@ -## @PreFilter and @PostFilter annotations +## Spring Security Core -### Build the Project ### - -``` -mvn clean install -``` +This module contains articles about core Spring Security ### Relevant Articles: - [Spring Security – @PreFilter and @PostFilter](http://www.baeldung.com/spring-security-prefilter-postfilter) - [Spring Boot Authentication Auditing Support](http://www.baeldung.com/spring-boot-authentication-audit) - [Introduction to Spring Method Security](http://www.baeldung.com/spring-security-method-security) -- [Overview and Need for DelegatingFilterProxy in Spring](https://www.baeldung.com/spring-delegating-filter-proxy) \ No newline at end of file +- [Overview and Need for DelegatingFilterProxy in Spring](https://www.baeldung.com/spring-delegating-filter-proxy) + +### @PreFilter and @PostFilter annotations + +#### Build the Project + +`mvn clean install` + + diff --git a/spring-security-mvc-boot/README.MD b/spring-security-mvc-boot/README.md similarity index 91% rename from spring-security-mvc-boot/README.MD rename to spring-security-mvc-boot/README.md index 20036283a3..150ea3eee9 100644 --- a/spring-security-mvc-boot/README.MD +++ b/spring-security-mvc-boot/README.md @@ -1,3 +1,7 @@ +## Spring Boot Security MVC + +This module contains articles about Spring Security with Spring MVC in Boot applications + ### The Course The "REST With Spring" Classes: http://github.learnspringsecurity.com diff --git a/spring-security-mvc-custom/README.md b/spring-security-mvc-custom/README.md index ca0731a0c3..84bdec3c10 100644 --- a/spring-security-mvc-custom/README.md +++ b/spring-security-mvc-custom/README.md @@ -1,6 +1,6 @@ -========= +## Spring Security MVC Custom -## Spring Security Login Example Project +This module contains articles about Spring Security with custom MVC applications ###The Course The "REST With Spring" Classes: http://github.learnspringsecurity.com diff --git a/spring-security-mvc-digest-auth/README.md b/spring-security-mvc-digest-auth/README.md index be0bf0a675..da612e273b 100644 --- a/spring-security-mvc-digest-auth/README.md +++ b/spring-security-mvc-digest-auth/README.md @@ -1,6 +1,6 @@ -========= +## Spring Security with Digest Authentication -## Spring Security with Digest Authentication Example Project +This module contains articles about digest authentication with Spring Security ###The Course The "Learn Spring Security" Classes: http://github.learnspringsecurity.com From c2cf7ae969d2b070a132bb629e8e0613d922c98c Mon Sep 17 00:00:00 2001 From: Sam Millington Date: Wed, 25 Sep 2019 14:30:51 +0100 Subject: [PATCH 25/29] [BAEL-17476] - Add README descriptions 13 (#7863) * [BAEL-17476] - Add README descriptions 13 * Changed the wording in some modules --- spring-security-mvc-jsonview/README.md | 4 ++++ spring-security-mvc-ldap/README.md | 3 ++- spring-security-mvc-login/README.md | 6 +++--- .../README.md | 4 ++-- spring-security-mvc-socket/README.md | 16 ++++++++++++---- spring-security-mvc/README.md | 4 ++-- spring-security-openid/README.md | 9 +++++++-- spring-security-react/README.md | 4 ++-- spring-security-rest-basic-auth/README.md | 5 +++-- spring-security-rest/README.md | 4 ++-- 10 files changed, 39 insertions(+), 20 deletions(-) diff --git a/spring-security-mvc-jsonview/README.md b/spring-security-mvc-jsonview/README.md index 35c806e856..0e28d4c292 100644 --- a/spring-security-mvc-jsonview/README.md +++ b/spring-security-mvc-jsonview/README.md @@ -1,3 +1,7 @@ +## Spring Security MVC Json View + +This module contains articles about Spring Security with JSON + ### Relevant Articles: - [Filtering Jackson JSON Output Based on Spring Security Role](https://www.baeldung.com/spring-security-role-filter-json) diff --git a/spring-security-mvc-ldap/README.md b/spring-security-mvc-ldap/README.md index 6f03143183..fe04cd23fa 100644 --- a/spring-security-mvc-ldap/README.md +++ b/spring-security-mvc-ldap/README.md @@ -1,5 +1,6 @@ +## Spring Security LDAP -## Spring Security with LDAP Example Project +This module contains articles about Spring Security LDAP ###The Course The "Learn Spring Security" Classes: http://github.learnspringsecurity.com diff --git a/spring-security-mvc-login/README.md b/spring-security-mvc-login/README.md index 983d949cb8..a20a04edec 100644 --- a/spring-security-mvc-login/README.md +++ b/spring-security-mvc-login/README.md @@ -1,8 +1,8 @@ -========= +## Spring Security Login -## Spring Security Login Example Project +This module contains articles about login mechanisms with Spring Security -###The Course +### The Course The "Learn Spring Security" Classes: http://github.learnspringsecurity.com ### Relevant Articles: diff --git a/spring-security-mvc-persisted-remember-me/README.md b/spring-security-mvc-persisted-remember-me/README.md index db2ae890f9..260e55198a 100644 --- a/spring-security-mvc-persisted-remember-me/README.md +++ b/spring-security-mvc-persisted-remember-me/README.md @@ -1,6 +1,6 @@ -========= +## Spring Security Persisted Remember Me -## Spring Security Persisted Remember Me Example Project +This module contains articles about 'remember me' with Spring Security ###The Course The "Learn Spring Security" Classes: http://github.learnspringsecurity.com diff --git a/spring-security-mvc-socket/README.md b/spring-security-mvc-socket/README.md index d3f28af387..187bbe82b0 100644 --- a/spring-security-mvc-socket/README.md +++ b/spring-security-mvc-socket/README.md @@ -1,3 +1,15 @@ +## Spring Security MVC Socket + +This module contains articles about WebSockets with Spring Security + +### Relevant Articles: + +- [Intro to Security and WebSockets](http://www.baeldung.com/spring-security-websockets) +- [Spring WebSockets: Build an User Chat](https://www.baeldung.com/spring-websockets-send-message-to-user) +- [REST vs WebSockets](https://www.baeldung.com/rest-vs-websockets) + +### Running This Project: + 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. @@ -5,7 +17,3 @@ 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: Build an User Chat](https://www.baeldung.com/spring-websockets-send-message-to-user) -- [REST vs WebSockets](https://www.baeldung.com/rest-vs-websockets) diff --git a/spring-security-mvc/README.md b/spring-security-mvc/README.md index ce40ed5f5f..ad55e903c5 100644 --- a/spring-security-mvc/README.md +++ b/spring-security-mvc/README.md @@ -1,6 +1,6 @@ -========= +## Spring Security MVC -## Spring Security Login Example Project +This module contains articles about Spring Security in MVC applications ###The Course The "Learn Spring Security" Classes: http://github.learnspringsecurity.com diff --git a/spring-security-openid/README.md b/spring-security-openid/README.md index 8c65c09f2f..1512ffbde5 100644 --- a/spring-security-openid/README.md +++ b/spring-security-openid/README.md @@ -1,16 +1,21 @@ +## Spring Security OpenID + +This module contains articles about OpenID with Spring Security + ### Relevant articles - [Spring Security and OpenID Connect](http://www.baeldung.com/spring-security-openid-connect) - -## OpenID Connect with Spring Security +### OpenID Connect with Spring Security ### Run the Project + ``` mvn spring-boot:run ``` ### Obtain Google App - Client ID, Secret + - You need to get client id and client secret by creating a new project at [Google Developer Console](https://console.developers.google.com/project/_/apiui/credential?pli=1) - Make sure to add OAuth2 credentials by selecting Add credentials > OAuth 2.0 client ID - Make sure you set redirect URI to http://localhost:8081/google-login diff --git a/spring-security-react/README.md b/spring-security-react/README.md index 1a845f0daa..4eb402c699 100644 --- a/spring-security-react/README.md +++ b/spring-security-react/README.md @@ -1,6 +1,6 @@ -========= +## Spring Security React -## Spring Security React Example Project +This module contains articles about Spring Security with ReactJS ### The Course diff --git a/spring-security-rest-basic-auth/README.md b/spring-security-rest-basic-auth/README.md index b905824161..41d463f1e2 100644 --- a/spring-security-rest-basic-auth/README.md +++ b/spring-security-rest-basic-auth/README.md @@ -1,8 +1,9 @@ -========= +## Spring Security REST Basic Authentication -## REST API with Basic Authentication - Example Project +This module contains articles about basic authentication in RESTful APIs with Spring Security ###The Course + The "Learn Spring Security" Classes: http://github.learnspringsecurity.com ### Relevant Articles: diff --git a/spring-security-rest/README.md b/spring-security-rest/README.md index f450a514b2..c7ac45e38f 100644 --- a/spring-security-rest/README.md +++ b/spring-security-rest/README.md @@ -1,6 +1,6 @@ -========= +## Spring Security REST -## Spring Security for REST Example Project +This module contains articles about REST APIs with Spring Security ### Courses The "REST With Spring" Classes: http://bit.ly/restwithspring From e45da12044b801a0342bc4d14455f211abf2f552 Mon Sep 17 00:00:00 2001 From: Sam Millington Date: Wed, 25 Sep 2019 14:37:18 +0100 Subject: [PATCH 26/29] [BAEL-17498] - Add README descriptions 14 (#7864) * [BAEL-17498] - Add README descriptions 14 * Changed wording in modules --- spring-security-rest-custom/README.md | 4 ++-- spring-security-sso/README.md | 4 ++++ spring-security-stormpath/README.md | 4 ++++ spring-security-thymeleaf/README.MD | 5 +++-- spring-security-x509/README.md | 6 +++++- spring-session/README.md | 4 ++-- spring-sleuth/README.md | 6 +++++- spring-soap/README.md | 6 +++++- spring-social-login/README.md | 4 ++++ spring-spel/README.md | 4 ++++ 10 files changed, 38 insertions(+), 9 deletions(-) diff --git a/spring-security-rest-custom/README.md b/spring-security-rest-custom/README.md index d7cb31e784..846093b554 100644 --- a/spring-security-rest-custom/README.md +++ b/spring-security-rest-custom/README.md @@ -1,6 +1,6 @@ -========= +## Spring Security REST Custom -## Spring Security for REST Example Project +This module contains articles about REST APIs with Spring Security ###The Course The "REST With Spring" Classes: http://github.learnspringsecurity.com diff --git a/spring-security-sso/README.md b/spring-security-sso/README.md index 88e3fbb2f7..31694bee45 100644 --- a/spring-security-sso/README.md +++ b/spring-security-sso/README.md @@ -1,3 +1,7 @@ +## Spring Security Single Sign On + +This module contains modules about single-sign-on with Spring Security + ### Relevant Articles: - [Simple Single Sign-On with Spring Security OAuth2](http://www.baeldung.com/sso-spring-security-oauth2) - [Spring Security Kerberos Integration](https://www.baeldung.com/spring-security-kerberos-integration) diff --git a/spring-security-stormpath/README.md b/spring-security-stormpath/README.md index f83882112f..abd65294a3 100644 --- a/spring-security-stormpath/README.md +++ b/spring-security-stormpath/README.md @@ -1,3 +1,7 @@ +## Spring Security Stormpath + +This module contains articles about Spring Security with Stormpath + ### Relevant articles - [Spring Security with Stormpath](http://www.baeldung.com/spring-security-stormpath) diff --git a/spring-security-thymeleaf/README.MD b/spring-security-thymeleaf/README.MD index 36007bce62..67b811fac8 100644 --- a/spring-security-thymeleaf/README.MD +++ b/spring-security-thymeleaf/README.MD @@ -1,5 +1,6 @@ -This module is for Spring Security Thymeleaf tutorial. -Jira BAEL-1556 +## Spring Security Thymeleaf + +This module contains articles about Spring Security with Thymeleaf ### Relevant Articles: diff --git a/spring-security-x509/README.md b/spring-security-x509/README.md index 2a4b84eae6..2c0e25a229 100644 --- a/spring-security-x509/README.md +++ b/spring-security-x509/README.md @@ -1,2 +1,6 @@ -Relevant Articles: +## Spring Security X.509 + +This module contains articles about X.509 authentication with Spring Security + +### Relevant Articles: - [X.509 Authentication in Spring Security](http://www.baeldung.com/x-509-authentication-in-spring-security) diff --git a/spring-session/README.md b/spring-session/README.md index c9875beadf..65040ec734 100644 --- a/spring-session/README.md +++ b/spring-session/README.md @@ -1,6 +1,6 @@ -========= +## Spring Session -## Spring Session Examples +This module contains articles about Spring Session ### Relevant Articles: - [Guide to Spring Session](https://www.baeldung.com/spring-session) diff --git a/spring-sleuth/README.md b/spring-sleuth/README.md index 47aa126939..692fbaa8b7 100644 --- a/spring-sleuth/README.md +++ b/spring-sleuth/README.md @@ -1,3 +1,7 @@ -## Relevant articles: +## Spring Sleuth + +This module contains articles about Spring Cloud Sleuth + +### Relevant articles: - [Spring Cloud Sleuth in a Monolith Application](http://www.baeldung.com/spring-cloud-sleuth-single-application) diff --git a/spring-soap/README.md b/spring-soap/README.md index 8d96350e1e..c23f0bc6f0 100644 --- a/spring-soap/README.md +++ b/spring-soap/README.md @@ -1,3 +1,7 @@ -## Relevant articles: +## Spring SOAP + +This module contains articles about SOAP APIs with Spring + +### Relevant articles: - [Creating a SOAP Web Service with Spring](https://www.baeldung.com/spring-boot-soap-web-service) diff --git a/spring-social-login/README.md b/spring-social-login/README.md index f745a90acb..c3ca867a95 100644 --- a/spring-social-login/README.md +++ b/spring-social-login/README.md @@ -1,2 +1,6 @@ +## Spring Social + +This module contains articles about Spring Social + ### Relevant Articles: - [A Secondary Facebook Login with Spring Social](http://www.baeldung.com/facebook-authentication-with-spring-security-and-social) diff --git a/spring-spel/README.md b/spring-spel/README.md index d7e69e114c..f81d304e1a 100644 --- a/spring-spel/README.md +++ b/spring-spel/README.md @@ -1,2 +1,6 @@ +## Spring Expression Language + +This module contains articles about the Spring Expression Language (SpEL) + ### Relevant Articles: - [Spring Expression Language Guide](http://www.baeldung.com/spring-expression-language) From d06b026a7be95841f644d48dc5d3984969eaf9e9 Mon Sep 17 00:00:00 2001 From: Sam Millington Date: Wed, 25 Sep 2019 14:39:31 +0100 Subject: [PATCH 27/29] [BAEL-17476] - Add Readme descriptions 15 (#7875) * [BAEL-17476] - Add Readme descriptions 15 * Added Spring Vert.X readme change --- spring-state-machine/README.md | 4 ++++ spring-static-resources/README.md | 4 ++++ spring-swagger-codegen/README.md | 4 ++++ spring-thymeleaf/README.md | 7 ++++--- spring-vault/README.md | 5 +++++ spring-vertx/README.md | 4 ++++ spring-webflux-amqp/README.md | 5 ++++- spring-zuul/README.md | 5 ++--- static-analysis/README.md | 4 ++++ stripe/README.md | 4 ++-- 10 files changed, 37 insertions(+), 9 deletions(-) diff --git a/spring-state-machine/README.md b/spring-state-machine/README.md index a2668fb650..f80ef34ef8 100644 --- a/spring-state-machine/README.md +++ b/spring-state-machine/README.md @@ -1,3 +1,7 @@ +## Spring State Machine + +This module contains articles about Spring State Machine + ### Relevant articles - [A Guide to the Spring State Machine Project](http://www.baeldung.com/spring-state-machine) diff --git a/spring-static-resources/README.md b/spring-static-resources/README.md index 64f017b5dd..8d77e6fe94 100644 --- a/spring-static-resources/README.md +++ b/spring-static-resources/README.md @@ -1,3 +1,7 @@ +## Spring Static Resources + +This module contains articles about static resources with Spring + ### Relevant Articles: - [Cachable Static Assets with Spring MVC](http://www.baeldung.com/cachable-static-assets-with-spring-mvc) - [Minification of JS and CSS Assets with Maven](http://www.baeldung.com/maven-minification-of-js-and-css-assets) diff --git a/spring-swagger-codegen/README.md b/spring-swagger-codegen/README.md index ee6b240c30..dbcf2b3e8d 100644 --- a/spring-swagger-codegen/README.md +++ b/spring-swagger-codegen/README.md @@ -1,3 +1,7 @@ +## Spring Swagger CodeGen + +This module contains articles about Spring with Swagger CodeGen + ### Relevant articles - [Generate Spring Boot REST Client with Swagger](http://www.baeldung.com/spring-boot-rest-client-swagger-codegen) diff --git a/spring-thymeleaf/README.md b/spring-thymeleaf/README.md index 082a65f55b..88f3e35f8c 100644 --- a/spring-thymeleaf/README.md +++ b/spring-thymeleaf/README.md @@ -1,6 +1,6 @@ -========= +## Spring Thymeleaf -## Spring Thymeleaf Example Project +This module contains articles about Spring with Thymeleaf ### Relevant Articles: - [Introduction to Using Thymeleaf in Spring](http://www.baeldung.com/thymeleaf-in-spring-mvc) @@ -19,13 +19,14 @@ - [Working with Select and Option in Thymeleaf](http://www.baeldung.com/thymeleaf-select-option) - [Working With Custom HTML Attributes in Thymeleaf](https://www.baeldung.com/thymeleaf-custom-html-attributes) - [Spring Request Parameters with Thymeleaf](https://www.baeldung.com/spring-thymeleaf-request-parameters) +- [[next -->]](/spring-thymeleaf-2) ### Build the Project mvn clean install - ### Run the Project + mvn cargo:run - **note**: starts on port '8082' diff --git a/spring-vault/README.md b/spring-vault/README.md index 8db065a3dd..9e1d14ba6b 100644 --- a/spring-vault/README.md +++ b/spring-vault/README.md @@ -1,2 +1,7 @@ +## Spring Vault + +This module contains articles about Spring Vault + ### Relevant Articles: + - [Spring Vault](https://www.baeldung.com/spring-vault) diff --git a/spring-vertx/README.md b/spring-vertx/README.md index 05d059e1b2..e9557f330b 100644 --- a/spring-vertx/README.md +++ b/spring-vertx/README.md @@ -1,2 +1,6 @@ +## Spring Vert.x + +This module contains articles about Spring with Vert.x + ### Relevant Articles: - [Vert.x Spring Integration](http://www.baeldung.com/spring-vertx) diff --git a/spring-webflux-amqp/README.md b/spring-webflux-amqp/README.md index 5cd3391c3e..b7ac73b53d 100644 --- a/spring-webflux-amqp/README.md +++ b/spring-webflux-amqp/README.md @@ -1,4 +1,7 @@ +## Spring WebFlux AMQP + +This module contains articles about Spring WebFlux with AMQP + ### Relevant Articles: -================================ - [Spring AMQP in Reactive Applications](http://www.baeldung.com/spring-amqp-reactive) diff --git a/spring-zuul/README.md b/spring-zuul/README.md index 41a77f70c8..a2ea211195 100644 --- a/spring-zuul/README.md +++ b/spring-zuul/README.md @@ -1,7 +1,6 @@ -========= - -## Spring REST with a Zuul +## Spring Zuul +This module contains articles about Spring with Netflix Zuul ### Relevant Articles: - [Spring REST with a Zuul Proxy](http://www.baeldung.com/spring-rest-with-zuul-proxy) diff --git a/static-analysis/README.md b/static-analysis/README.md index e4d4bc7bfc..e3710831cf 100644 --- a/static-analysis/README.md +++ b/static-analysis/README.md @@ -1,3 +1,7 @@ +## Static Analysis + +This module contains articles about static program analysis + ## Relevant articles: - [Introduction to PMD](http://www.baeldung.com/pmd) diff --git a/stripe/README.md b/stripe/README.md index 8a44ff9d33..a7134b9633 100644 --- a/stripe/README.md +++ b/stripe/README.md @@ -1,6 +1,6 @@ -### Stripe API for Java Sample Project +### Stripe -This is Spring Boot project that displays a checkout form and charges a credit card using the Stripe API for Java. +This module contains articles about Stripe ### Relevant articles From 824acb9351121e6dc912402a943e87e7369f4bec Mon Sep 17 00:00:00 2001 From: Dhawal Kapil Date: Thu, 26 Sep 2019 11:08:01 +0530 Subject: [PATCH 28/29] BAEL-17703 Fix the integrations tests in mockito (#7871) * BAEL-17703 Fix the integrations tests in mockito - Upgraded power-mockito api 2 jar - Renamed many IntegrationTests back to UnitTests as they do not require any integration components * BAEL-17703 Fix the integrations tests in mockito -Renamed MockFinals to MockFinalsUnitTest so that it can be picked by builds --- testing-modules/mockito/pom.xml | 2 +- ...egrationTest.java => LuckyNumberGeneratorUnitTest.java} | 2 +- ...ckitoIntegrationTest.java => PowerMockitoUnitTest.java} | 7 +++---- ...MockitoIntegrationTest.java => BDDMockitoUnitTest.java} | 2 +- .../mockito/{MockFinals.java => MockFinalsUnitTest.java} | 2 +- ...IntegrationTest.java => MockitoAnnotationUnitTest.java} | 2 +- ...grationTest.java => MockitoConfigExamplesUnitTest.java} | 2 +- ...nIntegrationTest.java => MockitoExceptionUnitTest.java} | 2 +- ...toMockIntegrationTest.java => MockitoMockUnitTest.java} | 2 +- ...grationTest.java => MockitoVerifyExamplesUnitTest.java} | 2 +- ...kitoSpyIntegrationTest.java => MockitoSpyUnitTest.java} | 2 +- 11 files changed, 13 insertions(+), 14 deletions(-) rename testing-modules/mockito/src/test/java/com/baeldung/powermockito/introduction/{LuckyNumberGeneratorIntegrationTest.java => LuckyNumberGeneratorUnitTest.java} (97%) rename testing-modules/mockito/src/test/java/com/baeldung/powermockito/introduction/{PowerMockitoIntegrationTest.java => PowerMockitoUnitTest.java} (94%) rename testing-modules/mockito/src/test/java/org/baeldung/bddmockito/{BDDMockitoIntegrationTest.java => BDDMockitoUnitTest.java} (98%) rename testing-modules/mockito/src/test/java/org/baeldung/mockito/{MockFinals.java => MockFinalsUnitTest.java} (95%) rename testing-modules/mockito/src/test/java/org/baeldung/mockito/{MockitoAnnotationIntegrationTest.java => MockitoAnnotationUnitTest.java} (98%) rename testing-modules/mockito/src/test/java/org/baeldung/mockito/{MockitoConfigExamplesIntegrationTest.java => MockitoConfigExamplesUnitTest.java} (98%) rename testing-modules/mockito/src/test/java/org/baeldung/mockito/{MockitoExceptionIntegrationTest.java => MockitoExceptionUnitTest.java} (97%) rename testing-modules/mockito/src/test/java/org/baeldung/mockito/{MockitoMockIntegrationTest.java => MockitoMockUnitTest.java} (98%) rename testing-modules/mockito/src/test/java/org/baeldung/mockito/{MockitoVerifyExamplesIntegrationTest.java => MockitoVerifyExamplesUnitTest.java} (98%) rename testing-modules/mockito/src/test/java/org/baeldung/mockito/spy/{MockitoSpyIntegrationTest.java => MockitoSpyUnitTest.java} (97%) diff --git a/testing-modules/mockito/pom.xml b/testing-modules/mockito/pom.xml index 7b6d6e7735..f307b80370 100644 --- a/testing-modules/mockito/pom.xml +++ b/testing-modules/mockito/pom.xml @@ -96,7 +96,7 @@ 19.0 - 1.7.0 + 2.0.2 2.0.0.0 2.1.1 diff --git a/testing-modules/mockito/src/test/java/com/baeldung/powermockito/introduction/LuckyNumberGeneratorIntegrationTest.java b/testing-modules/mockito/src/test/java/com/baeldung/powermockito/introduction/LuckyNumberGeneratorUnitTest.java similarity index 97% rename from testing-modules/mockito/src/test/java/com/baeldung/powermockito/introduction/LuckyNumberGeneratorIntegrationTest.java rename to testing-modules/mockito/src/test/java/com/baeldung/powermockito/introduction/LuckyNumberGeneratorUnitTest.java index 5e311c60f2..5b66aa0a9e 100644 --- a/testing-modules/mockito/src/test/java/com/baeldung/powermockito/introduction/LuckyNumberGeneratorIntegrationTest.java +++ b/testing-modules/mockito/src/test/java/com/baeldung/powermockito/introduction/LuckyNumberGeneratorUnitTest.java @@ -14,7 +14,7 @@ import org.powermock.modules.junit4.PowerMockRunner; @RunWith(PowerMockRunner.class) @PrepareForTest(fullyQualifiedNames = "com.baeldung.powermockito.introduction.LuckyNumberGenerator") -public class LuckyNumberGeneratorIntegrationTest { +public class LuckyNumberGeneratorUnitTest { @Test public final void givenPrivateMethodWithReturn_whenUsingPowerMockito_thenCorrect() throws Exception { diff --git a/testing-modules/mockito/src/test/java/com/baeldung/powermockito/introduction/PowerMockitoIntegrationTest.java b/testing-modules/mockito/src/test/java/com/baeldung/powermockito/introduction/PowerMockitoUnitTest.java similarity index 94% rename from testing-modules/mockito/src/test/java/com/baeldung/powermockito/introduction/PowerMockitoIntegrationTest.java rename to testing-modules/mockito/src/test/java/com/baeldung/powermockito/introduction/PowerMockitoUnitTest.java index 1b6431f0c2..4943b0486a 100644 --- a/testing-modules/mockito/src/test/java/com/baeldung/powermockito/introduction/PowerMockitoIntegrationTest.java +++ b/testing-modules/mockito/src/test/java/com/baeldung/powermockito/introduction/PowerMockitoUnitTest.java @@ -13,7 +13,7 @@ import static org.powermock.api.mockito.PowerMockito.*; @RunWith(PowerMockRunner.class) @PrepareForTest(fullyQualifiedNames = "com.baeldung.powermockito.introduction.*") -public class PowerMockitoIntegrationTest { +public class PowerMockitoUnitTest { @Test public void givenFinalMethods_whenUsingPowerMockito_thenCorrect() throws Exception { @@ -44,10 +44,10 @@ public class PowerMockitoIntegrationTest { assertEquals("Hello Baeldung!", firstWelcome); assertEquals("Hello Baeldung!", secondWelcome); - verifyStatic(times(2)); + verifyStatic(CollaboratorWithStaticMethods.class, times(2)); CollaboratorWithStaticMethods.firstMethod(Mockito.anyString()); - verifyStatic(Mockito.never()); + verifyStatic(CollaboratorWithStaticMethods.class, Mockito.never()); CollaboratorWithStaticMethods.secondMethod(); CollaboratorWithStaticMethods.thirdMethod(); @@ -60,7 +60,6 @@ public class PowerMockitoIntegrationTest { spy(CollaboratorForPartialMocking.class); when(CollaboratorForPartialMocking.staticMethod()).thenReturn("I am a static mock method."); returnValue = CollaboratorForPartialMocking.staticMethod(); - verifyStatic(); CollaboratorForPartialMocking.staticMethod(); assertEquals("I am a static mock method.", returnValue); diff --git a/testing-modules/mockito/src/test/java/org/baeldung/bddmockito/BDDMockitoIntegrationTest.java b/testing-modules/mockito/src/test/java/org/baeldung/bddmockito/BDDMockitoUnitTest.java similarity index 98% rename from testing-modules/mockito/src/test/java/org/baeldung/bddmockito/BDDMockitoIntegrationTest.java rename to testing-modules/mockito/src/test/java/org/baeldung/bddmockito/BDDMockitoUnitTest.java index e0ca6f0a35..977a60933f 100644 --- a/testing-modules/mockito/src/test/java/org/baeldung/bddmockito/BDDMockitoIntegrationTest.java +++ b/testing-modules/mockito/src/test/java/org/baeldung/bddmockito/BDDMockitoUnitTest.java @@ -10,7 +10,7 @@ import org.mockito.Mockito; import org.mockito.invocation.InvocationOnMock; -public class BDDMockitoIntegrationTest { +public class BDDMockitoUnitTest { PhoneBookService phoneBookService; PhoneBookRepository phoneBookRepository; diff --git a/testing-modules/mockito/src/test/java/org/baeldung/mockito/MockFinals.java b/testing-modules/mockito/src/test/java/org/baeldung/mockito/MockFinalsUnitTest.java similarity index 95% rename from testing-modules/mockito/src/test/java/org/baeldung/mockito/MockFinals.java rename to testing-modules/mockito/src/test/java/org/baeldung/mockito/MockFinalsUnitTest.java index caa456c891..000774592c 100644 --- a/testing-modules/mockito/src/test/java/org/baeldung/mockito/MockFinals.java +++ b/testing-modules/mockito/src/test/java/org/baeldung/mockito/MockFinalsUnitTest.java @@ -8,7 +8,7 @@ import static org.mockito.Mockito.when; import org.baeldung.mockito.voidmethods.MyList; -public class MockFinals { +public class MockFinalsUnitTest { @Test public void whenMockFinalClassMockWorks() { diff --git a/testing-modules/mockito/src/test/java/org/baeldung/mockito/MockitoAnnotationIntegrationTest.java b/testing-modules/mockito/src/test/java/org/baeldung/mockito/MockitoAnnotationUnitTest.java similarity index 98% rename from testing-modules/mockito/src/test/java/org/baeldung/mockito/MockitoAnnotationIntegrationTest.java rename to testing-modules/mockito/src/test/java/org/baeldung/mockito/MockitoAnnotationUnitTest.java index 5e083adbf5..6bc0e69e65 100644 --- a/testing-modules/mockito/src/test/java/org/baeldung/mockito/MockitoAnnotationIntegrationTest.java +++ b/testing-modules/mockito/src/test/java/org/baeldung/mockito/MockitoAnnotationUnitTest.java @@ -11,7 +11,7 @@ import java.util.Map; import static org.junit.Assert.assertEquals; //@RunWith(MockitoJUnitRunner.class) -public class MockitoAnnotationIntegrationTest { +public class MockitoAnnotationUnitTest { @Mock private List mockedList; diff --git a/testing-modules/mockito/src/test/java/org/baeldung/mockito/MockitoConfigExamplesIntegrationTest.java b/testing-modules/mockito/src/test/java/org/baeldung/mockito/MockitoConfigExamplesUnitTest.java similarity index 98% rename from testing-modules/mockito/src/test/java/org/baeldung/mockito/MockitoConfigExamplesIntegrationTest.java rename to testing-modules/mockito/src/test/java/org/baeldung/mockito/MockitoConfigExamplesUnitTest.java index 096bbe1ed7..c065e164c5 100644 --- a/testing-modules/mockito/src/test/java/org/baeldung/mockito/MockitoConfigExamplesIntegrationTest.java +++ b/testing-modules/mockito/src/test/java/org/baeldung/mockito/MockitoConfigExamplesUnitTest.java @@ -13,7 +13,7 @@ import static org.mockito.Mockito.*; import org.baeldung.mockito.voidmethods.MyList; -public class MockitoConfigExamplesIntegrationTest { +public class MockitoConfigExamplesUnitTest { // tests diff --git a/testing-modules/mockito/src/test/java/org/baeldung/mockito/MockitoExceptionIntegrationTest.java b/testing-modules/mockito/src/test/java/org/baeldung/mockito/MockitoExceptionUnitTest.java similarity index 97% rename from testing-modules/mockito/src/test/java/org/baeldung/mockito/MockitoExceptionIntegrationTest.java rename to testing-modules/mockito/src/test/java/org/baeldung/mockito/MockitoExceptionUnitTest.java index 9a25ccb28c..88da16ae2b 100644 --- a/testing-modules/mockito/src/test/java/org/baeldung/mockito/MockitoExceptionIntegrationTest.java +++ b/testing-modules/mockito/src/test/java/org/baeldung/mockito/MockitoExceptionUnitTest.java @@ -8,7 +8,7 @@ import static org.mockito.Mockito.when; import org.junit.Test; import org.mockito.Mockito; -public class MockitoExceptionIntegrationTest { +public class MockitoExceptionUnitTest { @Test(expected = NullPointerException.class) public void whenConfigNonVoidRetunMethodToThrowEx_thenExIsThrown() { diff --git a/testing-modules/mockito/src/test/java/org/baeldung/mockito/MockitoMockIntegrationTest.java b/testing-modules/mockito/src/test/java/org/baeldung/mockito/MockitoMockUnitTest.java similarity index 98% rename from testing-modules/mockito/src/test/java/org/baeldung/mockito/MockitoMockIntegrationTest.java rename to testing-modules/mockito/src/test/java/org/baeldung/mockito/MockitoMockUnitTest.java index de26642ede..30c843ff13 100644 --- a/testing-modules/mockito/src/test/java/org/baeldung/mockito/MockitoMockIntegrationTest.java +++ b/testing-modules/mockito/src/test/java/org/baeldung/mockito/MockitoMockUnitTest.java @@ -17,7 +17,7 @@ import org.mockito.exceptions.verification.TooLittleActualInvocations; import org.mockito.invocation.InvocationOnMock; import org.mockito.stubbing.Answer; -public class MockitoMockIntegrationTest { +public class MockitoMockUnitTest { private static class CustomAnswer implements Answer { @Override diff --git a/testing-modules/mockito/src/test/java/org/baeldung/mockito/MockitoVerifyExamplesIntegrationTest.java b/testing-modules/mockito/src/test/java/org/baeldung/mockito/MockitoVerifyExamplesUnitTest.java similarity index 98% rename from testing-modules/mockito/src/test/java/org/baeldung/mockito/MockitoVerifyExamplesIntegrationTest.java rename to testing-modules/mockito/src/test/java/org/baeldung/mockito/MockitoVerifyExamplesUnitTest.java index 9c71b1fc4f..a6e40b84e1 100644 --- a/testing-modules/mockito/src/test/java/org/baeldung/mockito/MockitoVerifyExamplesIntegrationTest.java +++ b/testing-modules/mockito/src/test/java/org/baeldung/mockito/MockitoVerifyExamplesUnitTest.java @@ -16,7 +16,7 @@ import static org.junit.Assert.assertThat; import static org.mockito.Matchers.anyString; import static org.mockito.Mockito.*; -public class MockitoVerifyExamplesIntegrationTest { +public class MockitoVerifyExamplesUnitTest { // tests diff --git a/testing-modules/mockito/src/test/java/org/baeldung/mockito/spy/MockitoSpyIntegrationTest.java b/testing-modules/mockito/src/test/java/org/baeldung/mockito/spy/MockitoSpyUnitTest.java similarity index 97% rename from testing-modules/mockito/src/test/java/org/baeldung/mockito/spy/MockitoSpyIntegrationTest.java rename to testing-modules/mockito/src/test/java/org/baeldung/mockito/spy/MockitoSpyUnitTest.java index d0b838a789..068a4c6de9 100644 --- a/testing-modules/mockito/src/test/java/org/baeldung/mockito/spy/MockitoSpyIntegrationTest.java +++ b/testing-modules/mockito/src/test/java/org/baeldung/mockito/spy/MockitoSpyUnitTest.java @@ -12,7 +12,7 @@ import org.mockito.Spy; import org.mockito.junit.MockitoJUnitRunner; @RunWith(MockitoJUnitRunner.class) -public class MockitoSpyIntegrationTest { +public class MockitoSpyUnitTest { @Spy private List aSpyList = new ArrayList(); From 327e46c239d5c1c19c56b7e79bf4f7e899e99d1e Mon Sep 17 00:00:00 2001 From: Krzysztof Majewski Date: Thu, 26 Sep 2019 08:59:52 +0200 Subject: [PATCH 29/29] spelling fix --- .../java/com/baeldung/interpolation/ValidationExamples.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/spring-mvc-simple-2/src/main/java/com/baeldung/interpolation/ValidationExamples.java b/spring-mvc-simple-2/src/main/java/com/baeldung/interpolation/ValidationExamples.java index 30d770205e..6c9b924200 100644 --- a/spring-mvc-simple-2/src/main/java/com/baeldung/interpolation/ValidationExamples.java +++ b/spring-mvc-simple-2/src/main/java/com/baeldung/interpolation/ValidationExamples.java @@ -18,7 +18,7 @@ public class ValidationExamples { @Min( value = 1, - message = "There must be at least {value} test{value > 1 ? 's' : ''} int the test case" + message = "There must be at least {value} test{value > 1 ? 's' : ''} in the test case" ) private int testCount;