diff --git a/algorithms-searching/README.md b/algorithms-searching/README.md index aed3c7d21f..a3ea023da3 100644 --- a/algorithms-searching/README.md +++ b/algorithms-searching/README.md @@ -3,6 +3,7 @@ This module contains articles about searching algorithms. ### Relevant articles: + - [Binary Search Algorithm in Java](https://www.baeldung.com/java-binary-search) - [Depth First Search in Java](https://www.baeldung.com/java-depth-first-search) - [Interpolation Search in Java](https://www.baeldung.com/java-interpolation-search) @@ -11,3 +12,4 @@ This module contains articles about searching algorithms. - [Monte Carlo Tree Search for Tic-Tac-Toe Game](https://www.baeldung.com/java-monte-carlo-tree-search) - [Range Search Algorithm in Java](https://www.baeldung.com/java-range-search) - [Fast Pattern Matching of Strings Using Suffix Tree](https://www.baeldung.com/java-pattern-matching-suffix-tree) +- [Find the Kth Smallest Element in Two Sorted Arrays](https://www.baeldung.com/java-kth-smallest-element-in-sorted-arrays) diff --git a/apache-poi/README.md b/apache-poi/README.md index b562fefc29..599b21e063 100644 --- a/apache-poi/README.md +++ b/apache-poi/README.md @@ -3,9 +3,11 @@ This module contains articles about Apache POI ### Relevant Articles: + - [Microsoft Word Processing in Java with Apache POI](https://www.baeldung.com/java-microsoft-word-with-apache-poi) - [Working with Microsoft Excel in Java](https://www.baeldung.com/java-microsoft-excel) - [Creating a MS PowerPoint Presentation in Java](https://www.baeldung.com/apache-poi-slideshow) - [Merge Cells in Excel Using Apache POI](https://www.baeldung.com/java-apache-poi-merge-cells) - [Get String Value of Excel Cell with Apache POI](https://www.baeldung.com/java-apache-poi-cell-string-value) - [Read Excel Cell Value Rather Than Formula With Apache POI](https://www.baeldung.com/apache-poi-read-cell-value-formula) +- [Setting Formulas in Excel with Apache POI](https://www.baeldung.com/java-apache-poi-set-formulas) diff --git a/core-java-modules/core-java-10/README.md b/core-java-modules/core-java-10/README.md index 2b57ec9064..23f598b902 100644 --- a/core-java-modules/core-java-10/README.md +++ b/core-java-modules/core-java-10/README.md @@ -9,3 +9,4 @@ This module contains articles about Java 10 core features - [Copy a List to Another List in Java](http://www.baeldung.com/java-copy-list-to-another) - [Deep Dive Into the New Java JIT Compiler – Graal](https://www.baeldung.com/graal-java-jit-compiler) - [Copying Sets in Java](https://www.baeldung.com/java-copy-sets) +- [Converting between a List and a Set in Java](https://www.baeldung.com/convert-list-to-set-and-set-to-list) diff --git a/core-java-modules/core-java-10/pom.xml b/core-java-modules/core-java-10/pom.xml index a9b991852f..b293eb6c2f 100644 --- a/core-java-modules/core-java-10/pom.xml +++ b/core-java-modules/core-java-10/pom.xml @@ -1,22 +1,29 @@ + xmlns="http://maven.apache.org/POM/4.0.0" + xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" + xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd"> 4.0.0 core-java-10 0.1.0-SNAPSHOT core-java-10 jar - http://maven.apache.org - com.baeldung - parent-modules - 1.0.0-SNAPSHOT - ../../ + com.baeldung.core-java-modules + core-java-modules + 0.0.1-SNAPSHOT + ../ + + + org.apache.commons + commons-collections4 + ${commons-collections4.version} + + + @@ -34,6 +41,7 @@ 10 10 + 4.1 diff --git a/core-java-modules/core-java-10/src/test/java/com/baeldung/java10/collections/conversion/ListSetConversionUnitTest.java b/core-java-modules/core-java-10/src/test/java/com/baeldung/java10/collections/conversion/ListSetConversionUnitTest.java new file mode 100644 index 0000000000..1526d1ae7f --- /dev/null +++ b/core-java-modules/core-java-10/src/test/java/com/baeldung/java10/collections/conversion/ListSetConversionUnitTest.java @@ -0,0 +1,68 @@ +package com.baeldung.java10.collections.conversion; + +import com.google.common.collect.Lists; +import com.google.common.collect.Sets; +import org.apache.commons.collections4.CollectionUtils; +import org.junit.Test; + +import java.util.ArrayList; +import java.util.HashSet; +import java.util.List; +import java.util.Set; + +public class ListSetConversionUnitTest { + + // Set -> List; List -> Set + + @Test + public final void givenUsingCoreJava_whenSetConvertedToList_thenCorrect() { + final Set sourceSet = Sets.newHashSet(0, 1, 2, 3, 4, 5); + final List targetList = new ArrayList<>(sourceSet); + } + + @Test + public final void givenUsingCoreJava_whenListConvertedToSet_thenCorrect() { + final List sourceList = Lists.newArrayList(0, 1, 2, 3, 4, 5); + final Set targetSet = new HashSet<>(sourceList); + } + + @Test + public void givenUsingJava10_whenSetConvertedToList_thenCorrect() { + final Set sourceSet = Sets.newHashSet(0, 1, 2, 3, 4, 5); + final List targetList = List.copyOf(sourceSet); + } + + @Test + public void givenUsingJava10_whenListConvertedToSet_thenCorrect() { + final List sourceList = Lists.newArrayList(0, 1, 2, 3, 4, 5); + final Set targetSet = Set.copyOf(sourceList); + } + + @Test + public final void givenUsingGuava_whenSetConvertedToList_thenCorrect() { + final Set sourceSet = Sets.newHashSet(0, 1, 2, 3, 4, 5); + final List targetList = Lists.newArrayList(sourceSet); + } + + @Test + public final void givenUsingGuava_whenListConvertedToSet_thenCorrect() { + final List sourceList = Lists.newArrayList(0, 1, 2, 3, 4, 5); + final Set targetSet = Sets.newHashSet(sourceList); + } + + @Test + public final void givenUsingCommonsCollections_whenListConvertedToSet_thenCorrect() { + final List sourceList = Lists.newArrayList(0, 1, 2, 3, 4, 5); + + final Set targetSet = new HashSet<>(6); + CollectionUtils.addAll(targetSet, sourceList); + } + + @Test + public final void givenUsingCommonsCollections_whenSetConvertedToList_thenCorrect() { + final Set sourceSet = Sets.newHashSet(0, 1, 2, 3, 4, 5); + + final List targetList = new ArrayList<>(6); + CollectionUtils.addAll(targetList, sourceSet); + } +} diff --git a/core-java-modules/core-java-arrays-operations-advanced/README.md b/core-java-modules/core-java-arrays-operations-advanced/README.md index af0c00641a..c8ec3e74bc 100644 --- a/core-java-modules/core-java-arrays-operations-advanced/README.md +++ b/core-java-modules/core-java-arrays-operations-advanced/README.md @@ -3,7 +3,9 @@ This module contains articles about advanced operations on arrays in Java. They assume some background knowledge with arrays in Java. ### Relevant Articles: + - [How to Copy an Array in Java](https://www.baeldung.com/java-array-copy) - [Arrays.deepEquals](https://www.baeldung.com/java-arrays-deepequals) - [Find Sum and Average in a Java Array](https://www.baeldung.com/java-array-sum-average) - [Intersection Between two Integer Arrays](https://www.baeldung.com/java-array-intersection) +- [Comparing Arrays in Java](https://www.baeldung.com/java-comparing-arrays) diff --git a/core-java-modules/core-java-collections-3/README.md b/core-java-modules/core-java-collections-3/README.md index 4349ef6be3..c80e493767 100644 --- a/core-java-modules/core-java-collections-3/README.md +++ b/core-java-modules/core-java-collections-3/README.md @@ -12,3 +12,4 @@ - [Fail-Safe Iterator vs Fail-Fast Iterator](https://www.baeldung.com/java-fail-safe-vs-fail-fast-iterator) - [Quick Guide to the Java Stack](https://www.baeldung.com/java-stack) - [Convert an Array of Primitives to a List](https://www.baeldung.com/java-primitive-array-to-list) +- [A Guide to BitSet in Java](https://www.baeldung.com/java-bitset) diff --git a/core-java-modules/core-java-collections-list-3/README.md b/core-java-modules/core-java-collections-list-3/README.md index 65c377bd99..967e148a99 100644 --- a/core-java-modules/core-java-collections-list-3/README.md +++ b/core-java-modules/core-java-collections-list-3/README.md @@ -10,4 +10,5 @@ This module contains articles about the Java List collection - [Performance Comparison of Primitive Lists in Java](https://www.baeldung.com/java-list-primitive-performance) - [Filtering a Java Collection by a List](https://www.baeldung.com/java-filter-collection-by-list) - [How to Count Duplicate Elements in Arraylist](https://www.baeldung.com/java-count-duplicate-elements-arraylist) +- [Finding the Differences Between Two Lists in Java](https://www.baeldung.com/java-lists-difference) - [[<-- Prev]](/core-java-modules/core-java-collections-list-2) diff --git a/core-java-modules/core-java-console/README.md b/core-java-modules/core-java-console/README.md index 725e2482bb..0a31727588 100644 --- a/core-java-modules/core-java-console/README.md +++ b/core-java-modules/core-java-console/README.md @@ -1,5 +1,8 @@ #Core Java Console -[Read and Write User Input in Java](http://www.baeldung.com/java-console-input-output) -[Formatting with printf() in Java](https://www.baeldung.com/java-printstream-printf) -[ASCII Art in Java](http://www.baeldung.com/ascii-art-in-java) \ No newline at end of file +### Relevant Articles: + +- [Read and Write User Input in Java](http://www.baeldung.com/java-console-input-output) +- [Formatting with printf() in Java](https://www.baeldung.com/java-printstream-printf) +- [ASCII Art in Java](http://www.baeldung.com/ascii-art-in-java) +- [System.console() vs. System.out](https://www.baeldung.com/java-system-console-vs-system-out) diff --git a/core-java-modules/core-java-exceptions-3/README.md b/core-java-modules/core-java-exceptions-3/README.md new file mode 100644 index 0000000000..e6c7eda881 --- /dev/null +++ b/core-java-modules/core-java-exceptions-3/README.md @@ -0,0 +1,3 @@ +### Relevant Articles: + +- [NoSuchMethodError in Java](https://www.baeldung.com/java-nosuchmethod-error) diff --git a/core-java-modules/core-java-exceptions-3/pom.xml b/core-java-modules/core-java-exceptions-3/pom.xml new file mode 100644 index 0000000000..32c522dab5 --- /dev/null +++ b/core-java-modules/core-java-exceptions-3/pom.xml @@ -0,0 +1,34 @@ + + + 4.0.0 + com.baeldung.exceptions + core-java-exceptions-3 + 0.1.0-SNAPSHOT + core-java-exceptions-3 + jar + + com.baeldung.core-java-modules + core-java-modules + 0.0.1-SNAPSHOT + ../ + + + + + + org.assertj + assertj-core + ${assertj-core.version} + test + + + + + + 3.10.0 + + + \ No newline at end of file diff --git a/core-java-modules/core-java-exceptions-3/src/main/java/com/baeldung/exceptions/nosuchmethoderror/MainMenu.java b/core-java-modules/core-java-exceptions-3/src/main/java/com/baeldung/exceptions/nosuchmethoderror/MainMenu.java new file mode 100644 index 0000000000..f12cbe1897 --- /dev/null +++ b/core-java-modules/core-java-exceptions-3/src/main/java/com/baeldung/exceptions/nosuchmethoderror/MainMenu.java @@ -0,0 +1,11 @@ +package com.baeldung.exceptions.nosuchmethoderror; + +public class MainMenu { + public static void main(String[] args) { + System.out.println("Today's Specials: " + getSpecials()); + } + + public static String getSpecials() { + return SpecialToday.getDesert(); + } +} diff --git a/core-java-modules/core-java-exceptions-3/src/main/java/com/baeldung/exceptions/nosuchmethoderror/SpecialToday.java b/core-java-modules/core-java-exceptions-3/src/main/java/com/baeldung/exceptions/nosuchmethoderror/SpecialToday.java new file mode 100644 index 0000000000..1b0dea9784 --- /dev/null +++ b/core-java-modules/core-java-exceptions-3/src/main/java/com/baeldung/exceptions/nosuchmethoderror/SpecialToday.java @@ -0,0 +1,8 @@ +package com.baeldung.exceptions.nosuchmethoderror; +public class SpecialToday { + private static String desert = "Chocolate Cake"; + + public static String getDesert() { + return desert; + } +} diff --git a/core-java-modules/core-java-exceptions-3/src/test/java/com/baeldung/exceptions/nosuchmethoderror/MainMenuUnitTest.java b/core-java-modules/core-java-exceptions-3/src/test/java/com/baeldung/exceptions/nosuchmethoderror/MainMenuUnitTest.java new file mode 100644 index 0000000000..ce4374a9ba --- /dev/null +++ b/core-java-modules/core-java-exceptions-3/src/test/java/com/baeldung/exceptions/nosuchmethoderror/MainMenuUnitTest.java @@ -0,0 +1,13 @@ +package com.baeldung.exceptions.nosuchmethoderror; + +import static org.junit.Assert.assertNotNull; + +import org.junit.jupiter.api.Test; + +class MainMenuUnitTest { + + @Test + void whenGetSpecials_thenNotNull() { + assertNotNull(MainMenu.getSpecials()); + } +} diff --git a/core-java-modules/core-java-io-3/README.md b/core-java-modules/core-java-io-3/README.md index 61a040c1ce..c4eacdf27a 100644 --- a/core-java-modules/core-java-io-3/README.md +++ b/core-java-modules/core-java-io-3/README.md @@ -6,4 +6,7 @@ This module contains articles about core Java input and output (IO) - [Java – Create a File](https://www.baeldung.com/java-how-to-create-a-file) - [Check If a Directory Is Empty in Java](https://www.baeldung.com/java-check-empty-directory) +- [Check If a File or Directory Exists in Java](https://www.baeldung.com/java-file-directory-exists) +- [Copy a Directory in Java](https://www.baeldung.com/java-copy-directory) +- [Java Files Open Options](https://www.baeldung.com/java-file-options) - [[<-- Prev]](/core-java-modules/core-java-io-2) diff --git a/core-java-modules/core-java-io-3/src/test/java/com/baeldung/linenumber/LineAtGivenNumberUnitTest.java b/core-java-modules/core-java-io-3/src/test/java/com/baeldung/linenumber/LineAtGivenNumberUnitTest.java new file mode 100644 index 0000000000..ffe3221d62 --- /dev/null +++ b/core-java-modules/core-java-io-3/src/test/java/com/baeldung/linenumber/LineAtGivenNumberUnitTest.java @@ -0,0 +1,82 @@ +package com.baeldung.linenumber; + +import org.apache.commons.io.FileUtils; +import org.apache.commons.io.IOUtils; +import org.junit.Test; + +import java.io.BufferedReader; +import java.io.File; +import java.io.FileInputStream; +import java.io.IOException; +import java.nio.charset.StandardCharsets; +import java.nio.file.Files; +import java.nio.file.Paths; +import java.util.List; +import java.util.Scanner; +import java.util.stream.Stream; + +import static org.junit.Assert.assertEquals; + +public class LineAtGivenNumberUnitTest { + + private static final String FILE_PATH = "src/test/resources/linesInput.txt"; + + @Test + public void givenFile_whenUsingBufferedReader_thenExtractedLineIsCorrect() throws IOException { + try (BufferedReader br = Files.newBufferedReader(Paths.get(FILE_PATH))) { + for (int i = 0; i < 3; i++) { + br.readLine(); + } + + String extractedLine = br.readLine(); + assertEquals("Line 4", extractedLine); + } + } + + @Test + public void givenFile_whenUsingScanner_thenExtractedLineIsCorrect() throws IOException { + try (Scanner scanner = new Scanner(new File(FILE_PATH))) { + for (int i = 0; i < 3; i++) { + scanner.nextLine(); + } + + String extractedLine = scanner.nextLine(); + assertEquals("Line 4", extractedLine); + } + } + + @Test + public void givenSmallFile_whenUsingFilesAPI_thenExtractedLineIsCorrect() throws IOException { + String extractedLine = Files.readAllLines(Paths.get(FILE_PATH)).get(4); + + assertEquals("Line 5", extractedLine); + } + + @Test + public void givenLargeFile_whenUsingFilesAPI_thenExtractedLineIsCorrect() throws IOException { + try (Stream lines = Files.lines(Paths.get(FILE_PATH))) { + String extractedLine = lines.skip(4).findFirst().get(); + + assertEquals("Line 5", extractedLine); + } + } + + @Test + public void givenFile_whenUsingFileUtils_thenExtractedLineIsCorrect() throws IOException { + ClassLoader classLoader = getClass().getClassLoader(); + File file = new File(classLoader.getResource("linesInput.txt").getFile()); + + List lines = FileUtils.readLines(file, "UTF-8"); + + String extractedLine = lines.get(0); + assertEquals("Line 1", extractedLine); + } + + @Test + public void givenFile_whenUsingIOUtils_thenExtractedLineIsCorrect() throws IOException { + String fileContent = IOUtils.toString(new FileInputStream(FILE_PATH), StandardCharsets.UTF_8); + + String extractedLine = fileContent.split(System.lineSeparator())[0]; + assertEquals("Line 1", extractedLine); + } +} diff --git a/core-java-modules/core-java-io-3/src/test/resources/linesInput.txt b/core-java-modules/core-java-io-3/src/test/resources/linesInput.txt new file mode 100644 index 0000000000..572d5d9483 --- /dev/null +++ b/core-java-modules/core-java-io-3/src/test/resources/linesInput.txt @@ -0,0 +1,5 @@ +Line 1 +Line 2 +Line 3 +Line 4 +Line 5 diff --git a/core-java-modules/core-java-jvm-2/README.md b/core-java-modules/core-java-jvm-2/README.md index 7206a9eef7..36cafd3288 100644 --- a/core-java-modules/core-java-jvm-2/README.md +++ b/core-java-modules/core-java-jvm-2/README.md @@ -10,4 +10,5 @@ This module contains articles about working with the Java Virtual Machine (JVM). - [boolean and boolean[] Memory Layout in the JVM](https://www.baeldung.com/jvm-boolean-memory-layout) - [Where Is the Array Length Stored in JVM?](https://www.baeldung.com/java-jvm-array-length) - [Memory Address of Objects in Java](https://www.baeldung.com/java-object-memory-address) +- [List All Classes Loaded in a Specific Class Loader](https://www.baeldung.com/java-list-classes-class-loader) - More articles: [[<-- prev]](/core-java-modules/core-java-jvm) diff --git a/core-java-modules/core-java-lambdas/src/main/java/com/baeldung/java8/lambda/tips/Bar.java b/core-java-modules/core-java-lambdas/src/main/java/com/baeldung/java8/lambda/tips/Bar.java index 4cf0aa2399..3ee78bd7a3 100644 --- a/core-java-modules/core-java-lambdas/src/main/java/com/baeldung/java8/lambda/tips/Bar.java +++ b/core-java-modules/core-java-lambdas/src/main/java/com/baeldung/java8/lambda/tips/Bar.java @@ -6,8 +6,11 @@ public interface Bar { String method(String string); - default String defaultMethod() { - return "String from Bar"; + default String defaultBar() { + return "Default String from Bar"; } + default String defaultCommon() { + return "Default Common from Bar"; + } } diff --git a/core-java-modules/core-java-lambdas/src/main/java/com/baeldung/java8/lambda/tips/Baz.java b/core-java-modules/core-java-lambdas/src/main/java/com/baeldung/java8/lambda/tips/Baz.java index c7efe14c89..1e1e9ae094 100644 --- a/core-java-modules/core-java-lambdas/src/main/java/com/baeldung/java8/lambda/tips/Baz.java +++ b/core-java-modules/core-java-lambdas/src/main/java/com/baeldung/java8/lambda/tips/Baz.java @@ -6,7 +6,11 @@ public interface Baz { String method(String string); - default String defaultMethod() { - return "String from Baz"; + default String defaultBaz() { + return "Default String from Baz"; + } + + default String defaultCommon(){ + return "Default Common from Baz"; } } diff --git a/core-java-modules/core-java-lambdas/src/main/java/com/baeldung/java8/lambda/tips/FooExtended.java b/core-java-modules/core-java-lambdas/src/main/java/com/baeldung/java8/lambda/tips/FooExtended.java index 9141cd8eb8..27ab86dca3 100644 --- a/core-java-modules/core-java-lambdas/src/main/java/com/baeldung/java8/lambda/tips/FooExtended.java +++ b/core-java-modules/core-java-lambdas/src/main/java/com/baeldung/java8/lambda/tips/FooExtended.java @@ -5,8 +5,7 @@ package com.baeldung.java8.lambda.tips; public interface FooExtended extends Baz, Bar { @Override - default String defaultMethod() { - return Bar.super.defaultMethod(); + default String defaultCommon() { + return Bar.super.defaultCommon(); } - } diff --git a/core-java-modules/core-java-lambdas/src/test/java/com/baeldung/java8/lambda/tips/Java8FunctionalInteracesLambdasUnitTest.java b/core-java-modules/core-java-lambdas/src/test/java/com/baeldung/java8/lambda/tips/Java8FunctionalInteracesLambdasUnitTest.java index b409f8e37f..acc3bc8fa3 100644 --- a/core-java-modules/core-java-lambdas/src/test/java/com/baeldung/java8/lambda/tips/Java8FunctionalInteracesLambdasUnitTest.java +++ b/core-java-modules/core-java-lambdas/src/test/java/com/baeldung/java8/lambda/tips/Java8FunctionalInteracesLambdasUnitTest.java @@ -39,9 +39,9 @@ public class Java8FunctionalInteracesLambdasUnitTest { @Test public void defaultMethodFromExtendedInterface_whenReturnDefiniteString_thenCorrect() { final FooExtended fooExtended = string -> string; - final String result = fooExtended.defaultMethod(); + final String result = fooExtended.defaultCommon(); - assertEquals("String from Bar", result); + assertEquals("Default Common from Bar", result); } @Test diff --git a/core-java-modules/core-java-lang-3/README.md b/core-java-modules/core-java-lang-3/README.md index 9ce49da868..0fa08ef397 100644 --- a/core-java-modules/core-java-lang-3/README.md +++ b/core-java-modules/core-java-lang-3/README.md @@ -4,4 +4,5 @@ This module contains articles about core features in the Java language - [Class.isInstance vs Class.isAssignableFrom](https://www.baeldung.com/java-isinstance-isassignablefrom) - [Converting a Java String Into a Boolean](https://www.baeldung.com/java-string-to-boolean) +- [When are Static Variables Initialized in Java?](https://www.baeldung.com/java-static-variables-initialization) - [[<-- Prev]](/core-java-modules/core-java-lang-2) diff --git a/core-java-modules/core-java-lang-oop-types/README.md b/core-java-modules/core-java-lang-oop-types/README.md index 449a0f59cc..459352c490 100644 --- a/core-java-modules/core-java-lang-oop-types/README.md +++ b/core-java-modules/core-java-lang-oop-types/README.md @@ -3,6 +3,7 @@ This module contains articles about types in Java ### Relevant Articles: + - [Java Classes and Objects](https://www.baeldung.com/java-classes-objects) - [Guide to the this Java Keyword](https://www.baeldung.com/java-this) - [Nested Classes in Java](https://www.baeldung.com/java-nested-classes) @@ -10,3 +11,4 @@ This module contains articles about types in Java - [Iterating Over Enum Values in Java](https://www.baeldung.com/java-enum-iteration) - [Attaching Values to Java Enum](https://www.baeldung.com/java-enum-values) - [A Guide to Java Enums](https://www.baeldung.com/a-guide-to-java-enums) +- [Determine if an Object is of Primitive Type](https://www.baeldung.com/java-object-primitive-type) diff --git a/core-java-modules/core-java-os/README.md b/core-java-modules/core-java-os/README.md index f2ec3f9d48..10e04a8ba6 100644 --- a/core-java-modules/core-java-os/README.md +++ b/core-java-modules/core-java-os/README.md @@ -12,5 +12,6 @@ This module contains articles about working with the operating system (OS) in Ja - [How to Print Screen in Java](http://www.baeldung.com/print-screen-in-java) - [Pattern Search with Grep in Java](http://www.baeldung.com/grep-in-java) - [How to Run a Shell Command in Java](http://www.baeldung.com/run-shell-command-in-java) +- [Taking Screenshots Using Java](https://www.baeldung.com/java-taking-screenshots) -This module uses Java 9, so make sure to have the JDK 9 installed to run it. \ No newline at end of file +This module uses Java 9, so make sure to have the JDK 9 installed to run it. diff --git a/core-java-modules/core-java-reflection-2/README.md b/core-java-modules/core-java-reflection-2/README.md index 342fbd73bd..e5ddb7a8b8 100644 --- a/core-java-modules/core-java-reflection-2/README.md +++ b/core-java-modules/core-java-reflection-2/README.md @@ -1,3 +1,4 @@ ### Relevant Articles: - [Reading the Value of ‘private’ Fields from a Different Class in Java](https://www.baeldung.com/java-reflection-read-private-field-value) +- [Set Field Value With Reflection](https://www.baeldung.com/java-set-private-field-value) diff --git a/core-java-modules/pom.xml b/core-java-modules/pom.xml index 0b832223f4..36fca8de93 100644 --- a/core-java-modules/pom.xml +++ b/core-java-modules/pom.xml @@ -73,7 +73,7 @@ core-java-exceptions core-java-exceptions-2 - + core-java-exceptions-3 core-java-function core-java-io diff --git a/core-kotlin-modules/core-kotlin/README.md b/core-kotlin-modules/core-kotlin/README.md index 359c5a4787..33f8745937 100644 --- a/core-kotlin-modules/core-kotlin/README.md +++ b/core-kotlin-modules/core-kotlin/README.md @@ -3,6 +3,7 @@ This module contains articles about Kotlin core features. ### Relevant articles: + - [Introduction to the Kotlin Language](https://www.baeldung.com/kotlin-intro) - [Kotlin Java Interoperability](https://www.baeldung.com/kotlin-java-interoperability) - [Get a Random Number in Kotlin](https://www.baeldung.com/kotlin-random-number) @@ -10,3 +11,4 @@ This module contains articles about Kotlin core features. - [Kotlin Ternary Conditional Operator](https://www.baeldung.com/kotlin-ternary-operator) - [Sequences in Kotlin](https://www.baeldung.com/kotlin/sequences) - [Converting Kotlin Data Class from JSON using GSON](https://www.baeldung.com/kotlin-json-convert-data-class) +- [Exception Handling in Kotlin](https://www.baeldung.com/kotlin/exception-handling) diff --git a/deeplearning4j/README.md b/deeplearning4j/README.md index 47c2d8167d..5bd00778ce 100644 --- a/deeplearning4j/README.md +++ b/deeplearning4j/README.md @@ -5,3 +5,4 @@ This module contains articles about Deeplearning4j. ### Relevant Articles: - [A Guide to Deeplearning4j](https://www.baeldung.com/deeplearning4j) - [Logistic Regression in Java](https://www.baeldung.com/java-logistic-regression) +- [How to Implement a CNN with Deeplearning4j](https://www.baeldung.com/java-cnn-deeplearning4j) diff --git a/docker/README.md b/docker/README.md index 7948b3d663..8e5cc2b621 100644 --- a/docker/README.md +++ b/docker/README.md @@ -1,3 +1,4 @@ ## Relevant Articles: - [Introduction to Docker Compose](https://www.baeldung.com/docker-compose) +- [Creating Docker Images with Spring Boot](https://www.baeldung.com/spring-boot-docker-images) diff --git a/excelformula/README.md b/excelformula/README.md deleted file mode 100644 index 24560525cd..0000000000 --- a/excelformula/README.md +++ /dev/null @@ -1,5 +0,0 @@ -## Apache POI - -This module contains articles about Apache POI - -### Relevant Articles: diff --git a/java-collections-conversions-2/README.md b/java-collections-conversions-2/README.md index 11dddadc5c..9d0ba88cbf 100644 --- a/java-collections-conversions-2/README.md +++ b/java-collections-conversions-2/README.md @@ -3,6 +3,8 @@ This module contains articles about conversions among Collection types and arrays in Java. ### Relevant Articles: + - [Array to String Conversions](https://www.baeldung.com/java-array-to-string) - [Mapping Lists with ModelMapper](https://www.baeldung.com/java-modelmapper-lists) +- [Converting List to Map With a Custom Supplier](https://www.baeldung.com/list-to-map-supplier) - More articles: [[<-- prev]](../java-collections-conversions) diff --git a/java-collections-conversions-2/src/test/java/com/baeldung/arrayconversion/ArrayToListConversionUnitTest.java b/java-collections-conversions-2/src/test/java/com/baeldung/arrayconversion/ArrayToListConversionUnitTest.java new file mode 100644 index 0000000000..551661810d --- /dev/null +++ b/java-collections-conversions-2/src/test/java/com/baeldung/arrayconversion/ArrayToListConversionUnitTest.java @@ -0,0 +1,32 @@ +package com.baeldung.arrayconversion; + +import org.junit.Test; + +import java.util.ArrayList; +import java.util.Arrays; +import java.util.List; + +public class ArrayToListConversionUnitTest { + + @Test(expected = UnsupportedOperationException.class) + public void givenAnArray_whenConvertingToList_returnUnmodifiableListUnitTest() { + String[] stringArray = new String[] { "A", "B", "C", "D" }; + List stringList = Arrays.asList(stringArray); + System.out.println(stringList); + stringList.set(0, "E"); + System.out.println(stringList); + System.out.println(Arrays.toString(stringArray)); + stringList.add("F"); + } + + @Test + public void givenAnArray_whenConvertingToList_returnModifiableListUnitTest() { + String[] stringArray = new String[] { "A", "B", "C", "D" }; + List stringList = new ArrayList<>(Arrays.asList(stringArray)); + System.out.println(stringList); + stringList.set(0, "E"); + System.out.println(stringList); + System.out.println(Arrays.toString(stringArray)); + stringList.add("F"); + } +} diff --git a/java-collections-conversions/README.md b/java-collections-conversions/README.md index 2d3aa41f2d..25a4d11b8b 100644 --- a/java-collections-conversions/README.md +++ b/java-collections-conversions/README.md @@ -5,7 +5,6 @@ This module contains articles about conversions among Collection types and array ### Relevant Articles: - [Converting between an Array and a List in Java](https://www.baeldung.com/convert-array-to-list-and-list-to-array) - [Converting between an Array and a Set in Java](https://www.baeldung.com/convert-array-to-set-and-set-to-array) -- [Converting between a List and a Set in Java](https://www.baeldung.com/convert-list-to-set-and-set-to-list) - [Convert a Map to an Array, List or Set in Java](https://www.baeldung.com/convert-map-values-to-array-list-set) - [Converting a List to String in Java](https://www.baeldung.com/java-list-to-string) - [How to Convert List to Map in Java](https://www.baeldung.com/java-list-to-map) diff --git a/java-collections-conversions/src/test/java/com/baeldung/java/collections/JavaCollectionConversionUnitTest.java b/java-collections-conversions/src/test/java/com/baeldung/java/collections/JavaCollectionConversionUnitTest.java index 7b856309f1..7947d1b6c7 100644 --- a/java-collections-conversions/src/test/java/com/baeldung/java/collections/JavaCollectionConversionUnitTest.java +++ b/java-collections-conversions/src/test/java/com/baeldung/java/collections/JavaCollectionConversionUnitTest.java @@ -101,42 +101,6 @@ public class JavaCollectionConversionUnitTest { final int[] primitiveTargetArray = ArrayUtils.toPrimitive(targetArray); } - // Set -> List; List -> Set - - public final void givenUsingCoreJava_whenSetConvertedToList_thenCorrect() { - final Set sourceSet = Sets.newHashSet(0, 1, 2, 3, 4, 5); - final List targetList = new ArrayList<>(sourceSet); - } - - public final void givenUsingCoreJava_whenListConvertedToSet_thenCorrect() { - final List sourceList = Lists.newArrayList(0, 1, 2, 3, 4, 5); - final Set targetSet = new HashSet<>(sourceList); - } - - public final void givenUsingGuava_whenSetConvertedToList_thenCorrect() { - final Set sourceSet = Sets.newHashSet(0, 1, 2, 3, 4, 5); - final List targetList = Lists.newArrayList(sourceSet); - } - - public final void givenUsingGuava_whenListConvertedToSet_thenCorrect() { - final List sourceList = Lists.newArrayList(0, 1, 2, 3, 4, 5); - final Set targetSet = Sets.newHashSet(sourceList); - } - - public final void givenUsingCommonsCollections_whenListConvertedToSet_thenCorrect() { - final List sourceList = Lists.newArrayList(0, 1, 2, 3, 4, 5); - - final Set targetSet = new HashSet<>(6); - CollectionUtils.addAll(targetSet, sourceList); - } - - public final void givenUsingCommonsCollections_whenSetConvertedToList_thenCorrect() { - final Set sourceSet = Sets.newHashSet(0, 1, 2, 3, 4, 5); - - final List targetList = new ArrayList<>(6); - CollectionUtils.addAll(targetList, sourceSet); - } - // Map (values) -> Array, List, Set @Test diff --git a/java-numbers-4/README.md b/java-numbers-4/README.md new file mode 100644 index 0000000000..344d348733 --- /dev/null +++ b/java-numbers-4/README.md @@ -0,0 +1,3 @@ +### Relevant Articles: + +- [Probability in Java](https://www.baeldung.com/java-probability) diff --git a/javax-servlets/README.md b/javax-servlets/README.md index 54f92064a0..fe070f73b5 100644 --- a/javax-servlets/README.md +++ b/javax-servlets/README.md @@ -12,4 +12,4 @@ This module contains articles about Servlets. - [Jakarta EE Servlet Exception Handling](https://www.baeldung.com/servlet-exceptions) - [Context and Servlet Initialization Parameters](https://www.baeldung.com/context-servlet-initialization-param) - [The Difference between getRequestURI and getPathInfo in HttpServletRequest](https://www.baeldung.com/http-servlet-request-requesturi-pathinfo) -- Difference between request.getSession() and request.getSession(true) +- [Difference between request.getSession() and request.getSession(true)](https://www.baeldung.com/java-request-getsession) diff --git a/jgit/src/main/java/com/baeldung/jgit/porcelain/AddFile.java b/jgit/src/main/java/com/baeldung/jgit/porcelain/AddFile.java index 314366f08c..e6b5dc1afc 100644 --- a/jgit/src/main/java/com/baeldung/jgit/porcelain/AddFile.java +++ b/jgit/src/main/java/com/baeldung/jgit/porcelain/AddFile.java @@ -6,6 +6,8 @@ import com.baeldung.jgit.helper.Helper; import org.eclipse.jgit.api.Git; import org.eclipse.jgit.api.errors.GitAPIException; import org.eclipse.jgit.lib.Repository; +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; /** * Simple snippet which shows how to add a file to the index @@ -14,6 +16,8 @@ import org.eclipse.jgit.lib.Repository; */ public class AddFile { + private static final Logger logger = LoggerFactory.getLogger(AddFile.class); + public static void main(String[] args) throws IOException, GitAPIException { // prepare a new test-repository try (Repository repository = Helper.createNewRepository()) { @@ -29,7 +33,7 @@ public class AddFile { .addFilepattern("testfile") .call(); - System.out.println("Added file " + myfile + " to repository at " + repository.getDirectory()); + logger.debug("Added file " + myfile + " to repository at " + repository.getDirectory()); } } } diff --git a/jgit/src/main/java/com/baeldung/jgit/porcelain/CommitAll.java b/jgit/src/main/java/com/baeldung/jgit/porcelain/CommitAll.java index 4c0956ebf8..a2d071f392 100644 --- a/jgit/src/main/java/com/baeldung/jgit/porcelain/CommitAll.java +++ b/jgit/src/main/java/com/baeldung/jgit/porcelain/CommitAll.java @@ -7,6 +7,8 @@ import com.baeldung.jgit.helper.Helper; import org.eclipse.jgit.api.Git; import org.eclipse.jgit.api.errors.GitAPIException; import org.eclipse.jgit.lib.Repository; +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; /** * Simple snippet which shows how to commit all files @@ -15,6 +17,8 @@ import org.eclipse.jgit.lib.Repository; */ public class CommitAll { + private static final Logger logger = LoggerFactory.getLogger(CommitAll.class); + public static void main(String[] args) throws IOException, GitAPIException { // prepare a new test-repository try (Repository repository = Helper.createNewRepository()) { @@ -44,7 +48,7 @@ public class CommitAll { .call(); - System.out.println("Committed all changes to repository at " + repository.getDirectory()); + logger.debug("Committed all changes to repository at " + repository.getDirectory()); } } } diff --git a/jgit/src/main/java/com/baeldung/jgit/porcelain/CreateAndDeleteTag.java b/jgit/src/main/java/com/baeldung/jgit/porcelain/CreateAndDeleteTag.java index 0f735daf8c..e7b0e424e2 100644 --- a/jgit/src/main/java/com/baeldung/jgit/porcelain/CreateAndDeleteTag.java +++ b/jgit/src/main/java/com/baeldung/jgit/porcelain/CreateAndDeleteTag.java @@ -9,6 +9,8 @@ import org.eclipse.jgit.lib.Ref; import org.eclipse.jgit.lib.Repository; import org.eclipse.jgit.revwalk.RevCommit; import org.eclipse.jgit.revwalk.RevWalk; +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; /** * Simple snippet which shows how to create a tag @@ -17,6 +19,8 @@ import org.eclipse.jgit.revwalk.RevWalk; */ public class CreateAndDeleteTag { + private static final Logger logger = LoggerFactory.getLogger(CreateAndDeleteTag.class); + public static void main(String[] args) throws IOException, GitAPIException { // prepare test-repository try (Repository repository = Helper.openJGitRepository()) { @@ -26,7 +30,7 @@ public class CreateAndDeleteTag { // set it on the current HEAD Ref tag = git.tag().setName("tag_for_testing").call(); - System.out.println("Created/moved tag " + tag + " to repository at " + repository.getDirectory()); + logger.debug("Created/moved tag " + tag + " to repository at " + repository.getDirectory()); // remove the tag again git.tagDelete().setTags("tag_for_testing").call(); @@ -36,14 +40,14 @@ public class CreateAndDeleteTag { try (RevWalk walk = new RevWalk(repository)) { RevCommit commit = walk.parseCommit(id); tag = git.tag().setObjectId(commit).setName("tag_for_testing").call(); - System.out.println("Created/moved tag " + tag + " to repository at " + repository.getDirectory()); + logger.debug("Created/moved tag " + tag + " to repository at " + repository.getDirectory()); // remove the tag again git.tagDelete().setTags("tag_for_testing").call(); // create an annotated tag tag = git.tag().setName("tag_for_testing").setAnnotated(true).call(); - System.out.println("Created/moved tag " + tag + " to repository at " + repository.getDirectory()); + logger.debug("Created/moved tag " + tag + " to repository at " + repository.getDirectory()); // remove the tag again git.tagDelete().setTags("tag_for_testing").call(); diff --git a/jgit/src/main/java/com/baeldung/jgit/porcelain/Log.java b/jgit/src/main/java/com/baeldung/jgit/porcelain/Log.java index a50028a9ae..fba8a82962 100644 --- a/jgit/src/main/java/com/baeldung/jgit/porcelain/Log.java +++ b/jgit/src/main/java/com/baeldung/jgit/porcelain/Log.java @@ -7,6 +7,9 @@ import org.eclipse.jgit.api.errors.GitAPIException; import org.eclipse.jgit.lib.Repository; import org.eclipse.jgit.revwalk.RevCommit; +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; + /** * Simple snippet which shows how to get the commit-ids for a file to provide log information. * @@ -14,6 +17,8 @@ import org.eclipse.jgit.revwalk.RevCommit; */ public class Log { + private static final Logger logger = LoggerFactory.getLogger(Log.class); + @SuppressWarnings("unused") public static void main(String[] args) throws IOException, GitAPIException { try (Repository repository = Helper.openJGitRepository()) { @@ -22,30 +27,30 @@ public class Log { .call(); int count = 0; for (RevCommit rev : logs) { - //System.out.println("Commit: " + rev /* + ", name: " + rev.getName() + ", id: " + rev.getId().getName() */); + logger.trace("Commit: " + rev /* + ", name: " + rev.getName() + ", id: " + rev.getId().getName() */); count++; } - System.out.println("Had " + count + " commits overall on current branch"); + logger.debug("Had " + count + " commits overall on current branch"); logs = git.log() .add(repository.resolve(git.getRepository().getFullBranch())) .call(); count = 0; for (RevCommit rev : logs) { - System.out.println("Commit: " + rev /* + ", name: " + rev.getName() + ", id: " + rev.getId().getName() */); + logger.trace("Commit: " + rev /* + ", name: " + rev.getName() + ", id: " + rev.getId().getName() */); count++; } - System.out.println("Had " + count + " commits overall on "+git.getRepository().getFullBranch()); + logger.debug("Had " + count + " commits overall on "+git.getRepository().getFullBranch()); logs = git.log() .all() .call(); count = 0; for (RevCommit rev : logs) { - //System.out.println("Commit: " + rev /* + ", name: " + rev.getName() + ", id: " + rev.getId().getName() */); + logger.trace("Commit: " + rev /* + ", name: " + rev.getName() + ", id: " + rev.getId().getName() */); count++; } - System.out.println("Had " + count + " commits overall in repository"); + logger.debug("Had " + count + " commits overall in repository"); logs = git.log() // for all log.all() @@ -53,10 +58,10 @@ public class Log { .call(); count = 0; for (RevCommit rev : logs) { - //System.out.println("Commit: " + rev /* + ", name: " + rev.getName() + ", id: " + rev.getId().getName() */); + logger.trace("Commit: " + rev /* + ", name: " + rev.getName() + ", id: " + rev.getId().getName() */); count++; } - System.out.println("Had " + count + " commits on README.md"); + logger.debug("Had " + count + " commits on README.md"); logs = git.log() // for all log.all() @@ -64,10 +69,10 @@ public class Log { .call(); count = 0; for (RevCommit rev : logs) { - //System.out.println("Commit: " + rev /* + ", name: " + rev.getName() + ", id: " + rev.getId().getName() */); + logger.trace("Commit: " + rev /* + ", name: " + rev.getName() + ", id: " + rev.getId().getName() */); count++; } - System.out.println("Had " + count + " commits on pom.xml"); + logger.debug("Had " + count + " commits on pom.xml"); } } } diff --git a/jgit/src/test/java/com/baeldung/jgit/porcelain/PorcelainUnitTest.java b/jgit/src/test/java/com/baeldung/jgit/porcelain/PorcelainUnitTest.java index d3b3358664..842705e6ac 100644 --- a/jgit/src/test/java/com/baeldung/jgit/porcelain/PorcelainUnitTest.java +++ b/jgit/src/test/java/com/baeldung/jgit/porcelain/PorcelainUnitTest.java @@ -11,7 +11,8 @@ public class PorcelainUnitTest { CommitAll.main(null); CreateAndDeleteTag.main(null); - - Log.main(null); + + Log.main(null); + } } diff --git a/jmh/README.md b/jmh/README.md index 41bf16d6bb..3cfe847a3c 100644 --- a/jmh/README.md +++ b/jmh/README.md @@ -6,3 +6,4 @@ This module contains articles about the Java Microbenchmark Harness (JMH). - [Microbenchmarking with Java](https://www.baeldung.com/java-microbenchmark-harness) - [A Guide to False Sharing and @Contended](https://www.baeldung.com/java-false-sharing-contended) +- [Performance Comparison of boolean[] vs BitSet](https://www.baeldung.com/java-boolean-array-bitset-performance) diff --git a/json-2/README.md b/json-2/README.md index c2b6b36a11..64ca7e6449 100644 --- a/json-2/README.md +++ b/json-2/README.md @@ -3,5 +3,7 @@ This module contains articles about JSON. ### Relevant Articles: + - [Introduction to Jsoniter](https://www.baeldung.com/java-jsoniter) - [Introduction to Moshi Json](https://www.baeldung.com/java-json-moshi) +- [Hypermedia Serialization With JSON-LD](https://www.baeldung.com/json-linked-data) diff --git a/jsoup/README.md b/jsoup/README.md index 690afe3099..42b30d4d83 100644 --- a/jsoup/README.md +++ b/jsoup/README.md @@ -5,6 +5,7 @@ This module contains articles about jsoup. ### Relevant Articles: - [Parsing HTML in Java with Jsoup](https://www.baeldung.com/java-with-jsoup) - [How to add proxy support to Jsoup?](https://www.baeldung.com/java-jsoup-proxy) +- [Preserving Line Breaks When Using Jsoup](https://www.baeldung.com/jsoup-line-breaks) ### Build the Project diff --git a/libraries-testing/pom.xml b/libraries-testing/pom.xml index 5a5cb99238..8052680ea5 100644 --- a/libraries-testing/pom.xml +++ b/libraries-testing/pom.xml @@ -1,7 +1,7 @@ + xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" + xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd"> 4.0.0 libraries-testing libraries-testing @@ -158,6 +158,13 @@ test + + com.tngtech.archunit + archunit-junit5 + ${archunit.version} + test + + @@ -193,7 +200,7 @@ 1.5.7.1 - 1.9.9 + 1.9.9 1.9.0 1.9.0 1.9.27 @@ -210,6 +217,7 @@ 1.8 1.8 3.8.1 + 0.14.1 diff --git a/libraries-testing/src/main/java/com/baeldung/archunit/smurfs/persistence/SmurfsRepository.java b/libraries-testing/src/main/java/com/baeldung/archunit/smurfs/persistence/SmurfsRepository.java new file mode 100644 index 0000000000..5d90d0f288 --- /dev/null +++ b/libraries-testing/src/main/java/com/baeldung/archunit/smurfs/persistence/SmurfsRepository.java @@ -0,0 +1,38 @@ +package com.baeldung.archunit.smurfs.persistence; + +import java.util.Collections; +import java.util.List; +import java.util.Map; +import java.util.Optional; +import java.util.TreeMap; + +import com.baeldung.archunit.smurfs.persistence.domain.Smurf; + +import static java.util.stream.Collectors.toList; + +public class SmurfsRepository { + + private static Map smurfs = Collections.synchronizedMap(new TreeMap<>()); + + static { + // Just a few here. A full list can be found + // at https://smurfs.fandom.com/wiki/List_of_Smurf_characters + smurfs.put("Papa", new Smurf("Papa", true, true)); + smurfs.put("Actor", new Smurf("Actor", true, true)); + smurfs.put("Alchemist", new Smurf("Alchemist", true, true)); + smurfs.put("Archeologist", new Smurf("Archeologist", true, true)); + smurfs.put("Architect", new Smurf("Architect", true, true)); + smurfs.put("Baby", new Smurf("Baby", true, true)); + smurfs.put("Baker", new Smurf("Baker", true, true)); + smurfs.put("Baker", new Smurf("Baker", true, true)); + } + + public List findAll() { + return Collections.unmodifiableList(smurfs.values().stream().collect(toList())); + } + + public Optional findByName(String name) { + return Optional.of(smurfs.get(name)); + } + +} diff --git a/libraries-testing/src/main/java/com/baeldung/archunit/smurfs/persistence/domain/Smurf.java b/libraries-testing/src/main/java/com/baeldung/archunit/smurfs/persistence/domain/Smurf.java new file mode 100644 index 0000000000..255a024cdc --- /dev/null +++ b/libraries-testing/src/main/java/com/baeldung/archunit/smurfs/persistence/domain/Smurf.java @@ -0,0 +1,39 @@ +package com.baeldung.archunit.smurfs.persistence.domain; + +public class Smurf { + private String name; + private boolean comic; + private boolean cartoon; + + public Smurf() {} + + public Smurf(String name, boolean comic, boolean cartoon) { + this.name = name; + this.comic = comic; + this.cartoon = cartoon; + } + + public String getName() { + return name; + } + + public void setName(String name) { + this.name = name; + } + + public boolean isComic() { + return comic; + } + + public void setCommic(boolean comic) { + this.comic = comic; + } + + public boolean isCartoon() { + return cartoon; + } + + public void setCartoon(boolean cartoon) { + this.cartoon = cartoon; + } +} diff --git a/libraries-testing/src/main/java/com/baeldung/archunit/smurfs/presentation/SmurfsController.java b/libraries-testing/src/main/java/com/baeldung/archunit/smurfs/presentation/SmurfsController.java new file mode 100644 index 0000000000..7e31980d89 --- /dev/null +++ b/libraries-testing/src/main/java/com/baeldung/archunit/smurfs/presentation/SmurfsController.java @@ -0,0 +1,27 @@ +package com.baeldung.archunit.smurfs.presentation; + +import java.util.List; + +import org.springframework.http.MediaType; +import org.springframework.web.bind.annotation.GetMapping; +import org.springframework.web.bind.annotation.RequestMapping; +import org.springframework.web.bind.annotation.RestController; + +import com.baeldung.archunit.smurfs.service.SmurfsService; +import com.baeldung.archunit.smurfs.service.dto.SmurfDTO; + +@RequestMapping(value = "/smurfs", produces = MediaType.APPLICATION_JSON_UTF8_VALUE) +@RestController +public class SmurfsController { + + private SmurfsService smurfs; + + public SmurfsController(SmurfsService smurfs) { + this.smurfs = smurfs; + } + + @GetMapping + public List getSmurfs() { + return smurfs.findAll(); + } +} diff --git a/libraries-testing/src/main/java/com/baeldung/archunit/smurfs/service/SmurfsService.java b/libraries-testing/src/main/java/com/baeldung/archunit/smurfs/service/SmurfsService.java new file mode 100644 index 0000000000..4034b33b39 --- /dev/null +++ b/libraries-testing/src/main/java/com/baeldung/archunit/smurfs/service/SmurfsService.java @@ -0,0 +1,35 @@ + +package com.baeldung.archunit.smurfs.service; + +import java.util.List; +import java.util.stream.Collectors; + +import org.springframework.stereotype.Component; + +import com.baeldung.archunit.smurfs.persistence.SmurfsRepository; +import com.baeldung.archunit.smurfs.persistence.domain.Smurf; +import com.baeldung.archunit.smurfs.service.dto.SmurfDTO; + +@Component +public class SmurfsService { + + private SmurfsRepository repository; + + public SmurfsService(SmurfsRepository repository) { + this.repository = repository; + } + + public List findAll() { + + return repository.findAll() + .stream() + .map(SmurfsService::toDTO) + .collect(Collectors.toList()); + } + + + public static SmurfDTO toDTO(Smurf smurf) { + return new SmurfDTO(smurf.getName(),smurf.isComic(), smurf.isCartoon()); + } + +} diff --git a/libraries-testing/src/main/java/com/baeldung/archunit/smurfs/service/dto/SmurfDTO.java b/libraries-testing/src/main/java/com/baeldung/archunit/smurfs/service/dto/SmurfDTO.java new file mode 100644 index 0000000000..523c639c41 --- /dev/null +++ b/libraries-testing/src/main/java/com/baeldung/archunit/smurfs/service/dto/SmurfDTO.java @@ -0,0 +1,41 @@ + +package com.baeldung.archunit.smurfs.service.dto; + +public class SmurfDTO { + private String name; + private boolean comic; + private boolean cartoon; + + public SmurfDTO() {} + + public SmurfDTO(String name, boolean comic, boolean cartoon) { + this.name = name; + this.comic = comic; + this.cartoon = cartoon; + } + + public String getName() { + return name; + } + + public void setName(String name) { + this.name = name; + } + + public boolean isComic() { + return comic; + } + + public void setCommic(boolean comic) { + this.comic = comic; + } + + public boolean isCartoon() { + return cartoon; + } + + public void setCartoon(boolean cartoon) { + this.cartoon = cartoon; + } + +} diff --git a/libraries-testing/src/test/java/com/baeldung/archunit/smurfs/SmurfsArchUnitTest.java b/libraries-testing/src/test/java/com/baeldung/archunit/smurfs/SmurfsArchUnitTest.java new file mode 100644 index 0000000000..9724c2bcae --- /dev/null +++ b/libraries-testing/src/test/java/com/baeldung/archunit/smurfs/SmurfsArchUnitTest.java @@ -0,0 +1,76 @@ +package com.baeldung.archunit.smurfs; + + +import com.tngtech.archunit.core.domain.JavaClasses; +import com.tngtech.archunit.core.importer.ClassFileImporter; +import com.tngtech.archunit.lang.ArchRule; +import com.tngtech.archunit.library.Architectures.LayeredArchitecture; + +import static com.tngtech.archunit.lang.syntax.ArchRuleDefinition.classes; +import static com.tngtech.archunit.lang.syntax.ArchRuleDefinition.noClasses; +import static com.tngtech.archunit.library.Architectures.layeredArchitecture; + +import static org.junit.jupiter.api.Assertions.assertThrows; + +import org.junit.jupiter.api.Test; + +public class SmurfsArchUnitTest { + + @Test + public void givenPresentationLayerClasses_thenWrongCheckFails() { + JavaClasses jc = new ClassFileImporter().importPackages("com.baeldung.archunit.smurfs"); + + ArchRule r1 = classes() + .that() + .resideInAPackage("..presentation..") + .should().onlyDependOnClassesThat() + .resideInAPackage("..service.."); + + assertThrows(AssertionError.class, ()-> r1.check(jc)) ; + } + + + @Test + public void givenPresentationLayerClasses_thenCheckWithFrameworkDependenciesSuccess() { + JavaClasses jc = new ClassFileImporter().importPackages("com.baeldung.archunit.smurfs"); + + ArchRule r1 = classes() + .that() + .resideInAPackage("..presentation..") + .should().onlyDependOnClassesThat() + .resideInAnyPackage("..service..", "java..", "javax..", "org.springframework.."); + + r1.check(jc); + } + + @Test + public void givenPresentationLayerClasses_thenNoPersistenceLayerAccess() { + JavaClasses jc = new ClassFileImporter().importPackages("com.baeldung.archunit.smurfs"); + + ArchRule r1 = noClasses() + .that() + .resideInAPackage("..presentation..") + .should().dependOnClassesThat() + .resideInAPackage("..persistence.."); + + r1.check(jc); + } + + @Test + public void givenApplicationClasses_thenNoLayerViolationsShouldExist() { + + JavaClasses jc = new ClassFileImporter().importPackages("com.baeldung.archunit.smurfs"); + + LayeredArchitecture arch = layeredArchitecture() + // Define layers + .layer("Presentation").definedBy("..presentation..") + .layer("Service").definedBy("..service..") + .layer("Persistence").definedBy("..persistence..") + // Add constraints + .whereLayer("Presentation").mayNotBeAccessedByAnyLayer() + .whereLayer("Service").mayOnlyBeAccessedByLayers("Presentation") + .whereLayer("Persistence").mayOnlyBeAccessedByLayers("Service"); + + arch.check(jc); + } +} diff --git a/libraries-testing/src/test/resources/logback.xml b/libraries-testing/src/test/resources/logback.xml new file mode 100644 index 0000000000..95160412c3 --- /dev/null +++ b/libraries-testing/src/test/resources/logback.xml @@ -0,0 +1,5 @@ + + + + + diff --git a/maven-modules/optional-dependencies/README.md b/maven-modules/optional-dependencies/README.md index 6b4d3e7647..c17f75c539 100644 --- a/maven-modules/optional-dependencies/README.md +++ b/maven-modules/optional-dependencies/README.md @@ -1,3 +1,3 @@ ### Relevant Articles: -- Optional Dependency in Maven \ No newline at end of file +- [Optional Dependency in Maven](https://www.baeldung.com/maven-optional-dependency) diff --git a/patterns/solid/README.md b/patterns/solid/README.md index 41e986f544..b7eeb59a6f 100644 --- a/patterns/solid/README.md +++ b/patterns/solid/README.md @@ -4,3 +4,4 @@ - [Single Responsibility Principle in Java](https://www.baeldung.com/java-single-responsibility-principle) - [Open/Closed Principle in Java](https://www.baeldung.com/java-open-closed-principle) - [Interface Segregation Principle in Java](https://www.baeldung.com/java-interface-segregation) +- [Liskov Substitution Principle in Java](https://www.baeldung.com/java-liskov-substitution-principle) diff --git a/performance-tests/README.md b/performance-tests/README.md index 09ed26ae19..27c0363010 100644 --- a/performance-tests/README.md +++ b/performance-tests/README.md @@ -5,6 +5,7 @@ This module contains articles about performance testing. ### Relevant Articles: - [Performance of Java Mapping Frameworks](https://www.baeldung.com/java-performance-mapping-frameworks) +- [Performance Effects of Exceptions in Java](https://www.baeldung.com/java-exceptions-performance) ### Running diff --git a/performance-tests/pom.xml b/performance-tests/pom.xml index c790dbbb16..fb3f82df38 100644 --- a/performance-tests/pom.xml +++ b/performance-tests/pom.xml @@ -19,27 +19,14 @@ ${orika.version} - net.sf.dozer - dozer + com.github.dozermapper + dozer-core ${dozer.version} - - - io.craftsman - dozer-jdk8-support - ${dozer-jdk8-support.version} - + org.mapstruct - mapstruct-jdk8 - ${mapstruct-jdk8.version} - true - - - - org.mapstruct - mapstruct-processor - ${mapstruct-jdk8.version} - provided + mapstruct + ${mapstruct.version} @@ -77,10 +64,15 @@ ${javac.target} ${javac.target} + + org.openjdk.jmh + jmh-generator-annprocess + ${jmh.version} + org.mapstruct mapstruct-processor - ${mapstruct-processor.version} + ${mapstruct.version} @@ -120,28 +112,16 @@ - - org.apache.maven.plugins - maven-jar-plugin - ${maven-jar-plugin.version} - - - - com.baeldung.performancetests.MappingFrameworksPerformance - - - - maven-clean-plugin - 2.5 + ${clean.plugin.version} maven-deploy-plugin - 2.8.1 + ${deploy.plugin.version} maven-install-plugin @@ -179,19 +159,13 @@ - 1.21 - 1.5.2 - 5.5.1 - 1.0.2 - 1.2.0.Final - 1.1.0 - 1.6.0.1 - 1.2.0.Final - 1.21 - 1.21 - 3.7.0 - 3.2.0 - + 1.23 + 1.5.4 + 6.5.0 + 1.3.1.Final + 2.3.8 + 1.6.1.CR2 + @@ -201,14 +175,16 @@ Name of the benchmark Uber-JAR to generate. --> benchmarks - 3.1 - 2.2 - 2.5.1 - 2.4 - 2.9.1 - 2.6 - 3.3 - 2.2.1 + 3.1.0 + 3.0.0-M1 + 3.8.1 + 3.2.4 + 3.0.0-M1 + 3.2.0 + 3.2.0 + 3.1.0 + 3.9.1 + 3.2.1 2.17 diff --git a/performance-tests/src/main/java/com/baeldung/performancetests/dozer/DozerConverter.java b/performance-tests/src/main/java/com/baeldung/performancetests/dozer/DozerConverter.java index 710145ec58..e33c407dfa 100644 --- a/performance-tests/src/main/java/com/baeldung/performancetests/dozer/DozerConverter.java +++ b/performance-tests/src/main/java/com/baeldung/performancetests/dozer/DozerConverter.java @@ -2,28 +2,28 @@ package com.baeldung.performancetests.dozer; import com.baeldung.performancetests.Converter; import com.baeldung.performancetests.model.destination.DestinationCode; +import com.baeldung.performancetests.model.destination.Order; import com.baeldung.performancetests.model.source.SourceCode; import com.baeldung.performancetests.model.source.SourceOrder; -import com.baeldung.performancetests.model.destination.Order; -import org.dozer.DozerBeanMapper; -import org.dozer.Mapper; +import com.github.dozermapper.core.DozerBeanMapperBuilder; +import com.github.dozermapper.core.Mapper; - public class DozerConverter implements Converter { - private final Mapper mapper; +public class DozerConverter implements Converter { + private final Mapper mapper; - public DozerConverter() { - DozerBeanMapper mapper = new DozerBeanMapper(); - mapper.addMapping(DozerConverter.class.getResourceAsStream("/dozer-mapping.xml")); - this.mapper = mapper; - } - - @Override - public Order convert(SourceOrder sourceOrder) { - return mapper.map(sourceOrder,Order.class); - } - - @Override - public DestinationCode convert(SourceCode sourceCode) { - return mapper.map(sourceCode, DestinationCode.class); - } + public DozerConverter() { + this.mapper = DozerBeanMapperBuilder.create() + .withMappingFiles("dozer-mapping.xml") + .build(); } + + @Override + public Order convert(SourceOrder sourceOrder) { + return mapper.map(sourceOrder, Order.class); + } + + @Override + public DestinationCode convert(SourceCode sourceCode) { + return mapper.map(sourceCode, DestinationCode.class); + } +} diff --git a/performance-tests/src/main/resources/dozer-mapping.xml b/performance-tests/src/main/resources/dozer-mapping.xml index 7fd7e78e9f..3c4530561a 100644 --- a/performance-tests/src/main/resources/dozer-mapping.xml +++ b/performance-tests/src/main/resources/dozer-mapping.xml @@ -1,8 +1,6 @@ - + true diff --git a/performance-tests/src/test/resources/dozer-mapping.xml b/performance-tests/src/test/resources/dozer-mapping.xml index 7484812431..0476f45cdf 100644 --- a/performance-tests/src/test/resources/dozer-mapping.xml +++ b/performance-tests/src/test/resources/dozer-mapping.xml @@ -1,8 +1,6 @@ - + true diff --git a/persistence-modules/core-java-persistence/README.md b/persistence-modules/core-java-persistence/README.md index a760489480..b7eecdde0d 100644 --- a/persistence-modules/core-java-persistence/README.md +++ b/persistence-modules/core-java-persistence/README.md @@ -13,3 +13,4 @@ - [Returning the Generated Keys in JDBC](https://www.baeldung.com/jdbc-returning-generated-keys) - [Loading JDBC Drivers](https://www.baeldung.com/java-jdbc-loading-drivers) - [Difference Between Statement and PreparedStatement](https://www.baeldung.com/java-statement-preparedstatement) +- [Extracting Database Metadata Using JDBC](https://www.baeldung.com/jdbc-database-metadata) diff --git a/persistence-modules/flyway-repair/README.MD b/persistence-modules/flyway-repair/README.MD index 7d843af9ea..939b8498da 100644 --- a/persistence-modules/flyway-repair/README.MD +++ b/persistence-modules/flyway-repair/README.MD @@ -1 +1,3 @@ ### Relevant Articles: + +- [Flyway Repair With Spring Boot](https://www.baeldung.com/spring-boot-flyway-repair) diff --git a/persistence-modules/hibernate5/README.md b/persistence-modules/hibernate5/README.md index 8793e2e9c7..8fa6843b17 100644 --- a/persistence-modules/hibernate5/README.md +++ b/persistence-modules/hibernate5/README.md @@ -13,3 +13,4 @@ This module contains articles about Hibernate 5. Let's not add more articles her - [Guide to the Hibernate EntityManager](https://www.baeldung.com/hibernate-entitymanager) - [Using c3p0 with Hibernate](https://www.baeldung.com/hibernate-c3p0) - [Persist a JSON Object Using Hibernate](https://www.baeldung.com/hibernate-persist-json-object) +- [What Is the Hi/Lo Algorithm?](https://www.baeldung.com/hi-lo-algorithm-hibernate) diff --git a/persistence-modules/hibernate5/src/main/java/com/baeldung/hibernate/hilo/RestaurantOrder.java b/persistence-modules/hibernate5/src/main/java/com/baeldung/hibernate/hilo/RestaurantOrder.java new file mode 100644 index 0000000000..03d7edeae9 --- /dev/null +++ b/persistence-modules/hibernate5/src/main/java/com/baeldung/hibernate/hilo/RestaurantOrder.java @@ -0,0 +1,34 @@ +package com.baeldung.hibernate.hilo; + +import org.hibernate.annotations.GenericGenerator; +import org.hibernate.annotations.Parameter; + +import javax.persistence.Entity; +import javax.persistence.GeneratedValue; +import javax.persistence.GenerationType; +import javax.persistence.Id; + +@Entity +public class RestaurantOrder { + @Id + @GeneratedValue(strategy = GenerationType.SEQUENCE, generator = "hilo_sequence_generator") + @GenericGenerator( + name = "hilo_sequence_generator", + strategy = "sequence", + parameters = { + @Parameter(name = "sequence_name", value = "hilo_seqeunce"), + @Parameter(name = "initial_value", value = "1"), + @Parameter(name = "increment_size", value = "3"), + @Parameter(name = "optimizer", value = "hilo") + } + ) + private Long id; + + public long getId() { + return id; + } + + public void setId(long id) { + this.id = id; + } +} diff --git a/persistence-modules/hibernate5/src/test/java/com/baeldung/hibernate/hilo/HibernateHiloUnitTest.java b/persistence-modules/hibernate5/src/test/java/com/baeldung/hibernate/hilo/HibernateHiloUnitTest.java new file mode 100644 index 0000000000..9285c30af5 --- /dev/null +++ b/persistence-modules/hibernate5/src/test/java/com/baeldung/hibernate/hilo/HibernateHiloUnitTest.java @@ -0,0 +1,99 @@ +package com.baeldung.hibernate.hilo; + +import org.apache.log4j.BasicConfigurator; +import org.apache.log4j.Level; +import org.apache.log4j.LogManager; +import org.hibernate.HibernateException; +import org.hibernate.Session; +import org.hibernate.SessionFactory; +import org.hibernate.Transaction; +import org.hibernate.boot.Metadata; +import org.hibernate.boot.MetadataSources; +import org.hibernate.boot.SessionFactoryBuilder; +import org.hibernate.boot.registry.StandardServiceRegistryBuilder; +import org.hibernate.service.ServiceRegistry; +import org.junit.After; +import org.junit.Before; +import org.junit.Test; + +import java.io.FileInputStream; +import java.io.IOException; +import java.net.URL; +import java.util.Properties; + +import static org.junit.Assert.fail; + +public class HibernateHiloUnitTest { + private Session session; + + @Before + public void init() { + try { + configureLogger(); + + ServiceRegistry serviceRegistry = configureServiceRegistry(); + SessionFactory factory = getSessionFactoryBuilder(serviceRegistry).build(); + session = factory.openSession(); + } catch (HibernateException | IOException e) { + fail("Failed to initiate Hibernate Session [Exception:" + e.toString() + "]"); + } + } + + private void configureLogger() { + BasicConfigurator.configure(); + LogManager.getLogger("org.hibernate").setLevel(Level.ERROR); + LogManager.getLogger("org.hibernate.id.enhanced.SequenceStructure").setLevel(Level.DEBUG); + LogManager.getLogger("org.hibernate.event.internal.AbstractSaveEventListener").setLevel(Level.DEBUG); + LogManager.getLogger("org.hibernate.SQL").setLevel(Level.DEBUG); + } + + + private static SessionFactoryBuilder getSessionFactoryBuilder(ServiceRegistry serviceRegistry) { + MetadataSources metadataSources = new MetadataSources(serviceRegistry); + metadataSources.addAnnotatedClass(RestaurantOrder.class); + Metadata metadata = metadataSources.buildMetadata(); + + return metadata.getSessionFactoryBuilder(); + } + + private static ServiceRegistry configureServiceRegistry() throws IOException { + Properties properties = getProperties(); + + return new StandardServiceRegistryBuilder().applySettings(properties) + .build(); + } + + private static Properties getProperties() throws IOException { + Properties properties = new Properties(); + URL propertiesURL = getPropertiesURL(); + + try (FileInputStream inputStream = new FileInputStream(propertiesURL.getFile())) { + properties.load(inputStream); + } + + return properties; + } + + private static URL getPropertiesURL() { + return Thread.currentThread() + .getContextClassLoader() + .getResource("hibernate-hilo.properties"); + } + + @Test + public void givenHiLoAlgorithm_when9EntitiesArePersisted_Then3callsToDBForNextValueShouldBeMade() { + Transaction transaction = session.beginTransaction(); + + for (int i = 0; i < 9; i++) { + session.persist(new RestaurantOrder()); + session.flush(); + } + + transaction.commit(); + } + + @After + public void cleanup() { + session.close(); + } +} diff --git a/persistence-modules/hibernate5/src/test/resources/hibernate-hilo.properties b/persistence-modules/hibernate5/src/test/resources/hibernate-hilo.properties new file mode 100644 index 0000000000..60d487c1bd --- /dev/null +++ b/persistence-modules/hibernate5/src/test/resources/hibernate-hilo.properties @@ -0,0 +1,10 @@ +hibernate.connection.driver_class=org.h2.Driver +hibernate.connection.url=jdbc:h2:mem:hilo_db;DB_CLOSE_DELAY=-1 +hibernate.connection.username=sa +hibernate.dialect=org.hibernate.dialect.H2Dialect +hibernate.show_sql=true +hibernate.hbm2ddl.auto=create-drop +hibernate.c3p0.min_size=5 +hibernate.c3p0.max_size=20 +hibernate.c3p0.acquire_increment=5 +hibernate.c3p0.timeout=1800 diff --git a/persistence-modules/java-jpa-3/README.md b/persistence-modules/java-jpa-3/README.md index 01fdf05b53..dce9c4e711 100644 --- a/persistence-modules/java-jpa-3/README.md +++ b/persistence-modules/java-jpa-3/README.md @@ -1,3 +1,7 @@ ## JPA in Java This module contains articles about the Java Persistence API (JPA) in Java. + +### Relevant Articles: + +- [JPA Entity Equality](https://www.baeldung.com/jpa-entity-equality) diff --git a/persistence-modules/spring-data-cosmosdb/README.md b/persistence-modules/spring-data-cosmosdb/README.md new file mode 100644 index 0000000000..c4a102141f --- /dev/null +++ b/persistence-modules/spring-data-cosmosdb/README.md @@ -0,0 +1,3 @@ +### Relevant Articles: + +- [Introduction to Spring Data Azure Cosmos DB](https://www.baeldung.com/spring-data-cosmos-db) diff --git a/persistence-modules/spring-data-jdbc/README.md b/persistence-modules/spring-data-jdbc/README.md new file mode 100644 index 0000000000..0e54d0ba88 --- /dev/null +++ b/persistence-modules/spring-data-jdbc/README.md @@ -0,0 +1,3 @@ +### Relevant Articles: + +- [Introduction to Spring Data JDBC](https://www.baeldung.com/spring-data-jdbc-intro) diff --git a/persistence-modules/spring-data-jpa-query-2/README.md b/persistence-modules/spring-data-jpa-query-2/README.md new file mode 100644 index 0000000000..a4d657d4c6 --- /dev/null +++ b/persistence-modules/spring-data-jpa-query-2/README.md @@ -0,0 +1,16 @@ +## Spring Data JPA - Query + +This module contains articles about querying data using Spring Data JPA + +### Relevant Articles: +- [Use Criteria Queries in a Spring Data Application](https://www.baeldung.com/spring-data-criteria-queries) +- More articles: [[<-- prev]](../spring-data-jpa-query) + +### Eclipse Config +After importing the project into Eclipse, you may see the following error: +"No persistence xml file found in project" + +This can be ignored: +- Project -> Properties -> Java Persistance -> JPA -> Error/Warnings -> Select Ignore on "No persistence xml file found in project" +Or: +- Eclipse -> Preferences - Validation - disable the "Build" execution of the JPA Validator diff --git a/persistence-modules/spring-data-jpa-query-2/pom.xml b/persistence-modules/spring-data-jpa-query-2/pom.xml new file mode 100644 index 0000000000..b9e5120543 --- /dev/null +++ b/persistence-modules/spring-data-jpa-query-2/pom.xml @@ -0,0 +1,33 @@ + + + 4.0.0 + spring-data-jpa-query + spring-data-jpa-query-2 + + + com.baeldung + parent-boot-2 + 0.0.1-SNAPSHOT + ../../parent-boot-2 + + + + + org.springframework.boot + spring-boot-starter-data-jpa + + + + com.h2database + h2 + + + + com.fasterxml.jackson.core + jackson-databind + + + + \ No newline at end of file diff --git a/persistence-modules/spring-jpa/src/main/java/com/baeldung/persistence/dao/BookRepository.java b/persistence-modules/spring-data-jpa-query-2/src/main/java/com/baeldung/persistence/dao/BookRepository.java similarity index 100% rename from persistence-modules/spring-jpa/src/main/java/com/baeldung/persistence/dao/BookRepository.java rename to persistence-modules/spring-data-jpa-query-2/src/main/java/com/baeldung/persistence/dao/BookRepository.java diff --git a/persistence-modules/spring-jpa/src/main/java/com/baeldung/persistence/dao/BookRepositoryCustom.java b/persistence-modules/spring-data-jpa-query-2/src/main/java/com/baeldung/persistence/dao/BookRepositoryCustom.java similarity index 100% rename from persistence-modules/spring-jpa/src/main/java/com/baeldung/persistence/dao/BookRepositoryCustom.java rename to persistence-modules/spring-data-jpa-query-2/src/main/java/com/baeldung/persistence/dao/BookRepositoryCustom.java index 1b46d0ecc3..eda34542df 100644 --- a/persistence-modules/spring-jpa/src/main/java/com/baeldung/persistence/dao/BookRepositoryCustom.java +++ b/persistence-modules/spring-data-jpa-query-2/src/main/java/com/baeldung/persistence/dao/BookRepositoryCustom.java @@ -1,9 +1,9 @@ package com.baeldung.persistence.dao; -import java.util.List; - import com.baeldung.persistence.model.Book; +import java.util.List; + public interface BookRepositoryCustom { List findBooksByAuthorNameAndTitle(String authorName, String title); diff --git a/persistence-modules/spring-jpa/src/main/java/com/baeldung/persistence/dao/BookRepositoryImpl.java b/persistence-modules/spring-data-jpa-query-2/src/main/java/com/baeldung/persistence/dao/BookRepositoryImpl.java similarity index 99% rename from persistence-modules/spring-jpa/src/main/java/com/baeldung/persistence/dao/BookRepositoryImpl.java rename to persistence-modules/spring-data-jpa-query-2/src/main/java/com/baeldung/persistence/dao/BookRepositoryImpl.java index 241a4c05aa..7f5bedd018 100644 --- a/persistence-modules/spring-jpa/src/main/java/com/baeldung/persistence/dao/BookRepositoryImpl.java +++ b/persistence-modules/spring-data-jpa-query-2/src/main/java/com/baeldung/persistence/dao/BookRepositoryImpl.java @@ -1,7 +1,7 @@ package com.baeldung.persistence.dao; -import java.util.ArrayList; -import java.util.List; +import com.baeldung.persistence.model.Book; +import org.springframework.stereotype.Repository; import javax.persistence.EntityManager; import javax.persistence.TypedQuery; @@ -9,9 +9,8 @@ import javax.persistence.criteria.CriteriaBuilder; import javax.persistence.criteria.CriteriaQuery; import javax.persistence.criteria.Predicate; import javax.persistence.criteria.Root; - -import com.baeldung.persistence.model.Book; -import org.springframework.stereotype.Repository; +import java.util.ArrayList; +import java.util.List; @Repository public class BookRepositoryImpl implements BookRepositoryCustom { diff --git a/persistence-modules/spring-jpa/src/main/java/com/baeldung/persistence/dao/BookService.java b/persistence-modules/spring-data-jpa-query-2/src/main/java/com/baeldung/persistence/dao/BookService.java similarity index 90% rename from persistence-modules/spring-jpa/src/main/java/com/baeldung/persistence/dao/BookService.java rename to persistence-modules/spring-data-jpa-query-2/src/main/java/com/baeldung/persistence/dao/BookService.java index f02f9daa11..4165cd8eb9 100644 --- a/persistence-modules/spring-jpa/src/main/java/com/baeldung/persistence/dao/BookService.java +++ b/persistence-modules/spring-data-jpa-query-2/src/main/java/com/baeldung/persistence/dao/BookService.java @@ -1,14 +1,14 @@ package com.baeldung.persistence.dao; -import static com.baeldung.persistence.dao.BookSpecifications.hasAuthor; -import static com.baeldung.persistence.dao.BookSpecifications.titleContains; -import static org.springframework.data.jpa.domain.Specifications.where; - -import java.util.List; - import com.baeldung.persistence.model.Book; import org.springframework.stereotype.Service; +import java.util.List; + +import static com.baeldung.persistence.dao.BookSpecifications.hasAuthor; +import static com.baeldung.persistence.dao.BookSpecifications.titleContains; +import static org.springframework.data.jpa.domain.Specification.where; + @Service public class BookService { diff --git a/persistence-modules/spring-jpa/src/main/java/com/baeldung/persistence/dao/BookSpecifications.java b/persistence-modules/spring-data-jpa-query-2/src/main/java/com/baeldung/persistence/dao/BookSpecifications.java similarity index 100% rename from persistence-modules/spring-jpa/src/main/java/com/baeldung/persistence/dao/BookSpecifications.java rename to persistence-modules/spring-data-jpa-query-2/src/main/java/com/baeldung/persistence/dao/BookSpecifications.java diff --git a/persistence-modules/spring-jpa/src/main/java/com/baeldung/persistence/model/Book.java b/persistence-modules/spring-data-jpa-query-2/src/main/java/com/baeldung/persistence/model/Book.java similarity index 100% rename from persistence-modules/spring-jpa/src/main/java/com/baeldung/persistence/model/Book.java rename to persistence-modules/spring-data-jpa-query-2/src/main/java/com/baeldung/persistence/model/Book.java diff --git a/persistence-modules/spring-data-jpa-query/README.md b/persistence-modules/spring-data-jpa-query/README.md index bfff3c0ef3..34e397394b 100644 --- a/persistence-modules/spring-data-jpa-query/README.md +++ b/persistence-modules/spring-data-jpa-query/README.md @@ -11,6 +11,7 @@ This module contains articles about querying data using Spring Data JPA - [Spring Data JPA Query by Example](https://www.baeldung.com/spring-data-query-by-example) - [JPA Join Types](https://www.baeldung.com/jpa-join-types) - [Spring Data JPA and Named Entity Graphs](https://www.baeldung.com/spring-data-jpa-named-entity-graphs) +- More articles: [[more -->]](../spring-data-jpa-query-2) ### Eclipse Config After importing the project into Eclipse, you may see the following error: diff --git a/persistence-modules/spring-jpa/README.md b/persistence-modules/spring-jpa/README.md index d260913635..f60609e0de 100644 --- a/persistence-modules/spring-jpa/README.md +++ b/persistence-modules/spring-jpa/README.md @@ -7,7 +7,6 @@ - [Self-Contained Testing Using an In-Memory Database](https://www.baeldung.com/spring-jpa-test-in-memory-database) - [A Guide to Spring AbstractRoutingDatasource](https://www.baeldung.com/spring-abstract-routing-data-source) - [Obtaining Auto-generated Keys in Spring JDBC](https://www.baeldung.com/spring-jdbc-autogenerated-keys) -- [Use Criteria Queries in a Spring Data Application](https://www.baeldung.com/spring-data-criteria-queries) - More articles: [[next -->]](/spring-jpa-2) ### Eclipse Config diff --git a/rule-engines/jess/README.md b/rule-engines/jess/README.md new file mode 100644 index 0000000000..a5f02d2f3a --- /dev/null +++ b/rule-engines/jess/README.md @@ -0,0 +1,3 @@ +### Relevant Articles: + +- [Jess Rule Engine and JSR 94](https://www.baeldung.com/java-rule-engine-jess-jsr-94) diff --git a/spring-5-security/README.md b/spring-5-security/README.md index 764d726ff8..6847d4bf5c 100644 --- a/spring-5-security/README.md +++ b/spring-5-security/README.md @@ -11,3 +11,4 @@ This module contains articles about Spring Security 5 - [Guide to the AuthenticationManagerResolver in Spring Security](https://www.baeldung.com/spring-security-authenticationmanagerresolver) - [Disable Security for a Profile in Spring Boot](https://www.baeldung.com/spring-security-disable-profile) - [Manual Logout With Spring Security](https://www.baeldung.com/spring-security-manual-logout) +- [How to Disable Spring Security Logout Redirects](https://www.baeldung.com/spring-security-disable-logout-redirects) diff --git a/spring-all/README.md b/spring-all/README.md deleted file mode 100644 index 9ad78aa1ee..0000000000 --- a/spring-all/README.md +++ /dev/null @@ -1,3 +0,0 @@ -## Spring All - -This module contains articles about Spring diff --git a/spring-all/src/main/java/org/baeldung/scopes/ScopesConfig.java b/spring-all/src/main/java/org/baeldung/scopes/ScopesConfig.java deleted file mode 100644 index 11d3806b6e..0000000000 --- a/spring-all/src/main/java/org/baeldung/scopes/ScopesConfig.java +++ /dev/null @@ -1,61 +0,0 @@ -package org.baeldung.scopes; - -import org.springframework.context.annotation.Bean; -import org.springframework.context.annotation.ComponentScan; -import org.springframework.context.annotation.Configuration; -import org.springframework.context.annotation.Scope; -import org.springframework.context.annotation.ScopedProxyMode; -import org.springframework.web.context.WebApplicationContext; -import org.springframework.web.servlet.config.annotation.EnableWebMvc; -import org.springframework.web.servlet.view.JstlView; -import org.springframework.web.servlet.view.UrlBasedViewResolver; - -@Configuration -@ComponentScan("org.baeldung.scopes") -@EnableWebMvc -public class ScopesConfig { - @Bean - public UrlBasedViewResolver setupViewResolver() { - final UrlBasedViewResolver resolver = new UrlBasedViewResolver(); - resolver.setPrefix("/WEB-INF/view/"); - resolver.setSuffix(".jsp"); - resolver.setViewClass(JstlView.class); - return resolver; - } - - @Bean - @Scope(value = WebApplicationContext.SCOPE_REQUEST, proxyMode = ScopedProxyMode.TARGET_CLASS) - public HelloMessageGenerator requestScopedBean() { - return new HelloMessageGenerator(); - } - - @Bean - @Scope(value = WebApplicationContext.SCOPE_SESSION, proxyMode = ScopedProxyMode.TARGET_CLASS) - public HelloMessageGenerator sessionScopedBean() { - return new HelloMessageGenerator(); - } - - @Bean - @Scope(value = WebApplicationContext.SCOPE_APPLICATION, proxyMode = ScopedProxyMode.TARGET_CLASS) - public HelloMessageGenerator applicationScopedBean() { - return new HelloMessageGenerator(); - } - - @Bean - @Scope(scopeName = "websocket", proxyMode = ScopedProxyMode.TARGET_CLASS) - public HelloMessageGenerator websocketScopedBean() { - return new HelloMessageGenerator(); - } - - @Bean - @Scope("prototype") - public Person personPrototype() { - return new Person(); - } - - @Bean - @Scope("singleton") - public Person personSingleton() { - return new Person(); - } -} diff --git a/spring-boot-modules/pom.xml b/spring-boot-modules/pom.xml index 3a2f14f5df..b4cabaaedf 100644 --- a/spring-boot-modules/pom.xml +++ b/spring-boot-modules/pom.xml @@ -56,6 +56,7 @@ spring-boot-performance spring-boot-properties spring-boot-properties-2 + spring-boot-properties-3 spring-boot-property-exp spring-boot-runtime spring-boot-security diff --git a/spring-boot-modules/spring-boot-actuator/pom.xml b/spring-boot-modules/spring-boot-actuator/pom.xml index 0a7ad5725b..701949519e 100644 --- a/spring-boot-modules/spring-boot-actuator/pom.xml +++ b/spring-boot-modules/spring-boot-actuator/pom.xml @@ -43,6 +43,9 @@ org.springframework.boot spring-boot-maven-plugin + + com.baeldung.probes.ProbesApplication + diff --git a/spring-boot-modules/spring-boot-actuator/src/main/java/com/baeldung/health/CustomStatusCodeMapper.java b/spring-boot-modules/spring-boot-actuator/src/main/java/com/baeldung/health/CustomStatusCodeMapper.java new file mode 100644 index 0000000000..483c21dfc1 --- /dev/null +++ b/spring-boot-modules/spring-boot-actuator/src/main/java/com/baeldung/health/CustomStatusCodeMapper.java @@ -0,0 +1,30 @@ +package com.baeldung.health; + +import org.springframework.boot.actuate.health.HttpCodeStatusMapper; +import org.springframework.boot.actuate.health.Status; +import org.springframework.stereotype.Component; + +@Component +public class CustomStatusCodeMapper implements HttpCodeStatusMapper { + + @Override + public int getStatusCode(Status status) { + if (status == Status.DOWN) { + return 500; + } + + if (status == Status.OUT_OF_SERVICE) { + return 503; + } + + if (status == Status.UNKNOWN) { + return 500; + } + + if (status.getCode().equals("WARNING")) { + return 500; + } + + return 200; + } +} diff --git a/spring-boot-modules/spring-boot-actuator/src/main/java/com/baeldung/health/HealthApplication.java b/spring-boot-modules/spring-boot-actuator/src/main/java/com/baeldung/health/HealthApplication.java new file mode 100644 index 0000000000..af1f35b29f --- /dev/null +++ b/spring-boot-modules/spring-boot-actuator/src/main/java/com/baeldung/health/HealthApplication.java @@ -0,0 +1,12 @@ +package com.baeldung.health; + +import org.springframework.boot.SpringApplication; +import org.springframework.boot.autoconfigure.SpringBootApplication; + +@SpringBootApplication +public class HealthApplication { + + public static void main(String[] args) { + SpringApplication.run(HealthApplication.class, args); + } +} diff --git a/spring-boot-modules/spring-boot-actuator/src/main/java/com/baeldung/health/RandomHealthIndicator.java b/spring-boot-modules/spring-boot-actuator/src/main/java/com/baeldung/health/RandomHealthIndicator.java new file mode 100644 index 0000000000..d8b27c7865 --- /dev/null +++ b/spring-boot-modules/spring-boot-actuator/src/main/java/com/baeldung/health/RandomHealthIndicator.java @@ -0,0 +1,30 @@ +package com.baeldung.health; + +import org.springframework.boot.actuate.autoconfigure.health.ConditionalOnEnabledHealthIndicator; +import org.springframework.boot.actuate.health.Health; +import org.springframework.boot.actuate.health.HealthIndicator; +import org.springframework.stereotype.Component; + +import java.util.HashMap; +import java.util.Map; +import java.util.concurrent.ThreadLocalRandom; + +@Component +@ConditionalOnEnabledHealthIndicator("random") +public class RandomHealthIndicator implements HealthIndicator { + + @Override + public Health health() { + double chance = ThreadLocalRandom.current().nextDouble(); + Health.Builder status = Health.up(); + if (chance > 0.9) { + status = Health.down(new RuntimeException("Bad Luck")); + } + + Map details = new HashMap<>(); + details.put("chance", chance); + details.put("strategy", "thread-local"); + + return status.withDetails(details).build(); + } +} diff --git a/spring-boot-modules/spring-boot-actuator/src/main/java/com/baeldung/health/WarningHealthIndicator.java b/spring-boot-modules/spring-boot-actuator/src/main/java/com/baeldung/health/WarningHealthIndicator.java new file mode 100644 index 0000000000..d978d90339 --- /dev/null +++ b/spring-boot-modules/spring-boot-actuator/src/main/java/com/baeldung/health/WarningHealthIndicator.java @@ -0,0 +1,14 @@ +package com.baeldung.health; + +import org.springframework.boot.actuate.health.Health; +import org.springframework.boot.actuate.health.HealthIndicator; +import org.springframework.stereotype.Component; + +@Component +public class WarningHealthIndicator implements HealthIndicator { + + @Override + public Health health() { + return Health.status("WARNING").build(); + } +} diff --git a/spring-boot-modules/spring-boot-actuator/src/main/resources/application.properties b/spring-boot-modules/spring-boot-actuator/src/main/resources/application.properties index 8c706a9b1d..27dba985b8 100644 --- a/spring-boot-modules/spring-boot-actuator/src/main/resources/application.properties +++ b/spring-boot-modules/spring-boot-actuator/src/main/resources/application.properties @@ -1 +1,5 @@ -management.health.probes.enabled=true \ No newline at end of file +management.health.probes.enabled=true +management.endpoint.health.show-details=always +management.endpoint.health.status.http-mapping.down=500 +management.endpoint.health.status.http-mapping.out_of_service=503 +management.endpoint.health.status.http-mapping.warning=500 \ No newline at end of file diff --git a/spring-boot-modules/spring-boot-actuator/src/test/java/com/baeldung/health/DisabledRandomHealthIndicatorIntegrationTest.java b/spring-boot-modules/spring-boot-actuator/src/test/java/com/baeldung/health/DisabledRandomHealthIndicatorIntegrationTest.java new file mode 100644 index 0000000000..b69e7fd1f8 --- /dev/null +++ b/spring-boot-modules/spring-boot-actuator/src/test/java/com/baeldung/health/DisabledRandomHealthIndicatorIntegrationTest.java @@ -0,0 +1,26 @@ +package com.baeldung.health; + +import org.junit.jupiter.api.Test; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.boot.test.autoconfigure.web.servlet.AutoConfigureMockMvc; +import org.springframework.boot.test.context.SpringBootTest; +import org.springframework.test.context.TestPropertySource; +import org.springframework.test.web.servlet.MockMvc; + +import static org.springframework.test.web.servlet.request.MockMvcRequestBuilders.get; +import static org.springframework.test.web.servlet.result.MockMvcResultMatchers.status; + +@SpringBootTest +@AutoConfigureMockMvc +@TestPropertySource(properties = "management.health.random.enabled=false") +class DisabledRandomHealthIndicatorIntegrationTest { + + @Autowired + private MockMvc mockMvc; + + @Test + void givenADisabledIndicator_whenSendingRequest_thenReturns404() throws Exception { + mockMvc.perform(get("/actuator/health/random")) + .andExpect(status().isNotFound()); + } +} diff --git a/spring-boot-modules/spring-boot-actuator/src/test/java/com/baeldung/health/RandomHealthIndicatorIntegrationTest.java b/spring-boot-modules/spring-boot-actuator/src/test/java/com/baeldung/health/RandomHealthIndicatorIntegrationTest.java new file mode 100644 index 0000000000..dba38d4da3 --- /dev/null +++ b/spring-boot-modules/spring-boot-actuator/src/test/java/com/baeldung/health/RandomHealthIndicatorIntegrationTest.java @@ -0,0 +1,26 @@ +package com.baeldung.health; + +import org.junit.jupiter.api.Test; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.boot.test.autoconfigure.web.servlet.AutoConfigureMockMvc; +import org.springframework.boot.test.context.SpringBootTest; +import org.springframework.test.web.servlet.MockMvc; + +import static org.springframework.test.web.servlet.request.MockMvcRequestBuilders.get; +import static org.springframework.test.web.servlet.result.MockMvcResultMatchers.jsonPath; + +@SpringBootTest +@AutoConfigureMockMvc +class RandomHealthIndicatorIntegrationTest { + + @Autowired + private MockMvc mockMvc; + + @Test + void givenRandomIndicator_whenCallingTheAPI_thenReturnsExpectedDetails() throws Exception { + mockMvc.perform(get("/actuator/health/random")) + .andExpect(jsonPath("$.status").exists()) + .andExpect(jsonPath("$.details.strategy").value("thread-local")) + .andExpect(jsonPath("$.details.chance").exists()); + } +} \ No newline at end of file diff --git a/spring-boot-modules/spring-boot-actuator/src/test/java/com/baeldung/health/WarningHealthIndicatorIntegrationTest.java b/spring-boot-modules/spring-boot-actuator/src/test/java/com/baeldung/health/WarningHealthIndicatorIntegrationTest.java new file mode 100644 index 0000000000..60d11a00c7 --- /dev/null +++ b/spring-boot-modules/spring-boot-actuator/src/test/java/com/baeldung/health/WarningHealthIndicatorIntegrationTest.java @@ -0,0 +1,26 @@ +package com.baeldung.health; + +import org.junit.jupiter.api.Test; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.boot.test.autoconfigure.web.servlet.AutoConfigureMockMvc; +import org.springframework.boot.test.context.SpringBootTest; +import org.springframework.test.web.servlet.MockMvc; + +import static org.springframework.test.web.servlet.request.MockMvcRequestBuilders.get; +import static org.springframework.test.web.servlet.result.MockMvcResultMatchers.jsonPath; +import static org.springframework.test.web.servlet.result.MockMvcResultMatchers.status; + +@SpringBootTest +@AutoConfigureMockMvc +class WarningHealthIndicatorIntegrationTest { + + @Autowired + private MockMvc mockMvc; + + @Test + void givenCustomMapping_whenCallingTheAPI_thenTheStatusCodeIsAsExpected() throws Exception { + mockMvc.perform(get("/actuator/health/warning")) + .andExpect(jsonPath("$.status").value("WARNING")) + .andExpect(status().isInternalServerError()); + } +} \ No newline at end of file diff --git a/spring-boot-modules/spring-boot-mvc/src/main/java/com/baeldung/swagger2boot/model/User.java b/spring-boot-modules/spring-boot-mvc/src/main/java/com/baeldung/swagger2boot/model/User.java index b724031536..339e85e0d4 100644 --- a/spring-boot-modules/spring-boot-mvc/src/main/java/com/baeldung/swagger2boot/model/User.java +++ b/spring-boot-modules/spring-boot-mvc/src/main/java/com/baeldung/swagger2boot/model/User.java @@ -20,7 +20,7 @@ public class User { @Max(value = 65, message = "Age should not be greater than 65") private int age; - @Email(regexp=".@.\\..*", message = "Email should be valid") + @Email(regexp=".*@.*\\..*", message = "Email should be valid") private String email; public Long getId() { diff --git a/spring-boot-modules/spring-boot-properties-3/README.md b/spring-boot-modules/spring-boot-properties-3/README.md new file mode 100644 index 0000000000..d89f825c86 --- /dev/null +++ b/spring-boot-modules/spring-boot-properties-3/README.md @@ -0,0 +1,9 @@ + +## Spring Boot Properties + + + +### Relevant Articles: + +- [How to Define a Map in YAML for a POJO?](https://www.baeldung.com/yaml-map-pojo) + diff --git a/spring-boot-modules/spring-boot-properties-3/pom.xml b/spring-boot-modules/spring-boot-properties-3/pom.xml new file mode 100644 index 0000000000..44e2ef52ac --- /dev/null +++ b/spring-boot-modules/spring-boot-properties-3/pom.xml @@ -0,0 +1,51 @@ + + + 4.0.0 + + com.baeldung.spring-boot-modules + spring-boot-modules + 1.0.0-SNAPSHOT + ../ + + + spring-boot-properties-3 + 0.0.1-SNAPSHOT + spring-boot-properties-3 + Spring Boot Properties Module + + + 1.8 + + + + org.springframework.boot + spring-boot-starter + + + org.springframework.boot + spring-boot-starter-test + test + + + org.junit.vintage + junit-vintage-engine + + + + + org.springframework.boot + spring-boot-starter-web + RELEASE + + + + + + + org.springframework.boot + spring-boot-maven-plugin + + + + diff --git a/spring-boot-modules/spring-boot-properties-3/src/main/java/com/baeldung/boot/properties/DemoApplication.java b/spring-boot-modules/spring-boot-properties-3/src/main/java/com/baeldung/boot/properties/DemoApplication.java new file mode 100644 index 0000000000..cf2fb7f981 --- /dev/null +++ b/spring-boot-modules/spring-boot-properties-3/src/main/java/com/baeldung/boot/properties/DemoApplication.java @@ -0,0 +1,16 @@ +package com.baeldung.boot.properties; + +import com.baeldung.boot.properties.config.TshirtSizeConfig; +import org.springframework.boot.SpringApplication; +import org.springframework.boot.autoconfigure.SpringBootApplication; +import org.springframework.boot.context.properties.EnableConfigurationProperties; + +@SpringBootApplication +@EnableConfigurationProperties(TshirtSizeConfig.class) +public class DemoApplication { + + public static void main(String[] args) { + SpringApplication.run(DemoApplication.class, args); + } + +} diff --git a/spring-boot-modules/spring-boot-properties-3/src/main/java/com/baeldung/boot/properties/config/TshirtSizeConfig.java b/spring-boot-modules/spring-boot-properties-3/src/main/java/com/baeldung/boot/properties/config/TshirtSizeConfig.java new file mode 100644 index 0000000000..690763ab7b --- /dev/null +++ b/spring-boot-modules/spring-boot-properties-3/src/main/java/com/baeldung/boot/properties/config/TshirtSizeConfig.java @@ -0,0 +1,27 @@ +package com.baeldung.boot.properties.config; + +import org.springframework.boot.context.properties.ConfigurationProperties; + +import java.util.Map; + +@ConfigurationProperties(prefix = "t-shirt-size") +public class TshirtSizeConfig { + + private final Map simpleMapping; + + private final Map> complexMapping; + + + public TshirtSizeConfig(Map simpleMapping, Map> complexMapping) { + this.simpleMapping = simpleMapping; + this.complexMapping = complexMapping; + } + + public Map getSimpleMapping() { + return simpleMapping; + } + + public Map> getComplexMapping() { + return complexMapping; + } +} diff --git a/spring-boot-modules/spring-boot-properties-3/src/main/java/com/baeldung/boot/properties/controller/TshirtSizeController.java b/spring-boot-modules/spring-boot-properties-3/src/main/java/com/baeldung/boot/properties/controller/TshirtSizeController.java new file mode 100644 index 0000000000..6b713c5be8 --- /dev/null +++ b/spring-boot-modules/spring-boot-properties-3/src/main/java/com/baeldung/boot/properties/controller/TshirtSizeController.java @@ -0,0 +1,21 @@ +package com.baeldung.boot.properties.controller; + +import org.springframework.web.bind.annotation.*; +import com.baeldung.boot.properties.service.SizeConverterService; + +@RestController +@RequestMapping(value = "/") +public class TshirtSizeController { + + private final SizeConverterService service; + + public TshirtSizeController(SizeConverterService service) { + this.service = service; + } + + @RequestMapping(value ="convertSize", method = RequestMethod.GET) + public int convertSize(@RequestParam(value = "label") final String label, @RequestParam(value = "countryCode", required = false) final String countryCode) { + return service.convertSize(label, countryCode); + } + +} diff --git a/spring-boot-modules/spring-boot-properties-3/src/main/java/com/baeldung/boot/properties/service/SizeConverterImpl.java b/spring-boot-modules/spring-boot-properties-3/src/main/java/com/baeldung/boot/properties/service/SizeConverterImpl.java new file mode 100644 index 0000000000..34f7fe2ded --- /dev/null +++ b/spring-boot-modules/spring-boot-properties-3/src/main/java/com/baeldung/boot/properties/service/SizeConverterImpl.java @@ -0,0 +1,22 @@ +package com.baeldung.boot.properties.service; + +import org.springframework.stereotype.Service; +import com.baeldung.boot.properties.config.TshirtSizeConfig; + + +@Service +public class SizeConverterImpl implements SizeConverterService { + + private final TshirtSizeConfig tshirtSizeConfig; + + public SizeConverterImpl(TshirtSizeConfig tshirtSizeConfig) { + this.tshirtSizeConfig = tshirtSizeConfig; + } + + public int convertSize(String label, String countryCode) { + if(countryCode == null) { + return tshirtSizeConfig.getSimpleMapping().get(label); + } + return tshirtSizeConfig.getComplexMapping().get(label).get(countryCode.toLowerCase()); + } +} diff --git a/spring-boot-modules/spring-boot-properties-3/src/main/java/com/baeldung/boot/properties/service/SizeConverterService.java b/spring-boot-modules/spring-boot-properties-3/src/main/java/com/baeldung/boot/properties/service/SizeConverterService.java new file mode 100644 index 0000000000..412199b176 --- /dev/null +++ b/spring-boot-modules/spring-boot-properties-3/src/main/java/com/baeldung/boot/properties/service/SizeConverterService.java @@ -0,0 +1,8 @@ +package com.baeldung.boot.properties.service; + + +public interface SizeConverterService { + + int convertSize(String label, String countryCode); + +} diff --git a/spring-boot-modules/spring-boot-properties-3/src/main/java/com/baeldung/propertiesvsyaml/ConfigProperties.java b/spring-boot-modules/spring-boot-properties-3/src/main/java/com/baeldung/propertiesvsyaml/ConfigProperties.java new file mode 100644 index 0000000000..3a7ed76276 --- /dev/null +++ b/spring-boot-modules/spring-boot-properties-3/src/main/java/com/baeldung/propertiesvsyaml/ConfigProperties.java @@ -0,0 +1,27 @@ +package com.baeldung.propertiesvsyaml; + +import org.springframework.boot.context.properties.ConfigurationProperties; + + +@ConfigurationProperties(prefix = "app") +public class ConfigProperties { + + String name; + String description; + + public String getName() { + return name; + } + + public void setName(String name) { + this.name = name; + } + + public String getDescription() { + return description; + } + + public void setDescription(String description) { + this.description = description; + } +} \ No newline at end of file diff --git a/spring-boot-modules/spring-boot-properties-3/src/main/java/com/baeldung/propertiesvsyaml/EnvironmentProperties.java b/spring-boot-modules/spring-boot-properties-3/src/main/java/com/baeldung/propertiesvsyaml/EnvironmentProperties.java new file mode 100644 index 0000000000..b5586956cc --- /dev/null +++ b/spring-boot-modules/spring-boot-properties-3/src/main/java/com/baeldung/propertiesvsyaml/EnvironmentProperties.java @@ -0,0 +1,16 @@ +package com.baeldung.propertiesvsyaml; + +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.core.env.Environment; +import org.springframework.stereotype.Component; + +@Component +public class EnvironmentProperties { + + @Autowired + private Environment env; + + public String getSomeKey() { + return env.getProperty("key.something"); + } +} diff --git a/spring-boot-modules/spring-boot-properties-3/src/main/java/com/baeldung/propertiesvsyaml/ValueProperties.java b/spring-boot-modules/spring-boot-properties-3/src/main/java/com/baeldung/propertiesvsyaml/ValueProperties.java new file mode 100644 index 0000000000..fb9ef9b1cf --- /dev/null +++ b/spring-boot-modules/spring-boot-properties-3/src/main/java/com/baeldung/propertiesvsyaml/ValueProperties.java @@ -0,0 +1,13 @@ +package com.baeldung.propertiesvsyaml; + +import org.springframework.beans.factory.annotation.Value; + +public class ValueProperties { + + @Value("${key.something}") + private String injectedProperty; + + public String getAppName() { + return injectedProperty; + } +} diff --git a/spring-boot-modules/spring-boot-properties-3/src/main/resources/application.properties b/spring-boot-modules/spring-boot-properties-3/src/main/resources/application.properties new file mode 100644 index 0000000000..eace1f0e46 --- /dev/null +++ b/spring-boot-modules/spring-boot-properties-3/src/main/resources/application.properties @@ -0,0 +1,11 @@ +application.servers[0].ip=127.0.0.1 +application.servers[0].path=/path1 +application.servers[1].ip=127.0.0.2 +application.servers[1].path=/path2 +application.servers[2].ip=127.0.0.3 +application.servers[2].path=/path3 +spring.datasource.url=jdbc:h2:dev +spring.datasource.username=SA +spring.datasource.password=password +app.name=MyApp +app.description=${app.name} is a Spring Boot application \ No newline at end of file diff --git a/spring-boot-modules/spring-boot-properties-3/src/main/resources/application.yml b/spring-boot-modules/spring-boot-properties-3/src/main/resources/application.yml new file mode 100644 index 0000000000..00baeade9c --- /dev/null +++ b/spring-boot-modules/spring-boot-properties-3/src/main/resources/application.yml @@ -0,0 +1,52 @@ +logging: + file: + name: myapplication.log +spring: + datasource: + password: 'password' + url: jdbc:h2:dev + username: SA +--- +spring: + datasource: + password: 'password' + url: jdbc:mysql://localhost:3306/db_production + username: user +application: + servers: + - ip: '127.0.0.1' + path: '/path1' + - ip: '127.0.0.2' + path: '/path2' + - ip: '127.0.0.3' + path: '/path3' + t-shirt-size: + simple-mapping: + XS: 6 + S: 8 + M: 10 + L: 12 + XL: 14 + + + complex-mapping: + XS: + uk: 6 + fr: 34 + us: 2 + S: + uk: 8 + fr: 36 + us: 4 + M: + uk: 10 + fr: 38 + us: 6 + L: + uk: 12 + fr: 40 + us: 8 + XL: + uk: 14 + fr: 42 + us: 10 diff --git a/spring-boot-modules/spring-boot-properties-3/src/test/java/com/baeldung/boot/properties/controller/TshirtSizeControllerTest.java b/spring-boot-modules/spring-boot-properties-3/src/test/java/com/baeldung/boot/properties/controller/TshirtSizeControllerTest.java new file mode 100644 index 0000000000..0b70ed8622 --- /dev/null +++ b/spring-boot-modules/spring-boot-properties-3/src/test/java/com/baeldung/boot/properties/controller/TshirtSizeControllerTest.java @@ -0,0 +1,38 @@ +package com.baeldung.boot.properties.controller; + +import org.junit.jupiter.api.Test; +import org.junit.jupiter.api.extension.ExtendWith; +import org.mockito.InjectMocks; +import org.mockito.Mock; +import org.mockito.junit.jupiter.MockitoExtension; +import com.baeldung.boot.properties.service.SizeConverterService; + +import static org.junit.jupiter.api.Assertions.*; +import static org.mockito.Mockito.when; + +@ExtendWith(MockitoExtension.class) +class TshirtSizeControllerUnitTest { + + @Mock + private SizeConverterService service; + + @InjectMocks + private TshirtSizeController tested; + + @Test + void whenConvertSize_thenOK() { + + // Given + String label = "S"; + String countryCode = "fr"; + int result = 36; + + // When + when(service.convertSize(label, countryCode)).thenReturn(result); + int actual = tested.convertSize(label, countryCode); + + // Then + assertEquals(actual, result); + + } +} \ No newline at end of file diff --git a/spring-boot-modules/spring-boot-xml/README.md b/spring-boot-modules/spring-boot-xml/README.md new file mode 100644 index 0000000000..7a9a0bdc09 --- /dev/null +++ b/spring-boot-modules/spring-boot-xml/README.md @@ -0,0 +1,3 @@ +### Relevant Articles: + +- [XML Defined Beans in Spring Boot](https://www.baeldung.com/spring-boot-xml-beans) diff --git a/spring-cloud/spring-cloud-config/pom.xml b/spring-cloud/spring-cloud-config/pom.xml index 5097a63092..8411a65500 100644 --- a/spring-cloud/spring-cloud-config/pom.xml +++ b/spring-cloud/spring-cloud-config/pom.xml @@ -33,8 +33,7 @@ - Hoxton.RELEASE - 2.2.2.RELEASE + Hoxton.SR4 diff --git a/spring-cloud/spring-cloud-consul/pom.xml b/spring-cloud/spring-cloud-consul/pom.xml index f7f5f84c56..4d4ac0aa01 100644 --- a/spring-cloud/spring-cloud-consul/pom.xml +++ b/spring-cloud/spring-cloud-consul/pom.xml @@ -12,6 +12,13 @@ spring-cloud 1.0.0-SNAPSHOT + + + + jitpack.io + https://jitpack.io + + @@ -25,18 +32,32 @@ spring-cloud-starter-consul-config ${spring-cloud-starter-consul.version} - + + org.springframework.boot + spring-boot-starter-web + org.springframework.boot spring-boot-starter-test - ${spring-boot-starter-test.version} test + + com.github.kinguinltdhk + leadership-consul + ${kinguinltdhk.version} + + + com.ecwid.consul + consul-api + + + - 1.3.0.RELEASE - 1.5.10.RELEASE + 2.2.3.RELEASE + 0.3.1 + com.baeldung.spring.cloud.consul.discovery.DiscoveryClientApplication diff --git a/spring-cloud/spring-cloud-consul/src/main/java/com/baeldung/spring/cloud/consul/discovery/DiscoveryClientApplication.java b/spring-cloud/spring-cloud-consul/src/main/java/com/baeldung/spring/cloud/consul/discovery/DiscoveryClientApplication.java index e01799b8d9..e27aaf09ae 100644 --- a/spring-cloud/spring-cloud-consul/src/main/java/com/baeldung/spring/cloud/consul/discovery/DiscoveryClientApplication.java +++ b/spring-cloud/spring-cloud-consul/src/main/java/com/baeldung/spring/cloud/consul/discovery/DiscoveryClientApplication.java @@ -11,7 +11,7 @@ import static org.springframework.boot.WebApplicationType.NONE; public class DiscoveryClientApplication { public static void main(String[] args) { - new SpringApplicationBuilder(DiscoveryClientApplication.class).web(NONE) + new SpringApplicationBuilder(DiscoveryClientApplication.class) .run(args); } diff --git a/spring-cloud/spring-cloud-consul/src/main/java/com/baeldung/spring/cloud/consul/leadership/LeadershipElection.java b/spring-cloud/spring-cloud-consul/src/main/java/com/baeldung/spring/cloud/consul/leadership/LeadershipElection.java new file mode 100644 index 0000000000..184a1e2213 --- /dev/null +++ b/spring-cloud/spring-cloud-consul/src/main/java/com/baeldung/spring/cloud/consul/leadership/LeadershipElection.java @@ -0,0 +1,16 @@ +package com.baeldung.spring.cloud.consul.leadership; + +import java.util.concurrent.ExecutionException; + +import net.kinguin.leadership.consul.factory.SimpleConsulClusterFactory; + +public class LeadershipElection { + public static void main(String[] args) throws ExecutionException, InterruptedException { + new SimpleConsulClusterFactory() + .mode(SimpleConsulClusterFactory.MODE_MULTI) + .debug(true) + .build() + .asObservable() + .subscribe(i -> System.out.println(i)); + } +} diff --git a/spring-cloud/spring-cloud-consul/src/main/resources/application.yml b/spring-cloud/spring-cloud-consul/src/main/resources/application.yml index ccdc3fdeee..85cfb35685 100644 --- a/spring-cloud/spring-cloud-consul/src/main/resources/application.yml +++ b/spring-cloud/spring-cloud-consul/src/main/resources/application.yml @@ -11,4 +11,19 @@ spring: enabled: true instanceId: ${spring.application.name}:${random.value} server: - port: 0 \ No newline at end of file + port: 0 + +cluster: + leader: + serviceName: cluster + serviceId: node-1 + consul: + host: localhost + port: 8500 + discovery: + enabled: false + session: + ttl: 15 + refresh: 7 + election: + envelopeTemplate: services/%s/leader \ No newline at end of file diff --git a/spring-mvc-java-2/README.md b/spring-mvc-java-2/README.md index 42fa056b99..41ff7bdf7c 100644 --- a/spring-mvc-java-2/README.md +++ b/spring-mvc-java-2/README.md @@ -6,3 +6,4 @@ - [A Quick Guide to Spring MVC Matrix Variables](https://www.baeldung.com/spring-mvc-matrix-variables) - [Converting a Spring MultipartFile to a File](https://www.baeldung.com/spring-multipartfile-to-file) - [Testing a Spring Multipart POST Request](https://www.baeldung.com/spring-multipart-post-request-test) +- [Spring @Pathvariable Annotation](https://www.baeldung.com/spring-pathvariable) diff --git a/spring-security-modules/pom.xml b/spring-security-modules/pom.xml index 815b84d448..b68138964b 100644 --- a/spring-security-modules/pom.xml +++ b/spring-security-modules/pom.xml @@ -32,12 +32,12 @@ spring-security-oidc spring-security-okta spring-security-web-react - spring-security-rest - spring-security-rest-basic-auth - spring-security-rest-custom + spring-security-web-rest + spring-security-web-rest-basic-auth + spring-security-web-rest-custom spring-security-oauth2-sso - spring-security-thymeleaf - spring-security-x509 + spring-security-web-thymeleaf + spring-security-web-x509 spring-security-kotlin-dsl diff --git a/spring-security-modules/spring-security-rest-basic-auth/.gitignore b/spring-security-modules/spring-security-web-rest-basic-auth/.gitignore similarity index 100% rename from spring-security-modules/spring-security-rest-basic-auth/.gitignore rename to spring-security-modules/spring-security-web-rest-basic-auth/.gitignore diff --git a/spring-security-modules/spring-security-rest-basic-auth/README.md b/spring-security-modules/spring-security-web-rest-basic-auth/README.md similarity index 91% rename from spring-security-modules/spring-security-rest-basic-auth/README.md rename to spring-security-modules/spring-security-web-rest-basic-auth/README.md index af6dd598cc..97f682acd3 100644 --- a/spring-security-modules/spring-security-rest-basic-auth/README.md +++ b/spring-security-modules/spring-security-web-rest-basic-auth/README.md @@ -1,4 +1,4 @@ -## Spring Security REST Basic Authentication +## Spring Security Web - REST Basic Authentication This module contains articles about basic authentication in RESTful APIs with Spring Security diff --git a/spring-security-modules/spring-security-rest-basic-auth/pom.xml b/spring-security-modules/spring-security-web-rest-basic-auth/pom.xml similarity index 98% rename from spring-security-modules/spring-security-rest-basic-auth/pom.xml rename to spring-security-modules/spring-security-web-rest-basic-auth/pom.xml index 416882b3d4..0dc0b9cc42 100644 --- a/spring-security-modules/spring-security-rest-basic-auth/pom.xml +++ b/spring-security-modules/spring-security-web-rest-basic-auth/pom.xml @@ -2,9 +2,9 @@ 4.0.0 - spring-security-rest-basic-auth + spring-security-web-rest-basic-auth 0.2-SNAPSHOT - spring-security-rest-basic-auth + spring-security-web-rest-basic-auth war diff --git a/spring-security-modules/spring-security-rest-basic-auth/src/main/java/com/baeldung/basic/MyBasicAuthenticationEntryPoint.java b/spring-security-modules/spring-security-web-rest-basic-auth/src/main/java/com/baeldung/basic/MyBasicAuthenticationEntryPoint.java similarity index 100% rename from spring-security-modules/spring-security-rest-basic-auth/src/main/java/com/baeldung/basic/MyBasicAuthenticationEntryPoint.java rename to spring-security-modules/spring-security-web-rest-basic-auth/src/main/java/com/baeldung/basic/MyBasicAuthenticationEntryPoint.java diff --git a/spring-security-modules/spring-security-rest-basic-auth/src/main/java/com/baeldung/client/HttpComponentsClientHttpRequestFactoryBasicAuth.java b/spring-security-modules/spring-security-web-rest-basic-auth/src/main/java/com/baeldung/client/HttpComponentsClientHttpRequestFactoryBasicAuth.java similarity index 100% rename from spring-security-modules/spring-security-rest-basic-auth/src/main/java/com/baeldung/client/HttpComponentsClientHttpRequestFactoryBasicAuth.java rename to spring-security-modules/spring-security-web-rest-basic-auth/src/main/java/com/baeldung/client/HttpComponentsClientHttpRequestFactoryBasicAuth.java diff --git a/spring-security-modules/spring-security-rest-basic-auth/src/main/java/com/baeldung/client/RestTemplateFactory.java b/spring-security-modules/spring-security-web-rest-basic-auth/src/main/java/com/baeldung/client/RestTemplateFactory.java similarity index 100% rename from spring-security-modules/spring-security-rest-basic-auth/src/main/java/com/baeldung/client/RestTemplateFactory.java rename to spring-security-modules/spring-security-web-rest-basic-auth/src/main/java/com/baeldung/client/RestTemplateFactory.java diff --git a/spring-security-modules/spring-security-rest-basic-auth/src/main/java/com/baeldung/client/spring/ClientConfig.java b/spring-security-modules/spring-security-web-rest-basic-auth/src/main/java/com/baeldung/client/spring/ClientConfig.java similarity index 100% rename from spring-security-modules/spring-security-rest-basic-auth/src/main/java/com/baeldung/client/spring/ClientConfig.java rename to spring-security-modules/spring-security-web-rest-basic-auth/src/main/java/com/baeldung/client/spring/ClientConfig.java diff --git a/spring-security-modules/spring-security-rest-basic-auth/src/main/java/com/baeldung/filter/CustomFilter.java b/spring-security-modules/spring-security-web-rest-basic-auth/src/main/java/com/baeldung/filter/CustomFilter.java similarity index 100% rename from spring-security-modules/spring-security-rest-basic-auth/src/main/java/com/baeldung/filter/CustomFilter.java rename to spring-security-modules/spring-security-web-rest-basic-auth/src/main/java/com/baeldung/filter/CustomFilter.java diff --git a/spring-security-modules/spring-security-rest-basic-auth/src/main/java/com/baeldung/filter/CustomWebSecurityConfigurerAdapter.java b/spring-security-modules/spring-security-web-rest-basic-auth/src/main/java/com/baeldung/filter/CustomWebSecurityConfigurerAdapter.java similarity index 100% rename from spring-security-modules/spring-security-rest-basic-auth/src/main/java/com/baeldung/filter/CustomWebSecurityConfigurerAdapter.java rename to spring-security-modules/spring-security-web-rest-basic-auth/src/main/java/com/baeldung/filter/CustomWebSecurityConfigurerAdapter.java diff --git a/spring-security-modules/spring-security-rest-basic-auth/src/main/java/com/baeldung/security/MySavedRequestAwareAuthenticationSuccessHandler.java b/spring-security-modules/spring-security-web-rest-basic-auth/src/main/java/com/baeldung/security/MySavedRequestAwareAuthenticationSuccessHandler.java similarity index 100% rename from spring-security-modules/spring-security-rest-basic-auth/src/main/java/com/baeldung/security/MySavedRequestAwareAuthenticationSuccessHandler.java rename to spring-security-modules/spring-security-web-rest-basic-auth/src/main/java/com/baeldung/security/MySavedRequestAwareAuthenticationSuccessHandler.java diff --git a/spring-security-modules/spring-security-rest-basic-auth/src/main/java/com/baeldung/security/RestAuthenticationEntryPoint.java b/spring-security-modules/spring-security-web-rest-basic-auth/src/main/java/com/baeldung/security/RestAuthenticationEntryPoint.java similarity index 100% rename from spring-security-modules/spring-security-rest-basic-auth/src/main/java/com/baeldung/security/RestAuthenticationEntryPoint.java rename to spring-security-modules/spring-security-web-rest-basic-auth/src/main/java/com/baeldung/security/RestAuthenticationEntryPoint.java diff --git a/spring-security-modules/spring-security-rest-basic-auth/src/main/java/com/baeldung/spring/SecSecurityConfig.java b/spring-security-modules/spring-security-web-rest-basic-auth/src/main/java/com/baeldung/spring/SecSecurityConfig.java similarity index 100% rename from spring-security-modules/spring-security-rest-basic-auth/src/main/java/com/baeldung/spring/SecSecurityConfig.java rename to spring-security-modules/spring-security-web-rest-basic-auth/src/main/java/com/baeldung/spring/SecSecurityConfig.java diff --git a/spring-security-modules/spring-security-rest-basic-auth/src/main/java/com/baeldung/spring/WebConfig.java b/spring-security-modules/spring-security-web-rest-basic-auth/src/main/java/com/baeldung/spring/WebConfig.java similarity index 100% rename from spring-security-modules/spring-security-rest-basic-auth/src/main/java/com/baeldung/spring/WebConfig.java rename to spring-security-modules/spring-security-web-rest-basic-auth/src/main/java/com/baeldung/spring/WebConfig.java diff --git a/spring-security-modules/spring-security-rest-basic-auth/src/main/java/com/baeldung/web/controller/BarController.java b/spring-security-modules/spring-security-web-rest-basic-auth/src/main/java/com/baeldung/web/controller/BarController.java similarity index 100% rename from spring-security-modules/spring-security-rest-basic-auth/src/main/java/com/baeldung/web/controller/BarController.java rename to spring-security-modules/spring-security-web-rest-basic-auth/src/main/java/com/baeldung/web/controller/BarController.java diff --git a/spring-security-modules/spring-security-rest-basic-auth/src/main/java/com/baeldung/web/controller/FooController.java b/spring-security-modules/spring-security-web-rest-basic-auth/src/main/java/com/baeldung/web/controller/FooController.java similarity index 100% rename from spring-security-modules/spring-security-rest-basic-auth/src/main/java/com/baeldung/web/controller/FooController.java rename to spring-security-modules/spring-security-web-rest-basic-auth/src/main/java/com/baeldung/web/controller/FooController.java diff --git a/spring-security-modules/spring-security-rest-basic-auth/src/main/java/com/baeldung/web/dto/Bar.java b/spring-security-modules/spring-security-web-rest-basic-auth/src/main/java/com/baeldung/web/dto/Bar.java similarity index 100% rename from spring-security-modules/spring-security-rest-basic-auth/src/main/java/com/baeldung/web/dto/Bar.java rename to spring-security-modules/spring-security-web-rest-basic-auth/src/main/java/com/baeldung/web/dto/Bar.java diff --git a/spring-security-modules/spring-security-rest-basic-auth/src/main/java/com/baeldung/web/dto/Foo.java b/spring-security-modules/spring-security-web-rest-basic-auth/src/main/java/com/baeldung/web/dto/Foo.java similarity index 100% rename from spring-security-modules/spring-security-rest-basic-auth/src/main/java/com/baeldung/web/dto/Foo.java rename to spring-security-modules/spring-security-web-rest-basic-auth/src/main/java/com/baeldung/web/dto/Foo.java diff --git a/spring-security-modules/spring-security-rest-basic-auth/src/main/resources/logback.xml b/spring-security-modules/spring-security-web-rest-basic-auth/src/main/resources/logback.xml similarity index 100% rename from spring-security-modules/spring-security-rest-basic-auth/src/main/resources/logback.xml rename to spring-security-modules/spring-security-web-rest-basic-auth/src/main/resources/logback.xml diff --git a/spring-security-modules/spring-security-rest-basic-auth/src/main/resources/webSecurityConfig.xml b/spring-security-modules/spring-security-web-rest-basic-auth/src/main/resources/webSecurityConfig.xml similarity index 100% rename from spring-security-modules/spring-security-rest-basic-auth/src/main/resources/webSecurityConfig.xml rename to spring-security-modules/spring-security-web-rest-basic-auth/src/main/resources/webSecurityConfig.xml diff --git a/spring-security-modules/spring-security-rest-basic-auth/src/main/webapp/WEB-INF/api-servlet.xml b/spring-security-modules/spring-security-web-rest-basic-auth/src/main/webapp/WEB-INF/api-servlet.xml similarity index 100% rename from spring-security-modules/spring-security-rest-basic-auth/src/main/webapp/WEB-INF/api-servlet.xml rename to spring-security-modules/spring-security-web-rest-basic-auth/src/main/webapp/WEB-INF/api-servlet.xml diff --git a/spring-security-modules/spring-security-rest-basic-auth/src/main/webapp/WEB-INF/web.xml b/spring-security-modules/spring-security-web-rest-basic-auth/src/main/webapp/WEB-INF/web.xml similarity index 100% rename from spring-security-modules/spring-security-rest-basic-auth/src/main/webapp/WEB-INF/web.xml rename to spring-security-modules/spring-security-web-rest-basic-auth/src/main/webapp/WEB-INF/web.xml diff --git a/spring-security-modules/spring-security-rest-basic-auth/src/test/java/com/baeldung/SpringContextTest.java b/spring-security-modules/spring-security-web-rest-basic-auth/src/test/java/com/baeldung/SpringContextTest.java similarity index 100% rename from spring-security-modules/spring-security-rest-basic-auth/src/test/java/com/baeldung/SpringContextTest.java rename to spring-security-modules/spring-security-web-rest-basic-auth/src/test/java/com/baeldung/SpringContextTest.java diff --git a/spring-security-modules/spring-security-rest-basic-auth/src/test/resources/.gitignore b/spring-security-modules/spring-security-web-rest-basic-auth/src/test/resources/.gitignore similarity index 100% rename from spring-security-modules/spring-security-rest-basic-auth/src/test/resources/.gitignore rename to spring-security-modules/spring-security-web-rest-basic-auth/src/test/resources/.gitignore diff --git a/spring-security-modules/spring-security-rest-custom/README.md b/spring-security-modules/spring-security-web-rest-custom/README.md similarity index 93% rename from spring-security-modules/spring-security-rest-custom/README.md rename to spring-security-modules/spring-security-web-rest-custom/README.md index be360e035e..09b795c4b8 100644 --- a/spring-security-modules/spring-security-rest-custom/README.md +++ b/spring-security-modules/spring-security-web-rest-custom/README.md @@ -1,4 +1,4 @@ -## Spring Security REST Custom +## Spring Security Web - REST Custom This module contains articles about REST APIs with Spring Security diff --git a/spring-security-modules/spring-security-rest-custom/pom.xml b/spring-security-modules/spring-security-web-rest-custom/pom.xml similarity index 98% rename from spring-security-modules/spring-security-rest-custom/pom.xml rename to spring-security-modules/spring-security-web-rest-custom/pom.xml index b4f0f93bb6..0ba7f95de7 100644 --- a/spring-security-modules/spring-security-rest-custom/pom.xml +++ b/spring-security-modules/spring-security-web-rest-custom/pom.xml @@ -2,9 +2,9 @@ 4.0.0 - spring-security-rest-custom + spring-security-web-rest-custom 0.1-SNAPSHOT - spring-security-rest-custom + spring-security-web-rest-custom war diff --git a/spring-security-modules/spring-security-rest-custom/src/main/java/com/baeldung/config/MainWebAppInitializer.java b/spring-security-modules/spring-security-web-rest-custom/src/main/java/com/baeldung/config/MainWebAppInitializer.java similarity index 100% rename from spring-security-modules/spring-security-rest-custom/src/main/java/com/baeldung/config/MainWebAppInitializer.java rename to spring-security-modules/spring-security-web-rest-custom/src/main/java/com/baeldung/config/MainWebAppInitializer.java diff --git a/spring-security-modules/spring-security-rest-custom/src/main/java/com/baeldung/config/child/MethodSecurityConfig.java b/spring-security-modules/spring-security-web-rest-custom/src/main/java/com/baeldung/config/child/MethodSecurityConfig.java similarity index 100% rename from spring-security-modules/spring-security-rest-custom/src/main/java/com/baeldung/config/child/MethodSecurityConfig.java rename to spring-security-modules/spring-security-web-rest-custom/src/main/java/com/baeldung/config/child/MethodSecurityConfig.java diff --git a/spring-security-modules/spring-security-rest-custom/src/main/java/com/baeldung/config/child/WebConfig.java b/spring-security-modules/spring-security-web-rest-custom/src/main/java/com/baeldung/config/child/WebConfig.java similarity index 100% rename from spring-security-modules/spring-security-rest-custom/src/main/java/com/baeldung/config/child/WebConfig.java rename to spring-security-modules/spring-security-web-rest-custom/src/main/java/com/baeldung/config/child/WebConfig.java diff --git a/spring-security-modules/spring-security-rest-custom/src/main/java/com/baeldung/config/parent/SecurityConfig.java b/spring-security-modules/spring-security-web-rest-custom/src/main/java/com/baeldung/config/parent/SecurityConfig.java similarity index 100% rename from spring-security-modules/spring-security-rest-custom/src/main/java/com/baeldung/config/parent/SecurityConfig.java rename to spring-security-modules/spring-security-web-rest-custom/src/main/java/com/baeldung/config/parent/SecurityConfig.java diff --git a/spring-security-modules/spring-security-rest-custom/src/main/java/com/baeldung/config/parent/ServiceConfig.java b/spring-security-modules/spring-security-web-rest-custom/src/main/java/com/baeldung/config/parent/ServiceConfig.java similarity index 100% rename from spring-security-modules/spring-security-rest-custom/src/main/java/com/baeldung/config/parent/ServiceConfig.java rename to spring-security-modules/spring-security-web-rest-custom/src/main/java/com/baeldung/config/parent/ServiceConfig.java diff --git a/spring-security-modules/spring-security-rest-custom/src/main/java/com/baeldung/security/AuthenticationFacade.java b/spring-security-modules/spring-security-web-rest-custom/src/main/java/com/baeldung/security/AuthenticationFacade.java similarity index 100% rename from spring-security-modules/spring-security-rest-custom/src/main/java/com/baeldung/security/AuthenticationFacade.java rename to spring-security-modules/spring-security-web-rest-custom/src/main/java/com/baeldung/security/AuthenticationFacade.java diff --git a/spring-security-modules/spring-security-rest-custom/src/main/java/com/baeldung/security/CustomAuthenticationProvider.java b/spring-security-modules/spring-security-web-rest-custom/src/main/java/com/baeldung/security/CustomAuthenticationProvider.java similarity index 100% rename from spring-security-modules/spring-security-rest-custom/src/main/java/com/baeldung/security/CustomAuthenticationProvider.java rename to spring-security-modules/spring-security-web-rest-custom/src/main/java/com/baeldung/security/CustomAuthenticationProvider.java diff --git a/spring-security-modules/spring-security-rest-custom/src/main/java/com/baeldung/security/IAuthenticationFacade.java b/spring-security-modules/spring-security-web-rest-custom/src/main/java/com/baeldung/security/IAuthenticationFacade.java similarity index 100% rename from spring-security-modules/spring-security-rest-custom/src/main/java/com/baeldung/security/IAuthenticationFacade.java rename to spring-security-modules/spring-security-web-rest-custom/src/main/java/com/baeldung/security/IAuthenticationFacade.java diff --git a/spring-security-modules/spring-security-rest-custom/src/main/java/com/baeldung/security/MySavedRequestAwareAuthenticationSuccessHandler.java b/spring-security-modules/spring-security-web-rest-custom/src/main/java/com/baeldung/security/MySavedRequestAwareAuthenticationSuccessHandler.java similarity index 100% rename from spring-security-modules/spring-security-rest-custom/src/main/java/com/baeldung/security/MySavedRequestAwareAuthenticationSuccessHandler.java rename to spring-security-modules/spring-security-web-rest-custom/src/main/java/com/baeldung/security/MySavedRequestAwareAuthenticationSuccessHandler.java diff --git a/spring-security-modules/spring-security-rest-custom/src/main/java/com/baeldung/security/RestAuthenticationEntryPoint.java b/spring-security-modules/spring-security-web-rest-custom/src/main/java/com/baeldung/security/RestAuthenticationEntryPoint.java similarity index 100% rename from spring-security-modules/spring-security-rest-custom/src/main/java/com/baeldung/security/RestAuthenticationEntryPoint.java rename to spring-security-modules/spring-security-web-rest-custom/src/main/java/com/baeldung/security/RestAuthenticationEntryPoint.java diff --git a/spring-security-modules/spring-security-rest-custom/src/main/java/com/baeldung/service/FooService.java b/spring-security-modules/spring-security-web-rest-custom/src/main/java/com/baeldung/service/FooService.java similarity index 100% rename from spring-security-modules/spring-security-rest-custom/src/main/java/com/baeldung/service/FooService.java rename to spring-security-modules/spring-security-web-rest-custom/src/main/java/com/baeldung/service/FooService.java diff --git a/spring-security-modules/spring-security-rest-custom/src/main/java/com/baeldung/service/IFooService.java b/spring-security-modules/spring-security-web-rest-custom/src/main/java/com/baeldung/service/IFooService.java similarity index 100% rename from spring-security-modules/spring-security-rest-custom/src/main/java/com/baeldung/service/IFooService.java rename to spring-security-modules/spring-security-web-rest-custom/src/main/java/com/baeldung/service/IFooService.java diff --git a/spring-security-modules/spring-security-rest-custom/src/main/java/com/baeldung/service/RunAsService.java b/spring-security-modules/spring-security-web-rest-custom/src/main/java/com/baeldung/service/RunAsService.java similarity index 100% rename from spring-security-modules/spring-security-rest-custom/src/main/java/com/baeldung/service/RunAsService.java rename to spring-security-modules/spring-security-web-rest-custom/src/main/java/com/baeldung/service/RunAsService.java diff --git a/spring-security-modules/spring-security-rest-custom/src/main/java/com/baeldung/web/controller/FooController.java b/spring-security-modules/spring-security-web-rest-custom/src/main/java/com/baeldung/web/controller/FooController.java similarity index 100% rename from spring-security-modules/spring-security-rest-custom/src/main/java/com/baeldung/web/controller/FooController.java rename to spring-security-modules/spring-security-web-rest-custom/src/main/java/com/baeldung/web/controller/FooController.java diff --git a/spring-security-modules/spring-security-rest-custom/src/main/java/com/baeldung/web/controller/GetUserWithCustomInterfaceController.java b/spring-security-modules/spring-security-web-rest-custom/src/main/java/com/baeldung/web/controller/GetUserWithCustomInterfaceController.java similarity index 100% rename from spring-security-modules/spring-security-rest-custom/src/main/java/com/baeldung/web/controller/GetUserWithCustomInterfaceController.java rename to spring-security-modules/spring-security-web-rest-custom/src/main/java/com/baeldung/web/controller/GetUserWithCustomInterfaceController.java diff --git a/spring-security-modules/spring-security-rest-custom/src/main/java/com/baeldung/web/controller/GetUserWithHTTPServletRequestController.java b/spring-security-modules/spring-security-web-rest-custom/src/main/java/com/baeldung/web/controller/GetUserWithHTTPServletRequestController.java similarity index 100% rename from spring-security-modules/spring-security-rest-custom/src/main/java/com/baeldung/web/controller/GetUserWithHTTPServletRequestController.java rename to spring-security-modules/spring-security-web-rest-custom/src/main/java/com/baeldung/web/controller/GetUserWithHTTPServletRequestController.java diff --git a/spring-security-modules/spring-security-rest-custom/src/main/java/com/baeldung/web/controller/RunAsController.java b/spring-security-modules/spring-security-web-rest-custom/src/main/java/com/baeldung/web/controller/RunAsController.java similarity index 100% rename from spring-security-modules/spring-security-rest-custom/src/main/java/com/baeldung/web/controller/RunAsController.java rename to spring-security-modules/spring-security-web-rest-custom/src/main/java/com/baeldung/web/controller/RunAsController.java diff --git a/spring-security-modules/spring-security-rest-custom/src/main/java/com/baeldung/web/controller/SecurityController.java b/spring-security-modules/spring-security-web-rest-custom/src/main/java/com/baeldung/web/controller/SecurityController.java similarity index 100% rename from spring-security-modules/spring-security-rest-custom/src/main/java/com/baeldung/web/controller/SecurityController.java rename to spring-security-modules/spring-security-web-rest-custom/src/main/java/com/baeldung/web/controller/SecurityController.java diff --git a/spring-security-modules/spring-security-rest-custom/src/main/java/com/baeldung/web/controller/SecurityController1.java b/spring-security-modules/spring-security-web-rest-custom/src/main/java/com/baeldung/web/controller/SecurityController1.java similarity index 100% rename from spring-security-modules/spring-security-rest-custom/src/main/java/com/baeldung/web/controller/SecurityController1.java rename to spring-security-modules/spring-security-web-rest-custom/src/main/java/com/baeldung/web/controller/SecurityController1.java diff --git a/spring-security-modules/spring-security-rest-custom/src/main/java/com/baeldung/web/controller/SecurityController3.java b/spring-security-modules/spring-security-web-rest-custom/src/main/java/com/baeldung/web/controller/SecurityController3.java similarity index 100% rename from spring-security-modules/spring-security-rest-custom/src/main/java/com/baeldung/web/controller/SecurityController3.java rename to spring-security-modules/spring-security-web-rest-custom/src/main/java/com/baeldung/web/controller/SecurityController3.java diff --git a/spring-security-modules/spring-security-rest-custom/src/main/java/com/baeldung/web/controller/ViewController.java b/spring-security-modules/spring-security-web-rest-custom/src/main/java/com/baeldung/web/controller/ViewController.java similarity index 100% rename from spring-security-modules/spring-security-rest-custom/src/main/java/com/baeldung/web/controller/ViewController.java rename to spring-security-modules/spring-security-web-rest-custom/src/main/java/com/baeldung/web/controller/ViewController.java diff --git a/spring-security-modules/spring-security-rest-custom/src/main/java/com/baeldung/web/dto/Foo.java b/spring-security-modules/spring-security-web-rest-custom/src/main/java/com/baeldung/web/dto/Foo.java similarity index 100% rename from spring-security-modules/spring-security-rest-custom/src/main/java/com/baeldung/web/dto/Foo.java rename to spring-security-modules/spring-security-web-rest-custom/src/main/java/com/baeldung/web/dto/Foo.java diff --git a/spring-security-modules/spring-security-rest-custom/src/main/resources/foo.properties b/spring-security-modules/spring-security-web-rest-custom/src/main/resources/foo.properties similarity index 100% rename from spring-security-modules/spring-security-rest-custom/src/main/resources/foo.properties rename to spring-security-modules/spring-security-web-rest-custom/src/main/resources/foo.properties diff --git a/spring-security-modules/spring-security-rest-custom/src/main/resources/logback.xml b/spring-security-modules/spring-security-web-rest-custom/src/main/resources/logback.xml similarity index 100% rename from spring-security-modules/spring-security-rest-custom/src/main/resources/logback.xml rename to spring-security-modules/spring-security-web-rest-custom/src/main/resources/logback.xml diff --git a/spring-security-modules/spring-security-rest-custom/src/main/resources/prop.xml b/spring-security-modules/spring-security-web-rest-custom/src/main/resources/prop.xml similarity index 100% rename from spring-security-modules/spring-security-rest-custom/src/main/resources/prop.xml rename to spring-security-modules/spring-security-web-rest-custom/src/main/resources/prop.xml diff --git a/spring-security-modules/spring-security-rest-custom/src/main/resources/webSecurityConfig.xml b/spring-security-modules/spring-security-web-rest-custom/src/main/resources/webSecurityConfig.xml similarity index 100% rename from spring-security-modules/spring-security-rest-custom/src/main/resources/webSecurityConfig.xml rename to spring-security-modules/spring-security-web-rest-custom/src/main/resources/webSecurityConfig.xml diff --git a/spring-security-modules/spring-security-rest-custom/src/main/webapp/WEB-INF/templates/index.html b/spring-security-modules/spring-security-web-rest-custom/src/main/webapp/WEB-INF/templates/index.html similarity index 100% rename from spring-security-modules/spring-security-rest-custom/src/main/webapp/WEB-INF/templates/index.html rename to spring-security-modules/spring-security-web-rest-custom/src/main/webapp/WEB-INF/templates/index.html diff --git a/spring-security-modules/spring-security-rest-custom/src/main/webapp/WEB-INF/templates/runas.html b/spring-security-modules/spring-security-web-rest-custom/src/main/webapp/WEB-INF/templates/runas.html similarity index 100% rename from spring-security-modules/spring-security-rest-custom/src/main/webapp/WEB-INF/templates/runas.html rename to spring-security-modules/spring-security-web-rest-custom/src/main/webapp/WEB-INF/templates/runas.html diff --git a/spring-security-modules/spring-security-rest-custom/src/main/webapp/WEB-INF/web_old.xml b/spring-security-modules/spring-security-web-rest-custom/src/main/webapp/WEB-INF/web_old.xml similarity index 100% rename from spring-security-modules/spring-security-rest-custom/src/main/webapp/WEB-INF/web_old.xml rename to spring-security-modules/spring-security-web-rest-custom/src/main/webapp/WEB-INF/web_old.xml diff --git a/spring-security-modules/spring-security-rest-custom/src/test/resources/.gitignore b/spring-security-modules/spring-security-web-rest-custom/src/test/resources/.gitignore similarity index 100% rename from spring-security-modules/spring-security-rest-custom/src/test/resources/.gitignore rename to spring-security-modules/spring-security-web-rest-custom/src/test/resources/.gitignore diff --git a/spring-security-modules/spring-security-rest/.gitignore b/spring-security-modules/spring-security-web-rest/.gitignore similarity index 100% rename from spring-security-modules/spring-security-rest/.gitignore rename to spring-security-modules/spring-security-web-rest/.gitignore diff --git a/spring-security-modules/spring-security-rest/README.md b/spring-security-modules/spring-security-web-rest/README.md similarity index 97% rename from spring-security-modules/spring-security-rest/README.md rename to spring-security-modules/spring-security-web-rest/README.md index 26c101d32c..c13668798d 100644 --- a/spring-security-modules/spring-security-rest/README.md +++ b/spring-security-modules/spring-security-web-rest/README.md @@ -1,4 +1,4 @@ -## Spring Security REST +## Spring Security Web - REST This module contains articles about REST APIs with Spring Security diff --git a/spring-security-modules/spring-security-rest/pom.xml b/spring-security-modules/spring-security-web-rest/pom.xml similarity index 99% rename from spring-security-modules/spring-security-rest/pom.xml rename to spring-security-modules/spring-security-web-rest/pom.xml index 9410f08378..d2468152da 100644 --- a/spring-security-modules/spring-security-rest/pom.xml +++ b/spring-security-modules/spring-security-web-rest/pom.xml @@ -2,9 +2,9 @@ 4.0.0 - spring-security-rest + spring-security-web-rest 0.1-SNAPSHOT - spring-security-rest + spring-security-web-rest war diff --git a/spring-security-modules/spring-security-rest/src/main/java/com/baeldung/errorhandling/ApiError.java b/spring-security-modules/spring-security-web-rest/src/main/java/com/baeldung/errorhandling/ApiError.java similarity index 100% rename from spring-security-modules/spring-security-rest/src/main/java/com/baeldung/errorhandling/ApiError.java rename to spring-security-modules/spring-security-web-rest/src/main/java/com/baeldung/errorhandling/ApiError.java diff --git a/spring-security-modules/spring-security-rest/src/main/java/com/baeldung/errorhandling/CustomRestExceptionHandler.java b/spring-security-modules/spring-security-web-rest/src/main/java/com/baeldung/errorhandling/CustomRestExceptionHandler.java similarity index 100% rename from spring-security-modules/spring-security-rest/src/main/java/com/baeldung/errorhandling/CustomRestExceptionHandler.java rename to spring-security-modules/spring-security-web-rest/src/main/java/com/baeldung/errorhandling/CustomRestExceptionHandler.java diff --git a/spring-security-modules/spring-security-rest/src/main/java/com/baeldung/persistence/model/Foo.java b/spring-security-modules/spring-security-web-rest/src/main/java/com/baeldung/persistence/model/Foo.java similarity index 100% rename from spring-security-modules/spring-security-rest/src/main/java/com/baeldung/persistence/model/Foo.java rename to spring-security-modules/spring-security-web-rest/src/main/java/com/baeldung/persistence/model/Foo.java diff --git a/spring-security-modules/spring-security-rest/src/main/java/com/baeldung/security/SecurityJavaConfig.java b/spring-security-modules/spring-security-web-rest/src/main/java/com/baeldung/security/SecurityJavaConfig.java similarity index 100% rename from spring-security-modules/spring-security-rest/src/main/java/com/baeldung/security/SecurityJavaConfig.java rename to spring-security-modules/spring-security-web-rest/src/main/java/com/baeldung/security/SecurityJavaConfig.java diff --git a/spring-security-modules/spring-security-rest/src/main/java/com/baeldung/security/SecurityWebApplicationInitializer.java b/spring-security-modules/spring-security-web-rest/src/main/java/com/baeldung/security/SecurityWebApplicationInitializer.java similarity index 100% rename from spring-security-modules/spring-security-rest/src/main/java/com/baeldung/security/SecurityWebApplicationInitializer.java rename to spring-security-modules/spring-security-web-rest/src/main/java/com/baeldung/security/SecurityWebApplicationInitializer.java diff --git a/spring-security-modules/spring-security-rest/src/main/java/com/baeldung/security/web/MySavedRequestAwareAuthenticationSuccessHandler.java b/spring-security-modules/spring-security-web-rest/src/main/java/com/baeldung/security/web/MySavedRequestAwareAuthenticationSuccessHandler.java similarity index 100% rename from spring-security-modules/spring-security-rest/src/main/java/com/baeldung/security/web/MySavedRequestAwareAuthenticationSuccessHandler.java rename to spring-security-modules/spring-security-web-rest/src/main/java/com/baeldung/security/web/MySavedRequestAwareAuthenticationSuccessHandler.java diff --git a/spring-security-modules/spring-security-rest/src/main/java/com/baeldung/security/web/RestAuthenticationEntryPoint.java b/spring-security-modules/spring-security-web-rest/src/main/java/com/baeldung/security/web/RestAuthenticationEntryPoint.java similarity index 100% rename from spring-security-modules/spring-security-rest/src/main/java/com/baeldung/security/web/RestAuthenticationEntryPoint.java rename to spring-security-modules/spring-security-web-rest/src/main/java/com/baeldung/security/web/RestAuthenticationEntryPoint.java diff --git a/spring-security-modules/spring-security-rest/src/main/java/com/baeldung/spring/ClientWebConfig.java b/spring-security-modules/spring-security-web-rest/src/main/java/com/baeldung/spring/ClientWebConfig.java similarity index 100% rename from spring-security-modules/spring-security-rest/src/main/java/com/baeldung/spring/ClientWebConfig.java rename to spring-security-modules/spring-security-web-rest/src/main/java/com/baeldung/spring/ClientWebConfig.java diff --git a/spring-security-modules/spring-security-rest/src/main/java/com/baeldung/spring/SecurityXmlConfig.java b/spring-security-modules/spring-security-web-rest/src/main/java/com/baeldung/spring/SecurityXmlConfig.java similarity index 100% rename from spring-security-modules/spring-security-rest/src/main/java/com/baeldung/spring/SecurityXmlConfig.java rename to spring-security-modules/spring-security-web-rest/src/main/java/com/baeldung/spring/SecurityXmlConfig.java diff --git a/spring-security-modules/spring-security-rest/src/main/java/com/baeldung/spring/WebConfig.java b/spring-security-modules/spring-security-web-rest/src/main/java/com/baeldung/spring/WebConfig.java similarity index 100% rename from spring-security-modules/spring-security-rest/src/main/java/com/baeldung/spring/WebConfig.java rename to spring-security-modules/spring-security-web-rest/src/main/java/com/baeldung/spring/WebConfig.java diff --git a/spring-security-modules/spring-security-rest/src/main/java/com/baeldung/swagger2/SwaggerConfig.java b/spring-security-modules/spring-security-web-rest/src/main/java/com/baeldung/swagger2/SwaggerConfig.java similarity index 100% rename from spring-security-modules/spring-security-rest/src/main/java/com/baeldung/swagger2/SwaggerConfig.java rename to spring-security-modules/spring-security-web-rest/src/main/java/com/baeldung/swagger2/SwaggerConfig.java diff --git a/spring-security-modules/spring-security-rest/src/main/java/com/baeldung/web/controller/AsyncController.java b/spring-security-modules/spring-security-web-rest/src/main/java/com/baeldung/web/controller/AsyncController.java similarity index 100% rename from spring-security-modules/spring-security-rest/src/main/java/com/baeldung/web/controller/AsyncController.java rename to spring-security-modules/spring-security-web-rest/src/main/java/com/baeldung/web/controller/AsyncController.java diff --git a/spring-security-modules/spring-security-rest/src/main/java/com/baeldung/web/controller/CustomController.java b/spring-security-modules/spring-security-web-rest/src/main/java/com/baeldung/web/controller/CustomController.java similarity index 100% rename from spring-security-modules/spring-security-rest/src/main/java/com/baeldung/web/controller/CustomController.java rename to spring-security-modules/spring-security-web-rest/src/main/java/com/baeldung/web/controller/CustomController.java diff --git a/spring-security-modules/spring-security-rest/src/main/java/com/baeldung/web/controller/FooController.java b/spring-security-modules/spring-security-web-rest/src/main/java/com/baeldung/web/controller/FooController.java similarity index 100% rename from spring-security-modules/spring-security-rest/src/main/java/com/baeldung/web/controller/FooController.java rename to spring-security-modules/spring-security-web-rest/src/main/java/com/baeldung/web/controller/FooController.java diff --git a/spring-security-modules/spring-security-rest/src/main/java/com/baeldung/web/controller/RootController.java b/spring-security-modules/spring-security-web-rest/src/main/java/com/baeldung/web/controller/RootController.java similarity index 100% rename from spring-security-modules/spring-security-rest/src/main/java/com/baeldung/web/controller/RootController.java rename to spring-security-modules/spring-security-web-rest/src/main/java/com/baeldung/web/controller/RootController.java diff --git a/spring-security-modules/spring-security-rest/src/main/java/com/baeldung/web/error/CustomAccessDeniedHandler.java b/spring-security-modules/spring-security-web-rest/src/main/java/com/baeldung/web/error/CustomAccessDeniedHandler.java similarity index 100% rename from spring-security-modules/spring-security-rest/src/main/java/com/baeldung/web/error/CustomAccessDeniedHandler.java rename to spring-security-modules/spring-security-web-rest/src/main/java/com/baeldung/web/error/CustomAccessDeniedHandler.java diff --git a/spring-security-modules/spring-security-rest/src/main/java/com/baeldung/web/error/RestResponseEntityExceptionHandler.java b/spring-security-modules/spring-security-web-rest/src/main/java/com/baeldung/web/error/RestResponseEntityExceptionHandler.java similarity index 100% rename from spring-security-modules/spring-security-rest/src/main/java/com/baeldung/web/error/RestResponseEntityExceptionHandler.java rename to spring-security-modules/spring-security-web-rest/src/main/java/com/baeldung/web/error/RestResponseEntityExceptionHandler.java diff --git a/spring-security-modules/spring-security-rest/src/main/java/com/baeldung/web/exception/MyResourceNotFoundException.java b/spring-security-modules/spring-security-web-rest/src/main/java/com/baeldung/web/exception/MyResourceNotFoundException.java similarity index 100% rename from spring-security-modules/spring-security-rest/src/main/java/com/baeldung/web/exception/MyResourceNotFoundException.java rename to spring-security-modules/spring-security-web-rest/src/main/java/com/baeldung/web/exception/MyResourceNotFoundException.java diff --git a/spring-security-modules/spring-security-rest/src/main/java/com/baeldung/web/service/AsyncService.java b/spring-security-modules/spring-security-web-rest/src/main/java/com/baeldung/web/service/AsyncService.java similarity index 100% rename from spring-security-modules/spring-security-rest/src/main/java/com/baeldung/web/service/AsyncService.java rename to spring-security-modules/spring-security-web-rest/src/main/java/com/baeldung/web/service/AsyncService.java diff --git a/spring-security-modules/spring-security-rest/src/main/java/com/baeldung/web/service/AsyncServiceImpl.java b/spring-security-modules/spring-security-web-rest/src/main/java/com/baeldung/web/service/AsyncServiceImpl.java similarity index 100% rename from spring-security-modules/spring-security-rest/src/main/java/com/baeldung/web/service/AsyncServiceImpl.java rename to spring-security-modules/spring-security-web-rest/src/main/java/com/baeldung/web/service/AsyncServiceImpl.java diff --git a/spring-security-modules/spring-security-rest/src/main/resources/logback.xml b/spring-security-modules/spring-security-web-rest/src/main/resources/logback.xml similarity index 100% rename from spring-security-modules/spring-security-rest/src/main/resources/logback.xml rename to spring-security-modules/spring-security-web-rest/src/main/resources/logback.xml diff --git a/spring-security-modules/spring-security-rest/src/main/resources/webSecurityConfig.xml b/spring-security-modules/spring-security-web-rest/src/main/resources/webSecurityConfig.xml similarity index 100% rename from spring-security-modules/spring-security-rest/src/main/resources/webSecurityConfig.xml rename to spring-security-modules/spring-security-web-rest/src/main/resources/webSecurityConfig.xml diff --git a/spring-security-modules/spring-security-rest/src/main/webapp/WEB-INF/api-servlet.xml b/spring-security-modules/spring-security-web-rest/src/main/webapp/WEB-INF/api-servlet.xml similarity index 100% rename from spring-security-modules/spring-security-rest/src/main/webapp/WEB-INF/api-servlet.xml rename to spring-security-modules/spring-security-web-rest/src/main/webapp/WEB-INF/api-servlet.xml diff --git a/spring-security-modules/spring-security-rest/src/main/webapp/WEB-INF/view/csrfAttacker.jsp b/spring-security-modules/spring-security-web-rest/src/main/webapp/WEB-INF/view/csrfAttacker.jsp similarity index 100% rename from spring-security-modules/spring-security-rest/src/main/webapp/WEB-INF/view/csrfAttacker.jsp rename to spring-security-modules/spring-security-web-rest/src/main/webapp/WEB-INF/view/csrfAttacker.jsp diff --git a/spring-security-modules/spring-security-rest/src/main/webapp/WEB-INF/web.xml b/spring-security-modules/spring-security-web-rest/src/main/webapp/WEB-INF/web.xml similarity index 100% rename from spring-security-modules/spring-security-rest/src/main/webapp/WEB-INF/web.xml rename to spring-security-modules/spring-security-web-rest/src/main/webapp/WEB-INF/web.xml diff --git a/spring-security-modules/spring-security-rest/src/test/java/com/baeldung/SpringContextTest.java b/spring-security-modules/spring-security-web-rest/src/test/java/com/baeldung/SpringContextTest.java similarity index 100% rename from spring-security-modules/spring-security-rest/src/test/java/com/baeldung/SpringContextTest.java rename to spring-security-modules/spring-security-web-rest/src/test/java/com/baeldung/SpringContextTest.java diff --git a/spring-security-modules/spring-security-rest/src/test/java/com/baeldung/errorhandling/FooLiveTest.java b/spring-security-modules/spring-security-web-rest/src/test/java/com/baeldung/errorhandling/FooLiveTest.java similarity index 100% rename from spring-security-modules/spring-security-rest/src/test/java/com/baeldung/errorhandling/FooLiveTest.java rename to spring-security-modules/spring-security-web-rest/src/test/java/com/baeldung/errorhandling/FooLiveTest.java diff --git a/spring-security-modules/spring-security-rest/src/test/java/com/baeldung/web/AsyncControllerIntegrationTest.java b/spring-security-modules/spring-security-web-rest/src/test/java/com/baeldung/web/AsyncControllerIntegrationTest.java similarity index 100% rename from spring-security-modules/spring-security-rest/src/test/java/com/baeldung/web/AsyncControllerIntegrationTest.java rename to spring-security-modules/spring-security-web-rest/src/test/java/com/baeldung/web/AsyncControllerIntegrationTest.java diff --git a/spring-security-modules/spring-security-rest/src/test/java/com/baeldung/web/SwaggerLiveTest.java b/spring-security-modules/spring-security-web-rest/src/test/java/com/baeldung/web/SwaggerLiveTest.java similarity index 100% rename from spring-security-modules/spring-security-rest/src/test/java/com/baeldung/web/SwaggerLiveTest.java rename to spring-security-modules/spring-security-web-rest/src/test/java/com/baeldung/web/SwaggerLiveTest.java diff --git a/spring-security-modules/spring-security-rest/src/test/java/com/baeldung/web/TestConfig.java b/spring-security-modules/spring-security-web-rest/src/test/java/com/baeldung/web/TestConfig.java similarity index 100% rename from spring-security-modules/spring-security-rest/src/test/java/com/baeldung/web/TestConfig.java rename to spring-security-modules/spring-security-web-rest/src/test/java/com/baeldung/web/TestConfig.java diff --git a/spring-security-modules/spring-security-rest/src/test/resources/.gitignore b/spring-security-modules/spring-security-web-rest/src/test/resources/.gitignore similarity index 100% rename from spring-security-modules/spring-security-rest/src/test/resources/.gitignore rename to spring-security-modules/spring-security-web-rest/src/test/resources/.gitignore diff --git a/spring-security-modules/spring-security-thymeleaf/README.MD b/spring-security-modules/spring-security-web-thymeleaf/README.md similarity index 83% rename from spring-security-modules/spring-security-thymeleaf/README.MD rename to spring-security-modules/spring-security-web-thymeleaf/README.md index e0fca4067c..bb3281fa24 100644 --- a/spring-security-modules/spring-security-thymeleaf/README.MD +++ b/spring-security-modules/spring-security-web-thymeleaf/README.md @@ -1,4 +1,4 @@ -## Spring Security Thymeleaf +## Spring Security Web - Thymeleaf This module contains articles about Spring Security with Thymeleaf. diff --git a/spring-security-modules/spring-security-thymeleaf/pom.xml b/spring-security-modules/spring-security-web-thymeleaf/pom.xml similarity index 94% rename from spring-security-modules/spring-security-thymeleaf/pom.xml rename to spring-security-modules/spring-security-web-thymeleaf/pom.xml index a4ecbaff21..196ec0b86f 100644 --- a/spring-security-modules/spring-security-thymeleaf/pom.xml +++ b/spring-security-modules/spring-security-web-thymeleaf/pom.xml @@ -2,9 +2,9 @@ 4.0.0 - spring-security-thymeleaf + spring-security-web-thymeleaf 0.0.1-SNAPSHOT - spring-security-thymeleaf + spring-security-web-thymeleaf jar Spring Security with Thymeleaf tutorial diff --git a/spring-security-modules/spring-security-thymeleaf/src/main/java/com/baeldung/springsecuritythymeleaf/SecurityConfiguration.java b/spring-security-modules/spring-security-web-thymeleaf/src/main/java/com/baeldung/springsecuritythymeleaf/SecurityConfiguration.java similarity index 100% rename from spring-security-modules/spring-security-thymeleaf/src/main/java/com/baeldung/springsecuritythymeleaf/SecurityConfiguration.java rename to spring-security-modules/spring-security-web-thymeleaf/src/main/java/com/baeldung/springsecuritythymeleaf/SecurityConfiguration.java diff --git a/spring-security-modules/spring-security-thymeleaf/src/main/java/com/baeldung/springsecuritythymeleaf/SpringSecurityThymeleafApplication.java b/spring-security-modules/spring-security-web-thymeleaf/src/main/java/com/baeldung/springsecuritythymeleaf/SpringSecurityThymeleafApplication.java similarity index 100% rename from spring-security-modules/spring-security-thymeleaf/src/main/java/com/baeldung/springsecuritythymeleaf/SpringSecurityThymeleafApplication.java rename to spring-security-modules/spring-security-web-thymeleaf/src/main/java/com/baeldung/springsecuritythymeleaf/SpringSecurityThymeleafApplication.java diff --git a/spring-security-modules/spring-security-thymeleaf/src/main/java/com/baeldung/springsecuritythymeleaf/ViewController.java b/spring-security-modules/spring-security-web-thymeleaf/src/main/java/com/baeldung/springsecuritythymeleaf/ViewController.java similarity index 100% rename from spring-security-modules/spring-security-thymeleaf/src/main/java/com/baeldung/springsecuritythymeleaf/ViewController.java rename to spring-security-modules/spring-security-web-thymeleaf/src/main/java/com/baeldung/springsecuritythymeleaf/ViewController.java diff --git a/spring-security-modules/spring-security-thymeleaf/src/main/resources/application.properties b/spring-security-modules/spring-security-web-thymeleaf/src/main/resources/application.properties similarity index 100% rename from spring-security-modules/spring-security-thymeleaf/src/main/resources/application.properties rename to spring-security-modules/spring-security-web-thymeleaf/src/main/resources/application.properties diff --git a/spring-security-modules/spring-security-thymeleaf/src/main/resources/logback.xml b/spring-security-modules/spring-security-web-thymeleaf/src/main/resources/logback.xml similarity index 100% rename from spring-security-modules/spring-security-thymeleaf/src/main/resources/logback.xml rename to spring-security-modules/spring-security-web-thymeleaf/src/main/resources/logback.xml diff --git a/spring-security-modules/spring-security-thymeleaf/src/main/resources/templates/index.html b/spring-security-modules/spring-security-web-thymeleaf/src/main/resources/templates/index.html similarity index 100% rename from spring-security-modules/spring-security-thymeleaf/src/main/resources/templates/index.html rename to spring-security-modules/spring-security-web-thymeleaf/src/main/resources/templates/index.html diff --git a/spring-security-modules/spring-security-thymeleaf/src/main/resources/templates/login.html b/spring-security-modules/spring-security-web-thymeleaf/src/main/resources/templates/login.html similarity index 100% rename from spring-security-modules/spring-security-thymeleaf/src/main/resources/templates/login.html rename to spring-security-modules/spring-security-web-thymeleaf/src/main/resources/templates/login.html diff --git a/spring-security-modules/spring-security-thymeleaf/src/test/java/com/baeldung/springsecuritythymeleaf/SpringSecurityThymeleafApplicationIntegrationTest.java b/spring-security-modules/spring-security-web-thymeleaf/src/test/java/com/baeldung/springsecuritythymeleaf/SpringSecurityThymeleafApplicationIntegrationTest.java similarity index 100% rename from spring-security-modules/spring-security-thymeleaf/src/test/java/com/baeldung/springsecuritythymeleaf/SpringSecurityThymeleafApplicationIntegrationTest.java rename to spring-security-modules/spring-security-web-thymeleaf/src/test/java/com/baeldung/springsecuritythymeleaf/SpringSecurityThymeleafApplicationIntegrationTest.java diff --git a/spring-security-modules/spring-security-thymeleaf/src/test/java/com/baeldung/springsecuritythymeleaf/ViewControllerIntegrationTest.java b/spring-security-modules/spring-security-web-thymeleaf/src/test/java/com/baeldung/springsecuritythymeleaf/ViewControllerIntegrationTest.java similarity index 100% rename from spring-security-modules/spring-security-thymeleaf/src/test/java/com/baeldung/springsecuritythymeleaf/ViewControllerIntegrationTest.java rename to spring-security-modules/spring-security-web-thymeleaf/src/test/java/com/baeldung/springsecuritythymeleaf/ViewControllerIntegrationTest.java diff --git a/spring-security-modules/spring-security-x509/README.md b/spring-security-modules/spring-security-web-x509/README.md similarity index 95% rename from spring-security-modules/spring-security-x509/README.md rename to spring-security-modules/spring-security-web-x509/README.md index da431d862c..5fd63c0307 100644 --- a/spring-security-modules/spring-security-x509/README.md +++ b/spring-security-modules/spring-security-web-x509/README.md @@ -1,4 +1,4 @@ -## Spring Security X.509 +## Spring Security Web - X.509 This module contains articles about X.509 authentication with Spring Security diff --git a/spring-security-modules/spring-security-x509/pom.xml b/spring-security-modules/spring-security-web-x509/pom.xml similarity index 83% rename from spring-security-modules/spring-security-x509/pom.xml rename to spring-security-modules/spring-security-web-x509/pom.xml index d4132f058d..045c0aba6a 100644 --- a/spring-security-modules/spring-security-x509/pom.xml +++ b/spring-security-modules/spring-security-web-x509/pom.xml @@ -2,9 +2,9 @@ 4.0.0 - spring-security-x509 + spring-security-web-x509 0.0.1-SNAPSHOT - spring-security-x509 + spring-security-web-x509 pom @@ -15,8 +15,8 @@ - spring-security-x509-basic-auth - spring-security-x509-client-auth + spring-security-web-x509-basic-auth + spring-security-web-x509-client-auth diff --git a/spring-security-modules/spring-security-x509/spring-security-x509-basic-auth/pom.xml b/spring-security-modules/spring-security-web-x509/spring-security-web-x509-basic-auth/pom.xml similarity index 87% rename from spring-security-modules/spring-security-x509/spring-security-x509-basic-auth/pom.xml rename to spring-security-modules/spring-security-web-x509/spring-security-web-x509-basic-auth/pom.xml index 3cff638894..917ffa6b0e 100644 --- a/spring-security-modules/spring-security-x509/spring-security-x509-basic-auth/pom.xml +++ b/spring-security-modules/spring-security-web-x509/spring-security-web-x509-basic-auth/pom.xml @@ -2,15 +2,15 @@ 4.0.0 - spring-security-x509-basic-auth + spring-security-web-x509-basic-auth 0.0.1-SNAPSHOT - spring-security-x509-basic-auth + spring-security-web-x509-basic-auth jar Spring x.509 Authentication Demo com.baeldung - spring-security-x509 + spring-security-web-x509 0.0.1-SNAPSHOT diff --git a/spring-security-modules/spring-security-x509/spring-security-x509-basic-auth/src/main/java/com/baeldung/spring/security/x509/UserController.java b/spring-security-modules/spring-security-web-x509/spring-security-web-x509-basic-auth/src/main/java/com/baeldung/spring/security/x509/UserController.java similarity index 100% rename from spring-security-modules/spring-security-x509/spring-security-x509-basic-auth/src/main/java/com/baeldung/spring/security/x509/UserController.java rename to spring-security-modules/spring-security-web-x509/spring-security-web-x509-basic-auth/src/main/java/com/baeldung/spring/security/x509/UserController.java diff --git a/spring-security-modules/spring-security-x509/spring-security-x509-basic-auth/src/main/java/com/baeldung/spring/security/x509/X509AuthenticationServer.java b/spring-security-modules/spring-security-web-x509/spring-security-web-x509-basic-auth/src/main/java/com/baeldung/spring/security/x509/X509AuthenticationServer.java similarity index 100% rename from spring-security-modules/spring-security-x509/spring-security-x509-basic-auth/src/main/java/com/baeldung/spring/security/x509/X509AuthenticationServer.java rename to spring-security-modules/spring-security-web-x509/spring-security-web-x509-basic-auth/src/main/java/com/baeldung/spring/security/x509/X509AuthenticationServer.java diff --git a/spring-security-modules/spring-security-x509/spring-security-x509-basic-auth/src/main/resources/application.properties b/spring-security-modules/spring-security-web-x509/spring-security-web-x509-basic-auth/src/main/resources/application.properties similarity index 100% rename from spring-security-modules/spring-security-x509/spring-security-x509-basic-auth/src/main/resources/application.properties rename to spring-security-modules/spring-security-web-x509/spring-security-web-x509-basic-auth/src/main/resources/application.properties diff --git a/spring-security-modules/spring-security-x509/spring-security-x509-basic-auth/src/main/resources/logback.xml b/spring-security-modules/spring-security-web-x509/spring-security-web-x509-basic-auth/src/main/resources/logback.xml similarity index 100% rename from spring-security-modules/spring-security-x509/spring-security-x509-basic-auth/src/main/resources/logback.xml rename to spring-security-modules/spring-security-web-x509/spring-security-web-x509-basic-auth/src/main/resources/logback.xml diff --git a/spring-security-modules/spring-security-x509/spring-security-x509-basic-auth/src/main/resources/templates/user.html b/spring-security-modules/spring-security-web-x509/spring-security-web-x509-basic-auth/src/main/resources/templates/user.html similarity index 100% rename from spring-security-modules/spring-security-x509/spring-security-x509-basic-auth/src/main/resources/templates/user.html rename to spring-security-modules/spring-security-web-x509/spring-security-web-x509-basic-auth/src/main/resources/templates/user.html diff --git a/spring-security-modules/spring-security-x509/spring-security-x509-basic-auth/src/test/java/com/baeldung/SpringContextTest.java b/spring-security-modules/spring-security-web-x509/spring-security-web-x509-basic-auth/src/test/java/com/baeldung/SpringContextTest.java similarity index 100% rename from spring-security-modules/spring-security-x509/spring-security-x509-basic-auth/src/test/java/com/baeldung/SpringContextTest.java rename to spring-security-modules/spring-security-web-x509/spring-security-web-x509-basic-auth/src/test/java/com/baeldung/SpringContextTest.java diff --git a/spring-security-modules/spring-security-x509/spring-security-x509-basic-auth/src/test/java/com/baeldung/spring/security/x509/X509AuthenticationServerIntegrationTest.java b/spring-security-modules/spring-security-web-x509/spring-security-web-x509-basic-auth/src/test/java/com/baeldung/spring/security/x509/X509AuthenticationServerIntegrationTest.java similarity index 100% rename from spring-security-modules/spring-security-x509/spring-security-x509-basic-auth/src/test/java/com/baeldung/spring/security/x509/X509AuthenticationServerIntegrationTest.java rename to spring-security-modules/spring-security-web-x509/spring-security-web-x509-basic-auth/src/test/java/com/baeldung/spring/security/x509/X509AuthenticationServerIntegrationTest.java diff --git a/spring-security-modules/spring-security-x509/spring-security-x509-client-auth/pom.xml b/spring-security-modules/spring-security-web-x509/spring-security-web-x509-client-auth/pom.xml similarity index 94% rename from spring-security-modules/spring-security-x509/spring-security-x509-client-auth/pom.xml rename to spring-security-modules/spring-security-web-x509/spring-security-web-x509-client-auth/pom.xml index 3a39f6af67..fdbc90c0f6 100644 --- a/spring-security-modules/spring-security-x509/spring-security-x509-client-auth/pom.xml +++ b/spring-security-modules/spring-security-web-x509/spring-security-web-x509-client-auth/pom.xml @@ -2,15 +2,15 @@ 4.0.0 - spring-security-x509-client-auth + spring-security-web-x509-client-auth 0.0.1-SNAPSHOT - spring-security-x509-client-auth + spring-security-web-x509-client-auth jar Spring x.509 Client Authentication Demo com.baeldung - spring-security-x509 + spring-security-web-x509 0.0.1-SNAPSHOT diff --git a/spring-security-modules/spring-security-x509/spring-security-x509-client-auth/src/main/java/com/baeldung/spring/security/x509/UserController.java b/spring-security-modules/spring-security-web-x509/spring-security-web-x509-client-auth/src/main/java/com/baeldung/spring/security/x509/UserController.java similarity index 100% rename from spring-security-modules/spring-security-x509/spring-security-x509-client-auth/src/main/java/com/baeldung/spring/security/x509/UserController.java rename to spring-security-modules/spring-security-web-x509/spring-security-web-x509-client-auth/src/main/java/com/baeldung/spring/security/x509/UserController.java diff --git a/spring-security-modules/spring-security-x509/spring-security-x509-client-auth/src/main/java/com/baeldung/spring/security/x509/X509AuthenticationServer.java b/spring-security-modules/spring-security-web-x509/spring-security-web-x509-client-auth/src/main/java/com/baeldung/spring/security/x509/X509AuthenticationServer.java similarity index 100% rename from spring-security-modules/spring-security-x509/spring-security-x509-client-auth/src/main/java/com/baeldung/spring/security/x509/X509AuthenticationServer.java rename to spring-security-modules/spring-security-web-x509/spring-security-web-x509-client-auth/src/main/java/com/baeldung/spring/security/x509/X509AuthenticationServer.java diff --git a/spring-security-modules/spring-security-x509/spring-security-x509-client-auth/src/main/resources/application.properties b/spring-security-modules/spring-security-web-x509/spring-security-web-x509-client-auth/src/main/resources/application.properties similarity index 100% rename from spring-security-modules/spring-security-x509/spring-security-x509-client-auth/src/main/resources/application.properties rename to spring-security-modules/spring-security-web-x509/spring-security-web-x509-client-auth/src/main/resources/application.properties diff --git a/spring-security-modules/spring-security-x509/spring-security-x509-client-auth/src/main/resources/logback.xml b/spring-security-modules/spring-security-web-x509/spring-security-web-x509-client-auth/src/main/resources/logback.xml similarity index 100% rename from spring-security-modules/spring-security-x509/spring-security-x509-client-auth/src/main/resources/logback.xml rename to spring-security-modules/spring-security-web-x509/spring-security-web-x509-client-auth/src/main/resources/logback.xml diff --git a/spring-security-modules/spring-security-x509/spring-security-x509-client-auth/src/main/resources/templates/user.html b/spring-security-modules/spring-security-web-x509/spring-security-web-x509-client-auth/src/main/resources/templates/user.html similarity index 100% rename from spring-security-modules/spring-security-x509/spring-security-x509-client-auth/src/main/resources/templates/user.html rename to spring-security-modules/spring-security-web-x509/spring-security-web-x509-client-auth/src/main/resources/templates/user.html diff --git a/spring-security-modules/spring-security-x509/spring-security-x509-client-auth/src/test/java/com/baeldung/SpringContextTest.java b/spring-security-modules/spring-security-web-x509/spring-security-web-x509-client-auth/src/test/java/com/baeldung/SpringContextTest.java similarity index 100% rename from spring-security-modules/spring-security-x509/spring-security-x509-client-auth/src/test/java/com/baeldung/SpringContextTest.java rename to spring-security-modules/spring-security-web-x509/spring-security-web-x509-client-auth/src/test/java/com/baeldung/SpringContextTest.java diff --git a/spring-security-modules/spring-security-x509/spring-security-x509-client-auth/src/test/java/com/baeldung/spring/security/x509/X509AuthenticationServerIntegrationTest.java b/spring-security-modules/spring-security-web-x509/spring-security-web-x509-client-auth/src/test/java/com/baeldung/spring/security/x509/X509AuthenticationServerIntegrationTest.java similarity index 100% rename from spring-security-modules/spring-security-x509/spring-security-x509-client-auth/src/test/java/com/baeldung/spring/security/x509/X509AuthenticationServerIntegrationTest.java rename to spring-security-modules/spring-security-web-x509/spring-security-web-x509-client-auth/src/test/java/com/baeldung/spring/security/x509/X509AuthenticationServerIntegrationTest.java diff --git a/spring-security-modules/spring-security-x509/store/clientBob.p12 b/spring-security-modules/spring-security-web-x509/store/clientBob.p12 similarity index 100% rename from spring-security-modules/spring-security-x509/store/clientBob.p12 rename to spring-security-modules/spring-security-web-x509/store/clientBob.p12 diff --git a/spring-security-modules/spring-security-x509/store/keystore.jks b/spring-security-modules/spring-security-web-x509/store/keystore.jks similarity index 100% rename from spring-security-modules/spring-security-x509/store/keystore.jks rename to spring-security-modules/spring-security-web-x509/store/keystore.jks diff --git a/spring-security-modules/spring-security-x509/store/localhost.ext b/spring-security-modules/spring-security-web-x509/store/localhost.ext similarity index 100% rename from spring-security-modules/spring-security-x509/store/localhost.ext rename to spring-security-modules/spring-security-web-x509/store/localhost.ext diff --git a/spring-security-modules/spring-security-x509/store/rootCA.crt b/spring-security-modules/spring-security-web-x509/store/rootCA.crt similarity index 100% rename from spring-security-modules/spring-security-x509/store/rootCA.crt rename to spring-security-modules/spring-security-web-x509/store/rootCA.crt diff --git a/spring-security-modules/spring-security-x509/store/truststore.jks b/spring-security-modules/spring-security-web-x509/store/truststore.jks similarity index 100% rename from spring-security-modules/spring-security-x509/store/truststore.jks rename to spring-security-modules/spring-security-web-x509/store/truststore.jks diff --git a/spring-session/spring-session-redis/src/main/java/com/baeldung/spring/session/SessionConfig.java b/spring-session/spring-session-redis/src/main/java/com/baeldung/spring/session/SessionConfig.java deleted file mode 100644 index 5a9bc9ff28..0000000000 --- a/spring-session/spring-session-redis/src/main/java/com/baeldung/spring/session/SessionConfig.java +++ /dev/null @@ -1,10 +0,0 @@ -package com.baeldung.spring.session; - -import org.springframework.context.annotation.Configuration; -import org.springframework.session.data.redis.config.annotation.web.http.EnableRedisHttpSession; -import org.springframework.session.web.context.AbstractHttpSessionApplicationInitializer; - -@Configuration -@EnableRedisHttpSession -public class SessionConfig extends AbstractHttpSessionApplicationInitializer { -} diff --git a/spring-webflux-threads/README.md b/spring-webflux-threads/README.md new file mode 100644 index 0000000000..746514feda --- /dev/null +++ b/spring-webflux-threads/README.md @@ -0,0 +1,3 @@ +### Relevant Articles: + +- [Concurrency in Spring WebFlux](https://www.baeldung.com/spring-webflux-concurrency) diff --git a/testing-modules/mockito-2/README.md b/testing-modules/mockito-2/README.md index bb7235c2cc..9ca5a38e2e 100644 --- a/testing-modules/mockito-2/README.md +++ b/testing-modules/mockito-2/README.md @@ -7,3 +7,4 @@ - [Mocking the ObjectMapper readValue() Method](https://www.baeldung.com/mockito-mock-jackson-read-value) - [Introduction to Mockito’s AdditionalAnswers](https://www.baeldung.com/mockito-additionalanswers) - [Mockito – Using Spies](https://www.baeldung.com/mockito-spy) +- [Using Mockito ArgumentCaptor](https://www.baeldung.com/mockito-argumentcaptor)